如何从角色中找出语言?

时间:2013-07-01 09:15:49

标签: windows delphi unicode delphi-xe

鉴于Unicode字符,我们希望找出包含此字符的语言,更重要的是,了解每种语言是否为Left-To-Right。 例如,字符A可能同时是EnglishSpanish,都是LTR语言。

我希望这能用于我自己的文本编辑器。 任何人都可以帮我找到API函数或解决我问题的东西吗?

提前致谢

2 个答案:

答案 0 :(得分:7)

Unicode-wise,LTR / RTL是字符的属性,而不是使用该字符的语言。这很重要,因为阿拉伯语文本中的嵌入式英语应该从左到右显示,即使为了简单起见,整个文档也可能标记为阿拉伯语。如果您使用的是JCL,则可以使用UnicodeIsLeftToRightUnicodeIsRightToLeft函数获取这些属性。请注意,字符既不是从左到右,也不是从右到左,并且还注意到JCL使用Unicode字符列表的私有副本,该副本可能与Windows使用的任何特定版本略有不同。

答案 1 :(得分:1)

关于标题中的问题,您需要对世界语言中字符的使用进行广泛的研究。有几千种语言,但其中很多都没有常规的书写系统;另一方面,一些语言有几种书写系统。语言的不同变体可能具有不同的字符库。

所以这将是一项重大努力,尽管已经编译了一些数据,例如在CLDR曲目中 - 但“语言中使用的字符”概念还远未明确。 (æ,è和ö字符是用英语写的吗?它们确实以某种形式的书面英语出现。)

因此,期望为此目的找到一个库例程是不现实的。

显然你真正的需要是决定一个角色是从左到右的角色还是从右到左的角色。但为了完整起见,我已经提供了你实际要求的答案,并且可能与其他一些情况有关。