21đź‘Ť
Have you manually translated the string in the .po ?
makemessages
just adds “carro” to the .po, generating something like this in the .po file
#: idioma.html:45
msgid "carro"
msgstr ""
and then you have to edit the .po manually adding the translation for that string, in this way:
#: idioma.html:45
msgid "carro"
msgstr "car"
Then, when you are done translating all the .po strings, you can run compilemessages
: it will compile your translations.
Note: always remember to look for ,fuzzy
translations.
If you have something like this in your .po
#: idioma.html:45
#, fuzzy
msgid "carro"
msgstr "car"
That means that django, for some reason, tried to translate the string by itself (it usually happens when you already used that string in a piece of code that you aren’t using anymore).
You have to review the translation and delete the #, fuzzy
line: any translation tagged with #, fuzzy
won’t be translated in your pages.
14đź‘Ť
I ran into a similar problem and was able to resolve it by setting LOCALE_PATHS
in my settings file. LOCALE_PATHS
is a tuple of directory paths where django looks for .mo and .po files. Here’s an example:
# settings.py
LOCALE_PATHS = (
'/path/to/your/project/locale',
)
Read django’s official documentation on LOCALE_PATHS
for more information.
- Django Rest Framework custom POST URL endpoints with defined parameter (request.POST) with Swagger or other doc
- How to share session between two django application?
2đź‘Ť
I tracked the code whole night and found some clues. Mainly in trans_real.py and gettext.py. You can put a breakpoint in “translation” function.
- The translation code are executed only once when app starts. So you
need to reload the uwsgi to load the new version. - Po file is never used. gettext.py use “mo” file only.(in my laptop).
So you have to compile messages after changing. - The “-” in the language code will be converted to “_” in locale
path. For example “zh-CN” will be converted to “zh_CN”. That’s why
the translation file cannot be found. I think it will be better if
just using two characters as the language code. And the case
sensitive should be considered in Linux system.
- In Django loaddata it throws errors for json format but work properly for yaml format, why?
- Buildout vs virtualenv + pip for django?
- Pycharm is not recognizing django, even though it is installed correctly. Why?
1đź‘Ť
In some cases {% trans "your string " %}
doesn’t work.
I recommend you to use blocktrans
instead of trans for strings.
How to use blocktrans:
{% blocktrans %} your string {% endblocktrans %}
- How to change form layouts in Django 1.8
- Django rest framework cache policy
- Dynamically filter ListView CBV in Django 1.7
0đź‘Ť
I had kind of the same issue. I explained it with details in this link under another similar question.
Briefly, my problem has been solved by reloading the server with this code:
sudo /etc/init.d/uwsgi reload
Now, everytime I change the phrases and after compiling language files, I reload the server too to see the changes.
I hope this solves some one’s problem.
- Django object is not JSON serializable error after upgrading django to 1.6.5
- Django and multi-stage servers
- How to share session between two django application?
- How do I use request.META.get('HTTP_REFERER') within template?