Yii1.x 国际化三步走

本文介绍了Yii1.x版本的国际化方案及相关问题解决办法

一 、Yii 国际化配置

找到main.php并按照如下修改配置

return [
    'sourceLanguage'=>'zh_cn', // 源语言、即不需要翻译的默认语言
    'language'=>'zh_cn', // 当前默认语言
    'components' => [ 
        // 组件配置
    ]
];

配置中sourceLanguage一般指定zh_cn就好,中文是不需要翻译的;而language默认跟他一样,需要注意的是:二者一样时是不会翻译文本而是原样输出。

二、 代码处理

这里主要指view的代码

// 1. 普通
Yii::t('app', '要翻译的文字');
// 输出:要翻译的文字

// 2. 替换关键字
Yii::t('app', ' {0},你好!', ['0'=>'世界']);
// 输出:世界,你好!

// 3. 选择符
Yii::t('app', '1#有效|2#无效', 2); // 注意第三个参数必须是数字
// 输出:无效

// 4. 高级范
Yii::t('app', '1#有效|0#无效|n>1#神秘数字n', 5); // 此处n表示输入的第三个变量
// 输出:神秘数字n

其中app表示文件名,可以根据需要自行分类。切换语言可以这样:

$targetLang = 'en_us';
Yii:app()->setLanguage($targetLang); // 切换后相当于配置中的language变为此语音

其实名字可以随便起,只需要确保有相关配置即可

三、生成翻译文件

大家都过yii的命令行吧,其中有一个 yiic message [option]就可以用来自动生成配置文件,步骤如下:

  1. 复制/framework/messages/config.php到项目路径下/protected/messages/config.php,其中config.php也可以叫别的
  2. 输入命令 yiic message config.php,等几秒后便根据配置自动生成了代码中用Yii::t方法输出的翻译文件,连文件名都区分了

接下来我们看下config.php都有什么

<?php
<?php
return array(
	'sourcePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', // 源语言目录
	// 其他语言目录,sourcePath同级
 'messagePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..'.DIRECTORY_SEPARATOR.'messages', 
	'languages'=>array('zh_cn','en_us','ko_kr'), // 待翻译的语言
	'fileTypes'=>array('php'), // 检测的文件扩展名
	'overwrite'=>true, // 是否覆盖源文件,开启后生成快
	'exclude'=>array( // 要排除的文件或目录
		'.svn',
		'.gitignore',
		'yiilite.php',
		'yiit.php',
		'/i18n/data',
		'/messages',
		'/vendors',
		'/web/js',
	),
);

FAQ

1. 语言不能正常切换

检查下sourceLanguage是否为英文en_us,即当languagesourceLanguage一样时不会进行翻译

以后翻译直接写好代码,完事通过命令自动刷新翻译文件就行了。至于最终由谁来将中文译成其他文字那不在讨论范围了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值