我有一个现有的多语言 Django 应用程序,我正在移植到 Django 1.4。I18n 支持目前基于一些丑陋的 hack,我想让它使用 Django 的内置 i18n 模块。
一个限制是我不想更改已经存在的 url。该站点已经活跃了一段时间,并且有指向它的外部链接,我不想中断或重定向。urls 方案是这样工作的:英文内容位于网站的根目录,而其他语言在域名中使用前缀:
英文网址:
/
/articles/
/suggestions/
西班牙语网址:
/es/
/es/articulos/
/es/sugerencias/
我已经得到了使用 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)
这使得 url 可以正确解析,但是用于反向解析的 {% url %} 标记不起作用。
完成无前缀英文网址的最佳方法是什么?