2010-12-29 3 views
6

Я ищу способ перевода моего проекта Django. Встроенный механизм, снабженный Django, замечательный, но имеет несколько слабых мест, которые заставляют меня искать альтернативу.Django i18n: есть ли альтернатива gettext?

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

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

_('form_sumbit_button') 

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

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

ответ

1

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

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

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

2

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

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

  1. Создать английский файл «перевод» (да, это работает)
  2. Пусть ваш proof- reader «translate» с английского на английский с помощью Pootle или любого другого инструмента
  3. Убедитесь, что ваши программисты не переводят этот файл перевода, обновляя строки в коде.
  4. (необязательно) Создайте способ развертывания переводов независимо от вашего основного кода, чтобы вы могли быстро установить опечатку.
0

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

Надежду, что кто-Виль счел полезным.

0

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

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