magento development

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.

Dodawawanie tłumaczeń w Magento

Tłumaczenia pomiędzy językami są całkiem proste do zrealizowania w Magento. Dla doświadczonego programisty PHP, który pracował już z frameworkami, nie ma nawet o czym wspominać. Jednak osoba, która stawia pierwsze kroki w budowaniu wielojęzycznej aplikacji. może potrzebować kilku słów wprowadzenia. Teksty, które przeznaczone są do tłumaczenia, przechowywane są w plikach CSV, w katalogu /app/locale/[kod_jezyka]. Część ścieżki oznaczona jako [kod_jezyka] to na przykład 'pl_PL'.

Przyjrzyjmy się teraz zawartości któregoś z tych plików - każdy z nich ma tę samą strukturę. Linie w każdym pliku zawierają dwa teksty oddzielone przecinkiem: jeden w twoim domyślnym języku i jeden w języku docelowym. Aby móc używać tych plików - nazywanych też słownikami - trzeba zadeklarować je w pliku konfiguracyjnym danego modułu (config.xml). Poniższy kod musi zostać umieszczony wewnątrz znacznika frontendu lub admina - zależnie od tego, dla której części sklepu przeznaczone są tłumaczenia.

<translate>
        <modules>
                <nazwafirmy_nazwamodulu>
                        <files>                 <default>NazwaFirmy_NazwaModulu.csv</default>
                        </files>
                </nazwafirmy_nazwamodulu>
        </modules>
</translate>

To wszystko ;) Teraz, aby użyć tekstu, który ma zostać przetłumaczony, napisz:

echo $this->__('tekst do przetłumaczenia');

Magento sprawdzi czy w słownikach znajduje się tekst o treści 'tekst do przetłumaczenia' i wyświetli odpowiadające mu tłumaczenie w języku aktualnego sklepu.