Hi everybody, we just finished developing a major multi-language site for a customer. In the course of this development, we run into two issues with the PO files which I haven't been able to find either on the mailing list or in the bug tracker so I'll raise them here:
We're using country-specific translations as well as a fallback translation, for instance "de-de" (Germany) and "de-ch" (Switzerland) as well as the global "de" (German) translation. In case the country-specific translation doesn't exist or does not contain a certain string, it should fall back to the global version. However, while django.utils.translation.trans_real talks about fallbacks (for instance here: https://github.com/django/django/blob/master/django/utils/translation/trans_real.py#L142), the actual fallback does not happen. If the country-specific locale does not exist, the global version is not being used either. We solved it with this middleware: from django.middleware.locale import LocaleMiddleware from django.utils.translation.trans_real import _translations, translation class FallbackLocaleMiddleware(LocaleMiddleware): def process_request(self, request): super(FallbackLocaleMiddleware, self).process_request(request) if '-' in request.LANGUAGE_CODE: trans = _translations[request.LANGUAGE_CODE] if not trans._fallback: trans.add_fallback(translation(request.LANGUAGE_CODE.split('-', 1)[0])) I think the culprit is this line: https://github.com/django/django/blob/master/django/utils/translation/trans_real.py#L177 Shouldn't this rather be something along the lines of: if '-' in language: default_translation = _fetch(language.split('-')[0]) or _fetch(settings.LANGUAGE_CODE) else: default_translation = _fetch(settings.LANGUAGE_CODE) I might be misunderstanding the Django translation logic so I wanted to raise this issue here before filing a ticket. Feedback is very welcome. Cheers, Jonas -- You received this message because you are subscribed to the Google Groups "Django developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-developers+unsubscr...@googlegroups.com. To post to this group, send email to django-developers@googlegroups.com. Visit this group at http://groups.google.com/group/django-developers. For more options, visit https://groups.google.com/groups/opt_out.