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


Posted in PHP onJanuary 11, 2017

前言:

由于我的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' => '@@这是啥玩意@@',

很奇怪的两边多出@@.

总结

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

PHP 相关文章推荐
BBS(php & mysql)完整版(三)
Oct 09 PHP
再次研究下cache_lite
Feb 14 PHP
PHP开发的一些注意点总结
Oct 12 PHP
LotusPhp笔记之:基于ObjectUtil组件的使用分析
May 06 PHP
zf框架的zend_cache缓存使用方法(zend框架)
Mar 14 PHP
PHP中的排序函数sort、asort、rsort、krsort、ksort区别分析
Aug 18 PHP
php实现中文转数字
Feb 18 PHP
PHP Cookie学习笔记
Aug 23 PHP
PHP简单遍历对象示例
Sep 28 PHP
注释PHP和html混合代码的小技巧(分享)
Nov 03 PHP
PHP5.5新特性之yield理解与用法实例分析
Jan 11 PHP
laravel实现前后台路由分离的方法
Oct 13 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 #PHP
PHP全功能无变形图片裁剪操作类与用法示例
Jan 10 #PHP
php实现36进制与10进制转换功能示例
Jan 10 #PHP
php获取当前url地址的方法小结
Jan 10 #PHP
PHP实现接收二进制流转换成图片的方法
Jan 10 #PHP
ThinkPHP 模板substr的截取字符串函数详解
Jan 09 #PHP
php 访问oracle 存储过程实例详解
Jan 08 #PHP
You might like
php GeoIP的使用教程
2011/03/09 PHP
php 冒泡排序 交换排序法
2011/05/10 PHP
PHP实现过滤各种HTML标签
2015/05/17 PHP
PHP实现链式操作的三种方法详解
2017/11/16 PHP
PHP时间函数使用详解
2019/03/21 PHP
url 编码 js url传参中文乱码解决方案
2010/04/11 Javascript
javascript开发中因空格引发的错误
2010/11/08 Javascript
解析页面加载与js函数的执行 onload or ready
2013/12/12 Javascript
深入理解javascript作用域和闭包
2014/09/23 Javascript
javascript常用函数归纳整理
2014/10/31 Javascript
HTML5+setCutomValidity()函数验证表单实例分享
2015/04/24 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
关于AngularJs数据的本地存储详解
2017/01/20 Javascript
集合Bootstrap自定义confirm提示效果
2017/09/19 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
vue弹窗组件的实现示例代码
2018/09/10 Javascript
微信小程序自定义带价格显示日历效果
2018/12/29 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
Vue实现手机扫描二维码预览页面效果
2020/05/28 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
2020/04/03 Javascript
记一次vue跨域的解决
2020/10/21 Javascript
js实现有趣的倒计时效果
2021/01/19 Javascript
asyncio 的 coroutine对象 与 Future对象使用指南
2016/09/11 Python
python 中字典嵌套列表的方法
2018/07/03 Python
Python测试网络连通性示例【基于ping】
2018/08/03 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
如何基于python测量代码运行时间
2019/12/25 Python
Python基于DB-API操作MySQL数据库过程解析
2020/04/23 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
Pycharm生成可执行文件.exe的实现方法
2020/06/02 Python
python下载的库包存放路径
2020/07/27 Python
Perry Ellis官网:美国男士品味服装
2016/12/09 全球购物
祖国在我心中演讲稿450字
2014/09/05 职场文书
党员干部观看《周恩来四个昼夜》思想汇报
2014/09/10 职场文书
2015教师节通讯稿
2015/07/20 职场文书