0

Comment puis-je traduire mes exceptions personnalisées, à l'intérieur de mon module/modèle? Quelle est la meilleure façon?Traduction d'exceptions de modèle dans php - Zf2 - Zend i18n - Poedit

1) Directement dans MyModelTableGetaway.php. exemple:

public function getAlbum($id) 
{ 
    $id = (int) $id; 
    $rowset = $this->tableGateway->select(array('id' => $id)); 
    $row = $rowset->current(); 
    if (!$row) { 
     throw new \Exception(__("Could not find row $id")); 
    } 
    return $row; 
} 

Et je vais dire à poedit de considérer tous à l'intérieur __()

2) Créez un dossier MyModel/langues/language_than_i_want et dans ce dossier, je peux mettre un fichier .php avec un tableau d'exceptions

Quoi de mieux et de plus rapide? Il y a d'autres méthodes?

Merci beaucoup

Répondre

1

je partirais avec faire Zend\I18n\Translator\Translator une dépendance de votre classe et à l'aide que. Vous pouvez définir que dans votre modèle/usine de services (peu importe la manière disposition objet), par exemple:

$translator = new Translator(); 
$translator->addTranslationFile('array', 'path/to/your/translation/array.php, '', 'de); 

Et l'utiliser dans votre classe:

if (!$row) { 
    throw new \Exception($translator->translate("Could not find row $id")); 
} 

Vous pouvez également remplacer l'exception modèle et utilisez l'assistant translator. Cela pourrait ne pas fonctionner tout le temps, cependant.

À part cela, vous auriez besoin de quelque chose pour alimenter le service de traduction. Je recommande le tableau de traduction, car il serait plus facile de travailler avec que gettext.

docs ou blogposts pertinents: