全局配置
第一在 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');
- <?php echo $form->label($model,'name'); ?
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';