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": "Menú próximamente",
|
||
"pinHint": {
|
||
"tapDot": "Toca un punto de color: alguien todavía necesita oración"
|
||
},
|
||
"upg100WallHeading": "Mi lista UPG 100 — Listas de oración y carteles",
|
||
"upg100WallTag": "Movilización de oración",
|
||
"upg100WallIntroA": "¿Cómo alimentarías a una multitud de cinco mil? Jesús los sentó en grupos de cincuenta y de cien, y lo imposible se volvió compartible (Lucas 9:14). Hicimos lo mismo con los 2.106 pueblos no alcanzados: 27 listas de unos cincuenta a cien. Cada lista se imprime como paquete de oración y cartel, para que 27 discípulos, iglesias o líderes locales lleven una cada uno — orando por ellos ",
|
||
"upg100WallIntroEmph": "por el nombre de su pueblo",
|
||
"upg100WallIntroB": ".",
|
||
"loadingNamed": "Cargando {name}…",
|
||
"couldNotLoadNamed": "No se pudo cargar {name}.",
|
||
"engineMissing": "El motor de mapas {engine} no se cargó.",
|
||
"packetFailed": "Error al generar el cuadernillo: {reason}",
|
||
"selectionPacketFailed": "Error al generar el cuadernillo de la selección: {reason}",
|
||
"posterOneTerritory": "El cartel imprime un territorio a la vez: {count} seleccionados.",
|
||
"selectionPosterFailed": "Error al generar el cartel de la selección: {reason}",
|
||
"mapUnavailable": "Mapa no disponible",
|
||
"copied": "¡Copiado!",
|
||
"copyFailed": "Error al copiar: pulsa Ctrl/Cmd-C",
|
||
"engineNotLoaded": "motor de mapas no cargado",
|
||
"engineNotLoadedDetail": "El motor de mapas {engine} no se cargó. La lista y la leyenda no se ven afectadas.",
|
||
"viewLoadFailed": "No se pudo cargar esta vista.",
|
||
"retry": "Reintentar",
|
||
"noMapboxToken": "No hay token de Mapbox",
|
||
"noMapboxTokenDetail": "No hay ningún token de Mapbox configurado. La lista y la leyenda no se ven afectadas.",
|
||
"loadingBoundaries": "Cargando límites…",
|
||
"fetchingUupgs": "Obteniendo {n} UUPG…",
|
||
"mapStatusCounts": "Áreas: {polys} · zonas: {zones}/{total} · marcadores: {pins}",
|
||
"tapTerritoriesHint": "Toque territorios en el mapa o filas de la leyenda para añadirlos · toque de nuevo para quitarlos",
|
||
"territoriesSelected": "Territorios: {count}",
|
||
"bandInRange": "✓ franja 50–100",
|
||
"bandOutOfRange": "franja 50–100",
|
||
"mapContextLost": "Este mapa se descargó para liberar memoria gráfica.",
|
||
"nOfTotal": "{n} de {total}",
|
||
"mapInitFailed": "No se pudo iniciar el mapa: revisa el token y el contenedor",
|
||
"countryWallIntroA": "Un cartel por país, listo para orar, imprimir y colgar en una pared — orando por ellos ",
|
||
"countryWallIntroB": ". Las regiones y los países se ordenan según cuántos pueblos no comprometidos contienen, para que la mayor necesidad vaya primero.",
|
||
"countryWallSoon": "Próximamente: se generará una lista de oración para cada país, con el nombre de cada pueblo no alcanzado que hay en él.",
|
||
"countryWallHeading": "Carteles por país — Listas de oración y carteles",
|
||
"largerScreenNotice": "Este mapa experimental está pensado para pantallas grandes. Se abre aquí, pero algunas partes pueden no caber o no funcionar bien en un teléfono.",
|
||
"desktopOnlyNotice": "{label} solo funciona en escritorio: abra esta página en un ordenador para usarlo.",
|
||
"noticeDismiss": "Cerrar",
|
||
"countryPosterTooMany": "Demasiados pueblos para que quepan legiblemente en un solo cartel; estamos trabajando en una solución."
|
||
}
|