2011-10-19 168 views
5

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

感谢

+0

试图改变自己的浏览器本地语言,可能是它帮助 – Ahsan

回答

3

我遇到了一些麻烦,这也一度......这是因为大多数现代网络浏览器在发送请求的区域设置,和Django的自动使用的语言,而不是它是否能。

不幸的是我不记得我做了什么来解决这个问题,但是我希望它能给你一些指导去寻找或搜索。

+1

谢谢,这是问题,通过改变浏览器语言的语言解决 – ark42

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 
+2

DEFAULT_LANGUAGE似乎并没有为我工作,而该变量没有[Django配置文件中引用](https://docs.djangoproject.com/zh/dev/ref/settings/) – ark42

+0

你现在在运行什么版本的Django? – ApPeL

+0

我使用的是1.3版本 – ark42

7

我刚刚遇到这个问题,这里是我怎么能设法解决它在不改变任何浏览器的语言环境的语言:

的想法是创建一个中间件基础上,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.middleware.ForceLangMiddleware到您的MIDDLEWARE_CLASSES