diff --git a/interface/src/SignIn.tsx b/interface/src/SignIn.tsx
index e364f3efe..297658e0e 100644
--- a/interface/src/SignIn.tsx
+++ b/interface/src/SignIn.tsx
@@ -23,6 +23,7 @@ import { loadLocaleAsync } from './i18n/i18n-util.async';
import { ReactComponent as NLflag } from './i18n/NL.svg';
import { ReactComponent as DEflag } from './i18n/DE.svg';
import { ReactComponent as GBflag } from './i18n/GB.svg';
+import { ReactComponent as SEflag } from './i18n/SE.svg';
const SignIn: FC = () => {
const authenticationContext = useContext(AuthenticationContext);
@@ -120,6 +121,10 @@ const SignIn: FC = () => {
NL
+
({
maxWidth: '250px',
@@ -82,6 +83,10 @@ const LayoutAuthMenu: FC = () => {
NL
+
{
}
};
- const renderSetTimeDialog = () => {
- return (
-
- );
- };
+ const renderSetTimeDialog = () => (
+
+ );
const content = () => {
if (!data) {
diff --git a/interface/src/i18n/SE.svg b/interface/src/i18n/SE.svg
new file mode 100644
index 000000000..7ec1787a5
--- /dev/null
+++ b/interface/src/i18n/SE.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/interface/src/i18n/de/index.ts b/interface/src/i18n/de/index.ts
index 0bfd8e64d..cf16d1b33 100644
--- a/interface/src/i18n/de/index.ts
+++ b/interface/src/i18n/de/index.ts
@@ -230,7 +230,7 @@ const de: Translation = {
ACTIVE: 'Aktiv',
UNKNOWN: 'Unbekannt',
SET_TIME: 'Zeiteinstellung',
- SET_TIME_TEXT: 'Geben Sie das lokale Datum und die Zeit ein.',
+ SET_TIME_TEXT: 'Geben Sie das lokale Datum und die Zeit ein',
LOCAL_TIME: 'Lokalzeit',
UTC_TIME: 'UTC Zeit',
ENABLE_NTP: 'Aktiviere NTP',
diff --git a/interface/src/i18n/en/index.ts b/interface/src/i18n/en/index.ts
index de30e2a58..c70c47e0e 100644
--- a/interface/src/i18n/en/index.ts
+++ b/interface/src/i18n/en/index.ts
@@ -134,7 +134,7 @@ const en: BaseTranslation = {
CUSTOMIZATIONS_RESTART: 'All customizations have been removed. Restarting...',
CUSTOMIZATIONS_FULL: 'Selected entities exceeded limit. Please save in batches',
CUSTOMIZATIONS_SAVED: 'Customizations saved',
- CUSTOMIZATIONS_HELP_1: 'Select a device and customize the entities using the options',
+ CUSTOMIZATIONS_HELP_1: 'Select a device and customize the entities options or click to rename',
CUSTOMIZATIONS_HELP_2: 'mark as favorite',
CUSTOMIZATIONS_HELP_3: 'disable write action',
CUSTOMIZATIONS_HELP_4: 'exclude from MQTT and API',
@@ -230,7 +230,7 @@ const en: BaseTranslation = {
ACTIVE: 'Active',
UNKNOWN: 'Unknown',
SET_TIME: 'Set Time',
- SET_TIME_TEXT: 'Enter local date and time below to set the time.',
+ SET_TIME_TEXT: 'Enter local date and time below to set the time',
LOCAL_TIME: 'Local Time',
UTC_TIME: 'UTC Time',
ENABLE_NTP: 'Enable NTP',
diff --git a/interface/src/i18n/i18n-types.ts b/interface/src/i18n/i18n-types.ts
index ddc6adf75..83a8f773f 100644
--- a/interface/src/i18n/i18n-types.ts
+++ b/interface/src/i18n/i18n-types.ts
@@ -9,6 +9,7 @@ export type Locales =
| 'de'
| 'en'
| 'nl'
+ | 'se'
export type Translation = RootTranslation
@@ -543,7 +544,7 @@ type RootTranslation = {
*/
CUSTOMIZATIONS_SAVED: string
/**
- * Select a device and customize the entities using the options
+ * Select a device and customize the entities options or click to rename
*/
CUSTOMIZATIONS_HELP_1: string
/**
@@ -907,7 +908,7 @@ type RootTranslation = {
*/
SET_TIME: string
/**
- * Enter local date and time below to set the time.
+ * Enter local date and time below to set the time
*/
SET_TIME_TEXT: string
/**
@@ -1548,7 +1549,7 @@ export type TranslationFunctions = {
*/
CUSTOMIZATIONS_SAVED: () => LocalizedString
/**
- * Select a device and customize the entities using the options
+ * Select a device and customize the entities options or click to rename
*/
CUSTOMIZATIONS_HELP_1: () => LocalizedString
/**
@@ -1912,7 +1913,7 @@ export type TranslationFunctions = {
*/
SET_TIME: () => LocalizedString
/**
- * Enter local date and time below to set the time.
+ * Enter local date and time below to set the time
*/
SET_TIME_TEXT: () => LocalizedString
/**
diff --git a/interface/src/i18n/i18n-util.async.ts b/interface/src/i18n/i18n-util.async.ts
index fbba713cb..7f8ac7330 100644
--- a/interface/src/i18n/i18n-util.async.ts
+++ b/interface/src/i18n/i18n-util.async.ts
@@ -9,6 +9,7 @@ const localeTranslationLoaders = {
de: () => import('./de'),
en: () => import('./en'),
nl: () => import('./nl'),
+ se: () => import('./se'),
}
const updateDictionary = (locale: Locales, dictionary: Partial) =>
diff --git a/interface/src/i18n/i18n-util.sync.ts b/interface/src/i18n/i18n-util.sync.ts
index ade10c586..2dd390d3f 100644
--- a/interface/src/i18n/i18n-util.sync.ts
+++ b/interface/src/i18n/i18n-util.sync.ts
@@ -8,11 +8,13 @@ import { loadedFormatters, loadedLocales, locales } from './i18n-util'
import de from './de'
import en from './en'
import nl from './nl'
+import se from './se'
const localeTranslations = {
de,
en,
nl,
+ se,
}
export const loadLocale = (locale: Locales): void => {
diff --git a/interface/src/i18n/i18n-util.ts b/interface/src/i18n/i18n-util.ts
index 9e0e035c0..98632d6e6 100644
--- a/interface/src/i18n/i18n-util.ts
+++ b/interface/src/i18n/i18n-util.ts
@@ -11,7 +11,8 @@ export const baseLocale: Locales = 'en'
export const locales: Locales[] = [
'de',
'en',
- 'nl'
+ 'nl',
+ 'se'
]
export const loadedLocales = {} as Record
diff --git a/interface/src/i18n/nl/index.ts b/interface/src/i18n/nl/index.ts
index 3099b9607..d545c42eb 100644
--- a/interface/src/i18n/nl/index.ts
+++ b/interface/src/i18n/nl/index.ts
@@ -230,7 +230,7 @@ const nl: BaseTranslation = {
ACTIVE: 'Actief',
UNKNOWN: 'Onbekend',
SET_TIME: 'Tijd instellen',
- SET_TIME_TEXT: 'Geef de locale datum en tijd in.',
+ SET_TIME_TEXT: 'Geef de locale datum en tijd in',
LOCAL_TIME: 'Locale Tijd',
UTC_TIME: 'UTC Tijd',
ENABLE_NTP: 'Activeer NTP',
diff --git a/interface/src/i18n/se/index.ts b/interface/src/i18n/se/index.ts
new file mode 100644
index 000000000..821b7b71f
--- /dev/null
+++ b/interface/src/i18n/se/index.ts
@@ -0,0 +1,266 @@
+import type { BaseTranslation } from '../i18n-types';
+
+const se: BaseTranslation = {
+ LANGUAGE: 'SE_Language',
+ RETRY: 'SE_Retry',
+ LOADING: 'SE_Loading',
+ IS_REQUIRED: 'SE_is required',
+ SIGN_IN: 'SE_Sign In',
+ SIGN_OUT: 'SE_Sign Out',
+ USERNAME: 'SE_Username',
+ PASSWORD: 'SE_Password',
+ DASHBOARD: 'SE_Dashboard',
+ SETTINGS: 'SE_Settings',
+ SAVED: 'SE_saved',
+ HELP: 'SE_Help',
+ LOGGED_IN: 'SE_Logged in as {name}',
+ PLEASE_SIGNIN: 'SE_Please sign in to continue',
+ UPLOAD_SUCCESSFUL: 'SE_Upload successful',
+ DOWNLOAD_SUCCESSFUL: 'SE_Download successful',
+ INVALID_LOGIN: 'SE_Invalid login details',
+ NETWORK: 'SE_Network',
+ SECURITY: 'SE_Security',
+ ONOFF_CAP: 'SE_ON/OFF',
+ ONOFF: 'SE_on/off',
+ TYPE: 'SE_Type',
+ DESCRIPTION: 'SE_Description',
+ ENTITIES: 'SE_Entities',
+ REFRESH: 'SE_Refresh',
+ EXPORT: 'SE_Export',
+ DEVICE_DETAILS: 'SE_Device Details',
+ BRAND: 'SE_Brand',
+ ENTITY_NAME: 'SE_Entity Name',
+ VALUE: 'SE_Value',
+ SHOW_FAV: 'SE_only show favorites',
+ DEVICE_SENSOR_DATA: 'SE_Device and Sensor Data',
+ DEVICES_SENSORS: 'SE_Devices & Sensors',
+ ATTACHED_SENSORS: 'SE_Attached EMS-ESP Sensors',
+ RUN_COMMAND: 'SE_Call Command',
+ CHANGE_VALUE: 'SE_Change Value',
+ CANCEL: 'SE_Cancel',
+ RESET: 'SE_Reset',
+ SEND: 'SE_Send',
+ SAVE: 'SE_Save',
+ REMOVE: 'SE_Remove',
+ PROBLEM_UPDATING: 'SE_Problem updating',
+ PROBLEM_LOADING: 'SE_Problem loading',
+ ACCESS_DENIED: 'SE_Access Denied',
+ ANALOG_SENSOR: 'SE_Analog Sensor',
+ ANALOG_SENSORS: 'SE_Analog Sensors',
+ UPDATED: 'SE_Updated',
+ UPDATE: 'SE_Update',
+ REMOVED: 'SE_Removed',
+ DELETION: 'SE_Deletion',
+ OFFSET: 'SE_Offset',
+ FACTOR: 'SE_Factor',
+ FREQ: 'SE_Frequency',
+ STARTVALUE: 'SE_Start value',
+ WARN_GPIO: 'SE_Warning: be careful when assigning a GPIO!',
+ EDIT: 'SE_Edit',
+ TEMP_SENSOR: 'SE_Temperature Sensor',
+ TEMP_SENSORS: 'SE_Temperature Sensors',
+ WRITE_COMMAND: 'SE_Write command {cmd}',
+ EMS_BUS_WARNING:
+ 'EMS bus disconnected. If this warning still persists after a few seconds please check settings and board profile',
+ EMS_BUS_SCANNING: 'SE_Scanning for EMS devices...',
+ CONNECTED: 'SE_Connected',
+ TX_ISSUES: 'SE_Tx issues - try a different Tx Mode',
+ DISCONNECTED: 'SE_Disconnected',
+ EMS_SCAN: 'SE_Are you sure you want to initiate a full device scan of the EMS bus?',
+ EMS_BUS_STATUS: 'SE_EMS Bus Status',
+ ACTIVE_DEVICES: 'SE_Active Devices & Sensors',
+ DEVICE: 'SE_Device',
+ SUCCESS: 'SE_SUCCESS',
+ FAIL: 'SE_FAIL',
+ QUALITY: 'SE_QUALITY',
+ SCAN_DEVICES: 'SE_Scan for new devices',
+ EMS_BUS_STATUS_TITLE: 'SE_EMS Bus & Activity Status',
+ SCAN: 'SE_Scan',
+ STATUS_NAMES: [
+ 'SE_EMS Telegrams Received (Rx)',
+ 'SE_EMS Reads (Tx)',
+ 'SE_EMS Writes (Tx)',
+ 'SE_Temperature Sensor Reads',
+ 'SE_Analog Sensor Reads',
+ 'SE_MQTT Publishes',
+ 'SE_API Calls',
+ 'SE_Syslog Messages'
+ ],
+ NUM_DEVICES: 'SE_{num} Device{{s}}',
+ NUM_TEMP_SENSORS: 'SE_{num} Temperature Sensor{{s}}',
+ NUM_ANALOG_SENSORS: 'SE_{num} Analog Sensor{{s}}',
+ NUM_DAYS: 'SE_{num} Day{{s}}',
+ NUM_SECONDS: 'SE_{num} Second{{s}}',
+ NUM_HOURS: 'SE_{num} Hour{{s}}',
+ NUM_MINUTES: 'SE_{num} Minute{{s}}',
+ APPLICATION_SETTINGS: 'SE_Application Settings',
+ CUSTOMIZATION: 'SE_Customization',
+ APPLICATION_RESTARTING: 'SE_EMS-ESP is restarting',
+ BOARD_PROFILE_TEXT:
+ 'Select a pre-configured interface board profile from the list below or choose Custom to configure your own hardware settings',
+ BOARD_PROFILE: 'SE_Board Profile',
+ BUTTON: 'SE_Button',
+ TEMPERATURE: 'SE_Temperature',
+ DISABLED: 'SE_disabled',
+ GENERAL_OPTIONS: 'SE_General Options',
+ LANGUAGE_ENTITIES: 'SE_Language (for device entities)',
+ HIDE_LED: 'SE_Hide LED',
+ ENABLE_TELNET: 'SE_Enable Telnet Console',
+ ENABLE_ANALOG: 'SE_Enable Analog Sensors',
+ CONVERT_FAHRENHEIT: 'SE_Convert temperature values to Fahrenheit',
+ BYPASS_TOKEN: 'SE_Bypass Access Token authorization on API calls',
+ READONLY: 'SE_Enable read-only mode (blocks all outgoing EMS Tx Write commands)',
+ UNDERCLOCK_CPU: 'SE_Underclock CPU speed',
+ ENABLE_SHOWER_TIMER: 'SE_Enable Shower Timer',
+ ENABLE_SHOWER_ALERT: 'SE_Enable Shower Alert',
+ TRIGGER_TIME: 'SE_Trigger Time',
+ COLD_SHOT_DURATION: 'SE_Cold Shot Duration',
+ FORMATTING_OPTIONS: 'SE_Formatting Options',
+ BOOLEAN_FORMAT_DASHBOARD: 'SE_Boolean Format Dashboard',
+ BOOLEAN_FORMAT_API: 'SE_Boolean Format API/MQTT',
+ ENUM_FORMAT: 'SE_Enum Format API/MQTT',
+ INDEX: 'SE_Index',
+ ENABLE_PARASITE: 'SE_Enable parasite power',
+ LOGGING: 'SE_Logging',
+ LOG_HEX: 'SE_Log EMS telegrams in hexadecimal',
+ ENABLE_SYSLOG: 'SE_Enable Syslog',
+ MARK_INTERVAL: 'SE_Mark Interval',
+ SECONDS: 'SE_seconds',
+ MINUTES: 'SE_minutes',
+ RESTART: 'SE_Restart',
+ HOURS: 'SE_hours',
+ RESTART_TEXT: 'SE_EMS-ESP needs to be restarted to apply changed system settings',
+ COMMAND: 'SE_Command',
+ CUSTOMIZATIONS_RESTART: 'SE_All customizations have been removed. Restarting...',
+ CUSTOMIZATIONS_FULL: 'SE_Selected entities exceeded limit. Please save in batches',
+ CUSTOMIZATIONS_SAVED: 'SE_Customizations saved',
+ CUSTOMIZATIONS_HELP_1: 'SE_Select a device and customize the entities using the options',
+ CUSTOMIZATIONS_HELP_2: 'SE_mark as favorite',
+ CUSTOMIZATIONS_HELP_3: 'SE_disable write action',
+ CUSTOMIZATIONS_HELP_4: 'SE_exclude from MQTT and API',
+ CUSTOMIZATIONS_HELP_5: 'SE_hide from Dashboard',
+ SELECT_DEVICE: 'SE_Select a device',
+ SET_ALL: 'SE_set all',
+ OPTIONS: 'SE_Options',
+ NAME: 'SE_Name',
+ CUSTOMIZATIONS_RESET:
+ 'Are you sure you want remove all customizations including the custom settings of the Temperature and Analog sensors?',
+ DEVICE_ENTITIES: 'SE_Device Entities',
+ USER_CUSTOMIZATION: 'SE_User Customization',
+ SUPPORT_INFORMATION: 'SE_Support Information',
+ CLICK_HERE: 'SE_Click Here',
+ HELP_INFORMATION_1: 'SE_Visit the online wiki to get instructions on how to configure EMS-ESP',
+ HELP_INFORMATION_2: 'SE_For live community chat join our Discord server',
+ HELP_INFORMATION_3: 'SE_To request a feature or report a bug',
+ HELP_INFORMATION_4:
+ 'SE_remember to download and attach your system information for a faster response when reporting an issue',
+ HELP_INFORMATION_5:
+ 'SE_EMS-ESP is a free and open-source project. Please support its future development by giving it a star on Github!',
+ SUPPORT_INFO: 'SE_Support Info',
+ UPLOAD: 'SE_Upload',
+ DOWNLOAD: 'SE_Download',
+ ABORTED: 'SE_aborted',
+ FAILED: 'SE_failed',
+ SUCCESSFUL: 'SE_successful',
+ SYSTEM: 'SE_System',
+ LOG: 'SE_Log',
+ STATUS: 'SE_Status',
+ UPLOAD_DOWNLOAD: 'SE_Upload/Download',
+ SYSTEM_VERSION_RUNNING: 'SE_You are currently running version',
+ SYSTEM_APPLY_FIRMWARE: 'SE_to apply the new firmware',
+ CLOSE: 'SE_Close',
+ USE: 'SE_Use',
+ FACTORY_RESET: 'SE_Factory Reset',
+ SYSTEM_FACTORY_TEXT: 'SE_Device has been factory reset and will now restart',
+ SYSTEM_FACTORY_TEXT_DIALOG: 'SE_Are you sure you want to reset the device to its factory defaults?',
+ VERSION_CHECK: 'SE_Version Check',
+ THE_LATEST: 'SE_The latest',
+ PLATFORM: 'SE_Device (Platform / SDK)',
+ UPTIME: 'SE_System Uptime',
+ CPU_FREQ: 'SE_CPU Frequency',
+ HEAP: 'SE_Heap (Free / Max Alloc)',
+ PSRAM: 'SE_PSRAM (Size / Free)',
+ FLASH: 'SE_Flash Chip (Size / Speed)',
+ FILESYSTEM: 'SE_File System (Used / Total)',
+ BUFFER_SIZE: 'SE_Buffer Size',
+ COMPACT: 'SE_Compact',
+ ENABLE_OTA: 'SE_Enable OTA Updates',
+ DOWNLOAD_CUSTOMIZATION_TEXT: 'SE_Download the entity customizations',
+ DOWNLOAD_SETTINGS_TEXT:
+ 'Download the application settings. Be careful when sharing your settings as this file contains passwords and other sensitive system information',
+ UPLOAD_TEXT: 'SE_Upload a new firmware (.bin) file, settings or customizations (.json) file below',
+ UPLOADING: 'SE_Uploading',
+ UPLOAD_DROP_TEXT: 'SE_Drop file or click here',
+ ERROR: 'SE_Unexpected Error, please try again',
+ TIME_SET: 'SE_Time set',
+ MANAGE_USERS: 'SE_Manage Users',
+ IS_ADMIN: 'SE_is Admin',
+ USER_WARNING: 'SE_You must have at least one admin user configured',
+ ADD: 'SE_Add',
+ ACCESS_TOKEN_FOR: 'SE_Access Token for',
+ ACCESS_TOKEN_TEXT:
+ 'SE_The token below is used with REST API calls that require authorization. It can be passed either as a Bearer token in the Authorization header or in the access_token URL query parameter.',
+ GENERATING_TOKEN: 'SE_Generating token',
+ USER: 'SE_User',
+ MODIFY: 'SE_Modify',
+ SU_TEXT:
+ 'SE_The su (super user) password is used to sign authentication tokens and also enable admin privileges within the Console.',
+ NOT_ENABLED: 'SE_Not enabled',
+ ERRORS: 'SE_Errors',
+ DISCONNECT_REASON: 'SE_Disconnect Reason',
+ ENABLE_MQTT: 'SE_Enable MQTT',
+ OPTIONAL: 'SE_Optional',
+ FORMATTING: 'SE_Formatting',
+ FORMAT: 'SE_Format',
+ MQTT_NEST_1: 'SE_Nested in a single topic',
+ MQTT_NEST_2: 'SE_As individual topics',
+ MQTT_RESPONSE: 'SE_Publish command output to a `response` topic',
+ MQTT_PUBLISH_TEXT_1: 'SE_Publish single value topics on change',
+ MQTT_PUBLISH_TEXT_2: 'SE_Publish to command topics (ioBroker)',
+ MQTT_PUBLISH_TEXT_3: 'SE_Enable MQTT Discovery (Home Assistant, Domoticz)',
+ MQTT_PUBLISH_TEXT_4: 'SE_Prefix for the Discovery topics',
+ MQTT_PUBLISH_INTERVALS: 'SE_Publish Intervals',
+ MQTT_INT_BOILER: 'SE_Boilers and Heat Pumps',
+ MQTT_INT_THERMOSTATS: 'SE_Thermostats',
+ MQTT_INT_SOLAR: 'SE_Solar Modules',
+ MQTT_INT_MIXER: 'SE_Mixer Modules',
+ DEFAULT: 'SE_Default',
+ MQTT_CLEAN_SESSION: 'SE_Set Clean Session',
+ MQTT_RETAIN_FLAG: 'SE_Always set Retain flag',
+ INACTIVE: 'SE_Inactive',
+ ACTIVE: 'SE_Active',
+ UNKNOWN: 'SE_Unknown',
+ SET_TIME: 'SE_Set Time',
+ SET_TIME_TEXT: 'SE_Enter local date and time below to set the time',
+ LOCAL_TIME: 'SE_Local Time',
+ UTC_TIME: 'SE_UTC Time',
+ ENABLE_NTP: 'SE_Enable NTP',
+ TIME_ZONE: 'SE_Time Zone',
+ ACCESS_POINT: 'SE_Access Point',
+ AP_PROVIDE: 'SE_Enable Access Point',
+ AP_PROVIDE_TEXT_1: 'SE_always',
+ AP_PROVIDE_TEXT_2: 'SE_when WiFi is disconnected',
+ AP_PROVIDE_TEXT_3: 'SE_never',
+ AP_PREFERRED_CHANNEL: 'SE_Preferred Channel',
+ AP_HIDE_SSID: 'SE_Hide SSID',
+ NETWORK_SCAN: 'SE_Scan WiFi Networks',
+ IDLE: 'SE_Idle',
+ LOST: 'SE_Lost',
+ SCANNING: 'SE_Scanning',
+ SCAN_AGAIN: 'SE_Scan again',
+ NETWORK_SCANNER: 'SE_Network Scanner',
+ NETWORK_NO_WIFI: 'SE_No WiFi networks found',
+ NETWORK_BLANK_SSID: 'SE_leave blank to disable WiFi',
+ POWER: 'SE_Power',
+ NETWORK_DISABLE_SLEEP: 'SE_Disable WiFi Sleep Mode',
+ NETWORK_LOW_BAND: 'SE_Use Lower WiFi Bandwidth',
+ NETWORK_USE_DNS: 'SE_Enable mDNS Service',
+ NETWORK_ENABLE_IPV6: 'SE_Enable IPv6 support',
+ NETWORK_FIXED_IP: 'SE_Use Fixed IP address',
+ ADMIN: 'SE_Admin',
+ GUEST: 'SE_Guest',
+ NEW: 'SE_New',
+ RENAME: 'SE_Rename'
+};
+
+export default se;
diff --git a/interface/src/project/DashboardData.tsx b/interface/src/project/DashboardData.tsx
index e02e38bb2..c60c4eed9 100644
--- a/interface/src/project/DashboardData.tsx
+++ b/interface/src/project/DashboardData.tsx
@@ -580,11 +580,11 @@ const DashboardData: FC = () => {
return (
{data.led_gpio !== 0 && (
diff --git a/interface/src/project/SettingsCustomization.tsx b/interface/src/project/SettingsCustomization.tsx
index 247d9fd1c..315bdb234 100644
--- a/interface/src/project/SettingsCustomization.tsx
+++ b/interface/src/project/SettingsCustomization.tsx
@@ -284,7 +284,7 @@ const SettingsCustomization: FC = () => {
return (
<>
- {LL.CUSTOMIZATIONS_HELP_1()}:
+ {LL.CUSTOMIZATIONS_HELP_1()}
={LL.CUSTOMIZATIONS_HELP_2()}
={LL.CUSTOMIZATIONS_HELP_3()}
@@ -558,10 +558,10 @@ const SettingsCustomization: FC = () => {
);
};
- const renderEditEntity = () => (
- setDeviceEntity(undefined)}>
- {deviceEntity && (
- <>
+ const renderEditEntity = () => {
+ if (deviceEntity) {
+ return (
+ setDeviceEntity(undefined)}>
{LL.RENAME() + ' ' + LL.ENTITY_NAME()}
@@ -599,10 +599,10 @@ const SettingsCustomization: FC = () => {
{LL.SAVE()}
- >
- )}
-
- );
+
+ );
+ }
+ };
return (
diff --git a/src/locale_translations.h b/src/locale_translations.h
index b542ebd83..acdebc7c6 100644
--- a/src/locale_translations.h
+++ b/src/locale_translations.h
@@ -22,8 +22,9 @@
#define EMSESP_LOCALE_EN "en"
#define EMSESP_LOCALE_DE "de"
#define EMSESP_LOCALE_NL "nl"
+#define EMSESP_LOCALE_SE "se"
-// translations are in order en, de
+// translations are in order en, de,nl, se....
// if there is no translation, it will default to en
// General