2014-12-16 3 views
1

Я фактически протестировал эти два формата, и мой сервер в порядке с обоими. Поскольку Http header fields говорит, что «en-US» - это формат, и мой локальный класс java возвращает «en_US», я немного смущен, чтобы получить, какой из них использовать!Какой формат «en_US» и «en-US» должен использоваться в запросе заголовка Http как Accept-Language?

Мой частичный код выглядит так:

// 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 в строку, если язык устройства пользователя в не en_US.

Любая идея будет оценена по достоинству. Благодарю.

ответ

0

Я считаю, дефис «-» принимается как часть стандарта HTTP, а подчеркивание «_» будет отклонено. См. W3C HTTP v1.1 Standard, Header Field Definitions, Section 14.4 Accept-Language для получения дополнительной информации.

Примечание: W3C означает World Wide Web Consortium.

+0

Спасибо за ссылку;) – Hesam

+0

@ Хезам: Не стоит беспокоиться. Рад, что я могу вам помочь! ;) – ChuongPham

0

"en" - код страны, указанный ISO 639. а US - код страны, указанный 3166. В Java объект Locale распознает язык как languageCode_countryCode (например, en_US), а не как languageCode-countryCode.

см this более

+0

Yup, я видел ваш ответ раньше на http://stackoverflow.com/a/4632943/513413, но мой вопрос связан с заголовком Http, и что произойдет, если «en_US» переходит на бэкэнд вместо «us-US», , – Hesam