【问题标题】:Django: Display current locale in a templateDjango:在模板中显示当前语言环境
【发布时间】:2011-09-15 18:04:44
【问题描述】:

我需要将当前语言环境嵌入到 Django 模板的输出中(准确地说是 URL 的一部分)。我知道如果我使用{ load i18n },我可以使用{{ LANGUAGE_CODE }} 访问当前的语言,但是有没有类似的方法可以访问当前的locale

我想我可以在视图逻辑中使用to_locale() 并将其放在模板的上下文中,但我正在寻找更通用的东西,它可能是 Django 框架本身的一部分。有这样的语法吗?

【问题讨论】:

    标签: django localization internationalization


    【解决方案1】:

    我通过在模板中包含以下代码解决了这个问题

    {% load i18n %}
    {% get_current_language as LANGUAGE_CODE %}
    

    并且变量LANGUAGE_CODE 具有您想要的值(另请参阅django docs 以获取示例用法)。

    【讨论】:

    • LANGUAGE_CODE 与语言环境名称不同,如问题中所述。将“en-gb”与“en_GB”进行比较。它们采用不同的标准格式。
    • 这与问题中所述仅使用 {{ LANGUAGE_CODE }} 有何不同?在这两种情况下我得到相同的输出。
    【解决方案2】:

    我想实现我自己的custom template tag,它只会输出to_locale(get_language()),但上面的答案更容易实现,所以我更喜欢它。

    【讨论】:

      【解决方案3】:

      您可能想要 write your own context processor,它会调用 to_locale 并使用结果自动填充上下文 - 就是这样。

      from django.utils.translation import to_locale, get_language
      def locale(request):
          return {'LOCALE': to_locale(get_language())}
      

      【讨论】:

      • 我需要补充一点,上下文处理器只有在使用 RequestContext 时才会起作用。我不是,所以我要使用自定义模板标签。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-28
      • 2017-04-11
      相关资源
      最近更新 更多