add it-translations

This commit is contained in:
MichaelDvP
2023-07-02 12:09:14 +02:00
parent 32f3c646f8
commit 09aea280b5
9 changed files with 1066 additions and 713 deletions

View File

@@ -25,7 +25,7 @@
"@mui/material": "^5.13.6", "@mui/material": "^5.13.6",
"@table-library/react-table-library": "4.1.4", "@table-library/react-table-library": "4.1.4",
"@types/lodash-es": "^4.17.7", "@types/lodash-es": "^4.17.7",
"@types/node": "^20.3.2", "@types/node": "^20.3.3",
"@types/react": "^18.2.14", "@types/react": "^18.2.14",
"@types/react-dom": "^18.2.6", "@types/react-dom": "^18.2.6",
"@types/react-router-dom": "^5.3.3", "@types/react-router-dom": "^5.3.3",
@@ -38,7 +38,7 @@
"react-dom": "latest", "react-dom": "latest",
"react-dropzone": "^14.2.3", "react-dropzone": "^14.2.3",
"react-icons": "^4.10.1", "react-icons": "^4.10.1",
"react-router-dom": "^6.14.0", "react-router-dom": "^6.14.1",
"react-toastify": "^9.1.3", "react-toastify": "^9.1.3",
"sockette": "^2.0.6", "sockette": "^2.0.6",
"typesafe-i18n": "^5.24.3", "typesafe-i18n": "^5.24.3",
@@ -48,7 +48,7 @@
"@typescript-eslint/eslint-plugin": "^5.60.1", "@typescript-eslint/eslint-plugin": "^5.60.1",
"@typescript-eslint/parser": "^5.60.1", "@typescript-eslint/parser": "^5.60.1",
"@vitejs/plugin-react-swc": "^3.3.2", "@vitejs/plugin-react-swc": "^3.3.2",
"eslint": "^8.43.0", "eslint": "^8.44.0",
"eslint-config-airbnb": "^19.0.4", "eslint-config-airbnb": "^19.0.4",
"eslint-config-airbnb-typescript": "^17.0.0", "eslint-config-airbnb-typescript": "^17.0.0",
"eslint-config-prettier": "^8.8.0", "eslint-config-prettier": "^8.8.0",

View File

