我有一个现有的多语言Django应用程序,我将移植到Django 1.4。 I18n支持目前基于一些丑陋的黑客攻击,我想让它使用Django的内置i18n模块。Django i18n默认语言没有路径前缀
一个约束是我不想更改已经存在的URL。这个网站一直活跃一段时间,并有外部链接,我不'想要打破或重定向。网址方案是这样的:英文内容是网站的根本,而其他语言的使用前缀的域名:
英文网址:
/
/articles/
/suggestions/
西班牙语网址:
/es/
/es/articulos/
/es/sugerencias/
我已经有翻译过的页面与Django 1.4的i18n模块一起工作,但它确实真的想要将所有英文url放在/ 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%}标签做反向解析不起作用。
什么是最好的方式来完成非前缀的英语网址?
只是一个问题:就是你'_'非懒版FO gettext的?即''从django.utils.translation输入ugettext为_' –
不,这是懒惰的版本:django.utils.translation.ugettext_lazy –
你可以试试它与非懒惰版本,看看它是否工作? –