YII2 实现多语言配置的方法分享
前言:
由于我的YII2版本是2.0.7,设置多语言时和其他教程有不同的地方,所以想着整理下,方便自己以后需要的时候和有需要的朋友参考学习。下面来一起学习学习吧。
方法如下:
1.在一个controller里面写一个调用i18n的语句,比如actionIndex
echo\Yii::t('app','whatisthis');
现在进入这个页面,页面输出whatisthis
2.手动创建一个文件夹messages来存放多语言相关文件,如果是advanced版本则在frontend下面创建这个文件夹
3.创建i18n配置文件
yiimessage/configfrontend/messages/config.php
会自动生成一个config.php文件
然后打开frontend/messages/config.php,language行设置为
'languages'=>['en','zh-CN'],
4.创建message文件,执行
yiimessagefrontend/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'=>'@@这是啥玩意@@',
很奇怪的两边多出@@.
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。