@@ -9,7 +9,7 @@
-
Add Contact
+ {{ t('contacts.add.title') }}
{{ t('contacts.card.add_desc') }}
@@ -18,7 +18,7 @@
-
Pending Contacts
+ {{ t('contacts.pending.title') }}
{{ t('contacts.card.pending_desc') }}
@@ -29,7 +29,7 @@
-
Existing Contacts
+ {{ t('contacts.existing.title') }}
{{ t('contacts.card.existing_desc') }}
@@ -58,7 +58,7 @@
@@ -103,7 +103,7 @@
-
+
{{ t('contacts.cleanup.days_hint') }}
@@ -120,7 +120,7 @@
data-bs-placement="top"
title="{{ t('contacts.cleanup.enable_hint') }}">
- Status: Loading...
+ {{ t('contacts.cleanup.status_label') }} {{ t('common.loading') }}
@@ -157,7 +157,7 @@
@@ -168,24 +168,25 @@
-
The following 0 contact(s) will be permanently deleted:
+
+
{{ t_html('contacts.cleanup.delete_confirm') }}
- {{ t('common.warning') }} This action cannot be undone!
+ {{ t('common.warning') }} {{ t('contacts.cleanup.undo_warning') }}
diff --git a/app/templates/contacts-pending.html b/app/templates/contacts-pending.html
index 5a22a96..718946c 100644
--- a/app/templates/contacts-pending.html
+++ b/app/templates/contacts-pending.html
@@ -1,13 +1,13 @@
{% extends "contacts_base.html" %}
-{% block title %}Pending Contacts - mc-webui{% endblock %}
+{% block title %}{{ t('contacts.pending.title') }} - mc-webui{% endblock %}
{% block page_content %}
- Pending Contacts
+ {{ t('contacts.pending.title') }}
0
@@ -18,7 +18,7 @@
{{ t('common.back') }}
@@ -27,7 +27,7 @@
@@ -59,7 +59,7 @@
- Loading...
+ {{ t('common.loading') }}
{{ t('contacts.pending.loading') }}
@@ -89,12 +89,12 @@
-
You are about to approve 0 contacts:
+
{{ t_html('contacts.pending.approve_confirm') }}
@@ -102,13 +102,13 @@
- These contacts will be added to your device and can receive/send messages.
+ {{ t('contacts.pending.approve_note') }}
@@ -121,24 +121,24 @@
-
You are about to ignore 0 contacts:
+
{{ t_html('contacts.pending.ignore_confirm') }}
- Ignored contacts will not trigger new pending requests. You can unignore them later from the Existing Contacts page.
+ {{ t('contacts.pending.ignore_note') }}
diff --git a/app/translations/en.json b/app/translations/en.json
index 27cbfde..5be3f34 100644
--- a/app/translations/en.json
+++ b/app/translations/en.json
@@ -127,6 +127,7 @@
"contacts.add.adding": "Adding contact...",
"contacts.add.failed": "Failed to add contact.",
"contacts.add.key": "Key:",
+ "contacts.add.key_count": "{n} / 64 characters",
"contacts.add.name": "Name:",
"contacts.add.name_ph": "Contact name",
"contacts.add.preview": "Preview:",
@@ -134,7 +135,11 @@
"contacts.add.pubkey_ph": "e.g. a1b2c3d4...",
"contacts.add.qr_label": "Or upload a QR code image:",
"contacts.add.scanned": "Scanned:",
+ "contacts.add.start_camera": "Start Camera",
+ "contacts.add.stop_camera": "Stop Camera",
"contacts.add.success": "Contact added successfully!",
+ "contacts.add.tab_manual": "Manual",
+ "contacts.add.title": "Add Contact",
"contacts.add.type": "Contact Type:",
"contacts.add.type_short": "Type:",
"contacts.add.uri_hint": "Paste a meshcore:// URI from the MeshCore mobile app",
@@ -159,18 +164,25 @@
"contacts.card.add_desc": "Add from URI, QR code, or manual entry",
"contacts.card.existing_desc": "Manage all stored contacts",
"contacts.card.pending_desc": "Contacts awaiting manual approval",
+ "contacts.cleanup.confirm_title": "Confirm Contact Cleanup",
"contacts.cleanup.date_field": "Date Field:",
+ "contacts.cleanup.days": "Days of Inactivity (0 = ignore):",
"contacts.cleanup.days_hint": "Contacts inactive for more than this many days will be selected",
+ "contacts.cleanup.delete_btn": "Delete Contacts",
+ "contacts.cleanup.delete_confirm": "The following
0 contact(s) will be permanently deleted:",
"contacts.cleanup.enable": "Enable Auto-Cleanup",
"contacts.cleanup.enable_hint": "When enabled, contacts matching the above criteria will be automatically deleted daily at the specified hour",
"contacts.cleanup.last_advert": "Last Advert",
"contacts.cleanup.last_modified": "Last Modified",
"contacts.cleanup.name_filter": "Name Filter (optional):",
"contacts.cleanup.name_filter_ph": "Enter partial name to search...",
+ "contacts.cleanup.preview": "Preview Cleanup",
"contacts.cleanup.run_at": "Run at:",
+ "contacts.cleanup.status_label": "Status:",
"contacts.cleanup.title": "Cleanup Contacts",
"contacts.cleanup.title_hint": "Remove contacts based on various filter criteria",
"contacts.cleanup.types": "Contact Types:",
+ "contacts.cleanup.undo_warning": "This action cannot be undone!",
"contacts.confirm.block": "Block this contact? Their messages will be hidden from chat.",
"contacts.copy_title": "Click to copy",
"contacts.delete.confirm": "Delete Contact",
@@ -182,6 +194,7 @@
"contacts.existing.none_hint": "Contacts will appear here once added",
"contacts.existing.search_ph": "Search by name or public key...",
"contacts.existing.title": "Existing Contacts",
+ "contacts.filter.advanced": "Advanced Filters",
"contacts.filter.all_sources": "All sources",
"contacts.filter.all_types": "All Types",
"contacts.filter.blocked": "Blocked",
@@ -195,14 +208,22 @@
"contacts.inactive": "Inactive",
"contacts.last_advert": "Last advert: {time}",
"contacts.last_advert_unknown": "Last advert: Unknown",
+ "contacts.manage.title": "Contact Management Settings",
"contacts.map.show": "Show:",
"contacts.map.title": "Map",
"contacts.never_seen": "Never seen",
+ "contacts.pending.approve_confirm": "You are about to approve
0 contacts:",
+ "contacts.pending.approve_note": "These contacts will be added to your device and can receive/send messages.",
+ "contacts.pending.confirm_approve_title": "Confirm Batch Approval",
+ "contacts.pending.confirm_ignore_title": "Confirm Batch Ignore",
"contacts.pending.filter_hint": "Filter contacts by type or name, then approve or ignore them in bulk.",
+ "contacts.pending.ignore_confirm": "You are about to ignore
0 contacts:",
+ "contacts.pending.ignore_note": "Ignored contacts will not trigger new pending requests. You can unignore them later from the Existing Contacts page.",
"contacts.pending.load_failed": "Failed to load pending contacts",
"contacts.pending.loading": "Loading pending contacts...",
"contacts.pending.none": "No pending requests",
"contacts.pending.none_hint": "New contact requests will appear here when manual approval is enabled",
+ "contacts.pending.title": "Pending Contacts",
"contacts.protected_cannot_block": "Cannot block protected contact",
"contacts.protected_cannot_delete": "Cannot delete protected contact",
"contacts.protected_cannot_ignore": "Cannot ignore protected contact",
diff --git a/app/translations/pl.json b/app/translations/pl.json
index 181d3b7..0f9803e 100644
--- a/app/translations/pl.json
+++ b/app/translations/pl.json
@@ -139,6 +139,7 @@
"contacts.add.adding": "Dodawanie kontaktu...",
"contacts.add.failed": "Nie udało się dodać kontaktu.",
"contacts.add.key": "Klucz:",
+ "contacts.add.key_count": "{n} / 64 znaki",
"contacts.add.name": "Nazwa:",
"contacts.add.name_ph": "Nazwa kontaktu",
"contacts.add.preview": "Podgląd:",
@@ -146,7 +147,11 @@
"contacts.add.pubkey_ph": "np. a1b2c3d4...",
"contacts.add.qr_label": "Albo wgraj obraz z kodem QR:",
"contacts.add.scanned": "Zeskanowano:",
+ "contacts.add.start_camera": "Włącz kamerę",
+ "contacts.add.stop_camera": "Wyłącz kamerę",
"contacts.add.success": "Kontakt dodany pomyślnie!",
+ "contacts.add.tab_manual": "Ręcznie",
+ "contacts.add.title": "Dodaj kontakt",
"contacts.add.type": "Typ kontaktu:",
"contacts.add.type_short": "Typ:",
"contacts.add.uri_hint": "Wklej URI meshcore:// z aplikacji mobilnej MeshCore",
@@ -171,18 +176,25 @@
"contacts.card.add_desc": "Dodaj z URI, kodu QR lub ręcznie",
"contacts.card.existing_desc": "Zarządzaj wszystkimi zapisanymi kontaktami",
"contacts.card.pending_desc": "Kontakty oczekujące na ręczne zatwierdzenie",
+ "contacts.cleanup.confirm_title": "Potwierdź czyszczenie kontaktów",
"contacts.cleanup.date_field": "Pole daty:",
+ "contacts.cleanup.days": "Dni nieaktywności (0 = pomiń):",
"contacts.cleanup.days_hint": "Zaznaczone zostaną kontakty nieaktywne dłużej niż tyle dni",
+ "contacts.cleanup.delete_btn": "Usuń kontakty",
+ "contacts.cleanup.delete_confirm": "Następujące kontakty (
0) zostaną trwale usunięte:",
"contacts.cleanup.enable": "Włącz automatyczne czyszczenie",
"contacts.cleanup.enable_hint": "Gdy włączone, kontakty spełniające powyższe kryteria będą usuwane codziennie o wskazanej godzinie",
"contacts.cleanup.last_advert": "Ostatni advert",
"contacts.cleanup.last_modified": "Ostatnia zmiana",
"contacts.cleanup.name_filter": "Filtr nazwy (opcjonalnie):",
"contacts.cleanup.name_filter_ph": "Wpisz fragment nazwy do wyszukania...",
+ "contacts.cleanup.preview": "Podgląd czyszczenia",
"contacts.cleanup.run_at": "Uruchom o:",
+ "contacts.cleanup.status_label": "Status:",
"contacts.cleanup.title": "Czyszczenie kontaktów",
"contacts.cleanup.title_hint": "Usuń kontakty według różnych kryteriów",
"contacts.cleanup.types": "Typy kontaktów:",
+ "contacts.cleanup.undo_warning": "Tej operacji nie można cofnąć!",
"contacts.confirm.block": "Zablokować ten kontakt? Jego wiadomości będą ukryte w czacie.",
"contacts.copy_title": "Kliknij, aby skopiować",
"contacts.delete.confirm": "Usuń kontakt",
@@ -194,6 +206,7 @@
"contacts.existing.none_hint": "Kontakty pojawią się tutaj po dodaniu",
"contacts.existing.search_ph": "Szukaj po nazwie lub kluczu publicznym...",
"contacts.existing.title": "Istniejące kontakty",
+ "contacts.filter.advanced": "Filtry zaawansowane",
"contacts.filter.all_sources": "Wszystkie źródła",
"contacts.filter.all_types": "Wszystkie typy",
"contacts.filter.blocked": "Zablokowane",
@@ -209,14 +222,22 @@
"contacts.inactive": "Nieaktywny",
"contacts.last_advert": "Ostatni advert: {time}",
"contacts.last_advert_unknown": "Ostatni advert: nieznany",
+ "contacts.manage.title": "Ustawienia zarządzania kontaktami",
"contacts.map.show": "Pokaż:",
"contacts.map.title": "Mapa",
"contacts.never_seen": "Nigdy niewidziany",
+ "contacts.pending.approve_confirm": "Zamierzasz zatwierdzić
0 kontaktów:",
+ "contacts.pending.approve_note": "Te kontakty zostaną dodane do Twojego urządzenia i będą mogły odbierać i wysyłać wiadomości.",
+ "contacts.pending.confirm_approve_title": "Potwierdź zbiorcze zatwierdzenie",
+ "contacts.pending.confirm_ignore_title": "Potwierdź zbiorcze zignorowanie",
"contacts.pending.filter_hint": "Filtruj kontakty po typie lub nazwie, a następnie zatwierdź lub zignoruj je zbiorczo.",
+ "contacts.pending.ignore_confirm": "Zamierzasz zignorować
0 kontaktów:",
+ "contacts.pending.ignore_note": "Ignorowane kontakty nie będą generować nowych oczekujących zgłoszeń. Możesz cofnąć ignorowanie później na stronie Istniejące kontakty.",
"contacts.pending.load_failed": "Nie udało się wczytać oczekujących kontaktów",
"contacts.pending.loading": "Wczytywanie oczekujących kontaktów...",
"contacts.pending.none": "Brak oczekujących zgłoszeń",
"contacts.pending.none_hint": "Nowe zgłoszenia kontaktów pojawią się tutaj, gdy włączone jest ręczne zatwierdzanie",
+ "contacts.pending.title": "Oczekujące kontakty",
"contacts.protected_cannot_block": "Nie można zablokować chronionego kontaktu",
"contacts.protected_cannot_delete": "Nie można usunąć chronionego kontaktu",
"contacts.protected_cannot_ignore": "Nie można zignorować chronionego kontaktu",