gpt4 book ai didi

unicode - 桌面应用程序中的数字本地化

转载 作者:行者123 更新时间:2023-12-03 16:56:27 26 4
gpt4 key购买 nike

在号码十进制类别 在 Unicode 中,定义了 460 个十进制字符(参见 this page 中的一些示例)。不幸的是,无论其外观如何,我都找不到任何代表数字的字符。因此,目前大多数软件只能将西方阿拉伯数字字符理解为数字。因此,您不能在 MS Excel 中输入其他数字字符。

Table of digits in various writing systems

如果 Unicode 有(至少)10 个数字 0 到 9 的代码作为纯数字,而不是字形,我们几乎可以在所有正常使用中使用它们,并且主机环境可以根据用户的区域设置显示本地化的数字字形。当我们想要将数字字形用作字符串时,我们也可以使用 460 个十进制 Unicode 数字中的任何一个。

另一方面,如果我们接受当前字符 U+0030 到 u+0039 作为纯数字,那么我们需要十个新字符用于西方阿拉伯数字。这种实现似乎也更向后兼容。此外,字符 U+0030 到 U+0039 的名称不涉及任何特定数字的外观。

显然,我们可以在应用程序中对所有 460 个十进制数字字符进行硬编码,并在内部将它们视为数字,但我正在寻找更合适的解决方案。如果我们还考虑包括罗马数字和古波斯数字在内的 224+464 个其他 Unicode 数字字符(Nl 类别 + 无类别),问题就会变得更加复杂。

我们如何使用操作系统范围的解决方案来解决这个问题?

另见 Numbers localization in Web applications

最佳答案

我不确定你在问什么,但最接近特定问题的似乎是,“在当前情况下,我们应该如何以用户可以看到他们本地数字字形的方式处理数学应用程序中的数字?”

非常简单:编写自己的数学应用程序。它将有 型号 其数据,例如整数或实数。它还将有一个 查看 例如,以用户知道如何阅读的符号表示数字的字符串。 (这些术语指的是 Model-View-Controller architecture。)在您自己的应用程序中,为您的 View 编写代码,该代码使用阿拉伯数字字符、孟加拉数字字符、中文数字字符或任何您想要的表示来显示数字。

正如 Esailija 所写,Common Locale Data Repository (CLDR)International Classes for Unicode (ICU) libraries可以帮助您编写此应用程序。

你写,

I could not find any character representing a digit regardless of its appearance. As a result, currently only Western Arabic numeral characters are understood by most (or perhaps all) software as numbers. So you can not enter other number characters in MS Excel.



我认为这三个句子没有逻辑联系。

您无法在 Microsoft Excel 中输入其他数字字符的原因是,Microsoft 做出了一个商业决策,即如果 Excel 仅用西方数字表示数字,它就足够有用了,而且他们没有必要构建您寻求的多语言电子表格。

目前大多数(或可能所有)软件仅将西方阿拉伯数字字符理解为数字的原因是因为许多其他软件开发人员已做出与 Microsoft 相同的业务决策。这不是因为数字是如何以 Unicode 编码的。

您是正确的,Unicode 标准没有代表数字的字符,无论其外观如何。这是因为 Unicode 标准处理字符,使用一个非常详细的模型来说明什么是字符,什么不是字符。 Unicode 标准(通常)不与其他抽象数据模型实体一起使用。

所以:去编写具有您想要的行为的数学应用程序。平台和 API 对您开放。 Unicode 标准以及 CLDR 和 ICU 为您提供了工具。做大事!

您添加:

Obviously we can hard-code all 460 decimal numeral characters in the app and internally treat with them as numbers, but I am looking for a more suitable solution.... How can we solve this issue with an OS wide solution?



您宣布解决方案“合适”的标准是什么?对十进制数字字符进行硬编码,或者更具体地说,编写一组特定于语言的例程以将抽象数字数据类型转换为各种语言的文本表示,是我认为可行的唯一方法。 “操作系统范围的解决方案”是指可以安装到操作系统中的解决方案,它会改变现有应用程序的行为吗?好吧,您可以对此抱有希望,但我认为它不会传递给当前的操作系统。

请注意,特定语言的例程也许可以用 RuleBasedNumberFormat class of ICU 来实现。 .此类可以将抽象数字格式化为文本字符串,例如“(例如,25,3476 为“25,376”或“vingt-cinq mille trois cents soixante-seize”或“fünfundzwanzigtausenddreihundertsechsundsiebzig”)' .您可能可以使用此类编写代码,以使用您确定的 46 种语言数字集中的任何一种来格式化数字。但是,应用软件仍然需要结合 ICU 和数字格式代码。

更新 :修改了我的答案以跟踪原始发帖人问题中的措辞变化。添加了对“操作系统范围解决方案”的呼吁的响应。修复了“模型- View - Controller ”中的维基百科链接。

更新 : 删除了假词“the”。

关于unicode - 桌面应用程序中的数字本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13899793/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com