2012-05-22 14 views
7

Opracowuję niestandardowy moduł dla mojej instalacji Magento (wersja 1.6.2.0). Zarejestrowałem plik tłumaczeniowy dla modułu w pliku config.xml i zacząłem dodawać tłumaczenia niemieckie. Moduł dodaje nowe zachowanie do zaplecza Magento.Tłumaczenie z niestandardowym plikiem tłumaczeniowym kończy się niepowodzeniem dla pewnych słów w Magento

Podczas wykonywania tłumaczenia zauważyłem dziwne zachowanie Magento. Niektóre słowa nie są tłumaczone przez Magento, chociaż tłumaczenie jest dostarczane w pliku CSV modułu.

Po zmianie klucza na inną wartość, tłumaczenie działa zgodnie z oczekiwaniami, więc Magento wydaje się widzieć i czytać plik cvs.

W tej chwili zauważam to zachowanie klawiszy "City" i "Store".

Zawartość pliku csv:

"City","Stadt" 
"City1","Stadt" 

używam następujący wiersz przełożyć struny.

Po zmianie klucza na "City1" wszystko działa zgodnie z oczekiwaniami.

Mage::helper('mymodule')->__('City1') // returns "Stadt" 

Po tym Szukałem tłumaczenie niemieckie pliki CSV (dostarczonych przez niemiecką Magento Wspólnoty) za tłumaczenie klawisza „City” i znalazłem jeden w „module adminhtml”.

Mage::helper('adminhtml')->__('City') // returns "Stadt" 

To działa również zgodnie z oczekiwaniami.

Nie wiem, co robię źle. Jak już powiedziałem, takie samo zachowanie występuje w przypadku ciągu "Store".

Wszelkie pomysły na ten temat?

+0

Czy masz sekcję tłumaczenia w konfiguracji (config.xml) 'mymodule'? Magento zwykle wraca do innych modułów, jeśli nie może znaleźć odpowiedniego tłumaczenia w skonfigurowanym pliku CSV, więc może to być problem. – Florian

+1

Tak Mam taką sekcję w pliku konfiguracyjnym modułu, w przeciwnym razie tłumaczenie nie powinno działać z klawiszem 'City1'. Ale tak nie jest z tłumaczeniem "City1". – Flo

Odpowiedz

8

końcu rozwiązać problem translacji. Powodem była niewłaściwa konfiguracja w pliku config.xml. Znalazłem to poprzez debugowanie kodu, w którym Magento czyta w plikach tłumaczeń.Kiedy tak się dzieje, znajduje się parametr o nazwie scope, który jest odczytywany z jednego z elementów XML pliku config.xml.

Ten element powinien normalnie mieć nazwę modułu, np. <MyCompany_MyModule>. W samouczku, który przeprowadziłem, aby skonfigurować tłumaczenie, ten element XML został nazwany <translations>, co było błędem.

Przypuszczam, że mogło to być poprawne w przypadku wcześniejszej wersji Magento. Trudno było się zorientować, że błędy występują tylko w przypadku kluczy, które zostały również zdefiniowane w plikach tłumaczeniowych innych modułów. Klucze, które zostały zdefiniowane tylko w moim pliku tłumaczeń, działały zgodnie z oczekiwaniami.

Poprawna konfiguracja powinna wyglądać następująco.

<frontend> 
    ... 
    <translate> 
     <modules> 
      <MyCompany_MyModule> 
       <files> 
        <default>MyCompany_MyModule.csv</default> 
       </files> 
      </MyCompany_MyModule> 
     </modules> 
    </translate> 
    ... 
</frontend> 
<adminhtml> 
    ... 
    <translate> 
     <modules> 
      <MyCompany_MyModule> 
       <files> 
        <default>MyCompany_MyModule.csv</default> 
       </files> 
      </MyCompany_MyModule> 
     </modules> 
    </translate> 
    ... 
</adminhtml> 
+0

Dziękuję za opublikowanie tego - przegapiłem "domyślne" tagi powodujące błąd foreach na każdej stronie. – Theodores

+0

Który z plików podstawowych to miejsce, w którym dodano debugowanie? Mam ten sam problem i te same ustawienia konfiguracji, ale niektóre słowa są nadal pobierane z innego pliku tłumaczenia. – Guus

4

Trudno powiedzieć bez posiadania kodu pod ręką, ale domyślam się, że zakres tłumaczenia twojego modułu jakoś się zagubił (z jakiegokolwiek powodu) powodując powrót Magento.

AFAIK, w Magento 1.6.2.0 następujące pliki tłumaczeniowe również zdefiniować klucz City:

/app/locale/<language>_<region>/Mage_Checkout.csv 
/app/locale/<language>_<region>/Mage_Customer.csv 
/app/locale/<language>_<region>/Mage_Persistent.csv 
/app/locale/<language>_<region>/Mage_Sales.csv 
/app/locale/<language>_<region>/Mage_Shipping.csv 
/app/locale/<language>_<region>/Mage_XmlConnect.csv 

będę próbować zmienić tłumaczenie City w tych .csv plików jeden po drugim, aby znaleźć w miejscu, z którego faktycznie pochodzi tłumaczenie.

Po znalezieniu pliku, do którego Magento się cofa, ty również wiesz, jaki zakres translacji musisz przesłonić, aby wymusić tłumaczenie City do użycia.

Na przykład, jeśli znajdziesz zmieniając tłumaczenie w Mage_Shipping.csv bierze wpłynąć, a następnie edytować plik translacji (My_Module.csv) powstrzymywanie

"Mage_Shipping::City","Stadt" 
+0

Gdy aktywuję tłumaczenie śródliniowe, widzę, że zasięg jest poprawnie ustawiony na mój moduł. Zrobiłem też trochę debugowania i podążałem za kodem, aż tablica z wszystkimi tłumaczeniami, jak sądzę w zakresie modułu, wyszuka klucz "Miasto" z wynikiem, który nie odnalazł wpisu i dlatego używany jest oryginalny ciąg znaków . Zastanawiam się, dlaczego w ogóle brakuje klucza. Ale spróbuję twojej sugestii i zobaczę, co się stanie. – Flo

+0

Podążyłem za tobą, ale to tylko potwierdzało to, co przypuszczałem. Zmieniłem tłumaczenie w każdym pliku na inną wartość, ale żadne z nich nie pojawiło się w interfejsie. Więc to pasuje do mojego założenia, że ​​słowo nie jest w ogóle tłumaczone, ponieważ nie można znaleźć tłumaczenia. – Flo