【问题标题】:List of locales in WindowsWindows 中的语言环境列表
【发布时间】:2011-07-06 09:20:24
【问题描述】:

在 *nix 系统上,您可以通过 locale -a 获取可用语言环境的列表。

Windows 中的等效命令(或操作)是什么?

我在 Internet 上看到过列表,但其中大多数只是区域设置标签,而不是实际的区域设置名称。另外,并非所有系统都保证安装所有系统,对吧?

请注意,我在这里对“locale”的定义是“locale string”,即 C 的 setlocale() 的第二个参数,它将导致返回非 NULL 值。

程序化答案也很好,我只是厌倦了暴力猜测 Windows 语言环境名称。

【问题讨论】:

    标签: c windows localization locale setlocale


    【解决方案1】:

    最初,我找不到 C/Win32 API 来获取信息。 (请参阅稍后的编辑。)但是,.NET 类System.Globalization.CultureInfo 似乎可以提供您需要的信息。特别是,请参阅 CultureInfo.GetCultures()。此页面似乎有您要查找的内容的complete example

    编辑:如果您更喜欢 C/Win32 API,请参阅 EnumSystemLocales() 函数。

    编辑 2:This example 展示了如何将 LCID(从 EnumSystemLocales() 获得)转换为 setlocale() 可用的字符串。

    【讨论】:

    • 那里有非常好的语言环境信息,但 setlocale() 仍然没有可用的语言环境字符串。
    • [last] 示例是一个开始,但我想知道它如何处理具有多个代码页的区域设置(更不用说语言或国家/地区)。看起来它只获取默认的 ANSI 代码页或默认代码页(如果它不存在)。似乎也有默认的 EBCDIC 和 MAC 代码页。没关系;我得到了答案:不存在这样的实用程序;必须通读糟糕的 NLS 文档并以编程方式生成和消除语言环境名称。
    【解决方案2】:

    This page 似乎包含指向 WIN32 setlocale 识别的语言和国家/地区列表的链接。然而:

    可用语言的集合, 国家/地区代码和代码页 包括所有那些由 Win32 NLS API 的代码页除外 每个需要两个以上的字节 字符,例如 UTF-7 和 UTF-8。如果 您提供一个代码页,如 UTF-7 或 UTF-8,setlocale 会失败,返回 空。

    失败。

    【讨论】:

    • 不过,我仍然对 UTF-16 支持感到好奇。
    • 更不用说 UTF-32。 IE。为什么不? :)
    • @mlvljr: shrug 我想这是因为 UTF-32 每个字符肯定需要两个以上字节(UTF-16 也是如此,但 UTF-32 做得更多 - 一些要求比其他人更需要?)虽然仔细想想,UTF-32 更容易实现。
    猜你喜欢
    • 1970-01-01
    • 2022-12-10
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-14
    • 2019-06-25
    相关资源
    最近更新 更多