Skip to content

Commit 1aef27d

Browse files
authored
Merge branch 'emsesp:dev' into dev
2 parents 1e78979 + 6dff113 commit 1aef27d

File tree

8 files changed

+889
-571
lines changed

8 files changed

+889
-571
lines changed

CHANGELOG_LATEST.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99

1010
## Added
1111

12-
- Translations in Web UI and all device entity names (DE, NL, SE, PL, NO) [#22](https://github.com/emsesp/EMS-ESP32/issues/22)
12+
- Translations in Web UI and all device entity names (DE, NL, SE, PL, NO, FR) [#22](https://github.com/emsesp/EMS-ESP32/issues/22)
1313
- Add support for Lolin C3 mini [#620](https://github.com/emsesp/EMS-ESP32/pull/620)
1414
- Add support for ESP32-S2 [#667](https://github.com/emsesp/EMS-ESP32/pull/667)
1515
- Add devices: Greenstar 30Ri boiler, Junkers FW500 thermostat, Buderus BC30 controller

interface/src/SignIn.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import { ReactComponent as GBflag } from './i18n/GB.svg';
2424
import { ReactComponent as SEflag } from './i18n/SE.svg';
2525
import { ReactComponent as PLflag } from './i18n/PL.svg';
2626
import { ReactComponent as NOflag } from './i18n/NO.svg';
27+
import { ReactComponent as FRflag } from './i18n/FR.svg';
2728

2829
const SignIn: FC = () => {
2930
const authenticationContext = useContext(AuthenticationContext);
@@ -133,6 +134,10 @@ const SignIn: FC = () => {
133134
<NOflag style={{ width: 24 }} />
134135
&nbsp;NO
135136
</Button>
137+
<Button size="small" variant={locale === 'fr' ? 'contained' : 'outlined'} onClick={() => selectLocale('fr')}>
138+
<FRflag style={{ width: 24 }} />
139+
&nbsp;FR
140+
</Button>
136141
</Box>
137142

138143
<ValidatedTextField

interface/src/components/layout/LayoutAuthMenu.tsx

+5
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ import { ReactComponent as GBflag } from '../../i18n/GB.svg';
2929
import { ReactComponent as SEflag } from '../../i18n/SE.svg';
3030
import { ReactComponent as PLflag } from '../../i18n/PL.svg';
3131
import { ReactComponent as NOflag } from '../../i18n/NO.svg';
32+
import { ReactComponent as FRflag } from '../../i18n/FR.svg';
3233

3334
const ItemTypography = styled(Typography)<TypographyProps>({
3435
maxWidth: '250px',
@@ -97,6 +98,10 @@ const LayoutAuthMenu: FC = () => {
9798
<NOflag style={{ width: 16, verticalAlign: 'middle' }} />
9899
&nbsp;NO
99100
</MenuItem>
101+
<MenuItem key="fr" value="fr">
102+
<FRflag style={{ width: 16, verticalAlign: 'middle' }} />
103+
&nbsp;FR
104+
</MenuItem>
100105
</TextField>
101106

102107
<IconButton

interface/src/i18n/FR.svg

+1
Loading

interface/src/i18n/fr/index.ts

+304
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,304 @@
1+
import type { Translation } from '../i18n-types';
2+
/* prettier-ignore */
3+
/* eslint-disable */
4+
5+
const fr: Translation = {
6+
LANGUAGE: 'Langue',
7+
RETRY: 'Réessayer',
8+
LOADING: 'Chargement',
9+
IS_REQUIRED: '{0} est requis',
10+
SIGN_IN: 'Se connecter',
11+
SIGN_OUT: 'Se déconnecter',
12+
USERNAME: 'Nom d\'utilisateur',
13+
PASSWORD: 'Mot de passe',
14+
SU_PASSWORD: 'Mot de passe su',
15+
DASHBOARD: 'Tableau de bord',
16+
SETTINGS_OF: 'Paramètres {0}',
17+
SAVED: 'sauvegardé',
18+
HELP_OF: 'Aide {0}',
19+
LOGGED_IN: 'Connecté en tant que {name}',
20+
PLEASE_SIGNIN: 'Veuillez vous connecter pour continuer',
21+
UPLOAD_SUCCESSFUL: 'Upload terminée',
22+
DOWNLOAD_SUCCESSFUL: 'Téléchargement terminé',
23+
INVALID_LOGIN: 'Informations de connexion invalides',
24+
NETWORK: 'Réseau',
25+
SECURITY: 'Sécurité',
26+
ONOFF_CAP: 'ON/OFF',
27+
ONOFF: 'on/off',
28+
TYPE: 'Type',
29+
DESCRIPTION: 'Description',
30+
ENTITIES: 'Entités',
31+
REFRESH: 'Rafraîchir',
32+
EXPORT: 'Exporter',
33+
DEVICE_DETAILS: 'Détails de l\'appareil',
34+
ID_OF: 'ID {0}',
35+
DEVICE: 'Appareil',
36+
PRODUCT: 'Produit',
37+
VERSION: 'Version',
38+
BRAND: 'Marque',
39+
ENTITY_NAME: 'Nom de l\'entité',
40+
VALUE: 'Valeur',
41+
SHOW_FAV: 'ne montrer que les favoris',
42+
DEVICE_SENSOR_DATA: 'Données des appareils et capteurs',
43+
DEVICES_SENSORS: 'Appareils et capteurs',
44+
ATTACHED_SENSORS: 'Capteurs EMS-ESP connectés',
45+
RUN_COMMAND: 'Lancer une commande',
46+
CHANGE_VALUE: 'Changer la valeur',
47+
CANCEL: 'Annuler',
48+
RESET: 'Réinitialiser',
49+
SEND: 'Envoyer',
50+
SAVE: 'Sauvegarder',
51+
REMOVE: 'Enlever',
52+
PROBLEM_UPDATING: 'Problème lors de la mise à jour',
53+
PROBLEM_LOADING: 'Problème lors du chargement',
54+
ACCESS_DENIED: 'Accès refusé',
55+
ANALOG_SENSOR: 'Capteur analogique',
56+
ANALOG_SENSORS: 'Capteurs analogiques',
57+
UPDATED_OF: '{0} mis à jour',
58+
UPDATE_OF: 'Mise à jour de {0}',
59+
REMOVED_OF: '{0} enlevé',
60+
DELETION_OF: '{0} supprimé',
61+
OFFSET: 'Offset',
62+
FACTOR: 'Facteur',
63+
FREQ: 'Fréquence',
64+
DUTY_CYCLE: 'Cycle de fonctionnement',
65+
UNIT: 'Unité',
66+
STARTVALUE: 'Valeur de départ',
67+
WARN_GPIO: 'Attention: soyez vigilant en choisissant un GPIO!',
68+
EDIT: 'Éditer',
69+
SENSOR: 'Capteur',
70+
TEMP_SENSOR: 'Capteur de température',
71+
TEMP_SENSORS: 'Capteurs de température',
72+
WRITE_COMMAND: 'Envoyer la commande {cmd}',
73+
EMS_BUS_WARNING: 'Bus EMS déconnecté. Si ce message persiste après quelques secondes, vérifiez les paramètres et la configuration de la carte.',
74+
EMS_BUS_SCANNING: 'Scan des appareils EMS...',
75+
CONNECTED: 'Connecté',
76+
TX_ISSUES: 'Problèmes de transmission (Tx) - Essayez un autre mode Tx',
77+
DISCONNECTED: 'Déconnecté',
78+
EMS_SCAN: 'Etes-vous sûr de vouloir lancer un scan complet du bus EMS ?',
79+
EMS_BUS_STATUS: 'Statut du bus EMS',
80+
ACTIVE_DEVICES: 'Appareils et capteurs actifs',
81+
EMS_DEVICE: 'Appareils EMS',
82+
SUCCESS: 'SUCCÈS',
83+
FAIL: 'ÉCHEC',
84+
QUALITY: 'QUALITÉ',
85+
SCAN_DEVICES: 'Rechercher de nouveaux appareils',
86+
EMS_BUS_STATUS_TITLE: 'Statut du bus et de l\'activité EMS',
87+
SCAN: 'Scan',
88+
STATUS_NAMES: [
89+
'Télégrammes EMS reçus (Rx)',
90+
'Lectures EMS (Tx)',
91+
'Écritures EMS (Tx)',
92+
'Lectures capteurs de température',
93+
'Lectures capteurs analogiques',
94+
'Publications MQTT',
95+
'Appels à l\'API',
96+
'Messages Syslog'
97+
],
98+
NUM_DEVICES: '{num} Appareil{{s}}',
99+
NUM_TEMP_SENSORS: '{num} Capteur{{s}} de température',
100+
NUM_ANALOG_SENSORS: '{num} Capteur{{s}} analogique{{s}}',
101+
NUM_DAYS: '{num} jour{{s}}',
102+
NUM_SECONDS: '{num} seconde{{s}}',
103+
NUM_HOURS: '{num} heure{{s}}',
104+
NUM_MINUTES: '{num} minute{{s}}',
105+
APPLICATION_SETTINGS: 'Paramètres de l\'application',
106+
CUSTOMIZATION: 'Personnalisation',
107+
APPLICATION_RESTARTING: 'EMS-ESP redémarre',
108+
INTERFACE_BOARD_PROFILE: 'Profile de carte d\'interface',
109+
BOARD_PROFILE_TEXT: 'Sélectionnez un profil de carte d\'interface préconfiguré dans la liste ci-dessous ou choisissez Personnalisé pour configurer vos propres paramètres matériels',
110+
BOARD_PROFILE: 'Profil de carte',
111+
CUSTOM: 'Personnalisé',
112+
GPIO_OF: 'GPIO {0}',
113+
BUTTON: 'Bouton',
114+
TEMPERATURE: 'Température',
115+
PHY_TYPE: 'Eth PHY Type',
116+
DISABLED: 'désactivé',
117+
TX_MODE: 'Tx Mode',
118+
HARDWARE: 'Hardware',
119+
EMS_BUS: '{{BUS|EMS BUS}}',
120+
GENERAL_OPTIONS: 'Options générales',
121+
LANGUAGE_ENTITIES: 'Langue (pour les entités du matériel)',
122+
HIDE_LED: 'Cacher la LED',
123+
ENABLE_TELNET: 'Activer la console Telnet',
124+
ENABLE_ANALOG: 'Activer les capteurs analogiques',
125+
CONVERT_FAHRENHEIT: 'Convertir les températures en Fahrenheit',
126+
BYPASS_TOKEN: 'Contourner l\'autorisation du jeton d\'accès sur les appels API',
127+
READONLY: 'Activer le mode lecture uniquement (bloque toutes les commandes EMS sortantes en écriture Tx)',
128+
UNDERCLOCK_CPU: 'Underclock du CPU',
129+
ENABLE_SHOWER_TIMER: 'Activer la minuterie de la douche',
130+
ENABLE_SHOWER_ALERT: 'Activer les alertes de durée de douche',
131+
TRIGGER_TIME: 'Durée avant déclenchement',
132+
COLD_SHOT_DURATION: 'Durée du coup d\'eau froide',
133+
FORMATTING_OPTIONS: 'Options de mise en forme',
134+
BOOLEAN_FORMAT_DASHBOARD: 'Tableau de bord du format booléen',
135+
BOOLEAN_FORMAT_API: 'Format booléen API/MQTT',
136+
ENUM_FORMAT: 'Format enum API/MQTT',
137+
INDEX: 'Index',
138+
ENABLE_PARASITE: 'Activer la puissance parasite',
139+
LOGGING: 'Journal',
140+
LOG_HEX: 'Enregistrer les télégrammes EMS en hexadécimal',
141+
ENABLE_SYSLOG: 'Activer les logs système',
142+
LOG_LEVEL: 'Niveau de log',
143+
MARK_INTERVAL: 'Intervalle de marquage',
144+
SECONDS: 'secondes',
145+
MINUTES: 'minutes',
146+
HOURS: 'heures',
147+
RESTART: 'Redémarrer',
148+
RESTART_TEXT: 'EMS-ESP a besoin de redémarrer pour appliquer les changements de paramètres du système',
149+
RESTART_CONFIRM: 'Etes-vous sûr de vouloir redémarrer EMS-ESP ?',
150+
COMMAND: 'Commande',
151+
CUSTOMIZATIONS_RESTART: 'Toutes les personnalisations ont été supprimées. Redémarrage...',
152+
CUSTOMIZATIONS_FULL: 'Les entités sélectionnées ont dépassé la limite. Veuillez sauvegarder par lots',
153+
CUSTOMIZATIONS_SAVED: 'Personnalisations enregistrées',
154+
CUSTOMIZATIONS_HELP_1: 'Sélectionnez un appareil et personnalisez les options des entités ou cliquez pour renommer',
155+
CUSTOMIZATIONS_HELP_2: 'marquer comme favori',
156+
CUSTOMIZATIONS_HELP_3: 'désactiver l\'action d\'écriture',
157+
CUSTOMIZATIONS_HELP_4: 'exclure de MQTT et de l\'API',
158+
CUSTOMIZATIONS_HELP_5: 'cacher du Tableau de bord',
159+
SELECT_DEVICE: 'Sélectionnez un appareil',
160+
SET_ALL: 'tout régler',
161+
OPTIONS: 'Options',
162+
NAME: 'Nom',
163+
CUSTOMIZATIONS_RESET: 'Êtes-vous sûr de vouloir supprimer toutes les personnalisations, y compris les paramètres personnalisés des capteurs de température et analogiques ?',
164+
DEVICE_ENTITIES: 'Entités de l\'appareil',
165+
USER_CUSTOMIZATION: 'Personnalisation de l\'utilisateur',
166+
SUPPORT_INFORMATION: 'Information de support',
167+
CLICK_HERE: 'Cliquez ici',
168+
HELP_INFORMATION_1: 'Visitez le wiki en ligne pour obtenir des instructions sur la façon de configurer EMS-ESP.',
169+
HELP_INFORMATION_2: 'Pour une discussion en direct avec la communauté, rejoignez notre serveur Discord',
170+
HELP_INFORMATION_3: 'Pour demander une fonctionnalité ou signaler un problème',
171+
HELP_INFORMATION_4: 'n\'oubliez pas de télécharger et de joindre les informations relatives à votre système pour obtenir une réponse plus rapide lorsque vous signalez un problème',
172+
HELP_INFORMATION_5: 'EMS-ESP est un projet libre et open-source. Merci de soutenir son développement futur en lui donnant une étoile sur Github !',
173+
SUPPORT_INFO: 'Information de support',
174+
UPLOAD_OF: 'Upload de {0}',
175+
UPLOAD: 'Upload',
176+
DOWNLOAD: 'Download',
177+
ABORTED: 'annulé',
178+
FAILED: 'échoué',
179+
SUCCESSFUL: 'réussi',
180+
SYSTEM: 'Système',
181+
LOG_OF: '{0} Log',
182+
STATUS_OF: 'Statut {0}',
183+
UPLOAD_DOWNLOAD: 'Upload/Download',
184+
SYSTEM_VERSION_RUNNING: 'Vous utilisez actuellement la version',
185+
SYSTEM_APPLY_FIRMWARE: 'pour appliquer le nouveau firmware',
186+
CLOSE: 'Fermer',
187+
USE: 'Utiliser',
188+
FACTORY_RESET: 'Réinitialisation',
189+
SYSTEM_FACTORY_TEXT: 'L\'appareil a été réinitialisé et va maintenant redémarrer',
190+
SYSTEM_FACTORY_TEXT_DIALOG: 'Êtes-vous sûr de vouloir réinitialiser l\'appareil à ses paramètres d\'usine ?',
191+
VERSION_CHECK: 'Vérification de la version',
192+
THE_LATEST: 'La dernière',
193+
OFFICIAL: 'officielle',
194+
DEVELOPMENT: 'développement',
195+
VERSION_IS: 'version est',
196+
RELEASE_NOTES: 'notes de version',
197+
EMS_ESP_VER: 'Version EMS-ESP',
198+
PLATFORM: 'Appareil (Plateforme / SDK)',
199+
UPTIME: 'Durée de fonctionnement du système',
200+
CPU_FREQ: 'Fréquence du CPU',
201+
HEAP: 'Heap (Libre / Max Allouée)',
202+
PSRAM: 'PSRAM (Taille / Libre)',
203+
FLASH: 'Flash Chip (Taille / Vitesse)',
204+
APPSIZE: 'Application (Utilisée / Libre)',
205+
FILESYSTEM: 'File System (Utilisée / Libre)',
206+
BUFFER_SIZE: 'Taille du buffer',
207+
COMPACT: 'Compact',
208+
ENABLE_OTA: 'Activer les updates OTA',
209+
DOWNLOAD_CUSTOMIZATION_TEXT: 'Télécharger les personnalisations d\'entités',
210+
DOWNLOAD_SETTINGS_TEXT: 'Téléchargez les paramètres de l\'application. Soyez prudent lorsque vous partagez vos paramètres car ce fichier contient des mots de passe et d\'autres informations système sensibles.',
211+
UPLOAD_TEXT: 'Téléchargez un nouveau fichier de firmware (.bin), un fichier de paramètres ou de personnalisations (.json) ci-dessous, pour une validation optionnelle téléchargez d\'abord un fichier (.md5)',
212+
UPLOADING: 'Téléchargement',
213+
UPLOAD_DROP_TEXT: 'Déposer le fichier ou cliquer ici',
214+
ERROR: 'Erreur inattendue, veuillez réessayer',
215+
TIME_SET: 'Time set',
216+
MANAGE_USERS: 'Gérer les utilisateurs',
217+
IS_ADMIN: 'admin',
218+
USER_WARNING: 'Vous devez avoir au moins un utilisateur admin configuré',
219+
ADD: 'Ajouter',
220+
ACCESS_TOKEN_FOR: 'Jeton d\'accès pour',
221+
ACCESS_TOKEN_TEXT: 'Le jeton ci-dessous est utilisé avec les appels d\'API REST qui nécessitent une autorisation. Il peut être passé soit en tant que jeton Bearer dans l\'en-tête Authorization, soit dans le paramètre de requête URL access_token.',
222+
GENERATING_TOKEN: 'Génération de jeton',
223+
USER: 'Utilisateur',
224+
MODIFY: 'Modifier',
225+
SU_TEXT: 'Le mot de passe su (super utilisateur) est utilisé pour signer les jetons d\'authentification et activer les privilèges d\'administrateur dans la console.',
226+
NOT_ENABLED: 'Non activé',
227+
ERRORS_OF: 'Erreurs {0}',
228+
DISCONNECT_REASON: 'Raison de la déconnexion',
229+
ENABLE_MQTT: 'Activer le MQTT',
230+
BROKER: 'Broker',
231+
CLIENT: 'Client',
232+
BASE_TOPIC: 'Base',
233+
OPTIONAL: 'Optionnel',
234+
FORMATTING: 'Mise en forme',
235+
MQTT_FORMAT: 'Format du Topic/Payload',
236+
MQTT_NEST_1: 'Englobé dans un topic unique',
237+
MQTT_NEST_2: 'En tant que topics individuels',
238+
MQTT_RESPONSE: 'Publier le résultat des commandes dans un topic `response`',
239+
MQTT_PUBLISH_TEXT_1: 'Publier des topics à valeur unique sur changement',
240+
MQTT_PUBLISH_TEXT_2: 'Publier vers des topics de commande (ioBroker)',
241+
MQTT_PUBLISH_TEXT_3: 'Activer la découverte MQTT (Home Assistant, Domoticz)',
242+
MQTT_PUBLISH_TEXT_4: 'Préfixe pour les topics découverte',
243+
MQTT_PUBLISH_INTERVALS: 'Intervalles de publication',
244+
MQTT_INT_BOILER: 'Chaudières et pompes à chaleur',
245+
MQTT_INT_THERMOSTATS: 'Thermostats',
246+
MQTT_INT_SOLAR: 'Modules solaires',
247+
MQTT_INT_MIXER: 'Modules mélangeurs',
248+
MQTT_INT_HEARTBEAT: 'Battements',
249+
MQTT_QUEUE: 'Queue MQTT',
250+
DEFAULT: 'Défaut',
251+
MQTT_MULTIPLE_INSTANCES: 'Activer plusieurs instances de EMS-ESP',
252+
MQTT_CLEAN_SESSION: 'Flag Clean Session',
253+
MQTT_RETAIN_FLAG: 'Toujours activer le Retain Flag',
254+
INACTIVE: 'Inactif',
255+
ACTIVE: 'Actif',
256+
UNKNOWN: 'Inconnu',
257+
SET_TIME: 'Définir l\'heure',
258+
SET_TIME_TEXT: 'Entrer la date et l\'heure locale ci-dessous pour régler l\'heure',
259+
LOCAL_TIME: 'Heure locale',
260+
UTC_TIME: 'Heure UTC',
261+
ENABLE_NTP: 'Activer le NTP',
262+
NTP_SERVER: 'Serveur NTP',
263+
TIME_ZONE: 'Fuseau horaire',
264+
ACCESS_POINT: 'Point d\'accès',
265+
AP_PROVIDE: 'Activer le Point d\'Accès',
266+
AP_PROVIDE_TEXT_1: 'toujours',
267+
AP_PROVIDE_TEXT_2: 'quand le WiFi est déconnecté',
268+
AP_PROVIDE_TEXT_3: 'jamais',
269+
AP_PREFERRED_CHANNEL: 'Canal préféré',
270+
AP_HIDE_SSID: 'Cacher le SSID',
271+
AP_CLIENTS: 'AP Clients',
272+
AP_MAX_CLIENTS: 'Max Clients',
273+
AP_LOCAL_IP: 'IP locale',
274+
NETWORK_SCAN: 'Scanner les réseaux WiFi',
275+
IDLE: 'Inactif',
276+
LOST: 'Perdu',
277+
SCANNING: 'Scan en cours',
278+
SCAN_AGAIN: 'Rescanner',
279+
NETWORK_SCANNER: 'Scan réseau',
280+
NETWORK_NO_WIFI: 'Pas de réseau WiFi trouvé',
281+
NETWORK_BLANK_SSID: 'laisser vide pour désactiver le WiFi',
282+
TX_POWER: 'Puissance Tx',
283+
HOSTNAME: 'Nom d\'hôte',
284+
NETWORK_DISABLE_SLEEP: 'Désactiver le mode veille du WiFi',
285+
NETWORK_LOW_BAND: 'Utiliser une bande passante WiFi plus faible',
286+
NETWORK_USE_DNS: 'Activer le service mDNS',
287+
NETWORK_ENABLE_CORS: 'Activer CORS',
288+
NETWORK_CORS_ORIGIN: 'Origine CORS',
289+
NETWORK_ENABLE_IPV6: 'Activer le support de l\'IPv6',
290+
NETWORK_FIXED_IP: 'Utiliser une adresse IP fixe',
291+
NETWORK_GATEWAY: 'Passerelle',
292+
NETWORK_SUBNET: 'Masque de sous-réseau',
293+
NETWORK_DNS: 'Serveurs DNS',
294+
ADDRESS_OF: 'Adresse de {0}',
295+
ADMIN: 'Admin',
296+
GUEST: 'Invité',
297+
NEW: 'Nouveau',
298+
NEW_NAME_OF: 'Nouveau nom de {0}',
299+
ENTITY: 'entité',
300+
MIN: 'min',
301+
MAX: 'max'
302+
};
303+
304+
export default fr;

interface/src/project/SettingsApplication.tsx

+1
Original file line numberDiff line numberDiff line change
@@ -367,6 +367,7 @@ const SettingsApplication: FC = () => {
367367
<MenuItem value="se">Svenska (SE)</MenuItem>
368368
<MenuItem value="pl">Polski (PL)</MenuItem>
369369
<MenuItem value="no">Norsk (NO)</MenuItem>
370+
<MenuItem value="fr">Français (FR)</MenuItem>
370371
</ValidatedTextField>
371372
</Box>
372373
{data.led_gpio !== 0 && (

0 commit comments

Comments
 (0)