Merge pull request #702 from pswid/dev

The translation of the web interface into Polish has been corrected and completed (e.g. the word order has been fixed).
This commit is contained in:
Proddy
2022-10-29 11:03:24 +02:00
committed by GitHub
40 changed files with 1071 additions and 804 deletions

View File

@@ -1,5 +1,5 @@
{
"adapter": "react",
"baseLocale": "en",
"baseLocale": "pl",
"$schema": "https://unpkg.com/typesafe-i18n@5.14.0/schema/typesafe-i18n.json"
}

View File

@@ -130,7 +130,7 @@ const LayoutAuthMenu: FC = () => {
<Box pl={2}>
<ItemTypography variant="h6">{me.username}</ItemTypography>
<ItemTypography variant="body1">
{me.admin ? LL.ADMIN() + ' ' + LL.USER() : LL.GUEST() + ' ' + LL.USER()}
{me.admin ? LL.ADMIN() : LL.GUEST()}&nbsp;{LL.USER(2)}
</ItemTypography>
</Box>
</Box>

View File

@@ -31,17 +31,17 @@ const LayoutMenu: FC = () => {
</List>
)}
<List disablePadding component="nav">
<LayoutMenuItem icon={SettingsEthernetIcon} label={LL.NETWORK()} to="/network" />
<LayoutMenuItem icon={SettingsInputAntennaIcon} label={LL.ACCESS_POINT()} to="/ap" />
<LayoutMenuItem icon={SettingsEthernetIcon} label={LL.NETWORK(0)} to="/network" />
<LayoutMenuItem icon={SettingsInputAntennaIcon} label={LL.ACCESS_POINT(0)} to="/ap" />
{features.ntp && <LayoutMenuItem icon={AccessTimeIcon} label="NTP" to="/ntp" />}
{features.mqtt && <LayoutMenuItem icon={DeviceHubIcon} label="MQTT" to="/mqtt" />}
<LayoutMenuItem
icon={LockIcon}
label={LL.SECURITY()}
label={LL.SECURITY(0)}
to="/security"
disabled={!authenticatedContext.me.admin}
/>
<LayoutMenuItem icon={SettingsIcon} label={LL.SYSTEM()} to="/system" />
<LayoutMenuItem icon={SettingsIcon} label={LL.SYSTEM(0)} to="/system" />
</List>
</>
);

View File

