I have a django-cms site, that uses i18n_patterns
in urls.py
. This works, urls are built like /lang/here-starts-the-normal/etc/
.
Now, I would like to have urls like this: /prefix-lang/here-starts...
. As there will be a couple of country specific domains, this wille be like /ch-de/here-...
for Switzerland/.ch domain, /us-en/here-starts....
for the states, and some more. So, when the url would be /ch-de/...
, the LANGUAGE
would still be de
. Hope this is clear?
As the content is filled with existing LANGUAGES=(('de', 'DE'), ('en', 'EN'), ...)
, I cannot change LANGUAGES
for every domain - no content would be found in the cms, modeltranslation, only to mention those two.
How can I prefix the language slug in i18n_patterns
? Is it possible at all?
I think a way without hacking Django too much would be to use URL rewrite facility provided by the webserver you run, for example, for mod_wsgi
you can use mod_rewrite, similar facility exists also for uWSGI
.
You may need to also post-process the output from Django to make sure that any links are also correctly re-written to follow the new schema. Not the cleanest approach but seems doable.