У меня есть многоязычное приложение Django, которое я переношу на Django 1.4. Поддержка I18n в настоящее время основана на некоторых уродливых хаках, я бы хотел, чтобы он использовал встроенные модули i18n Django.
Одно из ограничений заключается в том, что я не хочу менять URL-адреса, которые уже существуют. Этот сайт был активным некоторое время, и есть внешние ссылки на него, которые я не хочу ломать или перенаправлять. Схема URL-адресов работает следующим образом: английский язык находится в корне сайта, а другие языки используют префиксы в имени домена:
Английские URL:
/
/articles/
/suggestions/
Испанские URL:
/es/
/es/articulos/
/es/sugerencias/
У меня есть переведенные страницы, работающие с модулями Django 1.4 i18n, но на самом деле, действительно, действительно хочется поставить все английские URL под /en/. Я пробовал несколько разных хаков, включая определение неинтерминированных URL-адресов для английской версии:
def build(callback):
return callback('',
url(_(r'^$'), home.index, name="home"),
url(_(r'^articles/$'), content.article_list, name='article_list'),
url(_(r'^suggestions/$'), suggestions.suggestions, name='suggestions'),
)
urlpatterns = build(patterns)
urlpatterns += build(i18n_patterns)
Это делает правильные URL-адреса, но тэг {% url%} для обратного разрешения не работает.
Каков наилучший способ выполнения неперечисленных англоязычных URL-адресов?