@@ -74,7 +74,7 @@ const APSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="ssid"
label={LL.ACCESS_POINT() + ' SSID'}
label={LL.ACCESS_POINT(2) + ' SSID'}
fullWidth
variant="outlined"
value={data.ssid}
@@ -84,7 +84,7 @@ const APSettingsForm: FC = () => {
<ValidatedPasswordField
fieldErrors={fieldErrors}
name="password"
label={LL.ACCESS_POINT() + ' ' + LL.PASSWORD()}
label={LL.ACCESS_POINT(2) + ' ' + LL.PASSWORD()}
fullWidth
variant="outlined"
value={data.password}
@@ -116,7 +116,7 @@ const APSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="max_clients"
label="Max Clients"
label={LL.AP_MAX_CLIENTS()}
value={numberValue(data.max_clients)}
fullWidth
select
@@ -134,7 +134,7 @@ const APSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="local_ip"
label="Local IP"
label={LL.AP_LOCAL_IP()}
fullWidth
variant="outlined"
value={data.local_ip}
@@ -144,7 +144,7 @@ const APSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="gateway_ip"
label="Gateway"
label={LL.NETWORK_GATEWAY()}
fullWidth
variant="outlined"
value={data.gateway_ip}
@@ -154,7 +154,7 @@ const APSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="subnet_mask"
label="Subnet"
label={LL.NETWORK_SUBNET()}
fullWidth
variant="outlined"
value={data.subnet_mask}
@@ -180,7 +180,7 @@ const APSettingsForm: FC = () => {
};
return (
<SectionContent title={LL.ACCESS_POINT() + ' ' + LL.SETTINGS()} titleGutter>
<SectionContent title={LL.SETTINGS_OF( LL.ACCESS_POINT(1) )} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -60,14 +60,14 @@ const APStatusForm: FC = () => {
<SettingsInputAntennaIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary={LL.STATUS()} secondary={apStatus(data)} />
<ListItemText primary={LL.STATUS_OF("")} secondary={apStatus(data)} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
<ListItemAvatar>
<Avatar>IP</Avatar>
</ListItemAvatar>
<ListItemText primary="IP Address" secondary={data.ip_address} />
<ListItemText primary={LL.ADDRESS_OF("IP")} secondary={data.ip_address} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
@@ -76,7 +76,7 @@ const APStatusForm: FC = () => {
<DeviceHubIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="MAC Address" secondary={data.mac_address} />
<ListItemText primary={LL.ADDRESS_OF("MAC")} secondary={data.mac_address} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
@@ -85,7 +85,7 @@ const APStatusForm: FC = () => {
<ComputerIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="AP Clients" secondary={data.station_num} />
<ListItemText primary={LL.AP_CLIENTS()} secondary={data.station_num} />
</ListItem>
<Divider variant="inset" component="li" />
</List>
@@ -99,7 +99,7 @@ const APStatusForm: FC = () => {
};
return (
<SectionContent title={LL.ACCESS_POINT() + ' ' + LL.STATUS()} titleGutter>
<SectionContent title={LL.STATUS_OF( LL.ACCESS_POINT(1) )} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -13,7 +13,7 @@ import { useI18nContext } from '../../i18n/i18n-react';
const AccessPoint: FC = () => {
const { LL } = useI18nContext();
useLayoutTitle(LL.ACCESS_POINT());
useLayoutTitle(LL.ACCESS_POINT(0));
const authenticatedContext = useContext(AuthenticatedContext);
@@ -22,10 +22,10 @@ const AccessPoint: FC = () => {
return (
<>
<RouterTabs value={routerTab}>
<Tab value="status" label={LL.ACCESS_POINT() + ' ' + LL.STATUS()} />
<Tab value="status" label={LL.STATUS_OF( LL.ACCESS_POINT(1) )} />
<Tab
value="settings"
label={LL.ACCESS_POINT() + ' ' + LL.SETTINGS()}
label={LL.SETTINGS_OF( LL.ACCESS_POINT(1) )}
disabled={!authenticatedContext.me.admin}
/>
</RouterTabs>

View File

@@ -22,8 +22,8 @@ const Mqtt: FC = () => {
return (
<>
<RouterTabs value={routerTab}>
<Tab value="status" label={'MQTT ' + LL.STATUS()} />
<Tab value="settings" label={'MQTT ' + LL.SETTINGS()} disabled={!authenticatedContext.me.admin} />
<Tab value="status" label={LL.STATUS_OF("MQTT")} />
<Tab value="settings" label={LL.SETTINGS_OF("MQTT")} disabled={!authenticatedContext.me.admin} />
</RouterTabs>
<Routes>
<Route path="status" element={<MqttStatusForm />} />

View File

@@ -351,7 +351,7 @@ const MqttSettingsForm: FC = () => {
};
return (
<SectionContent title={'MQTT ' + LL.SETTINGS()} titleGutter>
<SectionContent title={LL.SETTINGS_OF("MQTT")} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -50,7 +50,7 @@ const MqttStatusForm: FC = () => {
return LL.NOT_ENABLED();
}
if (connected) {
return LL.CONNECTED() + (connect_count > 1 ? ' (' + connect_count + ')' : '');
return LL.CONNECTED(0) + (connect_count > 1 ? ' (' + connect_count + ')' : '');
}
return LL.DISCONNECTED() + (connect_count > 1 ? ' (' + connect_count + ')' : '');
};
@@ -112,7 +112,7 @@ const MqttStatusForm: FC = () => {
<AutoAwesomeMotionIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="MQTT Queue" secondary={data.mqtt_queued} />
<ListItemText primary={LL.MQTT_QUEUE()} secondary={data.mqtt_queued} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
@@ -121,7 +121,7 @@ const MqttStatusForm: FC = () => {
<SpeakerNotesOffIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary={'MQTT ' + LL.ERRORS()} secondary={data.mqtt_fails} />
<ListItemText primary={LL.ERRORS_OF("MQTT")} secondary={data.mqtt_fails} />
</ListItem>
<Divider variant="inset" component="li" />
</>
@@ -137,7 +137,7 @@ const MqttStatusForm: FC = () => {
<DeviceHubIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary={LL.STATUS()} secondary={mqttStatus(data)} />
<ListItemText primary={LL.STATUS_OF("")} secondary={mqttStatus(data)} />
</ListItem>
<Divider variant="inset" component="li" />
{data.enabled && renderConnectionStatus()}
@@ -152,7 +152,7 @@ const MqttStatusForm: FC = () => {
};
return (
<SectionContent title={'MQTT ' + LL.STATUS()} titleGutter>
<SectionContent title={LL.STATUS_OF("MQTT")} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -15,7 +15,7 @@ import { useI18nContext } from '../../i18n/i18n-react';
const NetworkConnection: FC = () => {
const { LL } = useI18nContext();
useLayoutTitle(LL.NETWORK());
useLayoutTitle(LL.NETWORK(0));
const { routerTab } = useRouterTab();
@@ -45,9 +45,9 @@ const NetworkConnection: FC = () => {
}}
>
<RouterTabs value={routerTab}>
<Tab value="status" label={LL.NETWORK() + ' ' + LL.STATUS()} />
<Tab value="status" label={LL.STATUS_OF( LL.NETWORK(1) )} />
<Tab value="scan" label={LL.NETWORK_SCAN()} disabled={!authenticatedContext.me.admin} />
<Tab value="settings" label={LL.NETWORK() + ' ' + LL.SETTINGS()} disabled={!authenticatedContext.me.admin} />
<Tab value="settings" label={LL.SETTINGS_OF( LL.NETWORK(1) )} disabled={!authenticatedContext.me.admin} />
</RouterTabs>
<Routes>
<Route path="status" element={<NetworkStatusForm />} />

View File

@@ -140,7 +140,7 @@ const WiFiSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="tx_power"
label={'WiFi Tx ' + LL.POWER()}
label={LL.TX_POWER()}
InputProps={{
endAdornment: <InputAdornment position="end">dBm</InputAdornment>
}}
@@ -174,7 +174,7 @@ const WiFiSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="hostname"
label="Hostname"
label={LL.HOSTNAME()}
fullWidth
variant="outlined"
value={data.hostname}
@@ -262,7 +262,7 @@ const WiFiSettingsForm: FC = () => {
};
return (
<SectionContent title={LL.NETWORK() + ' ' + LL.SETTINGS()} titleGutter>
<SectionContent title={LL.SETTINGS_OF( LL.NETWORK(1) )} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -73,13 +73,13 @@ const NetworkStatusForm: FC = () => {
case NetworkConnectionStatus.WIFI_STATUS_NO_SSID_AVAIL:
return 'No SSID Available';
case NetworkConnectionStatus.WIFI_STATUS_CONNECTED:
return LL.CONNECTED() + ' (WiFi)';
return LL.CONNECTED(0) + ' (WiFi)';
case NetworkConnectionStatus.ETHERNET_STATUS_CONNECTED:
return LL.CONNECTED() + ' (Ethernet)';
return LL.CONNECTED(0) + ' (Ethernet)';
case NetworkConnectionStatus.WIFI_STATUS_CONNECT_FAILED:
return LL.CONNECTED() + ' ' + LL.FAILED();
return LL.CONNECTED(1) + ' ' + LL.FAILED();
case NetworkConnectionStatus.WIFI_STATUS_CONNECTION_LOST:
return LL.CONNECTED() + ' ' + LL.LOST();
return LL.CONNECTED(1) + ' ' + LL.LOST();
case NetworkConnectionStatus.WIFI_STATUS_DISCONNECTED:
return LL.DISCONNECTED();
default:
@@ -124,7 +124,7 @@ const NetworkStatusForm: FC = () => {
<ListItemAvatar>
<Avatar>IP</Avatar>
</ListItemAvatar>
<ListItemText primary="IP Address" secondary={IPs(data)} />
<ListItemText primary={LL.ADDRESS_OF("IP")} secondary={IPs(data)} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
@@ -133,14 +133,14 @@ const NetworkStatusForm: FC = () => {
<DeviceHubIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="MAC Address" secondary={data.mac_address} />
<ListItemText primary={LL.ADDRESS_OF("MAC")} secondary={data.mac_address} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
<ListItemAvatar>
<Avatar>#</Avatar>
</ListItemAvatar>
<ListItemText primary="Subnet Mask" secondary={data.subnet_mask} />
<ListItemText primary={LL.NETWORK_SUBNET()} secondary={data.subnet_mask} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
@@ -149,7 +149,7 @@ const NetworkStatusForm: FC = () => {
<SettingsInputComponentIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="Gateway IP" secondary={data.gateway_ip || 'none'} />
<ListItemText primary={LL.NETWORK_GATEWAY()} secondary={data.gateway_ip || 'none'} />
</ListItem>
<Divider variant="inset" component="li" />
<ListItem>
@@ -158,7 +158,7 @@ const NetworkStatusForm: FC = () => {
<DnsIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="DNS Server IP" secondary={dnsServers(data)} />
<ListItemText primary={LL.NETWORK_DNS()} secondary={dnsServers(data)} />
</ListItem>
<Divider variant="inset" component="li" />
</>
@@ -174,7 +174,7 @@ const NetworkStatusForm: FC = () => {
};
return (
<SectionContent title={LL.NETWORK() + ' ' + LL.STATUS()} titleGutter>
<SectionContent title={LL.STATUS_OF( LL.NETWORK(1) )} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -58,7 +58,7 @@ const NTPSettingsForm: FC = () => {
<ValidatedTextField
fieldErrors={fieldErrors}
name="server"
label="Server"
label={LL.NTP_SERVER()}
fullWidth
variant="outlined"
value={data.server}
@@ -96,7 +96,7 @@ const NTPSettingsForm: FC = () => {
};
return (
<SectionContent title={'NTP ' + LL.SETTINGS()} titleGutter>
<SectionContent title={LL.SETTINGS_OF("NTP")} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -100,7 +100,7 @@ const NTPStatusForm: FC = () => {
const renderSetTimeDialog = () => (
<Dialog open={settingTime} onClose={() => setSettingTime(false)}>
<DialogTitle>{LL.SET_TIME()}</DialogTitle>
<DialogTitle>{LL.SET_TIME(1)}</DialogTitle>
<DialogContent dividers>
<Box color="warning.main" p={0} pl={0} pr={0} mt={0} mb={2}>
<Typography variant="body2">{LL.SET_TIME_TEXT()}</Typography>
@@ -129,7 +129,7 @@ const NTPStatusForm: FC = () => {
color="primary"
autoFocus
>
{LL.SET_TIME()}
{LL.SAVE()}
</Button>
</DialogActions>
</Dialog>
@@ -149,7 +149,7 @@ const NTPStatusForm: FC = () => {
<UpdateIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary={LL.STATUS()} secondary={ntpStatus(data)} />
<ListItemText primary={LL.STATUS_OF("")} secondary={ntpStatus(data)} />
</ListItem>
<Divider variant="inset" component="li" />
{isNtpEnabled(data) && (
@@ -160,7 +160,7 @@ const NTPStatusForm: FC = () => {
<DnsIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="NTP Server" secondary={data.server} />
<ListItemText primary={LL.NTP_SERVER()} secondary={data.server} />
</ListItem>
<Divider variant="inset" component="li" />
</>
@@ -196,7 +196,7 @@ const NTPStatusForm: FC = () => {
<Box flexWrap="nowrap" whiteSpace="nowrap">
<ButtonRow>
<Button onClick={openSetTime} variant="outlined" color="primary" startIcon={<AccessTimeIcon />}>
{LL.SET_TIME()}
{LL.SET_TIME(0)}
</Button>
</ButtonRow>
</Box>
@@ -208,7 +208,7 @@ const NTPStatusForm: FC = () => {
};
return (
<SectionContent title={'NTP ' + LL.STATUS()} titleGutter>
<SectionContent title={LL.STATUS_OF("NTP")} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -21,8 +21,8 @@ const NetworkTime: FC = () => {
return (
<>
<RouterTabs value={routerTab}>
<Tab value="status" label={'NTP ' + LL.STATUS()} />
<Tab value="settings" label={'NTP ' + LL.SETTINGS()} disabled={!authenticatedContext.me.admin} />
<Tab value="status" label={LL.STATUS_OF("NTP")} />
<Tab value="settings" label={LL.SETTINGS_OF("NTP")} disabled={!authenticatedContext.me.admin} />
</RouterTabs>
<Routes>
<Route path="status" element={<NTPStatusForm />} />

View File

@@ -141,7 +141,7 @@ const ManageUsersForm: FC = () => {
<Header>
<HeaderRow>
<HeaderCell resize>{LL.USERNAME()}</HeaderCell>
<HeaderCell stiff>{LL.IS_ADMIN()}</HeaderCell>
<HeaderCell stiff>{LL.IS_ADMIN(0)}</HeaderCell>
<HeaderCell stiff />
</HeaderRow>
</Header>
@@ -192,7 +192,7 @@ const ManageUsersForm: FC = () => {
<Box flexWrap="nowrap" whiteSpace="nowrap">
<ButtonRow>
<Button startIcon={<PersonAddIcon />} variant="outlined" color="secondary" onClick={createUser}>
{LL.ADD()}
{LL.ADD(0)}
</Button>
</ButtonRow>
</Box>

View File

@@ -12,7 +12,7 @@ import { useI18nContext } from '../../i18n/i18n-react';
const Security: FC = () => {
const { LL } = useI18nContext();
useLayoutTitle(LL.SECURITY());
useLayoutTitle(LL.SECURITY(0));
const { routerTab } = useRouterTab();
@@ -20,7 +20,7 @@ const Security: FC = () => {
<>
<RouterTabs value={routerTab}>
<Tab value="users" label={LL.MANAGE_USERS()} />
<Tab value="settings" label={LL.SECURITY() + ' ' + LL.SETTINGS()} />
<Tab value="settings" label={LL.SETTINGS_OF( LL.SECURITY(1) )} />
</RouterTabs>
<Routes>
<Route path="users" element={<ManageUsersForm />} />

View File

@@ -46,7 +46,7 @@ const SecuritySettingsForm: FC = () => {
<ValidatedPasswordField
fieldErrors={fieldErrors}
name="jwt_secret"
label={'su ' + LL.PASSWORD()}
label={LL.SU_PASSWORD()}
fullWidth
variant="outlined"
value={data.jwt_secret}
@@ -71,7 +71,7 @@ const SecuritySettingsForm: FC = () => {
};
return (
<SectionContent title={LL.SECURITY() + ' ' + LL.SETTINGS()} titleGutter>
<SectionContent title={LL.SETTINGS_OF( LL.SECURITY(1) )} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -54,7 +54,7 @@ const UserForm: FC<UserFormProps> = ({ creating, validator, user, setUser, onDon
{user && (
<>
<DialogTitle id="user-form-dialog-title">
{creating ? LL.ADD() : LL.MODIFY()}&nbsp;{LL.USER()}
{creating ? LL.ADD(1) : LL.MODIFY()}&nbsp;{LL.USER(1)}
</DialogTitle>
<DialogContent dividers>
<ValidatedTextField
@@ -80,7 +80,7 @@ const UserForm: FC<UserFormProps> = ({ creating, validator, user, setUser, onDon
/>
<BlockFormControlLabel
control={<Checkbox name="admin" checked={user.admin} onChange={updateFormValue} />}
label={LL.IS_ADMIN()}
label={LL.IS_ADMIN(1)}
/>
</DialogContent>
<DialogActions>
@@ -94,7 +94,7 @@ const UserForm: FC<UserFormProps> = ({ creating, validator, user, setUser, onDon
color="primary"
autoFocus
>
{LL.ADD()}
{LL.ADD(0)}
</Button>
</DialogActions>
</>

View File

@@ -85,7 +85,7 @@ const GeneralFileUpload: FC<UploadFileProps> = ({ uploadGeneralFile }) => {
{!uploading && (
<>
<Typography sx={{ pt: 2, pb: 2 }} variant="h6" color="primary">
{LL.DOWNLOAD()}
{LL.DOWNLOAD(0)}
</Typography>
<Box color="warning.main">
<Typography mb={1} variant="body2">
@@ -93,7 +93,7 @@ const GeneralFileUpload: FC<UploadFileProps> = ({ uploadGeneralFile }) => {
</Typography>
</Box>
<Button startIcon={<DownloadIcon />} variant="outlined" color="primary" onClick={() => downloadSettings()}>
{LL.SETTINGS()}
{LL.SETTINGS_OF("")}
</Button>
<Box color="warning.main">
<Typography mt={2} mb={1} variant="body2">

View File

@@ -93,7 +93,7 @@ const OTASettingsForm: FC = () => {
};
return (
<SectionContent title={'OTA ' + LL.SETTINGS()} titleGutter>
<SectionContent title={LL.SETTINGS_OF("OTA")} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -17,7 +17,7 @@ import { useI18nContext } from '../../i18n/i18n-react';
const System: FC = () => {
const { LL } = useI18nContext();
useLayoutTitle(LL.SYSTEM());
useLayoutTitle(LL.SYSTEM(0));
const { me } = useContext(AuthenticatedContext);
const { features } = useContext(FeaturesContext);
@@ -26,10 +26,10 @@ const System: FC = () => {
return (
<>
<RouterTabs value={routerTab}>
<Tab value="status" label={LL.SYSTEM() + ' ' + LL.STATUS()} />
<Tab value="log" label={LL.SYSTEM() + ' ' + LL.LOG()} />
<Tab value="status" label={LL.STATUS_OF( LL.SYSTEM(1) )} />
<Tab value="log" label={LL.LOG_OF( LL.SYSTEM(2) )} />
{features.ota && <Tab value="ota" label={'OTA ' + LL.SETTINGS()} disabled={!me.admin} />}
{features.ota && <Tab value="ota" label={LL.SETTINGS_OF("OTA")} disabled={!me.admin} />}
{features.upload_firmware && <Tab value="upload" label={LL.UPLOAD_DOWNLOAD()} disabled={!me.admin} />}
</RouterTabs>
<Routes>

View File

@@ -202,7 +202,7 @@ const SystemLog: FC = () => {
<Grid item xs={4}>
<ValidatedTextField
name="level"
label="Log Level"
label={LL.LOG_LEVEL()}
value={data.level}
fullWidth
variant="outlined"
@@ -278,7 +278,7 @@ const SystemLog: FC = () => {
};
return (
<SectionContent title={LL.SYSTEM() + ' ' + LL.LOG()} titleGutter id="log-window">
<SectionContent title={LL.LOG_OF( LL.SYSTEM(2) )} titleGutter id="log-window">
{content()}
</SectionContent>
);

View File

@@ -135,7 +135,7 @@ const SystemStatusForm: FC = () => {
</Link>
)&nbsp;(
<Link target="_blank" href={latestVersion.url} color="primary">
{LL.DOWNLOAD()}
{LL.DOWNLOAD(1)}
</Link>
)
</Box>
@@ -150,7 +150,7 @@ const SystemStatusForm: FC = () => {
</Link>
)&nbsp;(
<Link target="_blank" href={latestDevVersion.url} color="primary">
{LL.DOWNLOAD()}
{LL.DOWNLOAD(1)}
</Link>
)
</Box>
@@ -229,7 +229,7 @@ const SystemStatusForm: FC = () => {
<BuildIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary="EMS-ESP Version" secondary={'v' + data.emsesp_version} />
<ListItemText primary={LL.EMS_ESP_VER()} secondary={'v' + data.emsesp_version} />
{latestVersion && (
<Button color="primary" onClick={() => setShowingVersion(true)}>
{LL.VERSION_CHECK(0)}
@@ -373,7 +373,7 @@ const SystemStatusForm: FC = () => {
};
return (
<SectionContent title={LL.SYSTEM() + ' ' + LL.STATUS()} titleGutter>
<SectionContent title={LL.STATUS_OF( LL.SYSTEM(1) )} titleGutter>
{content()}
</SectionContent>
);

View File

@@ -9,10 +9,11 @@ const de: Translation = {
SIGN_OUT: 'Ausloggen',
USERNAME: 'Nutzername',
PASSWORD: 'Passwort',
SU_PASSWORD: 'su Passwort',
DASHBOARD: 'Kontrollzentrum',
SETTINGS: 'Einstellungen',
SETTINGS_OF: '{0} Einstellungen',
SAVED: 'gespeichert',
HELP: 'Hilfe',
HELP_OF: '{0} Hilfe',
LOGGED_IN: 'Eingeloggt als {name}',
PLEASE_SIGNIN: 'Bitte einloggen, um fortzufahren',
UPLOAD_SUCCESSFUL: 'Hochladen erfolgreich',
@@ -47,13 +48,15 @@ const de: Translation = {
ACCESS_DENIED: 'Zugriff abgelehnt',
ANALOG_SENSOR: 'Analogsensor',
ANALOG_SENSORS: 'Analogsensoren',
UPDATED: 'Aktualisiert',
UPDATE: 'Aktualisieren',
REMOVED: 'Entfernt',
DELETION: 'Löschung',
UPDATED_OF: '{0} Aktualisiert',
UPDATE_OF: '{0} Aktualisieren',
REMOVED_OF: '{0} Entfernt',
DELETION_OF: '{0} Löschung',
OFFSET: 'Addition',
FACTOR: 'Faktor',
FREQ: 'Frequenz',
DUTY_CYCLE: 'Duty Cycle',
UNIT: 'UoM',
STARTVALUE: 'Startwert',
WARN_GPIO: 'Warnung: Vorsicht bei der korrekten Wahl des GPIO!',
EDIT: 'Editiere',
@@ -69,7 +72,7 @@ const de: Translation = {
EMS_SCAN: 'Möchten Sie wirklich eine vollständige Gerätesuche des EMS-Busses starten?',
EMS_BUS_STATUS: 'EMS-Busstatus',
ACTIVE_DEVICES: 'Aktive Geräte und Sensoren',
DEVICE: 'Gerät',
EMS_DEVICE: 'EMS Gerät',
SUCCESS: 'ERFOLG',
FAIL: 'FEHLER',
QUALITY: 'QUALITÄT',
@@ -96,12 +99,14 @@ const de: Translation = {
APPLICATION_SETTINGS: 'Anwendungseinstellungen',
CUSTOMIZATION: 'Anpassungen',
APPLICATION_RESTARTING: 'EMS-ESP startet neu',
BOARD_PROFILE_TEXT:
'Wählen Sie ein vorkonfiguriertes Platinenprofil aus der Liste unten aus oder wählen Sie "Custom", um Ihre eigenen Hardwareeinstellungen zu konfigurieren',
INTERFACE_BOARD_PROFILE: 'Interface Platinenprofil',
BOARD_PROFILE_TEXT: 'Wählen Sie ein vorkonfiguriertes Platinenprofil aus der Liste unten aus oder wählen Sie "Custom", um Ihre eigenen Hardwareeinstellungen zu konfigurieren',
BOARD_PROFILE: 'Platinenprofil',
BUTTON: 'Taste',
TEMPERATURE: 'Temperatur',
PHY_TYPE: 'Eth PHY Type',
DISABLED: 'deaktiviert',
TX_MODE: 'Tx Mode',
GENERAL_OPTIONS: 'Allgemeine Optionen',
LANGUAGE_ENTITIES: 'Sprache (für Geräteentitäten)',
HIDE_LED: 'LED ausblenden',
@@ -124,6 +129,7 @@ const de: Translation = {
LOGGING: 'Protokollierung',
LOG_HEX: 'EMS-Telegramme hexadezimal protokollieren',
ENABLE_SYSLOG: 'Syslog aktivieren',
LOG_LEVEL: 'Log Level',
MARK_INTERVAL: 'Intervallmarke',
SECONDS: 'Sekunden',
MINUTES: 'Minuten',
@@ -157,14 +163,15 @@ const de: Translation = {
HELP_INFORMATION_5:
'EMS-ESP ist ein freies Open-Source Projekt. Bitte unterstützen Sie die zukünftige Entwicklung mit einem "Star" auf Github!',
SUPPORT_INFO: 'Support Info',
UPLOAD_OF: '{0} Hochladen',
UPLOAD: 'Hochladen',
DOWNLOAD: 'Herunterladen',
ABORTED: 'abgebrochen',
FAILED: 'gescheitert',
SUCCESSFUL: 'erfolgreich',
SYSTEM: 'System',
LOG: 'Log',
STATUS: 'Status',
LOG_OF: '{0} Log',
STATUS_OF: '{0} Status',
UPLOAD_DOWNLOAD: 'Hoch-/Herunterladen',
SYSTEM_VERSION_RUNNING: 'Sie verwenden die Version',
SYSTEM_APPLY_FIRMWARE: 'um die neue Firmware anzuwenden',
@@ -179,6 +186,7 @@ const de: Translation = {
DEVELOPMENT: 'development',
VERSION_IS: 'Version ist',
RELEASE_NOTES: 'Versionshinweise',
EMS_ESP_VER: 'EMS-ESP Version',
PLATFORM: 'Platform (Platform / SDK)',
UPTIME: 'System Betriebszeit',
CPU_FREQ: 'CPU Frequenz',
@@ -211,7 +219,7 @@ const de: Translation = {
SU_TEXT:
'Das su (super user) Passwort wird zum Signieren der Authentifikations-Tokens verwendet und ermöglicht Admin-Berechtigung in der Konsole.',
NOT_ENABLED: 'Nicht aktiviert',
ERRORS: 'Fehler',
ERRORS_OF: '{0} Fehler',
DISCONNECT_REASON: 'Grund der Verbindungsunterbrechung',
ENABLE_MQTT: 'MQTT aktivieren',
OPTIONAL: 'Optional',
@@ -229,6 +237,7 @@ const de: Translation = {
MQTT_INT_THERMOSTATS: 'Thermostate',
MQTT_INT_SOLAR: 'Solarmodule',
MQTT_INT_MIXER: 'Mischermodule',
MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard',
MQTT_CLEAN_SESSION: 'Setze `Clean Session`',
MQTT_RETAIN_FLAG: 'Setze `Retain flag` immer',
@@ -240,6 +249,7 @@ const de: Translation = {
LOCAL_TIME: 'Lokalzeit',
UTC_TIME: 'UTC Zeit',
ENABLE_NTP: 'Aktiviere NTP',
NTP_SERVER: 'NTP Server',
TIME_ZONE: 'Zeitzone',
ACCESS_POINT: 'Zugangspunkt',
AP_PROVIDE: 'Aktiviere Zugangspunkt',
@@ -248,6 +258,9 @@ const de: Translation = {
AP_PROVIDE_TEXT_3: 'Niemals',
AP_PREFERRED_CHANNEL: 'Bevorzugter Kanal',
AP_HIDE_SSID: 'Verstecke SSID',
AP_CLIENTS: 'AP Clients',
AP_MAX_CLIENTS: 'Max Clients',
AP_LOCAL_IP: 'Local IP',
NETWORK_SCAN: 'Suche nach WiFi Netzwerken',
IDLE: 'Leerlauf',
LOST: 'Verloren',
@@ -256,12 +269,17 @@ const de: Translation = {
NETWORK_SCANNER: 'Netzwerk Suche',
NETWORK_NO_WIFI: 'Keine WiFi Netzwerke gefunden',
NETWORK_BLANK_SSID: 'Freilassen um WiFi zu deaktivieren',
POWER: 'Leistung',
TX_POWER: 'Tx Leistung',
HOSTNAME: 'Hostname',
NETWORK_DISABLE_SLEEP: 'Deaktiviere WiFi Schlafmodus',
NETWORK_LOW_BAND: 'Verwende niedrige WiFi Bandbreite',
NETWORK_USE_DNS: 'Aktiviere mDNS Service',
NETWORK_ENABLE_IPV6: 'Aktiviere IPv6 Unterstützung',
NETWORK_FIXED_IP: 'Feste IP Addresse',
NETWORK_GATEWAY: 'Getaway',
NETWORK_SUBNET: 'Subnet Mask',
NETWORK_DNS: 'DNS Servers',
ADDRESS_OF: '{0} Address',
ADMIN: 'Administrator',
GUEST: 'Gast',
NEW: 'Neuer',

View File

@@ -9,10 +9,11 @@ const en: BaseTranslation = {
SIGN_OUT: 'Sign Out',
USERNAME: 'Username',
PASSWORD: 'Password',
SU_PASSWORD: 'su Password',
DASHBOARD: 'Dashboard',
SETTINGS: 'Settings',
SETTINGS_OF: '{0} Settings',
SAVED: 'saved',
HELP: 'Help',
HELP_OF: '{0} Help',
LOGGED_IN: 'Logged in as {name}',
PLEASE_SIGNIN: 'Please sign in to continue',
UPLOAD_SUCCESSFUL: 'Upload successful',
@@ -47,13 +48,15 @@ const en: BaseTranslation = {
ACCESS_DENIED: 'Access Denied',
ANALOG_SENSOR: 'Analog Sensor',
ANALOG_SENSORS: 'Analog Sensors',
UPDATED: 'Updated',
UPDATE: 'Update',
REMOVED: 'Removed',
DELETION: 'Deletion',
UPDATED_OF: '{0} Updated',
UPDATE_OF: '{0} Update',
REMOVED_OF: '{0} Removed',
DELETION_OF: '{0} Deletion',
OFFSET: 'Offset',
FACTOR: 'Factor',
FREQ: 'Frequency',
DUTY_CYCLE: 'Duty Cycle',
UNIT: 'UoM',
STARTVALUE: 'Start value',
WARN_GPIO: 'Warning: be careful when assigning a GPIO!',
EDIT: 'Edit',
@@ -69,7 +72,7 @@ const en: BaseTranslation = {
EMS_SCAN: 'Are you sure you want to initiate a full device scan of the EMS bus?',
EMS_BUS_STATUS: 'EMS Bus Status',
ACTIVE_DEVICES: 'Active Devices & Sensors',
DEVICE: 'Device',
EMS_DEVICE: 'EMS Device',
SUCCESS: 'SUCCESS',
FAIL: 'FAIL',
QUALITY: 'QUALITY',
@@ -96,12 +99,14 @@ const en: BaseTranslation = {
APPLICATION_SETTINGS: 'Application Settings',
CUSTOMIZATION: 'Customization',
APPLICATION_RESTARTING: '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',
INTERFACE_BOARD_PROFILE: 'Interface Board Profile',
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: 'Board Profile',
BUTTON: 'Button',
TEMPERATURE: 'Temperature',
PHY_TYPE: 'Eth PHY Type',
DISABLED: 'disabled',
TX_MODE: 'Tx Mode',
GENERAL_OPTIONS: 'General Options',
LANGUAGE_ENTITIES: 'Language (for device entities)',
HIDE_LED: 'Hide LED',
@@ -124,11 +129,12 @@ const en: BaseTranslation = {
LOGGING: 'Logging',
LOG_HEX: 'Log EMS telegrams in hexadecimal',
ENABLE_SYSLOG: 'Enable Syslog',
LOG_LEVEL: 'Log Level',
MARK_INTERVAL: 'Mark Interval',
SECONDS: 'seconds',
MINUTES: 'minutes',
RESTART: 'Restart',
HOURS: 'hours',
RESTART: 'Restart',
RESTART_TEXT: 'EMS-ESP needs to be restarted to apply changed system settings',
RESTART_CONFIRM: 'Are you sure you want to restart EMS-ESP?',
COMMAND: 'Command',
@@ -158,14 +164,15 @@ const en: BaseTranslation = {
HELP_INFORMATION_5:
'EMS-ESP is a free and open-source project. Please support its future development by giving it a star on Github!',
SUPPORT_INFO: 'Support Info',
UPLOAD_OF: '{0} Upload',
UPLOAD: 'Upload',
DOWNLOAD: 'Download',
DOWNLOAD: '{{Download|download|}}',
ABORTED: 'aborted',
FAILED: 'failed',
SUCCESSFUL: 'successful',
SYSTEM: 'System',
LOG: 'Log',
STATUS: 'Status',
LOG_OF: '{0} Log',
STATUS_OF: '{0} Status',
UPLOAD_DOWNLOAD: 'Upload/Download',
SYSTEM_VERSION_RUNNING: 'You are currently running version',
SYSTEM_APPLY_FIRMWARE: 'to apply the new firmware',
@@ -180,6 +187,7 @@ const en: BaseTranslation = {
DEVELOPMENT: 'development',
VERSION_IS: 'version is',
RELEASE_NOTES: 'release notes',
EMS_ESP_VER: 'EMS-ESP Version',
PLATFORM: 'Device (Platform / SDK)',
UPTIME: 'System Uptime',
CPU_FREQ: 'CPU Frequency',
@@ -212,7 +220,7 @@ const en: BaseTranslation = {
SU_TEXT:
'The su (super user) password is used to sign authentication tokens and also enable admin privileges within the Console.',
NOT_ENABLED: 'Not enabled',
ERRORS: 'Errors',
ERRORS_OF: '{0} Errors',
DISCONNECT_REASON: 'Disconnect Reason',
ENABLE_MQTT: 'Enable MQTT',
OPTIONAL: 'Optional',
@@ -230,6 +238,7 @@ const en: BaseTranslation = {
MQTT_INT_THERMOSTATS: 'Thermostats',
MQTT_INT_SOLAR: 'Solar Modules',
MQTT_INT_MIXER: 'Mixer Modules',
MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Default',
MQTT_CLEAN_SESSION: 'Set Clean Session',
MQTT_RETAIN_FLAG: 'Always set Retain flag',
@@ -241,6 +250,7 @@ const en: BaseTranslation = {
LOCAL_TIME: 'Local Time',
UTC_TIME: 'UTC Time',
ENABLE_NTP: 'Enable NTP',
NTP_SERVER: 'NTP Server',
TIME_ZONE: 'Time Zone',
ACCESS_POINT: 'Access Point',
AP_PROVIDE: 'Enable Access Point',
@@ -249,6 +259,9 @@ const en: BaseTranslation = {
AP_PROVIDE_TEXT_3: 'never',
AP_PREFERRED_CHANNEL: 'Preferred Channel',
AP_HIDE_SSID: 'Hide SSID',
AP_CLIENTS: 'AP Clients',
AP_MAX_CLIENTS: 'Max Clients',
AP_LOCAL_IP: 'Local IP',
NETWORK_SCAN: 'Scan WiFi Networks',
IDLE: 'Idle',
LOST: 'Lost',
@@ -257,12 +270,17 @@ const en: BaseTranslation = {
NETWORK_SCANNER: 'Network Scanner',
NETWORK_NO_WIFI: 'No WiFi networks found',
NETWORK_BLANK_SSID: 'leave blank to disable WiFi',
POWER: 'Power',
TX_POWER: 'Tx Power',
HOSTNAME: 'Hostname',
NETWORK_DISABLE_SLEEP: 'Disable WiFi Sleep Mode',
NETWORK_LOW_BAND: 'Use Lower WiFi Bandwidth',
NETWORK_USE_DNS: 'Enable mDNS Service',
NETWORK_ENABLE_IPV6: 'Enable IPv6 support',
NETWORK_FIXED_IP: 'Use Fixed IP address',
NETWORK_GATEWAY: 'Getaway',
NETWORK_SUBNET: 'Subnet Mask',
NETWORK_DNS: 'DNS Servers',
ADDRESS_OF: '{0} Address',
ADMIN: 'Admin',
GUEST: 'Guest',
NEW: 'New',

File diff suppressed because it is too large Load Diff

View File

@@ -6,7 +6,7 @@ import type { LocaleDetector } from 'typesafe-i18n/detectors'
import { detectLocale as detectLocaleFn } from 'typesafe-i18n/detectors'
import type { Formatters, Locales, Translations, TranslationFunctions } from './i18n-types'
export const baseLocale: Locales = 'en'
export const baseLocale: Locales = 'pl'
export const locales: Locales[] = [
'de',

View File

@@ -1,6 +1,6 @@
import type { BaseTranslation } from '../i18n-types';
import type { Translation } from '../i18n-types';
const nl: BaseTranslation = {
const nl: Translation = {
LANGUAGE: 'Taal',
RETRY: 'Opnieuw proberen',
LOADING: 'Laden',
@@ -9,10 +9,11 @@ const nl: BaseTranslation = {
SIGN_OUT: 'Uitloggen',
USERNAME: 'Gebruikersnaam',
PASSWORD: 'Wachtwoord',
SU_PASSWORD: 'su Wachtwoord',
DASHBOARD: 'Dashboard',
SETTINGS: 'Instellingen',
SETTINGS_OF: '{0} Instellingen',
SAVED: 'opgeslagen',
HELP: 'Help',
HELP_OF: '{0} Help',
LOGGED_IN: 'Ingelogd als {name}',
PLEASE_SIGNIN: 'Log in om verder te gaan',
UPLOAD_SUCCESSFUL: 'Upload successvol',
@@ -47,13 +48,15 @@ const nl: BaseTranslation = {
ACCESS_DENIED: 'Toegang geweigerd',
ANALOG_SENSOR: 'Analoge sensor',
ANALOG_SENSORS: 'Analoge Sensoren',
UPDATED: 'Bijgewerkt',
UPDATE: 'Bijwerken',
REMOVED: 'Verwijderd',
DELETION: 'Verwijder',
UPDATED_OF: '{0} Bijgewerkt',
UPDATE_OF: '{0} Bijwerken',
REMOVED_OF: '{0} Verwijderd',
DELETION_OF: '{0} Verwijder',
OFFSET: 'Offset',
FACTOR: 'Factor',
FREQ: 'Frequentie',
DUTY_CYCLE: 'Duty Cycle',
UNIT: 'UoM',
STARTVALUE: 'Startwaarde',
WARN_GPIO: 'Waarschuwing: let op met het koppelen van de juiste GPIO pin!',
EDIT: 'Wijzigen',
@@ -69,7 +72,7 @@ const nl: BaseTranslation = {
EMS_SCAN: 'Weet je zeker dat je een volledige EMS bus scan uit wilt voeren?',
EMS_BUS_STATUS: 'EMS busstatus',
ACTIVE_DEVICES: 'Actieve Apparaten & Sensoren',
DEVICE: 'Apparaat',
EMS_DEVICE: 'EMS Apparaat',
SUCCESS: 'SUCCESS',
FAIL: 'MISLUKT',
QUALITY: 'QUALITEIT',
@@ -96,11 +99,13 @@ const nl: BaseTranslation = {
APPLICATION_SETTINGS: 'Applicatieinstellingen',
CUSTOMIZATION: 'Custom aanpassingen',
APPLICATION_RESTARTING: 'EMS-ESP herstarten',
BOARD_PROFILE_TEXT:
'Selecteer een vooraf ingesteld apparaat profiel uit de lijst of kies Eigen om zelf uw hardware te configureren',
INTERFACE_BOARD_PROFILE: 'Interface Apparaatprofiel',
BOARD_PROFILE_TEXT: 'Selecteer een vooraf ingesteld apparaat profiel uit de lijst of kies Eigen om zelf uw hardware te configureren',
BOARD_PROFILE: 'Apparaatprofiel',
BUTTON: 'Toets',
TEMPERATURE: 'Temperatuur',
PHY_TYPE: 'Eth PHY Type',
TX_MODE: 'Tx Mode',
DISABLED: 'Uitgeschakeld',
GENERAL_OPTIONS: 'Algemene Opties',
LANGUAGE_ENTITIES: 'Taal (voor apparaat entiteiten)',
@@ -124,11 +129,12 @@ const nl: BaseTranslation = {
LOGGING: 'Logging',
LOG_HEX: 'Log EMS telegrammen in hexadecimaal',
ENABLE_SYSLOG: 'Activeer Syslog',
LOG_LEVEL: 'Log Level',
MARK_INTERVAL: 'Markeringsinterval',
SECONDS: 'seconden',
MINUTES: 'minuten',
RESTART: 'Herstarten',
HOURS: 'uren',
RESTART: 'Herstarten',
RESTART_TEXT: 'EMS-ESP dient opnieuw gestart te worden om de wijzingen toe te passen',
RESTART_CONFIRM: 'Weet je zeker dat je EMS-ESP wilt herstarten?',
COMMAND: 'Commando',
@@ -156,14 +162,15 @@ const nl: BaseTranslation = {
HELP_INFORMATION_4: 'zorg dat je ook je systeem details zijn toevoeged voor een sneller antwoord',
HELP_INFORMATION_5: 'EMS-ESP is een gratis en open source project. Steun ons met een Star op Github!',
SUPPORT_INFO: 'Support Info',
UPLOAD_OF: '{0} Upload',
UPLOAD: 'Upload',
DOWNLOAD: 'Download',
ABORTED: 'afgebroken',
FAILED: 'mislukt',
SUCCESSFUL: 'successvol',
SYSTEM: 'Systeem',
LOG: 'Log',
STATUS: 'Status',
LOG_OF: '{0} Log',
STATUS_OF: '{0} Status',
UPLOAD_DOWNLOAD: 'Upload/Download',
SYSTEM_VERSION_RUNNING: 'op dit moment draai je versie',
SYSTEM_APPLY_FIRMWARE: 'om de nieuwe firmware te activeren',
@@ -178,6 +185,7 @@ const nl: BaseTranslation = {
DEVELOPMENT: 'development',
VERSION_IS: 'versie is',
RELEASE_NOTES: 'release notes',
EMS_ESP_VER: 'EMS-ESP Version',
PLATFORM: 'Apparaat (Platform / SDK)',
UPTIME: 'Systeem Uptime',
CPU_FREQ: 'CPU Frequency',
@@ -210,7 +218,7 @@ const nl: BaseTranslation = {
SU_TEXT:
'Het su (super user) wachtwoord wordt gebruikt om authorisatie tokens te signeren en ook om admin privileges te activeren in de console.',
NOT_ENABLED: 'Niet geactiveerd',
ERRORS: 'Foutmeldingen',
ERRORS_OF: '{0} Foutmeldingen',
DISCONNECT_REASON: 'Verbinding verbroken vanwege',
ENABLE_MQTT: 'Activeer MQTT',
OPTIONAL: 'Optioneel',
@@ -228,6 +236,7 @@ const nl: BaseTranslation = {
MQTT_INT_THERMOSTATS: 'Thermostaten',
MQTT_INT_SOLAR: 'Solar Modules',
MQTT_INT_MIXER: 'Mixer Modules',
MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Default',
MQTT_CLEAN_SESSION: 'Clean Session aan',
MQTT_RETAIN_FLAG: 'Retain flag aan',
@@ -239,6 +248,7 @@ const nl: BaseTranslation = {
LOCAL_TIME: 'Locale Tijd',
UTC_TIME: 'UTC Tijd',
ENABLE_NTP: 'Activeer NTP',
NTP_SERVER: 'NTP Server',
TIME_ZONE: 'Tijdzone',
ACCESS_POINT: 'Access Point',
AP_PROVIDE: 'Activeer Access Point',
@@ -247,6 +257,9 @@ const nl: BaseTranslation = {
AP_PROVIDE_TEXT_3: 'nooit',
AP_PREFERRED_CHANNEL: 'Voorkeurskanaal',
AP_HIDE_SSID: 'SSID verbergen',
AP_CLIENTS: 'AP Clients',
AP_MAX_CLIENTS: 'Max Clients',
AP_LOCAL_IP: 'Local IP',
NETWORK_SCAN: 'Scan WiFi Networken',
IDLE: 'Idle',
LOST: 'Verloren',
@@ -255,12 +268,17 @@ const nl: BaseTranslation = {
NETWORK_SCANNER: 'Netwerk Scanner',
NETWORK_NO_WIFI: 'Geen WiFi networken gevonden',
NETWORK_BLANK_SSID: 'laat leeg om WiFi uit te schakelen',
POWER: 'Vermogen',
TX_POWER: 'Tx Vermogen',
HOSTNAME: 'Hostname',
NETWORK_DISABLE_SLEEP: 'WiFi Sleep Mode uitzetten',
NETWORK_LOW_BAND: 'Lagere WiFi bandbreedte gebruiken',
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_DNS: 'DNS Servers',
ADDRESS_OF: '{0} Address',
ADMIN: 'Admin',
GUEST: 'Gast',
NEW: 'Nieuwe',

View File

@@ -1,6 +1,6 @@
import type { BaseTranslation } from '../i18n-types';
import type { Translation } from '../i18n-types';
const no: BaseTranslation = {
const no: Translation = {
LANGUAGE: 'Språk',
RETRY: 'Forsøk igjen',
LOADING: 'Laster',
@@ -9,10 +9,11 @@ const no: BaseTranslation = {
SIGN_OUT: 'Logg ut',
USERNAME: 'Brukernavn',
PASSWORD: 'Passord',
SU_PASSWORD: 'su Passord',
DASHBOARD: 'Dashboard',
SETTINGS: 'Innstillinger',
SETTINGS_OF: '{0} Innstillinger',
SAVED: 'lagret',
HELP: 'Hjelp',
HELP_OF: '{0} Hjelp',
LOGGED_IN: 'Logget in som {name}',
PLEASE_SIGNIN: 'Venligst logge inn for å fortsetta',
UPLOAD_SUCCESSFUL: 'Opplasting lykkes',
@@ -47,13 +48,15 @@ const no: BaseTranslation = {
ACCESS_DENIED: 'Tilgang nektet',
ANALOG_SENSOR: 'Analog Sensor',
ANALOG_SENSORS: 'Analoge Sensorer',
UPDATED: 'Oppdatert',
UPDATE: 'Oppdater',
REMOVED: 'Slettet',
DELETION: 'Sletting',
UPDATED_OF: '{0} Oppdatert',
UPDATE_OF: '{0} Oppdater',
REMOVED_OF: '{0} Slettet',
DELETION_OF: '{0} Sletting',
OFFSET: 'Kompensering',
FACTOR: 'Faktor',
FREQ: 'Frekvens',
DUTY_CYCLE: 'Duty Cycle',
UNIT: 'UoM',
STARTVALUE: 'Startverdi',
WARN_GPIO: 'Advarsel: vær forsiktig ved aktivering av GPIO!',
EDIT: 'Endre',
@@ -69,7 +72,7 @@ const no: BaseTranslation = {
EMS_SCAN: 'Er du sikker på du vil starte full søking av EMS bussen?',
EMS_BUS_STATUS: 'EMS Buss Status',
ACTIVE_DEVICES: 'Aktive Enheter og Sensorer',
DEVICE: 'Enhet',
EMS_DEVICE: 'EMS Enhet',
SUCCESS: 'VELLYKKET',
FAIL: 'MISLYKKET',
QUALITY: 'KVALITET',
@@ -96,12 +99,14 @@ const no: BaseTranslation = {
APPLICATION_SETTINGS: 'Innstillinger',
CUSTOMIZATION: 'Tilpasninger',
APPLICATION_RESTARTING: 'EMS-ESP restarter',
BOARD_PROFILE_TEXT:
'Velg en pre-konfigurert prosessor profil fra listen under eller velg Tilpasset for å konfigurere dine egne innstillinger',
INTERFACE_BOARD_PROFILE: 'Interface Prosessor Profil',
BOARD_PROFILE_TEXT: 'Velg en pre-konfigurert prosessor profil fra listen under eller velg Tilpasset for å konfigurere dine egne innstillinger',
BOARD_PROFILE: 'Prosessor Profil',
BUTTON: 'Knapp',
TEMPERATURE: 'Temperatur',
PHY_TYPE: 'Eth PHY Type',
DISABLED: 'avslått',
TX_MODE: 'Tx Mode',
GENERAL_OPTIONS: 'Generelle Innstillinger',
LANGUAGE_ENTITIES: 'Språk (for objekter)',
HIDE_LED: 'Skjul LED',
@@ -124,11 +129,12 @@ const no: BaseTranslation = {
LOGGING: 'Logging',
LOG_HEX: 'Logg EMS telegrammer i hexadesimal',
ENABLE_SYSLOG: 'Aktiver Syslog',
LOG_LEVEL: 'Log Level',
MARK_INTERVAL: 'Oppdateringsintervall',
SECONDS: 'sekunder',
MINUTES: 'minutter',
RESTART: 'Omstart',
HOURS: 'timer',
RESTART: 'Omstart',
RESTART_TEXT: 'EMS-ESP må omstartes for å iverksette endrede systeminstillinger',
RESTART_CONFIRM: 'Er du sikker på at du vil omstarte EMS-ESP?',
COMMAND: 'Kommando',
@@ -157,14 +163,15 @@ const no: BaseTranslation = {
'husk å laste ned og legg ved din systeminformasjon for en raskere respons når du rapporterer et problem',
HELP_INFORMATION_5: 'EMS-ESP er gratis og åpen kildekode. Bidra til utviklingen ved å gi oss en stjerne på GitHub!',
SUPPORT_INFO: 'Supportinfo',
UPLOAD_OF: '{0} Opplasning',
UPLOAD: 'Opplasning',
DOWNLOAD: 'Nedlasting',
ABORTED: 'avbrutt',
FAILED: 'feilet',
SUCCESSFUL: 'vellykket',
SYSTEM: 'System',
LOG: 'Logg',
STATUS: 'Status',
LOG_OF: '{0} Logg',
STATUS_OF: '{0} Status',
UPLOAD_DOWNLOAD: 'Opp/Nedlasting',
SYSTEM_VERSION_RUNNING: 'Du benytter versjon',
SYSTEM_APPLY_FIRMWARE: 'for å aktivere ny firmware',
@@ -179,6 +186,7 @@ const no: BaseTranslation = {
DEVELOPMENT: 'development',
VERSION_IS: 'versjonen er',
RELEASE_NOTES: 'release notes',
EMS_ESP_VER: 'EMS-ESP Version',
PLATFORM: 'Enhet (Platform / SDK)',
UPTIME: 'System Oppetid',
CPU_FREQ: 'CPU Frekvens',
@@ -211,7 +219,7 @@ const no: BaseTranslation = {
SU_TEXT:
'su brukeren (super user) passord benyttes for å signere autentiserings token samt å tillate admin privileger i konsoll modus.',
NOT_ENABLED: 'Ikke aktiv',
ERRORS: 'Feil',
ERRORS_OF: '{0} Feil',
DISCONNECT_REASON: 'Årsak til nedkobling',
ENABLE_MQTT: 'Aktiver MQTT',
OPTIONAL: 'Valgfritt',
@@ -229,6 +237,7 @@ const no: BaseTranslation = {
MQTT_INT_THERMOSTATS: 'Termostat',
MQTT_INT_SOLAR: 'Solpaneler',
MQTT_INT_MIXER: 'Blandeventil',
MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard',
MQTT_CLEAN_SESSION: 'Benytt Clean Session',
MQTT_RETAIN_FLAG: 'Alltid sett Retain flag',
@@ -240,6 +249,7 @@ const no: BaseTranslation = {
LOCAL_TIME: 'Lokaltid',
UTC_TIME: 'UTC Tid',
ENABLE_NTP: 'Aktiver NTP',
NTP_SERVER: 'NTP Server',
TIME_ZONE: 'Tidssone',
ACCESS_POINT: 'Aksesspunkt',
AP_PROVIDE: 'Aktiver Aksesspunkt',
@@ -248,6 +258,9 @@ const no: BaseTranslation = {
AP_PROVIDE_TEXT_3: 'aldri',
AP_PREFERRED_CHANNEL: 'Foretrukket kanal',
AP_HIDE_SSID: 'Skjul SSID',
AP_CLIENTS: 'AP Clients',
AP_MAX_CLIENTS: 'Max Clients',
AP_LOCAL_IP: 'Local IP',
NETWORK_SCAN: 'Søk etter trådløst nettverk',
IDLE: 'Klar',
LOST: 'Mistet',
@@ -256,12 +269,17 @@ const no: BaseTranslation = {
NETWORK_SCANNER: 'Nettverk Scanner',
NETWORK_NO_WIFI: 'Ingen trådløse nett funnet',
NETWORK_BLANK_SSID: 'la feltet være blankt for å deaktivisere trådløst nettverk',
POWER: 'Effekt',
TX_POWER: 'Tx Effekt',
HOSTNAME: 'Hostname',
NETWORK_DISABLE_SLEEP: 'Hindre at trådløst nettverk går i Sleep Mode',
NETWORK_LOW_BAND: 'Benytt smalere båndbredde på trådløst nettverk',
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_DNS: 'DNS Servers',
ADDRESS_OF: '{0} Address',
ADMIN: 'Admin',
GUEST: 'Gjest',
NEW: 'Ny',

View File

@@ -1,25 +1,26 @@
import type { BaseTranslation } from '../i18n-types';
import type { Translation } from '../i18n-types';
const pl: BaseTranslation = {
const pl: Translation = {
LANGUAGE: 'Język',
RETRY: 'Ponów',
LOADING: 'Ładowanie',
IS_REQUIRED: 'Czy wymagany?',
SIGN_IN: 'Zaloguj',
SIGN_OUT: 'Wyloguj',
USERNAME: 'Użytkownik',
USERNAME: 'Nazwa użytkownika',
PASSWORD: 'Hasło',
SU_PASSWORD: 'Hasło "su"',
DASHBOARD: 'Pulpit',
SETTINGS: 'Ustawienia',
SAVED: 'zapisano',
HELP: 'Pomoc',
LOGGED_IN: 'Zalogowany jako {name}',
SETTINGS_OF: 'Ustawienia {0}',
SAVED: 'zostały zapisane.',
HELP_OF: 'Pomoc {0}',
LOGGED_IN: 'Zalogowany jako {name}.',
PLEASE_SIGNIN: 'Zaloguj się aby kontynuować.',
UPLOAD_SUCCESSFUL: 'Wysyłanie zakończone.',
DOWNLOAD_SUCCESSFUL: 'Pobieranie zakończone.',
INVALID_LOGIN: 'Niepoprawny login',
NETWORK: 'Sieć',
SECURITY: 'Bezpieczeństwo',
INVALID_LOGIN: 'Niepoprawny login!',
NETWORK: '{{Sieć|sieci|}}',
SECURITY: '{{B|b|}}ezpieczeństw{{o|a|}}',
ONOFF_CAP: 'wł./wył.',
ONOFF: 'włączono/wyłączono',
TYPE: 'Typ',
@@ -30,7 +31,7 @@ const pl: BaseTranslation = {
DEVICE_DETAILS: 'Szczegóły urządzenia',
BRAND: 'Marka',
ENTITY_NAME: 'Nazwa encji',
VALUE: 'Wartość',
VALUE: '{{Wartość|wartość|}}',
SHOW_FAV: 'Pokaż tylko "ulubione"',
DEVICE_SENSOR_DATA: 'Dane z urządzeń i czujników',
DEVICES_SENSORS: 'Urządzenia i czujniki',
@@ -38,22 +39,24 @@ const pl: BaseTranslation = {
RUN_COMMAND: 'Wykonaj komendę',
CHANGE_VALUE: 'Zmień wartość',
CANCEL: 'Anuluj',
RESET: 'Resetuj',
RESET: '{{Resetuj|Resetowanie|}}',
SEND: 'Wyślij',
SAVE: 'Zapisz',
REMOVE: 'Usuń',
PROBLEM_UPDATING: 'Problem z aktualizacją',
PROBLEM_LOADING: 'Problem z pobieraniem',
ACCESS_DENIED: 'Brak dostępu',
ANALOG_SENSOR: 'urządzenia podłączonego do GPIO',
ANALOG_SENSORS: 'Urządzenia podłączone do GPIO',
UPDATED: 'Zaktualizowano',
UPDATE: 'Aktualizacja',
REMOVED: 'Usunięto',
DELETION: 'Skasowano',
PROBLEM_UPDATING: 'Problem z aktualizacją!',
PROBLEM_LOADING: 'Problem z pobieraniem!',
ACCESS_DENIED: 'Brak dostępu!',
ANALOG_SENSOR: 'urządzenia podłączonego do EMS-ESP',
ANALOG_SENSORS: 'Urządzenia podłączone do EMS-ESP',
UPDATED_OF: 'Zaktualizowano ustawienia {0}.',
UPDATE_OF: 'Aktualizacja {0}',
REMOVED_OF: 'Usunięto ustawienia {0}.',
DELETION_OF: 'Kasowanie {0}',
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!',
EDIT: 'Edycja',
@@ -62,14 +65,14 @@ const pl: BaseTranslation = {
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: 'Skanuję w poszukiwaniu urządzeń EMS...',
CONNECTED: 'połączono',
TX_ISSUES: 'Problem z zapisem na magistralę EMS. Spróbuj wybrać inny "tryb Tx"',
DISCONNECTED: 'brak połączenia',
EMS_BUS_SCANNING: 'Trwa skanowanie magistrali EMS w poszukiwaniu urządzeń...',
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',
EMS_SCAN: 'Czy na pewno wykonać pełne skanowanie magistrali EMS?',
EMS_BUS_STATUS: 'Status magistrali EMS',
ACTIVE_DEVICES: 'Aktywne urządzenia i czujniki',
DEVICE: 'Urządzenie',
EMS_DEVICE: 'Urządzenie EMS',
SUCCESS: 'Udane',
FAIL: 'Nieudane',
QUALITY: 'Jakość',
@@ -84,7 +87,7 @@ const pl: BaseTranslation = {
'Odczyty czujników analogowych i cyfrowych',
'Publikacje MQTT',
'Wywołania API',
'Wpisy syslog'
'Wpisy w logu systemowym'
],
NUM_DEVICES: '{num} urządze{{ń|nie|nia|nia|ń}} EMS',
NUM_TEMP_SENSORS: '{num} czujni{{ków|k|ki|ki|ków}} temperatury',
@@ -95,12 +98,15 @@ const pl: BaseTranslation = {
NUM_MINUTES: '{num} minu{{t|ta|ty|ty|t}}',
APPLICATION_SETTINGS: 'Ustawienia aplikacji',
CUSTOMIZATION: 'Personalizacja',
APPLICATION_RESTARTING: 'Trwa ponowne uruchamianie',
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: 'Profil płytki',
BUTTON: 'Przycisk',
TEMPERATURE: '1-Wire®',
PHY_TYPE: 'Typ układu ethernetowego (PHY)',
DISABLED: 'wyłączony',
TX_MODE: 'Sposób transmisji (Tx)',
GENERAL_OPTIONS: 'Opcje podstawowe',
LANGUAGE_ENTITIES: 'Język encji',
HIDE_LED: 'Wyłącz LED',
@@ -118,12 +124,13 @@ const pl: BaseTranslation = {
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',
INDEX: 'Indeks',
INDEX: 'indeks',
ENABLE_PARASITE: 'Aktywuj zasilanie pasożytnicze',
LOGGING: 'Logowanie',
LOG_HEX: 'Loguj telegramy EMS w systemie szesnastkowym (hex)',
ENABLE_SYSLOG: 'Aktywuj syslog',
MARK_INTERVAL: 'Zaznacz interwał',
ENABLE_SYSLOG: 'Aktywuj SysLog',
LOG_LEVEL: 'Poziom logowania',
MARK_INTERVAL: 'Oznaczaj interwały (0=brak)',
SECONDS: 'sek.',
MINUTES: 'min.',
HOURS: 'godz.',
@@ -133,7 +140,7 @@ const pl: BaseTranslation = {
COMMAND: 'KOMENDA',
CUSTOMIZATIONS_RESTART: 'Wszystkie personalizacje zostały usunięte. Restartuję...',
CUSTOMIZATIONS_FULL: 'Wybrano za dużo obiektów. Wprowadź zmiany w mniejszych partiach.',
CUSTOMIZATIONS_SAVED: 'Personalizacje zapisane.',
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',
@@ -144,27 +151,28 @@ const pl: BaseTranslation = {
OPTIONS: 'Opcje',
NAME: 'nazwa',
CUSTOMIZATIONS_RESET:
'Czy jesteś pewien, że chcesz usunąć wszystkie personalizacje łącznie z ustawieniami dla czujników temperatury i analogowych?',
'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: 'Dodatkowe informacje',
SUPPORT_INFORMATION: 'Informacje dotyczące wsparcia',
CLICK_HERE: 'Kliknij tu',
HELP_INFORMATION_1: 'Skorzystaj z wiki w celu znalezienia szczegółowych instrukcji jak skonfigurować EMS-ESP',
HELP_INFORMATION_2: 'Skorzystaj z serwera Discord w celu komunikacji na żywo ze społecznością',
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_3: 'Aby zaproponować nową funkcjonalność lub zgłosić problem',
HELP_INFORMATION_4:
'gdy zgłaszasz problem, będzie on szybciej rozwiązany gdy do zgłoszenia dołączysz pełną informację o swoim systemie',
'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: 'Dodatkowe informacje',
SUPPORT_INFO: 'Pobierz informacje',
UPLOAD_OF: 'Wysyłanie {0}',
UPLOAD: 'Wysyłanie',
DOWNLOAD: 'Pobieranie',
ABORTED: 'przerwano.',
DOWNLOAD: '{{P|p|P}}obier{{anie|z|z}}',
ABORTED: 'zostało przerwane!',
FAILED: 'nie powiodło się!',
SUCCESSFUL: 'powiodło się.',
SYSTEM: 'System',
LOG: 'Log',
STATUS: 'Status',
SYSTEM: '{{S|s||s}}yste{{m|mu||mowy}}',
LOG_OF: 'Log {0}',
STATUS_OF: 'Status {0}',
UPLOAD_DOWNLOAD: 'Przesyłanie plików',
SYSTEM_VERSION_RUNNING: 'Obecnie zainstalowana wersja to:',
SYSTEM_APPLY_FIRMWARE: '',
@@ -173,12 +181,13 @@ const pl: BaseTranslation = {
FACTORY_RESET: 'Ustawienia fabryczne',
SYSTEM_FACTORY_TEXT: 'Interfejs EMS-ESP został przywrócony do ustawień fabrycznych i zostanie teraz ponownie uruchomiony.',
SYSTEM_FACTORY_TEXT_DIALOG: 'Czy jesteś pewien, że chcesz przywrócić ustawienia fabryczne interfejsu EMS-ESP? ',
VERSION_CHECK: '{{Sprawdź wersję (main translation idx=0)|Sprawdzanie wersji (alt translation idx=1)|not used (translation idx=other)}}',
VERSION_CHECK: 'Sprawd{{ź|zanie|}} wersj{{ę|i|}}',
THE_LATEST: 'Najnowsza',
OFFICIAL: 'oficjalna',
DEVELOPMENT: 'testowa',
VERSION_IS: 'wersja to',
RELEASE_NOTES: 'lista zmian',
EMS_ESP_VER: 'Wersja EMS-ESP',
PLATFORM: 'Urządzenie (platforma / SDK)',
UPTIME: 'Czas działania systemu',
CPU_FREQ: 'Taktowanie CPU',
@@ -195,23 +204,23 @@ const pl: BaseTranslation = {
'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)',
UPLOADING: 'Wysłano',
UPLOAD_DROP_TEXT: 'Przeciągnij plik lub kliknij',
UPLOAD_DROP_TEXT: 'Przeciągnij tutaj plik lub kliknij',
ERROR: 'Nieoczekiwany błąd, spróbuj ponownie!',
TIME_SET: 'Ustaw czas',
MANAGE_USERS: 'Zarządzanie użytkownikami',
IS_ADMIN: 'Admin?',
USER_WARNING: 'Przynajmniej jeden użytkownik musi mieć uprawnienia admina!',
ADD: 'Dodaj',
ACCESS_TOKEN_FOR: 'Token dostępu dla',
IS_ADMIN: '{{Admin?|Uprawnienia administratora|}}',
USER_WARNING: 'Przynajmniej jeden użytkownik musi mieć uprawnienia administratora!',
ADD: 'Doda{{j|wanie|C}}',
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.',
GENERATING_TOKEN: 'Generowanie tokenu',
USER: 'Użytkownik',
MODIFY: 'Modyfikuj',
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 admina.',
'Hasło "su" (super-użytkownika) jest wykorzystywane do autoryzacji tokenów oraz dostępu do konsoli z uprawnieniami administratora.',
NOT_ENABLED: 'nieaktywowany',
ERRORS: 'Błędy',
ERRORS_OF: 'Błędy {0}',
DISCONNECT_REASON: 'Powód rozłączenia',
ENABLE_MQTT: 'Aktywuj MQTT',
OPTIONAL: 'opcjonalny',
@@ -229,40 +238,50 @@ const pl: BaseTranslation = {
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"',
MQTT_RETAIN_FLAG: 'Ustawiaj flagę "Retain"',
INACTIVE: 'nieaktywny',
ACTIVE: 'aktywny',
UNKNOWN: 'nieznany',
SET_TIME: 'Ustaw datę i godzinę',
SET_TIME: '{{Ustaw zegar|Ustawianie zegara|}}',
SET_TIME_TEXT: 'Wprowadź aktualną datę i godzinę',
LOCAL_TIME: 'Czas lokalny',
UTC_TIME: 'Czas UTC',
ENABLE_NTP: 'Aktywuj NTP (data i godzina będą automatycznie synchronizowane z poniższym serwerem czasu)',
NTP_SERVER: 'Serwer NTP',
TIME_ZONE: 'Strefa czasowa',
ACCESS_POINT: 'Punkt dostępowy',
ACCESS_POINT: '{{Punkt|punktu|}} {{dostępowy|dostępowego|}}',
AP_PROVIDE: 'Aktywuj punkt dostępowy (Access Point)',
AP_PROVIDE_TEXT_1: 'zawsze',
AP_PROVIDE_TEXT_2: 'gdy połączenie WiFi jest rozłączone',
AP_PROVIDE_TEXT_3: 'nigdy',
AP_PREFERRED_CHANNEL: 'Preferowany kanał',
AP_HIDE_SSID: 'Ukryj SSID',
AP_CLIENTS: 'Liczba klientów',
AP_MAX_CLIENTS: 'Maksymalna liczba klientów',
AP_LOCAL_IP: 'Lokalny adres IP',
NETWORK_SCAN: 'Skanuj sieci WiFi',
IDLE: 'uśpiony',
LOST: 'utracony',
LOST: 'zostało utracone.',
SCANNING: 'Skanuję',
SCAN_AGAIN: 'Skanuj ponownie',
NETWORK_SCANNER: 'Skaner sieci WiFi',
NETWORK_NO_WIFI: 'Brak sieci WiFi w zasięgu',
NETWORK_BLANK_SSID: 'pozostaw puste aby wyłączyć WiFi',
POWER: 'moc',
TX_POWER: 'Moc nadawania',
HOSTNAME: 'Nazwa w sieci',
NETWORK_DISABLE_SLEEP: 'Wyłącz tryb usypiania WiFi',
NETWORK_LOW_BAND: 'Używaj zmniejszonej przepustowości WiFi',
NETWORK_USE_DNS: 'Włącz wsparcie dla mDNS',
NETWORK_ENABLE_IPV6: 'Włącz wsparcie dla IPv6',
NETWORK_FIXED_IP: 'Użyj stałego adresu IP',
ADMIN: 'Admin',
NETWORK_GATEWAY: 'Brama',
NETWORK_SUBNET: 'Maska podsieci',
NETWORK_DNS: 'Serwery DNS',
ADDRESS_OF: 'Adres {0}',
ADMIN: 'Administrator',
GUEST: 'Gość',
NEW: 'Nowy',
RENAME: 'Zmień nazwę',

View File

@@ -1,6 +1,6 @@
import type { BaseTranslation } from '../i18n-types';
import type { Translation } from '../i18n-types';
const se: BaseTranslation = {
const se: Translation = {
LANGUAGE: 'Språk',
RETRY: 'Försök igen',
LOADING: 'Laddar',
@@ -9,10 +9,11 @@ const se: BaseTranslation = {
SIGN_OUT: 'Logga Ut',
USERNAME: 'Användarnamn',
PASSWORD: 'Lösenord',
SU_PASSWORD: 'su Lösenord',
DASHBOARD: 'Kontrollpanel',
SETTINGS: 'Inställningar',
SETTINGS_OF: '{0} Inställningar',
SAVED: 'Sparat',
HELP: 'Hjälp',
HELP_OF: '{0} Hjälp',
LOGGED_IN: 'Inloggad som {name}',
PLEASE_SIGNIN: 'Vänligen logga in för att fortsätta',
UPLOAD_SUCCESSFUL: 'Uppladdning lyckades',
@@ -47,13 +48,15 @@ const se: BaseTranslation = {
ACCESS_DENIED: 'Åtkomst Nekad',
ANALOG_SENSOR: 'Analog Sensor',
ANALOG_SENSORS: 'Analoga Sensorer',
UPDATED: 'Uppdaterad',
UPDATE: 'Uppdatera',
REMOVED: 'Raderad',
DELETION: 'Radering',
UPDATED_OF: '{0} Uppdaterad',
UPDATE_OF: '{0} Uppdatera',
REMOVED_OF: '{0} Raderad',
DELETION_OF: '{0} Radering',
OFFSET: 'Kompensering',
FACTOR: 'Faktor',
FREQ: 'Frekvens',
DUTY_CYCLE: 'Duty Cycle',
UNIT: 'UoM',
STARTVALUE: 'Startvärde',
WARN_GPIO: 'Varning: Var försiktig vid aktivering av GPIO!',
EDIT: 'Ändra',
@@ -69,7 +72,7 @@ const se: BaseTranslation = {
EMS_SCAN: 'Är du säker att du vill initiera en full genomsökning av EMS-bussen?',
EMS_BUS_STATUS: 'EMS-Buss Status',
ACTIVE_DEVICES: 'Aktiva Enheter',
DEVICE: 'Enhet',
EMS_DEVICE: 'EMS Enhet',
SUCCESS: 'Lyckades',
FAIL: 'Misslyckades',
QUALITY: 'Kvalitet',
@@ -96,12 +99,14 @@ const se: BaseTranslation = {
APPLICATION_SETTINGS: 'Inställningar',
CUSTOMIZATION: 'Anpassa',
APPLICATION_RESTARTING: 'EMS-ESP startar om',
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',
INTERFACE_BOARD_PROFILE: 'Interface Hårdvaruprofil',
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',
BUTTON: 'Knapp',
TEMPERATURE: 'Temperatur',
PHY_TYPE: 'Eth PHYType',
DISABLED: 'inaktiverad',
TX_MODE: 'Tx Mode',
GENERAL_OPTIONS: 'Allmänna Inställningar',
LANGUAGE_ENTITIES: 'Språk (för entiteter)',
HIDE_LED: 'Inaktivera LED',
@@ -124,12 +129,14 @@ const se: BaseTranslation = {
LOGGING: 'Loggning',
LOG_HEX: 'Logga EMS-telegram i hexadecimal',
ENABLE_SYSLOG: 'Aktivera Syslog',
LOG_LEVEL: 'Log Level',
MARK_INTERVAL: 'Markerings-interval',
SECONDS: 'sekunder',
MINUTES: 'minuter',
RESTART: 'Starta om',
HOURS: 'timmar',
RESTART: 'Starta om',
RESTART_TEXT: 'EMS-ESP kräver en omstart för att applicera förändrade systeminställningar',
RESTART_CONFIRM: 'Är du säker på att du vill starta om EMS-ESP?',
COMMAND: 'Kommando',
CUSTOMIZATIONS_RESTART: 'Alla anpassningr har raderats. Startar om...',
CUSTOMIZATIONS_FULL: 'Antal valda enheter för högt. Vänligen spara i mindre antal åt gången.',
@@ -156,14 +163,15 @@ const se: BaseTranslation = {
HELP_INFORMATION_5:
'EMS-ESP är gratis och är öppen källkod. Bidra till utveklingen genom att ge oss en stjärna på GitHub!',
SUPPORT_INFO: 'Supportinfo',
UPLOAD_OF: '{0} Uppladdning',
UPLOAD: 'Uppladdning',
DOWNLOAD: 'Nedladdning',
ABORTED: 'Avbruten',
FAILED: 'Misslyckades',
SUCCESSFUL: 'Lyckades',
SYSTEM: 'System',
LOG: 'Logg',
STATUS: 'Status',
LOG_OF: '{0} Logg',
STATUS_OF: '{0} Status',
UPLOAD_DOWNLOAD: 'Upp/Nedladdning',
SYSTEM_VERSION_RUNNING: 'Du använder version',
SYSTEM_APPLY_FIRMWARE: 'för att aktivera ny firmware',
@@ -176,8 +184,9 @@ const se: BaseTranslation = {
THE_LATEST: 'Den senaste',
OFFICIAL: 'official',
DEVELOPMENT: 'development',
/**VERSION_IS: 'version is',*/
VERSION_IS: 'version is',
RELEASE_NOTES: 'release notes',
EMS_ESP_VER: 'EMS-ESP Version',
PLATFORM: 'Enhet (Plattform / SDK)',
UPTIME: 'Systemets Uptid',
CPU_FREQ: 'CPU-frekvens',
@@ -210,7 +219,7 @@ const se: BaseTranslation = {
SU_TEXT:
'SU-användarens (super user) lösenord används för att signera autensierings-tokens samt för att aktivera administratörsprivilegier i Console-läge',
NOT_ENABLED: 'Ej aktiv',
ERRORS: 'fel',
ERRORS_OF: '{0} fel',
DISCONNECT_REASON: 'Anledning till nedkoppling',
ENABLE_MQTT: 'Aktivera MQTT',
OPTIONAL: 'Valfritt',
@@ -228,6 +237,7 @@ const se: BaseTranslation = {
MQTT_INT_THERMOSTATS: 'Termostater',
MQTT_INT_SOLAR: 'Solpaneler',
MQTT_INT_MIXER: 'Blandarventiler',
MQTT_QUEUE: 'MQTT Queue',
DEFAULT: 'Standard',
MQTT_CLEAN_SESSION: 'Använd "Clean Session"-flaggan',
MQTT_RETAIN_FLAG: 'Använd "Always Retain"-flaggan',
@@ -239,6 +249,7 @@ const se: BaseTranslation = {
LOCAL_TIME: 'Lokal Tid',
UTC_TIME: 'UTC-tid',
ENABLE_NTP: 'Aktivera NTP',
NTP_SERVER: 'NTP Server',
TIME_ZONE: 'Tidszon',
ACCESS_POINT: 'Accesspunkt',
AP_PROVIDE: 'Aktivera Accesspunkt',
@@ -247,6 +258,9 @@ const se: BaseTranslation = {
AP_PROVIDE_TEXT_3: 'aldrig',
AP_PREFERRED_CHANNEL: 'Föredragen kanal',
AP_HIDE_SSID: 'Göm SSID',
AP_CLIENTS: 'AP Clients',
AP_MAX_CLIENTS: 'Max Clients',
AP_LOCAL_IP: 'Local IP',
NETWORK_SCAN: 'Sök efter WiFi-nätverk',
IDLE: 'Vilande',
LOST: 'Förlorad',
@@ -255,12 +269,17 @@ const se: BaseTranslation = {
NETWORK_SCANNER: 'Hittade nätverk',
NETWORK_NO_WIFI: 'Inga WiFi-nätverk hittades',
NETWORK_BLANK_SSID: 'lämna blankt för att inaktivera WiFi',
POWER: 'Effekt',
TX_POWER: 'Tx Effekt',
HOSTNAME: 'Hostname',
NETWORK_DISABLE_SLEEP: 'Inaktivera sömnläge',
NETWORK_LOW_BAND: 'Använd lägre bandbredd',
NETWORK_USE_DNS: 'Aktivera mDNS-tjänsten',
NETWORK_ENABLE_IPV6: 'Aktivera IPv6-support',
NETWORK_FIXED_IP: 'Använd statiskt IP',
NETWORK_GATEWAY: 'Getaway',
NETWORK_SUBNET: 'Subnet Mask',
NETWORK_DNS: 'DNS Servers',
ADDRESS_OF: '{0} Address',
ADMIN: 'Admin',
GUEST: 'Gäst',
NEW: 'Ny',

View File

@@ -332,7 +332,7 @@ const DashboardData: FC = () => {
{ accessor: (dv: any) => dv.id.slice(2), name: LL.ENTITY_NAME() },
{
accessor: (dv: any) => (typeof dv.v === 'number' ? new Intl.NumberFormat().format(dv.v) : dv.v),
name: LL.VALUE()
name: LL.VALUE(0)
},
{ accessor: (dv: any) => DeviceValueUOM_s[dv.u], name: 'UoM' }
];
@@ -559,11 +559,11 @@ const DashboardData: FC = () => {
offset: sensor.o
});
if (response.status === 204) {
enqueueSnackbar(LL.TEMP_SENSOR() + ' ' + LL.UPLOAD_TEXT() + ' ' + LL.FAILED(), { variant: 'error' });
enqueueSnackbar(LL.UPLOAD_OF( LL.TEMP_SENSOR() ) + ' ' + LL.FAILED(), { variant: 'error' });
} else if (response.status === 403) {
enqueueSnackbar(LL.ACCESS_DENIED(), { variant: 'error' });
} else {
enqueueSnackbar(LL.TEMP_SENSOR() + ' ' + LL.UPDATED(), { variant: 'success' });
enqueueSnackbar(LL.UPDATED_OF( LL.TEMP_SENSOR() ), { variant: 'success' });
}
setSensor(undefined);
} catch (error) {
@@ -802,7 +802,7 @@ const DashboardData: FC = () => {
endIcon={getSortIcon(dv_sort.state, 'VALUE')}
onClick={() => dv_sort.fns.onToggleSort({ sortKey: 'VALUE' })}
>
{LL.VALUE()}
{LL.VALUE(0)}
</Button>
</HeaderCell>
<HeaderCell stiff />
@@ -878,7 +878,7 @@ const DashboardData: FC = () => {
endIcon={getSortIcon(sensor_sort.state, 'TEMPERATURE')}
onClick={() => sensor_sort.fns.onToggleSort({ sortKey: 'TEMPERATURE' })}
>
{LL.VALUE()}
{LL.VALUE(0)}
</Button>
</HeaderCell>
<HeaderCell stiff />
@@ -946,7 +946,7 @@ const DashboardData: FC = () => {
{LL.TYPE()}
</Button>
</HeaderCell>
<HeaderCell stiff>{LL.VALUE()}</HeaderCell>
<HeaderCell stiff>{LL.VALUE(0)}</HeaderCell>
<HeaderCell stiff />
</HeaderRow>
</Header>
@@ -986,11 +986,11 @@ const DashboardData: FC = () => {
});
if (response.status === 204) {
enqueueSnackbar(LL.ANALOG_SENSOR() + ' ' + LL.DELETION() + ' ' + LL.FAILED(), { variant: 'error' });
enqueueSnackbar(LL.DELETION_OF( LL.ANALOG_SENSOR() ) + ' ' + LL.FAILED(), { variant: 'error' });
} else if (response.status === 403) {
enqueueSnackbar(LL.ACCESS_DENIED(), { variant: 'error' });
} else {
enqueueSnackbar(LL.ANALOG_SENSOR() + ' ' + LL.REMOVED(), { variant: 'success' });
enqueueSnackbar( LL.REMOVED_OF( LL.ANALOG_SENSOR() ), { variant: 'success' });
}
} catch (error) {
enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_UPDATING()), { variant: 'error' });
@@ -1014,11 +1014,11 @@ const DashboardData: FC = () => {
});
if (response.status === 204) {
enqueueSnackbar(LL.ANALOG_SENSOR() + ' ' + LL.UPDATE() + ' ' + LL.FAILED(), { variant: 'error' });
enqueueSnackbar(LL.UPDATE_OF( LL.ANALOG_SENSOR() ) + ' ' + LL.FAILED(), { variant: 'error' });
} else if (response.status === 403) {
enqueueSnackbar(LL.ACCESS_DENIED(), { variant: 'error' });
} else {
enqueueSnackbar(LL.ANALOG_SENSOR() + ' ' + LL.UPDATED(), { variant: 'success' });
enqueueSnackbar(LL.UPDATED_OF( LL.ANALOG_SENSOR() ), { variant: 'success' });
}
} catch (error) {
enqueueSnackbar(extractErrorMessage(error, LL.PROBLEM_UPDATING()), { variant: 'error' });
@@ -1077,7 +1077,7 @@ const DashboardData: FC = () => {
{analog.t >= AnalogType.COUNTER && analog.t <= AnalogType.RATE && (
<>
<Grid item>
<ValidatedTextField name="u" label="UoM" value={analog.u} select onChange={updateValue(setAnalog)}>
<ValidatedTextField name="u" label={LL.UNIT()} value={analog.u} select onChange={updateValue(setAnalog)}>
{DeviceValueUOM_s.map((val, i) => (
<MenuItem key={i} value={i}>
{val}
@@ -1135,7 +1135,7 @@ const DashboardData: FC = () => {
<Grid item>
<ValidatedTextField
name="o"
label={LL.VALUE()}
label={LL.VALUE(0)}
value={numberValue(analog.o)}
sx={{ width: '20ch' }}
type="number"
@@ -1151,7 +1151,7 @@ const DashboardData: FC = () => {
<Grid item>
<ValidatedTextField
name="o"
label={LL.VALUE()}
label={LL.VALUE(0)}
value={numberValue(analog.o)}
sx={{ width: '20ch' }}
type="number"
@@ -1182,7 +1182,7 @@ const DashboardData: FC = () => {
<Grid item>
<ValidatedTextField
name="o"
label="Duty Cycle"
label={LL.DUTY_CYCLE()}
value={numberValue(analog.o)}
sx={{ width: '20ch' }}
type="number"

View File

@@ -88,7 +88,7 @@ const DashboardStatus: FC = () => {
const busStatus = ({ status }: Status) => {
switch (status) {
case busConnectionStatus.BUS_STATUS_CONNECTED:
return LL.CONNECTED();
return LL.CONNECTED(0);
case busConnectionStatus.BUS_STATUS_TX_ERRORS:
return LL.TX_ISSUES();
case busConnectionStatus.BUS_STATUS_OFFLINE:
@@ -158,7 +158,7 @@ const DashboardStatus: FC = () => {
const formatDurationSec = (duration_sec: number) => {
const { days, hours, minutes, seconds } = parseMilliseconds(duration_sec * 1000);
let formatted = ' ';
let formatted = '';
if (days) {
formatted += LL.NUM_DAYS({ num: days }) + ' ';
}
@@ -201,7 +201,7 @@ const DashboardStatus: FC = () => {
<DirectionsBusIcon />
</Avatar>
</ListItemAvatar>
<ListItemText primary={LL.EMS_BUS_STATUS()} secondary={busStatus(data) + formatDurationSec(data.uptime)} />
<ListItemText primary={LL.EMS_BUS_STATUS()} secondary={busStatus(data) + ' (' + formatDurationSec(data.uptime) + ')'} />
</ListItem>
<ListItem>
<ListItemAvatar>

View File

@@ -13,12 +13,12 @@ const Help: FC = () => {
const { LL } = useI18nContext();
const { routerTab } = useRouterTab();
useLayoutTitle(LL.HELP());
useLayoutTitle(LL.HELP_OF(""));
return (
<>
<RouterTabs value={routerTab}>
<Tab value="information" label={'EMS-ESP ' + LL.HELP()} />
<Tab value="information" label={LL.HELP_OF("EMS-ESP")} />
</RouterTabs>
<Routes>
<Route path="information" element={<HelpInformation />} />

View File

@@ -22,11 +22,11 @@ const ProjectMenu: FC = () => {
<LayoutMenuItem icon={DashboardIcon} label={LL.DASHBOARD()} to={`/${PROJECT_PATH}/dashboard`} />
<LayoutMenuItem
icon={TuneIcon}
label={LL.SETTINGS()}
label={LL.SETTINGS_OF("")}
to={`/${PROJECT_PATH}/settings`}
disabled={!authenticatedContext.me.admin}
/>
<LayoutMenuItem icon={InfoIcon} label={LL.HELP()} to={`/${PROJECT_PATH}/help`} />
<LayoutMenuItem icon={InfoIcon} label={LL.HELP_OF("")} to={`/${PROJECT_PATH}/help`} />
</List>
);
};

View File

@@ -14,7 +14,7 @@ const Settings: FC = () => {
const { LL } = useI18nContext();
const { routerTab } = useRouterTab();
useLayoutTitle(LL.SETTINGS());
useLayoutTitle(LL.SETTINGS_OF(""));
return (
<>

View File

@@ -115,7 +115,7 @@ const SettingsApplication: FC = () => {
return (
<>
<Typography sx={{ pt: 2 }} variant="h6" color="primary">
Interface {LL.BOARD_PROFILE()}
{LL.INTERFACE_BOARD_PROFILE()}
</Typography>
<Box color="warning.main">
<Typography variant="body2">{LL.BOARD_PROFILE_TEXT()}</Typography>
@@ -213,7 +213,7 @@ const SettingsApplication: FC = () => {
<Grid item xs={4}>
<ValidatedTextField
name="phy_type"
label="Eth PHY Type"
label={LL.PHY_TYPE()}
disabled={saving}
value={data.phy_type}
fullWidth
@@ -245,7 +245,7 @@ const SettingsApplication: FC = () => {
<Grid item>
<ValidatedTextField
name="eth_phy_addr"
label="Eth I²C-address"
label="Eth I²C Address"
fullWidth
variant="outlined"
value={numberValue(data.eth_phy_addr)}
@@ -258,7 +258,7 @@ const SettingsApplication: FC = () => {
<Grid item>
<ValidatedTextField
name="eth_clock_mode"
label="Eth Clock Mode"
label="Eth Clk Mode"
disabled={saving}
value={data.eth_clock_mode}
fullWidth
@@ -278,13 +278,13 @@ const SettingsApplication: FC = () => {
</>
)}
<Typography variant="h6" color="primary">
EMS Bus {LL.SETTINGS()}
{LL.SETTINGS_OF("EMS BUS")}
</Typography>
<Grid container spacing={1} direction="row" justifyContent="flex-start" alignItems="flex-start">
<Grid item xs={6}>
<ValidatedTextField
name="tx_mode"
label="Tx Mode"
label={LL.TX_MODE()}
disabled={saving}
value={data.tx_mode}
fullWidth
@@ -483,7 +483,7 @@ const SettingsApplication: FC = () => {
margin="normal"
select
>
<MenuItem value={1}>{LL.VALUE()}</MenuItem>
<MenuItem value={1}>{LL.VALUE(1)}</MenuItem>
<MenuItem value={2}>{LL.INDEX()}</MenuItem>
</ValidatedTextField>
</Grid>
@@ -551,7 +551,7 @@ const SettingsApplication: FC = () => {
<Grid item xs={4}>
<ValidatedTextField
name="syslog_level"
label="Log Level"
label={LL.LOG_LEVEL()}
value={data.syslog_level}
fullWidth
variant="outlined"

View File

@@ -296,7 +296,7 @@ const SettingsCustomization: FC = () => {
</Box>
<ValidatedTextField
name="device"
label={'EMS ' + LL.DEVICE()}
label={LL.EMS_DEVICE()}
variant="outlined"
fullWidth
value={selectedDevice}
@@ -449,7 +449,7 @@ const SettingsCustomization: FC = () => {
{LL.NAME()}
</Button>
</HeaderCell>
<HeaderCell resize>{LL.VALUE()}</HeaderCell>
<HeaderCell resize>{LL.VALUE(0)}</HeaderCell>
</HeaderRow>
</Header>
<Body>
@@ -513,7 +513,7 @@ const SettingsCustomization: FC = () => {
const renderResetDialog = () => (
<Dialog open={confirmReset} onClose={() => setConfirmReset(false)}>
<DialogTitle>{LL.RESET()}</DialogTitle>
<DialogTitle>{LL.RESET(1)}</DialogTitle>
<DialogContent dividers>{LL.CUSTOMIZATIONS_RESET()}</DialogContent>
<DialogActions>
<Button startIcon={<CancelIcon />} variant="outlined" onClick={() => setConfirmReset(false)} color="secondary">
@@ -526,7 +526,7 @@ const SettingsCustomization: FC = () => {
autoFocus
color="error"
>
{LL.RESET()}
{LL.RESET(0)}
</Button>
</DialogActions>
</Dialog>
@@ -555,7 +555,7 @@ const SettingsCustomization: FC = () => {
color="error"
onClick={() => setConfirmReset(true)}
>
{LL.RESET()}
{LL.RESET(0)}
</Button>
</ButtonRow>
</Box>

View File

@@ -47,7 +47,7 @@ export const useRest = <D>({ read, update }: RestRequestOptions<D>) => {
if (response.status === 202) {
setRestartNeeded(true);
} else {
enqueueSnackbar(LL.SETTINGS() + ' ' + LL.SAVED(), { variant: 'success' });
enqueueSnackbar(LL.SETTINGS_OF("") + ' ' + LL.SAVED(), { variant: 'success' });
}
} catch (error) {
const message = extractErrorMessage(error, LL.PROBLEM_UPDATING());