转载请注明出处
关于 Magento 2 的中文化,之前博主已经写过三篇文章,感兴趣的请参阅本文的相关阅读部分。
下面我们来回顾一下。
回顾
首先是设置问题。
前台设置,Stores > Configuration > General > Local 中设置 Local 为 Chinese(China)
账户设置,后台你的账户 Account Setting > Interface Local 中设置 Interface Local 为 Chinese(China)
Magento 2 的 component 有三种,module、theme、language package。
module 和 theme 中都有 i18n
,只要把 zh_Hans_CN.csv 放进去就可以了。module 中 i18n
下的翻译文件会被应用到前台和后台(假设你前后台都是简体中文的话),但是 theme 中的翻译只会被应用到前台。
提取的 csv 有四列,但是其实只有前两列有用。重复的字段,实际使用的是最后一个翻译值。
之前的文章博主教大家的方法是,寻找 Magento 自带的 language package。这个有一些局限性。
主要问题就在于,假如我们采用命令行的方式更新,那么文件会被退回到初始状态,我们放进去的 zh_Hans_CN 会被丢掉。
所以更妥当的做法是,我们建一个自己的 language package,或者下载一个,然后放到 app/i18n 下面。
如何创建 language package
以创建中文包为例,但是方法是通用的。
我们在 app/i18n 下创建一个文件夹 ThankIT
,在 ThankIT
下创建 zh_Hans_CN
,然后在创建以下文件
composer.json
{
"name": "thankit/language-zh_hans_cn",
"description": "Chinese (China) language",
"version": "100.3.0-dev",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"magento/framework": "100.3.*"
},
"type": "magento2-language",
"autoload": {
"files": [
"registration.php"
]
}
}
language.xml
<?xml version="1.0"?>
<language xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/Language/package.xsd">
<code>zh_Hans_CN</code>
<vendor>ThankIT</vendor>
<package>zh_Hans_CN</package>
</language>
registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::LANGUAGE,
'thankit_zh_hans-cn',
__DIR__
);
最后把之前的 zh_Hans_CN.csv
放进去,齐活。
正确设置,并使用命令行:
php bin/magento setup:static-content:deploy
然后就可以看到效果了。
常见问题
经常有人说安装中文包以后出错了,这通常是因为你的 zh_Hans_CN.csv
中含有空行,特别是在结尾的部分,有时候是提供安装包的人不小心干的,有时候是自己不小心干的。
福利
上面的 package 上传到 github 了,可以自己下载,然后放到 app/i18n 目录下。
PiscesThankIT/language-zh-hans-cn
另外放一个台湾繁体的。由于繁体的官方的翻译比率太低,所以,博主拿简体中文转化成了繁体中文,翻译比率大概是 88%。
PiscesThankIT/language-zh-hant-tw
Magento 2 Translations & language packs (所有语言)
如果你想修改翻译,请参考相关阅读部分。
ada
很感謝你的繁體中文語言包,我可否把餘下的英文也翻譯給你?我用Excel做好後好像檔案不能用。
Pisces Post author
不要用 Excel ,用 Notepad++ 或者 Sublime Text 这种打开操作。