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 相关文章推荐
PHPMyAdmin 快速配置方法
May 11 PHP
Notice: Undefined index: page in E:\PHP\test.php on line 14
Nov 02 PHP
php中json_encode中文编码问题分析
Sep 13 PHP
php读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
Jul 31 PHP
php json与xml序列化/反序列化
Oct 28 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
Oct 21 PHP
PHP中变量引用与变量销毁机制分析
Nov 15 PHP
PHP文件缓存类示例分享
Jan 30 PHP
php实现比较两个字符串日期大小的方法
May 12 PHP
PHP程序员的技术成长规划
Mar 25 PHP
php通过header发送自定义数据方法
Jan 18 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 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+MySQL搭建聊天室功能实例代码
2012/08/20 PHP
php使用$_POST或$_SESSION[]向js函数传参
2014/09/16 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
PHP会话处理的10个函数
2015/08/11 PHP
Laravel中的Blade模板引擎示例详解
2017/10/10 PHP
php+croppic.js实现剪切上传图片功能
2018/08/14 PHP
屏蔽F1~F12的快捷键的js函数
2010/05/06 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
2011/08/08 Javascript
Javascript实现关联数据(Linked Data)查询及注意细节
2013/02/22 Javascript
jquery中的on方法使用介绍
2013/12/29 Javascript
JavaScript的各种常见函数定义方法
2014/09/16 Javascript
js进行表单验证实例分析
2015/02/10 Javascript
Js动态设置rem来实现移动端字体的自适应代码
2016/10/14 Javascript
Node.js中.pfx后缀文件的处理方法
2017/03/10 Javascript
vue js秒转天数小时分钟秒的实例代码
2018/08/08 Javascript
原生Vue 实现右键菜单组件功能
2019/12/16 Javascript
vue-model实现简易计算器
2020/08/17 Javascript
[01:58]DOTA2上海特级锦标赛现场采访:RTZ这个ID到底好不好
2016/03/25 DOTA
[04:10]2016国际邀请赛中国区预选赛第二日TOP10精彩集锦
2016/06/28 DOTA
python算法学习之基数排序实例
2013/12/18 Python
深入源码解析Python中的对象与类型
2015/12/11 Python
python hough变换检测直线的实现方法
2019/07/12 Python
Python发送邮件封装实现过程详解
2020/05/09 Python
python属于解释语言吗
2020/06/11 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
最新计算机专业自荐信
2013/10/16 职场文书
财务管理专业推荐信
2013/11/19 职场文书
餐饮企业总经理岗位职责范文
2014/02/18 职场文书
校运会口号
2014/06/18 职场文书
公司合并协议书范本
2014/09/30 职场文书
机动车交通事故协议书
2015/01/29 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
教师岗位说明书
2015/09/30 职场文书
CSS3 天气图标动画效果
2021/04/06 HTML / CSS
分析Python感知线程状态的解决方案之Event与信号量
2021/06/16 Python