char *currentLocale = setlocale(LC_ALL,"");
在windows中,setlocale返回“English_United States”,但在linux中它会重新输入“en_US”。是否有识别英语语言环境的通用方法?或者我必须查看所有可用的语言环境值? (“English_United States”||“en_US”|| etc)
答案 0 :(得分:1)
您可能需要查看:
http://en.wikipedia.org/wiki/Locale
http://en.wikipedia.org/wiki/ISO_639
理论上,Windows,Linux,MAc和其他O.S.可能有支持“语言下划线国家”格式的函数库,即使它们有内部标准:
答案 1 :(得分:0)
在这种情况下,Windows似乎是唯一的异常值 - 大多数操作系统使用(saner)“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
它不是很漂亮,但它应该有用。