2010-12-09 53 views
6

我在想如果Yii框架在多語言過程中使用定義的標籤屬性。如何在Yii中創建多語言標籤

所以,如果我有

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

這會不會被翻譯成其他語言?或者我必須手動執行某些操作?

回答

14

Yii不會自動翻譯它。您需要使用內置的Yii中的國際化和手動添加的翻譯和修改標籤如下:

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

那麼,你可以使用內置的翻譯系統來翻譯你的屬性標籤,例如:

public function attributeLabels() { 
    return array(
     'email' => Yii::t('myapp','Email address'), 
    ); 
} 

,然後在郵件文件夾爲你的語言創建一個目錄,例如:

messages\dk\myapp.php 

myapp.php應該返回翻譯,例如:

return array('Email address' => 'TRANSLATION...'); 

下一頁例如,您需要在配置文件中設置應用程序的語言。

'language' => 'dk', 
1

我原以爲的Yii AR會通過Yii :: t運行getAttributeLabel。不想做的一切,複製和粘貼的幾十種型號,我添加了這個功能,我中間AR類:

public function getAttributeLabel($attribute) 
{ 
    $baseLabel = parent::getAttributeLabel($attribute); 
    return Yii::t(get_called_class(), $baseLabel); 
} 

現在寫的是通過模型循環,並增加了他們的標籤消息文件shell命令。