Some checks are pending
build-gate / build (push) Waiting to run
MEASURED on the live Chinese render: the legend header read "My UPG 100 List —
Legend" in full English, inside an otherwise localized panel — beside translated
tabs (区域 · UPG-100 名单) and a translated column header (人口). It was a plain
string literal, and SemanticTreeLegend passes `title` through RAW, so the caller
owns localizing it.
The Driver's gift policy names this exactly: "BEAUTIFUL: no clipped text, no
placeholders, no English leaking." An English title on the plugin chosen as the
mobile showcase is that.
★ FOUND BY SEPARATING CHROME FROM DATA, which is the part worth keeping. A naive
Latin-script sweep of the Chinese render returned 31 hits and would have been a
wildly overstated report. Rendering the same elements in en and zh and keeping
only those that are IDENTICAL narrows it to 24, and those fall in three classes:
· Mapbox attribution (© Mapbox, Improve this map) — third-party, a LICENCE
obligation, must not be touched
· zone and region names (Middle East Core, Sudan) — API DATA; translating
place names is a domain decision, not a bug
· the legend title and "UUPGs" — product UI strings, and the only real leaks
So 31 hits reduce to 2, one of which is already carded.
★ AND THE HOUSE STYLE ALREADY EXISTED, so no terminology was invented. This
catalog renders "Doxa Regions" as "Doxa 区域" / "مناطق Doxa" / "Регионы Doxa" —
the proper noun stays Latin, the frame translates. "UPG 100" is treated the same
way across all 11 locales, following a convention the catalog demonstrates
rather than coining acronyms (the trap I stopped at on the UUPGs header).
COMPUTED, not a constant: a locale change must move it. A const captured at
setup keeps the mounting language forever, which is the subtler half of the same
bug. That also forced the definition below useI18n(), since a computed
referencing t() above it throws at setup.
VERIFIED at the rendered layer: en "My UPG 100 List", es "Mi lista UPG 100",
zh "我的 UPG 100 名单", ar "قائمة UPG 100 الخاصة بي" (RTL), ru "Мой список UPG 100"
— 0 clipped in all five, including the longest Russian form.
check:legend-info-localized PASS, check:poster-card-fits PASS, SRI consistent.
69 lines
2.7 KiB
JSON
69 lines
2.7 KiB
JSON
{
|
|
"title": {
|
|
"adoption": "تقدم التبني",
|
|
"affinityBlocs": "كتل القرابة",
|
|
"doxaRegions": "مناطق Doxa",
|
|
"engagement": "تقدم الانخراط",
|
|
"gospelResources": "موارد الإنجيل",
|
|
"languageFamilies": "العائلات اللغوية",
|
|
"prayer": "تقدم الصلاة",
|
|
"upg100List": "قائمة UPG 100 الخاصة بي"
|
|
},
|
|
"header": {
|
|
"collapsed": "وسيلة الإيضاح",
|
|
"peopleGroupFallback": "مجموعة الشعب",
|
|
"default": "مفتاح الخريطة"
|
|
},
|
|
"prayer": {
|
|
"needsPrayer": "يحتاج إلى صلاة",
|
|
"hasPrayer": "لديه صلاة",
|
|
"fullPrayerCoverage": "تغطية صلاة كاملة"
|
|
},
|
|
"progress": {
|
|
"title": "التقدم",
|
|
"covered": "{covered} من {total} مجموعة شعبية مغطاة بالصلاة · {pct}%",
|
|
"short": "{covered} من {total} · {pct}%",
|
|
"segment": "{label} · {count} · {pct}%"
|
|
},
|
|
"engagement": {
|
|
"needsEngagement": "يحتاج إلى انخراط",
|
|
"hasEngagement": "لديه انخراط"
|
|
},
|
|
"adoption": {
|
|
"needsAdoption": "يحتاج إلى تبني",
|
|
"hasAdoption": "لديه تبني"
|
|
},
|
|
"columns": {
|
|
"upgs": "UUPGs",
|
|
"population": "السكان",
|
|
"name": "الاسم"
|
|
},
|
|
"footer": {
|
|
"total": "الإجمالي"
|
|
},
|
|
"sortByUpgs": "ترتيب حسب UUPG",
|
|
"sortByPop": "ترتيب حسب السكان",
|
|
"colLabel": {
|
|
"religion": "ديانات UUPG",
|
|
"prayer": "حالة الصلاة",
|
|
"engagement": "حالة المشاركة",
|
|
"adoption": "حالة التبني",
|
|
"status": "الحالة"
|
|
},
|
|
"titleBar": {
|
|
"legend": "مفتاح الخريطة",
|
|
"peopleGroups": "الشعوب",
|
|
"wagfRegions": "مناطق WAGF",
|
|
"languages": "اللغات"
|
|
},
|
|
"tabInfo": {
|
|
"upg100Region": "المنطقة — ترتّب قوائم UPG-100 حسب منطقة العالم (أفريقيا، الهند، الشرق الأوسط، الصمّ، …). الأعداد هي مجموع UUPG والسكان لكل قائمة تحتها.",
|
|
"upg100Zone": "قوائم UPG-100 — كل واحدة هي قائمة صلاة للشعوب غير الموصول إليها في منطقة ما، وهي ما ترسمه الخريطة وتلوّنه. تُطبع كل قائمة ككُتيّب خاص بها.",
|
|
"upg100Group": "مجموعة شعبية — المجموعات غير الموصول إليها داخل القائمة، الأكثر حاجة للصلاة أولاً. كل نقطة على الخريطة هي واحدة منها."
|
|
},
|
|
"a11y": {
|
|
"expandRow": "توسيع {label}",
|
|
"collapseRow": "طي {label}",
|
|
"clearSelection": "إلغاء التحديد"
|
|
}
|
|
}
|