Так что я наконец-то смог разобраться в проблеме.
Кажется, что чтение шаблона 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перед запуском статического контента.