Force UNCLOSEAI_LANGUAGE to override user setting and disable selector
This commit is contained in:
parent
f7adaa1d74
commit
15decd2ab6
2 changed files with 39 additions and 27 deletions
|
|
@ -26,17 +26,18 @@ export async function getSystemMessage() {
|
|||
const shouldReplace = typeof window !== "undefined" && window.UNCLOSEAI_SYSTEM_PROMPT_REPLACE === true;
|
||||
|
||||
// Get user's language preference
|
||||
// Priority: localStorage > window.UNCLOSEAI_LANGUAGE > "en"
|
||||
// Priority: window.UNCLOSEAI_LANGUAGE (forced by embed) > localStorage > "en"
|
||||
let userLang = "en";
|
||||
try {
|
||||
const storedLang = localStorage.getItem("uncloseai_language");
|
||||
const embedLang = (typeof window !== "undefined" && window.UNCLOSEAI_LANGUAGE) ? window.UNCLOSEAI_LANGUAGE : null;
|
||||
userLang = storedLang || embedLang || "en";
|
||||
} catch (error) {
|
||||
console.warn("Failed to read language preference:", error);
|
||||
// Fall back to embed config if localStorage fails
|
||||
if (typeof window !== "undefined" && window.UNCLOSEAI_LANGUAGE) {
|
||||
userLang = window.UNCLOSEAI_LANGUAGE;
|
||||
const embedLang = (typeof window !== "undefined" && window.UNCLOSEAI_LANGUAGE) ? window.UNCLOSEAI_LANGUAGE : null;
|
||||
|
||||
// If embed forces a language, always use it (no user override)
|
||||
if (embedLang) {
|
||||
userLang = embedLang;
|
||||
} else {
|
||||
try {
|
||||
userLang = localStorage.getItem("uncloseai_language") || "en";
|
||||
} catch (error) {
|
||||
console.warn("Failed to read language preference:", error);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -445,12 +445,21 @@ async function openUncloseaiEmbeddedModalNew() {
|
|||
const { SUPPORTED_LANGUAGES, NATIVE_LANGUAGE_NAMES } = await import(
|
||||
"./translation.js"
|
||||
);
|
||||
const currentLang = getUserLanguagePreference();
|
||||
|
||||
// Check if language is forced by embed config
|
||||
const forcedLang = (typeof window !== "undefined" && window.UNCLOSEAI_LANGUAGE) ? window.UNCLOSEAI_LANGUAGE : null;
|
||||
const currentLang = forcedLang || getUserLanguagePreference();
|
||||
|
||||
const languageSelect = document.createElement("select");
|
||||
languageSelect.id = "hermes-language-select";
|
||||
languageSelect.className = "uncloseai-modal-select";
|
||||
|
||||
// If language is forced, disable the selector
|
||||
if (forcedLang) {
|
||||
languageSelect.disabled = true;
|
||||
languageSelect.title = "Language is set by this site";
|
||||
}
|
||||
|
||||
// Add options for each supported language
|
||||
Object.entries(SUPPORTED_LANGUAGES).forEach(([code, englishName]) => {
|
||||
const option = document.createElement("option");
|
||||
|
|
@ -465,24 +474,26 @@ async function openUncloseaiEmbeddedModalNew() {
|
|||
languageSelect.appendChild(option);
|
||||
});
|
||||
|
||||
// Handle language change
|
||||
languageSelect.onchange = () => {
|
||||
const newLang = languageSelect.value;
|
||||
setUserLanguagePreference(newLang);
|
||||
// Handle language change (only if not forced)
|
||||
if (!forcedLang) {
|
||||
languageSelect.onchange = () => {
|
||||
const newLang = languageSelect.value;
|
||||
setUserLanguagePreference(newLang);
|
||||
|
||||
// Show confirmation
|
||||
const selectedOption = languageSelect.options[languageSelect.selectedIndex];
|
||||
console.log(`Language changed to: ${selectedOption.textContent}`);
|
||||
|
||||
// Refresh all UI text in the modal
|
||||
refreshModalUI();
|
||||
// Show confirmation
|
||||
const selectedOption = languageSelect.options[languageSelect.selectedIndex];
|
||||
console.log(`Language changed to: ${selectedOption.textContent}`);
|
||||
|
||||
// Notify user to refresh for full effect
|
||||
setTimeout(() => {
|
||||
const langName = SUPPORTED_LANGUAGES[newLang];
|
||||
alert(getUIText("languageChanged", { lang: langName }));
|
||||
}, 100);
|
||||
};
|
||||
// Refresh all UI text in the modal
|
||||
refreshModalUI();
|
||||
|
||||
// Notify user to refresh for full effect
|
||||
setTimeout(() => {
|
||||
const langName = SUPPORTED_LANGUAGES[newLang];
|
||||
alert(getUIText("languageChanged", { lang: langName }));
|
||||
}, 100);
|
||||
};
|
||||
}
|
||||
|
||||
languageSection.appendChild(languageSelect);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue