将数字字符编码转换为另一种语言的数字字符。

6

我希望将数字转换为其他语言的数字,我该怎么做?

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

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

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个回答

9
您已经基本解决了这个问题,只需要查看Unicode标准以找到其他数字字符的存在位置。您可以查看代码图表或者只使用维基百科寻找字符范围。但需要注意的是:
并非每种语言/文化都使用十进位制数系统,尽管现存的大多数文化使用这种方法。您需要验证数字符号的使用方式与西方相同,以确保正确性。我知道的是,日语或韩语数字可能使用不同的系统书写,但在其他情境下与西方一样使用阿拉伯数字。您需要验证所有这些以确保正确工作。
但从技术翻译的角度来看,假设您只是将西方数字转换为另一种语言脚本中的数字,那么您已经搞清楚了。
预计完成时间:传统希伯来数字案例。数字形成为单位+十位+百位(实际上是从右向左读取的百位+十位+单位)。因此,456变成400 + 50 +6,或用希伯来文表示为תנו。

不,这不是我的代码,我从其他网站获取并添加到这里以供示例使用。好的,假设我想添加希伯来数字,我该如何从你提供的代码表中实现? - Basit
请查看此链接http://www.i18nguy.com/unicode/hebrew-numbers.html。传统希伯来数字似乎不是位置制的,而是加法制的,因此您可以像罗马数字一样构建它们。现代希伯来数字使用西方数字完成。 - Gordon Seidoh Worley
最后一件事。您提供的代码图表链接,大多是字母。您能否提供另一个代码图表链接,其中包含大多数语言的数字? - Basit
同样要记得,在许多欧洲语言中,“.”和“,”有相反的含义,因此在英语中表示为1,123,456.12的数字,在法语、意大利语或西班牙语中将表示为1.123.456,12。 - David Waters

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

我曾以为谷歌翻译可能会知道如何做到这一点,但从 快速检查来看,它似乎不知道。如果我错了,请纠正我。

但对于那些只是音译的语言,以下是各种语言的 Unicode 编码:罗马数字, 泰米尔语, 阿拉伯语, 天城体梵文, 孟加拉语, 果麦文, 古吉拉特语, 泰语, 藏文, 蒙古语, 杭州话等。使用我编写的这个工具可以轻松找到更多。

雅,Google不翻译数字,否则我们就不用担心自己写了。顺便说一句,你的工具真的很好,我非常喜欢它。只有一个问题,我怎么找到完整的支持语言列表,这样我也可以查看它们...我尝试输入阿拉伯语,但没有成功,它们需要特殊的唯一名称才能显示出来,所以我想知道完整的名称列表在哪里。 - Basit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接