settings: add language dropdown (IT active, ES/FR/DE WIP)

This commit is contained in:
Giorgio Gilestro 2026-05-27 17:17:18 +02:00
parent f4025e3cbb
commit 50ac6b9366

View file

@ -224,6 +224,47 @@
})(); })();
</script> </script>
{# --- Language block ------------------------------------------------ #}
<details class="settings-section">
<summary class="settings-section__head">Language</summary>
<p class="settings-section__lede">
Language the AI uses for the strategic log, your daily digest, and
portfolio commentary. The interface itself stays in English for now.
</p>
<div class="settings-row">
<select id="lang-select" class="settings-select">
<option value="en" {% if (user.lang or 'en') == 'en' %}selected{% endif %}>English</option>
<option value="it" {% if (user.lang or 'en') == 'it' %}selected{% endif %}>Italiano</option>
<option value="es" disabled>Español &middot; coming soon</option>
<option value="fr" disabled>Français &middot; coming soon</option>
<option value="de" disabled>Deutsch &middot; coming soon</option>
</select>
<span id="lang-status" class="settings-status" aria-live="polite"></span>
</div>
<script>
(function () {
var sel = document.getElementById('lang-select');
var status = document.getElementById('lang-status');
if (!sel) return;
sel.addEventListener('change', async function () {
status.textContent = 'saving…';
try {
var r = await fetch('/api/settings/language', {
method: 'PATCH',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({lang: sel.value}),
});
if (!r.ok) throw new Error('HTTP ' + r.status);
status.textContent = '✓ saved';
setTimeout(function () { status.textContent = ''; }, 1500);
} catch (e) {
status.textContent = '✗ failed';
}
});
})();
</script>
</details>
{# --- Cloud sync block --------------------------------------------- #} {# --- Cloud sync block --------------------------------------------- #}
<details class="settings-section"> <details class="settings-section">
<summary class="settings-section__head">Cloud sync (encrypted)</summary> <summary class="settings-section__head">Cloud sync (encrypted)</summary>