@@ -16,6 +16,7 @@ import { AuthenticationContext } from 'contexts/authentication';
import { ReactComponent as DEflag } from 'i18n/DE.svg'; import { ReactComponent as DEflag } from 'i18n/DE.svg';
import { ReactComponent as FRflag } from 'i18n/FR.svg'; import { ReactComponent as FRflag } from 'i18n/FR.svg';
import { ReactComponent as GBflag } from 'i18n/GB.svg'; import { ReactComponent as GBflag } from 'i18n/GB.svg';
import { ReactComponent as ITflag } from 'i18n/IT.svg';
import { ReactComponent as NLflag } from 'i18n/NL.svg'; import { ReactComponent as NLflag } from 'i18n/NL.svg';
import { ReactComponent as NOflag } from 'i18n/NO.svg'; import { ReactComponent as NOflag } from 'i18n/NO.svg';
import { ReactComponent as PLflag } from 'i18n/PL.svg'; import { ReactComponent as PLflag } from 'i18n/PL.svg';
@@ -122,6 +123,10 @@ const SignIn: FC = () => {
<FRflag style={{ width: 24 }} /> <FRflag style={{ width: 24 }} />
&nbsp;FR &nbsp;FR
</Button> </Button>
<Button size="small" variant={locale === 'it' ? 'contained' : 'outlined'} onClick={() => selectLocale('it')}>
<ITflag style={{ width: 24 }} />
&nbsp;IT
</Button>
<Button size="small" variant={locale === 'nl' ? 'contained' : 'outlined'} onClick={() => selectLocale('nl')}> <Button size="small" variant={locale === 'nl' ? 'contained' : 'outlined'} onClick={() => selectLocale('nl')}>
<NLflag style={{ width: 24 }} /> <NLflag style={{ width: 24 }} />
&nbsp;NL &nbsp;NL

View File

@@ -22,6 +22,7 @@ import { AuthenticatedContext } from 'contexts/authentication';
import { ReactComponent as DEflag } from 'i18n/DE.svg'; import { ReactComponent as DEflag } from 'i18n/DE.svg';
import { ReactComponent as FRflag } from 'i18n/FR.svg'; import { ReactComponent as FRflag } from 'i18n/FR.svg';
import { ReactComponent as GBflag } from 'i18n/GB.svg'; import { ReactComponent as GBflag } from 'i18n/GB.svg';
import { ReactComponent as ITflag } from 'i18n/IT.svg';
import { ReactComponent as NLflag } from 'i18n/NL.svg'; import { ReactComponent as NLflag } from 'i18n/NL.svg';
import { ReactComponent as NOflag } from 'i18n/NO.svg'; import { ReactComponent as NOflag } from 'i18n/NO.svg';
import { ReactComponent as PLflag } from 'i18n/PL.svg'; import { ReactComponent as PLflag } from 'i18n/PL.svg';
@@ -86,6 +87,10 @@ const LayoutAuthMenu: FC = () => {
<FRflag style={{ width: 16, verticalAlign: 'middle' }} /> <FRflag style={{ width: 16, verticalAlign: 'middle' }} />
&nbsp;FR &nbsp;FR
</MenuItem> </MenuItem>
<MenuItem key="it" value="it">
<ITflag style={{ width: 16, verticalAlign: 'middle' }} />
&nbsp;IT
</MenuItem>
<MenuItem key="nl" value="nl"> <MenuItem key="nl" value="nl">
<NLflag style={{ width: 16, verticalAlign: 'middle' }} /> <NLflag style={{ width: 16, verticalAlign: 'middle' }} />
&nbsp;NL &nbsp;NL

View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 513 342"><path fill="#FFF" d="M342 0H0v341.3h512V0z"/><path fill="#6DA544" d="M0 0h171v342H0z"/><path fill="#D80027" d="M342 0h171v342H342z"/></svg>

After

Width:  |  Height:  |  Size: 201 B

View File

@@ -0,0 +1,331 @@
import type { Translation } from '../i18n-types';
/* prettier-ignore */
/* eslint-disable */
const it: Translation = {
LANGUAGE: 'Lingua',
RETRY: 'Riprovare',
LOADING: 'Caricamento',
IS_REQUIRED: '{0} é richiesto',
SIGN_IN: 'Connettersi',
SIGN_OUT: 'Disconnettersi',
USERNAME: 'Nome Utente',
PASSWORD: 'Password',
SU_PASSWORD: 'su Password',
DASHBOARD: 'Pannello di Controllo',
SETTINGS_OF: 'Impostazioni {0}',
HELP_OF: '{0} Aiuto',
LOGGED_IN: 'Registrato come {name}',
PLEASE_SIGNIN: 'Prego registrarsi per continuare',
UPLOAD_SUCCESSFUL: 'Caricamento finito',
DOWNLOAD_SUCCESSFUL: 'Scaricamento finito',
INVALID_LOGIN: 'Dettagli accesso invalidi',
NETWORK: 'Rete',
SECURITY: 'Sicurezza',
ONOFF_CAP: 'ON/OFF',
ONOFF: 'on/off',
TYPE: 'Tipo',
DESCRIPTION: 'Descrizione',
ENTITIES: 'Entità',
REFRESH: 'Ricaricare',
EXPORT: 'Esporta',
DEVICE_DETAILS: 'Dettagli dispositivo',
ID_OF: '{0} ID',
DEVICE: 'Dispositivo',
PRODUCT: 'Prodotto',
VERSION: 'Versione',
BRAND: 'Marca',
ENTITY_NAME: 'Nome Entità',
VALUE: '{{Valore|valore}}',
DEVICE_DATA: 'Device Data',
SENSOR_DATA: 'Sensor Data',
DEVICES: 'Dispositivi',
SENSORS: 'Sensori',
RUN_COMMAND: 'Esegui',
CHANGE_VALUE: 'Cambia Valore',
CANCEL: 'Annulla',
RESET: 'Reset',
APPLY_CHANGES: 'Apply Changes ({0})',
UPDATE: 'Update',
EXECUTE: 'Execute',
REMOVE: 'Elimina',
PROBLEM_UPDATING: 'Problema aggiornamento',
PROBLEM_LOADING: 'Problema caricamento',
ACCESS_DENIED: 'Access Denied',
ANALOG_SENSOR: 'Sensore Analogico',
ANALOG_SENSORS: 'Sensori Analogici',
SETTINGS: 'Settings',
UPDATED_OF: '{0} Aggiornati',
UPDATE_OF: 'Aggiorna {0}',
REMOVED_OF: '{0} Rimossi',
DELETION_OF: '{0} Cancellati',
OFFSET: 'Offset',
FACTOR: 'Fattore',
FREQ: 'Frequenza',
DUTY_CYCLE: 'Ciclo di lavoro',
UNIT: 'UoM',
STARTVALUE: 'Valore di partenza',
WARN_GPIO: 'Avvertimento: prestare attenzione quando si assegna un GPIO!',
EDIT: 'Modifica',
SENSOR: 'Sensore',
TEMP_SENSOR: 'Sensore Temperatura',
TEMP_SENSORS: 'Sensori Temperatura',
WRITE_CMD_SENT: 'Scrittura comando inviata',
WRITE_CMD_FAILED: 'Scittura comando fallita',
EMS_BUS_WARNING: 'EMS bus disconnesso. Se questo avvertimento persiste dopo alcuni secondi prego verificare impostazioni scheda',
EMS_BUS_SCANNING: 'Scansione dispositivi EMS ...',
CONNECTED: 'Connesso',
TX_ISSUES: 'Problema di Tx - prova una modalità differente',
DISCONNECTED: 'Disconnesso',
EMS_SCAN: 'Sei sicuro di voler iniziare una scansione completa del bus EMS ?',
EMS_BUS_STATUS: 'Stato Bus EMS',
ACTIVE_DEVICES: 'Dispositivi & sensori attivi',
EMS_DEVICE: 'Dispositivo EMS ',
SUCCESS: 'SUCCESSO',
FAIL: 'FALLITO',
QUALITY: 'QUALITÂ',
SCAN_DEVICES: 'Scansione per nuovi dispositivi',
EMS_BUS_STATUS_TITLE: 'Bus EMS & Stato Attività',
SCAN: 'Scansione',
STATUS_NAMES: [
'Telegrammi EMS Ricevuti (Rx)',
'EMS Letti (Tx)',
'EMS Scritti (Tx)',
'Letture Sensori Temperatura',
'Letture Sensori Analogici',
'Pubblicazioni MQTT',
'Chiamate API',
'Messaggi Syslog'
],
NUM_DEVICES: '{num} Dispositivi {{s}}',
NUM_TEMP_SENSORS: '{num} Sensori Temperatura {{s}}',
NUM_ANALOG_SENSORS: '{num} Sensori Analogici {{s}}',
NUM_DAYS: '{num} giorni {{s}}',
NUM_SECONDS: '{num} secondi {{s}}',
NUM_HOURS: '{num} ore {{s}}',
NUM_MINUTES: '{num} minuti {{s}}',
APPLICATION_SETTINGS: 'Impostazione Applicazione',
CUSTOMIZATIONS: 'Personalizzazione',
APPLICATION_RESTARTING: 'EMS-ESP sta riavviando',
INTERFACE_BOARD_PROFILE: 'Profilo scheda di interfaccia',
BOARD_PROFILE_TEXT: 'Selezionare un profilo di interfaccia pre-configurato dalla lista sottostante o scegliere un profilo personalizzato per configurare le impostazioni del tuo hardware',
BOARD_PROFILE: 'Profilo Scheda',
CUSTOM: 'Personalizzazione',
GPIO_OF: 'GPIO {0}',
BUTTON: 'Pulsante',
TEMPERATURE: 'Temperatura',
PHY_TYPE: 'Eth PHY Type',
DISABLED: 'disattivato',
TX_MODE: 'Modo Tx ',
HARDWARE: 'Hardware',
EMS_BUS: '{{BUS|EMS BUS}}',
GENERAL_OPTIONS: 'Opzioni Generali',
LANGUAGE_ENTITIES: 'Lingua (per entità dispositivi)',
HIDE_LED: 'Nascondi LED',
ENABLE_TELNET: 'Abilità la Console Telnet',
ENABLE_ANALOG: 'Abilita Sensori Analogici',
CONVERT_FAHRENHEIT: 'Converti valori temperatura in Fahrenheit',
BYPASS_TOKEN: 'Ignora autorizzazione del token di accesso sulle chiamate API',
READONLY: 'Abilita modalità sola-lettura (blocca tutti i comandi di scrittura EMS Tx in uscita)',
UNDERCLOCK_CPU: 'Abbassa velocità della CPU',
ENABLE_SHOWER_TIMER: 'Abilita timer doccia',
ENABLE_SHOWER_ALERT: 'Abilita avviso doccia',
TRIGGER_TIME: 'Tempo di avvio',
COLD_SHOT_DURATION: 'Durata colpo freddo',
FORMATTING_OPTIONS: 'Opzioni di formattazione',
BOOLEAN_FORMAT_DASHBOARD: 'Pannello di controllo in formato booleano',
BOOLEAN_FORMAT_API: 'Formato booleano API/MQTT',
ENUM_FORMAT: 'Enum Format API/MQTT',
INDEX: 'Indice',
ENABLE_PARASITE: 'Abilita potenza parassita',
LOGGING: 'Registrazione',
LOG_HEX: 'Registra telegrammi EMS in esadecimale',
ENABLE_SYSLOG: 'Abilita Syslog',
LOG_LEVEL: 'Livello registrazione',
MARK_INTERVAL: 'Segna Intervallo',
SECONDS: 'secondi',
MINUTES: 'minuti',
HOURS: 'ore',
RESTART: 'Riavvia',
RESTART_TEXT: 'EMS-ESP necessita di essere riavviato per applicare il cambio impostazioni del sistema',
RESTART_CONFIRM: 'Sei sicuro di voler riavviare EMS-ESP?',
COMMAND: 'Comando',
CUSTOMIZATIONS_RESTART: 'Tutte le personalizzazioni sono state rimosse. Riavvio ...',
CUSTOMIZATIONS_FULL: 'Le entità selezionate hanno superato il limite. Si prega di salvare in batch',
CUSTOMIZATIONS_SAVED: 'Personalizzazioni salvate',
CUSTOMIZATIONS_HELP_1: 'Seleziona un dispositivo e personalizza le opzioni delle entità o fai clic per rinominarlo',
CUSTOMIZATIONS_HELP_2: 'seleziona come preferito',
CUSTOMIZATIONS_HELP_3: 'disabilita azione scrittura',
CUSTOMIZATIONS_HELP_4: 'esculdi da MQTT e API',
CUSTOMIZATIONS_HELP_5: 'nascondi dal Pannello di controllo',
CUSTOMIZATIONS_HELP_6: 'rimuovi dalla memoria',
SELECT_DEVICE: 'Seleziona un dispositivo',
SET_ALL: 'imposta tutto',
OPTIONS: 'Opzioni',
NAME: 'Nome',
CUSTOMIZATIONS_RESET: 'Sei sicuro di voler rimuovere tutte le personalizzazioni incluse le impostazioni personalizzate dei sensori di temperatura e analogici?',
DEVICE_ENTITIES: 'Entità Dispositivo',
SUPPORT_INFORMATION: 'Informazioni di Supporto',
CLICK_HERE: 'Clicca qui',
HELP_INFORMATION_1: 'Visita il wiki online per ottenere istruzioni su come configurare EMS-ESP',
HELP_INFORMATION_2: 'Per la chat della community dal vivo unisciti al nostro server Discord',
HELP_INFORMATION_3: 'Per richiedere una funzionalità o segnalare un errore',
HELP_INFORMATION_4: 'ricordati di scaricare e allegare le informazioni del tuo sistema per una risposta più rapida quando segnali un problema',
HELP_INFORMATION_5: 'EMS-ESP è un progetto gratuito e open-source. Supporta il suo sviluppo futuro assegnandogli una stella su Github!',
SUPPORT_INFO: 'Info Supporto',
UPLOAD: 'Carica',
DOWNLOAD: 'Scarica',
ABORTED: 'Annullato',
FAILED: 'Fallito',
SUCCESSFUL: 'Riuscito',
SYSTEM: 'Sistema',
LOG_OF: 'Registro {0}',
STATUS_OF: 'Stato {0}',
UPLOAD_DOWNLOAD: 'Caricamento/Scaricamento',
VERSION_ON: 'Attualmente stai eseguendo la versione',
SYSTEM_APPLY_FIRMWARE: 'per applicare il nuovo firmware',
CLOSE: 'Chiudere',
USE: 'Usa',
FACTORY_RESET: 'Impostazioni di fabbrica',
SYSTEM_FACTORY_TEXT: 'Il dispositivo è stato ripristinato alle impostazioni di fabbrica e ora verrà riavviato',
SYSTEM_FACTORY_TEXT_DIALOG: 'Sei sicuro di voler ripristinare il dispositivo alle impostazioni di fabbrica??',
VERSION_CHECK: 'Verifica Versione',
THE_LATEST: 'Ultima',
OFFICIAL: 'ufficiale',
DEVELOPMENT: 'sviluppo',
RELEASE_IS: 'rilascio é',
RELEASE_NOTES: 'note rilascio',
EMS_ESP_VER: 'Versione EMS-ESP',
PLATFORM: 'Dispositivo (Piattaforma / SDK)',
UPTIME: 'Tempo di attività del sistema',
CPU_FREQ: 'Frequenza CPU ',
HEAP: 'Heap (Free / Max Alloc)',
PSRAM: 'PSRAM (Size / Free)',
FLASH: 'Flash Chip (Size / Speed)',
APPSIZE: 'Applicazione (Usata / Libera)',
FILESYSTEM: 'Memoria Sistema (Usata / Libera)',
BUFFER_SIZE: 'Max Buffer Size',
COMPACT: 'Compact',
ENABLE_OTA: 'Abilita aggiornamenti OTA',
DOWNLOAD_CUSTOMIZATION_TEXT: 'Scarica personalizzazioni entità',
DOWNLOAD_SCHEDULE_TEXT: 'Download Scheduler Events',
DOWNLOAD_SETTINGS_TEXT: 'Scarica le impostazioni dell applicazione. Fai attenzione quando condividi le tue impostazioni poiché questo file contiene password e altre informazioni di sistema riservate',
UPLOAD_TEXT: 'Carica un nuovo file firmware (.bin) , file delle impostazioni o delle personalizzazioni (.json) di seguito, per un opzione di convalida scaricare dapprima un file "*.MD5" ',
UPLOADING: 'Caricamento',
UPLOAD_DROP_TEXT: 'Trascina il file o clicca qui',
ERROR: 'Errore Inaspettato, prego tenta ancora',
TIME_SET: 'Imposta Ora',
MANAGE_USERS: 'Gestione Utenti',
IS_ADMIN: 'Amministratore',
USER_WARNING: 'Devi avere configurato almeno un utente amministratore',
ADD: 'Aggiungi',
ACCESS_TOKEN_FOR: 'Token di accesso per',
ACCESS_TOKEN_TEXT: 'Il token seguente viene utilizzato con le chiamate API REST che richiedono l autorizzazione. Può essere passato come token Bearer nell intestazione di autorizzazione o nel parametro di query URL access_token.',
GENERATING_TOKEN: 'Generazione token',
USER: 'Utente',
MODIFY: 'Modifica',
SU_TEXT: 'La password su (super utente) viene utilizzata per firmare i token di autenticazione e abilitare anche i privilegi di amministratore all interno della console.',
NOT_ENABLED: 'Non abilitato',
ERRORS_OF: 'Errori {0}',
DISCONNECT_REASON: 'Motivo disconnessione',
ENABLE_MQTT: 'Abilita MQTT',
BROKER: 'Broker',
CLIENT: 'Cliente',
BASE_TOPIC: 'Base',
OPTIONAL: 'Opzionale',
FORMATTING: 'Formattazione',
MQTT_FORMAT: 'Formato Topic/Payload ',
MQTT_NEST_1: 'Inserito in un singolo argomento',
MQTT_NEST_2: 'Come argomenti individuali',
MQTT_RESPONSE: 'Pubblica uscita del comando in un argomento di risposta',
MQTT_PUBLISH_TEXT_1: 'Pubblica argomenti a valore singolo sul cambiamento',
MQTT_PUBLISH_TEXT_2: 'Pubblica per comandare gli argomenti (ioBroker)',
MQTT_PUBLISH_TEXT_3: 'Abilita rilevamento MQTT (Home Assistant, Domoticz)',
MQTT_PUBLISH_TEXT_4: 'Prefisso per gli argomenti di scoperta',
MQTT_PUBLISH_TEXT_5: 'Discovery type',
MQTT_PUBLISH_INTERVALS: 'Pubblica intervalli',
MQTT_INT_BOILER: 'Caldaie e Pompe di Calore',
MQTT_INT_THERMOSTATS: 'Termostati',
MQTT_INT_SOLAR: 'Moduli solari',
MQTT_INT_MIXER: 'Moduli Mixer',
MQTT_INT_HEARTBEAT: 'Heartbeat',
MQTT_QUEUE: 'Coda MQTT',
DEFAULT: 'Predefinito',
MQTT_ENTITY_FORMAT: 'Formato ID entità',
MQTT_ENTITY_FORMAT_0: 'Singola istanza, nome lungo (v3.4)',
MQTT_ENTITY_FORMAT_1: 'Sinola istanza, nome breve',
MQTT_ENTITY_FORMAT_2: 'Istanze multiple, nome breve',
MQTT_CLEAN_SESSION: 'Imposta sessione pulita',
MQTT_RETAIN_FLAG: 'Imposta sempre il flag Retain',
INACTIVE: 'Inattivo',
ACTIVE: 'Attivo',
UNKNOWN: 'Sconosciuto',
SET_TIME: 'Imposta ora',
SET_TIME_TEXT: 'Immettere la data e l ora locale di seguito per impostare l ora',
LOCAL_TIME: 'Ora locale',
UTC_TIME: 'Ora UTC',
ENABLE_NTP: 'Abilita NTP',
NTP_SERVER: 'Server NTP',
TIME_ZONE: 'Fuso orario',
ACCESS_POINT: 'Access Point',
AP_PROVIDE: 'Abilita Access Point',
AP_PROVIDE_TEXT_1: 'sempre',
AP_PROVIDE_TEXT_2: 'quando WiFi é disconnessa',
AP_PROVIDE_TEXT_3: 'mai',
AP_PREFERRED_CHANNEL: 'Canale preferito',
AP_HIDE_SSID: 'Nascondi SSID',
AP_CLIENTS: 'Clienti AP',
AP_MAX_CLIENTS: 'Clienti Massimi',
AP_LOCAL_IP: 'IP Locale',
NETWORK_SCAN: 'Scansione reti WiFi',
IDLE: 'Inattivo',
LOST: 'Perso',
SCANNING: 'Scansione',
SCAN_AGAIN: 'Scansiona ancora',
NETWORK_SCANNER: 'Scansione Rete',
NETWORK_NO_WIFI: 'Nessuana rete WiFi trovata',
NETWORK_BLANK_SSID: 'lasciare vuoto per disattivare WiFi',
TX_POWER: 'Potenza Tx',
HOSTNAME: 'Nome ospite',
NETWORK_DISABLE_SLEEP: 'Disabilita la modalità sospensione Wi-Fi',
NETWORK_LOW_BAND: 'Usa una larghezza di banda WiFi inferiore',
NETWORK_USE_DNS: 'Abilita servizio mDNS',
NETWORK_ENABLE_CORS: 'Abilita CORS',
NETWORK_CORS_ORIGIN: 'origine CORS',
NETWORK_ENABLE_IPV6: 'Abilita supporto IPv6',
NETWORK_FIXED_IP: 'Usa indirizzo IP fisso',
NETWORK_GATEWAY: 'Gateway',
NETWORK_SUBNET: 'Maschera Sottorete',
NETWORK_DNS: 'Server DNS',
ADDRESS_OF: 'Indirizzo {0}',
ADMIN: 'Amministratore',
GUEST: 'Ospite',
NEW: 'Nuovo',
NEW_NAME_OF: 'Nuovo nome {0}',
ENTITY: 'entità',
MIN: 'min',
MAX: 'max',
BLOCK_NAVIGATE_1: 'You have unsaved changes',
BLOCK_NAVIGATE_2: 'If you navigate to a different page, your unsaved changes will be lost. Are you sure you want to leave this page?',
STAY: 'Stay',
LEAVE: 'Leave',
SCHEDULER: 'Scheduler',
SCHEDULER_HELP_1: 'Automate commands by adding scheduled events below. Set a unique Name to enable/disable activation via API/MQTT.',
SCHEDULER_HELP_2: 'Use 00:00 to trigger once on start-up',
SCHEDULE: 'Schedule',
TIME: 'Time',
TIMER: 'Timer',
SCHEDULE_UPDATED: 'Schedule updated',
SCHEDULE_TIMER_1: 'on startup',
SCHEDULE_TIMER_2: 'every minute',
SCHEDULE_TIMER_3: 'every hour',
CUSTOM_ENTITIES: 'Custom Entities',
ENTITIES_HELP_1: 'Fetch custom entities from the EMS bus',
ENTITIES_UPDATED: 'Entities Updated',
WRITEABLE: 'Writeable',
SHOWING: 'Showing',
SEARCH: 'Search'
};
export default it;

View File

@@ -371,6 +371,7 @@ const SettingsApplication: FC = () => {
<Divider /> <Divider />
<MenuItem value="de">Deutsch (DE)</MenuItem> <MenuItem value="de">Deutsch (DE)</MenuItem>
<MenuItem value="fr">Français (FR)</MenuItem> <MenuItem value="fr">Français (FR)</MenuItem>
<MenuItem value="it">Italiano (IT)</MenuItem>
<MenuItem value="nl">Nederlands (NL)</MenuItem> <MenuItem value="nl">Nederlands (NL)</MenuItem>
<MenuItem value="no">Norsk (NO)</MenuItem> <MenuItem value="no">Norsk (NO)</MenuItem>
<MenuItem value="pl">Polski (PL)</MenuItem> <MenuItem value="pl">Polski (PL)</MenuItem>

View File

@@ -5,6 +5,13 @@ __metadata:
version: 6 version: 6
cacheKey: 8c0 cacheKey: 8c0
"@aashutoshrathi/word-wrap@npm:^1.2.3":
version: 1.2.6
resolution: "@aashutoshrathi/word-wrap@npm:1.2.6"
checksum: 53c2b231a61a46792b39a0d43bc4f4f776bb4542aa57ee04930676802e5501282c2fc8aac14e4cd1f1120ff8b52616b6ff5ab539ad30aa2277d726444b71619f
languageName: node
linkType: hard
"@ampproject/remapping@npm:^2.2.0": "@ampproject/remapping@npm:^2.2.0":
version: 2.2.0 version: 2.2.0
resolution: "@ampproject/remapping@npm:2.2.0" resolution: "@ampproject/remapping@npm:2.2.0"
@@ -605,27 +612,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint/eslintrc@npm:^2.0.3": "@eslint/eslintrc@npm:^2.1.0":
version: 2.0.3 version: 2.1.0
resolution: "@eslint/eslintrc@npm:2.0.3" resolution: "@eslint/eslintrc@npm:2.1.0"
dependencies: dependencies:
ajv: ^6.12.4 ajv: ^6.12.4
debug: ^4.3.2 debug: ^4.3.2
espree: ^9.5.2 espree: ^9.6.0
globals: ^13.19.0 globals: ^13.19.0
ignore: ^5.2.0 ignore: ^5.2.0
import-fresh: ^3.2.1 import-fresh: ^3.2.1
js-yaml: ^4.1.0 js-yaml: ^4.1.0
minimatch: ^3.1.2 minimatch: ^3.1.2
strip-json-comments: ^3.1.1 strip-json-comments: ^3.1.1
checksum: 46291c33bf580ab12101fb7f20adabaa60326a7de094409ab4a5ca4611552ab2325f8d677d6c1d2d9f45f83f93360b115a0b4488bc48180cca0d0f386804d829 checksum: 6ffbc3e7867b377754492539af0e2f5b55645a2c67279a70508fe09080bc76d49ba64b579e59a2a04014f84d0768301736fbcdd94c7b3ad4f0e648c32bf21e43
languageName: node languageName: node
linkType: hard linkType: hard
"@eslint/js@npm:8.43.0": "@eslint/js@npm:8.44.0":
version: 8.43.0 version: 8.44.0
resolution: "@eslint/js@npm:8.43.0" resolution: "@eslint/js@npm:8.44.0"
checksum: ff1a1587e8f28c21dda36a331cf70ca16b76e5897cecf10f6b4c326abddf18db565ee5f71feb89cbb0d3d20ff321a2536357562c0233868eed70784640b73cf4 checksum: ce7b966f8804228e4d5725d44d3c8fb7fc427176f077401323a02e082f628d207133a25704330e610ebe3254fdf1acb186f779d1242fd145a758fdcc4486a660
languageName: node languageName: node
linkType: hard linkType: hard
@@ -978,10 +985,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@remix-run/router@npm:1.7.0": "@remix-run/router@npm:1.7.1":
version: 1.7.0 version: 1.7.1
resolution: "@remix-run/router@npm:1.7.0" resolution: "@remix-run/router@npm:1.7.1"
checksum: 05ac3b300eb6676f359c18280dc3870b3f0dde5553b58d914c2ef9d1c2feae71ad4b81ad8dd3b20182cc8fba40a6f6e5236f68d1fe02989f71cd5b55ae25a75c checksum: 4b0828529dfb2628e8e737c19bbb360dd373c0452803942611184a2ed304e39fe13996333edd05fda3c265875a78a7f31af743dbb098cbf1186105b76e10949f
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1305,10 +1312,10 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@types/node@npm:^20.3.2": "@types/node@npm:^20.3.3":
version: 20.3.2 version: 20.3.3
resolution: "@types/node@npm:20.3.2" resolution: "@types/node@npm:20.3.3"
checksum: d857cbe388d11fefd6c598144db42a32e1c15c09624b9e0669ec65e9d72e080093db3ec6b536037e6575574e33413479d4b3762140c2544ff30eb0c2111b5596 checksum: d172311e9e2d42e060eacb78ecdfd4e1596dbd1e54939bacf42003c84559bdcb5d7dbe539dc5262db4c8f408e21f3abd65435fec9bc0ff8968a3b32dafde0bbf
languageName: node languageName: node
linkType: hard linkType: hard
@@ -1552,7 +1559,7 @@ __metadata:
"@mui/material": ^5.13.6 "@mui/material": ^5.13.6
"@table-library/react-table-library": 4.1.4 "@table-library/react-table-library": 4.1.4
"@types/lodash-es": ^4.17.7 "@types/lodash-es": ^4.17.7
"@types/node": ^20.3.2 "@types/node": ^20.3.3
"@types/react": ^18.2.14 "@types/react": ^18.2.14
"@types/react-dom": ^18.2.6 "@types/react-dom": ^18.2.6
"@types/react-router-dom": ^5.3.3 "@types/react-router-dom": ^5.3.3
@@ -1561,7 +1568,7 @@ __metadata:
"@vitejs/plugin-react-swc": ^3.3.2 "@vitejs/plugin-react-swc": ^3.3.2
async-validator: ^4.2.5 async-validator: ^4.2.5
axios: ^1.4.0 axios: ^1.4.0
eslint: ^8.43.0 eslint: ^8.44.0
eslint-config-airbnb: ^19.0.4 eslint-config-airbnb: ^19.0.4
eslint-config-airbnb-typescript: ^17.0.0 eslint-config-airbnb-typescript: ^17.0.0
eslint-config-prettier: ^8.8.0 eslint-config-prettier: ^8.8.0
@@ -1582,7 +1589,7 @@ __metadata:
react-dom: latest react-dom: latest
react-dropzone: ^14.2.3 react-dropzone: ^14.2.3
react-icons: ^4.10.1 react-icons: ^4.10.1
react-router-dom: ^6.14.0 react-router-dom: ^6.14.1
react-toastify: ^9.1.3 react-toastify: ^9.1.3
rollup-plugin-visualizer: ^5.9.2 rollup-plugin-visualizer: ^5.9.2
sockette: ^2.0.6 sockette: ^2.0.6
@@ -1620,6 +1627,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"acorn@npm:^8.9.0":
version: 8.9.0
resolution: "acorn@npm:8.9.0"
bin:
acorn: bin/acorn
checksum: 5b51689d56f1ca5d6ea1fa58af478affd8d3396403637abcbc7caf28e1a47beb537cf1654f537b6cf4c73377f3e1aa99fd4a50674e64daefe08cb25c799ded28
languageName: node
linkType: hard
"agent-base@npm:6, agent-base@npm:^6.0.2": "agent-base@npm:6, agent-base@npm:^6.0.2":
version: 6.0.2 version: 6.0.2
resolution: "agent-base@npm:6.0.2" resolution: "agent-base@npm:6.0.2"
@@ -2858,14 +2874,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"eslint@npm:^8.43.0": "eslint@npm:^8.44.0":
version: 8.43.0 version: 8.44.0
resolution: "eslint@npm:8.43.0" resolution: "eslint@npm:8.44.0"
dependencies: dependencies:
"@eslint-community/eslint-utils": ^4.2.0 "@eslint-community/eslint-utils": ^4.2.0
"@eslint-community/regexpp": ^4.4.0 "@eslint-community/regexpp": ^4.4.0
"@eslint/eslintrc": ^2.0.3 "@eslint/eslintrc": ^2.1.0
"@eslint/js": 8.43.0 "@eslint/js": 8.44.0
"@humanwhocodes/config-array": ^0.11.10 "@humanwhocodes/config-array": ^0.11.10
"@humanwhocodes/module-importer": ^1.0.1 "@humanwhocodes/module-importer": ^1.0.1
"@nodelib/fs.walk": ^1.2.8 "@nodelib/fs.walk": ^1.2.8
@@ -2877,7 +2893,7 @@ __metadata:
escape-string-regexp: ^4.0.0 escape-string-regexp: ^4.0.0
eslint-scope: ^7.2.0 eslint-scope: ^7.2.0
eslint-visitor-keys: ^3.4.1 eslint-visitor-keys: ^3.4.1
espree: ^9.5.2 espree: ^9.6.0
esquery: ^1.4.2 esquery: ^1.4.2
esutils: ^2.0.2 esutils: ^2.0.2
fast-deep-equal: ^3.1.3 fast-deep-equal: ^3.1.3
@@ -2897,13 +2913,13 @@ __metadata:
lodash.merge: ^4.6.2 lodash.merge: ^4.6.2
minimatch: ^3.1.2 minimatch: ^3.1.2
natural-compare: ^1.4.0 natural-compare: ^1.4.0
optionator: ^0.9.1 optionator: ^0.9.3
strip-ansi: ^6.0.1 strip-ansi: ^6.0.1
strip-json-comments: ^3.1.0 strip-json-comments: ^3.1.0
text-table: ^0.2.0 text-table: ^0.2.0
bin: bin:
eslint: bin/eslint.js eslint: bin/eslint.js
checksum: 1f9ff2c774e852c179ba569a3b672cbc4cf91aa59843ee32f7da363c10b5aad842672005ac04c760f6077b3471da428562274e0fcb0a78c2056866b3d36be948 checksum: a31ca4571a67012629936d891141a4a5747d5902fb7f4e10119a5acd632e0976b9ba1b761d8c81cff8a9cc3e796df2c56f86c02535fd977de962a98ce585624a
languageName: node languageName: node
linkType: hard linkType: hard
@@ -2918,14 +2934,14 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"espree@npm:^9.5.2": "espree@npm:^9.6.0":
version: 9.5.2 version: 9.6.0
resolution: "espree@npm:9.5.2" resolution: "espree@npm:9.6.0"
dependencies: dependencies:
acorn: ^8.8.0 acorn: ^8.9.0
acorn-jsx: ^5.3.2 acorn-jsx: ^5.3.2
eslint-visitor-keys: ^3.4.1 eslint-visitor-keys: ^3.4.1
checksum: 6885e57b3dcea3f65211403a10077a80a57f03e6c8b45c1e1db4bc5958e0fdb5c358819c88898ea67655d25fb646836182f688156e124a05610e714d3fcb6822 checksum: f064a43bcf7f435d34e600c056320dde1c15b3eeb5da24e7585ed6cf83adcbbeafb4fa4d062ff14281b0d246b0a9645dd9d3796a638099f19595004eee4ac8be
languageName: node languageName: node
linkType: hard linkType: hard
@@ -4522,17 +4538,17 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"optionator@npm:^0.9.1": "optionator@npm:^0.9.3":
version: 0.9.1 version: 0.9.3
resolution: "optionator@npm:0.9.1" resolution: "optionator@npm:0.9.3"
dependencies: dependencies:
"@aashutoshrathi/word-wrap": ^1.2.3
deep-is: ^0.1.3 deep-is: ^0.1.3
fast-levenshtein: ^2.0.6 fast-levenshtein: ^2.0.6
levn: ^0.4.1 levn: ^0.4.1
prelude-ls: ^1.2.1 prelude-ls: ^1.2.1
type-check: ^0.4.0 type-check: ^0.4.0
word-wrap: ^1.2.3 checksum: 66fba794d425b5be51353035cf3167ce6cfa049059cbb93229b819167687e0f48d2bc4603fcb21b091c99acb516aae1083624675b15c4765b2e4693a085e959c
checksum: 8b574d50b032f34713dc09bfacdc351824f713c3c80773ead3a05ab977364de88f2f3962a6f15437747b93a5e0636928253949970daea3aaeeefbd3a525da6a4
languageName: node languageName: node
linkType: hard linkType: hard
@@ -4815,27 +4831,27 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"react-router-dom@npm:^6.14.0": "react-router-dom@npm:^6.14.1":
version: 6.14.0 version: 6.14.1
resolution: "react-router-dom@npm:6.14.0" resolution: "react-router-dom@npm:6.14.1"
dependencies: dependencies:
"@remix-run/router": 1.7.0 "@remix-run/router": 1.7.1
react-router: 6.14.0 react-router: 6.14.1
peerDependencies: peerDependencies:
react: ">=16.8" react: ">=16.8"
react-dom: ">=16.8" react-dom: ">=16.8"
checksum: 104a09aa48b00bdf7bf021bc8c915d36e2045ff0a41b3b23b92b5d3ba5c16cbb0dd4eb00e01188a419e143af2212cbcd3c983ebde26e52c1ed33916746edba31 checksum: 9d3a00263125668a9b703ddc908f98218598c216bc77d99931d0cdf7d6a0f7f9d57649f4261e429a5a1c0c51f5203379a6d8e5181e24d0af6c7623fdd966843c
languageName: node languageName: node
linkType: hard linkType: hard
"react-router@npm:6.14.0": "react-router@npm:6.14.1":
version: 6.14.0 version: 6.14.1
resolution: "react-router@npm:6.14.0" resolution: "react-router@npm:6.14.1"
dependencies: dependencies:
"@remix-run/router": 1.7.0 "@remix-run/router": 1.7.1
peerDependencies: peerDependencies:
react: ">=16.8" react: ">=16.8"
checksum: 60a87b4e1bc684ddced3418f4cd91983ac5f7ea4aa1ac07dd9d336c67eb2511b22eda866a7d7bacd45abb81322ecc9a93afea98fb9daaef6b939a14eebbe4f73 checksum: da870d0739038bb9630a9b3268ec79224bf47aa9f1015e30820cb29a29eabe0bee723991df5cbcb12473d82b7a2e49598e9d539a6f63fa3f2d64f5cc9cc4db64
languageName: node languageName: node
linkType: hard linkType: hard
@@ -5924,13 +5940,6 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"word-wrap@npm:^1.2.3":
version: 1.2.3
resolution: "word-wrap@npm:1.2.3"
checksum: 1cb6558996deb22c909330db1f01d672feee41d7f0664492912de3de282da3f28ba2d49e87b723024e99d56ba2dac2f3ab28f8db07ac199f5e5d5e2e437833de
languageName: node
linkType: hard
"wrap-ansi@npm:^7.0.0": "wrap-ansi@npm:^7.0.0":
version: 7.0.0 version: 7.0.0
resolution: "wrap-ansi@npm:7.0.0" resolution: "wrap-ansi@npm:7.0.0"

File diff suppressed because it is too large Load Diff

View File

@@ -61,7 +61,7 @@ const char * const languages[] = {EMSESP_LOCALE_EN};
const char * const languages[] = {EMSESP_LOCALE_DE}; const char * const languages[] = {EMSESP_LOCALE_DE};
#else #else
const char * const languages[] = const char * const languages[] =
{EMSESP_LOCALE_EN, EMSESP_LOCALE_DE, EMSESP_LOCALE_NL, EMSESP_LOCALE_SV, EMSESP_LOCALE_PL, EMSESP_LOCALE_NO, EMSESP_LOCALE_FR, EMSESP_LOCALE_TR}; {EMSESP_LOCALE_EN, EMSESP_LOCALE_DE, EMSESP_LOCALE_NL, EMSESP_LOCALE_SV, EMSESP_LOCALE_PL, EMSESP_LOCALE_NO, EMSESP_LOCALE_FR, EMSESP_LOCALE_TR, EMSESP_LOCALE_IT};
#endif #endif
static constexpr uint8_t NUM_LANGUAGES = sizeof(languages) / sizeof(const char *); static constexpr uint8_t NUM_LANGUAGES = sizeof(languages) / sizeof(const char *);