Simplify widget language settings
This commit is contained in:
+3
-5
@@ -119,13 +119,11 @@
|
|||||||
<label>Rezim
|
<label>Rezim
|
||||||
<select name="widgetLanguageMode">
|
<select name="widgetLanguageMode">
|
||||||
<option value="auto">auto podle stranky</option>
|
<option value="auto">auto podle stranky</option>
|
||||||
<option value="fixed">natvrdo vybrany jazyk</option>
|
<option value="default">vychozi jazyk</option>
|
||||||
</select>
|
</select>
|
||||||
</label>
|
</label>
|
||||||
<label>Vychozi jazyk textu <select name="defaultLanguage"></select></label>
|
<label>Vychozi jazyk widgetu <select name="defaultLanguage"></select></label>
|
||||||
<label>Natvrdo jazyk <select name="fixedLanguage"></select></label>
|
<small>V auto rezimu widget pouzije jazyk predany ze stranky. Kdyz chybi nebo neni podporovany, pouzije vychozi jazyk.</small>
|
||||||
<label>Fallback jazyk <select name="fallbackLanguage"></select></label>
|
|
||||||
<small>Chybejici jazyk widgetu se pri prvnim pouziti prelozi AI a ulozi.</small>
|
|
||||||
</fieldset>
|
</fieldset>
|
||||||
<fieldset class="effect-settings widget-copy-settings">
|
<fieldset class="effect-settings widget-copy-settings">
|
||||||
<legend>Texty vychoziho jazyka</legend>
|
<legend>Texty vychoziho jazyka</legend>
|
||||||
|
|||||||
+3
-9
@@ -134,9 +134,7 @@ $("#settingsForm").addEventListener("submit", async (event) => {
|
|||||||
settings.widgetLanguage = {
|
settings.widgetLanguage = {
|
||||||
...(settings.widgetLanguage || {}),
|
...(settings.widgetLanguage || {}),
|
||||||
mode: form.get("widgetLanguageMode") || "auto",
|
mode: form.get("widgetLanguageMode") || "auto",
|
||||||
defaultLanguage,
|
defaultLanguage
|
||||||
fixedLanguage: form.get("fixedLanguage") || defaultLanguage,
|
|
||||||
fallbackLanguage: form.get("fallbackLanguage") || defaultLanguage
|
|
||||||
};
|
};
|
||||||
settings.widgetCopy = settings.widgetCopy || {};
|
settings.widgetCopy = settings.widgetCopy || {};
|
||||||
settings.widgetCopy[defaultLanguage] = {
|
settings.widgetCopy[defaultLanguage] = {
|
||||||
@@ -445,13 +443,9 @@ function renderWidgetLanguageOptions(form, settings) {
|
|||||||
const options = WIDGET_LANGUAGES
|
const options = WIDGET_LANGUAGES
|
||||||
.map(([code, label]) => `<option value="${code}">${code.toUpperCase()} - ${escapeHtml(label)}</option>`)
|
.map(([code, label]) => `<option value="${code}">${code.toUpperCase()} - ${escapeHtml(label)}</option>`)
|
||||||
.join("");
|
.join("");
|
||||||
for (const name of ["defaultLanguage", "fixedLanguage", "fallbackLanguage"]) {
|
form.defaultLanguage.innerHTML = options;
|
||||||
form[name].innerHTML = options;
|
form.widgetLanguageMode.value = language.mode === "fixed" ? "default" : language.mode || "auto";
|
||||||
}
|
|
||||||
form.widgetLanguageMode.value = language.mode || "auto";
|
|
||||||
form.defaultLanguage.value = language.defaultLanguage || "cs";
|
form.defaultLanguage.value = language.defaultLanguage || "cs";
|
||||||
form.fixedLanguage.value = language.fixedLanguage || "cs";
|
|
||||||
form.fallbackLanguage.value = language.fallbackLanguage || language.defaultLanguage || "cs";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function renderWidgetCopyFields(language) {
|
function renderWidgetCopyFields(language) {
|
||||||
|
|||||||
@@ -299,9 +299,7 @@ function defaultSettings() {
|
|||||||
return {
|
return {
|
||||||
widgetLanguage: {
|
widgetLanguage: {
|
||||||
mode: "auto",
|
mode: "auto",
|
||||||
defaultLanguage: "cs",
|
defaultLanguage: "cs"
|
||||||
fixedLanguage: "cs",
|
|
||||||
fallbackLanguage: "cs"
|
|
||||||
},
|
},
|
||||||
widgetCopy,
|
widgetCopy,
|
||||||
title: { cs: widgetCopy.cs.title, en: widgetCopy.en.title },
|
title: { cs: widgetCopy.cs.title, en: widgetCopy.en.title },
|
||||||
@@ -1096,12 +1094,11 @@ function mergeSiteSettings(currentSettings, incomingSettings) {
|
|||||||
function normalizeWidgetLanguageSettings(value) {
|
function normalizeWidgetLanguageSettings(value) {
|
||||||
const defaults = defaultSettings().widgetLanguage;
|
const defaults = defaultSettings().widgetLanguage;
|
||||||
const settings = { ...defaults, ...(value || {}) };
|
const settings = { ...defaults, ...(value || {}) };
|
||||||
const mode = settings.mode === "fixed" ? "fixed" : "auto";
|
const mode = settings.mode === "fixed" || settings.mode === "default" ? "default" : "auto";
|
||||||
|
const defaultLanguage = allowedWidgetLanguage(settings.defaultLanguage || settings.fixedLanguage || settings.fallbackLanguage) || defaults.defaultLanguage;
|
||||||
return {
|
return {
|
||||||
mode,
|
mode,
|
||||||
defaultLanguage: allowedWidgetLanguage(settings.defaultLanguage) || defaults.defaultLanguage,
|
defaultLanguage
|
||||||
fixedLanguage: allowedWidgetLanguage(settings.fixedLanguage) || defaults.fixedLanguage,
|
|
||||||
fallbackLanguage: allowedWidgetLanguage(settings.fallbackLanguage) || allowedWidgetLanguage(settings.defaultLanguage) || defaults.fallbackLanguage
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1162,7 +1159,7 @@ function getTranslationSettings() {
|
|||||||
function widgetLanguageForRequest(site, url) {
|
function widgetLanguageForRequest(site, url) {
|
||||||
const settings = parseJson(site.settings_json, defaultSettings());
|
const settings = parseJson(site.settings_json, defaultSettings());
|
||||||
const languageSettings = normalizeWidgetLanguageSettings(settings.widgetLanguage);
|
const languageSettings = normalizeWidgetLanguageSettings(settings.widgetLanguage);
|
||||||
if (languageSettings.mode === "fixed") return languageSettings.fixedLanguage;
|
if (languageSettings.mode === "default") return languageSettings.defaultLanguage;
|
||||||
return allowedWidgetLanguage(url.searchParams.get("lang")) || languageSettings.defaultLanguage;
|
return allowedWidgetLanguage(url.searchParams.get("lang")) || languageSettings.defaultLanguage;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1171,12 +1168,10 @@ async function widgetCopyForLanguage(site, requestedLanguage) {
|
|||||||
settings.widgetLanguage = normalizeWidgetLanguageSettings(settings.widgetLanguage);
|
settings.widgetLanguage = normalizeWidgetLanguageSettings(settings.widgetLanguage);
|
||||||
settings.widgetCopy = normalizeWidgetCopy(settings.widgetCopy || {}, settings);
|
settings.widgetCopy = normalizeWidgetCopy(settings.widgetCopy || {}, settings);
|
||||||
|
|
||||||
const language = allowedWidgetLanguage(requestedLanguage) || settings.widgetLanguage.fallbackLanguage;
|
const language = allowedWidgetLanguage(requestedLanguage) || settings.widgetLanguage.defaultLanguage;
|
||||||
if (settings.widgetCopy[language]) return { language, copy: settings.widgetCopy[language] };
|
if (settings.widgetCopy[language]) return { language, copy: settings.widgetCopy[language] };
|
||||||
|
|
||||||
const fallbackLanguage = settings.widgetCopy[settings.widgetLanguage.fallbackLanguage]
|
const fallbackLanguage = settings.widgetLanguage.defaultLanguage;
|
||||||
? settings.widgetLanguage.fallbackLanguage
|
|
||||||
: settings.widgetLanguage.defaultLanguage;
|
|
||||||
const fallbackCopy = settings.widgetCopy[fallbackLanguage] || defaultWidgetCopy("cs");
|
const fallbackCopy = settings.widgetCopy[fallbackLanguage] || defaultWidgetCopy("cs");
|
||||||
const translated = await translateWidgetCopyOnce(fallbackCopy, fallbackLanguage, language);
|
const translated = await translateWidgetCopyOnce(fallbackCopy, fallbackLanguage, language);
|
||||||
if (!translated) return { language: fallbackLanguage, copy: fallbackCopy };
|
if (!translated) return { language: fallbackLanguage, copy: fallbackCopy };
|
||||||
|
|||||||
Reference in New Issue
Block a user