如何在Yii中创建多语言标签

时间:2010-12-09 09:07:58

标签: php internationalization multilingual yii

我想知道Yii框架是否在多语言过程中使用定义的Labels atttributes。

所以,如果我有

 public function attributeLabels() {
        return array(
            'email' => 'Email address',
            'rememberMe' => 'Remember me next time',
            'password' => 'Password'
        );
    }

这会被翻译成其他语言吗?或者我是否必须手动执行某些操作?

3 个答案:

答案 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命令,循环遍历模型并将其标签添加到消息文件中。