2012-10-09 34 views
3

我使用Django的humanize使我的應用程序中的大浮點數更具可讀性。此外,我的應用程序可用不同的語言,並使用不同的語言。用另一種方式在數字上簽字。格式在語言意識的方式浮在Django模板

整數值的標籤人文化工作intcomma很好:

{{ intvalue|intcomma }} 

將給出不同的語言環境:

English: 1,000,000 
Dutch: 1.000.000 

但是,使用花車這並不能很好地工作。例如,在我的模板,你會發現這一點:

{{ floatvalue|floatformat:2|intcomma }} 

將給出不同的語言環境:

English: 1,000,000.00 
Dutch: 1,000,000,00 

注意,代替1.000.000,00荷蘭,它顯示1,000,000,00。切換浮動格式:2和intcomma標記不起作用,因爲那個值不是什麼。

關於如何輕鬆解決這個問題的任何想法?

(如果可能的話,我寧可不使用外部庫如Babel

回答

0

嘗試Django的Format Localization feature。它給你三個選項。正如Django文檔所說,

Django的格式化系統能夠使用爲當前語言環境指定的格式在模板中顯示日期,時間和數字。它還處理表單中的本地化輸入。

啓用該功能後,訪問相同內容的兩個用戶可能會看到以不同方式格式化的日期,時間和數字,具體取決於其當前區域設置的格式。

默認情況下,格式化系統處於禁用狀態。要啓用它,有必要在您的設置文件中設置USE_L10N = True

因此,第一個選項將打開所有模板的區域設置相關數字格式。

第二個選項是使用localize template tag打開僅用於模板的一部分的區域設置相關數字格式。例如,

{% load l10n %} 

{% localize on %} 
    {{ value }} 
{% endlocalize %} 

第三種選擇是使用localize template filter強制區域設置相關的數字格式爲單個值。例如,

{% load l10n %} 

{{ value|localize }}