char *currentLocale = setlocale(LC_ALL,"");
Windows では setlocale は "English_United States" を返しますが、Linux では "en_US" を返します。英語ロケールを認識する普遍的な方法はありますか? または、利用可能なすべてのロケール値を確認する必要がありますか? ("English_United States" || "en_US" || など)
以下を確認してください。
http://en.wikipedia.org/wiki/Locale
http://en.wikipedia.org/wiki/ISO_639
理論的には、Windows、Linux、MAc、およびその他の OS には、内部標準がある場合でも、「言語アンダースコア国」形式をサポートする関数ライブラリがある場合があります。
この場合、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
あまりきれいではありませんが、うまくいくはずです。