4

私は実際にこれら 2 つの形式をテストしましたが、私のサーバーは両方とも問題ありません。HTTP ヘッダー フィールドは "en-US" がフォーマットで、ローカル Java クラスは "en_US" を返しているため、どちらを使用するか少し混乱しています。

私の部分的なコードは次のようなものです:

// set accepted language
            List<String> acceptedLanguages = null;
            final Locale defaultLocale = Locale.getDefault(); // en
            if (defaultLocale != null)
            {
                final String defaultLang = defaultLocale.toString(); // en_US
                if (!TextUtils.isEmpty(defaultLang))
                {
                    acceptedLanguages = new ArrayList<String>();
                    acceptedLanguages.add(defaultLang);

                    // Always add en as fallback if applicable
                    if (!HttpClient.DEFAULT_ACCEPTED_LANGUAGE_COUNTRY.equals(defaultLang))
                    {
                        acceptedLanguages.add(HttpClient.DEFAULT_ACCEPTED_LANGUAGE_COUNTRY);
                    }
                }
            }

            String header = HttpClient.getAcceptLanguageHeader(acceptedLanguages); // like: cz_CH;q=1.0, en_US;q=0.9
            this.mHttpGetRequest.addHeader(HttpHeaders.ACCEPT_LANGUAGE, header);

getAcceptLanguageHeader()en_US;q=0.9メソッドは、ユーザーのデバイス言語が not の場合、文字列に追加しますen_US

任意のアイデアをいただければ幸いです。ありがとう。

4

2 に答える 2

0

「en」は で指定された言語コードですISO 639。US は 3166 で指定された国コードです。Java では、Locale オブジェクトは言語を としてlanguageCode_countryCodeではなく (en_US など)として認識しますlanguageCode-countryCode

詳細についてはこれを参照してください

于 2014-12-16T07:40:30.740 に答える