${tearOffHtml}
${redactionToHtml(config.title)}
@@ -568,6 +720,7 @@ Join us in a revolution that values truth and transparency. Together, we can bui
el("poster-url-output").textContent = poster.posterUrl;
el("field-url").value = poster.posterUrl;
refreshIdentityState();
+ syncUiLanguage(poster.payload.lang);
renderPreview(normalizePayload(poster.payload));
}
@@ -636,6 +789,8 @@ Join us in a revolution that values truth and transparency. Together, we can bui
: await fetchEvent(parsed.id, relays);
const payload = payloadFromEvent(nostrEvent);
const config = normalizePayload(payload);
+ syncUiLanguage(config.lang);
+ el("field-lang").value = config.lang;
el("viewer-config-output").value = JSON.stringify(config, null, 2);
renderPreview(config);
statusElement.textContent = `Fetched ${parsed.type === "address" ? parsed.address.identifier : parsed.id}`;
@@ -643,7 +798,7 @@ Join us in a revolution that values truth and transparency. Together, we can bui
}
document.addEventListener("DOMContentLoaded", () => {
- setDefaultText();
+ setDefaultText(getStoredUiLang() || navigator.language.split("-")[0]);
const urlEvent = getUrlEventReference();
setMode(window.location.hash === "#editor" && !urlEvent ? "editor" : "viewer");
if (urlEvent) {
@@ -660,6 +815,12 @@ Join us in a revolution that values truth and transparency. Together, we can bui
button.addEventListener("click", () => setMode(button.dataset.mode));
});
+ el("field-lang").addEventListener("change", () => {
+ const lang = supportedLang(el("field-lang").value || FALLBACK_LANG);
+ applyFlyerDefaults(lang);
+ renderPreview(buildPayloadFromForm());
+ });
+
el("open-viewer-controls").addEventListener("click", openViewerDrawer);
el("close-viewer-controls").addEventListener("click", closeViewerDrawer);
el("viewer-editor").addEventListener("click", () => setMode("editor"));