yii 多语言设置

[i]下面为大家介绍一下关于yii 的多语言是怎么而设置的:[/i]

[b]1.首先是配置文件的设置[/b]
和其它application 级别的配置一样,系统的缺省语言可以在protected/config/main.php 中设置:

 return array(  
'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
......
'language'=>'zh_cn', *** 不设置的话缺省为 en_us


[b]2.设置controller [/b]
如:中文 | English
echo CHtml:: link ( ' 中文 ' , array ( '' , 'languge' => 'zh' )) . '| ' . CHtml:: link ( 'English' , array ( '' , 'languge' => 'en' )) ;

 //初始化多语言

public function init()
{
If (isset($_GET['languge'])) {
Yii::app()->session['languge'] = $_GET['languge'];
Yii::app()->language = Yii::app()->session['languge'];
} else {
if (isset(Yii::app()->session['languge'])) {
Yii::app()->language = Yii::app()->session['languge'];
}
}
}


在控制器中init()初始化语言,主要就是给 Yii::app()->language 设置对应的语言,如

 public function init() 
{
Yii::app()->language='en';//显示英文
}


[b]3.文本翻译[/b]
Yii::app()->language='en';//显示英文
主要就是yii 'application.messages.en翻译包的内容,下面的各种语言翻译包

为了解决文本的不同语言版本的动态选择,Yii 框架提供一个全局性的函数Yii::t(‘[text file]’, ‘[text]’) 用来封装所有需要多语言支持的文本。其中第一个参数’[text file]’ 代表存储当前语言文本的文件,第二个参数‘[text] ’是文本编码。’[text]’ 通常就是该文本在系统的缺省语言中的版本。例如:Yii 框架缺省的系统语言是美国英语,所以’[text]’通常就是文本的英文语意。但是如果在protected/config/main.php 中设置系统的缺省语言是简体中文,那么’[text]’ 应该是文本的简体中文语意。以文本“Name (名称)”为例,如果系统语言是美国英语,我们可以将’[text]’ 定义为’Name’;而当系统语言是简体中文时,’[text]’ 应该定义为’ 名称’ 。
和大多数多语言框架一样,Yii 框架也将不同语言的文本保存在该语言对应的目录下,作为一个资源。基于Yii 框架的系统在根目录下有一个messages 目录([webapp]/messages )。简体中文资源放置在[webapp]/messages/zh_cn 下,美国英语资源放置在[webapp]/messages/en_us 下。所有语言资源都是以PHP 文件的形式存在,且都返回一个包含若干Key/Value 对的数组。其中Key 就是Yii::t() 的第二参数’[text]’ 。仍以文本“Name (名称)”为例,如果系统语言是美国英语,语言资源文件中对应的Key/Value 应该是’Name’=>’ 名称’ ; 而当系统语言是简体中文时,Key/Value 应该是’ 名称’=>’Name’ 。值得注意的是,因为Yii 框架是使用UTF-8 编码,所以语言资源文件也必须是UTF-8 编码。否则显示文本时会出现乱码。
Yii 框架在运行时,会首先根据Yii::app()->language 的值定位到对应语言目录下的[text file].php 文件。然后再根据’[text]’ 在Key/Value 对数组中定位该’[text]’ 对应的语言文本,作为最终显示的文本。

希望对你们有帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值