2010-12-09 12 views
6

Ich frage mich, ob das Yii-Framework die definierten Labels attributes in einem mehrsprachigen Prozess verwendet.Wie erstelle ich ein mehrsprachiges Label in Yii

Also, wenn ich

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

Wird dies auf eine andere Sprache übersetzt werden? Oder muss ich manuell etwas tun, um zu arbeiten?

Antwort

14

Yii übersetzt es nicht automatisch. Sie müssen die i18n eingebaut in Yü verwenden und manuell die Übersetzungen hinzufügen und die Etiketten wie folgt zu ändern:

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

können Sie erhalten mehr Informationen über Sie App Quick Start to Internationalize your application in Yii Framework

1

Nun können Sie das integrierte Übersetzungssystem benutzen, um Ihre Attribute Etiketten zu übersetzen, zum Beispiel:

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

und dann in Nachrichten erstellen Ordner ein Verzeichnis für Ihre Sprache, zum Beispiel:

messages\dk\myapp.php 

myapp.php Übersetzung zurückkehren sollte, zum Beispiel:

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

Weiter Sie müssen zum Beispiel die Sprache Ihrer Anwendung in der Konfigurationsdatei einstellen.

'language' => 'dk', 
1

ich angenommen hatte, dass Yü bei internationalisieren AR würde getAttributeLabel durch Yii :: t laufen lassen. Viele wollen nicht alle tun, die kopieren und Einfügen auf Dutzenden von Modellen, habe ich diese Funktion zu meiner Zwischen AR-Klasse:

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

nun einen Shell-Befehl zu schreiben, die die Modelle Schleifen durch und fügt ihre Etiketten in die Nachrichtendatei .