2013-06-08 2 views
0

Situation
En supposant que nous avons la classe suivante:Comment stocker des chaînes (c'est-à-dire des constantes de classe) pour les garder localisables?

<?php 
class User { 
const STATUS_NEW = 0; 
const STATUS_DELETED = 1; 

public static $aStatuses = array(
    self::STATUS_NEW  => 'New', 
    self::STATUS_DELETED => 'Deleted' 
); 

// ... 
} 
?> 

Question
Comment faire chaîne New et Deleted prête pour la localisation (en utilisant gettext dans l'exemple)?

Solution possible?

... 
public static function getStatuses() { 
    return array(
    self::STATUS_NEW  => _('New'), 
    self::STATUS_DELETED => _('Deleted') 
); 
} 

mais en quelque sorte, je me sens qu'il ya une façon plus élégante de le faire.

Répondre

0

Je pense qu'il ya deux façons graves:

1) en utilisant gettext et po-fichiers que vous éditez facilement avec po-modifier

2) en utilisant des tableaux pour lokalization:

// lang.english.php 
$text_arr['new'] = "New"; 

// lang.german.php 
$text_arr['new'] = "Neu"; 

Et puis incluez le fichier de langue spécifié par l'utilisateur. Dans le code lui-même, vous n'utilisez que la variable

Pour moi-même, je préfère les fichiers gettext et po sur tableau car ils sont beaucoup plus utilisables lors de la manipulation des langues. Surtout que votre traducteur n'a pas besoin d'écrire le code source.

Les deux versions sont presque les mêmes en termes de performances. J'ai lu un article il y a un moment. Quand je rentrerai à la maison demain soir, je peux jeter un coup d'oeil dans mon bookmarkmarks et le poster ici. Ou vous pouvez google.

+0

merci pour votre réponse. Je pense que vous avez mal compris cette pensée. J'utilise 'gettext' - chose que je ne peux utiliser aucune fonction (dans ce cas, la fonction gettext) dans la déclaration constante. – Wiktor

Questions connexes