Answers:
所以我终于能够找出问题所在。
似乎从中读取JS模板翻译js-translation.json
,并在setup:static-content:deploy
执行过程中生成该模板。为了在此文件中填充数据,必须为项目创建一个新的语言包。
因此,app/design/<area>/<vendor>/<theme-name>/i18n/xx_XX.csv
与其像在主题级别添加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-translation.json
在pub / static文件夹内查找所有内容来验证JS模板的翻译文件是否已生成。
find pub/static -name js-translation.json
这将提供为JS模板生成的所有翻译文件的列表。
参考:
design/<vender>/<theme>/i18n/xx_XX.csv
。
js-translation.json
文件并进行Web服务器配置以将其发送给正确的请求
正如我在Github问题(https://github.com/magento/magento2/issues/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
仅将文件编译一次,然后将其复制到其他语言。
js-translation.json
中,即使将.csv文件插入,也可以从静态内容部署中正确创建文件app/design/frontend/vendor/theme-name/i18n/xx_XX.csv
。唯一需要注意的是js-translation.json
在运行静态内容部署之前先全部删除。