mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-06 11:24:00 +00:00
i18n(fr): apply review round 2
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
1 parent
4adb9113bc
commit
e87001d0db
6 files changed
+122
-91
No files matched your search
+66
-58
@@ -28,64 +28,72 @@ A `tn()` entry needs three forms. `Intl.PluralRules('fr')` picks:
|
|||||||
| `many` | 1 000 000, 2 000 000… (exact millions) | 1 000 000 de caméras |
|
| `many` | 1 000 000, 2 000 000… (exact millions) | 1 000 000 de caméras |
|
||||||
| `other` | everything else: 2–999 999, 2,5… | 3 caméras |
|
| `other` | everything else: 2–999 999, 2,5… | 3 caméras |
|
||||||
|
|
||||||
The `many` form is the `other` text with « de » (« d' » before a vowel) after the number: « {count} de couches effacées », « {count} D'ENTRÉES INCONNUES ». When the words after the number cannot agree (an UPPERCASE readout, a list), put the number after a colon in every form: « CAPTÉS : {count} ».
|
The `many` form is the `other` text with « de » (« d' » before a vowel) after the number: « {count} de couches effacées », « {count} D'ENTRÉES INCONNUES ». When the words after the number cannot agree (an UPPERCASE readout, a list), put the number after a colon in every form: « CAPTÉS : {count} ». The same goes for a layer name whose gender and number vary: « Couche activée : {label} », not « {label} activé ».
|
||||||
|
|
||||||
## Glossary
|
## Glossary
|
||||||
|
|
||||||
| English | Français |
|
| English | Français |
|
||||||
| --------------------------------------------------------- | ----------------------------------------------------------------------- |
|
| ------------------------------------------------------------ | ----------------------------------------------------------------------- |
|
||||||
| layer / data layer / DATA LAYERS (panel title) | couche / couche de données / COUCHES |
|
| layer / data layer / DATA LAYERS (panel title) | couche / couche de données / COUCHES |
|
||||||
| feed / source / data source | flux / source / source de données |
|
| feed / source / data source | flux / source / source de données |
|
||||||
| LIVE (status) / live data | DIRECT / données en direct |
|
| LIVE (status) / live data | DIRECT / données en direct |
|
||||||
| SIMULATED | SIMULÉ |
|
| SIMULATED | SIMULÉ |
|
||||||
| stale / degraded / unavailable | obsolète / dégradé / indisponible |
|
| stale / degraded / unavailable | obsolète / dégradé / indisponible |
|
||||||
| retry / retrying | nouvel essai / réessayez |
|
| retry / retrying (status: RETRYING X) | nouvel essai / réessayez (NOUVEL ESSAI : X) |
|
||||||
| rate-limited | limite de requêtes atteinte |
|
| rate-limited | limite de requêtes atteinte |
|
||||||
| key (API key) / POWER UP / POWERED UP | clé (clé API) / ALLUMER / ALLUMÉ |
|
| key (API key) / POWER UP / POWERED UP | clé (clé API) / ALLUMER / ALLUMÉ |
|
||||||
| Provider Settings | paramètres des fournisseurs |
|
| Provider Settings | paramètres des fournisseurs |
|
||||||
| enable / disable | activer / désactiver |
|
| enable / disable | activer / désactiver |
|
||||||
| globe / map / map source / basemap / map stack | globe / carte / source de carte / fond de carte / fond de carte |
|
| globe / map / map source / basemap / map stack | globe / carte / source de carte / fond de carte / fond de carte |
|
||||||
| tile (map) | tuile |
|
| tile (map) | tuile |
|
||||||
| aircraft / flight / military flights | aéronef (avion in short copy) / vol / vols militaires |
|
| aircraft / flight / military flights | aéronef (avion in short copy) / vol / vols militaires |
|
||||||
| vessel, ship / tanker (AIS type) | navire / navire-citerne |
|
| vessel, ship / tanker (AIS type) | navire / navire-citerne |
|
||||||
| satellite / shell (Starlink) / DENSE | satellite / couche de la constellation / DENSE |
|
| satellite / shell (Starlink) / DENSE | satellite / couche de la constellation / DENSE |
|
||||||
| launch / launch site / space mission | lancement / site de lancement / mission spatiale |
|
| launch / launch site / space mission | lancement / site de lancement / mission spatiale |
|
||||||
| ascent / replay / payload / stage / downrange | ascension / rejeu / charge utile / étage / distance au sol (DIST. SOL) |
|
| ascent / replay / payload / stage / downrange | ascension / rejeu / charge utile / étage / distance au sol (DIST. SOL) |
|
||||||
| contact / tracking / track (HUD) | contact / suivi / piste |
|
| contact / tracking / track (HUD) | contact / suivi / piste |
|
||||||
| installation / site | installation / site |
|
| installation / site | installation / site |
|
||||||
| mapped / observed | cartographié / observé |
|
| mapped / observed | cartographié / observé |
|
||||||
| camera / CCTV camera / ALPR camera | caméra / caméra CCTV / caméra LAPI |
|
| camera / CCTV camera / ALPR camera | caméra / caméra CCTV / caméra LAPI |
|
||||||
| earthquake | séisme |
|
| earthquake | séisme |
|
||||||
| active fire (FIRMS detection) / wildfire | feu actif / incendie |
|
| active fire (FIRMS detection) / wildfire | feu actif / incendie |
|
||||||
| contained / containment (wildfire) | circonscrit / part circonscrite (not « maîtrisé », which is controlled) |
|
| contained / containment (wildfire) | circonscrit / part circonscrite (not « maîtrisé », which is controlled) |
|
||||||
| advisory (NHC/CPHC cyclone) | bulletin |
|
| advisory (NHC/CPHC cyclone) | bulletin |
|
||||||
| forecast / lead hours / valid / issued | prévision / échéances / valide / émise |
|
| forecast / lead hours / valid / issued | prévision / échéances / valide / émise |
|
||||||
| AQHI (Canada) | CQAS (cote air santé) |
|
| AQHI (Canada) | CQAS (cote air santé) |
|
||||||
| radio station / tune | station / régler |
|
| radio station / tune | station / régler |
|
||||||
| bikeshare / transit | vélos partagés / transports en commun |
|
| bikeshare / transit | vélos partagés / transports en commun |
|
||||||
| route (directions) / turn (maneuver) | itinéraire / manœuvre |
|
| route (directions) / turn (maneuver) | itinéraire / manœuvre |
|
||||||
| scene / shot / scene recipe | scène / plan / recette de scène |
|
| scene / shot / scene recipe | scène / plan / recette de scène |
|
||||||
| bundle / data pack / anchor | archive / paquet de données / ancre |
|
| bundle / data pack / anchor | archive / paquet de données / ancre |
|
||||||
| story beat | étape du récit |
|
| story beat | étape du récit |
|
||||||
| briefing / panel / dock | briefing / panneau / dock |
|
| briefing / panel / dock | briefing / panneau / dock |
|
||||||
| cockpit | cockpit |
|
| cockpit | cockpit |
|
||||||
| preset / visual preset | préréglage / préréglage visuel |
|
| preset / visual preset | préréglage / préréglage visuel |
|
||||||
| Scope (circular viewport mask) / keyhole | lunette / ouverture |
|
| Scope (circular viewport mask) / keyhole | lunette / ouverture |
|
||||||
| detection overlay | surcouche de détection |
|
| detection overlay | surcouche de détection |
|
||||||
| Clean UI | vue épurée |
|
| Clean UI | vue épurée |
|
||||||
| Street Level (layer) / Street View (Google) | Niveau rue / Street View |
|
| Street Level (layer) / Street View (Google) | Niveau rue / Street View |
|
||||||
| Recent Imagery / box | imagerie récente / zone |
|
| Recent Imagery / box | imagerie récente / zone |
|
||||||
| pin (Draw tool) / pin (Recent Imagery) | épingle / épingler |
|
| pin (Draw tool) / pin (Recent Imagery) | épingle / épingler |
|
||||||
| Cyber (HUD layout, effect) | Cyber |
|
| Cyber (HUD layout, effect) | Cyber |
|
||||||
| heading / course (ground track) / altitude / ground speed | cap / route / altitude / vitesse sol |
|
| heading / course (ground track) / altitude / ground speed | cap / route / altitude / vitesse sol |
|
||||||
| HDG / BRG / CRS / FOV / DEST / SPD / ALT | unchanged |
|
| HDG / BRG / CRS / FOV / DEST / SPD / ALT | unchanged |
|
||||||
| RANGE / PITCH / HGT (CCTV calibration chips) | PORTÉE / INCL. / HAUT. |
|
| RANGE / PITCH / HGT (CCTV calibration chips) | PORTÉE / INCL. / HAUT. |
|
||||||
| PREV / PREVIOUS / NEXT (chips) | PRÉC. / PRÉC. / SUIV. |
|
| PREV / PREVIOUS / NEXT (chips) | PRÉC. / PRÉC. / SUIV. |
|
||||||
| Previous / Next (button text) | Précédent / Suivant |
|
| Previous / Next (button text) | Précédent / Suivant |
|
||||||
| L / R (relative bearing) | G / D |
|
| L / R (relative bearing) | G / D |
|
||||||
| SIG / NEWS / LOCAL (briefing tabs) | SIG / ACTUS / LOCAL |
|
| SIG / NEWS / LOCAL (briefing tabs) | SIG / ACTUS / LOCAL |
|
||||||
| compass points (N, NNE, …, W, NW) | N, NNE, …, O, NO |
|
| compass points (N, NNE, …, W, NW) | N, NNE, …, O, NO |
|
||||||
| NOT AN ALL-CLEAR | PAS UN FEU VERT |
|
| NOT AN ALL-CLEAR | PAS UN FEU VERT |
|
||||||
| AI agent | agent IA |
|
| AI agent | agent IA |
|
||||||
| share (a view or link) | partager |
|
| share (a view or link) | partager |
|
||||||
| click / click to … | cliquez / cliquer pour … |
|
| click / click to … | cliquez / cliquer pour … |
|
||||||
|
| map heading (compass, north-up control) | orientation (de la carte) |
|
||||||
|
| subject (cockpit / shared contact) | cible |
|
||||||
|
| cloud cover / CLOUD (briefing readout) | nébulosité / NÉBULOSITÉ |
|
||||||
|
| LEVEL (cockpit horizon guide) | HORIZON |
|
||||||
|
| CALIBRATED / CURATED / RAW PRIOR (CCTV pose) | CALIBRÉE / VÉRIFIÉE / ESTIM. INITIALE |
|
||||||
|
| PORT TENDER (AIS type) | SERVITUDE PORT. (navire de servitude portuaire) |
|
||||||
|
| ChatGPT sign-in (action) / opening sign-in / sign-in expired | connexion / page de connexion / la session a expiré |
|
||||||
|
| authored shot (scene) | plan scénarisé |
|
||||||
+31
-31
@@ -169,7 +169,7 @@
|
|||||||
"other": "{count} SOURCES"
|
"other": "{count} SOURCES"
|
||||||
},
|
},
|
||||||
"OUTSIDE IMAGERY SWIPE": "HORS DE LA COMPARAISON D'IMAGES",
|
"OUTSIDE IMAGERY SWIPE": "HORS DE LA COMPARAISON D'IMAGES",
|
||||||
"{scene} / AUTHORED SHOT": "{scene} / PLAN CONÇU",
|
"{scene} / AUTHORED SHOT": "{scene} / PLAN SCÉNARISÉ",
|
||||||
"NEPAL FLOOD INCIDENT": "CRUE AU NÉPAL",
|
"NEPAL FLOOD INCIDENT": "CRUE AU NÉPAL",
|
||||||
"Play {shot}": "Lire {shot}",
|
"Play {shot}": "Lire {shot}",
|
||||||
"current scene shot": "le plan actuel de la scène",
|
"current scene shot": "le plan actuel de la scène",
|
||||||
@@ -242,7 +242,7 @@
|
|||||||
"Map tiles temporarily unavailable": "Tuiles de la carte temporairement indisponibles",
|
"Map tiles temporarily unavailable": "Tuiles de la carte temporairement indisponibles",
|
||||||
"Mapped names temporarily unavailable": "Noms cartographiés temporairement indisponibles",
|
"Mapped names temporarily unavailable": "Noms cartographiés temporairement indisponibles",
|
||||||
"Overpass temporarily unavailable": "Overpass temporairement indisponible",
|
"Overpass temporarily unavailable": "Overpass temporairement indisponible",
|
||||||
"Retrying mapped sites…": "Nouvel essai des sites cartographiés…",
|
"Retrying mapped sites…": "Nouvel essai : sites cartographiés…",
|
||||||
"Fetching mapped sites…": "Récupération des sites cartographiés…",
|
"Fetching mapped sites…": "Récupération des sites cartographiés…",
|
||||||
"{reason} — retrying in {seconds}s": "{reason} — nouvel essai dans {seconds} s",
|
"{reason} — retrying in {seconds}s": "{reason} — nouvel essai dans {seconds} s",
|
||||||
"{reason} — retry pending": "{reason} — nouvel essai en attente",
|
"{reason} — retry pending": "{reason} — nouvel essai en attente",
|
||||||
@@ -286,7 +286,7 @@
|
|||||||
"PILOT": "PILOTINE",
|
"PILOT": "PILOTINE",
|
||||||
"SAR": "SAR",
|
"SAR": "SAR",
|
||||||
"TUG": "REMORQUEUR",
|
"TUG": "REMORQUEUR",
|
||||||
"PORT TENDER": "SERVITUDE",
|
"PORT TENDER": "SERVITUDE PORT.",
|
||||||
"ANTI-POLLUTION": "ANTIPOLLUTION",
|
"ANTI-POLLUTION": "ANTIPOLLUTION",
|
||||||
"LAW ENFORCE": "POLICE",
|
"LAW ENFORCE": "POLICE",
|
||||||
"MEDICAL": "MÉDICAL",
|
"MEDICAL": "MÉDICAL",
|
||||||
@@ -414,8 +414,8 @@
|
|||||||
"Checking local ChatGPT OAuth sign-in…": "Vérification de la connexion OAuth ChatGPT locale…",
|
"Checking local ChatGPT OAuth sign-in…": "Vérification de la connexion OAuth ChatGPT locale…",
|
||||||
"Could not check ChatGPT sign-in.": "Impossible de vérifier la connexion ChatGPT.",
|
"Could not check ChatGPT sign-in.": "Impossible de vérifier la connexion ChatGPT.",
|
||||||
"ChatGPT OAuth selected for cloud voice. Your API key stays saved and available.": "OAuth ChatGPT sélectionné pour la voix cloud. Votre clé API reste enregistrée et disponible.",
|
"ChatGPT OAuth selected for cloud voice. Your API key stays saved and available.": "OAuth ChatGPT sélectionné pour la voix cloud. Votre clé API reste enregistrée et disponible.",
|
||||||
"ChatGPT sign-in expired. Opening sign-in again…": "La connexion ChatGPT a expiré. Nouvelle ouverture de la connexion…",
|
"ChatGPT sign-in expired. Opening sign-in again…": "La session ChatGPT a expiré. Réouverture de la page de connexion…",
|
||||||
"Opening ChatGPT sign-in in your browser…": "Ouverture de la connexion ChatGPT dans votre navigateur…",
|
"Opening ChatGPT sign-in in your browser…": "Ouverture de la page de connexion ChatGPT dans votre navigateur…",
|
||||||
"Could not start ChatGPT sign-in on this machine.": "Impossible de lancer la connexion ChatGPT sur cette machine.",
|
"Could not start ChatGPT sign-in on this machine.": "Impossible de lancer la connexion ChatGPT sur cette machine.",
|
||||||
"Finish ChatGPT sign-in in the browser. Waiting for it to complete…": "Terminez la connexion ChatGPT dans le navigateur. En attente de la fin…",
|
"Finish ChatGPT sign-in in the browser. Waiting for it to complete…": "Terminez la connexion ChatGPT dans le navigateur. En attente de la fin…",
|
||||||
"ChatGPT sign-in timed out. Click {button} to try again.": "Délai de connexion ChatGPT dépassé. Cliquez sur « {button} » pour réessayer.",
|
"ChatGPT sign-in timed out. Click {button} to try again.": "Délai de connexion ChatGPT dépassé. Cliquez sur « {button} » pour réessayer.",
|
||||||
@@ -473,7 +473,7 @@
|
|||||||
"many": "{count} à proximité",
|
"many": "{count} à proximité",
|
||||||
"other": "{count} à proximité"
|
"other": "{count} à proximité"
|
||||||
},
|
},
|
||||||
"retrying mapped ALPR cameras": "nouvel essai des caméras LAPI cartographiées",
|
"retrying mapped ALPR cameras": "nouvel essai : caméras LAPI cartographiées",
|
||||||
"loading mapped ALPR cameras": "chargement des caméras LAPI cartographiées",
|
"loading mapped ALPR cameras": "chargement des caméras LAPI cartographiées",
|
||||||
"No ALPR data for this area — US and Canada only": "Aucune donnée LAPI pour cette zone — États-Unis et Canada seulement",
|
"No ALPR data for this area — US and Canada only": "Aucune donnée LAPI pour cette zone — États-Unis et Canada seulement",
|
||||||
"Zoom in to load mapped cameras": "Zoomez pour charger les caméras cartographiées",
|
"Zoom in to load mapped cameras": "Zoomez pour charger les caméras cartographiées",
|
||||||
@@ -634,8 +634,8 @@
|
|||||||
"At the end of the road, turn {direction}": "Au bout de la route, tournez {direction}",
|
"At the end of the road, turn {direction}": "Au bout de la route, tournez {direction}",
|
||||||
"At the end of the road, continue onto {road}": "Au bout de la route, continuez sur {road}",
|
"At the end of the road, continue onto {road}": "Au bout de la route, continuez sur {road}",
|
||||||
"At the end of the road, continue": "Au bout de la route, continuez",
|
"At the end of the road, continue": "Au bout de la route, continuez",
|
||||||
"Keep {direction} at the fork onto {road}": "À l'embranchement, restez {direction} sur {road}",
|
"Keep {direction} at the fork onto {road}": "À l'embranchement, continuez {direction} sur {road}",
|
||||||
"Keep {direction} at the fork": "À l'embranchement, restez {direction}",
|
"Keep {direction} at the fork": "À l'embranchement, continuez {direction}",
|
||||||
"Continue at the fork onto {road}": "À l'embranchement, continuez sur {road}",
|
"Continue at the fork onto {road}": "À l'embranchement, continuez sur {road}",
|
||||||
"Continue at the fork": "À l'embranchement, continuez",
|
"Continue at the fork": "À l'embranchement, continuez",
|
||||||
"Merge {direction} onto {road}": "Insérez-vous {direction} sur {road}",
|
"Merge {direction} onto {road}": "Insérez-vous {direction} sur {road}",
|
||||||
@@ -815,7 +815,7 @@
|
|||||||
"ORBIT REPLAY · {mission}": "REJEU DE L'ORBITE · {mission}",
|
"ORBIT REPLAY · {mission}": "REJEU DE L'ORBITE · {mission}",
|
||||||
"PAUSED · {title}": "PAUSE · {title}",
|
"PAUSED · {title}": "PAUSE · {title}",
|
||||||
"UNSPECIFIED": "NON PRÉCISÉ",
|
"UNSPECIFIED": "NON PRÉCISÉ",
|
||||||
"+{count} additional payload records": "+{count} enregistrements de charge utile supplémentaires",
|
"+{count} additional payload records": "Enregistrements de charge utile supplémentaires : +{count}",
|
||||||
"PAYLOAD DATA UNAVAILABLE": "DONNÉES DE CHARGE UTILE INDISPONIBLES",
|
"PAYLOAD DATA UNAVAILABLE": "DONNÉES DE CHARGE UTILE INDISPONIBLES",
|
||||||
"{value} KM DOWNRANGE": "DIST. SOL : {value} KM",
|
"{value} KM DOWNRANGE": "DIST. SOL : {value} KM",
|
||||||
"POSITION UNAVAILABLE": "POSITION INDISPONIBLE",
|
"POSITION UNAVAILABLE": "POSITION INDISPONIBLE",
|
||||||
@@ -1005,7 +1005,7 @@
|
|||||||
"Imagery catalog unavailable": "Catalogue d'images indisponible",
|
"Imagery catalog unavailable": "Catalogue d'images indisponible",
|
||||||
"Catalog truncated · a newer clear day may exist": "Catalogue tronqué · un jour dégagé plus récent peut exister",
|
"Catalog truncated · a newer clear day may exist": "Catalogue tronqué · un jour dégagé plus récent peut exister",
|
||||||
"{label} catalog unavailable · {detail}": "Catalogue {label} indisponible · {detail}",
|
"{label} catalog unavailable · {detail}": "Catalogue {label} indisponible · {detail}",
|
||||||
"Daily overview for today may still be empty until the pass": "La vue d'ensemble quotidienne peut rester vide jusqu'au passage du satellite",
|
"Daily overview for today may still be empty until the pass": "La vue quotidienne d'aujourd'hui peut rester vide jusqu'au passage du satellite",
|
||||||
"Box and images cleared": "Zone et images effacées",
|
"Box and images cleared": "Zone et images effacées",
|
||||||
"MORE DETAIL · 30 m": "PLUS DE DÉTAIL · 30 m",
|
"MORE DETAIL · 30 m": "PLUS DE DÉTAIL · 30 m",
|
||||||
"Sentinel-2 and Landsat via HLS, 30 m, every 2–6 days": "Sentinel‑2 et Landsat via HLS, 30 m, tous les 2 à 6 jours",
|
"Sentinel-2 and Landsat via HLS, 30 m, every 2–6 days": "Sentinel‑2 et Landsat via HLS, 30 m, tous les 2 à 6 jours",
|
||||||
@@ -1238,7 +1238,7 @@
|
|||||||
"Vivid": "Forte",
|
"Vivid": "Forte",
|
||||||
"Image opacity; does not alter the observed values": "Opacité de l'image ; ne modifie pas les valeurs observées",
|
"Image opacity; does not alter the observed values": "Opacité de l'image ; ne modifie pas les valeurs observées",
|
||||||
"View US radar": "Voir le radar des États-Unis",
|
"View US radar": "Voir le radar des États-Unis",
|
||||||
"View Americas & Pacific": "Voir Amériques et Pacifique",
|
"View Americas & Pacific": "Voir les Amériques et le Pacifique",
|
||||||
"View coverage": "Voir la couverture",
|
"View coverage": "Voir la couverture",
|
||||||
"{value} strikes/km²/min ×10³ (15-minute density)": "{value} impacts/km²/min ×10³ (densité sur 15 minutes)",
|
"{value} strikes/km²/min ×10³ (15-minute density)": "{value} impacts/km²/min ×10³ (densité sur 15 minutes)",
|
||||||
"{value} dBZ radar reflectivity": "{value} dBZ de réflectivité radar",
|
"{value} dBZ radar reflectivity": "{value} dBZ de réflectivité radar",
|
||||||
@@ -1246,7 +1246,7 @@
|
|||||||
"Map center is outside source coverage": "Le centre de la carte est hors de la couverture de la source",
|
"Map center is outside source coverage": "Le centre de la carte est hors de la couverture de la source",
|
||||||
"NOAA/NWS 15-minute lightning density derived from Vaisala NLDN/GLD360. Coverage 110°E across the Pacific/Americas to 0°, 25°S–80°N. Not a live strike count, global coverage or a safety warning.": "Densité de foudre sur 15 minutes de NOAA/NWS, dérivée de Vaisala NLDN/GLD360. Couverture de 110°E à 0° à travers le Pacifique et les Amériques, 25°S–80°N. Ce n'est ni un décompte d'impacts en direct, ni une couverture mondiale, ni une alerte de sécurité.",
|
"NOAA/NWS 15-minute lightning density derived from Vaisala NLDN/GLD360. Coverage 110°E across the Pacific/Americas to 0°, 25°S–80°N. Not a live strike count, global coverage or a safety warning.": "Densité de foudre sur 15 minutes de NOAA/NWS, dérivée de Vaisala NLDN/GLD360. Couverture de 110°E à 0° à travers le Pacifique et les Amériques, 25°S–80°N. Ce n'est ni un décompte d'impacts en direct, ni une couverture mondiale, ni une alerte de sécurité.",
|
||||||
"NOAA MRMS radar echoes indicate precipitation patterns, not rain rate, a storm warning or a future forecast. Native source approximately 1 km; display is limited to level 6. Frames use exact advertised observation times.": "Les échos radar NOAA MRMS indiquent la structure des précipitations, pas l'intensité de la pluie, une alerte d'orage ou une prévision. Résolution native d'environ 1 km ; l'affichage est limité au niveau 6. Les images utilisent les heures d'observation exactes publiées.",
|
"NOAA MRMS radar echoes indicate precipitation patterns, not rain rate, a storm warning or a future forecast. Native source approximately 1 km; display is limited to level 6. Frames use exact advertised observation times.": "Les échos radar NOAA MRMS indiquent la structure des précipitations, pas l'intensité de la pluie, une alerte d'orage ou une prévision. Résolution native d'environ 1 km ; l'affichage est limité au niveau 6. Les images utilisent les heures d'observation exactes publiées.",
|
||||||
"GOES-19/18 longwave infrared Band 14 regional; NESDIS global longwave mosaic. Clouds only dims everything but bright, cold cloud tops; a brightness filter, not a cloud mask. Coverage and freshness differ by region.": "Infrarouge grandes longueurs d'onde GOES-19/18, bande 14, régional ; mosaïque mondiale grandes longueurs d'onde NESDIS. Nuages seuls assombrit tout sauf les sommets nuageux brillants et froids ; c'est un filtre de luminosité, pas un masque de nuages. La couverture et la fraîcheur varient selon la région.",
|
"GOES-19/18 longwave infrared Band 14 regional; NESDIS global longwave mosaic. Clouds only dims everything but bright, cold cloud tops; a brightness filter, not a cloud mask. Coverage and freshness differ by region.": "Infrarouge grandes longueurs d'onde GOES-19/18, bande 14, régional ; mosaïque mondiale grandes longueurs d'onde NESDIS. « Nuages seuls » assombrit tout sauf les sommets nuageux brillants et froids ; c'est un filtre de luminosité, pas un masque de nuages. La couverture et la fraîcheur varient selon la région.",
|
||||||
"REGION": "RÉGION",
|
"REGION": "RÉGION",
|
||||||
"IMAGE": "IMAGE",
|
"IMAGE": "IMAGE",
|
||||||
"FILTER": "FILTRE",
|
"FILTER": "FILTRE",
|
||||||
@@ -1254,7 +1254,7 @@
|
|||||||
"OPACITY": "OPACITÉ",
|
"OPACITY": "OPACITÉ",
|
||||||
"Infrared decode failed": "Échec du décodage infrarouge",
|
"Infrared decode failed": "Échec du décodage infrarouge",
|
||||||
"Weather prefetch unavailable": "Préchargement météo indisponible",
|
"Weather prefetch unavailable": "Préchargement météo indisponible",
|
||||||
"Weather tiles unavailable · previous frame retained": "Tuiles météo indisponibles · image précédente conservée",
|
"Weather tiles unavailable · previous frame retained": "Tuiles indisp. · image précédente conservée",
|
||||||
"Some weather tiles unavailable": "Certaines tuiles météo indisponibles",
|
"Some weather tiles unavailable": "Certaines tuiles météo indisponibles",
|
||||||
"Malformed weather manifest": "Manifeste météo mal formé",
|
"Malformed weather manifest": "Manifeste météo mal formé",
|
||||||
"Weather request timed out": "Délai dépassé pour la requête météo",
|
"Weather request timed out": "Délai dépassé pour la requête météo",
|
||||||
@@ -1552,7 +1552,7 @@
|
|||||||
"Copy failed": "Échec de la copie",
|
"Copy failed": "Échec de la copie",
|
||||||
"Return map to straight-down view": "Remettre la carte en vue verticale",
|
"Return map to straight-down view": "Remettre la carte en vue verticale",
|
||||||
"Tilt map to oblique view": "Incliner la carte en vue oblique",
|
"Tilt map to oblique view": "Incliner la carte en vue oblique",
|
||||||
"Reset map to north up. Current heading {heading} degrees": "Réorienter la carte nord en haut. Cap actuel {heading} degrés",
|
"Reset map to north up. Current heading {heading} degrees": "Réorienter la carte nord en haut. Orientation actuelle : {heading} degrés",
|
||||||
"Tilted view": "Vue inclinée",
|
"Tilted view": "Vue inclinée",
|
||||||
"Straight-down view": "Vue verticale",
|
"Straight-down view": "Vue verticale",
|
||||||
"North up": "Nord en haut",
|
"North up": "Nord en haut",
|
||||||
@@ -1596,7 +1596,7 @@
|
|||||||
"FRAME · LOADING": "IMAGE · CHARGEMENT",
|
"FRAME · LOADING": "IMAGE · CHARGEMENT",
|
||||||
"FRAME · UNAVAILABLE": "IMAGE · INDISPONIBLE",
|
"FRAME · UNAVAILABLE": "IMAGE · INDISPONIBLE",
|
||||||
"CALIBRATED": "CALIBRÉE",
|
"CALIBRATED": "CALIBRÉE",
|
||||||
"CURATED": "SÉLECTIONNÉE",
|
"CURATED": "VÉRIFIÉE",
|
||||||
"RAW PRIOR": "ESTIM. INITIALE",
|
"RAW PRIOR": "ESTIM. INITIALE",
|
||||||
"CCTV ON": "CCTV ON",
|
"CCTV ON": "CCTV ON",
|
||||||
"CCTV OFF": "CCTV OFF",
|
"CCTV OFF": "CCTV OFF",
|
||||||
@@ -1651,17 +1651,17 @@
|
|||||||
"NO RECENT LOCATION MATCHES": "AUCUNE ACTU RÉCENTE POUR CE LIEU",
|
"NO RECENT LOCATION MATCHES": "AUCUNE ACTU RÉCENTE POUR CE LIEU",
|
||||||
"{domain} · {age}": "{domain} · {age}",
|
"{domain} · {age}": "{domain} · {age}",
|
||||||
"{value} KM/H": "{value} KM/H",
|
"{value} KM/H": "{value} KM/H",
|
||||||
"CLOUD {pct}%": "NUAGES {pct} %",
|
"CLOUD {pct}%": "NÉBULOSITÉ {pct} %",
|
||||||
"CLOUD UNKNOWN": "NUAGES INCONNUS",
|
"CLOUD UNKNOWN": "NÉBULOSITÉ INCONNUE",
|
||||||
"{source} · LOCATION QUERY": "{source} · REQUÊTE DE LIEU",
|
"{source} · LOCATION QUERY": "{source} · REQUÊTE DE LIEU",
|
||||||
"REGIONAL NEWS": "ACTUS RÉGIONALES",
|
"REGIONAL NEWS": "ACTUS RÉGIONALES",
|
||||||
"{label} · {radius} AIR/SEA WINDOW": "{label} · AIR/MER {radius}",
|
"{label} · {radius} AIR/SEA WINDOW": "{label} · AIR/MER {radius}",
|
||||||
"{scope} · INSTALLATIONS {coverage}": "{scope} · INSTALLATIONS : {coverage}",
|
"{scope} · INSTALLATIONS {coverage}": "{scope} · INSTALLATIONS : {coverage}",
|
||||||
"CONTEXT STANDBY": "CONTEXTE EN VEILLE",
|
"CONTEXT STANDBY": "CONTEXTE EN VEILLE",
|
||||||
"ENABLE GLOBAL CONTEXT FOR PROXIMITY PINGS": "ACTIVER LE CONTEXTE GLOBAL POUR LES PINGS DE PROXIMITÉ",
|
"ENABLE GLOBAL CONTEXT FOR PROXIMITY PINGS": "ACTIVER LE CONTEXTE GLOBAL POUR LES PINGS DE PROXIMITÉ",
|
||||||
"CONTACT LOST · LAST KNOWN READOUT · NOT AN ALL-CLEAR": "CONTACT PERDU · DERNIÈRE POSITION CONNUE · PAS UN FEU VERT",
|
"CONTACT LOST · LAST KNOWN READOUT · NOT AN ALL-CLEAR": "CONTACT PERDU · DERNIER RELEVÉ CONNU · PAS UN FEU VERT",
|
||||||
"CONTACT LOST · {subject}": "CONTACT PERDU · {subject}",
|
"CONTACT LOST · {subject}": "CONTACT PERDU · {subject}",
|
||||||
"SUBJECT LEFT ITS FEED · READOUT HOLDING LAST KNOWN": "SUJET SORTI DE SON FLUX · AFFICHAGE SUR LA DERNIÈRE POSITION CONNUE",
|
"SUBJECT LEFT ITS FEED · READOUT HOLDING LAST KNOWN": "CIBLE ABSENTE DU FLUX · DERNIER RELEVÉ CONSERVÉ",
|
||||||
"{cohort} · {contact}": "{cohort} · {contact}",
|
"{cohort} · {contact}": "{cohort} · {contact}",
|
||||||
"NO AVAILABLE EXAMPLE": "AUCUN EXEMPLE DISPONIBLE",
|
"NO AVAILABLE EXAMPLE": "AUCUN EXEMPLE DISPONIBLE",
|
||||||
"{cohort}, Unavailable": "{cohort}, indisponible",
|
"{cohort}, Unavailable": "{cohort}, indisponible",
|
||||||
@@ -1848,7 +1848,7 @@
|
|||||||
"{state} · {source} · {detail}": "{state} · {source} · {detail}",
|
"{state} · {source} · {detail}": "{state} · {source} · {detail}",
|
||||||
"never": "jamais",
|
"never": "jamais",
|
||||||
"{source} · {loadingLabel}": "{source} · {loadingLabel}",
|
"{source} · {loadingLabel}": "{source} · {loadingLabel}",
|
||||||
"{accepted} of {raw} records accepted": "{accepted} enregistrements acceptés sur {raw}",
|
"{accepted} of {raw} records accepted": "Enregistrements acceptés : {accepted} sur {raw}",
|
||||||
"incomplete snapshot": "instantané incomplet",
|
"incomplete snapshot": "instantané incomplet",
|
||||||
"{state} · {source} · {detail} · {ago}": "{state} · {source} · {detail} · {ago}",
|
"{state} · {source} · {detail} · {ago}": "{state} · {source} · {detail} · {ago}",
|
||||||
"{state} · {source} · {ago} · retrying in {seconds}s": "{state} · {source} · {ago} · nouvel essai dans {seconds} s",
|
"{state} · {source} · {ago} · retrying in {seconds}s": "{state} · {source} · {ago} · nouvel essai dans {seconds} s",
|
||||||
@@ -1980,7 +1980,7 @@
|
|||||||
"PLAY": "LIRE",
|
"PLAY": "LIRE",
|
||||||
"selected": "sélectionnée",
|
"selected": "sélectionnée",
|
||||||
"nearest": "la plus proche",
|
"nearest": "la plus proche",
|
||||||
"{action} {target} radio station": "{action} la station radio {target}",
|
"{action} {target} radio station": "{action} : station radio {target}",
|
||||||
"RADIO STATE UNCERTAIN": "ÉTAT RADIO INCERTAIN",
|
"RADIO STATE UNCERTAIN": "ÉTAT RADIO INCERTAIN",
|
||||||
"SYNCING DIRECTORY": "SYNCHRO DE L'ANNUAIRE",
|
"SYNCING DIRECTORY": "SYNCHRO DE L'ANNUAIRE",
|
||||||
"RADIO READY": "RADIO PRÊTE",
|
"RADIO READY": "RADIO PRÊTE",
|
||||||
@@ -2080,7 +2080,7 @@
|
|||||||
"start here": "commencer ici",
|
"start here": "commencer ici",
|
||||||
"No box": "Aucune zone",
|
"No box": "Aucune zone",
|
||||||
"Searching": "Recherche",
|
"Searching": "Recherche",
|
||||||
"Every day is empty here": "Tous les jours sont vides ici",
|
"Every day is empty here": "Aucune image trouvée ici",
|
||||||
"Sources off": "Sources désactivées",
|
"Sources off": "Sources désactivées",
|
||||||
"VS": "VS",
|
"VS": "VS",
|
||||||
"Not set": "Non défini",
|
"Not set": "Non défini",
|
||||||
@@ -2102,7 +2102,7 @@
|
|||||||
"Times, coverage, sources": "Heures, couverture, sources",
|
"Times, coverage, sources": "Heures, couverture, sources",
|
||||||
"HIDE EMPTY DAYS": "MASQUER LES JOURS VIDES",
|
"HIDE EMPTY DAYS": "MASQUER LES JOURS VIDES",
|
||||||
"SHOW EMPTY DAYS · {count}": "AFFICHER LES JOURS VIDES · {count}",
|
"SHOW EMPTY DAYS · {count}": "AFFICHER LES JOURS VIDES · {count}",
|
||||||
"Days the probe found empty in this box": "Jours que la sonde a trouvés vides dans cette zone",
|
"Days the probe found empty in this box": "Jours sans image trouvée dans cette zone",
|
||||||
"image": "image",
|
"image": "image",
|
||||||
"BASEMAP": "FOND DE CARTE",
|
"BASEMAP": "FOND DE CARTE",
|
||||||
"The basemap": "Le fond de carte",
|
"The basemap": "Le fond de carte",
|
||||||
@@ -2160,9 +2160,9 @@
|
|||||||
"LOAD FAILED": "ÉCHEC DU CHARGEMENT",
|
"LOAD FAILED": "ÉCHEC DU CHARGEMENT",
|
||||||
"LIVE DATA OFF": "DONNÉES EN DIRECT DÉSACTIVÉES",
|
"LIVE DATA OFF": "DONNÉES EN DIRECT DÉSACTIVÉES",
|
||||||
"MAPPED SITES LOADED": "SITES CARTOGRAPHIÉS CHARGÉS",
|
"MAPPED SITES LOADED": "SITES CARTOGRAPHIÉS CHARGÉS",
|
||||||
"RETRYING MAPPED SITES": "NOUVEL ESSAI SITES CARTOGRAPHIÉS",
|
"RETRYING MAPPED SITES": "NOUVEL ESSAI : SITES CARTOGRAPHIÉS",
|
||||||
"FETCHING MAPPED SITES": "RÉCUPÉRATION DES SITES CARTOGRAPHIÉS",
|
"FETCHING MAPPED SITES": "RÉCUPÉRATION DES SITES CARTOGRAPHIÉS",
|
||||||
"RETRYING ALPR CAMERAS": "NOUVEL ESSAI CAMÉRAS LAPI",
|
"RETRYING ALPR CAMERAS": "NOUVEL ESSAI : CAMÉRAS LAPI",
|
||||||
"FETCHING ALPR CAMERAS": "RÉCUPÉRATION DES CAMÉRAS LAPI",
|
"FETCHING ALPR CAMERAS": "RÉCUPÉRATION DES CAMÉRAS LAPI",
|
||||||
"OVERPASS TEMPORARILY UNAVAILABLE": "OVERPASS TEMPORAIREMENT INDISPONIBLE",
|
"OVERPASS TEMPORARILY UNAVAILABLE": "OVERPASS TEMPORAIREMENT INDISPONIBLE",
|
||||||
"OVERPASS RATE-LIMITED": "OVERPASS : LIMITE DE REQUÊTES ATTEINTE",
|
"OVERPASS RATE-LIMITED": "OVERPASS : LIMITE DE REQUÊTES ATTEINTE",
|
||||||
@@ -2374,10 +2374,10 @@
|
|||||||
"Gemini token response did not include a valid model": "La réponse de Gemini ne contenait pas de modèle valide",
|
"Gemini token response did not include a valid model": "La réponse de Gemini ne contenait pas de modèle valide",
|
||||||
"Gemini token response did not include session settings": "La réponse de Gemini ne contenait pas les paramètres de session",
|
"Gemini token response did not include session settings": "La réponse de Gemini ne contenait pas les paramètres de session",
|
||||||
"Gemini session settings do not match the input mode": "Les paramètres de session Gemini ne correspondent pas au mode de saisie",
|
"Gemini session settings do not match the input mode": "Les paramètres de session Gemini ne correspondent pas au mode de saisie",
|
||||||
"Requesting microphone": "Demande du microphone",
|
"Requesting microphone": "Demande d'accès au microphone",
|
||||||
"Gemini could not submit this input. Start voice again.": "Gemini n'a pas pu envoyer cette saisie. Relancez la voix.",
|
"Gemini could not submit this input. Start voice again.": "Gemini n'a pas pu envoyer cette saisie. Relancez la voix.",
|
||||||
"Connecting to Gemini": "Connexion à Gemini",
|
"Connecting to Gemini": "Connexion à Gemini",
|
||||||
"Ask or command": "Question ou ordre",
|
"Ask or command": "Question ou commande",
|
||||||
"Gemini returned an oversized message": "Gemini a renvoyé un message trop volumineux",
|
"Gemini returned an oversized message": "Gemini a renvoyé un message trop volumineux",
|
||||||
"Gemini Live connection failed. Check network access, then start voice again.": "Échec de la connexion à Gemini Live. Vérifiez l'accès au réseau, puis relancez la voix.",
|
"Gemini Live connection failed. Check network access, then start voice again.": "Échec de la connexion à Gemini Live. Vérifiez l'accès au réseau, puis relancez la voix.",
|
||||||
"Gemini Live connection ended. Start voice again for a new conversation.": "La connexion à Gemini Live est terminée. Relancez la voix pour une nouvelle conversation.",
|
"Gemini Live connection ended. Start voice again for a new conversation.": "La connexion à Gemini Live est terminée. Relancez la voix pour une nouvelle conversation.",
|
||||||
@@ -2394,7 +2394,7 @@
|
|||||||
"Gemini action history is full. Start voice again for a fresh session.": "L'historique des actions de Gemini est plein. Relancez la voix pour une nouvelle session.",
|
"Gemini action history is full. Start voice again for a fresh session.": "L'historique des actions de Gemini est plein. Relancez la voix pour une nouvelle session.",
|
||||||
"Gemini requested too many simultaneous actions": "Gemini a demandé trop d'actions simultanées",
|
"Gemini requested too many simultaneous actions": "Gemini a demandé trop d'actions simultanées",
|
||||||
"Running command": "Commande en cours",
|
"Running command": "Commande en cours",
|
||||||
"Voice text command is too long": "La commande vocale écrite est trop longue",
|
"Voice text command is too long": "La commande écrite est trop longue",
|
||||||
"Gemini voice is not connected": "La voix Gemini n'est pas connectée",
|
"Gemini voice is not connected": "La voix Gemini n'est pas connectée",
|
||||||
"Gemini interrupted input exceeded its buffer or wait limit. Start voice again.": "La saisie interrompue de Gemini a dépassé sa limite de tampon ou d'attente. Relancez la voix.",
|
"Gemini interrupted input exceeded its buffer or wait limit. Start voice again.": "La saisie interrompue de Gemini a dépassé sa limite de tampon ou d'attente. Relancez la voix.",
|
||||||
"Gemini Live connection is expiring. Start voice again for a new conversation.": "La connexion à Gemini Live expire. Relancez la voix pour une nouvelle conversation.",
|
"Gemini Live connection is expiring. Start voice again for a new conversation.": "La connexion à Gemini Live expire. Relancez la voix pour une nouvelle conversation.",
|
||||||
@@ -2523,7 +2523,7 @@
|
|||||||
"the flights layer loads by viewport": "la couche des vols se charge selon la vue",
|
"the flights layer loads by viewport": "la couche des vols se charge selon la vue",
|
||||||
"distance is ground distance, not overhead": "la distance est mesurée au sol jusqu'au point subsatellite, pas jusqu'au satellite",
|
"distance is ground distance, not overhead": "la distance est mesurée au sol jusqu'au point subsatellite, pas jusqu'au satellite",
|
||||||
"the count is a lower bound because at least one layer reached its retained limit.": "le décompte est un minimum, car au moins une couche a atteint sa limite de rétention.",
|
"the count is a lower bound because at least one layer reached its retained limit.": "le décompte est un minimum, car au moins une couche a atteint sa limite de rétention.",
|
||||||
"{label} off": "{label} : désactivé",
|
"{label} off": "Couche désactivée : {label}",
|
||||||
"{label} loading": "{label} : chargement",
|
"{label} loading": "{label} : chargement",
|
||||||
"{label} error": "{label} : erreur",
|
"{label} error": "{label} : erreur",
|
||||||
"counted the first {returned} loaded records": "{returned} premiers enregistrements chargés comptés",
|
"counted the first {returned} loaded records": "{returned} premiers enregistrements chargés comptés",
|
||||||
@@ -2576,7 +2576,7 @@
|
|||||||
"{name} is no longer loaded": "{name} n'est plus chargé",
|
"{name} is no longer loaded": "{name} n'est plus chargé",
|
||||||
"Unknown target layer: {target}": "Couche cible inconnue : {target}",
|
"Unknown target layer: {target}": "Couche cible inconnue : {target}",
|
||||||
"nominal": "nominal",
|
"nominal": "nominal",
|
||||||
"{label} on": "{label} : activé",
|
"{label} on": "Couche activée : {label}",
|
||||||
"Frame aircraft": "Cadrer les aéronefs",
|
"Frame aircraft": "Cadrer les aéronefs",
|
||||||
"Frame military aircraft": "Cadrer les aéronefs militaires",
|
"Frame military aircraft": "Cadrer les aéronefs militaires",
|
||||||
"Frame ships": "Cadrer les navires",
|
"Frame ships": "Cadrer les navires",
|
||||||
@@ -2693,7 +2693,7 @@
|
|||||||
"Recent speech": "Propos récents",
|
"Recent speech": "Propos récents",
|
||||||
"HERE": "ICI",
|
"HERE": "ICI",
|
||||||
"Aircraft cockpit view": "Vue cockpit de l'aéronef",
|
"Aircraft cockpit view": "Vue cockpit de l'aéronef",
|
||||||
"LEVEL": "NIVEAU",
|
"LEVEL": "HORIZON",
|
||||||
"Estimated destination direction": "Direction estimée de la destination",
|
"Estimated destination direction": "Direction estimée de la destination",
|
||||||
"DEST ---°": "DEST ---°",
|
"DEST ---°": "DEST ---°",
|
||||||
"OPTICAL PLANE · 01": "PLAN OPTIQUE · 01",
|
"OPTICAL PLANE · 01": "PLAN OPTIQUE · 01",
|
||||||
|
|||||||
@@ -9,6 +9,13 @@ import {
|
|||||||
/** Bind Radio input using a RadioControls receiver and supplied actions. */
|
/** Bind Radio input using a RadioControls receiver and supplied actions. */
|
||||||
export function bindRadioControls() {
|
export function bindRadioControls() {
|
||||||
if (!this._radioPanel) return;
|
if (!this._radioPanel) return;
|
||||||
|
// The markup's placeholder option is the station-tag "All"; markup cannot
|
||||||
|
// carry the 'radio tag' context the loaded list uses, so set it here.
|
||||||
|
const allTagOption = this._radioFilter?.querySelector?.(
|
||||||
|
'option[value="all"]',
|
||||||
|
);
|
||||||
|
if (allTagOption)
|
||||||
|
allTagOption.textContent = t('All', { context: 'radio tag' });
|
||||||
const tunerListenerOptions = {};
|
const tunerListenerOptions = {};
|
||||||
const setRadioDisclosure = (expanded, { returnFocus = false } = {}) => {
|
const setRadioDisclosure = (expanded, { returnFocus = false } = {}) => {
|
||||||
if (this.destroyed) return;
|
if (this.destroyed) return;
|
||||||
|
|||||||
@@ -122,7 +122,7 @@
|
|||||||
<button id="radio-enable-btn" class="panel-layer-toggle" type="button" aria-pressed="false" data-i18n>ENABLE</button>
|
<button id="radio-enable-btn" class="panel-layer-toggle" type="button" aria-pressed="false" data-i18n>ENABLE</button>
|
||||||
<label class="radio-filter-label" for="radio-filter" data-i18n>STATION TAG</label>
|
<label class="radio-filter-label" for="radio-filter" data-i18n>STATION TAG</label>
|
||||||
<select class="gev-field" id="radio-filter" aria-label="Filter stations by station tag" disabled data-i18n-aria-label>
|
<select class="gev-field" id="radio-filter" aria-label="Filter stations by station tag" disabled data-i18n-aria-label>
|
||||||
<option value="all" data-i18n>All</option>
|
<option value="all" data-i18n-runtime>All</option>
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
<div id="radio-station-card" class="radio-station-card" aria-live="polite">
|
<div id="radio-station-card" class="radio-station-card" aria-live="polite">
|
||||||
|
|||||||
+4
-1
@@ -963,7 +963,10 @@ export function progressStepLabel(step, label) {
|
|||||||
: step
|
: step
|
||||||
? spokenLabel(step, 24)
|
? spokenLabel(step, 24)
|
||||||
: t('Working');
|
: t('Working');
|
||||||
return label ? `${base}: ${spokenLabel(label, 32)}` : base;
|
// The join is a catalog string so each language spaces its colon.
|
||||||
|
return label
|
||||||
|
? t('{name}: {state}', { name: base, state: spokenLabel(label, 32) })
|
||||||
|
: base;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import {
|
|||||||
spokenLabel,
|
spokenLabel,
|
||||||
} from './speech.js';
|
} from './speech.js';
|
||||||
import { countWords, findHedges } from './speechLint.js';
|
import { countWords, findHedges } from './speechLint.js';
|
||||||
|
import { setLocale } from '../i18n/index.js';
|
||||||
|
|
||||||
function envelope(name, result, args) {
|
function envelope(name, result, args) {
|
||||||
return attachVoiceResult(name, result, args);
|
return attachVoiceResult(name, result, args);
|
||||||
@@ -459,3 +460,15 @@ test('labels are bounded and cleaned before they are spoken', () => {
|
|||||||
'background steps stay on screen',
|
'background steps stay on screen',
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('progress step labels join through the catalog colon', () => {
|
||||||
|
setLocale('fr');
|
||||||
|
try {
|
||||||
|
assert.equal(
|
||||||
|
progressStepLabel('resolve', 'Capitol'),
|
||||||
|
'Recherche de lieux\u202f: Capitol',
|
||||||
|
);
|
||||||
|
} finally {
|
||||||
|
setLocale('en');
|
||||||
|
}
|
||||||
|
});
|
||||||
Reference in new issue
Block a user