Django model translation: хранить переводы в базе данных или использовать gettext?

Я нахожусь в процессе i18n веб-сайта django.

Я выбрал два потенциально хороших django-приложения:

  • django-modeltranslation который изменяет схему БД для хранения переводов
  • django-dbgettext который проверяет содержимое БД создать .po-файлы и использует gettext

с вашей точки зрения, каковы плюсы и минусы этих двух методов ?

4 ответов


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

Если вы вместо этого хотите большего контроля качества (контроль версий, несколько наборов глаз и т. д.), Используйте gettext. Используя gettext, вы также можете контролировать, какие строки вы хотите перевести.

просто мой 2c.


django-modeltranslation лучше всего подходит для хранения переведенного значения. вы перейдете к django-admin и поставите переведенное значение.

но если вы используете django-dbgettext, тогда вам не нужно вводить какое-либо значение в django-admin, для этого вы можете использовать rosetta. Если вы не можете найти какое-либо значение для перевода, и вы хотите его перевести, то вы можете сделать запись модели в "*dbgettext_registration.py* "и запустить команду" python manage.py dbgettext_export "тогда" python manage.py compilemessages".


http://packages.python.org/django-easymode/ объединяет два:

http://packages.python.org/django-easymode/i18n/index.html

http://packages.python.org/django-easymode/i18n/translation.html

Gettext используется для перевода больших объемов данных, а администратор используется для ежедневных обновлений.


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

этот пакет выглядит простым и расширяемым:https://github.com/ecometrica/django-vinaigrette