Django默认语言

时间:2011-10-19 12:30:24

标签: django internationalization

我有一个django应用程序,默认语言设置为法语。 代码和html页面中的所有翻译字符串都是法语。在不同语言之间切换工作正常。 但现在我需要隐藏法语,所以我将LANGUAGE_CODE改为'en-us',但是默认页面总是以法语显示,我是否错过了什么?

由于

4 个答案:

答案 0 :(得分:9)

我最近遇到了这个问题,这就是我如何在不改变任何浏览器的语言环境语言的情况下修复它的方法:

这个想法是创建一个中间件来强制基于LANGUAGE_CODE设置的语言翻译,这里是中间件的样子:

from django.conf import settings
from django.utils import translation

class ForceLangMiddleware:

    def process_request(self, request):
        request.LANG = getattr(settings, 'LANGUAGE_CODE', settings.LANGUAGE_CODE)
        translation.activate(request.LANG)
        request.LANGUAGE_CODE = request.LANG

将此代码段保存为主应用程序中的middleware.py(我假设它名为main),然后将main.middleware.ForceLangMiddleware添加到MIDDLEWARE_CLASSES

答案 1 :(得分:3)

我曾经遇到过一些麻烦......这是因为大多数现代网络浏览器都在请求中发送了他们的语言环境设置,如果可以的话,Django会自动使用该语言。

不幸的是我不记得我为解决这个问题做了什么,但我希望它能为你提供一些指示或搜索的地方。

答案 2 :(得分:1)

在您的settings.py文件中,您有一个LANGUAGES元组。

LANGUAGES = (
    ('en', gettext('English')),
    ('sv', gettext('Swedish')),
    ('no', gettext('Norwegian')),
)

如果您使用Django Multilingual,还可以设置DEFAULT_LANGUAGE设置:

DEFAULT_LANGUAGE = 1 # the first one in the list

答案 3 :(得分:1)

我找到了https://gist.github.com/vstoykov/1366794。它强制I18N机器选择settings.LANGUAGE_CODE作为默认的初始语言。