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、およびその他の OS には、内部標準がある場合でも、「言語アンダースコア国」形式をサポートする関数ライブラリがある場合があります。

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

于 2012-07-12T20:18:49.317 に答える
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

あまりきれいではありませんが、うまくいくはずです。

于 2012-07-12T20:18:00.537 に答える