Zend framework, gettext, poedit и человеческий язык, на котором написаны ключевые строки
Я пишу веб-сайт с использованием ZendFramework и решил использовать систему gettext для интернационализации своего контента. По моему мнению, я пишу строку на французском языке и на данный момент предоставляю только один файл "en.mo" для перевода предложений на английский. Я хотел бы избежать сохранения файла "fr.mo", который бы переводил только предложение в точно такое же предложение.
Есть ли способ сообщить Zend или gettext, что когда языковой стандарт - "fr" или "fr_FR", тогда нет необходимости искать файл перевода, и ключевая строка должна быть просто возвращена как есть? Или, может быть, есть причина для создания файла "перевода идентичности" fr.mo?
Ключевые цитаты из моего кода на данный момент:
Экстракт моего бутстрапа:
защищенная функция _initTranslations () { $ config = $ this-> getApplication () -> getOptions (); Zend_Locale:: SetDefault('ан'); // откат, если обнаружение не удалось полностью $locale = new Zend_Locale(); if (!in_array($locale->getLanguage(), explode(',',$config['available_translations']))) { $ Locale-> Setlocale ('ан'); // запрашиваемый язык недоступен => использовать английский } $ translate = new Zend_Translate (array ('adapter' => 'gettext', 'content' => APPLICATION_PATH. '/.. /languages / gda -'. $ locale-> getLanguage (). '. mo', 'locale' => $ locale)); $ Translate-> Setlocale ($ локали); $ This-> самозагрузки ('вид'); $ This-> getResource ('вид') -> getHelper ('перевести') -> setTranslator ($ перевод); }
содержание /languages /:
gda-en.mo gda-fr.mo <== это я бы хотел избежать
Спасибо
1 ответ
Fluxine,
При использовании адаптера gettext Zend_Translate
, тебе понадобится:
- gda.pot, содержащий все ваши msg-id (в вашем случае на французском)
gda-fr.po
содержащий, по крайней мере, один перевод для генерацииgda-fr.mo
(который будет почти пустым...)- некоторые другие файлы перевода
gda-en.po
генерироватьgda-en.mo
gda-de.po
генерироватьgda-de.mo
- ....
gda-XX.po
генерироватьgda-XX.mo
Важный факт здесь:
Ваш "перевод личности", как вы его называете, должен существовать, иначе Zend будет жаловаться на то, что "fr" (в вашем случае) недоступен
В poEdit просто переведите одну маленькую строку в ту же строку, сгенерируйте соответствующий *.mo
файл, сохраните его и забудьте об этом.
Вам не нужно будет обновлять свой gda-fr.po
файл больше, ни восстановление обновленного gda-fr.po
файл.
Адаптер вернет оригинальную французскую строку, потому что для него нет перевода в gda-fr.mo