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 相关文章推荐
php 全局变量范围分析
Aug 07 PHP
drupal 代码实现URL重写
May 04 PHP
PHP命名空间(Namespace)的使用详解
May 04 PHP
深入分析php中接口与抽象类的区别
Jun 08 PHP
php防止sql注入之过滤分页参数实例
Nov 03 PHP
php将图片保存入mysql数据库失败的解决方法
Dec 27 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
php使用str_replace替换多维数组的实现方法分析
Jun 15 PHP
Laravel框架分页实现方法分析
Jun 12 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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原理之异常机制
2010/08/21 PHP
PHP session有效期session.gc_maxlifetime
2011/04/20 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
php中sprintf与printf函数用法区别解析
2014/02/17 PHP
windows的文件系统机制引发的PHP路径爆破问题分析
2014/07/28 PHP
php结合md5的加密解密算法实例
2016/09/30 PHP
Yii1.1中通过Sql查询进行的分页操作方法
2017/03/16 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
锋利的jQuery 第三章章节总结的例子
2010/03/23 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
JS不完全国际化&本地化手册 之 理论篇
2016/09/27 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
简单实现AngularJS轮播图效果
2020/04/10 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
AngularJS 监听变量变化的实现方法
2018/10/09 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
基于Fixed定位的框选功能的实现代码
2019/05/13 Javascript
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
python操作redis的方法
2015/07/07 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python装饰器实现几类验证功能做法实例
2017/05/18 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
python  创建一个保留重复值的列表的补码
2018/10/15 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
python flask web服务实现更换默认端口和IP的方法
2019/07/26 Python
用Python实现二叉树、二叉树非递归遍历及绘制的例子
2019/08/09 Python
哪种Python框架适合你?简单介绍几种主流Python框架
2020/08/04 Python
python 对象真假值的实例(哪些视为False)
2020/12/11 Python
Python实现疫情地图可视化
2021/02/05 Python
纯css3无js实现的Android Logo(有简单动画)
2013/01/21 HTML / CSS
《少年王冕》教学反思
2014/04/11 职场文书
新学期开学演讲稿
2014/05/24 职场文书
房产公证书
2015/01/23 职场文书
Redis Stream类型的使用详解
2021/11/11 Redis