This always confuses me - the language code is always lower case according to the docs. Which is specified in the settings - language codes or locales? I've always assumed the former.
locale nameA locale name, either a language specification of the form ll or a combined language and country specification of the form ll_CC. Examples: it, de_AT, es, pt_BR. The language part is always in lower case and the country part in upper case. The separator is an underscore.language codeRepresents the name of a language. Browsers send the names of the languages they accept in the Accept-Language HTTP header using this format. Examples: it, de-at, es, pt-br. Both the language and the country parts are in lower case. The separator is a dash. On Friday, 20 June 2014 08:47:13 UTC-4, Vernon D. Cole wrote: > > (*cough*) > Excuse me, everyone, but many of the locale names mentioned in this > discussion have been invalid. > > https://docs.djangoproject.com/en/1.6/topics/i18n/#term-locale-name says: > >> locale nameA locale name, either a language specification of the form ll >> or a combined language and country specification of the form ll_CC. >> Examples: it, de_AT, es, pt_BR. The language part is always in lower >> case and the country part in upper case. The separator is an underscore. > > > so 'en-gb' should not be recognized. > 'en_GB' ought to be. > > > On Thursday, June 19, 2014 3:18:32 PM UTC+1, Stodge wrote: >> >> My problem seems to be this: >> >> * run custom management command >> * activate language from settings, which is "en-gb" >> * dynamically import module for a Django app and invoke custom bootstrap >> function >> * calling get_language() in bootstrap function returns "en-gb" >> * bootstrap function calls loaddata management command (using >> management.call_command) >> * data created in DB, which triggers a post_save signal >> * get_language() in post_save signal always returns "en-us" >> >> >> >> >> On Wednesday, 18 June 2014 12:48:47 UTC-4, Stodge wrote: >>> >>> My settings for languages are: >>> >>> LANGUAGE_CODE = 'en' >>> >>> USE_I18N = True >>> LANGUAGE_COOKIE_NAME='django_language' >>> ugettext = lambda s: s >>> LANGUAGES = ( >>> ('en', ugettext('English')), >>> ('de', ugettext('German')), >>> ('fr', ugettext('French')) >>> ) >>> >>> >>> I have a post-save signal that creates instances of a model and gets the >>> current Django language. The language returned is for some reason "en-us", >>> but I have no idea where this is coming from. My default as shown above is >>> "en". get_language() is called from within a signal so the language isn't >>> being taken from a cookie or request header. Any ideas why Django thinks >>> the current (default) language is "en-us"? Thanks >>> >>> -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/68c48096-2929-49e4-afe8-af5f172f61b5%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.

