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