Country Posters and the UPG-100 wall read in the page's language, and walls count in each language's plural forms
The i18n + RTL audit of Country Posters (the hardcoded-English gate only reads production plugins,
so it had never read this one; its scanner was run on the plugin directly and every hit triaged for
reachability, since the country map mounts one tab):
- 9 strings a reader sees were English in every locale: the search placeholder, the packet title's
"— 50 of N", the map-failed message, the wall's heading, tag, intro, soon message and item nouns,
and the view switcher's legend and label. All read from the catalogue now, reusing the existing
keys where they exist (tabs.selectView/views, the UPG-100 wall's tag and emphasis).
- The wall's section headings are the WAGF region labels in the data, English everywhere; they now
resolve through the Regions dashboard's own WAGF table, which gains its two missing regions.
- The three WAGF tier tooltips had no keys in any locale (legend.tabInfo.region/block/country).
- 0 physical-CSS findings.
PosterWall counted "N countries" as a number plus a 2-form noun pair and defaulted the plural to
noun + "s" — wrong for Russian and Arabic whatever strings it was given. It takes itemCountKey, a
plural catalogue key rendered with the count; useOptionalT forwards a plural count to vue-i18n (the
CLDR map picks ru 4 forms, ar 6, zh 1), and a host without i18n picks the English form by
vue-i18n's own rule. The people-group counts on the section heads and placeholder cards use
wall.peopleGroupCount the same way ("people groups" was hardcoded English on the cards).
The UPG-100 wall: its Americas and Europe section headings had no key (single words, invisible to
the gate), and it counts its lists with wall.listCount.
Checked: plural-forms, i18n-parity, keys-exist, never-translated, and i18n-treeshake against both
bundles built (26 bundles carry every area they ask for); gates:pre 66/66.
This commit is contained in:
parent
0c40927dcf
commit
c83a9827ff
72 changed files with 313 additions and 94 deletions
|
|
@ -47,7 +47,7 @@ import { tStatic } from '../../i18n/index.js'
|
|||
const T = (key, en) => tStatic(key) || en
|
||||
import { useShadowStyles } from '@map/composables/useShadowStyles.js'
|
||||
import { usePosterPrints } from '@map/composables/usePosterPrints.js'
|
||||
import { useOptionalI18n } from '@map/composables/useOptionalT.js'
|
||||
import { useOptionalI18n, useOptionalT } from '@map/composables/useOptionalT.js'
|
||||
// Export-modal geometry. A fixed;inset:0 scrim covers only the CONTENT PANE in the cap-5 shell
|
||||
// (contain:layout on .vtl-content). Measured 1024x793 @ (256,107) at 1280x900 — rail clickable
|
||||
// behind the "modal". See library/utils/viewportScrim.js for the measurements and rejected fixes.
|
||||
|
|
@ -70,8 +70,12 @@ const props = defineProps({
|
|||
itemNoun: { type: String, default: 'list' },
|
||||
// English plurals are not "+s". A naive pluralizer shipped "28 countrys" to the
|
||||
// section headers, so the plural is a PARAMETER — the caller knows its own noun.
|
||||
// Defaults to itemNoun + 's', which is right for "list"/"poster".
|
||||
// ⚠ No "+s" default any more: a noun pair is English-only by construction.
|
||||
itemNounPlural: { type: String, default: '' },
|
||||
// ★ THE LOCALIZED WAY TO COUNT ITEMS: a catalogue PLURAL key ("{n} country | {n} countries" in en,
|
||||
// four forms in ru, six in ar, one in zh), rendered with the count so each locale picks its own CLDR
|
||||
// form. Wins over itemNoun/itemNounPlural, which remain for callers that have not moved yet.
|
||||
itemCountKey: { type: String, default: '' },
|
||||
collapsible: { type: Boolean, default: false },
|
||||
collapsedBy: { type: Function, default: () => false },
|
||||
// A card may declare itself unsupported (India: 855 groups do not fit a sheet).
|
||||
|
|
@ -246,7 +250,13 @@ const gridStyle = computed(() => {
|
|||
return { gridTemplateColumns: `repeat(${Math.min(perRow.value, fits)}, minmax(0, 1fr))` }
|
||||
})
|
||||
|
||||
const plural = computed(() => props.itemNounPlural || `${props.itemNoun}s`)
|
||||
const plural = computed(() => props.itemNounPlural || props.itemNoun)
|
||||
// Counts are PLURAL catalogue keys, rendered with the number so each locale takes its own CLDR form.
|
||||
// `t` here is useOptionalI18n's, whose bare-host fallback is humanizeKey — right for button labels,
|
||||
// wrong for a count — so counts use a catalogue translator of their own (tStatic when no i18n).
|
||||
const tCount = useOptionalT('')
|
||||
const countOf = (key, n) => tCount(key, { n: Number(n || 0).toLocaleString() }, Number(n || 0))
|
||||
const itemCount = (n) => (props.itemCountKey ? countOf(props.itemCountKey, n) : `${n} ${n === 1 ? props.itemNoun : plural.value}`)
|
||||
const base = computed(() => String(props.assetsBase || './assets').replace(/\/+$/, ''))
|
||||
|
||||
// ★ A SECOND PLACE TO LOOK, because "poster not generated yet" was being shown for posters that
|
||||
|
|
@ -1087,8 +1097,7 @@ useShadowStyles(
|
|||
<span v-if="collapsible" class="sec-caret" :class="{ 'is-open': !isCollapsed(sec.name) }">▶</span>
|
||||
<h3 class="sec-name">{{ sec.name }}</h3>
|
||||
<span class="sec-count">
|
||||
{{ sec.total.toLocaleString() }} {{ T('gospel.list.peopleGroups', 'people groups') }} ·
|
||||
{{ sec.items.length }} {{ sec.items.length === 1 ? itemNoun : plural }}
|
||||
{{ countOf('wall.peopleGroupCount', sec.total) }} · {{ itemCount(sec.items.length) }}
|
||||
</span>
|
||||
</component>
|
||||
|
||||
|
|
@ -1132,7 +1141,7 @@ useShadowStyles(
|
|||
<!-- Unsupported comes FIRST: there is no poster to try to load. -->
|
||||
<div v-if="unsupported(item)" class="ph is-soon">
|
||||
<div class="ph-label">{{ item.label }}</div>
|
||||
<div v-if="item.count" class="ph-count">{{ item.count.toLocaleString() }} people groups</div>
|
||||
<div v-if="item.count" class="ph-count">{{ countOf('wall.peopleGroupCount', item.count) }}</div>
|
||||
<div class="ph-soon">{{ unsupported(item) }}</div>
|
||||
</div>
|
||||
<!-- previewAction='print': the poster preview IS the control. Keyboard-
|
||||
|
|
@ -1152,7 +1161,7 @@ useShadowStyles(
|
|||
@error="onPreviewError(item.id)" />
|
||||
<div v-else class="ph">
|
||||
<div class="ph-label">{{ item.label }}</div>
|
||||
<div v-if="item.count" class="ph-count">{{ item.count.toLocaleString() }} people groups</div>
|
||||
<div v-if="item.count" class="ph-count">{{ countOf('wall.peopleGroupCount', item.count) }}</div>
|
||||
<!-- NOT "not generated yet": reaching this branch means the preview IMAGE did
|
||||
not arrive after both bases were tried, which says nothing about whether a
|
||||
poster exists. A record with genuinely no poster carries its own
|
||||
|
|
|
|||
|
|
@ -49,6 +49,19 @@ export function fillParams(str, params) {
|
|||
return String(str).replace(/\{(\w+)\}/g, (m, k) => (params[k] != null ? String(params[k]) : m))
|
||||
}
|
||||
|
||||
/**
|
||||
* Pick the form of a pipe-separated plural string for a count, by vue-i18n's OWN default rule — the
|
||||
* rule English renders with when i18n is installed (English sits outside the CLDR map), so a host
|
||||
* without i18n prints the same English a host with it does. A string with no pipe is returned whole.
|
||||
*/
|
||||
export function pickPluralForm(str, n) {
|
||||
const forms = String(str).split(/\s*\|\s*/)
|
||||
if (forms.length < 2 || typeof n !== 'number') return String(str)
|
||||
const c = Math.abs(n)
|
||||
const i = forms.length === 2 ? (c ? (c > 1 ? 1 : 0) : 1) : (c ? Math.min(c, 2) : 0)
|
||||
return forms[Math.min(i, forms.length - 1)]
|
||||
}
|
||||
|
||||
/** Prefix a bare key with its area, so callers may pass a bare key or an already-qualified one. */
|
||||
export function qualify(namespace, key) {
|
||||
const k = String(key)
|
||||
|
|
@ -68,16 +81,19 @@ export function qualify(namespace, key) {
|
|||
* @param {(key:string, params?:object)=>string} [opts.fallback] used instead of tStatic when the host
|
||||
* has no i18n, or when its catalogue lacks the key. Omit it to get the catalogue (the default).
|
||||
*/
|
||||
// ★ THE THIRD ARGUMENT IS A PLURAL COUNT, and it is forwarded to vue-i18n, whose pluralRules map
|
||||
// (library/i18n/index.js) picks each locale's CLDR form: ru 4, ar 6, zh 1. Without it a pipe string
|
||||
// renders one form for every number. Omitted, the call is exactly the two-argument call it always was.
|
||||
export function useOptionalT(namespace, opts = {}) {
|
||||
const viaFallback = typeof opts.fallback === 'function'
|
||||
? (key, params) => fillParams(opts.fallback(qualify(namespace, key), params) ?? key, params)
|
||||
: (key, params) => fillParams(tStatic(qualify(namespace, key)) ?? key, params)
|
||||
? (key, params, plural) => fillParams(pickPluralForm(opts.fallback(qualify(namespace, key), params) ?? key, plural), params)
|
||||
: (key, params, plural) => fillParams(pickPluralForm(tStatic(qualify(namespace, key)) ?? key, plural), params)
|
||||
try {
|
||||
const i18n = useI18n()
|
||||
return (key, params) => {
|
||||
return (key, params, plural) => {
|
||||
const q = qualify(namespace, key)
|
||||
const v = i18n.t(q, params || {})
|
||||
return v === q ? viaFallback(key, params) : v
|
||||
const v = typeof plural === 'number' ? i18n.t(q, params || {}, plural) : i18n.t(q, params || {})
|
||||
return v === q ? viaFallback(key, params, plural) : v
|
||||
}
|
||||
} catch (_) {
|
||||
// No i18n on this host. Not an error: seven bundles deliberately install none.
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "آسيا",
|
||||
"europe": "أوروبا",
|
||||
"latin_america_&_caribbean": "أمريكا اللاتينية",
|
||||
"oceania": "أوقيانوسيا"
|
||||
"oceania": "أوقيانوسيا",
|
||||
"middle_east": "الشرق الأوسط",
|
||||
"north_america_&_non-spanish_caribbean": "أمريكا الشمالية والكاريبي غير الناطق بالإسبانية"
|
||||
},
|
||||
"sort_by_column_hint": "رتّب هذا الجدول حسب {column} — النقر مع Shift يضيف عمودًا ثانيًا. الفرز يرتّب الجدول فقط؛ وتحتفظ البطاقات بترتيبها.",
|
||||
"fs_exit_hint": "الخروج من ملء الشاشة (Esc) — العودة إلى سبعة صفوف",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "المنطقة — ترتّب قوائم UPG-100 حسب منطقة العالم (أفريقيا، الهند، الشرق الأوسط، الصمّ، …). الأعداد هي مجموع UUPG والسكان لكل قائمة تحتها.",
|
||||
"upg100Zone": "قوائم UPG-100 — كل واحدة هي قائمة صلاة للشعوب غير الموصول إليها في منطقة ما، وهي ما ترسمه الخريطة وتلوّنه. تُطبع كل قائمة ككُتيّب خاص بها.",
|
||||
"upg100Group": "مجموعة شعبية — المجموعات غير الموصول إليها داخل القائمة، الأكثر حاجة للصلاة أولاً. كل نقطة على الخريطة هي واحدة منها."
|
||||
"upg100Group": "مجموعة شعبية — المجموعات غير الموصول إليها داخل القائمة، الأكثر حاجة للصلاة أولاً. كل نقطة على الخريطة هي واحدة منها.",
|
||||
"region": "منطقة كبرى في WAGF (مثل «آسيا» و«أفريقيا»). مميّزة بلون على الخريطة.",
|
||||
"block": "كتلة WAGF — التقسيم التنظيمي الفرعي داخل كل منطقة (مثل «جنوب شرق آسيا» و«غرب أفريقيا»).",
|
||||
"country": "الدول منفردةً، مرتّبة داخل كتلتها بحسب حجم السكان غير المبلَّغين."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "توسيع {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "الأقاليم: {count}",
|
||||
"bandInRange": "✓ النطاق 50–100",
|
||||
"bandOutOfRange": "النطاق 50–100",
|
||||
"mapContextLost": "تم إلغاء تحميل هذه الخريطة لتحرير ذاكرة الرسوميات."
|
||||
"mapContextLost": "تم إلغاء تحميل هذه الخريطة لتحرير ذاكرة الرسوميات.",
|
||||
"nOfTotal": "{n} من {total}",
|
||||
"mapInitFailed": "تعذّر تهيئة الخريطة — تحقّق من الرمز والحاوية",
|
||||
"countryWallIntroA": "ملصق لكل دولة، جاهز للصلاة والطباعة والتعليق على الحائط — نصلّي لأجلهم ",
|
||||
"countryWallIntroB": ". رُتّبت المناطق والدول بحسب عدد الشعوب غير المبلَّغة فيها، لتتقدّم الحاجة الأكبر.",
|
||||
"countryWallSoon": "قريبًا: ستُنشأ قائمة صلاة لكل دولة، تسمّي كل شعب غير مبلَّغ فيها.",
|
||||
"countryWallHeading": "ملصقات الدول — قوائم صلاة وملصقات"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "جنوب شرق آسيا + أوقيانوسيا",
|
||||
"region_china_mongolia": "الصين + منغوليا",
|
||||
"region_india": "الهند",
|
||||
"region_other": "أخرى"
|
||||
"region_other": "أخرى",
|
||||
"region_americas": "الأمريكتان",
|
||||
"region_europe": "أوروبا"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"within": "ضمن {selection}",
|
||||
"allData": "كل بيانات DOXA"
|
||||
},
|
||||
"upg100Placeholder": "ابحث عن شعب أو قائمة UPG-100 أو منطقة…"
|
||||
"upg100Placeholder": "ابحث عن شعب أو قائمة UPG-100 أو منطقة…",
|
||||
"placeholderRegions": "ابحث عن منطقة أو دولة أو شعب"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "حجر الزاوية",
|
||||
"journeyChildren": "أبناء إبراهيم",
|
||||
"journeyPriesthood": "كهنوت ملوكي",
|
||||
"journeySent": "مُرسَلون إلى الهالكين"
|
||||
"journeySent": "مُرسَلون إلى الهالكين",
|
||||
"peopleGroupCount": "لا شعوب | شعب واحد | شعبان | {n} شعوب | {n} شعبًا | {n} شعب",
|
||||
"listCount": "لا قوائم | قائمة واحدة | قائمتان | {n} قوائم | {n} قائمة | {n} قائمة"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Asien",
|
||||
"europe": "Europa",
|
||||
"latin_america_&_caribbean": "Lateinamerika",
|
||||
"oceania": "Ozeanien"
|
||||
"oceania": "Ozeanien",
|
||||
"middle_east": "Naher Osten",
|
||||
"north_america_&_non-spanish_caribbean": "Nordamerika und nicht-spanische Karibik"
|
||||
},
|
||||
"sort_by_column_hint": "Tabelle nach {column} sortieren – Umschalt-Klick fügt eine zweite Spalte hinzu. Die Sortierung ordnet nur die Tabelle; die Karten behalten ihre eigene Reihenfolge.",
|
||||
"fs_exit_hint": "Vollbild beenden (Esc) — zurück zu sieben Zeilen",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Region — sortiert die UPG-100-Listen nach Weltgegend (Afrika, Indien, Naher Osten, Gehörlose, …). Die Zahlen sind die UUPGs und die Bevölkerung aller darunterliegenden Listen zusammen.",
|
||||
"upg100Zone": "UPG-100-Listen — jede ist eine Gebetsliste der unerreichten Volksgruppen eines Gebiets und das, was die Karte zeichnet und einfärbt. Jede Liste wird als eigenes Heft gedruckt.",
|
||||
"upg100Group": "Volksgruppe — die einzelnen unerreichten Gruppen innerhalb einer Liste, größter Gebetsbedarf zuerst. Jeder Kartenpunkt ist eine davon."
|
||||
"upg100Group": "Volksgruppe — die einzelnen unerreichten Gruppen innerhalb einer Liste, größter Gebetsbedarf zuerst. Jeder Kartenpunkt ist eine davon.",
|
||||
"region": "WAGF-Großregion (z. B. „Asien“, „Afrika“). Auf der Karte farbig markiert.",
|
||||
"block": "WAGF-Block — die organisatorische Untergruppe innerhalb jeder Region (z. B. „Südostasien“, „Westafrika“).",
|
||||
"country": "Einzelne Länder, innerhalb ihres Blocks nach der Größe der unerreichten Bevölkerung geordnet."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "{label} ausklappen",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Gebiete: {count}",
|
||||
"bandInRange": "✓ Bereich 50–100",
|
||||
"bandOutOfRange": "Bereich 50–100",
|
||||
"mapContextLost": "Diese Karte wurde entladen, um Grafikspeicher freizugeben."
|
||||
"mapContextLost": "Diese Karte wurde entladen, um Grafikspeicher freizugeben.",
|
||||
"nOfTotal": "{n} von {total}",
|
||||
"mapInitFailed": "Karte konnte nicht initialisiert werden — Token und Container prüfen",
|
||||
"countryWallIntroA": "Ein Poster pro Land, bereit zum Beten, Drucken und Aufhängen — und für sie beten ",
|
||||
"countryWallIntroB": ". Regionen und Länder sind danach geordnet, wie viele unerreichte Volksgruppen sie umfassen, damit der größte Bedarf vorne steht.",
|
||||
"countryWallSoon": "Demnächst: Für jedes Land wird eine Gebetsliste erstellt, die jede unerreichte Volksgruppe darin mit Namen nennt.",
|
||||
"countryWallHeading": "Länderposter — Gebetslisten und Poster"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Südostasien + Ozeanien",
|
||||
"region_china_mongolia": "China + Mongolei",
|
||||
"region_india": "Indien",
|
||||
"region_other": "Sonstige"
|
||||
"region_other": "Sonstige",
|
||||
"region_americas": "Amerika",
|
||||
"region_europe": "Europa"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"dialect": "Dialekt",
|
||||
"religionKind": "Religion"
|
||||
},
|
||||
"upg100Placeholder": "Volksgruppe, UPG-100-Liste oder Region suchen…"
|
||||
"upg100Placeholder": "Volksgruppe, UPG-100-Liste oder Region suchen…",
|
||||
"placeholderRegions": "Region, Land oder Volksgruppe suchen"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "Der Eckstein",
|
||||
"journeyChildren": "Kinder Abrahams",
|
||||
"journeyPriesthood": "Eine königliche Priesterschaft",
|
||||
"journeySent": "Gesandt zu den Verlorenen"
|
||||
"journeySent": "Gesandt zu den Verlorenen",
|
||||
"peopleGroupCount": "{n} Volksgruppe | {n} Volksgruppen",
|
||||
"listCount": "{n} Liste | {n} Listen"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Asia",
|
||||
"europe": "Europe",
|
||||
"latin_america_&_caribbean": "Latin America & Caribbean",
|
||||
"oceania": "Oceania"
|
||||
"oceania": "Oceania",
|
||||
"middle_east": "Middle East",
|
||||
"north_america_&_non-spanish_caribbean": "North America & Non-Spanish Caribbean"
|
||||
},
|
||||
"sort_by_column_hint": "Sort this table by {column} — shift-click to add a second column. Sorting orders the table only; the cards keep their own order.",
|
||||
"fs_exit_hint": "Exit full screen (Esc) — back to seven rows",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Region — sort the UPG-100 lists by world area (Africa, India, Middle East, Deaf, …). Counts are the UUPGs and population summed across every list beneath it.",
|
||||
"upg100Zone": "UPG-100 Lists — each one is a prayer list of the unreached people groups in an area, and is what the map paints and colours. Every list prints as its own packet.",
|
||||
"upg100Group": "People Group — the individual unreached groups inside a list, largest prayer need first. Each map dot is one of these."
|
||||
"upg100Group": "People Group — the individual unreached groups inside a list, largest prayer need first. Each map dot is one of these.",
|
||||
"region": "WAGF macro-region (e.g. \"Asia\", \"Africa\"). Color-coded on the map.",
|
||||
"block": "WAGF bloc — the organizational sub-grouping within each region (e.g. \"South East Asia\", \"West Africa\").",
|
||||
"country": "Individual countries, listed by unreached-population size within their bloc."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "Expand {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Territories: {count}",
|
||||
"bandInRange": "✓ 50–100 band",
|
||||
"bandOutOfRange": "band 50–100",
|
||||
"mapContextLost": "This map was unloaded to free graphics memory."
|
||||
"mapContextLost": "This map was unloaded to free graphics memory.",
|
||||
"nOfTotal": "{n} of {total}",
|
||||
"mapInitFailed": "Map failed to initialize — check token and container",
|
||||
"countryWallIntroA": "One poster per country, ready to pray, print, and put on a wall — praying for them ",
|
||||
"countryWallIntroB": ". Regions and countries are ordered by how many unengaged people groups they hold, so the greatest need leads.",
|
||||
"countryWallSoon": "Coming soon — a prayer list will be generated for each country, naming every unengaged people group within it.",
|
||||
"countryWallHeading": "Country Posters — Prayer Lists & Posters"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Southeast Asia + Oceania",
|
||||
"region_china_mongolia": "China + Mongolia",
|
||||
"region_india": "India",
|
||||
"region_other": "Other"
|
||||
"region_other": "Other",
|
||||
"region_americas": "Americas",
|
||||
"region_europe": "Europe"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"within": "Within {selection}",
|
||||
"allData": "All DOXA Data"
|
||||
},
|
||||
"upg100Placeholder": "Search people group, UPG-100 list, or region…"
|
||||
"upg100Placeholder": "Search people group, UPG-100 list, or region…",
|
||||
"placeholderRegions": "Search region, country, people group"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "The cornerstone",
|
||||
"journeyChildren": "Children of Abraham",
|
||||
"journeyPriesthood": "A royal priesthood",
|
||||
"journeySent": "Sent to the lost"
|
||||
"journeySent": "Sent to the lost",
|
||||
"peopleGroupCount": "{n} people group | {n} people groups",
|
||||
"listCount": "{n} list | {n} lists"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Asia",
|
||||
"europe": "Europa",
|
||||
"latin_america_&_caribbean": "Latinoamérica",
|
||||
"oceania": "Oceanía"
|
||||
"oceania": "Oceanía",
|
||||
"middle_east": "Oriente Medio",
|
||||
"north_america_&_non-spanish_caribbean": "Norteamérica y Caribe no hispano"
|
||||
},
|
||||
"sort_by_column_hint": "Ordenar esta tabla por {column}; Mayús+clic añade una segunda columna. La ordenación solo afecta a la tabla; las tarjetas conservan su propio orden.",
|
||||
"fs_exit_hint": "Salir de pantalla completa (Esc): volver a siete filas",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Región — ordena las listas UPG-100 por área mundial (África, India, Oriente Medio, Sordos, …). Los totales son los UUPG y la población sumados de todas las listas que contiene.",
|
||||
"upg100Zone": "Listas UPG-100 — cada una es una lista de oración de los grupos étnicos no alcanzados de un área, y es lo que el mapa pinta y colorea. Cada lista se imprime como su propio paquete.",
|
||||
"upg100Group": "Grupo étnico — los grupos no alcanzados dentro de una lista, primero los de mayor necesidad de oración. Cada punto del mapa es uno de ellos."
|
||||
"upg100Group": "Grupo étnico — los grupos no alcanzados dentro de una lista, primero los de mayor necesidad de oración. Cada punto del mapa es uno de ellos.",
|
||||
"region": "Macrorregión WAGF (p. ej., «Asia», «África»). Con color propio en el mapa.",
|
||||
"block": "Bloque WAGF: la subdivisión organizativa dentro de cada región (p. ej., «Sudeste Asiático», «África Occidental»).",
|
||||
"country": "Países individuales, ordenados dentro de su bloque según el tamaño de su población no alcanzada."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "Expandir {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Territorios: {count}",
|
||||
"bandInRange": "✓ franja 50–100",
|
||||
"bandOutOfRange": "franja 50–100",
|
||||
"mapContextLost": "Este mapa se descargó para liberar memoria gráfica."
|
||||
"mapContextLost": "Este mapa se descargó para liberar memoria gráfica.",
|
||||
"nOfTotal": "{n} de {total}",
|
||||
"mapInitFailed": "No se pudo iniciar el mapa: revisa el token y el contenedor",
|
||||
"countryWallIntroA": "Un cartel por país, listo para orar, imprimir y colgar en una pared — orando por ellos ",
|
||||
"countryWallIntroB": ". Las regiones y los países se ordenan según cuántos pueblos no comprometidos contienen, para que la mayor necesidad vaya primero.",
|
||||
"countryWallSoon": "Próximamente: se generará una lista de oración para cada país, con el nombre de cada pueblo no alcanzado que hay en él.",
|
||||
"countryWallHeading": "Carteles por país — Listas de oración y carteles"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Sudeste Asiático + Oceanía",
|
||||
"region_china_mongolia": "China + Mongolia",
|
||||
"region_india": "India",
|
||||
"region_other": "Otros"
|
||||
"region_other": "Otros",
|
||||
"region_americas": "América",
|
||||
"region_europe": "Europa"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"within": "Dentro de {selection}",
|
||||
"allData": "Todos los datos DOXA"
|
||||
},
|
||||
"upg100Placeholder": "Buscar pueblo, lista UPG-100 o región…"
|
||||
"upg100Placeholder": "Buscar pueblo, lista UPG-100 o región…",
|
||||
"placeholderRegions": "Buscar región, país o pueblo"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "La piedra angular",
|
||||
"journeyChildren": "Hijos de Abraham",
|
||||
"journeyPriesthood": "Un real sacerdocio",
|
||||
"journeySent": "Enviados a los perdidos"
|
||||
"journeySent": "Enviados a los perdidos",
|
||||
"peopleGroupCount": "{n} pueblo | {n} de pueblos | {n} pueblos",
|
||||
"listCount": "{n} lista | {n} de listas | {n} listas"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Asie",
|
||||
"europe": "Europe",
|
||||
"latin_america_&_caribbean": "Amérique latine",
|
||||
"oceania": "Océanie"
|
||||
"oceania": "Océanie",
|
||||
"middle_east": "Moyen-Orient",
|
||||
"north_america_&_non-spanish_caribbean": "Amérique du Nord et Caraïbes non hispanophones"
|
||||
},
|
||||
"sort_by_column_hint": "Trier ce tableau par {column} — Maj+clic ajoute une deuxième colonne. Le tri ne s’applique qu’au tableau ; les cartes gardent leur propre ordre.",
|
||||
"fs_exit_hint": "Quitter le plein écran (Échap) — retour à sept lignes",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Région — trie les listes UPG-100 par zone du monde (Afrique, Inde, Moyen-Orient, Sourds, …). Les totaux sont les UUPG et la population additionnés sur toutes les listes qu’elle contient.",
|
||||
"upg100Zone": "Listes UPG-100 — chacune est une liste de prière des groupes de peuples non atteints d’une zone, et c’est ce que la carte dessine et colore. Chaque liste s’imprime comme son propre livret.",
|
||||
"upg100Group": "Groupe de peuples — les groupes non atteints au sein d’une liste, les plus grands besoins de prière en premier. Chaque point de la carte en est un."
|
||||
"upg100Group": "Groupe de peuples — les groupes non atteints au sein d’une liste, les plus grands besoins de prière en premier. Chaque point de la carte en est un.",
|
||||
"region": "Macro-région WAGF (p. ex. « Asie », « Afrique »). Colorée sur la carte.",
|
||||
"block": "Bloc WAGF — le sous-groupe organisationnel de chaque région (p. ex. « Asie du Sud-Est », « Afrique de l’Ouest »).",
|
||||
"country": "Pays, classés au sein de leur bloc selon la taille de leur population non atteinte."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "Développer {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Territoires : {count}",
|
||||
"bandInRange": "✓ tranche 50–100",
|
||||
"bandOutOfRange": "tranche 50–100",
|
||||
"mapContextLost": "Cette carte a été déchargée pour libérer de la mémoire graphique."
|
||||
"mapContextLost": "Cette carte a été déchargée pour libérer de la mémoire graphique.",
|
||||
"nOfTotal": "{n} sur {total}",
|
||||
"mapInitFailed": "Échec de l’initialisation de la carte — vérifiez le jeton et le conteneur",
|
||||
"countryWallIntroA": "Une affiche par pays, prête à prier, à imprimer et à accrocher au mur — en priant pour eux ",
|
||||
"countryWallIntroB": ". Les régions et les pays sont classés selon le nombre de peuples non engagés qu’ils comptent, pour que le plus grand besoin vienne en premier.",
|
||||
"countryWallSoon": "Bientôt : une liste de prière sera générée pour chaque pays, nommant chaque peuple non atteint qui s’y trouve.",
|
||||
"countryWallHeading": "Affiches par pays — Listes de prière et affiches"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Asie du Sud-Est + Océanie",
|
||||
"region_china_mongolia": "Chine + Mongolie",
|
||||
"region_india": "Inde",
|
||||
"region_other": "Autres"
|
||||
"region_other": "Autres",
|
||||
"region_americas": "Amériques",
|
||||
"region_europe": "Europe"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"within": "Dans {selection}",
|
||||
"allData": "Toutes les données DOXA"
|
||||
},
|
||||
"upg100Placeholder": "Rechercher un peuple, une liste UPG-100 ou une région…"
|
||||
"upg100Placeholder": "Rechercher un peuple, une liste UPG-100 ou une région…",
|
||||
"placeholderRegions": "Rechercher une région, un pays, un peuple"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "La pierre angulaire",
|
||||
"journeyChildren": "Enfants d’Abraham",
|
||||
"journeyPriesthood": "Un sacerdoce royal",
|
||||
"journeySent": "Envoyés vers les perdus"
|
||||
"journeySent": "Envoyés vers les perdus",
|
||||
"peopleGroupCount": "{n} peuple | {n} de peuples | {n} peuples",
|
||||
"listCount": "{n} liste | {n} de listes | {n} listes"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "एशिया",
|
||||
"europe": "यूरोप",
|
||||
"latin_america_&_caribbean": "लैटिन अमेरिका",
|
||||
"oceania": "ओशिआनिया"
|
||||
"oceania": "ओशिआनिया",
|
||||
"middle_east": "मध्य पूर्व",
|
||||
"north_america_&_non-spanish_caribbean": "उत्तरी अमेरिका और गैर-स्पेनिश कैरिबियन"
|
||||
},
|
||||
"sort_by_column_hint": "इस तालिका को {column} के अनुसार क्रमबद्ध करें — Shift-क्लिक से दूसरा कॉलम जुड़ता है। क्रमबद्ध करने से केवल तालिका का क्रम बदलता है; कार्ड अपना क्रम बनाए रखते हैं।",
|
||||
"fs_exit_hint": "पूर्ण स्क्रीन से बाहर निकलें (Esc) — सात पंक्तियों पर वापस",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "क्षेत्र — UPG-100 सूचियों को विश्व क्षेत्र के अनुसार क्रमित करता है (अफ़्रीका, भारत, मध्य पूर्व, बधिर, …)। संख्याएँ उसके नीचे की हर सूची के UUPG और जनसंख्या का योग हैं।",
|
||||
"upg100Zone": "UPG-100 सूचियाँ — हर एक किसी क्षेत्र के अनपहुँचे जनसमूहों की प्रार्थना सूची है, और यही मानचित्र बनाता और रंगता है। हर सूची अपने अलग पैकेट के रूप में छपती है।",
|
||||
"upg100Group": "जनसमूह — किसी सूची के भीतर के अलग-अलग अनपहुँचे समूह, सबसे बड़ी प्रार्थना आवश्यकता पहले। मानचित्र का हर बिंदु इनमें से एक है।"
|
||||
"upg100Group": "जनसमूह — किसी सूची के भीतर के अलग-अलग अनपहुँचे समूह, सबसे बड़ी प्रार्थना आवश्यकता पहले। मानचित्र का हर बिंदु इनमें से एक है।",
|
||||
"region": "WAGF महाक्षेत्र (जैसे \"एशिया\", \"अफ़्रीका\")। मानचित्र पर रंग से चिह्नित।",
|
||||
"block": "WAGF ब्लॉक — हर क्षेत्र के भीतर संगठनात्मक उप-समूह (जैसे \"दक्षिण-पूर्व एशिया\", \"पश्चिम अफ़्रीका\")।",
|
||||
"country": "अलग-अलग देश, अपने ब्लॉक के भीतर अनपहुँची आबादी के आकार के क्रम में।"
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "{label} का विस्तार करें",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "क्षेत्र: {count}",
|
||||
"bandInRange": "✓ 50–100 दायरा",
|
||||
"bandOutOfRange": "50–100 दायरा",
|
||||
"mapContextLost": "ग्राफ़िक्स मेमोरी खाली करने के लिए यह मानचित्र अनलोड कर दिया गया।"
|
||||
"mapContextLost": "ग्राफ़िक्स मेमोरी खाली करने के लिए यह मानचित्र अनलोड कर दिया गया।",
|
||||
"nOfTotal": "{total} में से {n}",
|
||||
"mapInitFailed": "मानचित्र आरंभ नहीं हो सका — टोकन और कंटेनर जाँचें",
|
||||
"countryWallIntroA": "हर देश के लिए एक पोस्टर — प्रार्थना करने, छापने और दीवार पर लगाने के लिए तैयार, और उनके लिए प्रार्थना करते हुए ",
|
||||
"countryWallIntroB": ". क्षेत्र और देश इस क्रम में हैं कि उनमें कितने अनपहुँचे जनसमूह हैं, ताकि सबसे बड़ी ज़रूरत पहले आए।",
|
||||
"countryWallSoon": "जल्द ही: हर देश के लिए एक प्रार्थना सूची बनाई जाएगी, जिसमें उसके हर अनपहुँचे जनसमूह का नाम होगा।",
|
||||
"countryWallHeading": "देश पोस्टर — प्रार्थना सूचियाँ और पोस्टर"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "दक्षिण-पूर्व एशिया + ओशिनिया",
|
||||
"region_china_mongolia": "चीन + मंगोलिया",
|
||||
"region_india": "भारत",
|
||||
"region_other": "अन्य"
|
||||
"region_other": "अन्य",
|
||||
"region_americas": "अमेरिका महाद्वीप",
|
||||
"region_europe": "यूरोप"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"dialect": "बोली",
|
||||
"religionKind": "धर्म"
|
||||
},
|
||||
"upg100Placeholder": "जनसमूह, UPG-100 सूची या क्षेत्र खोजें…"
|
||||
"upg100Placeholder": "जनसमूह, UPG-100 सूची या क्षेत्र खोजें…",
|
||||
"placeholderRegions": "क्षेत्र, देश या जनसमूह खोजें"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "कोने का पत्थर",
|
||||
"journeyChildren": "अब्राहम की संतान",
|
||||
"journeyPriesthood": "राज-पदधारी याजक",
|
||||
"journeySent": "खोए हुओं के पास भेजे गए"
|
||||
"journeySent": "खोए हुओं के पास भेजे गए",
|
||||
"peopleGroupCount": "{n} जनसमूह | {n} जनसमूह",
|
||||
"listCount": "{n} सूची | {n} सूचियाँ"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Asia",
|
||||
"europe": "Europa",
|
||||
"latin_america_&_caribbean": "America Latina",
|
||||
"oceania": "Oceania"
|
||||
"oceania": "Oceania",
|
||||
"middle_east": "Medio Oriente",
|
||||
"north_america_&_non-spanish_caribbean": "Nord America e Caraibi non ispanici"
|
||||
},
|
||||
"sort_by_column_hint": "Ordina questa tabella per {column}: Maiusc+clic aggiunge una seconda colonna. L’ordinamento riguarda solo la tabella; le schede mantengono il proprio ordine.",
|
||||
"fs_exit_hint": "Esci da schermo intero (Esc) — torna a sette righe",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Regione — ordina le liste UPG-100 per area del mondo (Africa, India, Medio Oriente, Sordi, …). I totali sono gli UUPG e la popolazione sommati di ogni lista sottostante.",
|
||||
"upg100Zone": "Liste UPG-100 — ognuna è una lista di preghiera dei gruppi etnici non raggiunti di un’area, ed è ciò che la mappa disegna e colora. Ogni lista si stampa come il proprio fascicolo.",
|
||||
"upg100Group": "Gruppo etnico — i singoli gruppi non raggiunti dentro una lista, prima quelli con maggiore bisogno di preghiera. Ogni punto della mappa è uno di questi."
|
||||
"upg100Group": "Gruppo etnico — i singoli gruppi non raggiunti dentro una lista, prima quelli con maggiore bisogno di preghiera. Ogni punto della mappa è uno di questi.",
|
||||
"region": "Macroregione WAGF (ad es. «Asia», «Africa»). Colorata sulla mappa.",
|
||||
"block": "Blocco WAGF — il sottogruppo organizzativo all’interno di ogni regione (ad es. «Sud-est asiatico», «Africa occidentale»).",
|
||||
"country": "Singoli paesi, ordinati all’interno del loro blocco per dimensione della popolazione non raggiunta."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "Espandi {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Territori: {count}",
|
||||
"bandInRange": "✓ fascia 50–100",
|
||||
"bandOutOfRange": "fascia 50–100",
|
||||
"mapContextLost": "Questa mappa è stata scaricata per liberare memoria grafica."
|
||||
"mapContextLost": "Questa mappa è stata scaricata per liberare memoria grafica.",
|
||||
"nOfTotal": "{n} su {total}",
|
||||
"mapInitFailed": "Impossibile inizializzare la mappa — controlla il token e il contenitore",
|
||||
"countryWallIntroA": "Un poster per paese, pronto da pregare, stampare e appendere al muro — pregando per loro ",
|
||||
"countryWallIntroB": ". Regioni e paesi sono ordinati in base a quanti popoli non raggiunti contengono, perché il bisogno più grande venga per primo.",
|
||||
"countryWallSoon": "Prossimamente: per ogni paese verrà generata una lista di preghiera con il nome di ogni popolo non raggiunto che vi abita.",
|
||||
"countryWallHeading": "Poster per paese — Liste di preghiera e manifesti"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Sud-est asiatico + Oceania",
|
||||
"region_china_mongolia": "Cina + Mongolia",
|
||||
"region_india": "India",
|
||||
"region_other": "Altro"
|
||||
"region_other": "Altro",
|
||||
"region_americas": "Americhe",
|
||||
"region_europe": "Europa"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"dialect": "Dialetto",
|
||||
"religionKind": "Religione"
|
||||
},
|
||||
"upg100Placeholder": "Cerca popolo, elenco UPG-100 o regione…"
|
||||
"upg100Placeholder": "Cerca popolo, elenco UPG-100 o regione…",
|
||||
"placeholderRegions": "Cerca regione, paese o popolo"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "La pietra angolare",
|
||||
"journeyChildren": "Figli di Abraamo",
|
||||
"journeyPriesthood": "Un sacerdozio regale",
|
||||
"journeySent": "Mandati ai perduti"
|
||||
"journeySent": "Mandati ai perduti",
|
||||
"peopleGroupCount": "{n} popolo | {n} di popoli | {n} popoli",
|
||||
"listCount": "{n} lista | {n} di liste | {n} liste"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Ásia",
|
||||
"europe": "Europa",
|
||||
"latin_america_&_caribbean": "América Latina",
|
||||
"oceania": "Oceania"
|
||||
"oceania": "Oceania",
|
||||
"middle_east": "Oriente Médio",
|
||||
"north_america_&_non-spanish_caribbean": "América do Norte e Caribe não hispânico"
|
||||
},
|
||||
"sort_by_column_hint": "Ordenar esta tabela por {column} — Shift+clique adiciona uma segunda coluna. A ordenação afeta apenas a tabela; os cartões mantêm a própria ordem.",
|
||||
"fs_exit_hint": "Sair da tela cheia (Esc) — voltar a sete linhas",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Região — ordena as listas UPG-100 por área do mundo (África, Índia, Oriente Médio, Surdos, …). Os totais são os UUPG e a população somados de todas as listas abaixo dela.",
|
||||
"upg100Zone": "Listas UPG-100 — cada uma é uma lista de oração dos grupos étnicos não alcançados de uma área, e é o que o mapa pinta e colore. Cada lista é impressa como seu próprio pacote.",
|
||||
"upg100Group": "Grupo étnico — os grupos não alcançados dentro de uma lista, primeiro os de maior necessidade de oração. Cada ponto do mapa é um deles."
|
||||
"upg100Group": "Grupo étnico — os grupos não alcançados dentro de uma lista, primeiro os de maior necessidade de oração. Cada ponto do mapa é um deles.",
|
||||
"region": "Macrorregião WAGF (ex.: “Ásia”, “África”). Com cor própria no mapa.",
|
||||
"block": "Bloco WAGF — a subdivisão organizacional dentro de cada região (ex.: “Sudeste Asiático”, “África Ocidental”).",
|
||||
"country": "Países individuais, ordenados dentro do seu bloco pelo tamanho da população não alcançada."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "Expandir {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Territórios: {count}",
|
||||
"bandInRange": "✓ faixa 50–100",
|
||||
"bandOutOfRange": "faixa 50–100",
|
||||
"mapContextLost": "Este mapa foi descarregado para libertar memória gráfica."
|
||||
"mapContextLost": "Este mapa foi descarregado para libertar memória gráfica.",
|
||||
"nOfTotal": "{n} de {total}",
|
||||
"mapInitFailed": "Falha ao iniciar o mapa — verifique o token e o contêiner",
|
||||
"countryWallIntroA": "Um cartaz por país, pronto para orar, imprimir e pendurar na parede — orando por eles ",
|
||||
"countryWallIntroB": ". As regiões e os países são ordenados pelo número de povos não engajados que abrigam, para que a maior necessidade venha primeiro.",
|
||||
"countryWallSoon": "Em breve: será gerada uma lista de oração para cada país, com o nome de cada povo não alcançado nele.",
|
||||
"countryWallHeading": "Cartazes por país — Listas de oração e cartazes"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Sudeste Asiático + Oceania",
|
||||
"region_china_mongolia": "China + Mongólia",
|
||||
"region_india": "Índia",
|
||||
"region_other": "Outros"
|
||||
"region_other": "Outros",
|
||||
"region_americas": "Américas",
|
||||
"region_europe": "Europa"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"within": "Dentro de {selection}",
|
||||
"allData": "Todos os dados DOXA"
|
||||
},
|
||||
"upg100Placeholder": "Procurar povo, lista UPG-100 ou região…"
|
||||
"upg100Placeholder": "Procurar povo, lista UPG-100 ou região…",
|
||||
"placeholderRegions": "Procurar região, país ou povo"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "A pedra angular",
|
||||
"journeyChildren": "Filhos de Abraão",
|
||||
"journeyPriesthood": "Um sacerdócio real",
|
||||
"journeySent": "Enviados aos perdidos"
|
||||
"journeySent": "Enviados aos perdidos",
|
||||
"peopleGroupCount": "{n} povo | {n} de povos | {n} povos",
|
||||
"listCount": "{n} lista | {n} de listas | {n} listas"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Asia",
|
||||
"europe": "Europa",
|
||||
"latin_america_&_caribbean": "America Latină",
|
||||
"oceania": "Oceania"
|
||||
"oceania": "Oceania",
|
||||
"middle_east": "Orientul Mijlociu",
|
||||
"north_america_&_non-spanish_caribbean": "America de Nord și Caraibe nehispanice"
|
||||
},
|
||||
"sort_by_column_hint": "Sortează acest tabel după {column} — Shift+clic adaugă o a doua coloană. Sortarea ordonează doar tabelul; cardurile își păstrează propria ordine.",
|
||||
"fs_exit_hint": "Ieși din ecran complet (Esc) — înapoi la șapte rânduri",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Regiune — sortează listele UPG-100 după zona lumii (Africa, India, Orientul Mijlociu, Surzi, …). Totalurile sunt UUPG-urile și populația însumate din fiecare listă de dedesubt.",
|
||||
"upg100Zone": "Liste UPG-100 — fiecare este o listă de rugăciune a grupurilor etnice neatinse dintr-o zonă și este ceea ce harta desenează și colorează. Fiecare listă se tipărește ca propriul pachet.",
|
||||
"upg100Group": "Grup etnic — grupurile neatinse dintr-o listă, mai întâi cele cu cea mai mare nevoie de rugăciune. Fiecare punct de pe hartă este unul dintre ele."
|
||||
"upg100Group": "Grup etnic — grupurile neatinse dintr-o listă, mai întâi cele cu cea mai mare nevoie de rugăciune. Fiecare punct de pe hartă este unul dintre ele.",
|
||||
"region": "Macroregiune WAGF (de ex. „Asia”, „Africa”). Colorată pe hartă.",
|
||||
"block": "Bloc WAGF — subgruparea organizatorică din fiecare regiune (de ex. „Asia de Sud-Est”, „Africa de Vest”).",
|
||||
"country": "Țări individuale, ordonate în cadrul blocului lor după mărimea populației neatinse."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "Extinde {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Teritorii: {count}",
|
||||
"bandInRange": "✓ interval 50–100",
|
||||
"bandOutOfRange": "interval 50–100",
|
||||
"mapContextLost": "Această hartă a fost descărcată pentru a elibera memoria grafică."
|
||||
"mapContextLost": "Această hartă a fost descărcată pentru a elibera memoria grafică.",
|
||||
"nOfTotal": "{n} din {total}",
|
||||
"mapInitFailed": "Harta nu a putut fi inițializată — verificați tokenul și containerul",
|
||||
"countryWallIntroA": "Câte un afiș pentru fiecare țară, gata de rugăciune, de tipărit și de pus pe perete — rugându-ne pentru ei ",
|
||||
"countryWallIntroB": ". Regiunile și țările sunt ordonate după câte popoare neatinse cuprind, pentru ca nevoia cea mai mare să fie prima.",
|
||||
"countryWallSoon": "În curând: pentru fiecare țară va fi generată o listă de rugăciune care numește fiecare popor neatins din ea.",
|
||||
"countryWallHeading": "Afișe pe țări — Liste de rugăciune și afișe"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Asia de Sud-Est + Oceania",
|
||||
"region_china_mongolia": "China + Mongolia",
|
||||
"region_india": "India",
|
||||
"region_other": "Altele"
|
||||
"region_other": "Altele",
|
||||
"region_americas": "Americi",
|
||||
"region_europe": "Europa"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"dialect": "Dialect",
|
||||
"religionKind": "Religie"
|
||||
},
|
||||
"upg100Placeholder": "Caută popor, listă UPG-100 sau regiune…"
|
||||
"upg100Placeholder": "Caută popor, listă UPG-100 sau regiune…",
|
||||
"placeholderRegions": "Caută regiune, țară sau popor"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "Piatra din capul unghiului",
|
||||
"journeyChildren": "Copiii lui Avraam",
|
||||
"journeyPriesthood": "O preoție împărătească",
|
||||
"journeySent": "Trimiși la cei pierduți"
|
||||
"journeySent": "Trimiși la cei pierduți",
|
||||
"peopleGroupCount": "{n} popor | {n} popoare | {n} de popoare",
|
||||
"listCount": "{n} listă | {n} liste | {n} de liste"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "Азия",
|
||||
"europe": "Европа",
|
||||
"latin_america_&_caribbean": "Латинская Америка",
|
||||
"oceania": "Океания"
|
||||
"oceania": "Океания",
|
||||
"middle_east": "Ближний Восток",
|
||||
"north_america_&_non-spanish_caribbean": "Северная Америка и неиспаноязычные Карибы"
|
||||
},
|
||||
"sort_by_column_hint": "Сортировать таблицу по столбцу «{column}» — Shift+щелчок добавляет второй столбец. Сортировка меняет порядок только в таблице; карточки сохраняют свой порядок.",
|
||||
"fs_exit_hint": "Выйти из полноэкранного режима (Esc) — вернуться к семи строкам",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "Регион — сортирует списки UPG-100 по частям света (Африка, Индия, Ближний Восток, Глухие, …). Числа — это UUPG и население, просуммированные по всем спискам внутри.",
|
||||
"upg100Zone": "Списки UPG-100 — каждый представляет собой молитвенный список непросвещённых народов области и именно он отображается и раскрашивается на карте. Каждый список печатается отдельным буклетом.",
|
||||
"upg100Group": "Народ — отдельные непросвещённые народы внутри списка, сначала с наибольшей нуждой в молитве. Каждая точка на карте — один из них."
|
||||
"upg100Group": "Народ — отдельные непросвещённые народы внутри списка, сначала с наибольшей нуждой в молитве. Каждая точка на карте — один из них.",
|
||||
"region": "Макрорегион WAGF (например, «Азия», «Африка»). Выделен цветом на карте.",
|
||||
"block": "Блок WAGF — организационная подгруппа внутри каждого региона (например, «Юго-Восточная Азия», «Западная Африка»).",
|
||||
"country": "Отдельные страны, упорядоченные внутри блока по численности неохваченного населения."
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "Развернуть {label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "Территории: {count}",
|
||||
"bandInRange": "✓ диапазон 50–100",
|
||||
"bandOutOfRange": "диапазон 50–100",
|
||||
"mapContextLost": "Эта карта выгружена, чтобы освободить графическую память."
|
||||
"mapContextLost": "Эта карта выгружена, чтобы освободить графическую память.",
|
||||
"nOfTotal": "{n} из {total}",
|
||||
"mapInitFailed": "Не удалось инициализировать карту — проверьте токен и контейнер",
|
||||
"countryWallIntroA": "Один плакат на страну — чтобы молиться, распечатать и повесить на стену, молясь за них ",
|
||||
"countryWallIntroB": ". Регионы и страны упорядочены по числу неохваченных народов, чтобы самая большая нужда стояла первой.",
|
||||
"countryWallSoon": "Скоро: для каждой страны будет создан молитвенный список с названием каждого неохваченного народа в ней.",
|
||||
"countryWallHeading": "Плакаты по странам — молитвенные списки и плакаты"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "Юго-Восточная Азия и Океания",
|
||||
"region_china_mongolia": "Китай и Монголия",
|
||||
"region_india": "Индия",
|
||||
"region_other": "Другие"
|
||||
"region_other": "Другие",
|
||||
"region_americas": "Америка",
|
||||
"region_europe": "Европа"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"within": "В пределах {selection}",
|
||||
"allData": "Все данные DOXA"
|
||||
},
|
||||
"upg100Placeholder": "Поиск народа, списка UPG-100 или региона…"
|
||||
"upg100Placeholder": "Поиск народа, списка UPG-100 или региона…",
|
||||
"placeholderRegions": "Поиск региона, страны или народа"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "Краеугольный камень",
|
||||
"journeyChildren": "Дети Авраама",
|
||||
"journeyPriesthood": "Царственное священство",
|
||||
"journeySent": "Посланы к погибшим"
|
||||
"journeySent": "Посланы к погибшим",
|
||||
"peopleGroupCount": "{n} народ | {n} народа | {n} народов | {n} народа",
|
||||
"listCount": "{n} список | {n} списка | {n} списков | {n} списка"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,9 @@
|
|||
"asia": "亚洲",
|
||||
"europe": "欧洲",
|
||||
"latin_america_&_caribbean": "拉丁美洲",
|
||||
"oceania": "大洋洲"
|
||||
"oceania": "大洋洲",
|
||||
"middle_east": "中东",
|
||||
"north_america_&_non-spanish_caribbean": "北美及非西班牙语加勒比地区"
|
||||
},
|
||||
"sort_by_column_hint": "按{column}排序此表 — Shift+单击可添加第二列。排序只影响表格;卡片保持各自的顺序。",
|
||||
"fs_exit_hint": "退出全屏(Esc)— 返回七行视图",
|
||||
|
|
|
|||
|
|
@ -60,7 +60,10 @@
|
|||
"tabInfo": {
|
||||
"upg100Region": "区域 — 按世界区域排列 UPG-100 名单(非洲、印度、中东、聋人……)。数字是其下每份名单的 UUPG 与人口总和。",
|
||||
"upg100Zone": "UPG-100 名单 — 每一份都是某地区未得之民的祷告名单,也是地图所绘制和上色的内容。每份名单印成独立的祷告册。",
|
||||
"upg100Group": "族群 — 名单内各个未得之民群体,祷告需要最大的排在前面。地图上每个点就是其中之一。"
|
||||
"upg100Group": "族群 — 名单内各个未得之民群体,祷告需要最大的排在前面。地图上每个点就是其中之一。",
|
||||
"region": "WAGF 大区(如“亚洲”“非洲”)。在地图上以颜色区分。",
|
||||
"block": "WAGF 板块——每个区域内的组织分组(如“东南亚”“西非”)。",
|
||||
"country": "各个国家,在所属板块内按未得人口规模排序。"
|
||||
},
|
||||
"a11y": {
|
||||
"expandRow": "展开{label}",
|
||||
|
|
|
|||
|
|
@ -31,5 +31,11 @@
|
|||
"territoriesSelected": "区域:{count}",
|
||||
"bandInRange": "✓ 50–100 区间",
|
||||
"bandOutOfRange": "50–100 区间",
|
||||
"mapContextLost": "已卸载此地图以释放显存。"
|
||||
"mapContextLost": "已卸载此地图以释放显存。",
|
||||
"nOfTotal": "{total} 个中的 {n} 个",
|
||||
"mapInitFailed": "地图初始化失败——请检查令牌和容器",
|
||||
"countryWallIntroA": "每个国家一张海报,可用来祷告、打印、贴在墙上——为他们祷告,",
|
||||
"countryWallIntroB": "。各区域和国家按其中未得之民族群的数量排序,让最大的需要排在最前。",
|
||||
"countryWallSoon": "即将推出:将为每个国家生成一份祷告名单,列出其中每一个未得之民族群的名字。",
|
||||
"countryWallHeading": "国家海报 — 祷告名单与海报"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -25,5 +25,7 @@
|
|||
"region_southeast_asia_oceania": "东南亚 + 大洋洲",
|
||||
"region_china_mongolia": "中国 + 蒙古",
|
||||
"region_india": "印度",
|
||||
"region_other": "其他"
|
||||
"region_other": "其他",
|
||||
"region_americas": "美洲",
|
||||
"region_europe": "欧洲"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,5 +23,6 @@
|
|||
"dialect": "方言",
|
||||
"religionKind": "宗教"
|
||||
},
|
||||
"upg100Placeholder": "搜索民族、UPG-100 名单或区域…"
|
||||
"upg100Placeholder": "搜索民族、UPG-100 名单或区域…",
|
||||
"placeholderRegions": "搜索区域、国家或族群"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -61,5 +61,7 @@
|
|||
"journeyCornerstone": "房角石",
|
||||
"journeyChildren": "亚伯拉罕的子孙",
|
||||
"journeyPriesthood": "有君尊的祭司",
|
||||
"journeySent": "奉差遣寻找失丧的人"
|
||||
"journeySent": "奉差遣寻找失丧的人",
|
||||
"peopleGroupCount": "{n} 个族群",
|
||||
"listCount": "{n} 份名单"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -507,7 +507,7 @@ const geocoderPlaceholder = computed(() => {
|
|||
return 'Search affinity bloc, cluster, people group'
|
||||
}
|
||||
if (activeTab.value?.id === 'doxa-regions') {
|
||||
return 'Search region, country, people group'
|
||||
return t('search.placeholderRegions') // the one tab this profile mounts: localized
|
||||
}
|
||||
if (activeTab.value?.id === 'religion') {
|
||||
return 'Search religion, people group'
|
||||
|
|
@ -1357,7 +1357,7 @@ async function openPacket() {
|
|||
|
||||
const zone = {
|
||||
id: String(activeTab.value?.id || 'research-map'),
|
||||
label: (legendTitle.value || tabLabel(activeTab.value) || 'Doxa Map') + (selectedTotal > 50 ? ` — 50 of ${selectedTotal}` : ''),
|
||||
label: (legendTitle.value || tabLabel(activeTab.value) || 'Doxa Map') + (selectedTotal > 50 ? ` — ${t('messages.nOfTotal', { n: 50, total: selectedTotal })}` : ''),
|
||||
zoneKey: String(activeTab.value?.id || 'research-map'),
|
||||
}
|
||||
const prints = usePosterPrints({
|
||||
|
|
@ -2216,7 +2216,7 @@ onMounted(async () => {
|
|||
// The code has already concluded the map is dead — say so instead of leaving
|
||||
// the loading line up, which is indistinguishable from "still loading".
|
||||
console.error('[countries-map] Map failed to initialize — check token and container')
|
||||
mapError.value = 'Map failed to initialize — check token and container'
|
||||
mapError.value = t('messages.mapInitFailed')
|
||||
return
|
||||
}
|
||||
map.value.once('style.load', async () => {
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
*/
|
||||
import { computed, inject, ref } from 'vue'
|
||||
import PosterWall from '@map/components/poster/PosterWall.vue'
|
||||
import { useOptionalT } from '@map/composables/useOptionalT.js'
|
||||
// MOVED to the shared library 2026-09-24: the regions-dashboard poster dropdown is a second
|
||||
// consumer of this same dataset, and RULE 2 puts a dataset with a named second consumer in
|
||||
// library/. Generated by library/scripts/posters/emit-countries.mjs, which now writes there.
|
||||
|
|
@ -54,7 +55,17 @@ const items = computed(() => data.countries || [])
|
|||
// The region is already ON each record (emit-countries.mjs resolves it from
|
||||
// wagf_region_label), so the taxonomy is not duplicated here the way the 100-list's
|
||||
// REGION_OF map has to be — the 100-list's zones carry no region field, countries do.
|
||||
const groupBy = (c) => c.region || 'Other'
|
||||
// The data carries the WAGF region as its ENGLISH label; the section heading is that region in the
|
||||
// page's language, from the dashboard's own WAGF table (dashboard.wagfRegion.<label as a slug>), so the
|
||||
// wall and the Regions dashboard cannot name one region two ways. A label with no key stays as drawn.
|
||||
const t = useOptionalT('')
|
||||
const regionSlug = (label) => String(label).toLowerCase().replace(/\s+/g, '_')
|
||||
const groupBy = (c) => {
|
||||
if (!c.region || c.region === 'Other') return t('dashboard.other')
|
||||
const key = `dashboard.wagfRegion.${regionSlug(c.region)}`
|
||||
const v = t(key)
|
||||
return v && v !== key ? v : c.region
|
||||
}
|
||||
|
||||
// Low-density regions open COLLAPSED. Threshold is on the region's total, not its
|
||||
// country count: Europe is 27 countries but only 55 groups, so it is long and thin —
|
||||
|
|
@ -65,10 +76,14 @@ const collapsedBy = (sec) => sec.total < 60
|
|||
// can never drift from the data. Brief: "it should say the exact number in our data."
|
||||
const unsupported = (c) => c.unsupportedReason || null
|
||||
|
||||
const intro =
|
||||
'One poster per country, ready to pray, print, and put on a wall — praying for them ' +
|
||||
'<strong>by their people group name</strong>. Regions and countries are ordered by how many ' +
|
||||
'unengaged people groups they hold, so the greatest need leads.'
|
||||
// ★ THROUGH THE CATALOGUE, like the UPG-100 wall: the heading, the tag, the intro and the counts read
|
||||
// in the page's language. The intro keeps its one emphasis as three plain keys (A, the emphasis, B)
|
||||
// so no translation carries markup; the emphasis is the same phrase the UPG-100 wall uses.
|
||||
const escHtml = (s) => String(s).replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>')
|
||||
const heading = computed(() => t('messages.countryWallHeading'))
|
||||
const wallTag = computed(() => t('messages.upg100WallTag'))
|
||||
const intro = computed(() => `${escHtml(t('messages.countryWallIntroA'))}<strong>${escHtml(t('messages.upg100WallIntroEmph'))}</strong>${escHtml(t('messages.countryWallIntroB'))}`)
|
||||
const soonMessage = computed(() => t('messages.countryWallSoon'))
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
|
@ -79,16 +94,15 @@ const intro =
|
|||
:is-dark="isDark"
|
||||
:assets-base="assetsBase"
|
||||
event-name="doxa-country-posters:show-on-map"
|
||||
heading="Country Posters — Prayer Lists & Posters"
|
||||
tag="Prayer Mobilization"
|
||||
:heading="heading"
|
||||
:tag="wallTag"
|
||||
:intro="intro"
|
||||
unit="UPG"
|
||||
item-noun="country"
|
||||
item-noun-plural="countries"
|
||||
item-count-key="regions.countryCount"
|
||||
:collapsible="true"
|
||||
:collapsed-by="collapsedBy"
|
||||
:unsupported="unsupported"
|
||||
prayer-list-soon-message="Coming soon — a prayer list will be generated for each country, naming every unengaged people group within it."
|
||||
:prayer-list-soon-message="soonMessage"
|
||||
download-prefix="doxa-country"
|
||||
/>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -267,8 +267,8 @@ useShadowStyles(PANE_GRID_STYLES + `
|
|||
<ViewSelect
|
||||
:views="spec.panes"
|
||||
:current="view"
|
||||
legend="Select View"
|
||||
label="Views"
|
||||
:legend="t('tabs.selectView')"
|
||||
:label="t('tabs.views')"
|
||||
@select="go"
|
||||
/>
|
||||
<ShareButton :is-dark="isDark" :embed-path="SHARE_EMBED_PATH" />
|
||||
|
|
|
|||
|
|
@ -131,6 +131,10 @@ const REGION_KEY = {
|
|||
'China + Mongolia': 'region_china_mongolia',
|
||||
'India': 'region_india',
|
||||
'Other': 'region_other',
|
||||
// Two regions the zone map uses had no key, so their headings printed in English in every locale
|
||||
// (single words, which the hardcoded-English gate cannot see by design).
|
||||
'Americas': 'region_americas',
|
||||
'Europe': 'region_europe',
|
||||
}
|
||||
const regionLabel = (english) => {
|
||||
const key = REGION_KEY[english]
|
||||
|
|
@ -294,7 +298,7 @@ const wallTag = computed(() => t('messages.upg100WallTag'))
|
|||
:tag="wallTag"
|
||||
:intro="intro"
|
||||
unit="UPG"
|
||||
item-noun="list"
|
||||
item-count-key="wall.listCount"
|
||||
:records="fetchListRecords"
|
||||
:iso3-names="iso3Names"
|
||||
:card-stocks="true"
|
||||
|
|
|
|||
Loading…
Reference in a new issue