2
char *currentLocale = setlocale(LC_ALL,"");

在 Windows 中 setlocale 返回“English_United States”,但在 linux 中返回“en_US”。有没有一种通用的方法来识别英语语言环境?或者我必须检查所有可用的语言环境值?(“English_United States” || “en_US” || 等)

4

2 回答 2

1

您可能需要检查:

http://en.wikipedia.org/wiki/Locale

http://en.wikipedia.org/wiki/ISO_639

理论上,Windows、Linux、MAc等操作系统可能有支持“语言下划线国家”格式的函数库,即使它们有自己的内部标准:

http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2

于 2012-07-12T20:18:49.317 回答
0

在这种情况下,Windows 似乎是唯一的异常值 - 大多数操作系统使用(更明智的)“en_US”格式。您可以使用 #ifdef 之类的东西向 Windows 编译器提供自定义代码:

#ifdef __unix__
setlocale(LC_ALL, "en_US");
#elif defined _WIN32
setlocale(LC_ALL, "English");
#else
#error "Can't figure out how to set locale to English. Stop.";
#endif

它不是很漂亮,但它应该可以工作。

于 2012-07-12T20:18:00.537 回答