2010-12-09 41 views
6

Je me demande si le framework Yii utilise les attributs attachés Labels définis dans un processus multilingue.Comment créer une étiquette multilangue dans Yii

Donc, si je

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

Est-ce que cela se traduire à une autre langue? Ou dois-je faire quelque chose manuellement pour travailler?

Répondre

14

Yii ne se traduit pas automatiquement. Vous devez utiliser le i18n intégré dans Yû et ajouter manuellement les traductions et modifier les étiquettes comme suit:

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

Vous pouvez obtenir plus d'informations sur vous internationaliser l'application à Quick Start to Internationalize your application in Yii Framework

1

Eh bien, vous pouvez utiliser le système de traduction intégré pour traduire vos étiquettes d'attributs, par exemple:

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

puis dans les messages dossier, créez un répertoire pour votre langue, par exemple:

messages\dk\myapp.php 

myapp.php doit retourner la traduction, par exemple:

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

Suivant vous devez définir la langue de votre application dans le fichier de configuration par exemple.

'language' => 'dk', 
1

J'avais supposé que Yû AR exécuterait getAttributeLabel via Yii :: t. Ne voulant pas faire tout ce que copier et coller sur des dizaines de modèles, j'ai ajouté cette fonction à ma classe intermédiaire AR:

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

maintenant d'écrire une commande shell qui boucle à travers les modèles et ajoute leurs étiquettes au fichier de message .