Magento 2 中文化问题(原创)

转载请注明出处

Magento 作为多语言的电商系统,提供了很全面的多语言支持,下面我将总结一下目前我所了解的 Magento 中文化的知识,欢迎补充!谢绝转载。以下中文化指的的简体中文。

设置

首先我们从简单的使用谈起。

如果你希望你的前台是中文,那么请在后台 Stores > Configuration > General > Local 中设置 Local 为 Chinese(China)

我们知道 *Stores > Configuration 的设置是有作用域的,在左上角如下图,

Magento 2 后台设置

你的设置会应用到选定的 Store view 上,这样就实现了不同的 store view 或 website store 可以使用不同的语言。

如果你希望你的账户后台是中文,那么请在后台你的账户 Account Setting > Interface Local 中设置 Interface Local 为 Chinese(China)

既然是账户中的设置,那么不同的账户当然可以设置为不同的语言,这样也是非常体贴到位的。

中文包

上面的设置都到位了以后,你会发现毛线变化也没有,这很正常,因为你还缺少中文包。Magento 2 官方的语言包地址是 https://crowdin.com/project/magento-2

从这里下载的语言包,打开后会发现他是由许多个文件夹组成的,并非单个的包。你从其他地方下载的语言包大多数都是这里来的,有的添加了使用说明,告诉你把他们复制到你的目录下。这个说法不完全正确

首先这个语言包是按照 github 上的目录结构组织的,如果你不是通过 composer 或者 git 安装的 Magento 2 ,我的意思是 Magento 的模块都在 vendor 目录下,那么很明显,这个包不适合你。复制不能让语言文件到达相应的目录。另一个问题是,如果你使用的是简体中文,那么简体中文的翻译文件必须是 zh_Hans_CN.csv ,但是这个包的翻译文件是 zh_CN.csv,所以即使你的目录结构是正确的,还是没有效果。

如果你仔细看上面的官方地址,你会看到

To build and download translations go to http://107.170.242.99/.

那就戳进去看看咯,这个地址提供了单个的包,找到 zh_CN 然后下载后改名为 zh_Hans_CN.csv 然后丢到相应的位置就可以了。

中文包的位置

接下来我们来说位置。Magento 2 的 Component 主要有三种:module、theme、lanaguage package。在 module 和 theme 中
都有 i18n 这个文件夹(如果没有可以自己建),这个文件夹负责放翻译文件。

经过测试,博主发现,module 中 i18n 下的翻译文件会被应用到前台和后台(假设你前后台都是简体中文的话),但是 theme 中的翻译只会被应用到前台。所以理论上讲,你下载了上面的包改名后丢到任意的 module 中,都是可以的。

至于 language package ,他当然前后台都得负责了,关于 language package 的继承问题,还是以后用到的时候再探索吧。

博主的建议是把整站的中文包丢到 language package 里面比较好。就是说 Magento 自带模块的中文翻译放到 language package 中,你购买的主题,插件什么的中文包放在自己对应的目录下,这样会清晰很多。

Magento 拥有中文的 language package,请各位寻找下,如果包都在 vendor 下,那么在该目录下找名字叫 language-zh_hans_cn 的,如果你是 git 上那种目录结构,那么在 app/i18n/Magento/zh_Hans_CN

好了,把你的包丢进去,刷新缓存,有效果了吧?

存在的问题

官方的语言包托管在 Crowdin 上,如果你注册一下,也可以参与翻译,反正就是给有兴趣锻炼翻译的人准备的,而且会有机器翻译提示,质量不是很好。博主查看了语言包的内容,有些实在是风马牛不相及,当然不相关的还是很少的。
另一个问题是 Magento 2 每次有新版本,那么需要翻译的字段都会有一些差异或者是增减。很明显,如果等待官方的更新的话,估计是不太可能了。

然后就是翻译的结构问题。打个比方来说,英文中使用 127 records found 这里的 127 不在翻译短语中,翻译短语是records found,翻成中文就是 找到的记录 ,连起来变成 127 找到的记录, 是不是很别扭?因为中英文的句子结构不同。看起来这种事情也没有更好的解决办法了。

最后一个问题就是翻译的情境问题,在 csv 里面你可不知道这个短语在什么情境下面,所以翻译可能不是很贴切,有一些词汇还和业务逻辑有关,如果不是很了解业务逻辑,还真是不可能找到合适的词汇。

好吧,说了这么多,其实总结起来就是中文化是要长期迭代的过程。需要大家的共同努力。

博主根据上面的官方翻译文件进行了部分校正,发布在 github ,大家可以去下载

地址是:https://github.com/PiscesThankIT/zh_Hans_CN

我的想法是,既然我们有了一个还不错的基础包,请下载使用的人,在发现有需要改进的词汇或者问题时,在我的 github 下给我提评论,或者在我的博客上评论,或者将你更改后的文件发给我(1518525862@qq.com),我更正后更新到 github 上,这样我们就有一个正向的循环,大家都能受益。

如何更正中文包

很多朋友不知道如何修改 csv 文件。csv 文件就是纯文本文件,只是用逗号分隔符来分割字段。你完全可以用记事本打开,不过记事本打开实在是很不好查看。默认情况下,你的电脑一定会替你用 EXCEL 打开, 用它打开有中文是会乱码的,要想不乱码,方法有点复杂,修改又有麻烦,所以博主还是放弃了这个念头。

你可以用任何编辑器打开,比如 notepad sublime 之类。博主觉得 notepad 编辑 csv 比较好。他的文件搜索在搜模板文件的时候真的很好用(题外话)。

有朋友推荐使用 csv 的编辑器,当然针对 csv 的编辑器,那查看起来真是很舒服的,but,大部分 csv 编辑器中文依然会乱码,因为不支持 unicode 编码的方式吧。博主找到一个很好用的,可惜免费版不能进行修改,破解版刚下载就提示有毒,吓得宝宝还是不要用了。这个编辑器的名字叫 Ron’s Editor ,不差钱的朋友可以支持下开发者哈。

回到正题,我们现在已经有合适的编辑器来编辑 csv 文件了。打开它,会发现至少有两栏。

"Report Bugs",报告错误,module,Magento_Backend

相信不用说你也知道了,就是第一栏翻译成第二栏呗。后面两个栏,博主还没有搞清楚具体的作用。官方文档说是 lanaguage package 要有四栏,不过博主用两栏测试,效果也没有什么差别。这个再说再说。。

好了,把翻译不到位的改成你要的短语,然后清缓存,就可以看到效果了。

6 comments

  1. dasu

    “”Magento 拥有中文的 language package,请各位寻找下,如果包都在 vendor 下,那么在该目录下找名字叫 language-zh_hans_cn 的…”
    我把你github上的中文包下载后放在了这个文件夹下面,不过中文翻译只在“商店(shop)”这个选项下生效,切换到其他选项还会变成英文,求解答 %>_<%

    1. Pisces Post author

      没有看懂你的问题。。有问题的话加我 QQ 或微信吧,网站暂时还没有配好评论回复邮件。

  2. tony

    你好 我看了你的文章 不过和你描述的方法,进行安装中文包 却不能正常使用 想请你 能进一步指导 谢谢

    1. Pisces Post author

      请说明遇到的问题,另外评论很难沟通,请加我,或者给我发邮件。

  3. DDM

    原来语言包是放在这个文件夹里,谢谢

  4. hello world

    靠谱的教程太少了,博主写得非常棒!

发表评论

电子邮件地址不会被公开。 必填项已用*标注