ui: auto-detect browser language, re-render dynamic content on lang switch
This commit is contained in:
@@ -435,6 +435,27 @@ function renderAuth() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setLanguage(lang) {
|
||||||
|
localStorage.setItem("tutor_lang", lang);
|
||||||
|
document.documentElement.lang = lang;
|
||||||
|
updateStaticText();
|
||||||
|
document.querySelectorAll(".lang-btn").forEach((btn) => {
|
||||||
|
btn.classList.toggle("is-active", btn.dataset.lang === lang);
|
||||||
|
});
|
||||||
|
if (state.session) renderSession();
|
||||||
|
renderFeedback();
|
||||||
|
renderProgress();
|
||||||
|
renderOntology();
|
||||||
|
renderAssetPrompt();
|
||||||
|
const user = JSON.parse(localStorage.getItem("tutor_user") || "null");
|
||||||
|
const token = localStorage.getItem("tutor_token");
|
||||||
|
if (user && token) {
|
||||||
|
setStatus(t("signedInAs", user.email || user.name));
|
||||||
|
} else {
|
||||||
|
setStatus(t("ready"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
els.logoutButton.addEventListener("click", () => {
|
els.logoutButton.addEventListener("click", () => {
|
||||||
localStorage.removeItem("tutor_token");
|
localStorage.removeItem("tutor_token");
|
||||||
localStorage.removeItem("tutor_user");
|
localStorage.removeItem("tutor_user");
|
||||||
@@ -485,16 +506,18 @@ function escapeHTML(value) {
|
|||||||
document.querySelectorAll(".lang-switch").forEach((group) => {
|
document.querySelectorAll(".lang-switch").forEach((group) => {
|
||||||
group.addEventListener("click", (e) => {
|
group.addEventListener("click", (e) => {
|
||||||
if (!e.target.dataset.lang) return;
|
if (!e.target.dataset.lang) return;
|
||||||
const lang = e.target.dataset.lang;
|
setLanguage(e.target.dataset.lang);
|
||||||
localStorage.setItem("tutor_lang", lang);
|
|
||||||
document.documentElement.lang = lang;
|
|
||||||
updateStaticText();
|
|
||||||
document.querySelectorAll(".lang-btn").forEach((btn) => {
|
|
||||||
btn.classList.toggle("is-active", btn.dataset.lang === lang);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (!localStorage.getItem("tutor_lang")) {
|
||||||
|
const browserLang = navigator.language || navigator.userLanguage || "";
|
||||||
|
const lang = browserLang.toLowerCase().startsWith("ko") ? "ko" : "en";
|
||||||
|
localStorage.setItem("tutor_lang", lang);
|
||||||
|
document.documentElement.lang = lang;
|
||||||
|
}
|
||||||
|
|
||||||
updateStaticText();
|
updateStaticText();
|
||||||
window.renderAuth = renderAuth;
|
window.renderAuth = renderAuth;
|
||||||
|
window.setLanguage = setLanguage;
|
||||||
renderAuth();
|
renderAuth();
|
||||||
|
|||||||
Reference in New Issue
Block a user