Django I18N со сторонними приложениями
У меня есть проект Django, который использует django-tagging
и должен работать на немецком языке. Поэтому я просмотрел источники и обнаружил, что django-tagging
действительно использует gettext_lazy
и, таким образом, полностью переводится. Однако в пакете нет переводов. Поэтому я предполагаю, что для меня должен быть способ перевести его из моего проекта.
Другими словами, я ожидаю, что ./manage.py makemessages -a
будет включать нетранслируемые строки из django-tagging
, но, видимо, я ошибаюсь, чтобы ожидать этого.
Итак, как мне правильно управлять этой ситуацией? Будет ли перевод django-tagging
в работу репозитория вверх по течению, как ожидалось?
Ответы
Ответ 1
Вы можете создавать gettext-сообщения в каталоге django-tagging и вносить переводы в лидера проекта:
django-admin.py makemessages -l de
Если вы хотите создать каталог сообщений в своем каталоге проекта, вы должны установить или использовать приложение symlink (check -S option makemessages) в каталоге проекта. Затем используйте команду manage.py makemessages, как указано выше.
Если вы хотите увидеть более подробную информацию о переводе приложений третьей части, пожалуйста, проверьте:
http://source.mihelac.org/2010/07/31/handling-i18n-in-django-projects/
Ответ 2
В моем каталоге проектов я делаю символическую ссылку на это стороннее приложение и запускаю команду makemessages с опцией -symlinks:
../manage.py makemessages -l nl --symlinks
тогда я удаляю свою символическую ссылку
Ответ 3
Подробно:
ln -s full/path/to/installed/app/folder path/to/folder/with/symlinks/in/your/project
а затем запустить
django-admin.py makemessages --locale=*lang* --symlinks
например, если я хочу перевести django-tagging
:
ln -s /home/user/python_projects/agregator_gitlab/venv/lib/python3.6/site-packages/tagging /home/user/python_projects/agregator_gitlab/agregator/site_aggregator_backend/extra-locales/tagging
(мой manage.py находит agregator/site_aggregator_backend/manage.py
)
и
django-admin.py makemessages --locale=uk --symlinks
и все работает отлично!