IE11- Невозможно обнаружить язык браузера с помощью navigator.language [duplicate]

Я иногда сталкиваюсь с той же проблемой. Я могу ответить только на свою вторую пулю, потому что я не такой эксперт в R, как я с другими языками. Я обнаружил, что стандартный цикл for имеет некоторые неожиданные результаты. Скажем x = 0

for (i in 1:x) {
  print(i)
}

Выход:

[1] 1
[1] 0

В то время как с python, например,

for i in range(x):
  print i

ничего не делает. Цикл не вводится.

Я ожидал, что если x = 0, что в R, цикл не будет введен. Однако 1:0 является допустимым диапазоном чисел. Я еще не нашел хорошего обходного пути, кроме того, что оператор if обернул цикл for

0
задан Michael Smith 31 January 2018 в 11:53
поделиться

2 ответа

Ответ, связанный с тем, что IE11 не имеет доступа к свойству navigator.languages.

Необходимо изменить код (все еще можно сделать с рефакторингом!), чтобы проверить, присутствует ли свойство navigator.languages, затем тест для языков и возврат, если условия не были выполнены.

function* setLanguageFromBrowserSettings() {
  if (!navigator.languages) {
    if ((navigator.language === "en-US") || (navigator.language === "en")) {
      console.log("Language set to en-US");
      yield put({
        type: "Translations/SetLocale",
        payload: "en-US"
      });
    } else if ((navigator.language === "zh") || (navigator.language === "zh-CN") || (navigator.language === "zh-Hans")) {
      console.log("Language set to zh-Hans");
      yield put({
        type: "Translations/SetLocale",
        payload: "zh-Hans"
      });
    }
    return 0;
  }
  if ((navigator.languages[0] === "en-US") || (navigator.languages[0] === "en")) {
    console.log("Language set to en-US");
    yield put({
      type: "Translations/SetLocale",
      payload: "en-US"
    });
  } else if ((navigator.languages[0] === "zh") || (navigator.languages[0] === "zh-CN") || (navigator.languages[0] === "zh-Hans")) {
    console.log("Language set to zh-Hans");
    yield put({
      type: "Translations/SetLocale",
      payload: "zh-Hans"
    });
  }
}
0
ответ дан Michael Smith 16 August 2018 в 10:40
поделиться

У IE нет свойства языков в навигаторе Object.

У него есть userLanguage и Systemlanguage.

Пожалуйста, проверьте Как получить текущую локализацию браузера с помощью javascript?

Так что в случае IE вам, возможно, придется проверить navigator.userLanguage и navigator.Systemlanguage

0
ответ дан Vignesh Murugan 16 August 2018 в 10:40
поделиться
  • 1
    Спасибо. Ваш ответ помог мне разобраться в этом вопросе. Код был неудачным, потому что я проверял что-то, чего не было - у IE11 есть доступ к свойству navigator.language, что и мой специальный код IE11, но он был неудачным из-за попытки проверить значение несуществующего navigator.languages ​​prop. – Michael Smith 31 January 2018 в 12:10
Другие вопросы по тегам:

Похожие вопросы: