I18n: Localize QR scanner error messages

This commit is contained in:
dyzulk
2026-01-12 09:14:03 +07:00
parent 9891d6a06e
commit 1036249082
2 changed files with 19 additions and 6 deletions

View File

@@ -50,7 +50,11 @@ const translations = {
adv_msg: "Jika tidak terjadi apa-apa, buka iklan secara manual.", adv_msg: "Jika tidak terjadi apa-apa, buka iklan secara manual.",
adv_link: "iklan", adv_link: "iklan",
adv_manually: "secara manual", adv_manually: "secara manual",
powered_by: "Didukung oleh" powered_by: "Didukung oleh",
qr_err_unauthorized: "Domain Tidak Sah",
qr_err_invalid_url: "URL Login Hotspot Tidak Sah",
qr_err_invalid_content: "Konten Tidak Sah (Hanya URL)",
qr_err_parse: "Gagal Membaca QR"
}, },
en: { en: {
lang_name: "English", lang_name: "English",
@@ -103,7 +107,11 @@ const translations = {
adv_msg: "If nothing happens, open advertisement manually.", adv_msg: "If nothing happens, open advertisement manually.",
adv_link: "advertisement", adv_link: "advertisement",
adv_manually: "manually", adv_manually: "manually",
powered_by: "Powered by" powered_by: "Powered by",
qr_err_unauthorized: "Unauthorized Domain",
qr_err_invalid_url: "Invalid Hotspot Login URL",
qr_err_invalid_content: "Invalid Content (Only URL allowed)",
qr_err_parse: "QR Parse Error"
} }
}; };
@@ -155,4 +163,9 @@ function initLanguage() {
applyLanguage(savedLang); applyLanguage(savedLang);
} }
function getTranslation(key) {
const lang = localStorage.getItem('twinpath_lang') || 'en';
return (translations[lang] && translations[lang][key]) ? translations[lang][key] : key;
}
document.addEventListener('DOMContentLoaded', initLanguage); document.addEventListener('DOMContentLoaded', initLanguage);

View File

@@ -55,24 +55,24 @@ function handleDecodedText(decodedText) {
} }
} else { } else {
isUnauthorized = true; isUnauthorized = true;
blockReason = "Invalid Hotspot Login URL"; blockReason = getTranslation('qr_err_invalid_url');
} }
} else { } else {
// ILLEGAL DOMAIN: Strict blocking // ILLEGAL DOMAIN: Strict blocking
console.warn(`Blocked unauthorized domain: ${hostname}`); console.warn(`Blocked unauthorized domain: ${hostname}`);
isUnauthorized = true; isUnauthorized = true;
blockReason = `Unauthorized Domain: ${hostname}`; blockReason = getTranslation('qr_err_unauthorized') + `: ${hostname}`;
} }
} else { } else {
// NOT A URL: Block plain text / WiFi SSIDs per requirement // NOT A URL: Block plain text / WiFi SSIDs per requirement
isUnauthorized = true; isUnauthorized = true;
blockReason = "Invalid Content (Only URL allowed)"; blockReason = getTranslation('qr_err_invalid_content');
console.warn("Blocked non-URL content:", decodedText); console.warn("Blocked non-URL content:", decodedText);
} }
} catch (e) { } catch (e) {
console.error("Error parsing QR URL:", e); console.error("Error parsing QR URL:", e);
isUnauthorized = true; isUnauthorized = true;
blockReason = "QR Parse Error"; blockReason = getTranslation('qr_err_parse');
} }
// Fill inputs (only if authorized) // Fill inputs (only if authorized)