/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'p_id' => Yii::t('models/Post','id'),
'p_title' => Yii::t('models/Post','title'),
'p_content' => Yii::t('models/Post','content'),
'p_addtime' => 'PAddtime',
);
}
Yii::t() 就是自动去找你的资源文件。参数第一个是路径,不用加.php, 后面是对应的名字
第三在 messages/ 下面新建 zh_cn/models/Post.php,内容是如下
<?php
return array(
'Post' => 'y1_post',
'id' => '编号',
'title' => '标题',
'content'=>'内容'
);
之后就好了。如果你还有英文以及其它语道理是一样的。
——————————————————————————————————————————
全局配置
第一在 main.php 配置文件里加上'language'=>'zh_cn' 或'sourceLanguage'=>'zh_cn' , 告诉程序这是中文的,你去找中文包去(zh_cn).
第二在你对应的 model 里面加上以下代码,例如 Post model,
- public function rules()
- {
- return array(
- array('password','compare', 'message'=>Yii::t('models/Post','content')),
- );
- }
- public function attributeLabels()
- {
- return array(
- 'p_id' => Yii::t('models/Post','id'),
- 'p_title' => Yii::t('models/Post','title'),
- 'p_content' => Yii::t('models/Post','content'),
- 'p_addtime' => 'PAddtime',
- );
- }
得到某一个
- $model->getAttributeLabel('p_content');
Yii::t() 就是自动去找你的资源文件。参数第一个是路径,不用加.php, 后面是对应的名字
第三在 messages/ 下面新建 zh_cn/models/Post.php,内容是如下 不要命名成系统默认的YII,Zii
- <?php
- return array(
- 'Post' => 'y1_post',
- 'id' => '编号',
- 'title' => '标题',
- 'content'=>'内容'
- );
之后就好了。如果你还有英文以及其它语道理是一样的。
To get current language:
$lang = Yii::app()->language;
To set current language:
Yii::app()->language = 'en';
部分配置
我们可以在应用程序配置文件进行设置,这样该设置将会对整个网站起作用 。但是我们只想翻译登录表单 ,所以我们只需要在SiteController::actionLogin()方法内进行设置,所以该设置只会在渲染登录表单时有效。所以打开该文件,在方法的开头按照如下形式设置目标语言
- public function init() {
- if (Yii::app()->getRequest()->getServerName()=='cn.domain.com') {
- Yii::app()->language='zh_cn';
- }
- }
- public function actionLogin()
- {
- Yii::app()->language = 'zh_cn';
————————————————————————————————————————————————
Yii::t('test', "example message");"example message" must be in the language defined over Yii::app()->sourceLanguage. If you set sourceLanguage to something else (eg: xx), you can then provide translation for your original sourceLanguage - "xx" does not exist and is used as a dummy.
Yii::app()->sourceLanguage = 'xx'; Yii::app()->language = 'en'; Yii::t('test', "0001");You must provide this file: "protected/messages/en/test.php":
return array( '0001' => 'example message'; ); 在config/main.php 里设置了sourceLanguage和language。 'sourceLanguage'=>'zh_cn', 'language'=>'zh_cn', 发现yii:t()将不生效 原因在于CMessageSource.php里76行, if($language!==$this->getLanguage()) return $this->translateMessage($category,$message,$language); else return $message; 这个时候由于 sourceLanguage = language;直接return $message; sourceLanguage 代表你的数据源语言标记 language 表示当前语言标记 假如两者相同,就没有必要转换了~ 如: Yii::t('app','Hello'); 就标识数据源应该为英文了 Yii::t('app','您好'); 数据源应该为中文
Yii::t('app', 'Path alias "{alias}" is redefined.', array('{alias}'=>$alias))
In summary, in order to use message translation, the following steps are needed:
-
Call Yii::t() at appropriate places;
-
Create PHP translation files as
protected/messages/LocaleID/CategoryName.php
. Each file simply returns an array of message translations. Note, this assumes you are using the default CPhpMessageSource to store the translated messages. -
Configure CApplication::sourceLanguage and CApplication::language.