ENGLISH:

Hi everyone! Today I will talk about translations in Magento extensions.

Actually we have a lot of multilanguage stores working with Magento, so when we develop our extensions we have to develop thinking in this possibility.

For example I live in Brazil, so I have to develop the extension in brazilian portuguese but many stores works with English and Spanish too.

And how can I develop my extension for two or more languages?

First I will show you how to create translation for extension in Magento 1.

Magento works reading a csv file to each translate for your extension. In the first step you will declare the name of your csv file used to translation for backend and frontend phrases.

<frontend>
    <translate>
        <modules>
            <consultoras>
                <files>
                    <default>Igorludgero_Consultoras.csv</default>
                </files>
            </consultoras>
        </modules>
    </translate>
</frontend>
<admin>
<translate>
    <modules>
        <consultoras>
            <files>
                <default>Igorludgero_Consultoras.csv</default>
            </files>
        </consultoras>
    </modules>
</translate>
</admin>

Look that inside frontend and admin tags I declared a “translate” and informed the name of translate csv file. You can use the same file for backend and frontend translations, but if you prefer you can use a different file for each situation.

After this you have to create a csv file for each language that you extension will work, for example if you extension will works in brazilian portugues you have to create the file in app/local/pt_BR/Igorludgero_Consultoras.csv or for example in English app/local/en_US/Igorludgero_Consultoras.csv.

You have to use a base language to develop your extension, most of extensions use English as base language because is a very common language.

So you declared your translation files, now you are asking yourself how I will write the phrases/text of my extension to be translated?

In a .php or .phtml file when you need that phrase/text be translate you have to use your helper to do this, for example you have to translate this text: “My Extension”. You can write like this in your file:

$this->__('My Extension') or Mage::helper("myhelper")->__('My Extension')

Now when Magento read the text ‘My Extension’ he will check your current store language and check if have a translation file for this language that contais this text, and if he found the translation he will show the text translated.

In XML nodes like menus and system configurations you can use the translation too, you only have to use translate attribute to set what nodes will be translated in XML.

For example:

<menu>
    <consultoras translate="title">
        <title>[Igorludgero] - Consultants</title>
        <sort_order>20</sort_order>
        <children>
            <configuration translate="title" module="consultoras">
                <sort_order>0</sort_order>
                <title>See Consultants</title>
                <action>adminhtml/consultoras/index/</action>
            </configuration>
        </children>
    </consultoras>
</menu>

In this example I configured title to be translated.

In Magento 2 is similar to Magento 1, in you custom extension you have to create a folder called i18n, in this folder you will put all translation files to your custom extension. For example the translation file in brazilian portugues to my extension will be located in app/code/MyCompany/MyExtension/i18n/pt_BR.csv.

To use the translation in .php and .phtml files you have to use your helper like this __(‘My Text’)

And in xml nodes you have to use translate attribute to configure what nodes will be translated. For example:

translate=”label comment”

I hope this tips can help you in your custom extension development. Best regards!

 

PORTUGUÊS:

Olá para todos, tudo bem? Hoje vou falar um pouco sobre a tradução de extensões para Magento.

Atualmente temos um grande número de lojas que trabalham com várias idiomas e utilizam Magento, então quando vamos desenvolver uma extensão devemos pensar nessa possibilidade.

Por exemplo atualmente eu vivo no Brasil, então devo desenvolver minha extensão em português brasileiro, mas ao mesmo tempo diversas lojas também também oferecem inglês e português como língua.

Então como eu posso desenvolver minha extensão para trabalhar com dois ou mais idiomas.

Primeiro vou mostrar como criar traduções para extensões no Magento 1.

O Magento trabalha lendo um arquivo de csv onde estão presentes as frases/textos que serão traduzidos na loja. O primeiro passo é declarar no seu config.xml o nome dos arquivos csv responsáveis pelas traduções dos textos no frontend e backend.

<frontend>
    <translate>
        <modules>
            <consultoras>
                <files>
                    <default>Igorludgero_Consultoras.csv</default>
                </files>
            </consultoras>
        </modules>
    </translate>
</frontend>
<admin>
<translate>
    <modules>
        <consultoras>
            <files>
                <default>Igorludgero_Consultoras.csv</default>
            </files>
        </consultoras>
    </modules>
</translate>
</admin>

Veja que dentro das tags frontend e admin eu declarei a tag “tag” translate e nela informei o nome do arquivo csv de tradução, Você pode utilizar o mesmo arquivo para o frontend e backend, mas caso prefira pode utilizar também arquivos diferentes para cada situação.

Depois disso você precisa criar um arquivo csv para cada idioma que sua extensão for trabalhar, por exemplo se sua extensão for trabalhar em português brasileiro você precisa criar o arquivo no caminho app/local/pt_BR/Igorludgero_Consultoras.csv ou em inglês em app/local/en_US/Igorludgero_Consultoras.csv.

Você deve desenvolver sua extensão utilizando uma linguagem base, na maioria dos casos você deverá usar o inglês já que é um idioma muito comum e utilizado em diversos países.

Bom depois de declarar e criar seus arquivos você deve estar se perguntando como irei escrever as frases/textos em minha extensão para que elas sejam automaticamente traduzidas?

Em arquivos .php ou .phtml quando você desejar utilizar um texto que deverá ser traduzido você irá utilizar o helper de seu módulo, por exemplo para traduzir o texto ‘My Extension’ você pode escrever desta forma:

$this->__('My Extension') or Mage::helper("myhelper")->__('My Extension')

Agora quando o Magento ler o texto “My Extension” ele irá verificar o idioma da loja atual e se há um arquivo de tradução para o idioma atual e que também contenha o texto solicitado, e caso encontrado ele será traduzido e exibido.

Em XML nodes como menus e arquivos de configuração você também pode utilizar suas traduções, você deve apenas utilizar o atributo translate para configurar quais nodes serão traduzidos no XML.

Exemplo:

<menu>
    <consultoras translate="title">
        <title>[Igorludgero] - Consultants</title>
        <sort_order>20</sort_order>
        <children>
            <configuration translate="title" module="consultoras">
                <sort_order>0</sort_order>
                <title>See Consultants</title>
                <action>adminhtml/consultoras/index/</action>
            </configuration>
        </children>
    </consultoras>
</menu>

Neste exemplo eu configurei para que o texto do title seja traduzido.

No Magento 2 é quase igual ao Magento 1, na sua extensão voê deve criar uma pasta com o nome i18n, e nesta pasta você irá criar os arquivos de tradução de acordo com os idiomas. Por exemplo o arquivo de tradução para português brasileiro ficará em app/code/MinhaEmpresa/MinhaExtensao/i18n/pt_BR.csv.

Para utilizar a tradução em arquivos .php and .phtml você deve utilizar chamá-la assim: __(‘My Text’)

Em nodes XML você deve usar o atributo translate para configurar quais textos deverão ser traduzidos. Por exemplo:

translate=”label comment”

Neste exemplo estou indiciando que o label e o comment serão traduzidos no node XML.

Espero que estas dicas tenham sido úteis e que sejam utilizadas! Abraços!

Magento 1 & 2 – How to create translations in your custom extension

Igor Ludgero


PHP & Magento Developer from Brazil.


Post navigation


Leave a Reply

Your email address will not be published. Required fields are marked *

Pin It on Pinterest