无法使Django本地化工作

1 投票
4 回答
2078 浏览
提问于 2025-04-16 01:52

我查了好几个帖子和错误报告,但还是没找到解决办法。

我把我的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'

撰写回答