【问题标题】:How to change language from Django URL?如何从 Django URL 更改语言?
【发布时间】:2011-03-01 22:58:03
【问题描述】:

当用户在 url 中引入语言环境时,我想更改语言,例如 http://example.com/es/http://example.com/es/article-namehttp://example.com/en/

我该怎么做?

【问题讨论】:

标签: python django localization internationalization


【解决方案1】:

现在最好的方法是在 url 模式中使用内置语言前缀: https://docs.djangoproject.com/en/1.8/topics/i18n/translation/#language-prefix-in-url-patterns

【讨论】:

    【解决方案2】:

    结帐django-locale-url

    它提供了一个完全符合您要求的中间件,因此您无需检查 urls.py 中的语言

    【讨论】:

    • 但我听说 localeurl 猴子补丁核心 django 功能。这对我来说是个大问题。
    • 该中间件目前未维护,在 django 中有一个内置选项,带有 url 模式中的语言前缀
    【解决方案3】:

    我想到了很多方法来做到这一点。可以说,最“符合标准”的方式是使用 HTTP Accept-Language 标头,该标头可用于作为 request.META['HTTP_ACCEPT_LANGUAGE'] 的视图来确定用户更喜欢接收资源的语言,并在适当的语言。

    另一种常见的方式,更符合您所描述的内容,是要求用户在他们第一次到达时选择一种语言并将选择存储在会话中。一旦用户做出选择,将浏览器重定向到适当的语言子目录并在您的视图中使用相关链接,这样就不必担心跨语言。您可以调整您的 URLconf 以将语言关键字传递给您的视图,如下所示:

    urlpatterns = patterns('',
        (r'^(?P<lang>[a-zA-Z]{2})/ ...
    

    在 Django 文档站点上有一个关于 i18n 的 Internationalization/Localization 页面可能会帮助您入门。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    相关资源
    最近更新 更多