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.3 KiB
JSON
45 lines
3.3 KiB
JSON
{
|
||
"menuComingSoon": "Menu em breve",
|
||
"pinHint": {
|
||
"tapDot": "Toque num ponto colorido — alguém ainda precisa de oração"
|
||
},
|
||
"upg100WallHeading": "Minha lista UPG 100 — Listas de oração e cartazes",
|
||
"upg100WallTag": "Mobilização de oração",
|
||
"upg100WallIntroA": "Como você alimentaria uma multidão de cinco mil? Jesus os sentou em grupos de cinquenta e de cem, e o impossível tornou-se compartilhável (Lucas 9.14). Fizemos o mesmo com os 2.106 povos não alcançados: 27 listas de cerca de cinquenta a cem. Cada lista imprime como pacote de oração e cartaz, para que 27 discípulos, igrejas ou líderes locais levem uma cada um — orando por eles ",
|
||
"upg100WallIntroEmph": "pelo nome do seu povo",
|
||
"upg100WallIntroB": ".",
|
||
"loadingNamed": "Carregando {name}…",
|
||
"couldNotLoadNamed": "Não foi possível carregar {name}.",
|
||
"engineMissing": "O motor de mapa {engine} não foi carregado.",
|
||
"packetFailed": "Falha ao gerar o caderno: {reason}",
|
||
"selectionPacketFailed": "Falha ao gerar o caderno da seleção: {reason}",
|
||
"posterOneTerritory": "O cartaz imprime um território de cada vez — {count} selecionados.",
|
||
"selectionPosterFailed": "Falha ao gerar o cartaz da seleção: {reason}",
|
||
"mapUnavailable": "Mapa indisponível",
|
||
"copied": "Copiado!",
|
||
"copyFailed": "Falha ao copiar — pressione Ctrl/Cmd-C",
|
||
"engineNotLoaded": "motor de mapas não carregado",
|
||
"engineNotLoadedDetail": "O motor de mapas {engine} não carregou. A lista e a legenda não são afetadas.",
|
||
"viewLoadFailed": "Não foi possível carregar esta visualização.",
|
||
"retry": "Tentar novamente",
|
||
"noMapboxToken": "Nenhum token do Mapbox",
|
||
"noMapboxTokenDetail": "Nenhum token do Mapbox configurado. A lista e a legenda não são afetadas.",
|
||
"loadingBoundaries": "Carregando limites…",
|
||
"fetchingUupgs": "Buscando {n} UUPGs…",
|
||
"mapStatusCounts": "Áreas: {polys} · zonas: {zones}/{total} · marcadores: {pins}",
|
||
"tapTerritoriesHint": "Toque em territórios no mapa ou em linhas da legenda para adicionar · toque de novo para remover",
|
||
"territoriesSelected": "Territórios: {count}",
|
||
"bandInRange": "✓ faixa 50–100",
|
||
"bandOutOfRange": "faixa 50–100",
|
||
"mapContextLost": "Este mapa foi descarregado para libertar memória gráfica.",
|
||
"nOfTotal": "{n} de {total}",
|
||
"mapInitFailed": "Falha ao iniciar o mapa — verifique o token e o contêiner",
|
||
"countryWallIntroA": "Um cartaz por país, pronto para orar, imprimir e pendurar na parede — orando por eles ",
|
||
"countryWallIntroB": ". As regiões e os países são ordenados pelo número de povos não engajados que abrigam, para que a maior necessidade venha primeiro.",
|
||
"countryWallSoon": "Em breve: será gerada uma lista de oração para cada país, com o nome de cada povo não alcançado nele.",
|
||
"countryWallHeading": "Cartazes por país — Listas de oração e cartazes",
|
||
"largerScreenNotice": "Este mapa experimental foi feito para telas maiores. Ele abre aqui, mas algumas partes podem não caber ou não funcionar bem no celular.",
|
||
"desktopOnlyNotice": "{label} só funciona no computador — abra esta página num computador para usá-lo.",
|
||
"noticeDismiss": "Fechar",
|
||
"countryPosterTooMany": "Povos demais para caber de forma legível em um só cartaz — uma solução está a caminho."
|
||
}
|