无法使Django本地化工作
我查了好几个帖子和错误报告,但还是没找到解决办法。
我把我的Django项目的语言设置改成了pt-br
(巴西葡萄牙语),但没有任何变化。我希望所有的输入框和输出都能根据当地习惯来显示日期和数字,特别是DECIMAL_SEPARATOR
(小数点符号)和THOUSAND_SEPARATOR
(千位分隔符),包括在管理API里。但是那里的日期还是显示成yyyy-mm-dd
格式,而小数点符号用“,”输入时会出错。
我做了我能找到的所有事情:改了设置,添加了本地化的中间件类,启用了USE_I18N和USE_L10N,甚至试着手动设置区域等等。以下是我的settings.py的一部分:
LANGUAGE_CODE = 'pt-br'
USE_I18N = True
USE_L10N = True
MIDDLEWARE_CLASSES = (
'django.middleware.common.CommonMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.middleware.transaction.TransactionMiddleware',
)
DATE_FORMAT = 'd/m/Y'
SHORT_DATE_FORMAT = 'd/m/Y'
DATE_INPUT_FORMATS = ('%d/%m/%Y', '%d/%m/%y', '%Y-%m-%d')
DECIMAL_SEPARATOR = ','
THOUSAND_SEPARATOR = '.'
我的Python控制台在巴西葡萄牙语的Windows上输出这个,正常吗?
>>> locale.setlocale(locale.LC_ALL, ('pt_BR', 'cp1252'))
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python25\lib\locale.py", line 478, in setlocale
return _setlocale(category, locale)
locale.Error: unsupported locale setting
有没有什么我忘了尝试的办法?
4 个回答
0
可能有点跑题,但我想分享一下我对网站翻译的看法。
我强烈推荐使用Bablic。这个工具完全是在用户端进行翻译的。他们会跟踪你网站上显示的文字,建立一个“字典”,并提醒你哪些内容是新的或者还没有翻译的。他们还可以和一些云端翻译服务连接,这样即使是新提交的内容也能几乎立刻被翻译,不需要你去跟踪或者更新服务器上的代码或设置。
我特别喜欢的是,你不需要经历那种收集文字→把文件发给翻译者→编译→部署→调试→再来一次的繁琐流程。作为一个网页开发者,这个解决方案对我来说几乎没有任何障碍。
1
根据 Django的跟踪记录,如果把 USE_L10N
设置为 True
,那么 INPUT_FORMATS
的设置就会被忽略。
1
Windows系统使用不同的地区标识符。下面的内容应该可以用(这个信息来自于微软的网站上的表格):
In [15]: locale.setlocale(locale.LC_ALL, 'Portuguese_Brazil')
Out[15]: 'Portuguese_Brazil.1252'