Текст шаблону Javascript (KO), що перекладає Magento2


24

Я намагаюся додати переклад для тексту, <!-- ko i18n: 'Store credit available' --><!-- /ko -->присутнього в vendor/magento/module-customer-balance/view/frontend/web/template/payment/customer-balance.html, але якщо я спробую змінити текст у моєму i18n/en_US.csv, він все ще не працює.

Я очистив кеш і використав статичний вміст розгортання.

Чи є інший спосіб додати переклади для шаблонів KO?

Відповіді:


39

Тож я нарешті змогла з’ясувати проблему.

Здається, що зчитується переклад шаблону JS, js-translation.jsonякий генерується під час setup:static-content:deployвиконання. Для заповнення даних у цьому файлі для проекту повинен бути створений новий мовний пакет .

Тож замість того, щоб додавати CSV на рівні теми, як app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvнам потрібно додати його в мовний пакет.

Щоб створити новий мовний пакет спочатку, project document rootнам потрібно буде створити такі каталоги:

mkdir -p app/i18n/<project-name>/<xx_xx>

Важливо : ВИКОРИСТОВУВАТИ РОБІТНІ ІМЕНИ ДІЯЛЬНИХ ІМЕНІВ, лише імена папок, розміщених у коробці, не працюватимуть

Потім змініть каталог на новостворені папки:

cd app/i18n/<project-name>/<xx_xx>

Тепер ви можете створити composer.json(необов'язково) файл із таким вмістом:

{                                                     
    "name": "<project-name>/<xx_xx>",                             
    "description": "<sample description>", //Ex:English (United States) language
    "version": "<version-number>", //100.0.1                             
    "license": [                                      
        "OSL-3.0",                                    
        "AFL-3.0"                                     
    ],                                                
    "require": {                                      
        "magento/framework": "100.0.*"                
    },                                                
    "type": "magento2-language",                      
    "autoload": {                                     
        "files": [                                    
            "registration.php"                        
        ]                                             
    }                                                 
}                                                     

Далі створимо нам потрібний language.xmlфайл із таким вмістом:

<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
    <code>xx_XX</code> <!-- example: <code>en_US</code> -->
    <vendor><project-name></vendor>
    <package><xx_xx></package> <!-- example: <package>en_us</package> -->
</language>

Після того, як registration.phpміститься такий вміст, потрібно:

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
    '<project-name>_<xx_xx>',
    __DIR__
);

Тепер ми можемо створити наш переклад CSV. Якщо у вас вже є папка з темою щось подібне, app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csvви можете просто перемістити їїapp/i18n/<project-name>/<xx_xx>/xx_XX.csv

Тепер project document rootми повинні запустити ці команди:

find pub/static -name js-translation.json -exec rm -rf {} \;

Нам потрібно видалити те, js-translation.jsonщо вже було створено перед запускомsetup:static-content:deploy

Тепер ми запускаємо статичний вміст розгортання:

php bin/magento setup:static-content:deploy <xx_XX>

Після цього ми очистимо кеш:

php bin/magento cache:clean
php bin/magento cache:flush

Ми можемо перевірити, чи створено файли перекладу для шаблону JS, знайшовши всю js-translation.jsonпапку pub / static.

find pub/static -name js-translation.json

Це забезпечить список усіх файлів перекладу, створених для шаблонів JS.

Довідка:

  1. Magento DevDocs
  2. Пов’язаний випуск Github

У моєму проекті js-translation.jsonфайли створюються правильно зі статичного розгортання вмісту, навіть якщо файли .csv вставлені в app/design/frontend/vendor/theme-name/i18n/xx_XX.csv. Єдина обережність - видалити все js-translation.jsonперед запуском статичного вмісту.
LucScu

На якій версії Магенто ви працюєте?
Атіш Госвамі

Вендер / Тема, тож із цього, що має бути <ім'ям проекту> відповідно до вашого вище коду ??
Каушал Сутар

1
Це справді єдиний спосіб зробити це? Я маю на увазі, навіть документація ( devdocs.magento.com/guides/v2.1/frontend-dev-guide/translations/… ) говорить про те, що нам слід вміти розміщувати файли перекладу design/<vender>/<theme>/i18n/xx_XX.csv.
Giel Berkers

1
Magento 2 має багато помилок, пов’язаних із цим, для нас найкращим способом було вручну створити скрипт, який створює js-translation.jsonфайл і зробити конфігурацію веб-сервера, яка доставляє його на потрібні типи запитів
cjohansson

1

Як я описав у випуску Github ( https://github.com/magento/magento2/isissue/7525#issuecomment-316690100 ), є ще одне (простіше) рішення цієї проблеми.

Вам просто потрібно переконатися, що розгортати кожну мову окремо.

Тож замість використання:

php bin/magento setup:static-content:deploy en_US de_DE it_IT fr_FR es_ES

використання

php bin/magento setup:static-content:deploy en_US
php bin/magento setup:static-content:deploy de_DE
php bin/magento setup:static-content:deploy it_IT
php bin/magento setup:static-content:deploy fr_FR
php bin/magento setup:static-content:deploy es_ES

Це, мабуть, викликано тим, що static-content:deployєдиний збирає файли один раз і згодом копіює їх на інші мови.

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