我想知道Yii框架是否在多语言过程中使用定义的Labels atttributes。
所以,如果我有
public function attributeLabels() {
return array(
'email' => 'Email address',
'rememberMe' => 'Remember me next time',
'password' => 'Password'
);
}
这会被翻译成其他语言吗?或者我是否必须手动执行某些操作?
答案 0 :(得分:15)
Yii不会自动翻译。您需要使用Yii内置的i18n并手动添加翻译并修改标签,如下所示:
public function attributeLabels() {
return array(
'email' => Yii::t('account','Email address'),
'rememberMe' => Yii::t('account','Remember me next time'),
'password' => Yii::t('account','Password')
);
}
您可以在Quick Start to Internationalize your application in Yii Framework
获取有关国际化应用的更多信息答案 1 :(得分:1)
嗯,您可以使用内置翻译系统翻译属性标签,例如:
public function attributeLabels() {
return array(
'email' => Yii::t('myapp','Email address'),
);
}
然后在messages文件夹中为您的语言创建一个目录,例如:
messages\dk\myapp.php
myapp.php应该返回翻译,例如:
return array('Email address' => 'TRANSLATION...');
接下来,您需要在配置文件中设置应用程序的语言。
'language' => 'dk',
答案 2 :(得分:1)
我曾假设Yii AR会通过Yii :: t运行getAttributeLabel。我不想在几十个模型上复制和粘贴所有内容,我将这个功能添加到我的中级AR类中:
public function getAttributeLabel($attribute)
{
$baseLabel = parent::getAttributeLabel($attribute);
return Yii::t(get_called_class(), $baseLabel);
}
现在编写一个shell命令,循环遍历模型并将其标签添加到消息文件中。