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聊天室技术
Oct 09 PHP
php fputcsv命令 写csv文件遇到的小问题(多维数组连接符)
May 24 PHP
浅析php变量作用域的一些问题
Aug 08 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
学习php设计模式 php实现桥梁模式(bridge)
Dec 07 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
phpstorm 配置xdebug的示例代码
Mar 31 PHP
PHP从零开始打造自己的MVC框架之路由类实现方法分析
Jun 03 PHP
PHP如何开启Opcache功能提升程序处理效率
Apr 27 PHP
Thinkphp 框架配置操作之配置加载与读取配置实例分析
May 15 PHP
PHP copy函数使用案例代码解析
Sep 01 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的无限分类实现想法~
2007/01/02 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
php实现的RSS生成类实例
2015/04/23 PHP
php实现模拟登陆方正教务系统抓取课表
2015/05/19 PHP
Linux操作系统安装LAMP环境
2015/06/26 PHP
图文介绍PHP添加Redis模块及连接
2015/07/28 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
ThinkPHP实现转换数据库查询结果数据到对应类型的方法
2017/11/16 PHP
javascript中的变量是传值还是传址的?
2010/04/19 Javascript
jQuery快速上手:写jQuery与直接写JS的区别详细解析
2013/08/26 Javascript
JS弹出对话框实现方法(三种方式)
2015/12/18 Javascript
原生js编写autoComplete插件
2016/04/13 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
js定义类的几种方法(推荐)
2016/06/08 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
微信小程序scroll-view横向滑动嵌套for循环的示例代码
2018/09/20 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
[50:11]2018DOTA2亚洲邀请赛 4.7总决赛 LGD vs Mineski 第三场
2018/04/09 DOTA
使用Python的Scrapy框架十分钟爬取美女图
2016/12/26 Python
使用tensorflow实现AlexNet
2017/11/20 Python
Python 12306抢火车票脚本
2018/02/07 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
Anya Hindmarch官网:奢侈设计师手袋及配饰
2018/11/15 全球购物
Kipling意大利官网:世界著名的时尚休闲包袋品牌
2019/06/05 全球购物
为什么group by 和order by会使查询变慢
2014/05/16 面试题
init进程的作用
2015/08/20 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
幼师自我鉴定
2014/02/01 职场文书
今冬明春火灾防控工作方案
2014/05/29 职场文书
公司大门门卫岗位职责
2014/06/11 职场文书
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python