I've encountered a strange problem when translating strings (in the admin) using django's gettext
: Locally running the dev server all translations are displayed correctly in the admin, but when the project is deployed on the production server some strings are not translated at all. I cannot determine any system behind which strings are affected and which not!
To give you an impression, eg. a model is defined like:
class Company(models.Model):
....
class Meta:
verbose_name = _('Company Profile')
verbose_name_plural = _('Company Profiles')
Using dev server the model's name shows up correctly in different languages in the admin, on the production server not! This affects some models, others not... This is driving me really nuts, since I hardly have a idea on how to debug this...
A few possibilities:
fuzzy
ugettext
instead of ugettext_lazy
I had a similar problem and apart from what Tomasz Zielinski pointed out I had to make the following changes:
in settings.py
LOCALE_PATHS = (
"/path/to/your/project/locale",
)
Remember the trailing slash and make sure that the directory structure looks something like:
project
your_app
your_other_app
locale
en_US
LC_MESSAGES
sv_SE
LC_MESSAGES
If you are developing on Windows and the production instance is Linux, then the problem might be: Windows is not case sensitive while Linux is case sensitive, in terms of naming of file paths.
For example, a locale folder name should be:
zh_Hans
instead of zh_hans
pt_BR
instead of pt_br
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With