Clarify widget save translation action

This commit is contained in:
rajchales-monito
2026-07-30 09:35:30 +02:00
parent c6dfd75b24
commit a9ba22aafa
3 changed files with 49 additions and 2 deletions
+1 -1
View File
@@ -165,7 +165,7 @@
<label><input name="messageWiggle" type="checkbox"> zhoupnuti</label> <label><input name="messageWiggle" type="checkbox"> zhoupnuti</label>
</fieldset> </fieldset>
<div class="settings-actions"> <div class="settings-actions">
<button type="submit">Uložit</button> <button type="submit">Uložit a přeložit</button>
<span id="settingsSaveStatus" class="settings-save-status" aria-live="polite"></span> <span id="settingsSaveStatus" class="settings-save-status" aria-live="polite"></span>
</div> </div>
</form> </form>
+27 -1
View File
@@ -493,7 +493,18 @@ function widgetCopyForAdmin(settings, language) {
placeholder: settings.placeholder?.[lang], placeholder: settings.placeholder?.[lang],
sendLabel: settings.sendLabel?.[lang] sendLabel: settings.sendLabel?.[lang]
}; };
return { ...defaultWidgetCopy(lang), ...legacy, ...copy }; return normalizeWidgetCopyForAdmin({ ...defaultWidgetCopy(lang), ...legacy, ...copy }, lang);
}
function normalizeWidgetCopyForAdmin(copy, language) {
if (language !== "cs") return copy;
const defaults = defaultWidgetCopy("cs");
const legacy = legacyCzechWidgetCopy();
const normalized = { ...copy };
for (const field of Object.keys(legacy)) {
if (normalized[field] === legacy[field]) normalized[field] = defaults[field];
}
return normalized;
} }
function defaultWidgetCopy(language) { function defaultWidgetCopy(language) {
@@ -525,6 +536,21 @@ function defaultWidgetCopy(language) {
}; };
} }
function legacyCzechWidgetCopy() {
return {
title: "Potrebujete poradit?",
intro: "Napiste nam. Odpovime co nejdrive.",
offlineIntro: "Ted nejsme online, ale zpravu nam muzete nechat.",
placeholder: "Napiste zpravu...",
sendLabel: "Odeslat",
dropzoneLabel: "Pridat fotku nebo pretahnout",
onlineLabel: "Jsme online",
newReplyLabel: "Nova odpoved",
infoText: "Zpravu a technicke udaje relace zpracujeme jen pro odpoved na vas dotaz.",
operatorReplyLabel: "odpovida"
};
}
function syncLegacyWidgetCopy(settings) { function syncLegacyWidgetCopy(settings) {
settings.title = settings.title || {}; settings.title = settings.title || {};
settings.intro = settings.intro || {}; settings.intro = settings.intro || {};
+21
View File
@@ -375,6 +375,25 @@ function defaultWidgetCopy(language) {
}; };
} }
function legacyCzechWidgetCopy() {
return {
title: "Potrebujete poradit?",
intro: "Napiste nam. Odpovime co nejdrive.",
offlineIntro: "Ted nejsme online, ale zpravu nam muzete nechat.",
placeholder: "Napiste zpravu...",
sendLabel: "Odeslat",
dropzoneLabel: "Pridat fotku nebo pretahnout",
onlineLabel: "Jsme online",
offlineLabel: "Offline",
newReplyLabel: "Nova odpoved",
typingLabel: "Operator pise...",
infoTitle: "GDPR informace",
infoText: "Zpravu a technicke udaje relace zpracujeme jen pro odpoved na vas dotaz.",
closeLabel: "Zmensit chat",
operatorReplyLabel: "odpovida"
};
}
function configuredUsers() { function configuredUsers() {
const users = []; const users = [];
for (let i = 1; i < 50; i += 1) { for (let i = 1; i < 50; i += 1) {
@@ -1139,9 +1158,11 @@ function normalizeWidgetCopy(value, settings = {}) {
function normalizeWidgetCopyEntry(value, language) { function normalizeWidgetCopyEntry(value, language) {
const defaults = defaultWidgetCopy(language === "en" ? "en" : "cs"); const defaults = defaultWidgetCopy(language === "en" ? "en" : "cs");
const legacyCs = language === "cs" ? legacyCzechWidgetCopy() : null;
const copy = {}; const copy = {};
for (const field of WIDGET_COPY_FIELDS) { for (const field of WIDGET_COPY_FIELDS) {
copy[field] = String(value?.[field] || defaults[field] || "").trim(); copy[field] = String(value?.[field] || defaults[field] || "").trim();
if (legacyCs && copy[field] === legacyCs[field]) copy[field] = defaults[field];
} }
return copy; return copy;
} }