diff --git a/internal/check-packet-map-missing-loud.mjs b/internal/check-packet-map-missing-loud.mjs
index 09e3bbc56..0cfd50231 100644
--- a/internal/check-packet-map-missing-loud.mjs
+++ b/internal/check-packet-map-missing-loud.mjs
@@ -87,10 +87,13 @@ for (const lang of ['en', 'es', 'ar']) {
notes.push(` ok ${lang.padEnd(4)} full + lightweight: loud when missing, quiet when present`)
}
-// Per-key fallback, stated separately because it is a property of the STRINGS, not the renderer:
-// every non-English locale deliberately lacks the key and must inherit the English sentence.
+// Per-key fallback, stated separately because it is a property of the STRINGS, not the renderer. Every
+// block carries its own sentence (check:packet-strings-parity requires it); a block that ever lacks it
+// still prints the English one rather than the raw key, which side (1) above asserts.
const missingIn = Object.keys(strings).filter((k) => k !== '_meta' && k !== 'en' && !strings[k].map_unavailable)
-notes.push(` ok ${missingIn.length} locales fall back to the English sentence (no invented translations)`)
+notes.push(missingIn.length
+ ? ` ok ${missingIn.length} locale(s) fall back to the English sentence: ${missingIn.join(', ')}`
+ : ' ok every locale carries its own sentence')
for (const n of notes) console.log(n)
if (fails.length) {
diff --git a/library/packet/packet-render.js b/library/packet/packet-render.js
index 5b24deef6..f6068a263 100644
--- a/library/packet/packet-render.js
+++ b/library/packet/packet-render.js
@@ -365,11 +365,6 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
* Why a notice and not a thrown error: the packet is still worth printing, and a partner holding
* it should be able to SEE that one illustration is missing rather than wonder whether the
* project ships half-finished documents. This is the fail-loud half of fail-soft.
- *
- * ⚠ English-only key, on purpose. `t()` falls back to English per key, so the other ten locales
- * print this sentence in English until a translator supplies their own — which is honest. The
- * alternative was inventing ten translations I cannot verify, and a wrong sentence reads as
- * AUTHORITATIVE to someone who cannot check it.
*/
function missingMapNotice() {
return `
${esc(t('map_unavailable'))}
`;
diff --git a/library/scripts/posters/packet-strings.json b/library/scripts/posters/packet-strings.json
index 23ce3cef4..478b95170 100644
--- a/library/scripts/posters/packet-strings.json
+++ b/library/scripts/posters/packet-strings.json
@@ -10,7 +10,7 @@
"en": {
"map_page_kicker": "UNENGAGED PEOPLE GROUPS",
"map_page_sub": "A prayer list of {count} unreached people groups",
- "map_unavailable": "The map for this zone is not included in this printing.",
+ "map_unavailable": "The map for this prayer list is not included in this printing.",
"list_header": "{from}–{to} of {count} · pray for them by name",
"people_suffix": "people",
"no_photo": "no photo available",
@@ -232,6 +232,7 @@
"es": {
"map_page_kicker": "GRUPOS ÉTNICOS NO EVANGELIZADOS",
"map_page_sub": "Una lista de oración de {count} grupos étnicos no alcanzados",
+ "map_unavailable": "El mapa de esta lista de oración no se incluye en esta impresión.",
"list_header": "{from}–{to} de {count} · ora por ellos por nombre",
"people_suffix": "personas",
"no_photo": "sin fotografía disponible",
@@ -453,6 +454,7 @@
"fr": {
"map_page_kicker": "GROUPES ETHNIQUES NON ATTEINTS",
"map_page_sub": "Une liste de prière de {count} groupes ethniques non atteints",
+ "map_unavailable": "La carte de cette liste de prière n’est pas incluse dans cette impression.",
"list_header": "{from}–{to} sur {count} · priez pour eux par leur nom",
"people_suffix": "personnes",
"no_photo": "aucune photo disponible",
@@ -674,6 +676,7 @@
"pt": {
"map_page_kicker": "GRUPOS ÉTNICOS NÃO ALCANÇADOS",
"map_page_sub": "Uma lista de oração de {count} grupos étnicos não alcançados",
+ "map_unavailable": "O mapa desta lista de oração não está incluído nesta impressão.",
"list_header": "{from}–{to} de {count} · ore por eles pelo nome",
"people_suffix": "pessoas",
"no_photo": "sem fotografia disponível",
@@ -893,6 +896,7 @@
"de": {
"map_page_kicker": "UNERREICHTE VOLKSGRUPPEN",
"map_page_sub": "Eine Gebetsliste von {count} unerreichten Volksgruppen",
+ "map_unavailable": "Die Karte zu dieser Gebetsliste ist in diesem Ausdruck nicht enthalten.",
"list_header": "{from}–{to} von {count} · betet namentlich für sie",
"people_suffix": "Menschen",
"no_photo": "kein Foto verfügbar",
@@ -1114,6 +1118,7 @@
"it": {
"map_page_kicker": "GRUPPI ETNICI NON RAGGIUNTI",
"map_page_sub": "Una lista di preghiera di {count} gruppi etnici non raggiunti",
+ "map_unavailable": "La mappa di questa lista di preghiera non è inclusa in questa stampa.",
"list_header": "{from}–{to} di {count} · pregate per loro per nome",
"people_suffix": "persone",
"no_photo": "nessuna foto disponibile",
@@ -1333,6 +1338,7 @@
"ro": {
"map_page_kicker": "GRUPURI ETNICE NEATINSE",
"map_page_sub": "O listă de rugăciune pentru {count} grupuri etnice neatinse",
+ "map_unavailable": "Harta acestei liste de rugăciune nu este inclusă în această tipărire.",
"list_header": "{from}–{to} din {count} · rugați-vă pentru ei pe nume",
"people_suffix": "persoane",
"no_photo": "nicio fotografie disponibilă",
@@ -1552,6 +1558,7 @@
"ru": {
"map_page_kicker": "НЕОХВАЧЕННЫЕ НАРОДЫ",
"map_page_sub": "Молитвенный список из {count} неохваченных народов",
+ "map_unavailable": "Карта этого молитвенного списка не включена в эту распечатку.",
"list_header": "{from}–{to} из {count} · молитесь за них поимённо",
"people_suffix": "человек",
"no_photo": "фотография недоступна",
@@ -1773,6 +1780,7 @@
"ar": {
"map_page_kicker": "شعوب غير مبلَّغة",
"map_page_sub": "قائمة صلاة من أجل {count} شعبًا غير مبلَّغ",
+ "map_unavailable": "خريطة قائمة الصلاة هذه غير مضمَّنة في هذه النسخة المطبوعة.",
"list_header": "{from}–{to} من {count} · صلّوا لأجلهم بالاسم",
"people_suffix": "نسمة",
"no_photo": "لا توجد صورة متاحة",
@@ -1994,6 +2002,7 @@
"hi": {
"map_page_kicker": "अनछुए जनसमूह",
"map_page_sub": "{count} अनछुए जनसमूहों की प्रार्थना सूची",
+ "map_unavailable": "इस प्रार्थना सूची का नक्शा इस प्रिंट में शामिल नहीं है।",
"list_header": "{count} में से {from}–{to} · उनके नाम लेकर प्रार्थना करें",
"people_suffix": "लोग",
"no_photo": "कोई चित्र उपलब्ध नहीं",
@@ -2213,6 +2222,7 @@
"zh": {
"map_page_kicker": "未得之民",
"map_page_sub": "為 {count} 個未得之民的禱告名單",
+ "map_unavailable": "此禱告名單的地圖未包含在本次列印中。",
"list_header": "{count} 之中的 {from}–{to} · 按名為他們禱告",
"people_suffix": "人",
"no_photo": "沒有照片",