Керування файлами перекладу 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>

5
Ви були занадто швидкі. Я починаю це втрачати.
Маріус

15

Крім 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
Я майже завжди віддаю перевагу використанню конкретних тематичних перекладів - іноді в темі менше місця, і мені потрібно використовувати скорочення. Це також робить тестування теми WAY простішим.
Pronto

@Pronto Я зробив, як ви сказали, але чомусь Magento завантажуватиме лише translate.csv, якщо він є app/locale/, як я можу його завантажити app/design/frontend/{package}/{theme}/locale/замість нього? Дивіться моє запитання тут: stackoverflow.com/questions/26554195/…
Джастін

4

Ви можете редагувати / створювати дизайн / тему, специфічну "translate.csv". Перезапис перекладу з "модуля-перекладу-файлу". наприклад "Mage_Catalog.csv":

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

Отже, правило - це "Простір імен модуля :: рядок для перекладу", "переведений рядок". Я думаю, що це останнє правило робочого процесу перекладу Magento.


1

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

Ми не ризикуємо (поки що) втратити файли перекладу через оновлення Magento, оскільки це малоймовірно, що вони коли-небудь підтримуватимуть es_AR поза коробкою, але ми страждаємо тим, що Magento вносить невеликі зміни до своїх рядків (наприклад, додавання "." У кінець речення), які роблять англійські рядки, коли ви їх найменше очікуєте.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.