Zend_Translate: автоматическое извлечение строки из представлений - PullRequest
0 голосов
/ 19 марта 2011

Я не знаю, как автоматически извлечь строку для перевода в файлах.

Например, у вас есть макет и вы просматриваете некоторые echo $this->translate('my_string');, и я хочу создать файлы 'en_US.php', 'fr_FR.php', 'es_ES.php' со сравнительным массивом:

<?php return array('my_string' => 'translation of my string'); ?>

Возможно ли это?

Спасибо.

Ответы [ 3 ]

1 голос
/ 19 марта 2011

Да, это так.

Вставьте application.ini:

resources.translate.adapter = Array
resources.translate.locale = fr_FR
resources.translate.disableNotices = true
resources.translate.data = APPLICATION_PATH "/data"

и поместите файл fr_FR.php в каталог APPLICATION_PATH "/data".Должно работать.

Файл должен быть примерно таким:

return array (
   'Good day' => 'Bojour',
);
1 голос
/ 19 марта 2011

Посмотрите на адаптеры Zend_Translate и выберите один.Я настоятельно рекомендую адаптер gettext.

Вот как реализовать i18n в вашем приложении Zend Framework:

  1. Настройка адаптера перевода во время начальной загрузки
  2. Сохранение объекта адаптерав реестре с Zend_Registry :: set ('Zend_Translate', $ translate);
  3. Оберните весь текст в эквивалент $ translate-> translate ('Это переводимый текст');
  4. Установите 'gettext' на свой компьютер для разработки.
  5. Установите и настройте poEdit.poEdit просканирует ваше приложение и найдет все переводимые строки.Затем он сохранит их в файле .po, который можно редактировать и умножать для других языков.
  6. Когда вы закончите, сохраните его, и poEdit сохраняет файлы .mo.Адаптер gettext Zend_Translate нуждается в них.
0 голосов
/ 19 марта 2011

Использование PHP для перевода проекта удобно для небольшого проекта, и, следовательно, вам не нужны такие инструменты.

Существуют такие инструменты для gettext , как poedit , которые будут анализировать ваш проект и искать данную функцию / метод (translate()). POedit сгенерирует .po файл, который в основном состоит из простого / текстового файла, который выглядит следующим образом:

#: src/name.c:36
msgid "My name is %s.\n"
msgstr ""

Если вам действительно нужно использовать файл PHP для перевода, вы можете попробовать grep, sed, awk, что-то вроде этого должно дать отправную точку ( не проверено ) :

echo "return array(" > mytranslation.php | \
grep "translate(" * | \
cut -f1 | \
sed -r 's@.*translate\((.*)\).*@\1 => "Not translated yet",@' >> mytranslation.php && \
echo ");" >> mytranslation.php 
...