在开发需要使用各种本地化的应用程序时,特别是使用“从右到左”文本时,是否存在数字也需要转换为“从右到左”的情况?
我不是语言学者,但我知道我熟悉的 RTL 语言在 LTR 中显示它们的数字。
例如(使用谷歌翻译):
I have 345 apples.
阿拉伯语:
لدي 345 التفاح.
所以,我有两个问题:
- 是否有可能遇到使用 RTL 数字的语言?
- 在这种情况下应该如何处理国际化?
或者,
仅使用西方阿拉伯字符从左到右读取数字是“公认的规范”吗?
在开发需要使用各种本地化的应用程序时,特别是使用“从右到左”文本时,是否存在数字也需要转换为“从右到左”的情况?
我不是语言学者,但我知道我熟悉的 RTL 语言在 LTR 中显示它们的数字。
例如(使用谷歌翻译):
I have 345 apples.
阿拉伯语:
لدي 345 التفاح.
所以,我有两个问题:
或者,
仅使用西方阿拉伯字符从左到右读取数字是“公认的规范”吗?
数字通常会按照您的意思进行翻译。即使在以不同方向阅读的语言中,西方阿拉伯数字通常也能被用户识别。
在从右到左的大字体中——阿拉伯语、希伯来语和塔纳语——数字总是从左到右排列。(当我说“阿拉伯语”时,我指的是所有用阿拉伯语书写的语言——阿拉伯语、波斯语、乌尔都语、帕斯托语和许多其他语言。)
希伯来语和 Thaana 始终使用欧洲数字,与英语相同的 0-9 设置。那里没什么可做的,因为 Unicode 会自动负责正确地对数字进行排序。但请参阅下面关于隔离的评论。
也可以在阿拉伯语中使用欧洲数字;例如,阿拉伯语维基百科使用它们。但是,阿拉伯语文本经常使用不同的数字集 - https://en.wikipedia.org/wiki/Eastern_Arabic_numerals。这取决于您的用户的偏好。另请注意,在波斯语中,数字略有不同。从从右到左布局的角度来看,它们的行为与欧洲数字几乎相同,尽管数学符号的行为略有不同 - 例如,减号可以在另一边。这里有一些微妙之处,但它们大多是边缘情况。
在希伯来语和阿拉伯语中,您可能会遇到双向隔离问题。例如,如果您有一个希伯来语段落,其中您有一个英文单词,并且在单词之后您有数字,则数字将出现在单词的右侧,尽管您可能希望它们出现在左侧。这就是 Unicode 双向算法默认工作的方式。要解决此类问题,您可以使用 Unicode 控制字符 RLM 和 LRM。如果您使用的是 HTML5,您还可以为此使用 <bdi> 标记,以及 CSS 规则“unicode-bidi:isolate”。这些 CSS 和 HTML5 解决方案非常强大和优雅,但并非所有浏览器都支持。
我知道一个数字从右到左运行的脚本:N'Ko,它用于非洲的某些语言。我实际上看到了用它写的网站,但它远不如希伯来语和阿拉伯语常见。
最后,如果您使用 JavaScript,您可以使用免费的 jquery.i18n 库进行自动数字转换。请参阅https://github.com/wikimedia/jquery.i18n。(免责声明:我是这个库的开发人员之一。)