From 069df92dbf8a4b2894edbadc8bce2f24b44694d2 Mon Sep 17 00:00:00 2001 From: pswid <78219494+pswid@users.noreply.github.com> Date: Thu, 3 Nov 2022 12:34:32 +0100 Subject: [PATCH] fix to the translation of the webUI in Polish. Everything visible should already be translated into Polish. However, I was not able to check how the translations of all errors are displayed (because how to display them if there is no error?), so I'm not sure that they are ok. BTW, there are still many error messages hardcoded (e.g. "Local IP is required"). I think we should translate them as well. --- interface/src/SignIn.tsx | 4 +- .../src/framework/mqtt/MqttSettingsForm.tsx | 12 +- .../src/framework/mqtt/MqttStatusForm.tsx | 2 +- .../framework/network/NetworkSettingsForm.tsx | 10 +- interface/src/framework/ntp/NTPStatusForm.tsx | 2 +- .../framework/security/ManageUsersForm.tsx | 4 +- interface/src/framework/security/UserForm.tsx | 2 +- interface/src/i18n/de/index.ts | 23 ++- interface/src/i18n/en/index.ts | 37 ++-- interface/src/i18n/i18n-types.ts | 182 ++++++++++++++---- interface/src/i18n/nl/index.ts | 27 ++- interface/src/i18n/no/index.ts | 27 ++- interface/src/i18n/pl/index.ts | 117 ++++++----- interface/src/i18n/se/index.ts | 23 ++- interface/src/project/DashboardData.tsx | 16 +- interface/src/project/SettingsApplication.tsx | 26 +-- .../src/project/SettingsCustomization.tsx | 18 +- 17 files changed, 359 insertions(+), 173 deletions(-) diff --git a/interface/src/SignIn.tsx b/interface/src/SignIn.tsx index a2ffeb9f9..b658bfd39 100644 --- a/interface/src/SignIn.tsx +++ b/interface/src/SignIn.tsx @@ -41,7 +41,7 @@ const SignIn: FC = () => { const validateAndSignIn = async () => { setProcessing(true); SIGN_IN_REQUEST_VALIDATOR.messages({ - required: '%s ' + LL.IS_REQUIRED() + required: LL.IS_REQUIRED('%s') }); try { await validate(SIGN_IN_REQUEST_VALIDATOR, signInRequest); @@ -139,7 +139,7 @@ const SignIn: FC = () => { fieldErrors={fieldErrors} disabled={processing} name="username" - label={LL.USERNAME()} + label={LL.USERNAME(0)} value={signInRequest.username} onChange={updateLoginRequestValue} margin="normal" diff --git a/interface/src/framework/mqtt/MqttSettingsForm.tsx b/interface/src/framework/mqtt/MqttSettingsForm.tsx index c03915800..8de9f71fc 100644 --- a/interface/src/framework/mqtt/MqttSettingsForm.tsx +++ b/interface/src/framework/mqtt/MqttSettingsForm.tsx @@ -57,7 +57,7 @@ const MqttSettingsForm: FC = () => { { { { { { InputProps={{ endAdornment: {LL.SECONDS()} }} - label={LL.DEFAULT()} + label={LL.DEFAULT(0)} fullWidth variant="outlined" value={numberValue(data.publish_time_other)} diff --git a/interface/src/framework/mqtt/MqttStatusForm.tsx b/interface/src/framework/mqtt/MqttStatusForm.tsx index 8e6d373b5..51725c65f 100644 --- a/interface/src/framework/mqtt/MqttStatusForm.tsx +++ b/interface/src/framework/mqtt/MqttStatusForm.tsx @@ -103,7 +103,7 @@ const MqttStatusForm: FC = () => { # - + diff --git a/interface/src/framework/network/NetworkSettingsForm.tsx b/interface/src/framework/network/NetworkSettingsForm.tsx index 8dd52b265..d4a856146 100644 --- a/interface/src/framework/network/NetworkSettingsForm.tsx +++ b/interface/src/framework/network/NetworkSettingsForm.tsx @@ -196,7 +196,7 @@ const WiFiSettingsForm: FC = () => { { { { { { const ntpStatus = ({ status }: NTPStatus) => { switch (status) { case NTPSyncStatus.NTP_DISABLED: - return LL.DISABLED(); + return LL.DISABLED(0); case NTPSyncStatus.NTP_INACTIVE: return LL.INACTIVE(); case NTPSyncStatus.NTP_ACTIVE: diff --git a/interface/src/framework/security/ManageUsersForm.tsx b/interface/src/framework/security/ManageUsersForm.tsx index 29c29c6ee..1321eedc5 100644 --- a/interface/src/framework/security/ManageUsersForm.tsx +++ b/interface/src/framework/security/ManageUsersForm.tsx @@ -40,7 +40,7 @@ const ManageUsersForm: FC = () => { const table_theme = useTheme({ Table: ` - --data-table-library_grid-template-columns: repeat(1, minmax(0, 1fr)) 120px 120px; + --data-table-library_grid-template-columns: repeat(1, minmax(0, 1fr)) minmax(120px, max-content) 120px; `, BaseRow: ` font-size: 14px; @@ -140,7 +140,7 @@ const ManageUsersForm: FC = () => { <>
- {LL.USERNAME()} + {LL.USERNAME(1)} {LL.IS_ADMIN(0)} diff --git a/interface/src/framework/security/UserForm.tsx b/interface/src/framework/security/UserForm.tsx index 28e659469..22ec43fa5 100644 --- a/interface/src/framework/security/UserForm.tsx +++ b/interface/src/framework/security/UserForm.tsx @@ -60,7 +60,7 @@ const UserForm: FC = ({ creating, validator, user, setUser, onDon /** * S​i​g​n​ ​I​n */ @@ -43,7 +44,7 @@ type RootTranslation = { */ SIGN_OUT: string /** - * U​s​e​r​n​a​m​e + * {​{​U​s​e​r​n​a​m​e​}​} */ USERNAME: string /** @@ -82,11 +83,11 @@ type RootTranslation = { */ PLEASE_SIGNIN: string /** - * U​p​l​o​a​d​ ​s​u​c​c​e​s​s​f​u​l + * U​p​l​o​a​d​ ​f​i​n​i​s​h​e​d */ UPLOAD_SUCCESSFUL: string /** - * D​o​w​n​l​o​a​d​ ​s​u​c​c​e​s​s​f​u​l + * D​o​w​n​l​o​a​d​ ​f​i​n​i​s​h​e​d */ DOWNLOAD_SUCCESSFUL: string /** @@ -133,6 +134,23 @@ type RootTranslation = { * D​e​v​i​c​e​ ​D​e​t​a​i​l​s */ DEVICE_DETAILS: string + /** + * {​0​}​ ​I​D + * @param {unknown} 0 + */ + ID_OF: RequiredParams<'0'> + /** + * D​e​v​i​c​e + */ + DEVICE: string + /** + * P​r​o​d​u​c​t + */ + PRODUCT: string + /** + * V​e​r​s​i​o​n + */ + VERSION: string /** * B​r​a​n​d */ @@ -142,7 +160,7 @@ type RootTranslation = { */ ENTITY_NAME: string /** - * {​{​V​a​l​u​e​}​} + * {​{​V​a​l​u​e​|​v​a​l​u​e​}​} */ VALUE: string /** @@ -262,7 +280,7 @@ type RootTranslation = { */ EDIT: string /** - * T​e​m​p​e​r​a​t​u​r​e​ ​S​e​n​s​o​r + * {​{​|​T​e​m​p​e​r​a​t​u​r​e​}​}​ ​S​e​n​s​o​r */ TEMP_SENSOR: string /** @@ -427,6 +445,15 @@ type RootTranslation = { * B​o​a​r​d​ ​P​r​o​f​i​l​e */ BOARD_PROFILE: string + /** + * C​u​s​t​o​m + */ + CUSTOM: string + /** + * {​0​}​ ​G​P​I​O + * @param {unknown} 0 + */ + GPIO_OF: RequiredParams<'0'> /** * B​u​t​t​o​n */ @@ -440,13 +467,21 @@ type RootTranslation = { */ PHY_TYPE: string /** - * d​i​s​a​b​l​e​d + * {​{​d​i​s​a​b​l​e​d​}​} */ DISABLED: string /** * T​x​ ​M​o​d​e */ TX_MODE: string + /** + * H​a​r​d​w​a​r​e + */ + HARDWARE: string + /** + * {​{​B​U​S​|​E​M​S​ ​B​U​S​}​} + */ + EMS_BUS: string /** * G​e​n​e​r​a​l​ ​O​p​t​i​o​n​s */ @@ -616,7 +651,7 @@ type RootTranslation = { */ OPTIONS: string /** - * N​a​m​e + * {​{​N​a​m​e​}​} */ NAME: string /** @@ -891,6 +926,18 @@ type RootTranslation = { * E​n​a​b​l​e​ ​M​Q​T​T */ ENABLE_MQTT: string + /** + * B​r​o​k​e​r + */ + BROKER: string + /** + * C​l​i​e​n​t + */ + CLIENT: string + /** + * B​a​s​e + */ + BASE_TOPIC: string /** * O​p​t​i​o​n​a​l */ @@ -900,9 +947,9 @@ type RootTranslation = { */ FORMATTING: string /** - * F​o​r​m​a​t + * T​o​p​i​c​/​P​a​y​l​o​a​d​ ​F​o​r​m​a​t */ - FORMAT: string + MQTT_FORMAT: string /** * N​e​s​t​e​d​ ​i​n​ ​a​ ​s​i​n​g​l​e​ ​t​o​p​i​c */ @@ -956,7 +1003,7 @@ type RootTranslation = { */ MQTT_QUEUE: string /** - * D​e​f​a​u​l​t + * {​{​D​e​f​a​u​l​t​}​} */ DEFAULT: string /** @@ -1108,7 +1155,7 @@ type RootTranslation = { */ NETWORK_FIXED_IP: string /** - * G​e​t​a​w​a​y + * G​a​t​e​w​a​y */ NETWORK_GATEWAY: string /** @@ -1137,13 +1184,22 @@ type RootTranslation = { */ NEW: string /** - * R​e​n​a​m​e + * N​e​w​ ​{​0​}​ ​n​a​m​e + * @param {unknown} 0 */ - RENAME: string + NEW_NAME_OF: RequiredParams<'0'> /** - * E​n​t​i​t​y + * e​n​t​i​t​y */ ENTITY: string + /** + * m​i​n + */ + MIN: string + /** + * m​a​x + */ + MAX: string } export type TranslationFunctions = { @@ -1160,9 +1216,9 @@ export type TranslationFunctions = { */ LOADING: () => LocalizedString /** - * is required + * {0} is required */ - IS_REQUIRED: () => LocalizedString + IS_REQUIRED: (arg0: unknown) => LocalizedString /** * Sign In */ @@ -1172,9 +1228,9 @@ export type TranslationFunctions = { */ SIGN_OUT: () => LocalizedString /** - * Username + * {{Username}} */ - USERNAME: () => LocalizedString + USERNAME: (arg0: string | number | boolean) => LocalizedString /** * Password */ @@ -1208,11 +1264,11 @@ export type TranslationFunctions = { */ PLEASE_SIGNIN: () => LocalizedString /** - * Upload successful + * Upload finished */ UPLOAD_SUCCESSFUL: () => LocalizedString /** - * Download successful + * Download finished */ DOWNLOAD_SUCCESSFUL: () => LocalizedString /** @@ -1259,6 +1315,22 @@ export type TranslationFunctions = { * Device Details */ DEVICE_DETAILS: () => LocalizedString + /** + * {0} ID + */ + ID_OF: (arg0: unknown) => LocalizedString + /** + * Device + */ + DEVICE: () => LocalizedString + /** + * Product + */ + PRODUCT: () => LocalizedString + /** + * Version + */ + VERSION: () => LocalizedString /** * Brand */ @@ -1268,7 +1340,7 @@ export type TranslationFunctions = { */ ENTITY_NAME: () => LocalizedString /** - * {{Value}} + * {{Value|value}} */ VALUE: (arg0: string | number | boolean) => LocalizedString /** @@ -1384,9 +1456,9 @@ export type TranslationFunctions = { */ EDIT: () => LocalizedString /** - * Temperature Sensor + * {{|Temperature}} Sensor */ - TEMP_SENSOR: () => LocalizedString + TEMP_SENSOR: (arg0: string | number | boolean) => LocalizedString /** * Temperature Sensors */ @@ -1541,6 +1613,14 @@ export type TranslationFunctions = { * Board Profile */ BOARD_PROFILE: () => LocalizedString + /** + * Custom + */ + CUSTOM: () => LocalizedString + /** + * {0} GPIO + */ + GPIO_OF: (arg0: unknown) => LocalizedString /** * Button */ @@ -1554,13 +1634,21 @@ export type TranslationFunctions = { */ PHY_TYPE: () => LocalizedString /** - * disabled + * {{disabled}} */ - DISABLED: () => LocalizedString + DISABLED: (arg0: string | number | boolean) => LocalizedString /** * Tx Mode */ TX_MODE: () => LocalizedString + /** + * Hardware + */ + HARDWARE: () => LocalizedString + /** + * {{BUS|EMS BUS}} + */ + EMS_BUS: (arg0: string | number | boolean) => LocalizedString /** * General Options */ @@ -1730,9 +1818,9 @@ export type TranslationFunctions = { */ OPTIONS: () => LocalizedString /** - * Name + * {{Name}} */ - NAME: () => LocalizedString + NAME: (arg0: string | number | boolean) => LocalizedString /** * Are you sure you want remove all customizations including the custom settings of the Temperature and Analog sensors? */ @@ -2001,6 +2089,18 @@ export type TranslationFunctions = { * Enable MQTT */ ENABLE_MQTT: () => LocalizedString + /** + * Broker + */ + BROKER: () => LocalizedString + /** + * Client + */ + CLIENT: () => LocalizedString + /** + * Base + */ + BASE_TOPIC: () => LocalizedString /** * Optional */ @@ -2010,9 +2110,9 @@ export type TranslationFunctions = { */ FORMATTING: () => LocalizedString /** - * Format + * Topic/Payload Format */ - FORMAT: () => LocalizedString + MQTT_FORMAT: () => LocalizedString /** * Nested in a single topic */ @@ -2066,9 +2166,9 @@ export type TranslationFunctions = { */ MQTT_QUEUE: () => LocalizedString /** - * Default + * {{Default}} */ - DEFAULT: () => LocalizedString + DEFAULT: (arg0: string | number | boolean) => LocalizedString /** * Set Clean Session */ @@ -2218,7 +2318,7 @@ export type TranslationFunctions = { */ NETWORK_FIXED_IP: () => LocalizedString /** - * Getaway + * Gateway */ NETWORK_GATEWAY: () => LocalizedString /** @@ -2246,13 +2346,21 @@ export type TranslationFunctions = { */ NEW: () => LocalizedString /** - * Rename + * New {0} name */ - RENAME: () => LocalizedString + NEW_NAME_OF: (arg0: unknown) => LocalizedString /** - * Entity + * entity */ ENTITY: () => LocalizedString + /** + * min + */ + MIN: () => LocalizedString + /** + * max + */ + MAX: () => LocalizedString } export type Formatters = {} diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts index 1ab08c6ed..f6edcf107 100644 --- a/interface/src/i18n/nl/index.ts +++ b/interface/src/i18n/nl/index.ts @@ -4,7 +4,7 @@ const nl: Translation = { LANGUAGE: 'Taal', RETRY: 'Opnieuw proberen', LOADING: 'Laden', - IS_REQUIRED: 'is verplicht', + IS_REQUIRED: '{0} is verplicht', SIGN_IN: 'Inloggen', SIGN_OUT: 'Uitloggen', USERNAME: 'Gebruikersnaam', @@ -29,6 +29,10 @@ const nl: Translation = { REFRESH: 'Ververs', EXPORT: 'Export', DEVICE_DETAILS: 'Device Gegevens', + ID_OF: '{0} ID', + DEVICE: 'Apparaat', + PRODUCT: 'Product', + VERSION: 'Versie', BRAND: 'Merk', ENTITY_NAME: 'Entiteit', VALUE: '{{Waarde|waarde}}', @@ -60,7 +64,7 @@ const nl: Translation = { STARTVALUE: 'Startwaarde', WARN_GPIO: 'Waarschuwing: let op met het koppelen van de juiste GPIO pin!', EDIT: 'Wijzigen', - TEMP_SENSOR: 'Temperatuur sensor', + TEMP_SENSOR: '{{Sensor|Temperatuur sensor}}', TEMP_SENSORS: 'Temperatuur Sensoren', WRITE_COMMAND: 'Schrijf commando {cmd}', EMS_BUS_WARNING: @@ -103,10 +107,14 @@ const nl: Translation = { BOARD_PROFILE_TEXT: 'Selecteer een vooraf ingesteld apparaat profiel uit de lijst of kies Eigen om zelf uw hardware te configureren', BOARD_PROFILE: 'Apparaatprofiel', + CUSTOM: 'Custom', + GPIO_OF: '{0} GPIO', BUTTON: 'Toets', TEMPERATURE: 'Temperatuur', PHY_TYPE: 'Eth PHY Type', TX_MODE: 'Tx Mode', + HARDWARE: 'Hardware', + EMS_BUS: '{{BUS|EMS BUS}}', DISABLED: 'Uitgeschakeld', GENERAL_OPTIONS: 'Algemene Opties', LANGUAGE_ENTITIES: 'Taal (voor apparaat entiteiten)', @@ -222,9 +230,12 @@ const nl: Translation = { ERRORS_OF: '{0} Foutmeldingen', DISCONNECT_REASON: 'Verbinding verbroken vanwege', ENABLE_MQTT: 'Activeer MQTT', + BROKER: 'Broker', + CLIENT: 'Client', + BASE_TOPIC: 'Base', OPTIONAL: 'Optioneel', FORMATTING: 'Formatteren', - FORMAT: 'Formattering', + MQTT_FORMAT: 'Topic/Payload Formattering', MQTT_NEST_1: 'Genest in 1 topic', MQTT_NEST_2: 'Als individuele topics', MQTT_RESPONSE: 'Publiceer commando output naar een `response` topic', @@ -276,15 +287,17 @@ const nl: Translation = { NETWORK_USE_DNS: 'Activeer mDNS Service', NETWORK_ENABLE_IPV6: 'Activeer IPv6 support', NETWORK_FIXED_IP: 'Gebruik vast IP addres', - NETWORK_GATEWAY: 'Getaway', - NETWORK_SUBNET: 'Subnet Mask', + NETWORK_GATEWAY: 'Gateway', + NETWORK_SUBNET: 'Subnetmasker', NETWORK_DNS: 'DNS Servers', ADDRESS_OF: '{0} Address', ADMIN: 'Admin', GUEST: 'Gast', NEW: 'Nieuwe', - RENAME: 'Hernoem', - ENTITY: 'Entiteit' + NEW_NAME_OF: 'Hernoem {0}', + ENTITY: 'Entiteit', + MIN: 'min', + MAX: 'max' }; export default nl; diff --git a/interface/src/i18n/no/index.ts b/interface/src/i18n/no/index.ts index 7a8bf8041..b9f64f8b5 100644 --- a/interface/src/i18n/no/index.ts +++ b/interface/src/i18n/no/index.ts @@ -4,7 +4,7 @@ const no: Translation = { LANGUAGE: 'Språk', RETRY: 'Forsøk igjen', LOADING: 'Laster', - IS_REQUIRED: 'er nødvendig', + IS_REQUIRED: '{0} er nødvendig', SIGN_IN: 'Logg inn', SIGN_OUT: 'Logg ut', USERNAME: 'Brukernavn', @@ -29,6 +29,10 @@ const no: Translation = { REFRESH: 'Oppdater', EXPORT: 'Eksport', DEVICE_DETAILS: 'Enhetsdetaljer', + ID_OF: '{0}-ID', + DEVICE: 'Enhets', + PRODUCT: 'Produkt', + VERSION: 'Versjon', BRAND: 'Fabrikat', ENTITY_NAME: 'Objektsnavn', VALUE: '{{Verdi|verdi}}', @@ -60,7 +64,7 @@ const no: Translation = { STARTVALUE: 'Startverdi', WARN_GPIO: 'Advarsel: vær forsiktig ved aktivering av GPIO!', EDIT: 'Endre', - TEMP_SENSOR: 'Temperatursensor', + TEMP_SENSOR: '{{Sensor|Temperatursensor}}', TEMP_SENSORS: 'Temperaturesensorer', WRITE_COMMAND: 'Skriv kommando {cmd}', EMS_BUS_WARNING: @@ -103,11 +107,15 @@ const no: Translation = { BOARD_PROFILE_TEXT: 'Velg en pre-konfigurert prosessor profil fra listen under eller velg Tilpasset for å konfigurere dine egne innstillinger', BOARD_PROFILE: 'Prosessor Profil', + CUSTOM: 'Custom', + GPIO_OF: '{0} GPIO', BUTTON: 'Knapp', TEMPERATURE: 'Temperatur', PHY_TYPE: 'Eth PHY Type', DISABLED: 'avslått', TX_MODE: 'Tx Mode', + HARDWARE: 'Hardware', + EMS_BUS: '{{BUS|EMS BUS}}', GENERAL_OPTIONS: 'Generelle Innstillinger', LANGUAGE_ENTITIES: 'Språk (for objekter)', HIDE_LED: 'Skjul LED', @@ -223,9 +231,12 @@ const no: Translation = { ERRORS_OF: '{0} Feil', DISCONNECT_REASON: 'Årsak til nedkobling', ENABLE_MQTT: 'Aktiver MQTT', + BROKER: 'Broker', + CLIENT: 'Client', + BASE_TOPIC: 'Base', OPTIONAL: 'Valgfritt', FORMATTING: 'Formatering', - FORMAT: 'Format', + MQTT_FORMAT: 'Topic/Payload Format', MQTT_NEST_1: 'Nestet i en topic', MQTT_NEST_2: 'Som individuelle topics', MQTT_RESPONSE: 'Publiser kommandoer til en `response` topic', @@ -277,15 +288,17 @@ const no: Translation = { NETWORK_USE_DNS: 'Aktiviser mDNS Service', NETWORK_ENABLE_IPV6: 'Aktiviser IPv6 støtte', NETWORK_FIXED_IP: 'Benytt statisk IP adresse', - NETWORK_GATEWAY: 'Getaway', - NETWORK_SUBNET: 'Subnet Mask', + NETWORK_GATEWAY: 'Gateway', + NETWORK_SUBNET: 'Nettverksmaske', NETWORK_DNS: 'DNS Servers', ADDRESS_OF: '{0} Address', ADMIN: 'Admin', GUEST: 'Gjest', NEW: 'Ny', - RENAME: 'Bytt navn', - ENTITY: 'Entitet' + NEW_NAME_OF: 'Bytt navn {0}', + ENTITY: 'Entitet', + MIN: 'min', + MAX: 'max' }; export default no; diff --git a/interface/src/i18n/pl/index.ts b/interface/src/i18n/pl/index.ts index b974a6d6a..767d9a586 100644 --- a/interface/src/i18n/pl/index.ts +++ b/interface/src/i18n/pl/index.ts @@ -4,21 +4,21 @@ const pl: Translation = { LANGUAGE: 'Język', RETRY: 'Ponów', LOADING: 'Ładowanie', - IS_REQUIRED: 'Czy wymagany?', - SIGN_IN: 'Zaloguj', - SIGN_OUT: 'Wyloguj', - USERNAME: 'Nazwa użytkownika', + IS_REQUIRED: 'Pole {0} nie może być puste!', + SIGN_IN: 'Zaloguj się', + SIGN_OUT: 'Wyloguj się', + USERNAME: '{{Użytkownik|Nazwa użytkownika|}}', PASSWORD: 'Hasło', SU_PASSWORD: 'Hasło "su"', DASHBOARD: 'Pulpit', SETTINGS_OF: 'Ustawienia {0}', SAVED: 'zostały zapisane.', HELP_OF: 'Pomoc {0}', - LOGGED_IN: 'Zalogowany jako {name}.', + LOGGED_IN: 'Zalogowano użytkownika {name}.', PLEASE_SIGNIN: 'Zaloguj się aby kontynuować.', UPLOAD_SUCCESSFUL: 'Wysyłanie zakończone.', DOWNLOAD_SUCCESSFUL: 'Pobieranie zakończone.', - INVALID_LOGIN: 'Niepoprawny login!', + INVALID_LOGIN: 'Nieprawidłowy użytkownik lub hasło!', NETWORK: '{{Sieć|sieci|}}', SECURITY: '{{B|b|}}ezpieczeństw{{o|a|}}', ONOFF_CAP: 'wł./wył.', @@ -29,9 +29,13 @@ const pl: Translation = { REFRESH: 'Odśwież', EXPORT: 'Eksportuj', DEVICE_DETAILS: 'Szczegóły urządzenia', + ID_OF: 'ID {0}', + DEVICE: 'urządzenia', + PRODUCT: 'produktu', BRAND: 'Marka', + VERSION: 'Wersja', ENTITY_NAME: 'Nazwa encji', - VALUE: '{{Wartość|wartość|}}', + VALUE: '{{W|w|}}artość', SHOW_FAV: 'Pokaż tylko "ulubione"', DEVICE_SENSOR_DATA: 'Dane z urządzeń i czujników', DEVICES_SENSORS: 'Urządzenia i czujniki', @@ -39,7 +43,7 @@ const pl: Translation = { RUN_COMMAND: 'Wykonaj komendę', CHANGE_VALUE: 'Zmień wartość', CANCEL: 'Anuluj', - RESET: '{{Resetuj|Resetowanie|}}', + RESET: 'Reset{{uj|owanie|}}', SEND: 'Wyślij', SAVE: 'Zapisz', REMOVE: 'Usuń', @@ -52,23 +56,23 @@ const pl: Translation = { UPDATE_OF: 'Aktualizacja {0}', REMOVED_OF: 'Usunięto ustawienia {0}.', DELETION_OF: 'Kasowanie {0}', - OFFSET: 'Korekta +/-', + OFFSET: 'Korekta ±', FACTOR: 'Mnożnik', FREQ: 'Częstotliwość', DUTY_CYCLE: 'Wypełnienie', UNIT: 'J.m.', STARTVALUE: 'Wartość początkowa', - WARN_GPIO: 'Uwaga! Bądź ostrożny przypisując GPIO do czujnika!', + WARN_GPIO: 'Uwaga! Zachowaj ostrożność przypisując GPIO do urządzenia!', EDIT: 'Edycja', - TEMP_SENSOR: 'czujnika temperatury', + TEMP_SENSOR: '{{czujnika temperatury|czujnika|}}', TEMP_SENSORS: 'Czujniki temperatury 1-Wire®', WRITE_COMMAND: 'Wyślij komendę {cmd}', EMS_BUS_WARNING: 'Brak połączenia z magistralą EMS. Jeśli ten błąd występuje dłużej niż kilka sekund, sprawdź ustawienia oraz profil płytki interfejsu.', - EMS_BUS_SCANNING: 'Trwa skanowanie magistrali EMS w poszukiwaniu urządzeń...', + EMS_BUS_SCANNING: 'Trwa skanowanie urządzeń na magistrali EMS...', CONNECTED: '{{połączono|połączenie|}}', - TX_ISSUES: 'Problem z zapisem na magistralę EMS. Spróbuj wybrać inny "Sposób transmisji (Tx)".', - DISCONNECTED: 'zostało rozłączone', + TX_ISSUES: 'Problem z zapisem na magistralę EMS. Spróbuj wybrać inny "Tryb transmisji (Tx)".', + DISCONNECTED: 'brak połączenia', EMS_SCAN: 'Czy na pewno wykonać pełne skanowanie magistrali EMS?', EMS_BUS_STATUS: 'Status magistrali EMS', ACTIVE_DEVICES: 'Aktywne urządzenia i czujniki', @@ -87,11 +91,11 @@ const pl: Translation = { 'Odczyty czujników analogowych i cyfrowych', 'Publikacje MQTT', 'Wywołania API', - 'Wpisy w logu systemowym' + 'Wpisy w SysLog' ], NUM_DEVICES: '{num} urządze{{ń|nie|nia|nia|ń}} EMS', NUM_TEMP_SENSORS: '{num} czujni{{ków|k|ki|ki|ków}} temperatury', - NUM_ANALOG_SENSORS: '{num} czujni{{ków|k|ki(two)|ki|ków}} analogow{{ych|y|e|e|ych}}', + NUM_ANALOG_SENSORS: '{num} inn{{ych|e|e|e|ych}} urządze{{ń|nie|nia(two)|nia|ń}} podłączon{{ych|e|e|e|ych}} do EMS-ESP', NUM_DAYS: '{num} {{dni|dzień|dni|dni|dni}}', NUM_SECONDS: '{num} sekun{{d|da|dy|dy|d}}', NUM_HOURS: '{num} godzi{{n|na|ny|ny|n}}', @@ -100,13 +104,17 @@ const pl: Translation = { CUSTOMIZATION: 'Personalizacja', APPLICATION_RESTARTING: 'Trwa ponowne uruchamianie...', INTERFACE_BOARD_PROFILE: 'Profil płytki interfejsu', - BOARD_PROFILE_TEXT: 'Wybierz z listy wstępną konfigurację płytki interfejsu lub stwórz własną konfigurację.', + BOARD_PROFILE_TEXT: 'Wybierz z listy gotowy profil płytki interfejsu lub wybierając "własny..." skonfiguruj posiadany sprzęt samodzielnie.', BOARD_PROFILE: 'Profil płytki', - BUTTON: 'Przycisk', + CUSTOM: 'własny', + GPIO_OF: 'GPIO {0}', + BUTTON: 'przycisku', TEMPERATURE: '1-Wire®', PHY_TYPE: 'Typ układu ethernetowego (PHY)', - DISABLED: 'wyłączony', - TX_MODE: 'Sposób transmisji (Tx)', + DISABLED: '{{wyłączono|brak|}}', + TX_MODE: 'Tryb transmisji (Tx)', + EMS_BUS: '{{magistrali EMS|na magistrali|}}', + HARDWARE: 'sprzętowy', GENERAL_OPTIONS: 'Opcje podstawowe', LANGUAGE_ENTITIES: 'Język encji', HIDE_LED: 'Wyłącz LED', @@ -121,9 +129,9 @@ const pl: Translation = { TRIGGER_TIME: 'Wyzwalaj po czasie', COLD_SHOT_DURATION: 'Czas trwania tryśnięcia zimnej wody', FORMATTING_OPTIONS: 'Opcje formatowania', - BOOLEAN_FORMAT_DASHBOARD: 'Format wartości binarnych dla pulpitu', - BOOLEAN_FORMAT_API: 'Format wartości binarnych dla API/MQTT', - ENUM_FORMAT: 'Format wartości numerowanych dla API/MQTT', + BOOLEAN_FORMAT_DASHBOARD: 'Wartości dwustanowe na pulpicie', + BOOLEAN_FORMAT_API: 'Wartości dwustanowe w API/MQTT', + ENUM_FORMAT: 'Wartości z listy w API/MQTT', INDEX: 'indeks', ENABLE_PARASITE: 'Aktywuj zasilanie pasożytnicze', LOGGING: 'Logowanie', @@ -143,29 +151,29 @@ const pl: Translation = { CUSTOMIZATIONS_SAVED: 'Personalizacje zostały zapisane.', CUSTOMIZATIONS_HELP_1: 'Wybierz urządzenie EMS, dostosuj opcje lub kliknij by zmienić nazwę encji.', CUSTOMIZATIONS_HELP_2: 'oznacz jako ulubioną', - CUSTOMIZATIONS_HELP_3: 'zablokuj możliwość zapisu', + CUSTOMIZATIONS_HELP_3: 'zablokuj akcje zapisu', CUSTOMIZATIONS_HELP_4: 'wyklucz z MQTT i API', CUSTOMIZATIONS_HELP_5: 'ukryj na pulpicie', SELECT_DEVICE: 'wybierz urządzenie', - SET_ALL: 'Zaznacz wszystko jako', + SET_ALL: 'Ustaw wszystko jako', OPTIONS: 'Opcje', - NAME: 'nazwa', + NAME: '{{Nazwa|nazwa|}}', CUSTOMIZATIONS_RESET: 'Czy jesteś pewien, że chcesz usunąć wszystkie personalizacje łącznie z ustawieniami dla czujników temperatury 1-Wire® i urządzeń podłączonych do EMS-ESP?', DEVICE_ENTITIES: 'Encje urządzenia', USER_CUSTOMIZATION: 'Personalizacje użytkownika', SUPPORT_INFORMATION: 'Informacje dotyczące wsparcia', CLICK_HERE: 'Kliknij tu', - HELP_INFORMATION_1: 'W celu znalezienia szczegółowych instrukcji jak skonfigurować EMS-ESP skorzystaj z wiki', - HELP_INFORMATION_2: 'W celu komunikacji na żywo ze społecznością skorzystaj z serwera Discord', + HELP_INFORMATION_1: 'Aby uzyskać instrukcje dotyczące konfiguracji EMS-ESP skorzystaj z wiki w internecie', + HELP_INFORMATION_2: 'Aby dołączyć do naszego serwera Discord i komunikować się na żywo ze społecznością', HELP_INFORMATION_3: 'Aby zaproponować nową funkcjonalność lub zgłosić problem', - HELP_INFORMATION_4: 'zgłaszając problem, nie zapomnij dołączyć informacji o swoim systemie', + HELP_INFORMATION_4: 'Zgłaszając problem, nie zapomnij dołączyć informacji o swoim systemie!', HELP_INFORMATION_5: 'EMS-ESP jest darmowym projektem typu open-source. Aby go wesprzeć, rozważ przyznanie nam gwiazdki na Github!', SUPPORT_INFO: 'Pobierz informacje', UPLOAD_OF: 'Wysyłanie {0}', UPLOAD: 'Wysyłanie', - DOWNLOAD: '{{P|p|P}}obier{{anie|z|z}}', + DOWNLOAD: '{{P|p||P}}obier{{anie|z||z}}', ABORTED: 'zostało przerwane!', FAILED: 'nie powiodło się!', SUCCESSFUL: 'powiodło się.', @@ -193,7 +201,7 @@ const pl: Translation = { CPU_FREQ: 'Taktowanie CPU', HEAP: 'HEAP (wolne / maksymalny przydział)', PSRAM: 'PSRAM (rozmiar / wolne)', - FLASH: 'Układ pamięci flash (rozmiar / taktowanie)', + FLASH: 'Flash (rozmiar / taktowanie)', APPSIZE: 'Aplikacja (wykorzystane / wolne)', FILESYSTEM: 'System plików (wykorzystane / wolne)', BUFFER_SIZE: 'Rozmiar bufora', @@ -202,15 +210,15 @@ const pl: Translation = { DOWNLOAD_CUSTOMIZATION_TEXT: 'Pobierz personalizacje', DOWNLOAD_SETTINGS_TEXT: 'Pobierz ustawienia aplikacji. Uważaj jeśli udostępniasz plik z ustawieniami, ponieważ zawiera on hasła oraz inne wrażliwe informacje!', - UPLOAD_TEXT: 'Wyślij firmware (.bin), ustawienia lub personalizacje (.json)', + UPLOAD_TEXT: 'Wyślij firmware (.bin), ustawienia lub personalizacje (.json). Opcjonalnie, wyślij wcześniej plik walidacji (.md5).', UPLOADING: 'Wysłano', UPLOAD_DROP_TEXT: 'Przeciągnij tutaj plik lub kliknij', ERROR: 'Nieoczekiwany błąd, spróbuj ponownie!', - TIME_SET: 'Ustaw czas', + TIME_SET: 'Zegar został ustawiony.', MANAGE_USERS: 'Zarządzanie użytkownikami', - IS_ADMIN: '{{Admin?|Uprawnienia administratora|}}', + IS_ADMIN: '{{Administrator|Uprawnienia administratora|}}', USER_WARNING: 'Przynajmniej jeden użytkownik musi mieć uprawnienia administratora!', - ADD: 'Doda{{j|wanie|C}}', + ADD: 'Doda{{j|wanie|}}', ACCESS_TOKEN_FOR: 'Token dostępu dla użytkownika', ACCESS_TOKEN_TEXT: 'Token jest używany w wywołaniach REST API wymagających autoryzacji. Można go przekazywać bezpośrednio lub przez URL.', @@ -218,29 +226,32 @@ const pl: Translation = { USER: '{{Użytkownik|użytkownika|}}', MODIFY: 'Edycja', SU_TEXT: - 'Hasło "su" (super-użytkownika) jest wykorzystywane do autoryzacji tokenów oraz dostępu do konsoli z uprawnieniami administratora.', - NOT_ENABLED: 'nieaktywowany', + 'Hasło "su" (super-użytkownika) służy do podpisywania tokenów autoryzujących oraz włączania uprawnień administratora w konsoli.', + NOT_ENABLED: 'nieaktywny', ERRORS_OF: 'Błędy {0}', - DISCONNECT_REASON: 'Powód rozłączenia', + DISCONNECT_REASON: 'Przyczyna braku połączenia', ENABLE_MQTT: 'Aktywuj MQTT', + BROKER: 'brokera', + CLIENT: 'klienta', + BASE_TOPIC: 'Prefiks bazowy', OPTIONAL: 'opcjonalny', FORMATTING: 'Formatowanie', - FORMAT: 'Format', + MQTT_FORMAT: 'Sposób publikowania danych', MQTT_NEST_1: 'zagnieżdżone w pojedynczym temacie', MQTT_NEST_2: 'jako indywidualne tematy', - MQTT_RESPONSE: 'Publikuj odpowiedzi na komendy w temacie "response"', - MQTT_PUBLISH_TEXT_1: 'Publikuj pojedyńcze wartości po zmianie', + MQTT_RESPONSE: 'Rezultat wykonania komendy publikuj w temacie "response"', + MQTT_PUBLISH_TEXT_1: 'Publikuj tematy z pojedynczą wartością bezpośrednio po zmianie', MQTT_PUBLISH_TEXT_2: 'Publikuj w temacie "command" (ioBroker)', - MQTT_PUBLISH_TEXT_3: 'Włącz opcję MQTT Discovery (Home Assistant, Domoticz)', - MQTT_PUBLISH_TEXT_4: 'Prefiks do tematów "discovery"', - MQTT_PUBLISH_INTERVALS: 'Interwał publikowania', + MQTT_PUBLISH_TEXT_3: 'Włącz opcję "MQTT discovery" (Home Assistant, Domoticz)', + MQTT_PUBLISH_TEXT_4: 'Prefiks dla tematów "MQTT discovery"', + MQTT_PUBLISH_INTERVALS: 'Interwały publikowania', MQTT_INT_BOILER: 'Kotły i pompy ciepła', MQTT_INT_THERMOSTATS: 'Termostaty', MQTT_INT_SOLAR: 'Panele solarne', MQTT_INT_MIXER: 'Mieszacze', MQTT_QUEUE: 'Kolejka MQTT', - DEFAULT: 'Domyślnie', - MQTT_CLEAN_SESSION: 'Ustawiaj "Clean session"', + DEFAULT: '{{Pozostałe|Domyślna|}}', + MQTT_CLEAN_SESSION: 'Ustawiaj flagę "Clean session"', MQTT_RETAIN_FLAG: 'Ustawiaj flagę "Retain"', INACTIVE: 'nieaktywny', ACTIVE: 'aktywny', @@ -253,7 +264,7 @@ const pl: Translation = { NTP_SERVER: 'Serwer NTP', TIME_ZONE: 'Strefa czasowa', ACCESS_POINT: '{{Punkt|punktu|}} {{dostępowy|dostępowego|}}', - AP_PROVIDE: 'Aktywuj punkt dostępowy (Access Point)', + AP_PROVIDE: 'Aktywuj punkt dostępowy', AP_PROVIDE_TEXT_1: 'zawsze', AP_PROVIDE_TEXT_2: 'gdy połączenie WiFi jest rozłączone', AP_PROVIDE_TEXT_3: 'nigdy', @@ -262,7 +273,7 @@ const pl: Translation = { AP_CLIENTS: 'Liczba klientów', AP_MAX_CLIENTS: 'Maksymalna liczba klientów', AP_LOCAL_IP: 'Lokalny adres IP', - NETWORK_SCAN: 'Skanuj sieci WiFi', + NETWORK_SCAN: 'Skanowanie sieci WiFi', IDLE: 'uśpiony', LOST: 'zostało utracone.', SCANNING: 'Skanuję', @@ -281,11 +292,13 @@ const pl: Translation = { NETWORK_SUBNET: 'Maska podsieci', NETWORK_DNS: 'Serwery DNS', ADDRESS_OF: 'Adres {0}', - ADMIN: 'Administrator', - GUEST: 'Gość', + ADMIN: 'Użytkownik "administrator".', + GUEST: 'Użytkownik "gość".', NEW: 'Nowy', - RENAME: 'Zmień nazwę', - ENTITY: 'encji' + NEW_NAME_OF: 'Nowa nazwa {0}', + ENTITY: 'encji', + MIN: 'Min.', + MAX: 'Maks.' }; export default pl; diff --git a/interface/src/i18n/se/index.ts b/interface/src/i18n/se/index.ts index d8beb47a7..3e7aa0bad 100644 --- a/interface/src/i18n/se/index.ts +++ b/interface/src/i18n/se/index.ts @@ -4,7 +4,7 @@ const se: Translation = { LANGUAGE: 'Språk', RETRY: 'Försök igen', LOADING: 'Laddar', - IS_REQUIRED: 'Krävs', + IS_REQUIRED: '{0} Krävs', SIGN_IN: 'Logga In', SIGN_OUT: 'Logga Ut', USERNAME: 'Användarnamn', @@ -29,6 +29,10 @@ const se: Translation = { REFRESH: 'Uppdatera', EXPORT: 'Exportera', DEVICE_DETAILS: 'Enhetsdetaljer', + ID_OF: '{0}-ID', + DEVICE: 'Enhets', + PRODUCT: 'Produkt', + VERSION: 'Version', BRAND: 'Fabrikat', ENTITY_NAME: 'Entitetsnamn', VALUE: '{{Värde|värde}}', @@ -60,7 +64,7 @@ const se: Translation = { STARTVALUE: 'Startvärde', WARN_GPIO: 'Varning: Var försiktig vid aktivering av GPIO!', EDIT: 'Ändra', - TEMP_SENSOR: 'Temperatursensor', + TEMP_SENSOR: '{{Sensor|Temperatursensor}}', TEMP_SENSORS: 'Temperatursensorer', WRITE_COMMAND: 'Skrivkommando {cmd}', EMS_BUS_WARNING: @@ -103,11 +107,15 @@ const se: Translation = { BOARD_PROFILE_TEXT: 'Välj en förkonfigurerad hårdvaruprofil från listan nedan eller välj Anpassad för att konfigurera dina egna hårdvaruinställningar', BOARD_PROFILE: 'Hårdvaruprofil', + CUSTOM: 'Custom', + GPIO_OF: '{0} GPIO', BUTTON: 'Knapp', TEMPERATURE: 'Temperatur', PHY_TYPE: 'Eth PHY-typ', DISABLED: 'inaktiverad', TX_MODE: 'Tx Mode', + HARDWARE: 'Hardware', + EMS_BUS: '{{BUS|EMS BUS}}', GENERAL_OPTIONS: 'Allmänna Inställningar', LANGUAGE_ENTITIES: 'Språk (för entiteter)', HIDE_LED: 'Inaktivera LED', @@ -223,9 +231,12 @@ const se: Translation = { ERRORS_OF: '{0} fel', DISCONNECT_REASON: 'Anledning till nedkoppling', ENABLE_MQTT: 'Aktivera MQTT', + BROKER: 'Broker', + CLIENT: 'Client', + BASE_TOPIC: 'Base', OPTIONAL: 'Valfritt', FORMATTING: 'Formatering', - FORMAT: 'Format', + MQTT_FORMAT: 'Topic/Payload Format', MQTT_NEST_1: 'Nestlat i en topic.', MQTT_NEST_2: 'Som individuella topics', MQTT_RESPONSE: 'Publish-kommando som ett `response` topic', @@ -284,8 +295,10 @@ const se: Translation = { ADMIN: 'Admin', GUEST: 'Gäst', NEW: 'Ny', - RENAME: 'Byt namn', - ENTITY: 'Entitet' + NEW_NAME_OF: 'Byt namn {0}', + ENTITY: 'Entitet', + MIN: 'min', + MAX: 'max' }; export default se; diff --git a/interface/src/project/DashboardData.tsx b/interface/src/project/DashboardData.tsx index 04d0bda83..8d96666d7 100644 --- a/interface/src/project/DashboardData.tsx +++ b/interface/src/project/DashboardData.tsx @@ -559,11 +559,11 @@ const DashboardData: FC = () => { offset: sensor.o }); if (response.status === 204) { - enqueueSnackbar(LL.UPLOAD_OF(LL.TEMP_SENSOR()) + ' ' + LL.FAILED(), { variant: 'error' }); + enqueueSnackbar(LL.UPLOAD_OF(LL.TEMP_SENSOR(0)) + ' ' + LL.FAILED(), { variant: 'error' }); } else if (response.status === 403) { enqueueSnackbar(LL.ACCESS_DENIED(), { variant: 'error' }); } else { - enqueueSnackbar(LL.UPDATED_OF(LL.TEMP_SENSOR()), { variant: 'success' }); + enqueueSnackbar(LL.UPDATED_OF(LL.TEMP_SENSOR(0)), { variant: 'success' }); } setSensor(undefined); } catch (error) { @@ -580,11 +580,11 @@ const DashboardData: FC = () => { return ( setSensor(undefined)}> - {LL.EDIT()} {LL.TEMP_SENSOR()} + {LL.EDIT()} {LL.TEMP_SENSOR(0)} - Sensor ID: {sensor.id} + {LL.ID_OF(LL.TEMP_SENSOR(1))}: {sensor.id} @@ -649,22 +649,22 @@ const DashboardData: FC = () => { - + - + - + diff --git a/interface/src/project/SettingsApplication.tsx b/interface/src/project/SettingsApplication.tsx index f73617d31..85379faf8 100644 --- a/interface/src/project/SettingsApplication.tsx +++ b/interface/src/project/SettingsApplication.tsx @@ -133,7 +133,7 @@ const SettingsApplication: FC = () => { {boardProfileSelectItems()} - Custom… + {LL.CUSTOM()}… {data.board_profile === 'CUSTOM' && ( @@ -143,7 +143,7 @@ const SettingsApplication: FC = () => { { { { { { margin="normal" select > - {LL.DISABLED()} + {LL.DISABLED(1)} LAN8720 TLK110 @@ -232,7 +232,7 @@ const SettingsApplication: FC = () => { { { { )} - {LL.SETTINGS_OF('EMS BUS')} + {LL.SETTINGS_OF(LL.EMS_BUS(0))} @@ -296,13 +296,13 @@ const SettingsApplication: FC = () => { EMS EMS+ HT3 - Hardware + {LL.HARDWARE()} { const entities_theme = useTheme({ Table: ` - --data-table-library_grid-template-columns: 120px repeat(1, minmax(80px, 1fr)) 40px 40px 120px; + --data-table-library_grid-template-columns: 120px repeat(1, minmax(80px, 1fr)) 45px 45px 120px; `, BaseRow: ` font-size: 14px; @@ -455,11 +455,11 @@ const SettingsCustomization: FC = () => { {LL.OPTIONS()} - min - max + {LL.MIN()} + {LL.MAX()} {LL.VALUE(0)}
@@ -582,7 +582,7 @@ const SettingsCustomization: FC = () => { const de = deviceEntity; return ( setDeviceEntity(undefined)}> - {LL.EDIT() + ' ' + LL.ENTITY() + ' ' + de.id} + {LL.EDIT() + ' ' + LL.ENTITY() + ' "' + de.id + '"'} { - {LL.DEFAULT() + ' ' + LL.NAME()}: {deviceEntity.n} + {LL.DEFAULT(1) + ' ' + LL.NAME(1)}: {deviceEntity.n} { {