django CMS excels in its multilingual support, and can be configured to handle a vast range of different requirements. Its
behaviour is flexible and can be controlled at a granular level in
CMS_LANGUAGES. Other Internationalisation and localisation (I18N and L10N) settings offer further control.
See How to serve multiple languages on how to set up a multilingual django CMS project.
Multilingual URLs require the use of
i18n_patterns(). For more information about this see
the official Django documentation
on the subject. Multilingual URLs describes what you need to do in a django CMS project.
How django CMS determines which language to serve#
django CMS uses a number of standard Django mechanisms to choose the language for the user, in the following order of preference:
language code in the URL - for example,
http://example.com/de(when multilingual URLs are enabled)
language stored in the browsing session
language stored in a cookie from a previous session
language requested by the browser in the
LANGUAGE_CODEin the site’s settings
More in-depth documentation about this is available at https://docs.djangoproject.com/en/dev/topics/i18n/translation/#how-django-discovers-language-preference