2010-07-26 70 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')"