This commit is contained in:
Andras Schmelczer 2026-06-25 22:08:36 +01:00
parent c2c4ed6708
commit 2efa4d9f47
9 changed files with 1324 additions and 125 deletions

View file

@ -58,6 +58,8 @@ const fr: Translations = {
closePane: 'Fermer le panneau',
yes: 'Oui',
no: 'Non',
captions: 'Légendes',
sqm: 'm²',
},
// ── Header / Nav ───────────────────────────────────
@ -635,6 +637,10 @@ const fr: Translations = {
backToLogin: 'Retour à la connexion',
registerConsent:
'En créant un compte, vous acceptez nos <terms>Conditions dutilisation</terms> et notre <privacy>Politique de confidentialité</privacy>.',
loginFailed: 'Échec de la connexion',
registrationFailed: 'Échec de linscription',
oauthFailed: 'Échec de la connexion OAuth',
passwordResetFailed: 'Échec de la demande de réinitialisation du mot de passe',
},
// ── Upgrade Modal ──────────────────────────────────
@ -732,6 +738,11 @@ const fr: Translations = {
outstanding: 'Outstanding',
distance: 'Distance',
crimeType: 'Type dinfraction',
qualificationLevel: 'Niveau de qualification',
tenureType: 'Statut doccupation',
crimeWindow: 'Période',
crimeWindow7y: '7 ans',
crimeWindow2y: '2 ans',
ethnicity: 'Origine ethnique',
poiType: 'Type de point dintérêt',
party: 'Parti',
@ -822,6 +833,7 @@ const fr: Translations = {
refiningResults: 'Affinage des résultats...',
weeklyLimitReached:
'Vous avez atteint la limite hebdomadaire dutilisation de lIA. Elle se réinitialisera automatiquement la semaine prochaine.',
generateFailed: 'Échec de la génération des filtres',
},
// ── Map Legend ─────────────────────────────────────
@ -841,6 +853,18 @@ const fr: Translations = {
ogSchools: 'Écoles',
ogCrimeStats: 'Criminalité',
ogTransport: 'Transports',
basemap: { standard: 'Carte', satellite: 'Satellite' },
error: {
heading: 'La carte a rencontré un problème',
body: 'Cela peut se produire lorsque le contexte graphique de votre navigateur est interrompu.',
reload: 'Recharger la carte',
},
actualListings: {
label: 'Annonces',
show: 'Afficher les annonces réelles',
hide: 'Masquer les annonces réelles',
},
poi: { zoomInToSeeDetails: 'Zoomez pour voir les détails' },
},
// ── Properties Pane ────────────────────────────────
@ -919,6 +943,20 @@ const fr: Translations = {
crimeDataEnds: "Les données de police pour cette zone s'arrêtent en {{year}}",
residents: 'Habitants',
residentsTooltip: 'Résidents habituels (recensement ONS 2021)',
crimeWindow7y: 'Ces 7 dernières années',
crimeWindow2y: 'Ces 2 dernières années',
crimeWindowLabel: 'Période',
crimeCardTitle: '{{name}} par an',
crimeRecordsToggle: 'Afficher les infractions individuelles',
crimeRecordsHide: 'Masquer les infractions individuelles',
crimeRecordsCount: '{{count}} infractions',
crimeRecordsLoading: 'Chargement des infractions…',
crimeRecordsEmpty: 'Aucune infraction individuelle enregistrée',
crimeRecordsError: 'Impossible de charger les infractions',
crimeRecordsLoadMore: 'Charger plus',
crimeNoLocation: 'Lieu non communiqué',
crimeOutcomeUnknown: 'Résultat non enregistré',
crimeYearPointTooltip: '{{year}} : {{rate}}/an',
},
// ── Street View ────────────────────────────────────
@ -943,6 +981,7 @@ const fr: Translations = {
searchOn: 'Rechercher dans un rayon de {{radius}} sur',
exact: 'exact',
outcodeNotRecognised: 'Code postal non reconnu',
radiusMi: 'rayon de {{count}} mi',
},
// ── Location Search ────────────────────────────────
@ -999,6 +1038,7 @@ const fr: Translations = {
showcaseJourneyRoutes: 'Itinéraires',
showcaseNearby: '{{value}} à proximité',
showcasePoliticalVoteShare: 'Répartition des voix',
showcaseGe2024: 'Législatives 2024',
showcaseLotsMore: '...et bien plus',
showcaseMinutes: '{{count}} min',
showcaseSendShortlist: 'Envoyer la sélection',
@ -1435,6 +1475,8 @@ const fr: Translations = {
noShareLinksYet: 'Aucun lien partagé pour linstant',
copyShareLink: 'Copier le lien partagé',
clicksLabel: 'clics',
fetchShareLinksError: 'Échec de la récupération des liens partagés',
updateNewsletterError: 'Échec de la mise à jour de la newsletter',
},
// ── Saved Page ─────────────────────────────────────
@ -1450,6 +1492,12 @@ const fr: Translations = {
'Êtes-vous sûr de vouloir supprimer cette recherche enregistrée ? Cette action est irréversible.',
isBeingUpdated: 'Mise à jour de <strong>{{name}}</strong>',
updating: 'Mise à jour...',
loadFailed: 'Échec du chargement des recherches',
saveFailed: 'Échec de lenregistrement de la recherche',
deleteFailed: 'Échec de la suppression de la recherche',
updateNotesFailed: 'Échec de la mise à jour des notes',
updateNameFailed: 'Échec de la mise à jour du nom',
updateFailed: 'Échec de la mise à jour de la recherche',
},
// ── Invites Page ───────────────────────────────────
@ -1470,6 +1518,7 @@ const fr: Translations = {
created: 'Créé',
redeemed: 'Utilisé',
pending: 'En attente',
createInviteError: 'Échec de la création de linvitation',
},
// ── Invite Page ────────────────────────────────────
@ -1496,6 +1545,105 @@ const fr: Translations = {
youAlreadyHaveLicense: 'Vous avez déjà une licence',
accountHasFullAccess: 'Votre compte dispose déjà dun accès complet.',
failedToValidate: 'Échec de la validation du lien dinvitation',
redeemFailed: 'Échec de lutilisation de linvitation',
},
// ── Errors ─────────────────────────────────────────
errors: {
appCrashTitle: 'Une erreur est survenue',
appCrashBody: 'Actualisez la page pour réessayer.',
},
// ── Listing ────────────────────────────────────────
listing: {
viewed: 'Consulté',
openListing: 'Ouvrir lannonce',
listings: 'annonces',
listing: 'Annonce',
showingOf: 'Affichage de {{visible}} sur {{count}}',
groupedNear: 'Regroupées près de cette position sur la carte',
},
// ── Overlays ───────────────────────────────────────
overlays: {
heading: 'Calques',
baseMap: 'Fond de carte',
colourOpacity: 'Opacité des couleurs',
dataOverlays: 'Calques de données',
about: 'À propos de {{name}}',
zoomWarning: 'Zoomez davantage pour voir le calque sélectionné.',
zoomWarning_other: 'Zoomez davantage pour voir les calques sélectionnés.',
noise: {
label: 'Bruit',
detail:
'Cartographie stratégique du bruit Defra, 4ᵉ cycle (2022), combinant les sources routières, ferroviaires et aéroportuaires. Les valeurs correspondent à lindicateur Lden standard de lEU (moyenne pondérée sur 24 heures jour-soir-nuit), modélisé sur une grille de 10 m à 4 m au-dessus du sol. Les zones plus claires indiquent un bruit modélisé plus élevé. Sous licence Open Government Licence v3.0.',
},
crimeHotspots: {
label: 'Points chauds de criminalité',
detail:
'Carte de chaleur générée côté client des délits de proximité publiés par police.uk au cours des mois les plus récents. Les coordonnées de police.uk sont des points anonymisés calés sur une grille, et non les lieux exacts des infractions ; la carte de chaleur doit donc être lue comme une approximation de la densité relative plutôt que comme une carte précise des incidents.',
},
treesOutsideWoodlands: {
label: 'Arbres et boisements',
detail:
'Polygones de canopée Forest Research Trees Outside Woodland (TOW) v1 — arbres isolés et groupes darbres — fusionnés avec les blocs boisés du National Forest Inventory (NFI) (≥0,5 ha) que TOW exclut délibérément. Ensemble, ils couvrent à la fois les arbres de rue et les véritables bois. Lopacité des polygones varie selon la surface de canopée.',
},
propertyBorders: {
label: 'Limites de propriété',
detail:
'INSPIRE Index Polygons du HM Land Registry — la position et létendue indicative des biens en pleine propriété (freehold) enregistrés en Angleterre et au pays de Galles, tracés en contours au niveau de la rue. Il sagit de « limites générales » fournies à titre indicatif uniquement, et non de la limite légale précise dun bien ; elles excluent les intérêts uniquement en location longue durée (leasehold) et les terrains non enregistrés (environ 85 à 90 % des terrains en pleine propriété sont couverts). Ces informations sont soumises au Crown copyright et aux droits sur les bases de données 2026 et sont reproduites avec lautorisation du HM Land Registry. Les polygones (y compris la géométrie associée, à savoir les coordonnées x, y) sont soumis au Crown copyright et aux droits sur les bases de données 2026 Ordnance Survey AC0000851063. Sous licence Open Government Licence v3.0.',
},
newDevelopments: {
label: 'Nouveaux développements',
detail:
'Un pipeline prospectif de nouveaux logements. Les repères bleus signalent les sites des registres statutaires des terrains en friche (Brownfield Land) du MHCLG — chacun assorti dune capacité nette estimée en logements et dun statut de permis de construire — ainsi que les sites de cession du Homes England Land Hub. Ils indiquent où de nouveaux logements sont prévus, souvent des années avant quils napparaissent dans les registres EPC ou de ventes. Les chiffres de logements sont des estimations de capacité, et non des engagements, et un site inscrit à un registre est une opportunité plutôt quune garantie de construction. Sous licence Open Government Licence v3.0.',
},
},
// ── Crime Types ────────────────────────────────────
crimeTypes: {
violenceAndSexualOffences: 'Violences et infractions sexuelles',
antiSocialBehaviour: 'Comportement antisocial',
criminalDamageAndArson: 'Dégradations et incendies volontaires',
publicOrder: 'Atteintes à lordre public',
shoplifting: 'Vol à létalage',
vehicleCrime: 'Délits liés aux véhicules',
burglary: 'Cambriolage',
otherTheft: 'Autres vols',
theftFromThePerson: 'Vol à la tire',
bicycleTheft: 'Vol de vélo',
drugs: 'Stupéfiants',
robbery: 'Vol avec violence',
possessionOfWeapons: 'Port darmes',
otherCrime: 'Autres délits',
},
// ── Journey ────────────────────────────────────────
journey: {
bus: 'Bus',
lineSuffix: 'ligne',
},
// ── POI Popup ──────────────────────────────────────
poiPopup: {
school: {
capacity: 'Capacité',
type: 'Type',
ages: 'Âges',
gender: 'Mixité',
pupilsLabel: 'Élèves',
pupils: 'élèves',
freeMeal: 'Repas gratuit',
ofsted: 'Ofsted',
sixthForm: 'Lycée (sixth form)',
religion: 'Religion',
admissions: 'Admissions',
trust: 'Trust',
address: 'Adresse',
localAuthority: 'LA',
head: 'Directeur',
website: 'Site web',
},
},
// ── Format / Time ──────────────────────────────────
@ -1538,6 +1686,9 @@ const fr: Translations = {
step6Title: 'Quy a-t-il à proximité ?',
step6Content:
'Activez les écoles, commerces, gares, parcs et restaurants sur la carte pour voir ce qui est à portée.',
step7Title: 'Ajoutez du contexte',
step7Content:
'Activez des calques comme les points chauds de criminalité, le bruit, la couverture arborée, les limites de propriété et les nouveaux programmes immobiliers, et changez de fond de carte selon vos besoins.',
},
// ── Server-derived values ──────────────────────────
@ -1595,23 +1746,70 @@ const fr: Translations = {
'Housing Conditions Score': 'Score des conditions de logement',
'Air Quality and Road Safety Score': 'Score qualité de lair et sécurité routière',
// ─ Feature names (Crime) ─
'Serious crime (avg/yr)': 'Infractions graves (densité)',
'Minor crime (avg/yr)': 'Infractions mineures (densité)',
'Violence and sexual offences (avg/yr)': 'Violences et infractions sexuelles (densité)',
'Burglary (avg/yr)': 'Cambriolages (densité)',
'Robbery (avg/yr)': 'Vols avec violence (densité)',
'Vehicle crime (avg/yr)': 'Infractions liées aux véhicules (densité)',
'Anti-social behaviour (avg/yr)': 'Comportements antisociaux (densité)',
'Criminal damage and arson (avg/yr)': 'Dégradations et incendies criminels (densité)',
'Other theft (avg/yr)': 'Autres vols (densité)',
'Theft from the person (avg/yr)': 'Vols à la personne (densité)',
'Shoplifting (avg/yr)': 'Vols à létalage (densité)',
'Bicycle theft (avg/yr)': 'Vols de vélos (densité)',
'Drugs (avg/yr)': 'Infractions liées aux stupéfiants (densité)',
'Possession of weapons (avg/yr)': 'Possession darmes (densité)',
'Public order (avg/yr)': 'Troubles à lordre public (densité)',
'Other crime (avg/yr)': 'Autres infractions (densité)',
// ─ Feature names (Crime) — taux normalisé par population, 7 ans & 2 ans ─
'Serious crime (/yr, 7y)': 'Infractions graves (par an, 7 ans)',
'Serious crime (/yr, 2y)': 'Infractions graves (par an, 2 ans)',
'Minor crime (/yr, 7y)': 'Infractions mineures (par an, 7 ans)',
'Minor crime (/yr, 2y)': 'Infractions mineures (par an, 2 ans)',
'Violence and sexual offences (/yr, 7y)':
'Violences et infractions sexuelles (par an, 7 ans)',
'Violence and sexual offences (/yr, 2y)':
'Violences et infractions sexuelles (par an, 2 ans)',
'Burglary (/yr, 7y)': 'Cambriolages (par an, 7 ans)',
'Burglary (/yr, 2y)': 'Cambriolages (par an, 2 ans)',
'Robbery (/yr, 7y)': 'Vols avec violence (par an, 7 ans)',
'Robbery (/yr, 2y)': 'Vols avec violence (par an, 2 ans)',
'Vehicle crime (/yr, 7y)':
'Infractions liées aux véhicules (par an, 7 ans)',
'Vehicle crime (/yr, 2y)':
'Infractions liées aux véhicules (par an, 2 ans)',
'Anti-social behaviour (/yr, 7y)':
'Comportements antisociaux (par an, 7 ans)',
'Anti-social behaviour (/yr, 2y)':
'Comportements antisociaux (par an, 2 ans)',
'Criminal damage and arson (/yr, 7y)':
'Dégradations et incendies criminels (par an, 7 ans)',
'Criminal damage and arson (/yr, 2y)':
'Dégradations et incendies criminels (par an, 2 ans)',
'Other theft (/yr, 7y)': 'Autres vols (par an, 7 ans)',
'Other theft (/yr, 2y)': 'Autres vols (par an, 2 ans)',
'Theft from the person (/yr, 7y)':
'Vols à la personne (par an, 7 ans)',
'Theft from the person (/yr, 2y)':
'Vols à la personne (par an, 2 ans)',
'Shoplifting (/yr, 7y)': 'Vols à létalage (par an, 7 ans)',
'Shoplifting (/yr, 2y)': 'Vols à létalage (par an, 2 ans)',
'Bicycle theft (/yr, 7y)': 'Vols de vélos (par an, 7 ans)',
'Bicycle theft (/yr, 2y)': 'Vols de vélos (par an, 2 ans)',
'Drugs (/yr, 7y)':
'Infractions liées aux stupéfiants (par an, 7 ans)',
'Drugs (/yr, 2y)':
'Infractions liées aux stupéfiants (par an, 2 ans)',
'Possession of weapons (/yr, 7y)':
'Possession darmes (par an, 7 ans)',
'Possession of weapons (/yr, 2y)':
'Possession darmes (par an, 2 ans)',
'Public order (/yr, 7y)':
'Troubles à lordre public (par an, 7 ans)',
'Public order (/yr, 2y)':
'Troubles à lordre public (par an, 2 ans)',
'Other crime (/yr, 7y)': 'Autres infractions (par an, 7 ans)',
'Other crime (/yr, 2y)': 'Autres infractions (par an, 2 ans)',
// Libellés de type dinfraction seuls (ventilation par type + liste des enregistrements).
// (« Burglary » est déjà défini parmi les infractions spécifiques ci-dessous.)
'Violence and sexual offences': 'Violences et infractions sexuelles',
Robbery: 'Vols avec violence',
'Vehicle crime': 'Infractions liées aux véhicules',
'Anti-social behaviour': 'Comportements antisociaux',
'Criminal damage and arson': 'Dégradations et incendies criminels',
'Other theft': 'Autres vols',
'Theft from the person': 'Vols à la personne',
Shoplifting: 'Vols à létalage',
'Bicycle theft': 'Vols de vélos',
Drugs: 'Infractions liées aux stupéfiants',
'Possession of weapons': 'Possession darmes',
'Public order': 'Troubles à lordre public',
'Other crime': 'Autres infractions',
// ─ Feature names (Neighbours) ─
'Median age': 'Âge médian',