Me encontré con el mismo problema.
por ejemplo He
en php
//Gives FORM_HEADER_ADD or FORM_HEADER_EDIT
echo $this->translate('FORM_HEADER_' . strtoupper($this->data));
Cuando i sincronía con poedit será recoger 'FORM_HEADER_' que no es un identificador que he (generado) en el código.
así que tuve que solucionar el problema dando mis identificadores completos Poedit He resuelto que al hacer lo siguiente en php
echo ($this->data === 'add') ? $this->translate('FORM_HEADER_ADD') : $this->translate('FORM_HEADER_EDIT');
ACTUALIZACIÓN!
Seguí investigando este problema. Y actualmente renuncio a la importación desde la fuente. Así es como continúo hasta que encuentre una mejor solución
- Cree la aplicación y use tantos identificadores estáticos como sea posible.
habilitar el registro de identificadores no traducidas (dinámicos)
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;
}
Uso Poedit para sincronizar con fuente y traducir las cadenas que se encuentran.
- Durante la fase de prueba/depuración, compruebe el registro de cadenas no traducidas.
Agregue las cadenas sin traducir al archivo .po.
msgid "IDENTIFIER"
msgstr "TRANSLATION STRING"
archivo po abierto y guardarlo para crear el archivo MO (NO sincronización con la fuente o todo está perdido).
ACTUALIZACIÓN 2.
Ahora uso un archivo separado para mis identificadores manuales, mediante el uso de un editor de texto (gedit/bloc de notas). Ahora tengo dos archivos:
- auto generada por poedit llamados <lenguaje> .po
- editted manualmente archivo llamado <lenguaje> _manual.po
i configurado mi traducirá en application.ini a buscará todos los archivos en el directorio de idioma
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 desea traducir en a otro idioma en poedit do file -> nuevo catálogo del archivo POT, y comienza a traducir las cadenas añadidas manualmente.
que no podía entender el problema. ¿Puedes describirlo más claro? – farzad