Перевод модели Django: хранить переводы в базе данных или использовать gettext?
Я нахожусь в процессе I18N веб-сайта Django.
Я выбрал два потенциально хороших django-приложения:
- http://code.google.com/p/django-modeltranslation/, которая изменяет схему БД для хранения переводов
- django-dbgettext, который проверяет содержимое базы данных для создания файлов.po и использует gettext
С вашей точки зрения, каковы плюсы и минусы этих двух методов?
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