如果语言环境没有代码页,如何检测语言环境/语言?

时间:2009-12-26 06:49:45

标签: delphi unicode

我需要从unicode widestring中检测语言。我已经尝试使用iMultiLang2接口,如果语言环境有代码页,它就能正常工作。某些语言环境/语言没有代码页,仅映射到unicode。我怎样才能得到那些lcid?格鲁吉亚语,印地语和许多其他语言没有代码页,只是unicode collat​​ion

我正在使用Delphi7 Enterprise。

非常感谢任何帮助

此致

2 个答案:

答案 0 :(得分:9)

问题是基于对unicode的误解。 Unicode是一种表示编写系统的方式,而不是语言。想象一下由三个代码点U + 0073,U + 0069和U + 006e组成的unicode字符串,即“sin”。是英文吗?它是西班牙语中的“没有”吗?在几种斯堪的纳维亚语言中它是“那个”吗?谁知道呢。

你提到格鲁吉亚语和印地语。当然,格鲁吉亚文字(ქართულიდამწერლობა)可以用来表示格鲁吉亚语,但也可以用Mingrelian,Svan和其他一些更稀有的语言。没有“印地语”剧本,只有“英文”字母。由于英语是用拉丁文字母写的,我们从拉丁语的forbearers继承,印地语是用Devanāgarī(देवनागरी)写的,这是一个美丽的剧本,也用于古代梵语和现代马拉地语和尼泊尔语以及其他几十种语言。不要让我开始学习中文。

如果你被迫并且不得不接受一个hackish near-solution,你可以做出近似值:“因为这个角色来自Devanāgarī范围(U + 0900-U + 097F)或格鲁吉亚范围(U + 10A0-U) + 10FC和U + 2D00-U + 2D25),我猜它可能是印地语或者可能是格鲁吉亚语。“这种方法容易出错并且含糊不清,但您可以从范围表here开始。

答案 1 :(得分:3)

我通常不会给出这样的答案,但无论如何你没有!。这是你无法真正解决的任务。有太多情况下您无法确定语言。

顺便说一下,我观察到这样一个功能的唯一地方就是谷歌翻译,如果文字长度非常大,我只能 ,所以不能保证。