From 91a8e43e605de48d45bd7b5362bc566c3bbf59b4 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Fri, 15 Aug 2025 09:13:01 +0000 Subject: [PATCH] Translate weather conditions to French for better user experience Implement client-side translation for weather conditions in the WeatherWidget component, resolving issues with English text for current and previous year data. Replit-Commit-Author: Agent Replit-Commit-Session-Id: d43bd811-9372-45a7-8ac9-4a954c0538e1 Replit-Commit-Checkpoint-Type: full_checkpoint Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/1957c339-2757-4d1f-8e92-e9f71a1ce58e/d43bd811-9372-45a7-8ac9-4a954c0538e1/AtJHwYs --- attached_assets/image_1755249092274.png | Bin 0 -> 16297 bytes client/src/components/WeatherWidget.tsx | 36 ++++++++++++++++++++++-- 2 files changed, 33 insertions(+), 3 deletions(-) create mode 100644 attached_assets/image_1755249092274.png diff --git a/attached_assets/image_1755249092274.png b/attached_assets/image_1755249092274.png new file mode 100644 index 0000000000000000000000000000000000000000..aa3200ccf5d51ccd454f2f964495736ffdf5216c GIT binary patch literal 16297 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 iKYH~4|4FAGUtoM8P{ye+rG>ZG17su>CCbG literal 0 HcmV?d00001 diff --git a/client/src/components/WeatherWidget.tsx b/client/src/components/WeatherWidget.tsx index f50cc73..1a84bf8 100644 --- a/client/src/components/WeatherWidget.tsx +++ b/client/src/components/WeatherWidget.tsx @@ -23,6 +23,36 @@ interface WeatherResponse { +// Fonction de traduction française côté client comme sécurité +const translateToFrench = (condition: string): string => { + const conditionLower = condition.toLowerCase(); + + if (conditionLower.includes('clear')) return 'Dégagé'; + if (conditionLower.includes('sunny')) return 'Ensoleillé'; + if (conditionLower.includes('fair')) return 'Beau temps'; + if (conditionLower.includes('partly cloudy')) return 'Partiellement nuageux'; + if (conditionLower.includes('cloudy')) return 'Nuageux'; + if (conditionLower.includes('overcast')) return 'Couvert'; + if (conditionLower.includes('rain')) { + if (conditionLower.includes('heavy')) return 'Pluie forte'; + if (conditionLower.includes('light')) return 'Pluie légère'; + return 'Pluie'; + } + if (conditionLower.includes('shower')) return 'Averses'; + if (conditionLower.includes('drizzle')) return 'Bruine'; + if (conditionLower.includes('thunderstorm') || conditionLower.includes('thunder')) return 'Orage'; + if (conditionLower.includes('snow')) { + if (conditionLower.includes('heavy')) return 'Neige forte'; + if (conditionLower.includes('light')) return 'Neige légère'; + return 'Neige'; + } + if (conditionLower.includes('fog')) return 'Brouillard'; + if (conditionLower.includes('mist')) return 'Brume'; + if (conditionLower.includes('wind')) return 'Venteux'; + + return condition; // Si déjà en français ou inconnu +}; + const WeatherIcon = ({ condition, size = 20 }: { condition: string; size?: number }) => { // Utiliser des tailles fixes plutôt que dynamiques pour éviter les problèmes de Tailwind const getIconClass = (size: number) => { @@ -134,7 +164,7 @@ export default function WeatherWidget() { {location.split(',')[0]} - {weather.currentYear?.condition || 'Inconnu'} + {translateToFrench(weather.currentYear?.condition || 'Inconnu')} @@ -164,8 +194,8 @@ export default function WeatherWidget() {
Année dernière
-
- {weather.previousYear?.condition || ''} +
+ {translateToFrench(weather.previousYear?.condition || '')}