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 相关文章推荐
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
php中inlcude()性能对比详解
Sep 16 PHP
PHP编程函数安全篇
Jan 08 PHP
PHP中使用cURL实现Get和Post请求的方法
Mar 13 PHP
PHP常量使用的几个需要注意的地方(谨慎使用PHP中的常量)
Sep 12 PHP
php绘图之加载外部图片的方法
Jan 24 PHP
jQuery获取json后使用zy_tmpl生成下拉菜单
Mar 27 PHP
PHP图像处理类库MagickWand用法实例分析
May 21 PHP
php抓取网站图片并保存的实现方法
Oct 29 PHP
AJAX PHP无刷新form表单提交的简单实现(推荐)
Sep 09 PHP
php实现的简单数据库操作Model类
Nov 16 PHP
thinkphp框架使用JWTtoken的方法详解
Oct 10 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/10/22 PHP
PHP开发中的错误收集,不定期更新。
2011/02/03 PHP
php通过数组实现多条件查询实现方法(字符串分割)
2014/05/06 PHP
PHP根据两点间的经纬度计算距离
2014/10/31 PHP
PHP下载远程图片并保存到本地方法总结
2016/01/22 PHP
php二维数组按某个键值排序的实例讲解
2019/02/15 PHP
常见表单重复提交问题整理及解决方法
2013/11/13 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
javascript实现简单的省市区三级联动
2015/05/14 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
jQuery实现DIV响应鼠标滑过由下向上展开效果示例【测试可用】
2018/04/26 jQuery
vue-router实现编程式导航的代码实例
2019/01/19 Javascript
详解js创建对象的几种方法及继承
2019/04/12 Javascript
用PyQt进行Python图形界面的程序的开发的入门指引
2015/04/14 Python
十个Python程序员易犯的错误
2015/12/15 Python
python基本语法练习实例
2017/09/19 Python
python使用 HTMLTestRunner.py生成测试报告
2017/10/20 Python
Pycharm 创建 Django admin 用户名和密码的实例
2018/05/30 Python
python多进程提取处理大量文本的关键词方法
2018/06/05 Python
使用PyTorch将文件夹下的图片分为训练集和验证集实例
2020/01/08 Python
TFRecord文件查看包含的所有Features代码
2020/02/17 Python
后端开发使用pycharm的技巧(推荐)
2020/03/27 Python
Python中格式化字符串的四种实现
2020/05/26 Python
django form和field具体方法和属性说明
2020/07/09 Python
Matplotlib中%matplotlib inline如何使用
2020/07/28 Python
Python的collections模块真的很好用
2021/03/01 Python
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
介绍一下Python下range()函数的用法
2013/11/07 面试题
职业规划书如何设计?
2014/01/09 职场文书
公益广告语集锦
2014/03/13 职场文书
运动员口号
2014/06/09 职场文书
安全横幅标语
2014/06/09 职场文书