Так что я наконец-то смог разобраться в проблеме.
Кажется, что чтение шаблона 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.
Ссылка:
- Magento DevDocs
- Связанный выпуск Github
js-translation.json
файлы создаются из статического контента правильно, даже если файлы CSV вставлены вapp/design/frontend/vendor/theme-name/i18n/xx_XX.csv
. Единственная забота - удалить всеjs-translation.json
перед запуском статического контента.design/<vender>/<theme>/i18n/xx_XX.csv
.js-translation.json
файл, и настроить веб-сервер, который доставляет его по нужным типам запросовКак я описал в проблеме Github ( https://github.com/magento/magento2/issues/7525#issuecomment-316690100 ), существует другое (более простое) решение этой проблемы.
Вам просто нужно развернуть каждый язык отдельно.
Поэтому вместо использования:
использование
Вероятно, это связано с тем, что
static-content:deploy
файлы компилируются только один раз, а затем копируются на другие языки.источник