LocaleContext.getLocale() は、現在「en_US_WOL」としてロケール オブジェクトを返します。ブレークポイントを使用してロケール オブジェクトを確認したところ、英語、米国 - 米国の国コード、WOL - バリエーション (ロケール オブジェクトのフィールド) のように見えます。バリエーションフィールドが追加されて getLocale() メソッドに返されるのはなぜですか? どうすればそれを止めることができますか?(LocaleContext は ThreadLocal 型です)
2806 次
2 に答える
0
私もこれに問題がありました。残念ながら、Variant なしで lang-country コードを適切に出力するための組み込みメソッドが見つからなかったので、そのようなスニペットで自分自身を助けました (誰かにとって便利かもしれません):
public static String getLanguageCode(Locale locale) {
StringBuilder sb = new StringBuilder();
sb.append(locale.getLanguage());
if (locale.getCountry() != null && locale.getCountry().length() > 0) {
sb.append("-");
sb.append(locale.getCountry());
}
return sb.toString();
}
于 2016-10-06T10:56:40.210 に答える
0
http://docs.oracle.com/javase/6/docs/api/java/util/Locale.htmlによると
variant 引数は、ベンダーまたはブラウザー固有のコードです。たとえば、Windows には WIN、Macintosh には MAC、POSIX には POSIX を使用します。2 つのバリエーションがある場合は、それらをアンダースコアで区切り、最も重要なものを最初に置きます。たとえば、繁体字スペイン語の照合では、言語、国、バリアントのパラメーターを使用して、"es"、"ES"、"Traditional_WIN" などのロケールを構築できます。
特定のバリアントの Locale を使用している場合は、次のコンストラクターを使用できると思います。
Locale(String language, String country, String variant)
または、ブラウザーのロケール設定を調整します (アプリケーションにブラウザーが含まれている場合)。
于 2012-12-18T04:59:37.413 に答える