我有一个现有的多语言Django应用程序,我正在移植到Django 1.4.I18n支持目前基于一些丑陋的黑客,我想使用Django的内置i18n模块.
一个限制是我不想更改已经存在的URL.这个网站已经活跃了一段时间,并且有一些外部链接,我不想打破或重定向.网址方案的工作方式如下:英文内容位于网站的根目录,而其他语言则使用域名中的前缀:
英文网址:
/
/articles/
/suggestions/
Run Code Online (Sandbox Code Playgroud)
西班牙语网址:
/es/
/es/articulos/
/es/sugerencias/
Run Code Online (Sandbox Code Playgroud)
我已经将翻译后的页面与Django 1.4的i18n模块配合使用了,但它确实非常非常希望将所有英文网址放在/ en /下.我尝试了一些不同的黑客,包括为英文版定义非国际化的网址:
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)
Run Code Online (Sandbox Code Playgroud)
这使得网址正确解析,但执行反向解析的{%url%}标记不起作用.
完成非前缀英语网址的最佳方法是什么?