2

我正在建立一个处理货币的多语言网站。我希望能够根据所选语言显示正确的货币格式。服务器端 PHP 的东西是轻而易举的。使用 PHPs NumberFormatter 和 strftime 的组合,我已经能够正确格式化货币和日期。

然而,需要在客户端使用 javascript 进行相同程度的格式化。

我遇到了 Globalization(以前的 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 $

所以格式是法语,但值是美元。我已经看过但无论如何都没有找到将货币符号作为参数传递。

4

2 回答 2

2

在 Globalize 中修改货币符号的唯一记录方法numberFormat.currency.symbol是更改​​给定文化的属性——在本例中为fr-FR文化。这会做你想做的事,但这不是一个非常优雅的解决方案,你需要为每个语言环境手动构建一个正确符号表,并编写另一种方法来交换它们。(nb 可以使用不同的语言环境标识符传递第三个参数Globalize.format,但这只是使用语言环境的文化设置格式化数字。)查看文化定义语法,根本没有规定使用给定的语言环境显示不同的货币.

如果您要寻找其他地方,Dojo Toolkit 中的dojo/currency模块确实可以满足您的需要,它使用来自 Unicode Common Locale Data Repository的数据来确定如何在不同的语言环境中表示各种货币。因此,您可以将您的语言环境设置为fr, write currency.format(3899.888, { currency: "USD" }),它会以法语语言环境的正确格式输出美元货币。

于 2013-07-01T04:15:48.380 回答
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

这是小提琴

于 2014-07-10T12:35:39.600 回答