数字charcode转换成另一种语言数字

时间:2011-07-27 06:45:27

标签: javascript localization

我想将数字转换成其他语言数字,我该怎么做?

我希望能够支持尽可能多的语言(谷歌翻译支持的语言)。我一直在阅读,我相信这可以通过charcode完成。

这是我从一些Javascript应用程序复制的一些代码,但它只支持2种语言。

TextTools.arabicNumber = function (str) {
    var res = String(str).replace(/([0-9])/g, function (s, n, ofs, all) {
        return String.fromCharCode(0x0660 + n * 1);
    });
    return res;
}
TextTools.farsiNumber = function (str) {
    var res = String(str).replace(/([0-9])/g, function (s, n, ofs, all) {
        return String.fromCharCode(0x06F0 + n * 1);
    });
    return res;
}

2 个答案:

答案 0 :(得分:9)

你基本上已经解决了这个问题,你只需要查看Unicode标准就可以找到其他数字字符所在的位置。您可以查看Code Charts或仅使用Wikipedia作为字符范围。不过要注意一些有趣的事情:

并非所有语言/文化都使用小数位数系统,尽管大多数语言/文化都使用。您需要验证数字符号的使用方式与西方相同,以确保您的数字符号正确无误。据我所知,日语或韩语的数字是使用不同的系统写出来的,但他们在其他环境中使用西方数字的方式与西方相同。您需要验证所有这些,以确保您拥有正常工作的系统。

但是从技术翻译的角度来看,假设你只是想将西方数字转换成另一个剧本中的数字,那么你已经弄明白了。

ETA:在参考评论时,请考虑traditional Hebrew numbers的情况。数字形成单位+数十+数百(实际上数百+数十+单位,从右到左阅读)。所以456变成400 + 50 + 6,或者希伯来语,תנו。

答案 1 :(得分:2)

我不确定是否会有很多语言的通用解决方案。我没有很好的理解,但正如人们在希伯来语讨论中指出的那样,如果角色不同,那么排序或解释可能就不同了。正如你在小学阶段学到的那样,罗马数字有一个简单的翻译,但它不仅仅是一个字符到字符的转换。我认为您需要针对特定​​语言,并咨询专家(或维基百科)为每个语言构建代码。

我想也许谷歌翻译会知道怎么做,但看起来他们不是来自quick check。如果我错了,请纠正我。

但是对于那些只是音译,这里有各种语言的unicode数字:roman numeralsTamilArabicDevanagari,{{3} },BengaliGurmukhiGujaratiThaiTibetanMongolian等。使用此实用程序我很容易找到更多信息