Zarządzanie plikami tłumaczeń csv Magento

22

W miarę upływu czasu główny zespół Magento dodawał do pakietu coraz więcej domyślnych pakietów językowych

app/locale 

teczka. Czy istnieje kanoniczny sposób zarządzania własnymi plikami tłumaczeń, aby nie zakłócały przyszłych aktualizacji systemu? tzn. chcę zmienić niektóre etykiety w Magento, więc dokonuję edycji

app/locale/en_US/Mage_Sales.csv

bezpośrednio. Jeśli zaktualizujemy Magento, moje zmiany zostaną usunięte. Czy wystarczają do tego ustawienia regionalne motywu? (czy obsługuje specyficzne dla modułu pliki, czy po prostu translate.csv). A może lepiej przepisać modele tłumaczenia, aby załadować pliki z innej lokalizacji? Albo coś innego?

Alan Storm
źródło

Odpowiedzi:

17

Spróbuj tego.

Podsumowując, podaj dodatkowy plik tłumaczenia pod XPath tłumaczenia modułu podstawowego i umieść tam nadrzędne pary CSV.

<frontend>
    <translate>
        <modules>
            <Mage_Sales>
                <files>
                    <mr_storms_wicked_translations>Mage_Sales_Custom.csv</mr_storms_wicked_translations>
                </files>
            </Mage_Sales>
        </modules>
    </translate>
</frontend>
zalety
źródło
5
Byłeś za szybki. Zaczynam to tracić.
Marius
15

Oprócz translate.csvi nieprzenośnego tłumaczenia wbudowanego jest jeszcze inny sposób. Robię to w ten sposób.

Każdy moduł obsługuje więcej niż jeden plik tłumaczenia.

Jeśli dodasz to w config.xml:

    <translate>
        <modules>
            <[Namespace]_[Module]>
                <files>
                    <default>[Namespace]_[Module].csv</default>
                    <alternative>[Namespace]_[Module]_version2.csv</alternative>
                </files>
            </[Namespace]_[Module]>
        </modules>
    </translate>

oba pliki [Namespace]_[Module].csvi [Namespace]_[Module]_version2.csvzostaną załadowane do tłumaczenia.

i będą przetwarzane w kolejności, w jakiej zostały zadeklarowane.

Jeśli więc chcesz na przykład dodać / zmodyfikować coś w Mage_Sales.csvpliku nie edytuj pliku, po prostu utwórz moduł, który dodaje inny plik do listy plików tłumaczeń.

Coś takiego:
app/code/local/Easylife/Sales/etc/config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Easylife_Sales>
            <version>0.0.1</version>
        </Easylife_Sales>
    </modules>
    <frontend>
        <translate>
            <modules>
                <Mage_Sales>
                    <files>
                        <alternative>Easylife_Sales.csv</alternative>
                    </files>
                </Mage_Sales>
            </modules>
        </translate>
    </frontend>
    <adminhtml>
        <translate>
            <modules>
                <Mage_Sales>
                    <files>
                        <alternative>Easylife_Sales.csv</alternative>
                    </files>
                </Mage_Sales>
            </modules>
        </translate>
    </adminhtml>
</config>

i upewnij się, że moduł zależy od Mage_Sales.
Możesz również utworzyć moduł „jeden rozmiar dla wszystkich” do zarządzania tłumaczeniem. Po prostu dodaj alternatywny plik tłumaczenia dla każdego modułu, którego potrzebujesz i upewnij się, że ten nowy moduł zależy od nich wszystkich.

Marius
źródło
Czy po prostu zajrzy app/locale/**/Easylife_Sales.csvdo tego pliku? Zakładam, że pozwoli również na podfoldery, o ile znasz separator katalogów dla swojego systemu plików?
pspahn
Myślę, że możesz użyć podfolderów, jeśli chcesz. Po prostu nigdy tego nie próbowałem.
Marius
9

Znajdujące się w nim pliki CSV app/localenależy traktować jako pliki podstawowe, a nie modyfikować. Uważam, że najlepszym sposobem na dodanie niestandardowego tłumaczenia jest włożenie goapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Pamiętaj, że możesz używać nazw modułów również w translate.csvplikach, używając "Mage_Adminhtml::Sales","Sales"zamiast "Sales","Sales". Pozwala to również na korzystanie z tłumaczeń dostosowanych do konkretnych tematów.

Pronto
źródło
1
Plik ustawień narodowych motywu jest dobrym i szybkim sposobem wykonywania różnych czynności, ale co zrobić, jeśli masz wiele motywów w tej samej instancji?
Marius
2
Prawie zawsze wolę używać tłumaczeń specyficznych dla motywu - czasem motyw ma mniej miejsca i zamiast tego muszę używać skrótów. Ułatwia to także testowanie motywów.
Pronto
@Pronto Zrobiłem tak, jak powiedziałeś, ale z jakiegoś powodu Magento ładuje translate.csv tylko, jeśli jest w środku app/locale/, jak mam to powiedzieć z app/design/frontend/{package}/{theme}/locale/tego miejsca? Zobacz moje pytanie tutaj: stackoverflow.com/questions/26554195/...
Justin
4

Możesz edytować / tworzyć specyficzne dla projektu / motywu „translate.csv”. Aby zastąpić tłumaczenie z „modułu-pliku-tłumaczenia”. na przykład „Mage_Catalog.csv”:

"Mage_Catalog::add to basket","into Basket"

Zatem reguła to „Modułowa przestrzeń nazw :: ciąg do przetłumaczenia”, „przetłumaczony ciąg”. Myślę, że to ostatni obieg pracy tłumaczenia reguły Magento.

roman204
źródło
1

W SemExpert robimy dokładnie to. Posiadamy własny pakiet tłumaczeń es_AR (z plikami CSV i szablonami e-mail), a następnie wszystkie dostosowania są wykonywane przez translate.csv lub przez funkcję tłumaczenia wbudowanego (w bardzo rzadkich przypadkach użytkownika końcowego).

Nie ryzykujemy (na razie) utraty plików tłumaczeń z powodu aktualizacji Magento, ponieważ jest bardzo mało prawdopodobne, aby kiedykolwiek obsługiwały es_AR po wyjęciu z pudełka, ale cierpimy z powodu Magento wprowadzającego niewielkie zmiany w swoich ciągach znaków (np. Dodając „.” Na koniec zdania), które powodują, że angielskie ciągi pojawiają się, gdy się ich najmniej spodziewasz.

Zacząłem opracowywać mały moduł do monitorowania ciągów tłumaczeń, z którego korzystamy przy każdej nowej wersji Mage. Można go znaleźć tutaj: https://github.com/barbazul/SemExpert_TranslationDoctor

barbazul
źródło