The legend's region sections, its Deaf row and its one-country zones, the wall's card names, the print progress and error messages, the map's status badge and the Population column all rendered English in every locale. None of them was visible to check:hardcoded-english: they were single words, .js modules, Error() arguments, library components or number formatting. - Legend: region rows through one REGION_KEY table shared with the wall (poster.region_*, new region_deaf); zones through zoneTitle (tier A by country, the Deaf row by its bloc name); node ids stay English-derived. - Wall: card labels through zoneTitle, so the Show-on-map name, alt text, tooltip, HUD title and printed title agree with the legend and packet. - Errors a reader sees are keyedError(key, English, params); errorText(e, t) shows them translated, and an unkeyed error still shows its own message. Developer detail for a failed data load goes to the console; the badge says upgMap.mapDataFailed. - Population: Intl compact notation in the app's locale, same precision. - Country Posters: the unsupported card's reason is messages.countryPosterTooMany, not the data file's English note. - Strings only the UPG-100 map shows move to a new upgMap area, so other bundles do not carry them (country-posters 1,490,907 bytes). - check:hardcoded-english judges keyedError's English as a fallback (quiet when the key resolves everywhere, a finding when it does not); check:label-key-coverage follows REGION_KEY to legend-tree.js and covers the legend's table and its regionFor producer. Both self-tests two-sided.
45 lines
3 KiB
JSON
45 lines
3 KiB
JSON
{
|
||
"menuComingSoon": "菜单即将推出",
|
||
"pinHint": {
|
||
"tapDot": "点按一个彩色圆点——仍有人需要祷告"
|
||
},
|
||
"upg100WallHeading": "我的 UPG 100 名单 — 祷告名单与海报",
|
||
"upg100WallTag": "祷告动员",
|
||
"upg100WallIntroA": "你会怎样喂饱五千人的群众?耶稣让他们一排五十、一排一百地坐下,不可能的事就变得可以分担了(路加福音 9:14)。我们对 2,106 个未得之民做了同样的事:27 份名单,每份约五十到一百。每份名单都能印成祷告手册和海报,让 27 位门徒、教会或当地领袖各领一份 — 为他们祷告 ",
|
||
"upg100WallIntroEmph": "称呼他们族群的名字",
|
||
"upg100WallIntroB": "。",
|
||
"loadingNamed": "正在加载{name}…",
|
||
"couldNotLoadNamed": "无法加载{name}。",
|
||
"engineMissing": "{engine} 地图引擎未能加载。",
|
||
"packetFailed": "祷告册生成失败:{reason}",
|
||
"selectionPacketFailed": "所选内容的祷告册生成失败:{reason}",
|
||
"posterOneTerritory": "海报一次只能打印一个区域——已选 {count} 个。",
|
||
"selectionPosterFailed": "所选内容的海报生成失败:{reason}",
|
||
"mapUnavailable": "地图不可用",
|
||
"copied": "已复制!",
|
||
"copyFailed": "复制失败——请按 Ctrl/Cmd-C",
|
||
"engineNotLoaded": "地图引擎未加载",
|
||
"engineNotLoadedDetail": "{engine} 地图引擎未能加载。列表和图例不受影响。",
|
||
"viewLoadFailed": "此视图无法加载。",
|
||
"retry": "重试",
|
||
"noMapboxToken": "没有 Mapbox 令牌",
|
||
"noMapboxTokenDetail": "未配置 Mapbox 令牌。列表和图例不受影响。",
|
||
"loadingBoundaries": "正在加载边界…",
|
||
"fetchingUupgs": "正在获取 {n} 个 UUPG…",
|
||
"mapStatusCounts": "区域:{polys} · 分区:{zones}/{total} · 标记:{pins}",
|
||
"tapTerritoriesHint": "点按地图上的区域或图例行即可添加 · 再次点按即可移除",
|
||
"territoriesSelected": "区域:{count}",
|
||
"bandInRange": "✓ 50–100 区间",
|
||
"bandOutOfRange": "50–100 区间",
|
||
"mapContextLost": "已卸载此地图以释放显存。",
|
||
"nOfTotal": "{total} 个中的 {n} 个",
|
||
"mapInitFailed": "地图初始化失败——请检查令牌和容器",
|
||
"countryWallIntroA": "每个国家一张海报,可用来祷告、打印、贴在墙上——为他们祷告,",
|
||
"countryWallIntroB": "。各区域和国家按其中未得之民族群的数量排序,让最大的需要排在最前。",
|
||
"countryWallSoon": "即将推出:将为每个国家生成一份祷告名单,列出其中每一个未得之民族群的名字。",
|
||
"countryWallHeading": "国家海报 — 祷告名单与海报",
|
||
"largerScreenNotice": "这张实验性地图为大屏幕设计。它可以在这里打开,但部分内容在手机上可能显示不全或无法正常使用。",
|
||
"desktopOnlyNotice": "{label} 仅支持桌面端——请在电脑上打开此页面使用。",
|
||
"noticeDismiss": "关闭",
|
||
"countryPosterTooMany": "族群数量过多,无法清晰地放在一张海报上——我们正在制定解决方案。"
|
||
}
|