The message file for category 'yii' does not exist: /path/to/vendor/yiisoft/yii2/messages/zh_CN/yii.php Fallback file does not exist as well: /path/to/vendor/yiisoft/yii2/messages/zh/yii.php #67
The message file for category 'yii' does not exist: /path/to/vendor/yiisoft/yii2/messages/zh_CN/yii.php Fallback file does not exist as well: /path/to/vendor/yiisoft/yii2/messages/zh/yii.php
For consistency reasons, all locale IDs used in Yii applications should be canonicalized to the format of ll-CC, where ll is a two- or three-letter lowercase language code according to ISO-639 and CC is a two-letter country code according to ISO-3166.
在日常的日志巡检过程中,发现了一个不断出现在日志中的翻译的错误很是让人恼火。
复现步骤
在vue 端,编辑地址,点保存时,即会触发上述问题。(added 20190216)
原因说明
yii 本身使用多语言的定义时,采取这样的格式:
zh-CN
。如下图:然而 fecshop 在使用多语言的定义时,采用了格式:
zh_CN
。如下图:fecshop 代码剖析
关于 fecshoplang service 的配置信息相关代码:
关于 Yii i18n 的文档链接:https://www.yiiframework.com/doc/guide/2.0/en/tutorial-i18n 中的说明:
在
Yii::$service->page->translate
服务中,有一方法定义如下:同时请注意,
Yii::$app->language
属性也被Yii::t()
所使用。如下:
那么此时来讲,fecshop 的语言是什么时候被设置的呢?
答案是在 fecshop 的 store 初始化的时候。
在
Yii::$service->store
服务的actionBootstrap()
方法中有关键代码如下:而 store 的配置相关如下:
至此分析结束。
修复方法
使用与 Yii 一致的语言的定义格式: