当前位置: 首页 > 编程语言 > C#

本地化:如何将文化信息映射到脚本名称或Unicode字符范围?Share

时间:2023-04-10 16:13:12 C#

本地化:如何将文化信息映射到文字名称或Unicode字符范围?我需要一些关于本地化的信息。我将.net2.0与C#2.0一起用于大多数与本地化相关的问题。但是,我需要在特定屏幕上手动绘制与屏幕上当前文化相对应的字母。这类似于MicrosoftOutlook中的联系人屏幕(地址卡视图或联系人下的地址详细信息卡视图),因此您需要右端的按钮列,每个字母对应一个按钮列。我正在尝试模仿,但我不想让用户选择脚本。如果说现在的文化,中文,我想画汉字。当用户将文化信息更改为英语时(以及当他重新启动应用程序时),我想绘制英文字母。希望您了解我在此查询中的位置。我可以确定当前用户的文化(Application.CurrentCulture或System.Globalization.CultureInfo.CurrentCulture将提供与文化相关的信息)。我也有渲染字母表的所有脚本。然而,问题是我不知道如何将文化信息映射到脚本的名称。换句话说,有没有办法确定对应于文化的文字名称?或者是否可以确定文化对应的Unicode字符值范围?它们中的任何一个都允许我在按钮上正确呈现字母。非常感谢对此的任何建议或指导。如果我的方法(或我试图实现的目标)存在根本性错误,也请指出。感谢您的时间。PS:我知道最简单的解决方案是将脚本名称配置为用户首选项的一部分,或者显示用户可以选择的语言列表(Outlook2007中的联系人)。但我只是想看看我是否可以在用户无需执行任何操作的情况下呈现与文化相对应的字母表。在本机代码中,有LOCALE_SSCRIPTS用于GetLocaleInfoEx()(Vista及更高版本),它显示了区域设置所需的脚本。目前,.Net没有类似的概念。中文有数千个字符,因此在一个字符集中显示所有字符可能不可行。汉语没有“字母”的本土概念,我认为汉语不像日语那样有音节。拼音(用罗马字母书写的中文)可用于表示汉字,这可能有助于您对它们进行索引。我知道这不能回答你的问题,但我希望它能有所帮助。我完全同意mikiemacman。此外,给定的语言不一定使用脚本的所有字母。无论如何,我能想到的最接近的是CultureInfo.TextInfo.ANSICodePage->只有少数ANSI代码页。您可以创建一个表(或switch()语句,等等)列出每个ANSI代码页的脚本。原型,等等!有一个更准确的解决方案。这是一个非托管的,您可能需要P/Invoke。GetLocaleInfoW(MAKELCID(wLangId,SORT_DEFAULT),LOCALE_FONTSIGNATURE,wcBuf,MAXWCBUF);这为您提供了LOCALESIGNATURE结构。答案在lsUsb字段中:Unicode子集位字段。老鼠!此结构的MS页为空。但是在您的MSDN副本中查找它。它在那里有完整的记录:一整套描述支持哪些脚本的标志。是的,泰米尔语有一面旗帜;-)HTH。编辑:哎呀!还没有看到肖恩的回答。哇!业内专家解答!;-)无论如何,您可能仍然对pre-Vista兼容的答案感兴趣。引人入胜的话题。虽然它可能无法回答您的问题,但Omniglot是一个很好的资源。正确答案可能很复杂,具体取决于您要解决的具体问题。假设您的目标是仅显示特定语言中使用的字母以分隔电话簿部分(如在Outlook中),则几乎没有问题:以上是关于C#学习教程:本地化:如何将文化信息映射到脚本名称或Unicode字符范围?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: