diff --git a/app/static/js/app.js b/app/static/js/app.js index d46212d..baec7f4 100644 --- a/app/static/js/app.js +++ b/app/static/js/app.js @@ -3126,20 +3126,20 @@ function updateNotificationToggleUI() { if (permission === 'unsupported') { statusBadge.className = 'badge bg-secondary'; - statusBadge.textContent = 'Unavailable'; + statusBadge.textContent = t('settings.notif.unavailable'); toggleBtn.disabled = true; } else if (permission === 'denied') { statusBadge.className = 'badge bg-danger'; - statusBadge.textContent = 'Blocked'; + statusBadge.textContent = t('settings.notif.blocked'); toggleBtn.disabled = false; } else if (permission === 'granted' && isEnabled) { statusBadge.className = 'badge bg-success'; - statusBadge.textContent = 'Enabled'; + statusBadge.textContent = t('common.enabled'); toggleBtn.disabled = false; } else { // permission === 'default' OR (permission === 'granted' AND !isEnabled) statusBadge.className = 'badge bg-secondary'; - statusBadge.textContent = 'Disabled'; + statusBadge.textContent = t('common.disabled'); toggleBtn.disabled = false; } } diff --git a/app/templates/base.html b/app/templates/base.html index 91a6adc..5354a9b 100644 --- a/app/templates/base.html +++ b/app/templates/base.html @@ -768,7 +768,7 @@
docs/translations.md.
+ {{ t_html('settings.appear.language_hint') }}
| Item | -Placement | +{{ t('settings.appear.item') }} | +{{ t('settings.appear.placement') }} |
|---|---|---|---|
| Filter messages | +{{ t('menu.filter') }} |
-
+
-
+
-
+
|
|
| Search messages | +{{ t('menu.search') }} |
-
+
-
+
-
+
|
|
| Direct Messages | +{{ t('dm.title') }} |
-
+
-
+
-
+
|
|
| Contact Management | +{{ t('contacts.title') }} |
-
+
-
+
-
+
|
|
| Settings | +{{ t('common.settings') }} |
-
+
-
+
-
+
|
|
| Send Advert | +{{ t('menu.advert') }} |
-
+
-
+
-
+
|
|
| Flood Advert | +{{ t('menu.flood_advert') }} |
-
+
-
+
-
+
|
|
| Map | +{{ t('menu.map') }} |
-
+
-
+
-
+
|
|
| Console | +{{ t('console.title') }} |
-
+
-
+
-
+
|
|
| My Repeaters | +{{ t('repeaters.title') }} |
-
+
-
+
-
+
|
|
| Path Analyzer | +{{ t('pa.title') }} |
-
+
-
+
-
+
|
|
| Device Info | +{{ t('menu.device_info') }} |
-
+
-
+
-
+
|
|
| System Log | +{{ t('logs.title') }} |
-
+
-
+
-
+
|
| Button size (px) | +{{ t('settings.appear.btn_size') }} | 56 |
| Spacing (px) | +{{ t('settings.appear.spacing') }} | 12 |
| Position | +{{ t('settings.appear.position') }} | - + |
| Manual approval enabled + | {{ t('settings.contacts.manual_approval') }} + title="{{ t('settings.contacts.manual_approval_help') }}"> |
@@ -1011,9 +1009,9 @@
|
| Suppress new advert notifications + | {{ t('settings.contacts.suppress_notifs') }} + title="{{ t('settings.contacts.suppress_notifs_help') }}"> |
@@ -1022,9 +1020,9 @@
|
| Automatically add new contacts to "Ignored" + | {{ t('settings.contacts.auto_ignore') }} + title="{{ t('settings.contacts.auto_ignore_help') }}"> |
@@ -1037,11 +1035,9 @@
- Only repeaters allowing a region will forward messages tagged with it.
- Find standardised region names at
- regions.meshcore.nz.
+ {{ t_html('settings.regions.intro') }}
- Region Registry+{{ t('settings.regions.registry') }}
Loading...
@@ -1050,88 +1046,81 @@
- Tip: pick the default region via the radio button, or select None to fall back to the firmware default. The chosen region is also pushed to the firmware so any untagged channel uses it.
+ {{ t_html('settings.regions.tip') }}
- Add MeshCore Analyzer services to choose from when clicking
- under a group chat message. The URL must contain the
-
- {packetHash} placeholder — it is replaced with the message's packet hash.
+ {{ t_html('settings.analyzer.intro') }}
Analyzer Services+{{ t('settings.analyzer.services') }}
Loading...
- Tip: star one analyzer to use it without being asked. Clear the star to be prompted on every click.
- Disabled analyzers stay in the list but are hidden from the chooser.
+ {{ t('settings.analyzer.tip') }}
- Publish every mesh packet this device overhears to
- MQTT brokers, in the
meshcore-packet-capture format
- (topics meshcore/IATA/PUBKEY/packets). Compatible with
- letsmesh-style packet analyzers.
+ {{ t_html('settings.observer.intro') }}
-
+
-
+
-
+
+ min="0" max="8760" step="1" placeholder="{{ t('settings.observer.advert_interval_ph') }}">
- The 3-letter location code is used in MQTT topics; leave it empty for the flat
-
- meshcore/packets topics. Advert interval 0 disables scheduled flood adverts.
+ {{ t_html('settings.observer.hint') }}
MQTT Brokers+{{ t('settings.observer.brokers') }}
Loading...
-
Browser notifications appear when the app is hidden or in the background. +{{ t('settings.notif.desc') }} @@ -1139,7 +1128,7 @@{packetHash} placeholder — it is replaced with the message's packet hash.",
+ "settings.analyzer.services": "Analyzer Services",
+ "settings.analyzer.tip": "Tip: star one analyzer to use it without being asked. Clear the star to be prompted on every click. Disabled analyzers stay in the list but are hidden from the chooser.",
+ "settings.appear.btn_size": "Button size (px)",
+ "settings.appear.hide_fab": "Hide Quick Access buttons",
+ "settings.appear.hide_fab_hint": "When hidden, all items appear in the Main Menu.",
+ "settings.appear.item": "Item",
+ "settings.appear.language": "Language",
+ "settings.appear.language_hint": "Applies to this browser and becomes the server default for others. Add your own by dropping a catalog into the translations folder — see docs/translations.md.",
+ "settings.appear.place_fab": "Quick Access",
+ "settings.appear.place_menu": "Main Menu",
+ "settings.appear.placement": "Placement",
+ "settings.appear.placement_aria": "{item} placement",
+ "settings.appear.position": "Position",
+ "settings.appear.quick_access": "Quick Access Buttons",
+ "settings.appear.reload_title": "Re-scan the translations folder",
+ "settings.appear.reset_default": "Reset to default",
+ "settings.appear.spacing": "Spacing (px)",
+ "settings.appear.theme": "Theme",
+ "settings.appear.theme_dark": "Dark",
+ "settings.appear.theme_dark_desc": "Easy on the eyes, deep navy palette",
+ "settings.appear.theme_light": "Light",
+ "settings.appear.theme_light_desc": "Classic bright interface",
"settings.chat.autoclose": "Auto-close after (s)",
"settings.chat.autoclose_help": "Seconds before the route popup closes automatically",
"settings.chat.no_autoclose": "Don't close automatically",
@@ -737,6 +760,12 @@
"settings.chat.quote_len_help": "Default max UTF-8 bytes for truncated quotes",
"settings.chat.route_popup": "Route popup",
"settings.chat.route_popup_desc": "The popup shown when tapping \"SNR | Hops\" under a message. Also applies to DMs.",
+ "settings.contacts.auto_ignore": "Automatically add new contacts to \"Ignored\"",
+ "settings.contacts.auto_ignore_help": "Every new advert is automatically marked as Ignored — no notifications, no badge. Contacts still appear under Existing Contacts (Cache) and can be promoted with 'To Device'. Requires Manual approval ON.",
+ "settings.contacts.manual_approval": "Manual approval enabled",
+ "settings.contacts.manual_approval_help": "When enabled, new contacts must be manually approved before they can communicate with your node",
+ "settings.contacts.suppress_notifs": "Suppress new advert notifications",
+ "settings.contacts.suppress_notifs_help": "Hide the badge over Contact Management and the browser notification when new pending contacts arrive. The Pending Contacts list itself still shows them. Requires Manual approval ON.",
"settings.device.bw": "Bandwidth (kHz)",
"settings.device.cr": "Coding Rate",
"settings.device.freq": "Frequency (MHz)",
@@ -782,6 +811,22 @@
"settings.msg.max_retries": "Max retries",
"settings.msg.max_retries_help": "Flood retry attempts (also used after path rotation)",
"settings.msg.other": "Other",
+ "settings.notif.blocked": "Blocked",
+ "settings.notif.desc": "Browser notifications appear when the app is hidden or in the background.",
+ "settings.notif.unavailable": "Unavailable",
+ "settings.notif.works_hidden": "Works when app is hidden",
+ "settings.observer.advert_interval": "Flood advert interval (h)",
+ "settings.observer.advert_interval_ph": "0 = off",
+ "settings.observer.brokers": "MQTT Brokers",
+ "settings.observer.enable": "Enable observer",
+ "settings.observer.hint": "The 3-letter location code is used in MQTT topics; leave it empty for the flat meshcore/packets topics. Advert interval 0 disables scheduled flood adverts.",
+ "settings.observer.iata": "Location code (IATA)",
+ "settings.observer.iata_ph": "e.g. KRK",
+ "settings.observer.intro": "Publish every mesh packet this device overhears to MQTT brokers, in the meshcore-packet-capture format (topics meshcore/IATA/PUBKEY/packets). Compatible with letsmesh-style packet analyzers.",
+ "settings.regions.intro": "Only repeaters allowing a region will forward messages tagged with it. Find standardised region names at regions.meshcore.nz.",
+ "settings.regions.name_ph": "Region name (e.g. pl, pl-ma)",
+ "settings.regions.registry": "Region Registry",
+ "settings.regions.tip": "Tip: pick the default region via the radio button, or select None to fall back to the firmware default. The chosen region is also pushed to the firmware so any untagged channel uses it.",
"settings.reset_defaults": "Reset to defaults",
"settings.tab.analyzer": "Analyzer",
"settings.tab.appearance": "Appearance",
diff --git a/app/translations/pl.json b/app/translations/pl.json
index 78cdab5..181d3b7 100644
--- a/app/translations/pl.json
+++ b/app/translations/pl.json
@@ -784,6 +784,29 @@
"search.tip_phrase": "dokładna fraza",
"search.tip_prefix": "dopasowanie przedrostka (hello, hellas...)",
"search.tips": "Wskazówki wyszukiwania:",
+ "settings.analyzer.intro": "Dodaj usługi MeshCore Analyzer do wyboru po kliknięciu pod wiadomością z czatu grupowego. URL musi zawierać znacznik {packetHash} — jest zastępowany hashem pakietu wiadomości.",
+ "settings.analyzer.services": "Usługi analizatorów",
+ "settings.analyzer.tip": "Wskazówka: oznacz gwiazdką jeden analizator, aby używać go bez pytania. Usuń gwiazdkę, aby pytać przy każdym kliknięciu. Wyłączone analizatory zostają na liście, ale są ukryte w oknie wyboru.",
+ "settings.appear.btn_size": "Rozmiar przycisku (px)",
+ "settings.appear.hide_fab": "Ukryj przyciski szybkiego dostępu",
+ "settings.appear.hide_fab_hint": "Gdy ukryte, wszystkie pozycje pojawiają się w menu głównym.",
+ "settings.appear.item": "Pozycja",
+ "settings.appear.language": "Język",
+ "settings.appear.language_hint": "Dotyczy tej przeglądarki i staje się domyślnym ustawieniem serwera dla pozostałych. Dodaj własny, wrzucając katalog tłumaczeń do folderu translations — zobacz docs/translations.md.",
+ "settings.appear.place_fab": "Szybki dostęp",
+ "settings.appear.place_menu": "Menu główne",
+ "settings.appear.placement": "Umieszczenie",
+ "settings.appear.placement_aria": "Umieszczenie: {item}",
+ "settings.appear.position": "Położenie",
+ "settings.appear.quick_access": "Przyciski szybkiego dostępu",
+ "settings.appear.reload_title": "Przeskanuj ponownie folder tłumaczeń",
+ "settings.appear.reset_default": "Przywróć domyślne",
+ "settings.appear.spacing": "Odstęp (px)",
+ "settings.appear.theme": "Motyw",
+ "settings.appear.theme_dark": "Ciemny",
+ "settings.appear.theme_dark_desc": "Łagodny dla oczu, głęboki granat",
+ "settings.appear.theme_light": "Jasny",
+ "settings.appear.theme_light_desc": "Klasyczny jasny interfejs",
"settings.chat.autoclose": "Zamknij automatycznie po (s)",
"settings.chat.autoclose_help": "Ile sekund do automatycznego zamknięcia popupu trasy",
"settings.chat.no_autoclose": "Nie zamykaj automatycznie",
@@ -793,6 +816,12 @@
"settings.chat.quote_len_help": "Domyślna maks. liczba bajtów UTF-8 dla skróconych cytatów",
"settings.chat.route_popup": "Popup trasy",
"settings.chat.route_popup_desc": "Popup pokazywany po dotknięciu \"SNR | Hops\" pod wiadomością. Dotyczy także DM-ów.",
+ "settings.contacts.auto_ignore": "Automatycznie dodawaj nowe kontakty do \"Ignorowanych\"",
+ "settings.contacts.auto_ignore_help": "Każdy nowy advert jest automatycznie oznaczany jako ignorowany — bez powiadomień, bez plakietki. Kontakty nadal pojawiają się w Istniejących kontaktach (pamięć) i można je przenieść przyciskiem \"Na urządzenie\". Wymaga włączonego zatwierdzania ręcznego.",
+ "settings.contacts.manual_approval": "Zatwierdzanie ręczne włączone",
+ "settings.contacts.manual_approval_help": "Gdy włączone, nowe kontakty muszą zostać ręcznie zatwierdzone, zanim będą mogły komunikować się z Twoim węzłem",
+ "settings.contacts.suppress_notifs": "Wycisz powiadomienia o nowych advertach",
+ "settings.contacts.suppress_notifs_help": "Ukryj plakietkę nad Zarządzaniem kontaktami oraz powiadomienie przeglądarki, gdy pojawiają się nowe oczekujące kontakty. Sama lista oczekujących kontaktów nadal je pokazuje. Wymaga włączonego zatwierdzania ręcznego.",
"settings.device.bw": "Bandwidth (kHz)",
"settings.device.cr": "Coding Rate",
"settings.device.freq": "Częstotliwość (MHz)",
@@ -838,6 +867,22 @@
"settings.msg.max_retries": "Maks. prób",
"settings.msg.max_retries_help": "Próby flood (używane także po rotacji ścieżki)",
"settings.msg.other": "Inne",
+ "settings.notif.blocked": "Zablokowane",
+ "settings.notif.desc": "Powiadomienia przeglądarki pojawiają się, gdy aplikacja jest ukryta lub w tle.",
+ "settings.notif.unavailable": "Niedostępne",
+ "settings.notif.works_hidden": "Działa, gdy aplikacja jest ukryta",
+ "settings.observer.advert_interval": "Interwał flood advert (h)",
+ "settings.observer.advert_interval_ph": "0 = wył.",
+ "settings.observer.brokers": "Brokery MQTT",
+ "settings.observer.enable": "Włącz observera",
+ "settings.observer.hint": "Trzyliterowy kod lokalizacji jest używany w tematach MQTT; zostaw pusty, aby użyć płaskich tematów meshcore/packets. Interwał advert równy 0 wyłącza zaplanowane flood adverty.",
+ "settings.observer.iata": "Kod lokalizacji (IATA)",
+ "settings.observer.iata_ph": "np. KRK",
+ "settings.observer.intro": "Publikuj każdy pakiet mesh usłyszany przez to urządzenie do brokerów MQTT, w formacie meshcore-packet-capture (tematy meshcore/IATA/PUBKEY/packets). Zgodne z analizatorami pakietów w stylu letsmesh.",
+ "settings.regions.intro": "Tylko repeatery zezwalające na dany region będą przekazywać oznaczone nim wiadomości. Standardowe nazwy regionów znajdziesz na regions.meshcore.nz.",
+ "settings.regions.name_ph": "Nazwa regionu (np. pl, pl-ma)",
+ "settings.regions.registry": "Rejestr regionów",
+ "settings.regions.tip": "Wskazówka: wybierz domyślny region przyciskiem radiowym albo wybierz Brak, aby wrócić do domyślnego ustawienia firmware. Wybrany region jest też wysyłany do firmware, więc użyje go każdy nieoznaczony kanał.",
"settings.reset_defaults": "Przywróć domyślne",
"settings.tab.analyzer": "Analizator",
"settings.tab.appearance": "Wygląd",
|