The prayer points name their scripture in the packet's language

Every translated packet printed its references in English — "Matthew 27:27" in Chinese, Arabic
and the other nine — because refs are kept as canonical addresses and were printed verbatim. The
address stays canonical in the data; the BOOK is now named from a per-language table (the ten books
the points cite, in each language's common form: 马太福音, متى, Мф., Matthäus …). A localized
name in a right-to-left script is isolated rtl so it reads on the right with its chapter:verse
intact. Measured: 24 references per packet, 0 English book names left in zh, ar and ru.

Point 4's printed passage is untouched: which licensed translation to print per language is still
an open decision.
This commit is contained in:
Doxa Maps 2026-09-29 03:52:32 +00:00
parent 612d9c3ea8
commit 0c40927dcf
2 changed files with 155 additions and 12 deletions

View file

@ -1094,8 +1094,19 @@ export function createPacketRenderer({ strings, lang = 'en', fontData = null, de
// algorithm reorders a run that STARTS WITH A DIGIT: measured on the Arabic
// page, "1 Peter 5:6–11" rendered as "Peter 5:6-11 1". dir="ltr" on each
// reference pins its internal order without affecting the line's direction.
// ★ THE BOOK NAME IS PROSE, THE ADDRESS IS NOT. refs stay canonical English in the data (one
// address, checkable against any Bible), and the BOOK is named in the packet's language at print
// time from its `books` table: a Chinese packet cited "Matthew 27:27", English in every locale.
// A localized name in a right-to-left script is isolated rtl, so the book reads on the right and
// the chapter:verse keeps its digit order; a Latin reference stays the ltr isolate described above.
const refs = (p.refs || [])
.map((r) => `<span dir="ltr" style="unicode-bidi:isolate">${esc(r)}</span>`)
.map((r) => {
const m = String(r).match(/^(.*?)\s+(\d[\d:–\-,; ]*)$/);
const book = m && (L.books || {})[m[1]];
const text = book ? `${book} ${m[2]}` : String(r);
const dir = book && RTL.has(lang) ? 'rtl' : 'ltr';
return `<span dir="${dir}" style="unicode-bidi:isolate">${esc(text)}</span>`;
})
.join(' · ');
const sub = p.sub ? ` <span style="font:italic 17px Georgia,serif;color:#8c8170">— ${esc(p.sub)}</span>` : '';
const passage = p.print_passage

View file

@ -240,7 +240,19 @@
"sets_head_centered": "Centered set",
"sets_rings_head": "The rings, from the centre outward",
"light_intro": "You might take one people group a day and pray for them by name. A tick in a box is a simple way to remember who you have carried to God — there is no pace to keep.",
"light_col_group": "People group"
"light_col_group": "People group",
"books": {
"Matthew": "Matthew",
"Acts": "Acts",
"John": "John",
"1 John": "1 John",
"Mark": "Mark",
"Luke": "Luke",
"Hebrews": "Hebrews",
"Colossians": "Colossians",
"1 Corinthians": "1 Corinthians",
"1 Peter": "1 Peter"
}
},
"es": {
"map_page_kicker": "GRUPOS ÉTNICOS NO EVANGELIZADOS",
@ -475,7 +487,19 @@
"sets_head_centered": "Conjunto centrado",
"sets_rings_head": "Los anillos, del centro hacia fuera",
"light_intro": "Puedes tomar un pueblo cada día y orar por él por su nombre. Una marca en la casilla es una forma sencilla de recordar a quién has llevado ante Dios; no hay ningún ritmo que cumplir.",
"light_col_group": "Pueblo"
"light_col_group": "Pueblo",
"books": {
"Matthew": "Mateo",
"Acts": "Hechos",
"John": "Juan",
"1 John": "1 Juan",
"Mark": "Marcos",
"Luke": "Lucas",
"Hebrews": "Hebreos",
"Colossians": "Colosenses",
"1 Corinthians": "1 Corintios",
"1 Peter": "1 Pedro"
}
},
"fr": {
"map_page_kicker": "GROUPES ETHNIQUES NON ATTEINTS",
@ -710,7 +734,19 @@
"sets_head_centered": "Ensemble centré",
"sets_rings_head": "Les anneaux, du centre vers l’extérieur",
"light_intro": "Vous pouvez prendre un peuple par jour et prier pour lui en l’appelant par son nom. Cocher une case est une façon simple de vous souvenir de ceux que vous avez portés devant Dieu — il n’y a aucun rythme à tenir.",
"light_col_group": "Peuple"
"light_col_group": "Peuple",
"books": {
"Matthew": "Matthieu",
"Acts": "Actes",
"John": "Jean",
"1 John": "1 Jean",
"Mark": "Marc",
"Luke": "Luc",
"Hebrews": "Hébreux",
"Colossians": "Colossiens",
"1 Corinthians": "1 Corinthiens",
"1 Peter": "1 Pierre"
}
},
"pt": {
"map_page_kicker": "GRUPOS ÉTNICOS NÃO ALCANÇADOS",
@ -943,7 +979,19 @@
"sets_head_centered": "Conjunto centrado",
"sets_rings_head": "Os anéis, do centro para fora",
"light_intro": "Você pode escolher um povo por dia e orar por ele pelo nome. Marcar uma caixa é uma forma simples de lembrar quem você levou a Deus — não há ritmo a cumprir.",
"light_col_group": "Povo"
"light_col_group": "Povo",
"books": {
"Matthew": "Mateus",
"Acts": "Atos",
"John": "João",
"1 John": "1 João",
"Mark": "Marcos",
"Luke": "Lucas",
"Hebrews": "Hebreus",
"Colossians": "Colossenses",
"1 Corinthians": "1 Coríntios",
"1 Peter": "1 Pedro"
}
},
"de": {
"map_page_kicker": "UNERREICHTE VOLKSGRUPPEN",
@ -1178,7 +1226,19 @@
"sets_head_centered": "Zentrierte Menge",
"sets_rings_head": "Die Ringe, von der Mitte nach außen",
"light_intro": "Sie können sich jeden Tag eine Volksgruppe vornehmen und mit Namen für sie beten. Ein Häkchen im Kästchen hilft, sich zu erinnern, wen Sie vor Gott gebracht haben — es gibt kein Tempo einzuhalten.",
"light_col_group": "Volksgruppe"
"light_col_group": "Volksgruppe",
"books": {
"Matthew": "Matthäus",
"Acts": "Apostelgeschichte",
"John": "Johannes",
"1 John": "1. Johannes",
"Mark": "Markus",
"Luke": "Lukas",
"Hebrews": "Hebräer",
"Colossians": "Kolosser",
"1 Corinthians": "1. Korinther",
"1 Peter": "1. Petrus"
}
},
"it": {
"map_page_kicker": "GRUPPI ETNICI NON RAGGIUNTI",
@ -1411,7 +1471,19 @@
"sets_head_centered": "Insieme centrato",
"sets_rings_head": "Gli anelli, dal centro verso l’esterno",
"light_intro": "Puoi prendere un popolo al giorno e pregare per lui chiamandolo per nome. Una spunta nella casella è un modo semplice per ricordare chi hai portato davanti a Dio: non c’è alcun ritmo da mantenere.",
"light_col_group": "Popolo"
"light_col_group": "Popolo",
"books": {
"Matthew": "Matteo",
"Acts": "Atti",
"John": "Giovanni",
"1 John": "1 Giovanni",
"Mark": "Marco",
"Luke": "Luca",
"Hebrews": "Ebrei",
"Colossians": "Colossesi",
"1 Corinthians": "1 Corinzi",
"1 Peter": "1 Pietro"
}
},
"ro": {
"map_page_kicker": "GRUPURI ETNICE NEATINSE",
@ -1644,7 +1716,19 @@
"sets_head_centered": "Mulțime centrată",
"sets_rings_head": "Inelele, de la centru spre exterior",
"light_intro": "Poți lua câte un popor în fiecare zi și să te rogi pentru el pe nume. O bifă în căsuță este un mod simplu de a-ți aminti pe cine ai adus înaintea lui Dumnezeu — nu există niciun ritm de respectat.",
"light_col_group": "Popor"
"light_col_group": "Popor",
"books": {
"Matthew": "Matei",
"Acts": "Faptele Apostolilor",
"John": "Ioan",
"1 John": "1 Ioan",
"Mark": "Marcu",
"Luke": "Luca",
"Hebrews": "Evrei",
"Colossians": "Coloseni",
"1 Corinthians": "1 Corinteni",
"1 Peter": "1 Petru"
}
},
"ru": {
"map_page_kicker": "НЕОХВАЧЕННЫЕ НАРОДЫ",
@ -1879,7 +1963,19 @@
"sets_head_centered": "Центрированное множество",
"sets_rings_head": "Кольца — от центра наружу",
"light_intro": "Можно брать по одному народу в день и молиться за него, называя по имени. Галочка в клетке — простой способ помнить, кого вы принесли к Богу; никакого темпа выдерживать не нужно.",
"light_col_group": "Народ"
"light_col_group": "Народ",
"books": {
"Matthew": "Мф.",
"Acts": "Деян.",
"John": "Ин.",
"1 John": "1 Ин.",
"Mark": "Мк.",
"Luke": "Лк.",
"Hebrews": "Евр.",
"Colossians": "Кол.",
"1 Corinthians": "1 Кор.",
"1 Peter": "1 Пет."
}
},
"ar": {
"map_page_kicker": "شعوب غير مبلَّغة",
@ -2114,7 +2210,19 @@
"sets_head_centered": "مجموعة متمركزة",
"sets_rings_head": "الحلقات، من المركز إلى الخارج",
"light_intro": "يمكنك أن تأخذ شعبًا واحدًا كل يوم وتصلّي لأجله باسمه. علامة في المربّع طريقة بسيطة لتتذكّر من حملته إلى الله — ليس هناك إيقاع عليك أن تلتزم به.",
"light_col_group": "الشعب"
"light_col_group": "الشعب",
"books": {
"Matthew": "متى",
"Acts": "أعمال الرسل",
"John": "يوحنا",
"1 John": "يوحنا الأولى",
"Mark": "مرقس",
"Luke": "لوقا",
"Hebrews": "العبرانيين",
"Colossians": "كولوسي",
"1 Corinthians": "كورنثوس الأولى",
"1 Peter": "بطرس الأولى"
}
},
"hi": {
"map_page_kicker": "अनछुए जनसमूह",
@ -2347,7 +2455,19 @@
"sets_head_centered": "केंद्रित समूह",
"sets_rings_head": "वलय, केंद्र से बाहर की ओर",
"light_intro": "आप हर दिन एक जनसमूह को चुनकर उसके नाम से उसके लिए प्रार्थना कर सकते हैं। खाने में सही का निशान यह याद रखने का सरल तरीका है कि आपने किसे परमेश्वर के सामने रखा — कोई गति बनाए रखने की ज़रूरत नहीं।",
"light_col_group": "जनसमूह"
"light_col_group": "जनसमूह",
"books": {
"Matthew": "मत्ती",
"Acts": "प्रेरितों के काम",
"John": "यूहन्ना",
"1 John": "1 यूहन्ना",
"Mark": "मरकुस",
"Luke": "लूका",
"Hebrews": "इब्रानियों",
"Colossians": "कुलुस्सियों",
"1 Corinthians": "1 कुरिन्थियों",
"1 Peter": "1 पतरस"
}
},
"zh": {
"map_page_kicker": "未得之民",
@ -2580,6 +2700,18 @@
"sets_head_centered": "中心集合",
"sets_rings_head": "各环,由中心向外",
"light_intro": "你可以每天选一个族群,按着名字为他们祷告。在方框里打个勾,是记住你把谁带到神面前的简单方式——不必赶任何进度。",
"light_col_group": "族群"
"light_col_group": "族群",
"books": {
"Matthew": "马太福音",
"Acts": "使徒行传",
"John": "约翰福音",
"1 John": "约翰一书",
"Mark": "马可福音",
"Luke": "路加福音",
"Hebrews": "希伯来书",
"Colossians": "歌罗西书",
"1 Corinthians": "哥林多前书",
"1 Peter": "彼得前书"
}
}
}