我创建了一个小演示来展示这个问题。
当您单击英式英语时,您可以看到日期和时间格式如何相应地变化,这很棒。
现在,如果您单击"添加",您将看到如何为您填充当前日期和时间。 但是,它们仍然带有美国日期格式,而不是选定的英国语言。
解决此问题的唯一方法是在 settings.py 中将LANGUAGE_CODE = 'en-us'
更改为LANGUAGE_CODE = 'en-gb'
。这种方法显然是无用的,因为它不再是动态的,并且偏袒一个群体而不是另一个群体。这应该是最后一个优先级,因为所选语言应该具有更高的优先级。
我已经创建了自定义formats.py
来覆盖文档中描述的en
和en_GB
的日期和时间格式,因此我不知道我还能做什么。
请非常友善,从我的保管箱下载我的演示(22 kb):您所要做的就是编辑 settings.py 并将路径调整为 sqlite.db。
我是否忽略了某些内容,或者这是一个 Django 错误?
固定!!嗨,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