2

我正在設置一個處理貨幣的多語種網站。我希望能夠根據所選語言顯示正確的貨幣格式。服務器端PHP的東西是一個輕而易舉的事情。使用PHP的組合NumberFormatter和strftime我已經能夠正確地格式化貨幣和日期。jQuery全球化。通過貨幣單位作爲C格式的參數

然而,要求客戶端使用JavaScript完成相同程度的格式。

我遇到過全球化(前jQuery插件),它看起來很有前途。

如果我想顯示在美式英語中一美元的價值,我可以做這樣的事情:

jQuery.preferCulture("en-US"); 

// Formatting price 
var price = jQuery.format(3899.888, "c"); 
//Assigning stock price to the control 
jQuery("#price").html(price); 

,這將輸出:

$3,899.89 

雖然這樣做:

jQuery.preferCulture("fr-FR"); 

// Formatting price 
var price = jQuery.format(3899.888, "c"); 
//Assigning stock price to the control 
jQuery("#price").html(price); 

輸出:

3 899,89 € 

看起來很完美。不過,我需要輸出多種貨幣。所以,如果我有「FR-FR」選擇爲我的首選文化,我怎麼能輸出,比方說,一美元的價值,像這樣:

3 899,89 $ 

,這樣的格式是法國人,但價值是美國的美元。我已經看過但沒有找到通過貨幣符號作爲參數。

回答

2

要修改Globalize中的貨幣符號only documented way的目的是更改給定文化的numberFormat.currency.symbol屬性(在本例中爲fr-FR文化)。這樣做可以做你想做的事情,但這不是一個非常優雅的解決方案,你需要爲每個區域設置手動構建正確符號表,並編寫另一種方法將其交換出去。 (nb可以將第三個參數傳遞給具有不同區域設置標識符的Globalize.format,但這只是使用區域設置的文化設置來格式化該數字。)查看culture definition syntax,沒有提供使用給定的不同貨幣顯示語言環境。

如果您要在其他地方查看,Dojo Toolkit中的dojo/currency模塊可以根據您的需要使用Unicode Common Locale Data Repository中的數據來確定如何表示不同區域中的各種貨幣。因此,您可以將區域設置設置爲fr,編寫currency.format(3899.888, { currency: "USD" }),並且它將以法語區域設置的正確格式輸出USD貨幣。

+0

感謝您的反饋意見,不是我想聽到的,但非常詳細和翔實沒有少。 +1用於指向Dojo解決方案。 –

2

我有同樣的問題,最後我只是用我想要顯示的符號替換輸出上的默認貨幣符號。這有點簡陋,但它使用所需的貨幣符號保持語言環境的格式正確。

function formatCurrency(value, format, symbol){ 
    var formattedValue = Globalize.format(value, format); 

    if (typeof symbol === "string") { 
    formattedValue = formattedValue.replace(Globalize.culture().numberFormat.currency.symbol, symbol); 
    } 

    return formattedValue; 
} 

document.getElementById("price1").innerHTML = formatCurrency(123.34,"c"); //<-- $123.34 
document.getElementById("price2").innerHTML = formatCurrency(123.34,"c","£"); //<-- £123.34 

這裏是fiddle