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

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

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

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

4 ответа

Решение

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

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

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

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

Другие вопросы по тегам