[Fixed]-Django: default language i18n


Default language strings are not stored in po/mo files, they go directly in code and templates – seems that you have this right.

You can switch back to it, by setting the session variable django_language back to dutch.

Ensure, that you have your settings set the right way:

LANGUAGE_CODE = 'nl' #default language

  ('nl', _('Dutch')),
  ('fr', _('French')),

Don’t forget, that you don’t have to write code to switch between languages by your self. Better to use special django view (quote from django book):

As a convenience, Django comes with a view, django.views.i18n.set_language, that sets a user’s language preference and redirects back to the previous page.

Activate this view by adding the following line to your URLconf:

(r'^i18n/', include('django.conf.urls.i18n')),


this question and answers could be helpful – set language within a django view

Don’t forget to use translation.activate(lang_code), this is really important.

You can use standard way to change languages with the post method or write your own middleware and change it for example in the url then.



If you use {% url web-language 'nl-nl' %} like this 'nl-nl' is in your args (args[0]), not in your kwargs. For kwargs you should use syntax like {% url web-language language='nl-nl' %}. Then your view should work. Hopefully your urlconf matches the way the view is dealing with it.

Leave a comment