I can switch languages in my Django application by changing LANGUAGE_CODE in the Settings.py file for the application.
But I’m not sure where the actual text is coming from.
In path-to-django/contrib/auth/locale/, there are directories for many languages containing the translations of the text I’m displaying. But if I move an .mo file for a particular language to a new name, I still see text for that language — even after I restart Django. So where does the text actually come from?
Also, for the ‘en’ locale, the translated text is always “” (empty string). Does ugettext_lazy just return its input string in that case? If not, where does the English text come from?
It turns out there was a system-wide Django installation that was being used, rather than my local installation.
By creating a locale directory within my app, I’m able to override the strings used in the system-wide installation. I just modify the .po file there, and compile it.