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 相关文章推荐
Win2000+Apache+MySql+PHP4+PERL安装使用小结
Oct 09 PHP
PHP新手上路(二)
Oct 09 PHP
php中文字母数字验证码实现代码
Apr 25 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
PHP无敌近乎加密方式!
Jul 17 PHP
php防止伪造的数据从URL提交方法
Jun 27 PHP
PHP框架Laravel的小技巧两则
Feb 10 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
浅析Yii2缓存的使用
May 10 PHP
php封装的mysqli类完整实例
Oct 18 PHP
php创建类并调用的实例方法
Sep 25 PHP
阿里对象存储OSS在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实现的事件机制实例分析
2015/06/18 PHP
Eclipse PHPEclipse 配置的具体步骤
2017/08/08 PHP
关于laravel框架中的常用目录路径函数
2019/10/23 PHP
在Javascript中 声明时用"var"与不用"var"的区别
2013/04/15 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
jQuery元素选择器用法实例
2014/12/23 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
node.js Sequelize实现单实例字段或批量自增、自减
2016/12/08 Javascript
微信小程序中的swiper组件详解
2017/04/14 Javascript
jQuery实现简单的滑动导航代码(移动端)
2017/05/22 jQuery
微信小程序获取用户openid的实现
2018/12/24 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
vue中的计算属性和侦听属性
2020/11/06 Javascript
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
Python生成随机密码
2015/03/10 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
教你用Python创建微信聊天机器人
2020/03/31 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python实现Dijkstra算法的最短路径问题
2019/06/21 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
用Python生成HTML表格的方法示例
2020/03/06 Python
Python如何读写二进制数组数据
2020/08/01 Python
CSS3 绘制BMW logo实的现代码
2013/04/25 HTML / CSS
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
自我鉴定怎么写
2013/12/05 职场文书
英文自我鉴定
2013/12/10 职场文书
公司门卫岗位职责范本
2014/07/08 职场文书
三严三实对照检查材料思想汇报
2014/09/28 职场文书
质检员岗位职责范本
2015/04/07 职场文书
《植物妈妈有办法》教学反思
2016/02/23 职场文书
创业计划书之寿司
2019/07/19 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
阿里云服务器Ubuntu 20.04上安装Odoo 15
2022/05/20 Servers
Echarts如何重新渲染实例详解
2022/05/30 Javascript