Переводы gettext без развертывания для веб-приложений

Веб-приложение на основе Django, над которым я работаю, переведено на несколько разных языков. До сих пор мы использовали файлы gettext / PO для перевода статических файлов (текст в коде и шаблонах, статические страницы); Страницы и тексты CMS, хранящиеся в БД, переводятся через административные интерфейсы.

Эта стандартная настройка хорошо работает для нас, разработчиков, но не нравится нашим переводчикам, которые предпочли бы всегда использовать свои инструменты перевода (с файлами PO) вместо использования интерфейса администратора.

Теперь, когда все больше и больше нашего контента переносится из кода в базу данных, мы пытались использовать gettext для текстов, хранящихся в БД. Идея звучит неплохо, но рабочий процесс вокруг нее довольно громоздкий:

  1. Редактор меняет английский текст в админке
  2. Разработчик запускает команду для извлечения сообщений на хосте, который подключен к производственной БД.
  3. PO файл отправлен переводчикам
  4. После завершения перевода переводчик отправляет файл разработчикам.
  5. Разработчик компилирует файлы mo, проверяет их в кодовой базе и развертывает

Хотя некоторые шаги можно автоматизировать с помощью такой службы, как Transifex, я не посмотрим, как обойти последний шаг. Необходимость развертывания в результате изменения базы данных звучит неправильно.

Удалось ли кому-нибудь создать разумный рабочий процесс перевода на основе gettext для веб-приложений, который не требует развертывания?


person Pankrat    schedule 03.08.2012    source источник


Ответы (1)


Мы используем Django-rosetta (который имеет дополнительное преимущество, так как не заботится о том, откуда поступают записи PO ) для удовлетворения большинства наших потребностей в i18n. Что касается того, о чем вы спрашиваете, вот рабочий процесс, к которому мы пришли:

  1. Переводчик входит в rosetta через собственный административный интерфейс.
  2. Rosetta анализирует все файлы po и отображает страницу для редактирования переводов.
  3. Каждый раз, когда пользователь нажимает кнопку сохранения, rosetta перезапускается вместе с django, и все изменения теперь действуют и применяются.
  4. Если переводчик вернется к django, они увидят, как выглядят их новые строки
  5. Если переводчик предпочитает использовать собственное программное обеспечение для редактирования PO, он может, но тогда он должен предоставить нам новую версию, которую мы не одобряем.

Мы написали несколько сценариев, чтобы помочь нам с дополнительными этапами автоматизации, но эта настройка сработала исключительно хорошо. Мы даже интегрировали (после некоторых пользовательских изменений в код rosetta) нашу систему, не основанную на django, в rosetta для облегчения перевода.

person astevanovic    schedule 03.08.2012
comment
Спасибо за Ваш ответ. Вы используете ROSETTA_WSGI_AUTO_RELOAD для перезапуска? А вы автоматизировали процесс реинтеграции измененного извне PO-файла (пункт 5)? - person Pankrat; 03.08.2012
comment
Да, автоматическая перезагрузка - лучший вариант. У нас также было отдельное приложение на Python, генерирующее PO-файлы с помощью babel, и мы написали скрипт для извлечения / извлечения их из rosetta по мере необходимости (автоматически с помощью cron с резервными копиями). Аналогичным образом мы поступили и с iOS / Android. Конечно, они не могли видеть свои изменения на лету с приложениями, отличными от django, но, по крайней мере, они могли переводить, используя тот же рабочий процесс. - person astevanovic; 03.08.2012