Je suis tombé sur le même problème.
par exemple i ont
en php
//Gives FORM_HEADER_ADD or FORM_HEADER_EDIT
echo $this->translate('FORM_HEADER_' . strtoupper($this->data));
Lorsque i synchronisation avec poedit il reprendra 'FORM_HEADER_' qui ne soit pas un identificateur i ai (généré) dans le code.
donc je devais résoudre le problème de mes identifiants donnant pleins Poedit je résolus qu'en procédant comme suit en php
echo ($this->data === 'add') ? $this->translate('FORM_HEADER_ADD') : $this->translate('FORM_HEADER_EDIT');
MISE A JOUR!
J'ai continué à chercher dans ce problème. Et j'ai actuellement abandonné l'importation de la source. Voilà comment je continue jusqu'à ce que je trouve une meilleure solution
- Construire l'application et utiliser autant d'identifiants statiques que possible.
activer l'enregistrement des identificateurs non traduites (dynamiques)
protected function _initMyTranslate(){
$date = new Zend_Date();
$fileName = sprintf('/../logs/translation_%1$s.log', $date->toString('dd-MM'));
$writer = new Zend_Log_Writer_Stream(APPLICATION_PATH . $fileName);
$log = new Zend_Log($writer);
// get the translate resource from the ini file and fire it up
$resource = $this->getPluginResource('translate');
$translate = $resource->getTranslate();
// add the log to the translate
$translate->setOptions(
array(
'log' => $log,
'logUntranslated' => true
)
);
// return the translate to get it in the registry and so on
return $translate;
}
Utilisation Poedit pour la synchronisation avec la source et traduire les chaînes qui sont trouvées.
- Pendant la phase de test/débogage, vérifiez le journal pour les chaînes non traduites.
Ajoutez les chaînes non traduites au fichier .po.
msgid "IDENTIFIER"
msgstr "TRANSLATION STRING"
Ouvrir le fichier po et de l'enregistrer pour créer le fichier mo (NE PAS AVEC SOURCE SYNC OU TOUT EST PERDU).
MISE À JOUR 2.
J'utilise maintenant un fichier séparé pour mes identifiants manuellement, à l'aide d'un éditeur de texte (gedit/bloc-notes). Maintenant, j'ai deux fichiers:
- généré automatiquement par poedit <langue> appelés .po
- fichier manuellement appelé editted <langue> _manual.po
i configuré mon traduire en application.ini à rechercher tous les fichiers dans le répertoire des langues
resources.translate.adapter = gettext
resources.translate.content = APPLICATION_PATH "/../library/languages/"
resources.translate.locale = auto ;use en to force english or nl for dutch..etc
resources.translate.scan = directory
resources.translate.options.disableNotices = false
si vous voulez traduire dans vers une autre langue dans poedit do fichier -> nouveau catalogue du fichier POT, et commencer à traduire vos chaînes ajoutées manuellement.
Je ne pouvais pas comprendre le problème. pouvez-vous le décrire plus clairement? – farzad