【问题标题】:Disabling localization for specific apps in Django在 Django 中禁用特定应用程序的本地化
【发布时间】:2012-03-18 02:51:19
【问题描述】:

有没有办法在 Django 的设置中禁用特定应用程序的本地化?

这有两个可能的原因:

  • 关闭管理应用程序中的本地化,例如 contrib/admin,因为管理员更喜欢使用英语而不是本地语言。

  • 一些应用程序的默认翻译非常糟糕且令人困惑,我们希望在开发过程中不使用它们,直到我们自己进行适当的翻译。

我知道我们可以只删除翻译文件或其他黑客,但是当我们进行频繁升级时,在设置中使用它会更方便。

问候。

【问题讨论】:

    标签: django localization


    【解决方案1】:

    没有这样的设置来禁用特定应用程序的翻译。

    关于您的第一个用例,使用另一种语言的管理员很容易通过自定义中间件实现,请查看以下 sn-p:

    http://source.mihelac.org/2009/11/12/django-set-language-for-admin/

    如果 3rd 方应用程序的 url 方案很简单,也许您可​​以使用相同的方法为它们设置不同的(默认)语言。

    【讨论】:

    • 基于 URL 的管理员技术很有趣。在重复更新的情况下,另一种情况确实是一个方便的问题。谢谢。
    【解决方案2】:

    如果启用LocaleMiddleware,则可以为该用户设置适当的 cookie 或会话变量。我通常使用系统可用的语言实现一个下拉菜单。用户选择语言,并据此为该用户设置会话或 cookie。这允许管理员在翻译其他区域时保持英语。

    这是查找顺序(来自文档):

    First, it looks for a django_language key in the current user's session.
    
    Failing that, it looks for a cookie.
    
    The name of the cookie used is set by the LANGUAGE_COOKIE_NAME setting.
    (The default name is django_language.)
    
    Failing that, it looks at the Accept-Language HTTP header. This header is sent
    by your browser and tells the server which language(s) you prefer, in order by
    priority. Django tries each language in the header until it finds one with
    available translations.
    
    Failing that, it uses the global LANGUAGE_CODE setting.
    

    编辑:

    无法通过设置;但是,取决于您使用该应用程序的方式 - 您可以“强制”仅翻译您想要的语言。如果您的语言是 RTL(显示问题),这可能会导致问题。

    您暗示的解决方案(删除实际的 gettext 翻译文件)是一种方法,但不推荐。

    由于翻译文本的显示是模板引擎的一项功能,只需覆盖这些应用程序的模板并禁用翻译标签就可以满足您的需求,并且更便携。

    【讨论】:

    • 您的答案是关于为每个用户选择区域设置,这是有据可查的。我的问题是是否可以在设置中关闭每个 specific app 的本地化。应用程序带有自己的翻译文件,这些是我们想要选择性禁用的。管理员用户只是我讨论过的一种情况,我们希望他们看到网站已本地化,但来自特定应用程序(在本例中为管理员)的内容未本地化,我们希望能够在设置中执行此操作。问题是这是否可能。问候。
    猜你喜欢
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 2014-02-08
    • 2017-02-16
    • 1970-01-01
    相关资源
    最近更新 更多