W rozszerzeniu, nad którym pracuję, dodałem układ XML za pośrednictwem pliku config.xml modułu. Ten układ ma pewne modyfikacje w interfejsie użytkownika. Niektóre z tych bloków należą jednak do podstawowych modułów Magento. Wszystkie szablony są wyświetlane poprawnie zgodnie z oczekiwaniami.
Szablony, które spakowałem z samym modułem, używają plików tłumaczenia własnego modułu. Szablony pakowane z rdzeniem Magento pokazują nieprzetłumaczone. Jeśli dodam plik tłumaczenia dla odpowiedniego modułu podstawowego, wówczas ten plik tłumaczenia zostanie użyty, a szablon wyświetli przetłumaczony tekst.
Czy istnieje sposób, aby Magento używał pliku tłumaczenia mojego modułu, jeśli nie może znaleźć żadnych plików tłumaczenia dla modułu podstawowego Magento? Czy jest coś jeszcze, co mogę tutaj zrobić?
źródło
$this->__()
lubMage::helper('...')->__()
. W przypadku pięści możesz zmusić blok do użycia pomocnika tłumacza. Ale wierzę, że w ogólnym przypadku jedyną opcją jest aktualizacja danych dlacore_translate
tabeli. Tutaj pytania dotyczące internacjonalizacji zostały szczegółowo opisane: blog.belvg.com/… .Odpowiedzi:
Bez względu na to, jak do tego podejdziesz, twój problem wymaga „kreatywnego” rozwiązania, godnego uwagi dewelopera do wykorzystania przez kolejnych programistów / opiekunów. Najpierw trochę tła, następnie notatka, a następnie łatwe i myślę, że rozsądne rozwiązanie na końcu
<--
tl; dr .Jak zauważył Zyava , tłumaczenie podlega modułowi wykonującemu tłumaczenie. Szablony są renderowane w instancjach blokowych, a instancje blokowe mają
module_name
właściwość, która jest używana podczas wywoływania tłumaczenia; refMage_Core_Block_Abstract::__()
:module_name
Nieruchomość jest (zazwyczaj) pochodzi na żądanie i na podstawie nazwy klasy (ref.::getModuleName()
):Tak więc, jeśli
module_name
właściwość jest już ustawiona, zastosowanie ma tłumaczenie tego modułu. W przypadku istniejących bloków z układu podstawowego tę właściwość można ustawić za pomocą układu XML; na przykład:Voilà! Twój moduł CSV jest właścicielem tłumaczenia dla tego wystąpienia. To może być podejście. Oczywiście nadal istnieje lepka sytuacja, w której tłumaczenie innych modułów jest stosowane za pośrednictwem pomocnika specyficznego dla modułu w instancjach bloków (w tym oczywiście plików szablonów), i zawsze dotyczy to tłumaczeń XML układu. Takie podejście spowoduje także przerwanie działania Wyłączanie wyjścia modułów, które wykorzystuje
module_name
parametr.Rozwiązanie
Jak się okazuje, możliwe jest określenie wielu plików tłumaczeń dla modułu. Nie odbywa się to w rdzeniu (każdy moduł deklaruje tylko jeden plik .csv plik ), ale funkcjonalność jest w
Mage_Core_Model_Translate
:i
Ponieważ zawartość plików jest scalona (przetestowałem), można określić tylko te ciągi, które chcesz przesłonić w niestandardowych plikach CSV. Na przykład, jeśli chcesz przetłumaczyć ciąg informacji dodatkowych na stronie produktu (przetłumaczony przez
Mage_Catalog
moduł), działałyby następujące czynności:app / locale / Custom.csv :
W konfiguracji modułu - która powinna
<depends />
się włączyć,Mage_Catalog
aby zapewnić scalenie zawartości po - następujące elementy spowodują scalenie par tłumaczeń Custom.csv z oryginałem:Zaletą tego podejścia jest to, że możesz zebrać swoje nadrzędne tłumaczenia podstawowe w jednym pliku.
źródło