8

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

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

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

请注意,我在这里对“语言环境”的定义是“语言环境字符串”,即 C 语言的第二个参数setlocale(),它将导致非 NULL 返回值。

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

4

2 回答 2

6

最初,我找不到 C/Win32 API 来获取信息。(见后面的编辑。)但是,看起来 .NET 类System.Globalization.CultureInfo可以提供您需要的信息。特别是,请参阅 CultureInfo.GetCultures()。此页面似乎有您正在寻找的完整示例。

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

编辑 2:此示例显示如何将 LCID(您从 EnumSystemLocales() 获得)转换为 setlocale() 可用的字符串。

于 2011-03-01T10:58:50.463 回答
2

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

可用语言、国家/地区代码和代码页集包括 Win32 NLS API 支持的所有语言,但每个字符需要两个以上字节的代码页除外,例如 UTF-7 和 UTF-8。如果您提供像 UTF-7 或 UTF-8 这样的代码页,setlocale 将失败,返回 NULL。

失败。

于 2011-03-01T11:39:15.267 回答