Управление файлами перевода Magento CSV

22

Со временем основная команда Magento добавила все больше и больше языковых пакетов по умолчанию в

app/locale 

папки. Есть ли канонический способ управлять своими собственными файлами перевода, чтобы они не мешали будущим обновлениям системы? т.е. я хочу изменить некоторые метки в Magento, поэтому я редактирую

app/locale/en_US/Mage_Sales.csv

непосредственно. Если мы обновим Magento, мои изменения будут уничтожены. Достаточно ли для этого функции локали темы? (это обрабатывает специфичные для модуля файлы, или просто translate.csv). Или лучше переписать модели перевода для загрузки файлов из другого места? Или что-то другое?

Алан Сторм
источник

Ответы:

17

Попробуй это.

Подводя итог, задайте дополнительный файл перевода под XPath перевода основного модуля и поместите туда свои первичные пары 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>
benmarks
источник
5
Вы были слишком быстры Я начинаю терять это.
Marius
16

Кроме translate.csvнепереносимого встроенного перевода есть другой способ. Я делаю это так.

Каждый модуль поддерживает более одного файла перевода.

Если вы добавите это в config.xml:

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

оба файла [Namespace]_[Module].csvи [Namespace]_[Module]_version2.csvбудут загружены для перевода.

и они будут обработаны в порядке, в котором они объявлены.

Так что если вам нужно, например, добавить / изменить что-то в Mage_Sales.csvфайле не редактировать, просто создайте модуль, который добавляет другой файл в список файлов перевода.

Что-то вроде этого:
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>

и убедитесь, что модуль зависит от Mage_Sales.
Вы также можете создать модуль «один размер подходит всем» для управления переводом. Просто добавьте альтернативный файл перевода для любого модуля, который вам нужен, и убедитесь, что этот новый модуль зависит от всех них.

Мариус
источник
Будет ли это просто посмотреть на app/locale/**/Easylife_Sales.csvэтот файл? Я предполагаю, что это также позволит подпапки, если вы знаете разделитель каталогов для вашей файловой системы?
pspahn
Я думаю, вы можете использовать подпапки, если хотите. Я просто никогда не пробовал это.
Мариус
9

Файлы CSV, расположенные в, app/localeдолжны рассматриваться как основные файлы, а не изменяться. Я считаю, что лучший способ добавить пользовательский перевод - поместить их вapp/design/frontend/{package}/{theme}/locale/{locale}/translate.csv

Обратите внимание, что вы можете использовать имена модулей в translate.csvфайлах, используя "Mage_Adminhtml::Sales","Sales"вместо "Sales","Sales". Это также позволяет вам использовать переводы, специально разработанные для определенных тем.

без промедления
источник
1
Файл локали темы - хороший и быстрый способ сделать что-то, но что, если у вас есть несколько тем в одном экземпляре?
Мариус
2
Я почти всегда предпочитаю использовать тематические переводы - иногда тема имеет меньше места, и вместо этого мне нужно использовать сокращения. Это также упрощает тестирование темы.
Пронто
@Pronto Я сделал, как вы сказали, но по какой-то причине Magento будет загружать только translate.csv, если он есть app/locale/, как мне сказать, чтобы он загружал его app/design/frontend/{package}/{theme}/locale/вместо этого? Смотрите мой вопрос здесь: stackoverflow.com/questions/26554195/…
Джастин
4

Вы можете редактировать / создавать дизайн / тему "translate.csv". Переопределить перевод из "module-translation-file". например "Mage_Catalog.csv":

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

Таким образом, Правило это «Пространство имен модулей :: строка для перевода», «переведенная строка». Я думаю, что это последнее правило рабочего процесса перевода Magento.

roman204
источник
1

В SemExpert мы делаем именно это. У нас есть собственный пакет перевода es_AR (с файлами CSV и шаблонами электронной почты), а затем все настройки выполняются либо с помощью translate.csv, либо с помощью встроенной функции перевода (в очень редких случаях для конечных пользователей).

Мы не рискуем (на данный момент) потерять файлы перевода из-за обновления Magento, поскольку маловероятно, что они когда-либо будут поддерживать es_AR из коробки, но мы страдаем от того, что Magento вносит небольшие изменения в свои строки (например, добавляя «.» В конец предложения), которые заставляют английские строки появляться, когда вы ожидаете их меньше всего.

Я начал разработку небольшого модуля для мониторинга строк перевода, который мы используем каждый раз, когда выходит новая версия Mage. Вы можете найти его здесь: https://github.com/barbazul/SemExpert_TranslationDoctor

barbazul
источник