相关疑难解决方法(0)

Django i18n没有路径前缀的默认语言

我有一个现有的多语言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%}标记不起作用.

完成非前缀英语网址的最佳方法是什么?

django internationalization

15
推荐指数
3
解决办法
9971
查看次数

使用翻译后的 url 重定向在 Django 中切换语言

我已经正确安装了国际化。

它适用于以下网址:

/en/bookings/ #English
/es/reservas/ #Spanish
Run Code Online (Sandbox Code Playgroud)

在主页中,语言切换也能正常工作。

- 有什么问题吗?

当我更改翻译页面中的语言时,例如 /en/bookings/,如果我将语言转换为西班牙语 (es),我将再次重定向到 /en/bookings/ 并看到英文页面。

如果我更改前缀(如这个答案),重定向将转到不存在的 /es/bookings/ 。

我不想被重定向到主页。

- 我喜欢什么?

如果我在 /en/bookings/ 并切换到西班牙语,我想重定向到 /es/reservas/,所有翻译的 url。

什么是最好的方法?

谢谢。

django url internationalization

4
推荐指数
2
解决办法
5094
查看次数

标签 统计

django ×2

internationalization ×2

url ×1