2010-07-26 38 views
1

我已经搜索了几个线程和错误报告,但找不到解决方案。不能让Django本地化工作

我将我的Django项目的语言环境更改为pt-br,但没有任何区别。我排除了所有输入字段和输出以本地化日期和数字,特别是DECIMAL_SEPARATORTHOUSAND_SEPARATOR,包括在管理API中。但那里的日期继续显示为yyyy-mm-dd,小数点分隔符“,”会在输入时产生错误。

我所做的一切,我发现:更改了设置,添加本地化中间件类,启用USE_I18N和USE_L10N,试图手动强制的setlocale等。以下是我的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 = '.' 

是奇怪的是,我在巴西葡萄牙语Windows上运行的Python控制台输出这个?

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

任何想法,我忘了尝试?

回答

1

Windows使用不同的区域设置ID。以下应工作(从表上Microsoft's site获得):

In [15]: locale.setlocale(locale.LC_ALL, 'Portuguese_Brazil') 
Out[15]: 'Portuguese_Brazil.1252' 
+0

好,的setlocale没有工作,但它并没有改变Django的任何行为。 – 2010-07-27 11:16:43

1

Django Track,如果USE_L10N设置为TrueINPUT_FORMATS设置将被忽略。

0

也许有点OT,但我想在网页翻译上添加我的观点。

我强烈建议使用Bablic。这完全是客户端翻译方法。他们跟踪网站上显示的字符串,建立“字典”,并通知您新的或未翻译的文本。他们还可以与基于云的翻译提供商集成,以便即使是新提交的内容也能立即翻译,而无需您跟踪或更新服务器端代码或配置。

我喜欢它,你不需要做整个collect-strings-> send-mo-file-to-translators-> compile-> deploy-> debug-> repeat。作为一个web开发者,这个解决方案对我来说没有任何摩擦。

0

在某些情况下,不启用在服务器上,你需要运行此命令,以使区域(在我的服务器Ubuntu的例子)

sudo locale-gen pt_BR 

然后运行

python -c "import locale; locale.setlocale(locale.LC_ALL, 'pt_BR')"