Django documentation states:
The caveat with using variables or computed values, as in the previous
two examples, is that Django’s translation-string-detecting utility,
django-admin.py makemessages, won’t be able to find these strings.
That is fine with me, I’m ready to provide translations for all possible values of the translated variable by hand. But how to do that?
Let’s say I have in my template code like this:
{% trans var %}
The var is extracted from the database, and I know all of the possible values of it – let’s say the possible values are “Alice” and “Bob”.
I thought all I need to do is provide entries like these:
msgid "Alice"
msgstr "Alicja"
in django.po file. Unfortunately, whenever i run djangoadmin makemessages after that, these entries are being commented out:
#~ msgid "Alice"
#~ msgstr "Alicja"
What am I doing wrong? Have I misunderstood the idea of translating computed values?
We’re currently in the process of figuring this out as well. While we haven’t done so properly, we do have a rather annoyingly ugly hack to get around it.
We simply define a “dummy” function somewhere in the code (for example your models.py or even settings.py) and fill it up with all the strings that we need to have a translation for.
This function is never called but simply defining it prevents the message strings from getting commented out by makemessages.
Not the most elegant solution but it works.