wubinworks/module-translation

此模块[1]将来自[模块或主题根]/i18n/Js/[locale].csv的翻译数据添加到前端翻译字典。[2]允许模块通过在模块内部特定位置创建CSV文件来覆盖主题、语言包和数据库翻译。

1.0.2 2023-11-19 14:41 UTC

README

(这里讨论的所有内容均为Magento 2.4。请参阅要求部分。))

此模块提供2个功能,旨在作为其他模块/主题的依赖项。

  1. 在部署期间,Magento会扫描静态.js.html文件,并从中提取可翻译的字符串。
    然后,Magento生成一个js-traslation.json文件。
    此文件是一个前端翻译使用的字典文件
    例如:<!-- ko i18n: 'Translate Me!' --><!-- /ko -->
    不幸的是,由于某些原因,.phtml(和.php)文件中的可翻译字符串不会被Magento捕获。
    如果$.mage.__('Some Text').phtml文件中,它将不会被翻译。
    此模块可以将来自单独文件(即[模块或主题根]/i18n/Js/[locale].csv)的额外数据强制推送到js-traslation.json

  2. Magento按照以下顺序加载翻译数据

 |  Module translation: [module root]/i18n/[locale].csv
 |  Language Pack translation
 |  Theme translation: [theme root]/i18n/[locale].csv
\|/ Database translation

然后这些翻译数据被合并,合并规则是"最后一个胜出",这意味着数据库翻译会覆盖其他所有内容。
然而,在某些情况下,特别是在进行本地开发以翻译特定业务领域的非常一般的短语时,模块创建者想要覆盖语言包和主题翻译,而不修改那些第三方包。
此模块为翻译文件(CSV)添加了额外位置,因此加载顺序变为

 |  模块翻译:[模块根]/i18n/[locale].csv

 |  语言包翻译

 |  主题翻译:[主题根]/i18n/[locale].csv

 |  数据库翻译

 |  额外模块翻译:[模块根]/i18n/i18n/[locale].csv

\|/ 额外主题翻译:[主题根]/i18n/i18n/[locale].csv(最后一个胜出)

此模块在店铺模拟下也能正常工作。

用法和示例

1. 将翻译合并到js-traslation.json
创建类似于正常翻译CSV文件的<module or theme root>/i18n/Js/<locale>.csv,然后其内容将推送到js-traslation.json(即使短语在静态文件中找不到作为可翻译字符串)。

2. 覆盖语言包或主题翻译
创建类似于正常翻译CSV文件的[module or theme root]/i18n/i18n/[locale].csv,然后它将正常工作。

请检查文件夹内此模块的示例。

i18n/ja_JP.csv

"###Translate Me!###","翻訳して!"

i18n/i18n/ja_JP.csv

"###Translate Me!###","翻訳してください!(Override)"

i18n/Js/ja_JP.csv

"###This phrase will go to js-translation.json anyway.###","このフレーズは必ずjs-translation.jsonに出現する。"
"###This phrase will be overridden.###","このフレーズはオーバーライドされる"

i18n/i18n/Js/ja_JP.csv

"###This phrase will be overridden.###","このフレーズをオーバーライドした"

输出

###Translate Me!### -> 翻訳してください!(Override)

js-translation.json中的输出

###This phrase will go to js-translation.json anyway.### -> このフレーズは必ずjs-translation.jsonに出現する。
###This phrase will be overridden.### -> このフレーズをオーバーライドした

要求

Magento 2.4

安装

composer require wubinworks/module-translation