Some checks are pending
build-gate / build (push) Waiting to run
The packet as specified: page 1 the map one-pager, pages 2..n the people
groups 20-per-page with photos, then the 12 prayer points, then the prayer
wheel. Every string is externalised so a new language is a new block in
packet-strings.json, not a code change; fallback is PER KEY, so a partial
translation renders what it has and leaves the rest in English rather than
blanking. Verified with a partial es block before removing the stub.
Three bugs worth recording, each of which rendered silently wrong:
1. zoom, NOT transform:scale(), for print. transform is paint-time, so the
sheet still RESERVES its 1941px layout box and the paginator breaks it
across two pages, inking only the top of the first: 8 sheets came out as
16 PDF pages. Negative margins do not help — they collapse the outer
space, not the fragmentation box. zoom is layout-time, so pagination sees
the scaled box. Measured: transform 2 pages/sheet, transform+margins 2,
zoom 1.
2. The map SVG carries almost no presentation attributes — generate.mjs
styles it from the poster document's stylesheet. Lifting the <svg> alone
left those rules behind, and SVG fill falls back to its initial value,
which is BLACK: 670 elements painted solid black with no error, no broken
image, nothing any existing assertion could see. Fixed by carrying the
poster's stylesheet minus its document-level rules, so a palette change
in generate.mjs still follows the packet automatically.
3. LANG is the shell's POSIX locale ("en_US.UTF-8"), not a BCP-47 tag, and
throws in localeCompare. PACKET_LANG is the only source.
The verification lesson is the bigger one. The probe PRINTED "PDF pages: 16"
for several runs while reporting the packet verified, because the bad counter
never looked at that value — a number that is displayed but not asserted on
is decoration. Then the first fix for the black map asserted on the first
<rect>, the one element just repaired, and went green while 647 others were
still black. Both assertions now test the property rather than a proxy: one
sheet must be exactly one page, and the map as a whole must not be
predominantly black-filled. Both were confirmed to FAIL on the known-broken
input before being accepted.
161 lines
No EOL
8.5 KiB
JSON
161 lines
No EOL
8.5 KiB
JSON
{
|
||
"_meta": {
|
||
"purpose": "EVERY human-readable string in the UPG-100 prayer packet, in one file, so a new language is a new block here and NOT a code change. packet.mjs reads LANG (default 'en') and falls back to 'en' key-by-key, so a partial translation renders the translated keys and leaves the rest in English rather than blanking.",
|
||
"how_to_translate": "Copy the \"en\" block, change the key to the ISO code, translate the values. Keep {placeholders} exactly as they are — they are substituted at render time. Do not translate scripture REFERENCES (book names are resolved by the reader's own Bible); DO translate the prayer text.",
|
||
"note_on_scripture": "point4_passage is the ONLY full scripture text in the packet (Mark 5:1-20, printed in full at the Driver's instruction). A translation must supply its own rendering of that passage in a public-domain or properly-licensed version for that language."
|
||
},
|
||
"en": {
|
||
"map_page_kicker": "UNENGAGED PEOPLE GROUPS",
|
||
"map_page_sub": "A prayer list of {count} unreached people groups",
|
||
"list_header": "{from}–{to} of {count} · pray for them by name",
|
||
"people_suffix": "people",
|
||
"no_photo": "no photo available",
|
||
"points_title": "12 Prayer Points",
|
||
"points_intro": "One hour with God, five minutes each. Pray these twelve for the people groups in this packet.",
|
||
"points_attrib": "Prayer rhythms inspired by Metacamp · metacamp.org",
|
||
"wheel_title": "Prayer Wheel",
|
||
"wheel_intro": "Spend an hour with God? It is easier than you think. Break it into 5-minute blocks and focus on one of these during each segment.",
|
||
"wheel_minutes": "minutes",
|
||
"wheel_attrib": "Prayer Wheel · Metacamp Module 1 · metacamp.org",
|
||
"privacy_note": "Marker positions are approximate · people-group locations are generalised at the source for privacy",
|
||
"rhythms": {
|
||
"praise": "PRAISE",
|
||
"wait": "WAIT",
|
||
"confess": "CONFESS",
|
||
"read": "READ THE WORD",
|
||
"ask": "ASK",
|
||
"intercede": "INTERCESSION",
|
||
"pray_word": "PRAY THE WORD",
|
||
"thank": "THANK",
|
||
"sing": "SING",
|
||
"meditate": "MEDITATE",
|
||
"listen": "LISTEN",
|
||
"praise_end": "PRAISE"
|
||
},
|
||
"points": [
|
||
{
|
||
"n": 1,
|
||
"rhythm": "praise",
|
||
"sub": "Two-Cross Gospel",
|
||
"text": "That they accept Christ as King, forgiven by His cross — and take up their own cross, willing to suffer in a persecution zone. May the Lamb receive the reward of His suffering, starting with me.",
|
||
"refs": [
|
||
"Matthew 27:27",
|
||
"Matthew 16:24–25"
|
||
]
|
||
},
|
||
{
|
||
"n": 2,
|
||
"rhythm": "wait",
|
||
"sub": "Holy Spirit & deliverance",
|
||
"text": "That they are filled with the Spirit and made bold witnesses; not isolated; baptized in water and Spirit; every evil grip broken. That believers in neighbouring peoples are mobilised as laborers.",
|
||
"refs": [
|
||
"Acts 1:8",
|
||
"John 14:26"
|
||
]
|
||
},
|
||
{
|
||
"n": 3,
|
||
"rhythm": "confess",
|
||
"sub": "",
|
||
"text": "We confess unbelief that this is too big for God. That He revives our love and faith for the global unreached.",
|
||
"refs": [
|
||
"John 3:16",
|
||
"1 John 1:9"
|
||
]
|
||
},
|
||
{
|
||
"n": 4,
|
||
"rhythm": "read",
|
||
"sub": "the Father's love",
|
||
"text": "That they would be SAVED and KNOW their heavenly Father loves them — and that through them He would bring salvation to their family, friends, neighbours, coworkers, classmates, everyone they know personally.",
|
||
"refs": [
|
||
"Mark 5:1–20",
|
||
"Acts 16:31"
|
||
],
|
||
"print_passage": true
|
||
},
|
||
{
|
||
"n": 5,
|
||
"rhythm": "ask",
|
||
"sub": "baptisms",
|
||
"text": "New baptisms among the locals, and every baptized one trained to baptize others, multiplying.",
|
||
"refs": [
|
||
"Acts 16",
|
||
"Acts 10"
|
||
]
|
||
},
|
||
{
|
||
"n": 6,
|
||
"rhythm": "intercede",
|
||
"sub": "laborers & shepherds",
|
||
"text": "Laborers sent to deeply love a people they have never met; good shepherds raised up from within.",
|
||
"refs": [
|
||
"Luke 10:2",
|
||
"John 10:11–15"
|
||
]
|
||
},
|
||
{
|
||
"n": 7,
|
||
"rhythm": "pray_word",
|
||
"sub": "Persons & Houses of Peace",
|
||
"text": "That laborers and local leaders find the receptive person and the house of peace, and disciple them well.",
|
||
"refs": [
|
||
"Luke 10:5–7",
|
||
"Matthew 10:5–14"
|
||
]
|
||
},
|
||
{
|
||
"n": 8,
|
||
"rhythm": "thank",
|
||
"sub": "rest",
|
||
"text": "Thank God for the rest He has given; that they enter that rest in Christ, and that their spiritual family is a safe place.",
|
||
"refs": [
|
||
"Mark 4:26–29",
|
||
"Hebrews 4:9–11"
|
||
]
|
||
},
|
||
{
|
||
"n": 9,
|
||
"rhythm": "sing",
|
||
"sub": "",
|
||
"text": "That the people group is flooded with worshippers — worship everywhere, in freedom and in chains.",
|
||
"refs": [
|
||
"Acts 16:25–26",
|
||
"Colossians 3:16"
|
||
]
|
||
},
|
||
{
|
||
"n": 10,
|
||
"rhythm": "meditate",
|
||
"sub": "communion",
|
||
"text": "That they take communion together and grasp the weight of His death, burial and resurrection.",
|
||
"refs": [
|
||
"Matthew 26:26–30",
|
||
"1 Corinthians 11:23–26"
|
||
]
|
||
},
|
||
{
|
||
"n": 11,
|
||
"rhythm": "listen",
|
||
"sub": "accountability",
|
||
"text": "Not only that they would listen, but that they would have people in their life who help them read the Word, pray, commit to community, and respond to suffering well — resisting the adversary who comes after believers across the whole world.",
|
||
"refs": [
|
||
"1 Peter 5:6–11",
|
||
"Hebrews 10:24–25"
|
||
]
|
||
},
|
||
{
|
||
"n": 12,
|
||
"rhythm": "praise_end",
|
||
"sub": "great · greater · greatest",
|
||
"text": "Praise in advance — for salvations; GREATER, for spiritual families multiplying; GREATEST, for lives yielded and local church planters raised up who multiply healthy churches across the whole people group, no matter the cost.",
|
||
"refs": [
|
||
"Acts 2:42–47",
|
||
"Matthew 28:19–20"
|
||
]
|
||
}
|
||
],
|
||
"point4_passage": "And they came to the other side of the sea, into the country of the Gadarenes. When he had come out of the boat, immediately a man with an unclean spirit met him out of the tombs. He lived in the tombs. Nobody could bind him any more, not even with chains, because he had been often bound with fetters and chains, and the chains had been torn apart by him, and the fetters broken in pieces. Nobody had the strength to tame him. Always, night and day, in the tombs and in the mountains, he was crying out, and cutting himself with stones. When he saw Jesus from afar, he ran and bowed down to him, and crying out with a loud voice, he said, “What have I to do with you, Jesus, you Son of the Most High God? I adjure you by God, don’t torment me.” For he said to him, “Come out of the man, you unclean spirit!” He asked him, “What is your name?” He said to him, “My name is Legion, for we are many.” He begged him much that he would not send them away out of the country. Now on the mountainside there was a great herd of pigs feeding. All the demons begged him, saying, “Send us into the pigs, that we may enter into them.” At once Jesus gave them permission. The unclean spirits came out and entered into the pigs. The herd of about two thousand rushed down the steep bank into the sea, and they were drowned in the sea. Those who fed them fled, and told it in the city and in the country. The people came to see what it was that had happened. They came to Jesus, and saw him who had been possessed by demons sitting, clothed, and in his right mind, even him who had the legion; and they were afraid. Those who saw it declared to them what happened to him who was possessed by demons, and about the pigs. They began to beg him to depart from their region. As he was entering into the boat, he who had been possessed by demons begged him that he might be with him. He didn’t allow him, but said to him, “Go to your house, to your friends, and tell them what great things the Lord has done for you and how he had mercy on you.” He went his way, and began to proclaim in Decapolis how Jesus had done great things for him, and everyone marveled.",
|
||
"point4_passage_credit": "Mark 5:1–20 · World English Bible (public domain)"
|
||
}
|
||
} |