Я столкнулся с той же проблемой.
например у меня есть
в php
//Gives FORM_HEADER_ADD or FORM_HEADER_EDIT
echo $this->translate('FORM_HEADER_' . strtoupper($this->data));
Когда я синхронизируюсь с poedit, он выберет «FORM_HEADER_», который не является идентификатором, который я (сгенерировал) в коде.
Так что мне пришлось решить проблему, давая полные идентификаторы Poedit, я решил это, выполнив следующее в php
echo ($this->data === 'add') ? $this->translate('FORM_HEADER_ADD') : $this->translate('FORM_HEADER_EDIT');
UPDATE!
Я продолжал изучать эту проблему. И я в настоящее время отказался от импорта из источника. Так я продолжаю, пока не найду лучшее решение
- Создайте приложение и используйте как можно больше статических идентификаторов.
Включить ведение журнала непереведенных (динамических) идентификаторов
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;
}
Используйте Poedit для синхронизации с источником и перевода найденных строк.
- Во время фазы тестирования / отладки проверьте журнал на наличие непереведенных строк.
Добавить непереведенные строки в файл .po.
msgid "IDENTIFIER"
msgstr "TRANSLATION STRING"
Откройте файл po и сохраните его для создания файла mo (НЕ синхронизировать с источником или все потеряно).
ОБНОВЛЕНИЕ 2.
Теперь я использую отдельный файл для моих идентификаторов вручную с помощью текстового редактора (gedit / notepad). Теперь у меня есть два файла:
- Автоматически генерируется poedit под названием .po
- отредактированный вручную файл с именем _manual.po
я настроил свой перевод в application.ini для сканирования всех файлов в языковой директории
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
если вы хотите перевести на другой язык в файле poedit do -> новый каталог из файла POT, и начать переводить добавленные вручную строки.