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和ACCESS写聊天室(一)
Oct 09 PHP
用PHP程序实现支持页面后退的两种方法
Jun 30 PHP
用php过滤危险html代码的函数
Jul 22 PHP
PHP中图片等比缩放的实例
Mar 24 PHP
php/js获取客户端mac地址的实现代码
Jul 08 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
浅谈php安全性需要注意的几点事项
Jul 17 PHP
php根据一个给定范围和步进生成数组的方法
Jun 19 PHP
php获取从百度、谷歌等搜索引擎进入网站关键词的方法
Jul 08 PHP
Zend Framework动作控制器用法示例
Dec 09 PHP
PHP实现执行外部程序的方法详解
Aug 17 PHP
PHP实现提高SESSION响应速度的几种方法详解
Aug 09 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类
2006/11/25 PHP
echo, print, printf 和 sprintf 区别
2006/12/06 PHP
PHP中func_get_args(),func_get_arg(),func_num_args()的区别
2013/09/30 PHP
yii2中关于加密解密的那些事儿
2018/06/12 PHP
Array.slice()与Array.splice()的返回值类型
2006/10/09 Javascript
JS学习之一个简易的日历控件
2010/03/24 Javascript
xml文档转换工具,附图表例子(hta)
2010/11/17 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
Extjs表单常见验证小结
2014/03/07 Javascript
jquery判断元素是否隐藏的多种方法
2014/05/06 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
JS代码随机生成姓名、手机号、身份证号、银行卡号
2016/04/27 Javascript
基于Vue如何封装分页组件
2016/12/16 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
Angular CLI在Angular项目中如何使用scss详解
2018/04/10 Javascript
Angular4 Select选择改变事件的方法
2018/10/09 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
一篇文章带你搞懂Vue虚拟Dom与diff算法
2020/08/25 Javascript
python笔记(1) 关于我们应不应该继续学习python
2012/10/24 Python
python字典的常用操作方法小结
2016/05/16 Python
Python 序列的方法总结
2016/10/18 Python
python 反向输出字符串的方法
2018/07/16 Python
Python跳出多重循环的方法示例
2019/07/03 Python
python 批量添加的button 使用同一点击事件的方法
2019/07/17 Python
python3字符串操作总结
2019/07/24 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
Python 存取npy格式数据实例
2020/07/01 Python
中国最大的名表商城:万表网
2016/08/29 全球购物
CAT鞋英国官网:坚固耐用的靴子和鞋
2016/10/21 全球购物
公共场所禁烟标语
2014/06/25 职场文书
应届生求职自荐信
2014/07/04 职场文书
投标承诺函范文
2015/01/21 职场文书
实践论读书笔记
2015/06/29 职场文书
MySQL中order by的执行过程
2022/06/05 MySQL
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python