How can I collect translation strings outside of my project folder using Django's built-in makemessages
facility? The management command makemessages
is very convenient and I'd like to use it for applications located in site-packages.
Django makemessages for apps in site-packages
Asked Answered
Other than makemessages I found PyBabel very useful. Here is a bind to Django itself: http://babel.edgewall.org/wiki/BabelDjango
(1) Activate a virtual environment where Django is installed.
(2) Go directory of the app for which you want the messages to be generated:
$ cd path/to/app/in/site/packages/
(3) Make sure it has "locale" directory. If not - make one.
$ mkdir locale
(4) From your app directory run the following command:
$ django-admin.py makemessages -l [LANGUAGE_CODE]
Example for Dutch:
$ django-admin.py makemessages -l nl
Example for Russian:
$ django-admin.py makemessages -l ru
I'm not sure this is what the OP asks, does this collect strings outside of the project? As far as I know, this will just collect strings from html, txt, and py files inside of the project or app. –
Overshine
Yes, it does collect strings from the package you are running it from. That's why we have
cd path/to/app/in/site/packages/
. –
Contrail Other than makemessages I found PyBabel very useful. Here is a bind to Django itself: http://babel.edgewall.org/wiki/BabelDjango
With symbol links (ln -s) but it's not very convenient. Usually if the apps are on PYTHONPATH shouldn't the translations folders be catched by makemessages ?
Now I do use symlinks but that's an ugly workaround. It's hard-coded in makemessages.py to find files in the current working directory, it skips PYTHONPATH. –
Churchgoer
When using symlinks remember to add the
--symlinks
option to makemessages
–
Overshine © 2022 - 2024 — McMap. All rights reserved.