Перевод модели Django: хранить переводы в базе данных или использовать gettext? - PullRequest
9 голосов
/ 19 апреля 2010

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

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

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

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

Ответы [ 4 ]

8 голосов
/ 19 апреля 2010

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

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

Просто мой 2с.

4 голосов
/ 11 января 2013

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

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

1 голос
/ 02 февраля 2011

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 используется для перевода большого количества данных, а администратор используется для ежедневных обновлений.

0 голосов
/ 06 июля 2018

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

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

...