问题
I have a Django project which uses django-tagging
and is supposed to run in German. So I looked into the sources and found that django-tagging
does indeed use gettext_lazy
and is thus completely translatable. However, there are no translations available in the package. So I assume there must be a way for me to translate it from within my project.
In other words, I expect ./manage.py makemessages -a
to include untranslated strings from django-tagging
, but apparently I'm wrong to expect that.
So, how do I manage this situation properly? Will translating django-tagging
in the upstream repository work as expected?
回答1:
You can create gettext messages in django-tagging directory and contribute translations to project leader:
django-admin.py makemessages -l de
If you want to create message catalog in your project directory, you should install or symlink app (check -S option of makemessages) in your project directory. Then use manage.py makemessages command as above.
If you want to see more details about translating 3rd part apps, please check:
http://source.mihelac.org/2010/07/31/handling-i18n-in-django-projects/
回答2:
Within my project directory I make a symlink to that third party app and run my makemessages command with the '--symlinks' option:
../manage.py makemessages -l nl --symlinks
then I remove my symlink
回答3:
Detailed:
ln -s full/path/to/installed/app/folder path/to/folder/with/symlinks/in/your/project
and then run
django-admin.py makemessages --locale=*lang* --symlinks
for instance if i want translate 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
(my manage.py locates agregator/site_aggregator_backend/manage.py
)
and
django-admin.py makemessages --locale=uk --symlinks
and all work perfectly!
来源:https://stackoverflow.com/questions/3933824/djangos-i18n-with-third-party-apps