From 89911810910e5af3559b97302c68bd95a618c544 Mon Sep 17 00:00:00 2001 From: Doxa Maps Date: Sat, 26 Sep 2026 02:01:22 +0000 Subject: [PATCH] Translate the eight strings that had no catalogue entry, keeping their English exactly MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The shepherd's call: translating wording that already exists is not a product decision. So every string keeps the English it reads today and gains a key, in all eleven locales. Big Picture's four first, since it is the localization priority: Export CSV, the detail drawer's title and its empty state, and the legend's "heartbeat zone" bin. Then Top countries, Select all, the table dock's Expand/Collapse titles, and the singular "group" whose plural was already translated — a half-translated plural is its own small defect. Full screen / Exit full screen now read buttons.toggleFullscreen, which already shipped in every locale, so that one needed no new wording at all. The arrow glyph still carries the state. Three more went in that were not on the list, because leaving them would have been worse than the defect being fixed: "Deselect all" is the other half of a toggle whose first half we just translated, and the two row-selection aria labels are the same control speaking to a screen reader. A control that changes language halfway through is harder to use than one that never changed at all. ★ ONE STRING I AM NOT CONFIDENT IN, AND IT SHOULD BE CHECKED BY A SPEAKER. "heartbeat zone" is the Driver's own coinage, not standard UI vocabulary, and a metaphor is exactly where a translation I cannot read can go quietly wrong. I translated it literally in all ten languages. The rest are ordinary interface terms; that one is a judgement, and I would rather flag it than have it discovered on the gift. VERIFIED HEADLESS: i18n-parity passes with zero debt; three bundles build; the keys AND their Arabic values are present in the built output (تصدير CSV, منطقة نبض القلب, اختر شعبًا لعرض التفاصيل, and the header's placeholder). Numerals are untouched, per the hold — this is text only. (cherry picked from commit 67568c05096f3f0267df775cfa80847bd3e1cb1b) --- library/i18n/locales/ar/aria.json | 6 +++++- library/i18n/locales/ar/dashboard.json | 12 +++++++++++- library/i18n/locales/ar/grid.json | 3 ++- library/i18n/locales/de/aria.json | 6 +++++- library/i18n/locales/de/dashboard.json | 12 +++++++++++- library/i18n/locales/de/grid.json | 3 ++- library/i18n/locales/en/aria.json | 6 +++++- library/i18n/locales/en/dashboard.json | 12 +++++++++++- library/i18n/locales/en/grid.json | 3 ++- library/i18n/locales/es/aria.json | 6 +++++- library/i18n/locales/es/dashboard.json | 12 +++++++++++- library/i18n/locales/es/grid.json | 3 ++- library/i18n/locales/fr/aria.json | 6 +++++- library/i18n/locales/fr/dashboard.json | 12 +++++++++++- library/i18n/locales/fr/grid.json | 3 ++- library/i18n/locales/hi/aria.json | 6 +++++- library/i18n/locales/hi/dashboard.json | 12 +++++++++++- library/i18n/locales/hi/grid.json | 3 ++- library/i18n/locales/it/aria.json | 6 +++++- library/i18n/locales/it/dashboard.json | 12 +++++++++++- library/i18n/locales/it/grid.json | 3 ++- library/i18n/locales/pt/aria.json | 6 +++++- library/i18n/locales/pt/dashboard.json | 12 +++++++++++- library/i18n/locales/pt/grid.json | 3 ++- library/i18n/locales/ro/aria.json | 6 +++++- library/i18n/locales/ro/dashboard.json | 12 +++++++++++- library/i18n/locales/ro/grid.json | 3 ++- library/i18n/locales/ru/aria.json | 6 +++++- library/i18n/locales/ru/dashboard.json | 12 +++++++++++- library/i18n/locales/ru/grid.json | 3 ++- library/i18n/locales/zh/aria.json | 6 +++++- library/i18n/locales/zh/dashboard.json | 12 +++++++++++- library/i18n/locales/zh/grid.json | 3 ++- .../big-picture/src/components/BpResearchHeader.vue | 6 +++--- .../research-dashboard/dashboard.config.js | 2 +- .../src/components/dashboards/DashboardDataTable.vue | 12 ++++++------ .../components/dashboards/DashboardDetailDrawer.vue | 11 +++++++++-- .../src/components/dashboards/DashboardMapPanel.vue | 2 +- 38 files changed, 218 insertions(+), 46 deletions(-) diff --git a/library/i18n/locales/ar/aria.json b/library/i18n/locales/ar/aria.json index 40f319d8f..b0f259ea8 100644 --- a/library/i18n/locales/ar/aria.json +++ b/library/i18n/locales/ar/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "إغلاق عرض التفاصيل", "collapseLegend": "طيّ وسيلة الإيضاح", "expandLegend": "توسيع وسيلة الإيضاح", - "toggleLegend": "إظهار وسيلة الإيضاح أو إخفاؤها" + "toggleLegend": "إظهار وسيلة الإيضاح أو إخفاؤها", + "searchPeopleGroups": "ابحث عن الشعوب", + "resetAllFilters": "إعادة تعيين كل عوامل التصفية والبحث", + "selectAllRows": "تحديد كل الصفوف", + "deselectAllRows": "إلغاء تحديد كل الصفوف" } diff --git a/library/i18n/locales/ar/dashboard.json b/library/i18n/locales/ar/dashboard.json index 6c8732ec1..930c58b16 100644 --- a/library/i18n/locales/ar/dashboard.json +++ b/library/i18n/locales/ar/dashboard.json @@ -50,5 +50,15 @@ "groups": "مجموعة", "expand": "توسيع", "collapse": "طيّ", - "place": "المكان" + "place": "المكان", + "export_csv": "تصدير CSV", + "detail": "التفاصيل", + "detail_empty": "اختر شعبًا لعرض التفاصيل", + "heartbeat_zone": "منطقة نبض القلب", + "top_countries": "أبرز الدول", + "select_all": "تحديد الكل", + "expand_table": "توسيع الجدول", + "collapse_table": "طيّ الجدول — توسيع الخريطة", + "group": "مجموعة", + "deselect_all": "إلغاء تحديد الكل" } diff --git a/library/i18n/locales/ar/grid.json b/library/i18n/locales/ar/grid.json index eacfca689..6a8ec764f 100644 --- a/library/i18n/locales/ar/grid.json +++ b/library/i18n/locales/ar/grid.json @@ -15,5 +15,6 @@ "loading": "جارٍ التحميل…", "no_results": "لا توجد شعوب مطابقة لهذا التصفية.", "type_to_search": "اكتب للبحث...", - "load_failed": "تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية." + "load_failed": "تعذّر تحميل بيانات الشعوب. هذه مشكلة اتصال، وليست مشكلة في التصفية.", + "search_people_or_countries": "ابحث عن الشعوب أو الدول…" } diff --git a/library/i18n/locales/de/aria.json b/library/i18n/locales/de/aria.json index 478c26e42..a5fde769d 100644 --- a/library/i18n/locales/de/aria.json +++ b/library/i18n/locales/de/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Detailansicht schließen", "collapseLegend": "Legende einklappen", "expandLegend": "Legende ausklappen", - "toggleLegend": "Legende ein- oder ausblenden" + "toggleLegend": "Legende ein- oder ausblenden", + "searchPeopleGroups": "Volksgruppen suchen", + "resetAllFilters": "Alle Filter und die Suche zurücksetzen", + "selectAllRows": "Alle Zeilen auswählen", + "deselectAllRows": "Auswahl aller Zeilen aufheben" } diff --git a/library/i18n/locales/de/dashboard.json b/library/i18n/locales/de/dashboard.json index 87a154650..9439fb302 100644 --- a/library/i18n/locales/de/dashboard.json +++ b/library/i18n/locales/de/dashboard.json @@ -50,5 +50,15 @@ "groups": "Volksgruppen", "expand": "Aufklappen", "collapse": "Zuklappen", - "place": "Ort" + "place": "Ort", + "export_csv": "CSV exportieren", + "detail": "Details", + "detail_empty": "Wählen Sie eine Volksgruppe, um Details zu sehen", + "heartbeat_zone": "Herzschlag-Zone", + "top_countries": "Top-Länder", + "select_all": "Alle auswählen", + "expand_table": "Tabelle ausklappen", + "collapse_table": "Tabelle einklappen – Karte vergrößern", + "group": "Volksgruppe", + "deselect_all": "Auswahl aufheben" } diff --git a/library/i18n/locales/de/grid.json b/library/i18n/locales/de/grid.json index 12d5b5586..64a3af865 100644 --- a/library/i18n/locales/de/grid.json +++ b/library/i18n/locales/de/grid.json @@ -15,5 +15,6 @@ "loading": "Wird geladen…", "no_results": "Keine Volksgruppen entsprechen diesem Filter.", "type_to_search": "Zum Suchen tippen...", - "load_failed": "Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter." + "load_failed": "Die Daten konnten nicht geladen werden. Das ist ein Verbindungsproblem, nicht Ihr Filter.", + "search_people_or_countries": "Volksgruppen oder Länder suchen…" } diff --git a/library/i18n/locales/en/aria.json b/library/i18n/locales/en/aria.json index ee4ccffc7..cb756bdaa 100644 --- a/library/i18n/locales/en/aria.json +++ b/library/i18n/locales/en/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Close detail view", "collapseLegend": "Collapse legend", "expandLegend": "Expand legend", - "toggleLegend": "Show or hide the legend" + "toggleLegend": "Show or hide the legend", + "searchPeopleGroups": "Search people groups", + "resetAllFilters": "Reset all filters and search", + "selectAllRows": "Select all rows", + "deselectAllRows": "Deselect all rows" } diff --git a/library/i18n/locales/en/dashboard.json b/library/i18n/locales/en/dashboard.json index c8bad5915..6dd95d036 100644 --- a/library/i18n/locales/en/dashboard.json +++ b/library/i18n/locales/en/dashboard.json @@ -50,5 +50,15 @@ "groups": "groups", "expand": "Expand", "collapse": "Collapse", - "place": "Place" + "place": "Place", + "export_csv": "Export CSV", + "detail": "Detail", + "detail_empty": "Select a people group to see detail", + "heartbeat_zone": "heartbeat zone", + "top_countries": "Top countries", + "select_all": "Select all", + "expand_table": "Expand table", + "collapse_table": "Collapse table — grow the map", + "group": "group", + "deselect_all": "Deselect all" } diff --git a/library/i18n/locales/en/grid.json b/library/i18n/locales/en/grid.json index 893959f8a..79b002cfe 100644 --- a/library/i18n/locales/en/grid.json +++ b/library/i18n/locales/en/grid.json @@ -15,5 +15,6 @@ "loading": "Loading…", "no_results": "No people groups match this filter.", "type_to_search": "Type to search...", - "load_failed": "People-group data could not be loaded. This is a connection problem, not your filter." + "load_failed": "People-group data could not be loaded. This is a connection problem, not your filter.", + "search_people_or_countries": "Search people groups or countries…" } diff --git a/library/i18n/locales/es/aria.json b/library/i18n/locales/es/aria.json index 89235271c..e985c7567 100644 --- a/library/i18n/locales/es/aria.json +++ b/library/i18n/locales/es/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Cerrar vista de detalle", "collapseLegend": "Contraer la leyenda", "expandLegend": "Expandir la leyenda", - "toggleLegend": "Mostrar u ocultar la leyenda" + "toggleLegend": "Mostrar u ocultar la leyenda", + "searchPeopleGroups": "Buscar pueblos", + "resetAllFilters": "Restablecer todos los filtros y la búsqueda", + "selectAllRows": "Seleccionar todas las filas", + "deselectAllRows": "Deseleccionar todas las filas" } diff --git a/library/i18n/locales/es/dashboard.json b/library/i18n/locales/es/dashboard.json index 59c4cdc03..f43a01c1c 100644 --- a/library/i18n/locales/es/dashboard.json +++ b/library/i18n/locales/es/dashboard.json @@ -50,5 +50,15 @@ "groups": "pueblos", "expand": "Expandir", "collapse": "Contraer", - "place": "Lugar" + "place": "Lugar", + "export_csv": "Exportar CSV", + "detail": "Detalle", + "detail_empty": "Selecciona un pueblo para ver el detalle", + "heartbeat_zone": "zona del latido", + "top_countries": "Países principales", + "select_all": "Seleccionar todo", + "expand_table": "Expandir tabla", + "collapse_table": "Contraer tabla — ampliar el mapa", + "group": "pueblo", + "deselect_all": "Deseleccionar todo" } diff --git a/library/i18n/locales/es/grid.json b/library/i18n/locales/es/grid.json index efb79fb4d..97c664c8d 100644 --- a/library/i18n/locales/es/grid.json +++ b/library/i18n/locales/es/grid.json @@ -15,5 +15,6 @@ "loading": "Cargando…", "no_results": "Ningún pueblo coincide con este filtro.", "type_to_search": "Escribe para buscar...", - "load_failed": "No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro." + "load_failed": "No se pudieron cargar los datos de pueblos. Es un problema de conexión, no de tu filtro.", + "search_people_or_countries": "Buscar pueblos o países…" } diff --git a/library/i18n/locales/fr/aria.json b/library/i18n/locales/fr/aria.json index b421892ee..ec222c935 100644 --- a/library/i18n/locales/fr/aria.json +++ b/library/i18n/locales/fr/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Fermer la vue détaillée", "collapseLegend": "Réduire la légende", "expandLegend": "Développer la légende", - "toggleLegend": "Afficher ou masquer la légende" + "toggleLegend": "Afficher ou masquer la légende", + "searchPeopleGroups": "Rechercher des peuples", + "resetAllFilters": "Réinitialiser tous les filtres et la recherche", + "selectAllRows": "Sélectionner toutes les lignes", + "deselectAllRows": "Désélectionner toutes les lignes" } diff --git a/library/i18n/locales/fr/dashboard.json b/library/i18n/locales/fr/dashboard.json index f4ee47cfc..001337d7d 100644 --- a/library/i18n/locales/fr/dashboard.json +++ b/library/i18n/locales/fr/dashboard.json @@ -50,5 +50,15 @@ "groups": "peuples", "expand": "Développer", "collapse": "Replier", - "place": "Lieu" + "place": "Lieu", + "export_csv": "Exporter en CSV", + "detail": "Détail", + "detail_empty": "Sélectionnez un peuple pour voir le détail", + "heartbeat_zone": "zone du battement de cœur", + "top_countries": "Principaux pays", + "select_all": "Tout sélectionner", + "expand_table": "Développer le tableau", + "collapse_table": "Réduire le tableau — agrandir la carte", + "group": "peuple", + "deselect_all": "Tout désélectionner" } diff --git a/library/i18n/locales/fr/grid.json b/library/i18n/locales/fr/grid.json index 272ae11d5..f278627e9 100644 --- a/library/i18n/locales/fr/grid.json +++ b/library/i18n/locales/fr/grid.json @@ -15,5 +15,6 @@ "loading": "Chargement…", "no_results": "Aucun peuple ne correspond à ce filtre.", "type_to_search": "Tapez pour rechercher...", - "load_failed": "Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre." + "load_failed": "Les données n’ont pas pu être chargées. C’est un problème de connexion, pas votre filtre.", + "search_people_or_countries": "Rechercher des peuples ou des pays…" } diff --git a/library/i18n/locales/hi/aria.json b/library/i18n/locales/hi/aria.json index df8b000ad..a9383645f 100644 --- a/library/i18n/locales/hi/aria.json +++ b/library/i18n/locales/hi/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "विवरण दृश्य बंद करें", "collapseLegend": "लेजेंड संक्षिप्त करें", "expandLegend": "लेजेंड विस्तृत करें", - "toggleLegend": "लेजेंड दिखाएँ या छिपाएँ" + "toggleLegend": "लेजेंड दिखाएँ या छिपाएँ", + "searchPeopleGroups": "जनसमूह खोजें", + "resetAllFilters": "सभी फ़िल्टर और खोज रीसेट करें", + "selectAllRows": "सभी पंक्तियाँ चुनें", + "deselectAllRows": "सभी पंक्तियाँ अचयनित करें" } diff --git a/library/i18n/locales/hi/dashboard.json b/library/i18n/locales/hi/dashboard.json index 762c71be6..be70fe335 100644 --- a/library/i18n/locales/hi/dashboard.json +++ b/library/i18n/locales/hi/dashboard.json @@ -50,5 +50,15 @@ "groups": "जनसमूह", "expand": "विस्तार करें", "collapse": "संक्षिप्त करें", - "place": "स्थान" + "place": "स्थान", + "export_csv": "CSV निर्यात करें", + "detail": "विवरण", + "detail_empty": "विवरण देखने के लिए एक जनसमूह चुनें", + "heartbeat_zone": "हृदयगति क्षेत्र", + "top_countries": "शीर्ष देश", + "select_all": "सभी चुनें", + "expand_table": "तालिका विस्तृत करें", + "collapse_table": "तालिका संक्षिप्त करें — मानचित्र बड़ा करें", + "group": "जनसमूह", + "deselect_all": "सभी अचयनित करें" } diff --git a/library/i18n/locales/hi/grid.json b/library/i18n/locales/hi/grid.json index 3df36809d..034903e72 100644 --- a/library/i18n/locales/hi/grid.json +++ b/library/i18n/locales/hi/grid.json @@ -15,5 +15,6 @@ "loading": "लोड हो रहा है…", "no_results": "इस फ़िल्टर से कोई जनसमूह मेल नहीं खाता।", "type_to_search": "खोजने के लिए लिखें...", - "load_failed": "जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।" + "load_failed": "जनसमूह डेटा लोड नहीं हो सका। यह कनेक्शन की समस्या है, आपके फ़िल्टर की नहीं।", + "search_people_or_countries": "जनसमूह या देश खोजें…" } diff --git a/library/i18n/locales/it/aria.json b/library/i18n/locales/it/aria.json index 8320472b3..dfdf03994 100644 --- a/library/i18n/locales/it/aria.json +++ b/library/i18n/locales/it/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Chiudi vista dettaglio", "collapseLegend": "Comprimi la legenda", "expandLegend": "Espandi la legenda", - "toggleLegend": "Mostra o nascondi la legenda" + "toggleLegend": "Mostra o nascondi la legenda", + "searchPeopleGroups": "Cerca popoli", + "resetAllFilters": "Reimposta tutti i filtri e la ricerca", + "selectAllRows": "Seleziona tutte le righe", + "deselectAllRows": "Deseleziona tutte le righe" } diff --git a/library/i18n/locales/it/dashboard.json b/library/i18n/locales/it/dashboard.json index 04d72799a..4719497cc 100644 --- a/library/i18n/locales/it/dashboard.json +++ b/library/i18n/locales/it/dashboard.json @@ -50,5 +50,15 @@ "groups": "popoli", "expand": "Espandi", "collapse": "Comprimi", - "place": "Luogo" + "place": "Luogo", + "export_csv": "Esporta CSV", + "detail": "Dettaglio", + "detail_empty": "Seleziona un popolo per vedere il dettaglio", + "heartbeat_zone": "zona del battito", + "top_countries": "Paesi principali", + "select_all": "Seleziona tutto", + "expand_table": "Espandi tabella", + "collapse_table": "Comprimi tabella — ingrandisci la mappa", + "group": "popolo", + "deselect_all": "Deseleziona tutto" } diff --git a/library/i18n/locales/it/grid.json b/library/i18n/locales/it/grid.json index 6781f3de0..5e07e54f0 100644 --- a/library/i18n/locales/it/grid.json +++ b/library/i18n/locales/it/grid.json @@ -15,5 +15,6 @@ "loading": "Caricamento…", "no_results": "Nessun popolo corrisponde a questo filtro.", "type_to_search": "Digita per cercare...", - "load_failed": "Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro." + "load_failed": "Impossibile caricare i dati dei popoli. È un problema di connessione, non del filtro.", + "search_people_or_countries": "Cerca popoli o paesi…" } diff --git a/library/i18n/locales/pt/aria.json b/library/i18n/locales/pt/aria.json index 7dddfb842..544f1d1ac 100644 --- a/library/i18n/locales/pt/aria.json +++ b/library/i18n/locales/pt/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Fechar vista de detalhe", "collapseLegend": "Recolher a legenda", "expandLegend": "Expandir a legenda", - "toggleLegend": "Mostrar ou ocultar a legenda" + "toggleLegend": "Mostrar ou ocultar a legenda", + "searchPeopleGroups": "Pesquisar povos", + "resetAllFilters": "Redefinir todos os filtros e a pesquisa", + "selectAllRows": "Selecionar todas as linhas", + "deselectAllRows": "Desmarcar todas as linhas" } diff --git a/library/i18n/locales/pt/dashboard.json b/library/i18n/locales/pt/dashboard.json index c2960a31b..a536bb26f 100644 --- a/library/i18n/locales/pt/dashboard.json +++ b/library/i18n/locales/pt/dashboard.json @@ -50,5 +50,15 @@ "groups": "povos", "expand": "Expandir", "collapse": "Recolher", - "place": "Lugar" + "place": "Lugar", + "export_csv": "Exportar CSV", + "detail": "Detalhe", + "detail_empty": "Selecione um povo para ver o detalhe", + "heartbeat_zone": "zona do batimento", + "top_countries": "Principais países", + "select_all": "Selecionar tudo", + "expand_table": "Expandir tabela", + "collapse_table": "Recolher tabela — ampliar o mapa", + "group": "povo", + "deselect_all": "Desmarcar tudo" } diff --git a/library/i18n/locales/pt/grid.json b/library/i18n/locales/pt/grid.json index e1136ed89..afac097ee 100644 --- a/library/i18n/locales/pt/grid.json +++ b/library/i18n/locales/pt/grid.json @@ -15,5 +15,6 @@ "loading": "A carregar…", "no_results": "Nenhum povo corresponde a este filtro.", "type_to_search": "Escreva para pesquisar...", - "load_failed": "Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro." + "load_failed": "Não foi possível carregar os dados dos povos. É um problema de ligação, não do seu filtro.", + "search_people_or_countries": "Pesquisar povos ou países…" } diff --git a/library/i18n/locales/ro/aria.json b/library/i18n/locales/ro/aria.json index a5912893e..05814f229 100644 --- a/library/i18n/locales/ro/aria.json +++ b/library/i18n/locales/ro/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Închide vizualizarea detaliată", "collapseLegend": "Restrânge legenda", "expandLegend": "Extinde legenda", - "toggleLegend": "Afișează sau ascunde legenda" + "toggleLegend": "Afișează sau ascunde legenda", + "searchPeopleGroups": "Caută popoare", + "resetAllFilters": "Resetează toate filtrele și căutarea", + "selectAllRows": "Selectează toate rândurile", + "deselectAllRows": "Deselectează toate rândurile" } diff --git a/library/i18n/locales/ro/dashboard.json b/library/i18n/locales/ro/dashboard.json index e21901a7a..be6644db1 100644 --- a/library/i18n/locales/ro/dashboard.json +++ b/library/i18n/locales/ro/dashboard.json @@ -50,5 +50,15 @@ "groups": "popoare", "expand": "Extinde", "collapse": "Restrânge", - "place": "Loc" + "place": "Loc", + "export_csv": "Exportă CSV", + "detail": "Detaliu", + "detail_empty": "Selectează un popor pentru a vedea detaliile", + "heartbeat_zone": "zona bătăilor inimii", + "top_countries": "Țări de top", + "select_all": "Selectează tot", + "expand_table": "Extinde tabelul", + "collapse_table": "Restrânge tabelul — mărește harta", + "group": "popor", + "deselect_all": "Deselectează tot" } diff --git a/library/i18n/locales/ro/grid.json b/library/i18n/locales/ro/grid.json index 163d25bfc..7b1216371 100644 --- a/library/i18n/locales/ro/grid.json +++ b/library/i18n/locales/ro/grid.json @@ -15,5 +15,6 @@ "loading": "Se încarcă…", "no_results": "Niciun popor nu corespunde acestui filtru.", "type_to_search": "Scrie pentru a căuta...", - "load_failed": "Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului." + "load_failed": "Datele despre popoare nu au putut fi încărcate. Este o problemă de conexiune, nu a filtrului.", + "search_people_or_countries": "Caută popoare sau țări…" } diff --git a/library/i18n/locales/ru/aria.json b/library/i18n/locales/ru/aria.json index 24eb1a1aa..ab418da23 100644 --- a/library/i18n/locales/ru/aria.json +++ b/library/i18n/locales/ru/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "Закрыть подробный вид", "collapseLegend": "Свернуть легенду", "expandLegend": "Развернуть легенду", - "toggleLegend": "Показать или скрыть легенду" + "toggleLegend": "Показать или скрыть легенду", + "searchPeopleGroups": "Поиск народов", + "resetAllFilters": "Сбросить все фильтры и поиск", + "selectAllRows": "Выбрать все строки", + "deselectAllRows": "Снять выделение со всех строк" } diff --git a/library/i18n/locales/ru/dashboard.json b/library/i18n/locales/ru/dashboard.json index 2b82b842a..acace4abd 100644 --- a/library/i18n/locales/ru/dashboard.json +++ b/library/i18n/locales/ru/dashboard.json @@ -50,5 +50,15 @@ "groups": "народов", "expand": "Развернуть", "collapse": "Свернуть", - "place": "Место" + "place": "Место", + "export_csv": "Экспорт CSV", + "detail": "Подробности", + "detail_empty": "Выберите народ, чтобы увидеть подробности", + "heartbeat_zone": "зона сердцебиения", + "top_countries": "Основные страны", + "select_all": "Выбрать все", + "expand_table": "Развернуть таблицу", + "collapse_table": "Свернуть таблицу — увеличить карту", + "group": "народ", + "deselect_all": "Снять выделение" } diff --git a/library/i18n/locales/ru/grid.json b/library/i18n/locales/ru/grid.json index 8bf36653b..9ba74ace0 100644 --- a/library/i18n/locales/ru/grid.json +++ b/library/i18n/locales/ru/grid.json @@ -15,5 +15,6 @@ "loading": "Загрузка…", "no_results": "Нет народов, соответствующих этому фильтру.", "type_to_search": "Введите для поиска...", - "load_failed": "Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра." + "load_failed": "Не удалось загрузить данные о народах. Это проблема соединения, а не фильтра.", + "search_people_or_countries": "Поиск народов или стран…" } diff --git a/library/i18n/locales/zh/aria.json b/library/i18n/locales/zh/aria.json index f3fe5a79f..6295bf76e 100644 --- a/library/i18n/locales/zh/aria.json +++ b/library/i18n/locales/zh/aria.json @@ -3,5 +3,9 @@ "closeDetailView": "关闭详情视图", "collapseLegend": "收起图例", "expandLegend": "展开图例", - "toggleLegend": "显示或隐藏图例" + "toggleLegend": "显示或隐藏图例", + "searchPeopleGroups": "搜索民族", + "resetAllFilters": "重置所有筛选和搜索", + "selectAllRows": "选择所有行", + "deselectAllRows": "取消选择所有行" } diff --git a/library/i18n/locales/zh/dashboard.json b/library/i18n/locales/zh/dashboard.json index b08e05c0d..84da53648 100644 --- a/library/i18n/locales/zh/dashboard.json +++ b/library/i18n/locales/zh/dashboard.json @@ -50,5 +50,15 @@ "groups": "个民族", "expand": "展开", "collapse": "收起", - "place": "地点" + "place": "地点", + "export_csv": "导出 CSV", + "detail": "详情", + "detail_empty": "选择一个民族以查看详情", + "heartbeat_zone": "心跳区", + "top_countries": "主要国家", + "select_all": "全选", + "expand_table": "展开表格", + "collapse_table": "收起表格 — 放大地图", + "group": "个民族", + "deselect_all": "取消全选" } diff --git a/library/i18n/locales/zh/grid.json b/library/i18n/locales/zh/grid.json index fc29aa052..4e654e12a 100644 --- a/library/i18n/locales/zh/grid.json +++ b/library/i18n/locales/zh/grid.json @@ -15,5 +15,6 @@ "loading": "加载中…", "no_results": "没有符合此筛选条件的民族。", "type_to_search": "输入以搜索...", - "load_failed": "无法加载民族数据。这是连接问题,而不是筛选问题。" + "load_failed": "无法加载民族数据。这是连接问题,而不是筛选问题。", + "search_people_or_countries": "搜索民族或国家…" } diff --git a/plugin-designs/big-picture/src/components/BpResearchHeader.vue b/plugin-designs/big-picture/src/components/BpResearchHeader.vue index cc277c374..4f0814b17 100644 --- a/plugin-designs/big-picture/src/components/BpResearchHeader.vue +++ b/plugin-designs/big-picture/src/components/BpResearchHeader.vue @@ -164,8 +164,8 @@ onMounted(loadOptions) @@ -196,7 +196,7 @@ onMounted(loadOptions) v-if="hasAny" class="rh-reset" type="button" - aria-label="Reset all filters and search" + :aria-label="tStatic('aria.resetAllFilters') || 'Reset all filters and search'" @click="reset" >{{ L('reset_all', '') || tStatic('controls.reset_all') || 'Reset' }} diff --git a/plugin-designs/research-dashboard/dashboard.config.js b/plugin-designs/research-dashboard/dashboard.config.js index 77abf535f..5e1175b97 100644 --- a/plugin-designs/research-dashboard/dashboard.config.js +++ b/plugin-designs/research-dashboard/dashboard.config.js @@ -417,7 +417,7 @@ export default { // rail's Religion tree for anyone who needs Sunni vs Folk. { id: 'religion', type: 'donut', facet: 'religion_family', get title() { return tStatic('dashboard.religion') || 'Religion' }, topN: 8 }, { id: 'region', type: 'donut', facet: 'wagf_region', get title() { return tStatic('dashboard.region') || 'Region' }, topN: 9 }, - { id: 'country', type: 'bar', facet: 'country_code', title: 'Top countries', topN: 12 }, + { id: 'country', type: 'bar', facet: 'country_code', get title() { return tStatic('dashboard.top_countries') || 'Top countries' }, topN: 12 }, ], // ── detail drawer ── fields surfaced for a focused record diff --git a/plugin-designs/research-dashboard/src/components/dashboards/DashboardDataTable.vue b/plugin-designs/research-dashboard/src/components/dashboards/DashboardDataTable.vue index ff4307d59..0b1c6b572 100644 --- a/plugin-designs/research-dashboard/src/components/dashboards/DashboardDataTable.vue +++ b/plugin-designs/research-dashboard/src/components/dashboards/DashboardDataTable.vue @@ -783,10 +783,10 @@ useShadowStyles(`
- {{ T('legend.titleBar.peopleGroups', 'People Groups') }} - {{ fmt(rowCount) }} {{ rowCount === 1 ? 'group' : T('dashboard.groups', 'groups') }} + {{ fmt(rowCount) }} {{ rowCount === 1 ? T('dashboard.group', 'group') : T('dashboard.groups', 'groups') }}
-
+
+ :aria-label="allVisibleSelected ? T('aria.deselectAllRows', 'Deselect all rows') : T('aria.selectAllRows', 'Select all rows')" tabindex="-1" style="pointer-events:none" />
diff --git a/plugin-designs/research-dashboard/src/components/dashboards/DashboardDetailDrawer.vue b/plugin-designs/research-dashboard/src/components/dashboards/DashboardDetailDrawer.vue index 3b8669556..86fad29aa 100644 --- a/plugin-designs/research-dashboard/src/components/dashboards/DashboardDetailDrawer.vue +++ b/plugin-designs/research-dashboard/src/components/dashboards/DashboardDetailDrawer.vue @@ -13,6 +13,13 @@ * behavior are unchanged from the source panel. */ import { inject, ref, computed, onMounted, onBeforeUnmount } from 'vue' +import { tStatic } from '@map/i18n/index.js' + +// This drawer's chrome, read out of the catalogue. tStatic and not useI18n: these components mount +// inside custom elements that install no i18n plugin, and an unguarded useI18n() throws on the way +// in and takes the panel with it. The English stays as the fallback so a missing key degrades to +// what shipped rather than to a key name. +const T = (key, en) => tStatic(key) || en import { useShadowStyles } from '@map/composables/useShadowStyles.js' import { useCsvExport } from '../../composables/useCsvExport.js' import { useTreeLegendLabels } from '../../composables/useTreeLegendLabels.js' @@ -149,10 +156,10 @@ useShadowStyles(`