Я иногда сталкиваюсь с той же проблемой. Я могу ответить только на свою вторую пулю, потому что я не такой эксперт в 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
Ответ, связанный с тем, что 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"
});
}
}
У IE нет свойства языков в навигаторе Object.
У него есть userLanguage и Systemlanguage.
Пожалуйста, проверьте Как получить текущую локализацию браузера с помощью javascript?
Так что в случае IE вам, возможно, придется проверить navigator.userLanguage и navigator.Systemlanguage