From 0f94d640acc2e9c49c463c5b9c85037cc22c22fe Mon Sep 17 00:00:00 2001
From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com>
Date: Thu, 4 Jun 2026 22:30:50 -0400
Subject: [PATCH] added language selector
---
site/nostr/index.html | 1 +
site/nostr/nostr-client.css | 11 +++++++++++
site/nostr/nostr-client.js | 33 +++++++++++++++++++++------------
3 files changed, 33 insertions(+), 12 deletions(-)
diff --git a/site/nostr/index.html b/site/nostr/index.html
index 0dadd36..901a98e 100644
--- a/site/nostr/index.html
+++ b/site/nostr/index.html
@@ -22,6 +22,7 @@
+
diff --git a/site/nostr/nostr-client.css b/site/nostr/nostr-client.css
index affb420..881c379 100644
--- a/site/nostr/nostr-client.css
+++ b/site/nostr/nostr-client.css
@@ -572,6 +572,7 @@ body.mode-viewer .viewer-floating {
right: 12px;
z-index: 20;
display: flex;
+ align-items: center;
gap: 8px;
}
@@ -581,6 +582,15 @@ body.mode-viewer .viewer-floating button {
font-size: 12px;
}
+body.mode-viewer .viewer-floating select {
+ width: auto;
+ min-height: 34px;
+ max-width: 180px;
+ padding: 6px 8px;
+ font-size: 12px;
+ background: #fff;
+}
+
body.mode-viewer #viewer-panel {
display: none;
}
@@ -657,6 +667,7 @@ body.mode-viewer #viewer-panel.drawer-open .result-panel {
#open-viewer-controls,
#viewer-print,
#viewer-editor,
+ #viewer-lang,
body > main > .panel,
.preview-toolbar,
.viewer-drawer {
diff --git a/site/nostr/nostr-client.js b/site/nostr/nostr-client.js
index ad190b8..a5871f3 100644
--- a/site/nostr/nostr-client.js
+++ b/site/nostr/nostr-client.js
@@ -123,21 +123,23 @@ Join us in a revolution that values truth and transparency. Together, we can bui
}
function populateLanguageOptions() {
- const select = el("field-lang");
- if (!select) return;
const langEntries = Object.entries(LOCALES).sort((a, b) => {
const aName = (a[1] && a[1].meta && a[1].meta.language_name) || a[0];
const bName = (b[1] && b[1].meta && b[1].meta.language_name) || b[0];
return aName.localeCompare(bName);
});
- select.innerHTML = "";
- for (const [code, data] of langEntries) {
- const option = document.createElement("option");
- option.value = code;
- const meta = data.meta || {};
- option.textContent = `${meta.flag || ""} ${meta.language_name || code}`.trim();
- select.appendChild(option);
- }
+ ["field-lang", "viewer-lang"].forEach((selectId) => {
+ const select = el(selectId);
+ if (!select) return;
+ select.innerHTML = "";
+ for (const [code, data] of langEntries) {
+ const option = document.createElement("option");
+ option.value = code;
+ const meta = data.meta || {};
+ option.textContent = `${meta.flag || ""} ${meta.language_name || code}`.trim();
+ select.appendChild(option);
+ }
+ });
}
function syncUiLanguage(lang) {
@@ -161,8 +163,10 @@ Join us in a revolution that values truth and transparency. Together, we can bui
setButtonText("viewer-editor", translate("cli.manage_action_edit", selected) || BUTTON_LABELS["viewer-editor"]);
setButtonText("close-viewer-controls", translate("cli.manage_action_back", selected) || BUTTON_LABELS["close-viewer-controls"]);
- const select = el("field-lang");
- if (select) select.value = selected;
+ ["field-lang", "viewer-lang"].forEach((selectId) => {
+ const select = el(selectId);
+ if (select) select.value = selected;
+ });
}
function setDefaultText(lang) {
@@ -820,6 +824,11 @@ Join us in a revolution that values truth and transparency. Together, we can bui
applyFlyerDefaults(lang);
renderPreview(buildPayloadFromForm());
});
+ el("viewer-lang").addEventListener("change", () => {
+ const lang = supportedLang(el("viewer-lang").value || FALLBACK_LANG);
+ applyFlyerDefaults(lang);
+ renderPreview(buildPayloadFromForm());
+ });
el("open-viewer-controls").addEventListener("click", openViewerDrawer);
el("close-viewer-controls").addEventListener("click", closeViewerDrawer);