1

我创建了一个小演示来展示这个问题。

当您单击英式英语时,您可以看到日期和时间格式是如何相应变化的,这很棒。

现在,如果您单击添加,您将看到当前日期和时间是如何为您填充的。但是,它们仍然采用美国日期格式,而不是所选的英国语言。

LANGUAGE_CODE = 'en-us'解决此问题的唯一方法是LANGUAGE_CODE = 'en-gb'在 settings.py中更改。这种方法显然是无用的,因为它不再是动态的,并且有利于一个群体而不是另一个群体。这应该是最后一个优先级,因为所选语言应该具有更高的优先级。

我已经创建了自定义来覆盖文档中描述formats.py的日期和时间格式,en所以我不知道我还能做什么。en_GB

请善待并从我的 dropbox下载我的演示 (22 kb) :您所要做的就是编辑 settings.py 并调整 sqlite.db 的路径。

我是否忽略了某些东西,或者这是一个 Django 错误?

4

1 回答 1

1

固定的!!嗨,Kave,经过一段时间的调查,我终于找到了解决方案。

  • 首先,您应该使用 activate(language_code) 切换到新语言。
  • 您必须同时设置为本地化:字段和小部件:

示例切换语言:

def display_current_language(request):
    if request.LANGUAGE_CODE == 'en-gb':
        lang = "You prefer to read British English {code}.".format(
                  code=request.LANGUAGE_CODE )
        activate(request.LANGUAGE_CODE)
    elif request.LANGUAGE_CODE == 'en-us':
        lang = "You prefer to read American English {code}.".format(
                  code=request.LANGUAGE_CODE )
        activate('en-us')    
    else:
        lang = "You prefer to read Deutsch {code}.".format( 
                   code=request.LANGUAGE_CODE )
        activate(request.LANGUAGE_CODE)    
    return lang

使用您的模型(公司)和您的字段(日期)进行示例:

class CompanyForm(ModelForm):        
    class Meta:
        model = Company 

    def __init__(self, *args, **kwargs):
        super(CompanyForm, self).__init__(*args, **kwargs)
        self.fields['date'].localize = True
        self.fields['date'].widget.is_localized = True
于 2012-08-15T20:30:24.497 回答