Django i18n: есть ли альтернатива gettext? - PullRequest
6 голосов
/ 29 декабря 2010

Я ищу способ перевести мой проект Django. Встроенный механизм, поставляемый с Django, великолепен, но имеет несколько слабых мест, которые заставили меня искать альтернативу.

Владелец проекта должен иметь возможность редактировать каждый перевод, включая английский (оригинальный перевод). С помощью gettext можно редактировать переводы с помощью таких инструментов, как Pootle , но исходные строки остаются жестко закодированными внутри файловых источников или шаблонов. Владелец продукта не может их изменить.

Возможное решение - заставить gettext перевести некоторые уникальные идентификаторы и просто перевести их на все языки, включая английский, например:

_('form_sumbit_button')

Но из-за этого такие инструменты, как pootle, практически невозможно использовать для переводчиков.

Вопрос: Существуют ли какие-либо инструменты для перевода проектов Django, которые могли бы соответствовать моим потребностям?

Ответы [ 4 ]

2 голосов
/ 30 декабря 2010

Если вы используете некоторые идентификаторы сообщений, они либо будут непонятны ("message_2215"), либо вам придется синхронизировать идентификаторы сообщений с реальными сообщениями ("Пожалуйста, нажмите любую клавишу" = "please_press_any_key" => "Любой ключ для продолжения "=" any_key_to_continue "). В любом случае, реальные строки лучше для программистов и для инструментов.

Однако, если вы используете отдельный корректор для ваших строк, вы можете сделать следующее:

  1. Создать файл английского "перевода" (да, это работает)
  2. Пусть ваш корректор "переводит" с английского на английский с помощью Pootle или любого другого инструмента
  3. Убедитесь, что ваши программисты не переводят этот файл перевода, обновляя строки в коде.
  4. (необязательно) Создайте способ развертывания переводов независимо от основного кода, чтобы вы могли быстро исправить опечатку.
1 голос
/ 29 декабря 2010

Вы можете использовать Pootle с подходом _ ("message_id"), в зависимости от того, насколько легко настроить Pootle (я не знаю, что такое внутреннее устройство, поэтому не могу сказать, но IIUC использует Django, где templateизменения обычно просты).

Например, экраны перевода Pootle имеют разделы «Оригинал» и «Перевод»;Вы могли бы, возможно, адаптировать шаблоны, чтобы в разделе «Оригинал» отображался раздел «Справочник», в котором отображается некоторый канонический перевод с использованием определенного языка ссылок (например, английского).

Или вы можете использовать Pootle's альтернативный исходный язык функциональность, без необходимости настройки Pootle.Вы можете хранить канонические версии переводов, используя неиспользованный языковой код (или вымышленный).

0 голосов
/ 30 июня 2015

Использование идентификаторов определенно возможно с Gettext, и есть инструменты, которые поддерживают это. Однако это может быть необычно для некоторых переводчиков, поскольку они используют для загрузки только .po-файл для автономного перевода, что не работает с одноязычными переводами.

Например, Weblate прекрасно поддерживает одноязычные файлы Gettext (я автор этого инструмента): https://docs.weblate.org/en/latest/formats.html#monolingual-gettext

0 голосов
/ 01 июня 2015

У меня была такая же проблема, и я не нашел никакого стороннего решения, поэтому я написал эту библиотеку: https://github.com/fabiocaccamo/django-kway

Надеюсь, что кто-то найдет это полезным.

...