Как сгенерировать файл перевода (.po, .xliff, .yml) из проекта Symfony2/Silex?

Я собираюсь создать проект Silex/Symfony2, и я искал способ создания файлов перевода XLIFF/PO/YAML на основе текстов, которые нужно перевести внутри проекта, но не нашел никаких инструкций или документации по нему.

Мой вопрос: Есть ли автоматизированный способ создания файлов перевода в определенном формате для проекта Symfony2/Silex?

Если да, подскажите, пожалуйста, как сгенерировать файл, а потом обновить перевод.

Если нет, подскажите, как создать файл(ы) перевода, а затем добавить больше текста для моего проекта? Я ищу настольный редактор или веб-редактор вместо обычного редактора, такого как Transifex, GetLocalization (но у них нет возможности создать новый файл или добавить больше текста)


person Michael Bui    schedule 22.04.2013    source источник


Ответы (3)


После долгих поисков в интернете я нашел хороший:

https://github.com/schmittjoh/JMSTranslationBundle

person Michael Bui    schedule 22.04.2013
comment
У меня есть файл .xlxs, который нужно преобразовать в .xliff. Вы знаете, как этого можно добиться? Спасибо. - person Matt Saunders; 27.10.2014
comment
Это не работает с Twig 2.0, пока JMS 1.3.1 - person Pmpr; 06.03.2017

Я вижу, вы нашли конвертер, но чтобы ответить на ваш первый вопрос о создании исходного файла перевода...

Если в вашей системе установлен Gettext, вы можете сгенерировать PO-файл из своего "текстового -быть-переведенным внутри проекта". Программа командной строки xgettext будет сканировать исходные файлы ищут любую функцию, которую вы используете.

Пример:
чтобы просканировать файлы PHP на наличие экземпляров метода trans, вызовите как показано здесь вы можете использовать следующую команду -

find . -name "*.php" | xargs xgettext --language=PHP --keyword=trans --output=messages.pot

На ваш вопрос о редакторах:
вы можете использовать любой редактор PO, например POEdit, для управления своими переводами. , но, как вы говорите, в конечном итоге вам нужно преобразовать файл PO в языковой пакет XLIFF или YAML для Symfony.

Я вижу, вы уже нашли конвертер. Вы также можете попробовать тот, который я написал для Loco. Он поддерживает PO в YAML и PO в XLIFF

person Tim    schedule 09.05.2013
comment
Я думаю, что невозможно обрабатывать синтаксис множественного числа symfonys с помощью xgettext. - person steven; 22.10.2015
comment
Это верно. Ограниченный синтаксис множественного числа Gettext не совместим с более выразительным синтаксисом Symfony. Вам придется встроить специальный синтаксис в фактические строки. Хотя это касается любого формата, который вы используете с Symfony, включая рекомендуемый формат XLIFF. - person Tim; 22.10.2015

Временное решение для занятых людей (UNIX)

Вы можете запустить следующую команду в Терминале:

$ grep -rEo --no-filename "'.+'\|\btrans\b" templates/ > output.txt

Это выведет список сообщений для перевода:

'Please provide your email'|trans
'Phone'|trans
'Please provide your phone number'|trans
...

Я имею в виду почти... Но обычно отсюда можно поработать...

Очевидно, вы должны настроить команду по своему вкусу (transchoice, двойные кавычки вместо одинарных...).

Не идеально, но может помочь!

grep вариантов

  • grep -R, -r, --recursive: прочитать все файлы в каждом каталоге, рекурсивно это эквивалентно опции -d recurse.
  • grep -E, --extended-regexp: интерпретировать PATTERN как расширенное регулярное выражение.
  • grep -o, --only-matching: Показать только ту часть совпадающей строки, которая соответствует ШАБЛОНУ.
  • grep -h, --no-filename: подавлять префикс имен файлов при выводе при поиске нескольких файлов.

(источник)

person eightyfive    schedule 08.06.2015