YII2 实现多语言配置的方法分享

2018-09-07 19:09

阅读:290

  前言:

  由于我的YII2版本是2.0.7, 设置多语言时和其他教程有不同的地方, 所以想着整理下,方便自己以后需要的时候和有需要的朋友参考学习。下面来一起学习学习吧。

  方法如下:

  1. 在一个controller里面写一个调用i18n的语句, 比如actionIndex

   echo \Yii::t(app, whatisthis);

  现在进入这个页面, 页面输出whatisthis

  2. 手动创建一个文件夹messages来存放多语言相关文件, 如果是advanced版本则在frontend下面创建这个文件夹

  3. 创建i18n配置文件

   yii message/config frontend/messages/config.php

  会自动生成一个config.php文件

  然后打开frontend/messages/config.php, language行设置为

   languages => [en, zh-CN],

  4. 创建message文件, 执行

   yii message frontend/messages/config.php

  这样在frontend/messages里面会生成en和zh-CN文件夹

  5. 打开frontend/messages/zh-CH/yii.php

  添加一行

   whatisthis => 这是啥玩意,

  6. 在/yii2/frontend/config/main.php里设置

  components中加入

   i18n => [ translations => [ app* => [ class => yii\i18n\PhpMessageSource, //basePath => @app/messages, //sourceLanguage => en-US, fileMap => [ app => yii.php, app/error => error.php, ], ], ], ],

  注意, 如果想要更改validate等yii本身的翻译

  需增加下面设置到 translations => []中:

   yii => [ class => yii\i18n\PhpMessageSource, sourceLanguage => en-US, basePath => @app/messages ],

  components同等级后加入

   language => zh-CN,

  7. 再刷新页面, 应该会显示这是啥玩意了.

  8. 当你需要新增其他语言时候, 执行第3,4步会重新生成文件, 之前的翻译(whatisthis)会保留, 但我试了之后发现变成了

   whatisthis => @@这是啥玩意@@,

  很奇怪的两边多出@@.

  总结

  以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。


评论


亲,登录后才可以留言!