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

Другие вопросы по тегам