Magento - moduł tłumaczeń

Jedną z najlepszych rzeczy w magento jest możliwość łatwego dodawania nowych wersji językowych do strony. Robi się to używając plików CSV. Dla każdego języka mamy jeden plik na jeden moduł. Dla najpopularniejszych języków gotowe tłumaczenia dostępne są za darmo jako moduły Magento w systemie magento connect.

A co jeśli chcemy zmienić jakieś tłumaczenie i nie zgubić zmian po uaktualnieniu magento i modułów z tłumaczeniami? Lub jeśli chcemy mieć jakieś teksty tłumaczone poza kontekstem jednego modułu? Lub po prostu mieć wykaz wszystkich tekstów które zostały przez nas dodane a nie ma ich w "gołym" magento? Możemy stworzyć swój własny prosty moduł tłumaczeń.

Wystarczy stworzyć 2 pliki:

  • etc/config.xml
     <?xml version="1.0"?>
     <config>
            <modules>
                    <baobaz_translations>
                            <version>0.1.0</version>
                    </baobaz_translations>
            </modules>
           
            <global>
                    <helpers>
        <translations>
        <class>Baobaz_Translations_Helper</class>
        </translations>
        </helpers>
            </global>
           
            <frontend>
        <translate>
        <modules>
                                    <baobaz_translations>
                                            <files>
                                                    <default>Baobaz_Translations.csv</default>
                                            </files>
                                    </baobaz_translations>
                            </modules>
        </translate>
        </frontend>
     
     </config>
     
  • oraz helper/data.php:
    class Baobaz_Translations_Helper_Data extends Mage_Core_Helper_Abstract
    {

    }

 

I to wszystko... Moduł trzeba włączyć (w etc/modules) i wszystko będzie działać.

w app/locale/fr_fr/ tworzymy plik Baobaz_Translations.csv a w nim wstawiamy wszystkie przetłumaczone teksty.

Następnie wszędzie w projekcie - niezależnie od tego czy jest to szablon, blok czy kontroler możemy użyć składni:

echo Mage::helper('translations')->__('tekst do tłumaczenia');

Tak, to jesttak proste.