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.5 KiB
JSON
45 lines
3.5 KiB
JSON
{
|
||
"menuComingSoon": "Menu bientôt disponible",
|
||
"pinHint": {
|
||
"tapDot": "Touchez un point coloré — quelqu’un a encore besoin de prière"
|
||
},
|
||
"upg100WallHeading": "Ma liste UPG 100 — Listes de prière et affiches",
|
||
"upg100WallTag": "Mobilisation pour la prière",
|
||
"upg100WallIntroA": "Comment nourririez-vous une foule de cinq mille personnes ? Jésus les a fait asseoir par groupes de cinquante et de cent, et l’impossible est devenu partageable (Luc 9.14). Nous avons fait de même avec les 2 106 peuples non atteints : 27 listes d’environ cinquante à cent. Chaque liste s’imprime en dossier de prière et en affiche, pour que 27 disciples, Églises ou responsables locaux en portent chacun une — en priant pour eux ",
|
||
"upg100WallIntroEmph": "par le nom de leur peuple",
|
||
"upg100WallIntroB": ".",
|
||
"loadingNamed": "Chargement de {name}…",
|
||
"couldNotLoadNamed": "Impossible de charger {name}.",
|
||
"engineMissing": "Le moteur de carte {engine} ne s’est pas chargé.",
|
||
"packetFailed": "Échec du livret : {reason}",
|
||
"selectionPacketFailed": "Échec du livret de la sélection : {reason}",
|
||
"posterOneTerritory": "L’affiche imprime un territoire à la fois — {count} sélectionnés.",
|
||
"selectionPosterFailed": "Échec de l’affiche de la sélection : {reason}",
|
||
"mapUnavailable": "Carte indisponible",
|
||
"copied": "Copié !",
|
||
"copyFailed": "Échec de la copie — appuyez sur Ctrl/Cmd-C",
|
||
"engineNotLoaded": "moteur cartographique non chargé",
|
||
"engineNotLoadedDetail": "Le moteur cartographique {engine} ne s’est pas chargé. La liste et la légende ne sont pas affectées.",
|
||
"viewLoadFailed": "Impossible de charger cette vue.",
|
||
"retry": "Réessayer",
|
||
"noMapboxToken": "Aucun jeton Mapbox",
|
||
"noMapboxTokenDetail": "Aucun jeton Mapbox n’est configuré. La liste et la légende ne sont pas affectées.",
|
||
"loadingBoundaries": "Chargement des limites…",
|
||
"fetchingUupgs": "Récupération de {n} UUPG…",
|
||
"mapStatusCounts": "Surfaces : {polys} · zones : {zones}/{total} · repères : {pins}",
|
||
"tapTerritoriesHint": "Touchez des territoires sur la carte ou des lignes de la légende pour les ajouter · touchez à nouveau pour les retirer",
|
||
"territoriesSelected": "Territoires : {count}",
|
||
"bandInRange": "✓ tranche 50–100",
|
||
"bandOutOfRange": "tranche 50–100",
|
||
"mapContextLost": "Cette carte a été déchargée pour libérer de la mémoire graphique.",
|
||
"nOfTotal": "{n} sur {total}",
|
||
"mapInitFailed": "Échec de l’initialisation de la carte — vérifiez le jeton et le conteneur",
|
||
"countryWallIntroA": "Une affiche par pays, prête à prier, à imprimer et à accrocher au mur — en priant pour eux ",
|
||
"countryWallIntroB": ". Les régions et les pays sont classés selon le nombre de peuples non engagés qu’ils comptent, pour que le plus grand besoin vienne en premier.",
|
||
"countryWallSoon": "Bientôt : une liste de prière sera générée pour chaque pays, nommant chaque peuple non atteint qui s’y trouve.",
|
||
"countryWallHeading": "Affiches par pays — Listes de prière et affiches",
|
||
"largerScreenNotice": "Cette carte expérimentale est conçue pour les grands écrans. Elle s’ouvre ici, mais certaines parties peuvent mal s’afficher ou mal fonctionner sur un téléphone.",
|
||
"desktopOnlyNotice": "{label} ne fonctionne que sur ordinateur : ouvrez cette page sur un ordinateur pour l’utiliser.",
|
||
"noticeDismiss": "Fermer",
|
||
"countryPosterTooMany": "Trop de peuples pour tenir lisiblement sur une seule affiche — une solution est en préparation."
|
||
}
|