in lambda/fulfillment/lib/middleware/multilanguage.js [57:101]
function set_userLocale(Languages, userPreferredLocale, defaultConfidenceScore, req) {
let locale = '';
let userDetectedLocaleConfidence = Languages.Languages[0].Score;
let userDetectedLocale = Languages.Languages[0].LanguageCode;
let isPreferredLanguageDetected = false;
let i = 0;
let userDetectedSecondaryLocale;
qnabot.log("preferred lang", userPreferredLocale);
for (i = 0; i <= Languages.Languages.length - 1; i++) {
qnabot.log("found lang: " + Languages.Languages[i].LanguageCode);
qnabot.log("score: " + Languages.Languages[i].Score);
if (Languages.Languages[i].LanguageCode === userPreferredLocale) {
isPreferredLanguageDetected = true;
userDetectedLocale = Languages.Languages[i].LanguageCode;
}
if (i > 0 && Languages.Languages[i].LanguageCode !== 'en' && userDetectedSecondaryLocale === undefined) {
userDetectedSecondaryLocale = Languages.Languages[i].LanguageCode;
}
}
qnabot.log("isPreferredLanguageDetected", isPreferredLanguageDetected);
qnabot.log("detected locale", userDetectedLocale);
qnabot.log("detected secondary locale", userDetectedSecondaryLocale);
qnabot.log("detected Confidence", userDetectedLocaleConfidence);
_.set(req.session, "userDetectedLocale", userDetectedLocale);
_.set(req.session, "userDetectedLocaleConfidence", userDetectedLocaleConfidence);
if (userDetectedSecondaryLocale) {
_.set(req.session, "userDetectedSecondaryLocale", userDetectedSecondaryLocale);
} else {
if (req.session.userDetectedSecondaryLocale) delete req.session.userDetectedSecondaryLocale;
}
if (userPreferredLocale && userDetectedLocale !== '') {
locale = userPreferredLocale;
qnabot.log("set user preference as language to use: ", locale);
} else if ((userPreferredLocale === undefined || userPreferredLocale === '') && userDetectedLocaleConfidence <= defaultConfidenceScore) {
locale = 'en'; // default to english
qnabot.log("Detected language confidence too low, defaulting to English");
} else {
locale = userDetectedLocale;
qnabot.log("set detected language as language to use: ", locale);
}
return locale;
}