aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/App.jsx31
-rw-r--r--src/AppThemeProvider.jsx27
-rw-r--r--src/Navigation.jsx2
-rw-r--r--src/common/attributes/useServerAttributes.js8
-rw-r--r--src/common/attributes/useUserAttributes.js4
-rw-r--r--src/common/components/LocalizationProvider.jsx6
-rw-r--r--src/common/components/PositionValue.jsx9
-rw-r--r--src/common/components/SelectField.jsx6
-rw-r--r--src/common/components/StatusCard.jsx2
-rw-r--r--src/common/components/TermsDialog.jsx36
-rw-r--r--src/common/theme/index.js5
-rw-r--r--src/common/util/formatter.js18
-rw-r--r--src/main/EventsDrawer.jsx5
-rw-r--r--src/main/MainToolbar.jsx6
-rw-r--r--src/map/MapGeofence.js3
-rw-r--r--src/map/MapMarkers.js2
-rw-r--r--src/map/MapPositions.js28
-rw-r--r--src/map/MapRoutePath.js2
-rw-r--r--src/map/core/MapView.jsx4
-rw-r--r--src/map/core/mapUtil.js18
-rw-r--r--src/map/draw/MapGeofenceEdit.js8
-rw-r--r--src/map/main/MapSelectedDevice.js10
-rw-r--r--src/map/main/PoiMap.js2
-rw-r--r--src/other/EmulatorPage.jsx131
-rw-r--r--src/other/GeofencesPage.jsx2
-rw-r--r--src/other/PositionPage.jsx4
-rw-r--r--src/other/ReplayPage.jsx5
-rw-r--r--src/reports/ChartReportPage.jsx7
-rw-r--r--src/reports/CombinedReportPage.jsx7
-rw-r--r--src/reports/EventReportPage.jsx18
-rw-r--r--src/reports/RouteReportPage.jsx2
-rw-r--r--src/reports/StatisticsPage.jsx7
-rw-r--r--src/reports/StopReportPage.jsx20
-rw-r--r--src/reports/SummaryReportPage.jsx24
-rw-r--r--src/reports/TripReportPage.jsx22
-rw-r--r--src/reports/components/ReportFilter.jsx4
-rw-r--r--src/resources/l10n/af.json10
-rw-r--r--src/resources/l10n/ar.json10
-rw-r--r--src/resources/l10n/az.json10
-rw-r--r--src/resources/l10n/bg.json10
-rw-r--r--src/resources/l10n/bn.json10
-rw-r--r--src/resources/l10n/ca.json30
-rw-r--r--src/resources/l10n/cs.json264
-rw-r--r--src/resources/l10n/da.json10
-rw-r--r--src/resources/l10n/de.json12
-rw-r--r--src/resources/l10n/el.json10
-rw-r--r--src/resources/l10n/en.json10
-rw-r--r--src/resources/l10n/es.json10
-rw-r--r--src/resources/l10n/fa.json10
-rw-r--r--src/resources/l10n/fi.json10
-rw-r--r--src/resources/l10n/fr.json10
-rw-r--r--src/resources/l10n/gl.json10
-rw-r--r--src/resources/l10n/he.json10
-rw-r--r--src/resources/l10n/hi.json10
-rw-r--r--src/resources/l10n/hr.json10
-rw-r--r--src/resources/l10n/hu.json10
-rw-r--r--src/resources/l10n/id.json10
-rw-r--r--src/resources/l10n/it.json10
-rw-r--r--src/resources/l10n/ja.json10
-rw-r--r--src/resources/l10n/ka.json10
-rw-r--r--src/resources/l10n/kk.json10
-rw-r--r--src/resources/l10n/km.json10
-rw-r--r--src/resources/l10n/ko.json10
-rw-r--r--src/resources/l10n/lo.json10
-rw-r--r--src/resources/l10n/lt.json10
-rw-r--r--src/resources/l10n/lv.json10
-rw-r--r--src/resources/l10n/mk.json10
-rw-r--r--src/resources/l10n/ml.json10
-rw-r--r--src/resources/l10n/mn.json10
-rw-r--r--src/resources/l10n/ms.json10
-rw-r--r--src/resources/l10n/nb.json10
-rw-r--r--src/resources/l10n/ne.json10
-rw-r--r--src/resources/l10n/nl.json10
-rw-r--r--src/resources/l10n/nn.json10
-rw-r--r--src/resources/l10n/pl.json10
-rw-r--r--src/resources/l10n/pt.json10
-rw-r--r--src/resources/l10n/pt_BR.json26
-rw-r--r--src/resources/l10n/ro.json10
-rw-r--r--src/resources/l10n/ru.json10
-rw-r--r--src/resources/l10n/si.json10
-rw-r--r--src/resources/l10n/sk.json494
-rw-r--r--src/resources/l10n/sl.json10
-rw-r--r--src/resources/l10n/sq.json10
-rw-r--r--src/resources/l10n/sr.json10
-rw-r--r--src/resources/l10n/sv.json10
-rw-r--r--src/resources/l10n/ta.json10
-rw-r--r--src/resources/l10n/th.json10
-rw-r--r--src/resources/l10n/tr.json10
-rw-r--r--src/resources/l10n/uk.json10
-rw-r--r--src/resources/l10n/uz.json10
-rw-r--r--src/resources/l10n/vi.json10
-rw-r--r--src/resources/l10n/zh.json12
-rw-r--r--src/resources/l10n/zh_TW.json10
-rw-r--r--src/settings/AnnouncementPage.jsx2
-rw-r--r--src/settings/CalendarPage.jsx2
-rw-r--r--src/settings/ComputedAttributePage.jsx15
-rw-r--r--src/settings/DevicesPage.jsx5
-rw-r--r--src/settings/MaintenancePage.jsx11
-rw-r--r--src/settings/MaintenancesPage.jsx2
-rw-r--r--src/settings/PreferencesPage.jsx28
-rw-r--r--src/settings/ServerPage.jsx4
-rw-r--r--src/settings/UserPage.jsx6
-rw-r--r--src/settings/UsersPage.jsx5
-rw-r--r--src/store/devices.js5
104 files changed, 1365 insertions, 563 deletions
diff --git a/src/App.jsx b/src/App.jsx
index 4fe34f64..b6e864b2 100644
--- a/src/App.jsx
+++ b/src/App.jsx
@@ -6,9 +6,10 @@ import makeStyles from '@mui/styles/makeStyles';
import BottomMenu from './common/components/BottomMenu';
import SocketController from './SocketController';
import CachingController from './CachingController';
-import { useEffectAsync } from './reactHelper';
+import { useCatch, useEffectAsync } from './reactHelper';
import { sessionActions } from './store';
import UpdateController from './UpdateController';
+import TermsDialog from './common/components/TermsDialog';
const useStyles = makeStyles(() => ({
page: {
@@ -29,10 +30,24 @@ const App = () => {
const desktop = useMediaQuery(theme.breakpoints.up('md'));
const newServer = useSelector((state) => state.session.server.newServer);
- const initialized = useSelector((state) => !!state.session.user);
+ const termsUrl = useSelector((state) => state.session.server.attributes.termsUrl);
+ const user = useSelector((state) => state.session.user);
+
+ const acceptTerms = useCatch(async () => {
+ const response = await fetch(`/api/users/${user.id}`, {
+ method: 'PUT',
+ headers: { 'Content-Type': 'application/json' },
+ body: JSON.stringify({ ...user, attributes: { ...user.attributes, termsAccepted: true } }),
+ });
+ if (response.ok) {
+ dispatch(sessionActions.updateUser(await response.json()));
+ } else {
+ throw Error(await response.text());
+ }
+ });
useEffectAsync(async () => {
- if (!initialized) {
+ if (!user) {
const response = await fetch('/api/session');
if (response.ok) {
dispatch(sessionActions.updateUser(await response.json()));
@@ -43,9 +58,15 @@ const App = () => {
}
}
return null;
- }, [initialized]);
+ }, [user]);
- return !initialized ? (<LinearProgress />) : (
+ if (user == null) {
+ return (<LinearProgress />);
+ }
+ if (termsUrl && !user.attributes.termsAccepted) {
+ return (<TermsDialog open onCancel={() => navigate('/login')} onAccept={() => acceptTerms()} />);
+ }
+ return (
<>
<SocketController />
<CachingController />
diff --git a/src/AppThemeProvider.jsx b/src/AppThemeProvider.jsx
index 109d25c4..8f64b931 100644
--- a/src/AppThemeProvider.jsx
+++ b/src/AppThemeProvider.jsx
@@ -1,21 +1,40 @@
import React from 'react';
import { useSelector } from 'react-redux';
import { ThemeProvider, useMediaQuery } from '@mui/material';
+import { CacheProvider } from '@emotion/react';
+import createCache from '@emotion/cache';
+import { prefixer } from 'stylis';
+import rtlPlugin from 'stylis-plugin-rtl';
import theme from './common/theme';
+import { useLocalization } from './common/components/LocalizationProvider';
+
+const cache = {
+ ltr: createCache({
+ key: 'muiltr',
+ stylisPlugins: [prefixer],
+ }),
+ rtl: createCache({
+ key: 'muirtl',
+ stylisPlugins: [prefixer, rtlPlugin],
+ }),
+};
const AppThemeProvider = ({ children }) => {
const server = useSelector((state) => state.session.server);
+ const { direction } = useLocalization();
const serverDarkMode = server?.attributes?.darkMode;
const preferDarkMode = useMediaQuery('(prefers-color-scheme: dark)');
const darkMode = serverDarkMode !== undefined ? serverDarkMode : preferDarkMode;
- const themeInstance = theme(server, darkMode);
+ const themeInstance = theme(server, darkMode, direction);
return (
- <ThemeProvider theme={themeInstance}>
- {children}
- </ThemeProvider>
+ <CacheProvider value={cache[direction]}>
+ <ThemeProvider theme={themeInstance}>
+ {children}
+ </ThemeProvider>
+ </CacheProvider>
);
};
diff --git a/src/Navigation.jsx b/src/Navigation.jsx
index 37a6ddb5..fa3d9a24 100644
--- a/src/Navigation.jsx
+++ b/src/Navigation.jsx
@@ -57,6 +57,7 @@ import UserConnectionsPage from './settings/UserConnectionsPage';
import LogsPage from './reports/LogsPage';
import SharePage from './settings/SharePage';
import AnnouncementPage from './settings/AnnouncementPage';
+import EmulatorPage from './other/EmulatorPage';
const Navigation = () => {
const navigate = useNavigate();
@@ -109,6 +110,7 @@ const Navigation = () => {
<Route path="event/:id" element={<EventPage />} />
<Route path="replay" element={<ReplayPage />} />
<Route path="geofences" element={<GeofencesPage />} />
+ <Route path="emulator" element={<EmulatorPage />} />
<Route path="settings">
<Route path="accumulators/:deviceId" element={<AccumulatorsPage />} />
diff --git a/src/common/attributes/useServerAttributes.js b/src/common/attributes/useServerAttributes.js
index 80ac3c7d..f46f715c 100644
--- a/src/common/attributes/useServerAttributes.js
+++ b/src/common/attributes/useServerAttributes.js
@@ -39,6 +39,14 @@ export default (t) => useMemo(() => ({
name: t('settingsDarkMode'),
type: 'boolean',
},
+ termsUrl: {
+ name: t('userTerms'),
+ type: 'string',
+ },
+ privacyUrl: {
+ name: t('userPrivacy'),
+ type: 'string',
+ },
totpEnable: {
name: t('settingsTotpEnable'),
type: 'boolean',
diff --git a/src/common/attributes/useUserAttributes.js b/src/common/attributes/useUserAttributes.js
index 81230884..e819412c 100644
--- a/src/common/attributes/useUserAttributes.js
+++ b/src/common/attributes/useUserAttributes.js
@@ -57,4 +57,8 @@ export default (t) => useMemo(() => ({
name: t('attributeMailSmtpPassword'),
type: 'string',
},
+ termsAccepted: {
+ name: t('userTermsAccepted'),
+ type: 'boolean',
+ },
}), [t]);
diff --git a/src/common/components/LocalizationProvider.jsx b/src/common/components/LocalizationProvider.jsx
index 4104c773..3af97cf0 100644
--- a/src/common/components/LocalizationProvider.jsx
+++ b/src/common/components/LocalizationProvider.jsx
@@ -152,8 +152,9 @@ const LocalizationContext = createContext({
export const LocalizationProvider = ({ children }) => {
const [language, setLanguage] = usePersistedState('language', getDefaultLanguage());
+ const direction = /^(ar|he|fa)$/.test(language) ? 'rtl' : 'ltr';
- const value = useMemo(() => ({ languages, language, setLanguage }), [languages, language, setLanguage]);
+ const value = useMemo(() => ({ languages, language, setLanguage, direction }), [languages, language, setLanguage, direction]);
useEffect(() => {
let selected;
@@ -163,7 +164,8 @@ export const LocalizationProvider = ({ children }) => {
selected = language;
}
dayjs.locale(selected);
- }, [language]);
+ document.dir = direction;
+ }, [language, direction]);
return (
<LocalizationContext.Provider value={value}>
diff --git a/src/common/components/PositionValue.jsx b/src/common/components/PositionValue.jsx
index 8be686e3..cad3132c 100644
--- a/src/common/components/PositionValue.jsx
+++ b/src/common/components/PositionValue.jsx
@@ -22,7 +22,7 @@ import {
import { speedToKnots } from '../util/converter';
import { useAttributePreference, usePreference } from '../util/preferences';
import { useTranslation } from './LocalizationProvider';
-import { useAdministrator } from '../util/permissions';
+import { useDeviceReadonly } from '../util/permissions';
import AddressValue from './AddressValue';
import GeofencesValue from './GeofencesValue';
import DriverValue from './DriverValue';
@@ -30,7 +30,7 @@ import DriverValue from './DriverValue';
const PositionValue = ({ position, property, attribute }) => {
const t = useTranslation();
- const admin = useAdministrator();
+ const deviceReadonly = useDeviceReadonly();
const device = useSelector((state) => state.devices.items[position.deviceId]);
@@ -42,14 +42,13 @@ const PositionValue = ({ position, property, attribute }) => {
const speedUnit = useAttributePreference('speedUnit');
const volumeUnit = useAttributePreference('volumeUnit');
const coordinateFormat = usePreference('coordinateFormat');
- const hours12 = usePreference('twelveHourFormat');
const formatValue = () => {
switch (key) {
case 'fixTime':
case 'deviceTime':
case 'serverTime':
- return formatTime(value, 'seconds', hours12);
+ return formatTime(value, 'seconds');
case 'latitude':
return formatCoordinate('latitude', value, coordinateFormat);
case 'longitude':
@@ -108,7 +107,7 @@ const PositionValue = ({ position, property, attribute }) => {
<>
{formatValue(value)}
&nbsp;&nbsp;
- {admin && <Link component={RouterLink} underline="none" to={`/settings/accumulators/${position.deviceId}`}>&#9881;</Link>}
+ {!deviceReadonly && <Link component={RouterLink} underline="none" to={`/settings/accumulators/${position.deviceId}`}>&#9881;</Link>}
</>
);
case 'address':
diff --git a/src/common/components/SelectField.jsx b/src/common/components/SelectField.jsx
index db8c30b0..629af9e1 100644
--- a/src/common/components/SelectField.jsx
+++ b/src/common/components/SelectField.jsx
@@ -1,7 +1,7 @@
+import React, { useEffect, useState } from 'react';
import {
FormControl, InputLabel, MenuItem, Select, Autocomplete, TextField,
} from '@mui/material';
-import React, { useState } from 'react';
import { useEffectAsync } from '../../reactHelper';
const SelectField = ({
@@ -17,7 +17,7 @@ const SelectField = ({
keyGetter = (item) => item.id,
titleGetter = (item) => item.name,
}) => {
- const [items, setItems] = useState(data);
+ const [items, setItems] = useState();
const getOptionLabel = (option) => {
if (typeof option !== 'object') {
@@ -26,6 +26,8 @@ const SelectField = ({
return option ? titleGetter(option) : emptyTitle;
};
+ useEffect(() => setItems(data), [data]);
+
useEffectAsync(async () => {
if (endpoint) {
const response = await fetch(endpoint);
diff --git a/src/common/components/StatusCard.jsx b/src/common/components/StatusCard.jsx
index a63d0f80..fd92c658 100644
--- a/src/common/components/StatusCard.jsx
+++ b/src/common/components/StatusCard.jsx
@@ -127,7 +127,7 @@ const StatusCard = ({ deviceId, position, onClose, disableActions, desktopPaddin
const deviceImage = device?.attributes?.deviceImage;
const positionAttributes = usePositionAttributes(t);
- const positionItems = useAttributePreference('positionItems', 'speed,address,totalDistance,course');
+ const positionItems = useAttributePreference('positionItems', 'fixTime,address,speed,totalDistance');
const [anchorEl, setAnchorEl] = useState(null);
diff --git a/src/common/components/TermsDialog.jsx b/src/common/components/TermsDialog.jsx
new file mode 100644
index 00000000..2ac74f2e
--- /dev/null
+++ b/src/common/components/TermsDialog.jsx
@@ -0,0 +1,36 @@
+import React from 'react';
+import { useSelector } from 'react-redux';
+import {
+ Button, Dialog, DialogActions, DialogContent, DialogContentText, Link,
+} from '@mui/material';
+import { useTranslation } from './LocalizationProvider';
+
+const TermsDialog = ({ open, onCancel, onAccept }) => {
+ const t = useTranslation();
+
+ const termsUrl = useSelector((state) => state.session.server.attributes.termsUrl);
+ const privacyUrl = useSelector((state) => state.session.server.attributes.privacyUrl);
+
+ return (
+ <Dialog
+ open={open}
+ onClose={onCancel}
+ >
+ <DialogContent>
+ <DialogContentText>
+ {t('userTermsPrompt')}
+ <ul>
+ <li><Link href={termsUrl} target="_blank">{t('userTerms')}</Link></li>
+ <li><Link href={privacyUrl} target="_blank">{t('userPrivacy')}</Link></li>
+ </ul>
+ </DialogContentText>
+ </DialogContent>
+ <DialogActions>
+ <Button onClick={onCancel}>{t('sharedCancel')}</Button>
+ <Button onClick={onAccept}>{t('sharedAccept')}</Button>
+ </DialogActions>
+ </Dialog>
+ );
+};
+
+export default TermsDialog;
diff --git a/src/common/theme/index.js b/src/common/theme/index.js
index e8ce698b..00958497 100644
--- a/src/common/theme/index.js
+++ b/src/common/theme/index.js
@@ -4,8 +4,9 @@ import palette from './palette';
import dimensions from './dimensions';
import components from './components';
-export default (server, darkMode) => useMemo(() => createTheme({
+export default (server, darkMode, direction) => useMemo(() => createTheme({
palette: palette(server, darkMode),
+ direction,
dimensions,
components,
-}), [server, darkMode]);
+}), [server, darkMode, direction]);
diff --git a/src/common/util/formatter.js b/src/common/util/formatter.js
index 7b7fc96d..b10d737a 100644
--- a/src/common/util/formatter.js
+++ b/src/common/util/formatter.js
@@ -1,6 +1,7 @@
import dayjs from 'dayjs';
import duration from 'dayjs/plugin/duration';
import relativeTime from 'dayjs/plugin/relativeTime';
+import localizedFormat from 'dayjs/plugin/localizedFormat';
import {
altitudeFromMeters,
@@ -16,6 +17,7 @@ import { prefixString } from './stringUtils';
dayjs.extend(duration);
dayjs.extend(relativeTime);
+dayjs.extend(localizedFormat);
export const formatBoolean = (value, t) => (value ? t('sharedYes') : t('sharedNo'));
@@ -23,24 +25,24 @@ export const formatNumber = (value, precision = 1) => Number(value.toFixed(preci
export const formatPercentage = (value) => `${value}%`;
-export const formatTemperature = (value) => `${value}°C`;
+export const formatTemperature = (value) => `${value.toFixed(1)}°C`;
-export const formatVoltage = (value, t) => `${value} ${t('sharedVoltAbbreviation')}`;
+export const formatVoltage = (value, t) => `${value.toFixed(2)} ${t('sharedVoltAbbreviation')}`;
-export const formatConsumption = (value, t) => `${value} ${t('sharedLiterPerHourAbbreviation')}`;
+export const formatConsumption = (value, t) => `${value.toFixed(2)} ${t('sharedLiterPerHourAbbreviation')}`;
-export const formatTime = (value, format, hours12) => {
+export const formatTime = (value, format) => {
if (value) {
const d = dayjs(value);
switch (format) {
case 'date':
- return d.format('YYYY-MM-DD');
+ return d.format('L');
case 'time':
- return d.format(hours12 ? 'hh:mm:ss A' : 'HH:mm:ss');
+ return d.format('LTS');
case 'minutes':
- return d.format(hours12 ? 'YYYY-MM-DD hh:mm A' : 'YYYY-MM-DD HH:mm');
+ return d.format('L LT');
default:
- return d.format(hours12 ? 'YYYY-MM-DD hh:mm:ss A' : 'YYYY-MM-DD HH:mm:ss');
+ return d.format('L LTS');
}
}
return '';
diff --git a/src/main/EventsDrawer.jsx b/src/main/EventsDrawer.jsx
index f9602e95..57a95eb2 100644
--- a/src/main/EventsDrawer.jsx
+++ b/src/main/EventsDrawer.jsx
@@ -9,7 +9,6 @@ import DeleteIcon from '@mui/icons-material/Delete';
import { formatNotificationTitle, formatTime } from '../common/util/formatter';
import { useTranslation } from '../common/components/LocalizationProvider';
import { eventsActions } from '../store';
-import { usePreference } from '../common/util/preferences';
const useStyles = makeStyles((theme) => ({
drawer: {
@@ -30,8 +29,6 @@ const EventsDrawer = ({ open, onClose }) => {
const dispatch = useDispatch();
const t = useTranslation();
- const hours12 = usePreference('twelveHourFormat');
-
const devices = useSelector((state) => state.devices.items);
const events = useSelector((state) => state.events.items);
@@ -66,7 +63,7 @@ const EventsDrawer = ({ open, onClose }) => {
>
<ListItemText
primary={`${devices[event.deviceId]?.name} • ${formatType(event)}`}
- secondary={formatTime(event.eventTime, 'seconds', hours12)}
+ secondary={formatTime(event.eventTime, 'seconds')}
/>
<IconButton size="small" onClick={() => dispatch(eventsActions.delete(event))}>
<DeleteIcon fontSize="small" className={classes.delete} />
diff --git a/src/main/MainToolbar.jsx b/src/main/MainToolbar.jsx
index b029529c..c00fcd4b 100644
--- a/src/main/MainToolbar.jsx
+++ b/src/main/MainToolbar.jsx
@@ -90,8 +90,10 @@ const MainToolbar = ({
horizontal: Number(theme.spacing(2).slice(0, -2)),
}}
marginThreshold={0}
- PaperProps={{
- style: { width: `calc(${toolbarRef.current?.clientWidth}px - ${theme.spacing(4)})` },
+ slotProps={{
+ paper: {
+ style: { width: `calc(${toolbarRef.current?.clientWidth}px - ${theme.spacing(4)})` },
+ },
}}
elevation={1}
disableAutoFocus
diff --git a/src/map/MapGeofence.js b/src/map/MapGeofence.js
index 73b32724..ac83d5b4 100644
--- a/src/map/MapGeofence.js
+++ b/src/map/MapGeofence.js
@@ -2,7 +2,7 @@ import { useId, useEffect } from 'react';
import { useSelector } from 'react-redux';
import { useTheme } from '@mui/styles';
import { map } from './core/MapView';
-import { findFonts, geofenceToFeature } from './core/mapUtil';
+import { geofenceToFeature } from './core/mapUtil';
import { useAttributePreference } from '../common/util/preferences';
const MapGeofence = () => {
@@ -52,7 +52,6 @@ const MapGeofence = () => {
type: 'symbol',
layout: {
'text-field': '{name}',
- 'text-font': findFonts(map),
'text-size': 12,
},
paint: {
diff --git a/src/map/MapMarkers.js b/src/map/MapMarkers.js
index 8fbe92b6..484c35a3 100644
--- a/src/map/MapMarkers.js
+++ b/src/map/MapMarkers.js
@@ -3,7 +3,6 @@ import { useTheme } from '@mui/styles';
import { useMediaQuery } from '@mui/material';
import { map } from './core/MapView';
import { useAttributePreference } from '../common/util/preferences';
-import { findFonts } from './core/mapUtil';
const MapMarkers = ({ markers, showTitles }) => {
const id = useId();
@@ -35,7 +34,6 @@ const MapMarkers = ({ markers, showTitles }) => {
'text-allow-overlap': true,
'text-anchor': 'bottom',
'text-offset': [0, -2 * iconScale],
- 'text-font': findFonts(map),
'text-size': 12,
},
paint: {
diff --git a/src/map/MapPositions.js b/src/map/MapPositions.js
index 751c61b9..45e5fc0f 100644
--- a/src/map/MapPositions.js
+++ b/src/map/MapPositions.js
@@ -5,8 +5,8 @@ import { useTheme } from '@mui/styles';
import { map } from './core/MapView';
import { formatTime, getStatusColor } from '../common/util/formatter';
import { mapIconKey } from './core/preloadImages';
-import { findFonts } from './core/mapUtil';
-import { useAttributePreference, usePreference } from '../common/util/preferences';
+import { useAttributePreference } from '../common/util/preferences';
+import { useCatchCallback } from '../reactHelper';
const MapPositions = ({ positions, onClick, showStatus, selectedPosition, titleField }) => {
const id = useId();
@@ -21,7 +21,6 @@ const MapPositions = ({ positions, onClick, showStatus, selectedPosition, titleF
const selectedDeviceId = useSelector((state) => state.devices.selectedId);
const mapCluster = useAttributePreference('mapCluster', true);
- const hours12 = usePreference('twelveHourFormat');
const directionType = useAttributePreference('mapDirection', 'selected');
const createFeature = (devices, position, selectedPositionId) => {
@@ -32,17 +31,17 @@ const MapPositions = ({ positions, onClick, showStatus, selectedPosition, titleF
showDirection = false;
break;
case 'all':
- showDirection = true;
+ showDirection = position.course > 0;
break;
default:
- showDirection = selectedPositionId === position.id;
+ showDirection = selectedPositionId === position.id && position.course > 0;
break;
}
return {
id: position.id,
deviceId: position.deviceId,
name: device.name,
- fixTime: formatTime(position.fixTime, 'seconds', hours12),
+ fixTime: formatTime(position.fixTime, 'seconds'),
category: mapIconKey(device.category),
color: showStatus ? position.attributes.color || getStatusColor(device.status) : 'neutral',
rotation: position.course,
@@ -55,7 +54,7 @@ const MapPositions = ({ positions, onClick, showStatus, selectedPosition, titleF
const onMapClick = useCallback((event) => {
if (!event.defaultPrevented && onClick) {
- onClick();
+ onClick(event.lngLat.lat, event.lngLat.lng);
}
}, [onClick]);
@@ -67,19 +66,16 @@ const MapPositions = ({ positions, onClick, showStatus, selectedPosition, titleF
}
}, [onClick]);
- const onClusterClick = useCallback((event) => {
+ const onClusterClick = useCatchCallback(async (event) => {
event.preventDefault();
const features = map.queryRenderedFeatures(event.point, {
layers: [clusters],
});
const clusterId = features[0].properties.cluster_id;
- map.getSource(id).getClusterExpansionZoom(clusterId, (error, zoom) => {
- if (!error) {
- map.easeTo({
- center: features[0].geometry.coordinates,
- zoom,
- });
- }
+ const zoom = await map.getSource(id).getClusterExpansionZoom(clusterId);
+ map.easeTo({
+ center: features[0].geometry.coordinates,
+ zoom,
});
}, [clusters]);
@@ -115,7 +111,6 @@ const MapPositions = ({ positions, onClick, showStatus, selectedPosition, titleF
'text-allow-overlap': true,
'text-anchor': 'bottom',
'text-offset': [0, -2 * iconScale],
- 'text-font': findFonts(map),
'text-size': 12,
},
paint: {
@@ -154,7 +149,6 @@ const MapPositions = ({ positions, onClick, showStatus, selectedPosition, titleF
'icon-image': 'background',
'icon-size': iconScale,
'text-field': '{point_count_abbreviated}',
- 'text-font': findFonts(map),
'text-size': 14,
},
});
diff --git a/src/map/MapRoutePath.js b/src/map/MapRoutePath.js
index 18069a71..20269140 100644
--- a/src/map/MapRoutePath.js
+++ b/src/map/MapRoutePath.js
@@ -2,7 +2,6 @@ import { useTheme } from '@mui/styles';
import { useId, useEffect } from 'react';
import { useSelector } from 'react-redux';
import { map } from './core/MapView';
-import { findFonts } from './core/mapUtil';
const MapRoutePath = ({ name, positions, coordinates }) => {
const id = useId();
@@ -54,7 +53,6 @@ const MapRoutePath = ({ name, positions, coordinates }) => {
type: 'symbol',
layout: {
'text-field': '{name}',
- 'text-font': findFonts(map),
'text-size': 12,
},
paint: {
diff --git a/src/map/core/MapView.jsx b/src/map/core/MapView.jsx
index 35b3a65a..6733bdde 100644
--- a/src/map/core/MapView.jsx
+++ b/src/map/core/MapView.jsx
@@ -1,3 +1,5 @@
+// eslint-disable-next-line import/no-unresolved
+import mapboxglRtlTextUrl from '@mapbox/mapbox-gl-rtl-text/mapbox-gl-rtl-text.min?url';
import 'maplibre-gl/dist/maplibre-gl.css';
import maplibregl from 'maplibre-gl';
import React, {
@@ -14,6 +16,8 @@ element.style.width = '100%';
element.style.height = '100%';
element.style.boxSizing = 'initial';
+maplibregl.setRTLTextPlugin(mapboxglRtlTextUrl);
+
export const map = new maplibregl.Map({
container: element,
attributionControl: false,
diff --git a/src/map/core/mapUtil.js b/src/map/core/mapUtil.js
index 5cb0ef0d..fb7498aa 100644
--- a/src/map/core/mapUtil.js
+++ b/src/map/core/mapUtil.js
@@ -86,21 +86,3 @@ export const geofenceToFeature = (theme, item) => {
};
export const geometryToArea = (geometry) => stringify(reverseCoordinates(geometry));
-
-export const findFonts = (map) => {
- const fontSet = new Set();
- const { layers } = map.getStyle();
- layers?.forEach?.((layer) => {
- layer.layout?.['text-font']?.forEach?.(fontSet.add, fontSet);
- });
- const availableFonts = [...fontSet];
- const regularFont = availableFonts.find((it) => it.includes('Regular'));
- if (regularFont) {
- return [regularFont];
- }
- const anyFont = availableFonts.find(Boolean);
- if (anyFont) {
- return [anyFont];
- }
- return ['Roboto Regular'];
-};
diff --git a/src/map/draw/MapGeofenceEdit.js b/src/map/draw/MapGeofenceEdit.js
index e547ea05..0f63509a 100644
--- a/src/map/draw/MapGeofenceEdit.js
+++ b/src/map/draw/MapGeofenceEdit.js
@@ -12,6 +12,11 @@ import { geofenceToFeature, geometryToArea } from '../core/mapUtil';
import { errorsActions, geofencesActions } from '../../store';
import { useCatchCallback } from '../../reactHelper';
import theme from './theme';
+import { useTranslation } from '../../common/components/LocalizationProvider';
+
+MapboxDraw.constants.classes.CONTROL_BASE = 'maplibregl-ctrl';
+MapboxDraw.constants.classes.CONTROL_PREFIX = 'maplibregl-ctrl-';
+MapboxDraw.constants.classes.CONTROL_GROUP = 'maplibregl-ctrl-group';
const draw = new MapboxDraw({
displayControlsDefault: false,
@@ -41,6 +46,7 @@ const MapGeofenceEdit = ({ selectedGeofenceId }) => {
const theme = useTheme();
const dispatch = useDispatch();
const navigate = useNavigate();
+ const t = useTranslation();
const geofences = useSelector((state) => state.geofences.items);
@@ -63,7 +69,7 @@ const MapGeofenceEdit = ({ selectedGeofenceId }) => {
useEffect(() => {
const listener = async (event) => {
const feature = event.features[0];
- const newItem = { name: '', area: geometryToArea(feature.geometry) };
+ const newItem = { name: t('sharedGeofence'), area: geometryToArea(feature.geometry) };
draw.delete(feature.id);
try {
const response = await fetch('/api/geofences', {
diff --git a/src/map/main/MapSelectedDevice.js b/src/map/main/MapSelectedDevice.js
index caf40cf8..d17fb997 100644
--- a/src/map/main/MapSelectedDevice.js
+++ b/src/map/main/MapSelectedDevice.js
@@ -7,16 +7,18 @@ import { usePrevious } from '../../reactHelper';
import { useAttributePreference } from '../../common/util/preferences';
const MapSelectedDevice = () => {
- const selectedDeviceId = useSelector((state) => state.devices.selectedId);
- const previousDeviceId = usePrevious(selectedDeviceId);
+ const currentTime = useSelector((state) => state.devices.selectTime);
+ const currentId = useSelector((state) => state.devices.selectedId);
+ const previousTime = usePrevious(currentTime);
+ const previousId = usePrevious(currentId);
const selectZoom = useAttributePreference('web.selectZoom', 10);
const mapFollow = useAttributePreference('mapFollow', false);
- const position = useSelector((state) => state.session.positions[selectedDeviceId]);
+ const position = useSelector((state) => state.session.positions[currentId]);
useEffect(() => {
- if ((selectedDeviceId !== previousDeviceId || mapFollow) && position) {
+ if ((currentId !== previousId || currentTime !== previousTime || mapFollow) && position) {
map.easeTo({
center: [position.longitude, position.latitude],
zoom: Math.max(map.getZoom(), selectZoom),
diff --git a/src/map/main/PoiMap.js b/src/map/main/PoiMap.js
index 07341183..e8aefd7e 100644
--- a/src/map/main/PoiMap.js
+++ b/src/map/main/PoiMap.js
@@ -4,7 +4,6 @@ import { useTheme } from '@mui/styles';
import { map } from '../core/MapView';
import { useEffectAsync } from '../../reactHelper';
import { usePreference } from '../../common/util/preferences';
-import { findFonts } from '../core/mapUtil';
const PoiMap = () => {
const id = useId();
@@ -55,7 +54,6 @@ const PoiMap = () => {
'text-field': '{name}',
'text-anchor': 'bottom',
'text-offset': [0, -0.5],
- 'text-font': findFonts(map),
'text-size': 12,
},
paint: {
diff --git a/src/other/EmulatorPage.jsx b/src/other/EmulatorPage.jsx
new file mode 100644
index 00000000..9adc129f
--- /dev/null
+++ b/src/other/EmulatorPage.jsx
@@ -0,0 +1,131 @@
+import React from 'react';
+import { useDispatch, useSelector } from 'react-redux';
+import {
+ Divider, Typography, IconButton, useMediaQuery, Toolbar,
+ List,
+ ListItem,
+} from '@mui/material';
+import makeStyles from '@mui/styles/makeStyles';
+import { useTheme } from '@mui/material/styles';
+import Drawer from '@mui/material/Drawer';
+import ArrowBackIcon from '@mui/icons-material/ArrowBack';
+import { useNavigate } from 'react-router-dom';
+import MapView from '../map/core/MapView';
+import MapCurrentLocation from '../map/MapCurrentLocation';
+import { useTranslation } from '../common/components/LocalizationProvider';
+import MapGeocoder from '../map/geocoder/MapGeocoder';
+import SelectField from '../common/components/SelectField';
+import { devicesActions } from '../store';
+import MapPositions from '../map/MapPositions';
+import { useCatch } from '../reactHelper';
+
+const useStyles = makeStyles((theme) => ({
+ root: {
+ height: '100%',
+ display: 'flex',
+ flexDirection: 'column',
+ },
+ content: {
+ flexGrow: 1,
+ overflow: 'hidden',
+ display: 'flex',
+ flexDirection: 'row',
+ [theme.breakpoints.down('sm')]: {
+ flexDirection: 'column-reverse',
+ },
+ },
+ drawer: {
+ zIndex: 1,
+ },
+ drawerPaper: {
+ position: 'relative',
+ [theme.breakpoints.up('sm')]: {
+ width: theme.dimensions.drawerWidthDesktop,
+ },
+ [theme.breakpoints.down('sm')]: {
+ height: theme.dimensions.drawerHeightPhone,
+ },
+ },
+ mapContainer: {
+ flexGrow: 1,
+ },
+ title: {
+ flexGrow: 1,
+ },
+}));
+
+const EmulatorPage = () => {
+ const theme = useTheme();
+ const classes = useStyles();
+ const dispatch = useDispatch();
+ const navigate = useNavigate();
+ const t = useTranslation();
+
+ const isPhone = useMediaQuery(theme.breakpoints.down('sm'));
+
+ const devices = useSelector((state) => state.devices.items);
+ const deviceId = useSelector((state) => state.devices.selectedId);
+ const positions = useSelector((state) => state.session.positions);
+
+ const handleClick = useCatch(async (latitude, longitude) => {
+ if (deviceId) {
+ const params = new URLSearchParams();
+ params.append('id', devices[deviceId].uniqueId);
+ params.append('lat', latitude);
+ params.append('lon', longitude);
+
+ const response = await fetch(`http://${window.location.hostname}:5055?${params.toString()}`, {
+ method: 'GET',
+ mode: 'no-cors',
+ });
+ if (!response.ok) {
+ throw Error(await response.text());
+ }
+ }
+ });
+
+ return (
+ <div className={classes.root}>
+ <div className={classes.content}>
+ <Drawer
+ className={classes.drawer}
+ anchor={isPhone ? 'bottom' : 'left'}
+ variant="permanent"
+ classes={{ paper: classes.drawerPaper }}
+ >
+ <Toolbar>
+ <IconButton edge="start" sx={{ mr: 2 }} onClick={() => navigate(-1)}>
+ <ArrowBackIcon />
+ </IconButton>
+ <Typography variant="h6" className={classes.title}>{t('sharedEmulator')}</Typography>
+ </Toolbar>
+ <Divider />
+ <List>
+ <ListItem>
+ <SelectField
+ label={t('reportDevice')}
+ data={Object.values(devices).sort((a, b) => a.name.localeCompare(b.name))}
+ value={deviceId}
+ onChange={(e) => dispatch(devicesActions.selectId(e.target.value))}
+ fullWidth
+ />
+ </ListItem>
+ </List>
+ </Drawer>
+ <div className={classes.mapContainer}>
+ <MapView>
+ <MapPositions
+ positions={Object.values(positions)}
+ onClick={handleClick}
+ showStatus
+ />
+ </MapView>
+ <MapCurrentLocation />
+ <MapGeocoder />
+ </div>
+ </div>
+ </div>
+ );
+};
+
+export default EmulatorPage;
diff --git a/src/other/GeofencesPage.jsx b/src/other/GeofencesPage.jsx
index a27a6dca..438d31e5 100644
--- a/src/other/GeofencesPage.jsx
+++ b/src/other/GeofencesPage.jsx
@@ -39,7 +39,7 @@ const useStyles = makeStyles((theme) => ({
drawerPaper: {
position: 'relative',
[theme.breakpoints.up('sm')]: {
- width: theme.dimensions.drawerWidthTablet,
+ width: theme.dimensions.drawerWidthDesktop,
},
[theme.breakpoints.down('sm')]: {
height: theme.dimensions.drawerHeightPhone,
diff --git a/src/other/PositionPage.jsx b/src/other/PositionPage.jsx
index f253cd2c..e64ee491 100644
--- a/src/other/PositionPage.jsx
+++ b/src/other/PositionPage.jsx
@@ -87,14 +87,14 @@ const PositionPage = () => {
{item && Object.getOwnPropertyNames(item).filter((it) => it !== 'attributes').map((property) => (
<TableRow key={property}>
<TableCell>{property}</TableCell>
- <TableCell><strong>{positionAttributes[property]?.name || property}</strong></TableCell>
+ <TableCell><strong>{positionAttributes[property]?.name}</strong></TableCell>
<TableCell><PositionValue position={item} property={property} /></TableCell>
</TableRow>
))}
{item && Object.getOwnPropertyNames(item.attributes).map((attribute) => (
<TableRow key={attribute}>
<TableCell>{attribute}</TableCell>
- <TableCell><strong>{positionAttributes[attribute]?.name || attribute}</strong></TableCell>
+ <TableCell><strong>{positionAttributes[attribute]?.name}</strong></TableCell>
<TableCell><PositionValue position={item} attribute={attribute} /></TableCell>
</TableRow>
))}
diff --git a/src/other/ReplayPage.jsx b/src/other/ReplayPage.jsx
index 1050b976..1425c495 100644
--- a/src/other/ReplayPage.jsx
+++ b/src/other/ReplayPage.jsx
@@ -25,7 +25,6 @@ import { useCatch } from '../reactHelper';
import MapCamera from '../map/MapCamera';
import MapGeofence from '../map/MapGeofence';
import StatusCard from '../common/components/StatusCard';
-import { usePreference } from '../common/util/preferences';
const useStyles = makeStyles((theme) => ({
root: {
@@ -82,8 +81,6 @@ const ReplayPage = () => {
const navigate = useNavigate();
const timerRef = useRef();
- const hours12 = usePreference('twelveHourFormat');
-
const defaultDeviceId = useSelector((state) => state.devices.selectedId);
const [positions, setPositions] = useState([]);
@@ -210,7 +207,7 @@ const ReplayPage = () => {
<IconButton onClick={() => setIndex((index) => index + 1)} disabled={playing || index >= positions.length - 1}>
<FastForwardIcon />
</IconButton>
- {formatTime(positions[index].fixTime, 'seconds', hours12)}
+ {formatTime(positions[index].fixTime, 'seconds')}
</div>
</>
) : (
diff --git a/src/reports/ChartReportPage.jsx b/src/reports/ChartReportPage.jsx
index 6175e1d8..8a3d01b8 100644
--- a/src/reports/ChartReportPage.jsx
+++ b/src/reports/ChartReportPage.jsx
@@ -13,7 +13,7 @@ import PageLayout from '../common/components/PageLayout';
import ReportsMenu from './components/ReportsMenu';
import usePositionAttributes from '../common/attributes/usePositionAttributes';
import { useCatch } from '../reactHelper';
-import { useAttributePreference, usePreference } from '../common/util/preferences';
+import { useAttributePreference } from '../common/util/preferences';
import {
altitudeFromMeters, distanceFromMeters, speedFromKnots, volumeFromLiters,
} from '../common/util/converter';
@@ -29,7 +29,6 @@ const ChartReportPage = () => {
const altitudeUnit = useAttributePreference('altitudeUnit');
const speedUnit = useAttributePreference('speedUnit');
const volumeUnit = useAttributePreference('volumeUnit');
- const hours12 = usePreference('twelveHourFormat');
const [items, setItems] = useState([]);
const [types, setTypes] = useState(['speed']);
@@ -126,7 +125,7 @@ const ChartReportPage = () => {
<XAxis
dataKey="fixTime"
type="number"
- tickFormatter={(value) => formatTime(value, 'time', hours12)}
+ tickFormatter={(value) => formatTime(value, 'time')}
domain={['dataMin', 'dataMax']}
scale="time"
/>
@@ -138,7 +137,7 @@ const ChartReportPage = () => {
<CartesianGrid strokeDasharray="3 3" />
<Tooltip
formatter={(value, key) => [value, positionAttributes[key]?.name || key]}
- labelFormatter={(value) => formatTime(value, 'seconds', hours12)}
+ labelFormatter={(value) => formatTime(value, 'seconds')}
/>
<Line type="monotone" dataKey={type} />
</LineChart>
diff --git a/src/reports/CombinedReportPage.jsx b/src/reports/CombinedReportPage.jsx
index a5000839..32ad5df0 100644
--- a/src/reports/CombinedReportPage.jsx
+++ b/src/reports/CombinedReportPage.jsx
@@ -15,7 +15,6 @@ import TableShimmer from '../common/components/TableShimmer';
import MapCamera from '../map/MapCamera';
import MapGeofence from '../map/MapGeofence';
import { formatTime } from '../common/util/formatter';
-import { usePreference } from '../common/util/preferences';
import { prefixString } from '../common/util/stringUtils';
import MapMarkers from '../map/MapMarkers';
@@ -25,8 +24,6 @@ const CombinedReportPage = () => {
const devices = useSelector((state) => state.devices.items);
- const hours12 = usePreference('twelveHourFormat');
-
const [items, setItems] = useState([]);
const [loading, setLoading] = useState(false);
@@ -76,7 +73,7 @@ const CombinedReportPage = () => {
)}
<div className={classes.containerMain}>
<div className={classes.header}>
- <ReportFilter handleSubmit={handleSubmit} showOnly multiDevice includeGroups />
+ <ReportFilter handleSubmit={handleSubmit} showOnly multiDevice includeGroups loading={loading} />
</div>
<Table>
<TableHead>
@@ -90,7 +87,7 @@ const CombinedReportPage = () => {
{!loading ? items.flatMap((item) => item.events.map((event, index) => (
<TableRow key={event.id}>
<TableCell>{index ? '' : devices[item.deviceId].name}</TableCell>
- <TableCell>{formatTime(event.eventTime, 'seconds', hours12)}</TableCell>
+ <TableCell>{formatTime(event.eventTime, 'seconds')}</TableCell>
<TableCell>{t(prefixString('event', event.type))}</TableCell>
</TableRow>
))) : (<TableShimmer columns={3} />)}
diff --git a/src/reports/EventReportPage.jsx b/src/reports/EventReportPage.jsx
index 5ffc8ac3..73e8a2e4 100644
--- a/src/reports/EventReportPage.jsx
+++ b/src/reports/EventReportPage.jsx
@@ -17,7 +17,7 @@ import ColumnSelect from './components/ColumnSelect';
import { useCatch, useEffectAsync } from '../reactHelper';
import useReportStyles from './common/useReportStyles';
import TableShimmer from '../common/components/TableShimmer';
-import { useAttributePreference, usePreference } from '../common/util/preferences';
+import { useAttributePreference } from '../common/util/preferences';
import MapView from '../map/core/MapView';
import MapGeofence from '../map/MapGeofence';
import MapPositions from '../map/MapPositions';
@@ -42,7 +42,6 @@ const EventReportPage = () => {
const geofences = useSelector((state) => state.geofences.items);
const speedUnit = useAttributePreference('speedUnit');
- const hours12 = usePreference('twelveHourFormat');
const [allEventTypes, setAllEventTypes] = useState([['allEvents', 'eventAll']]);
@@ -120,19 +119,20 @@ const EventReportPage = () => {
});
const formatValue = (item, key) => {
+ const value = item[key];
switch (key) {
case 'eventTime':
- return formatTime(item[key], 'seconds', hours12);
+ return formatTime(value, 'seconds');
case 'type':
- return t(prefixString('event', item[key]));
+ return t(prefixString('event', value));
case 'geofenceId':
- if (item[key] > 0) {
- const geofence = geofences[item[key]];
+ if (value > 0) {
+ const geofence = geofences[value];
return geofence && geofence.name;
}
return null;
case 'maintenanceId':
- return item[key] > 0 ? item[key] > 0 : null;
+ return value > 0 ? value : null;
case 'attributes':
switch (item.type) {
case 'alarm':
@@ -149,7 +149,7 @@ const EventReportPage = () => {
return '';
}
default:
- return item[key];
+ return value;
}
};
@@ -167,7 +167,7 @@ const EventReportPage = () => {
)}
<div className={classes.containerMain}>
<div className={classes.header}>
- <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule}>
+ <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} loading={loading}>
<div className={classes.filterItem}>
<FormControl fullWidth>
<InputLabel>{t('reportEventTypes')}</InputLabel>
diff --git a/src/reports/RouteReportPage.jsx b/src/reports/RouteReportPage.jsx
index 5003ff31..816e95cb 100644
--- a/src/reports/RouteReportPage.jsx
+++ b/src/reports/RouteReportPage.jsx
@@ -118,7 +118,7 @@ const RouteReportPage = () => {
)}
<div className={classes.containerMain}>
<div className={classes.header}>
- <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} multiDevice>
+ <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} multiDevice loading={loading}>
<ColumnSelect
columns={columns}
setColumns={setColumns}
diff --git a/src/reports/StatisticsPage.jsx b/src/reports/StatisticsPage.jsx
index 7b3f2879..9d6ebf96 100644
--- a/src/reports/StatisticsPage.jsx
+++ b/src/reports/StatisticsPage.jsx
@@ -12,7 +12,6 @@ import ColumnSelect from './components/ColumnSelect';
import { useCatch } from '../reactHelper';
import useReportStyles from './common/useReportStyles';
import TableShimmer from '../common/components/TableShimmer';
-import { usePreference } from '../common/util/preferences';
const columnsArray = [
['captureTime', 'statisticsCaptureTime'],
@@ -32,8 +31,6 @@ const StatisticsPage = () => {
const classes = useReportStyles();
const t = useTranslation();
- const hours12 = usePreference('twelveHourFormat');
-
const [columns, setColumns] = usePersistedState('statisticsColumns', ['captureTime', 'activeUsers', 'activeDevices', 'messagesStored']);
const [items, setItems] = useState([]);
const [loading, setLoading] = useState(false);
@@ -56,7 +53,7 @@ const StatisticsPage = () => {
return (
<PageLayout menu={<ReportsMenu />} breadcrumbs={['reportTitle', 'statisticsTitle']}>
<div className={classes.header}>
- <ReportFilter handleSubmit={handleSubmit} showOnly ignoreDevice>
+ <ReportFilter handleSubmit={handleSubmit} showOnly ignoreDevice loading={loading}>
<ColumnSelect columns={columns} setColumns={setColumns} columnsArray={columnsArray} />
</ReportFilter>
</div>
@@ -71,7 +68,7 @@ const StatisticsPage = () => {
<TableRow key={item.id}>
{columns.map((key) => (
<TableCell key={key}>
- {key === 'captureTime' ? formatTime(item[key], 'date', hours12) : item[key]}
+ {key === 'captureTime' ? formatTime(item[key], 'date') : item[key]}
</TableCell>
))}
</TableRow>
diff --git a/src/reports/StopReportPage.jsx b/src/reports/StopReportPage.jsx
index 066b29a4..0fd6aba1 100644
--- a/src/reports/StopReportPage.jsx
+++ b/src/reports/StopReportPage.jsx
@@ -10,7 +10,7 @@ import {
formatDistance, formatVolume, formatTime, formatNumericHours,
} from '../common/util/formatter';
import ReportFilter from './components/ReportFilter';
-import { useAttributePreference, usePreference } from '../common/util/preferences';
+import { useAttributePreference } from '../common/util/preferences';
import { useTranslation } from '../common/components/LocalizationProvider';
import PageLayout from '../common/components/PageLayout';
import ReportsMenu from './components/ReportsMenu';
@@ -44,7 +44,6 @@ const StopReportPage = () => {
const distanceUnit = useAttributePreference('distanceUnit');
const volumeUnit = useAttributePreference('volumeUnit');
- const hours12 = usePreference('twelveHourFormat');
const [columns, setColumns] = usePersistedState('stopColumns', ['startTime', 'endTime', 'startOdometer', 'address']);
const [items, setItems] = useState([]);
@@ -88,22 +87,23 @@ const StopReportPage = () => {
});
const formatValue = (item, key) => {
+ const value = item[key];
switch (key) {
case 'startTime':
case 'endTime':
- return formatTime(item[key], 'minutes', hours12);
+ return formatTime(value, 'minutes');
case 'startOdometer':
- return formatDistance(item[key], distanceUnit, t);
+ return formatDistance(value, distanceUnit, t);
case 'duration':
- return formatNumericHours(item[key], t);
+ return formatNumericHours(value, t);
case 'engineHours':
- return formatNumericHours(item[key], t);
+ return value > 0 ? formatNumericHours(value, t) : null;
case 'spentFuel':
- return formatVolume(item[key], volumeUnit, t);
+ return value > 0 ? formatVolume(value, volumeUnit, t) : null;
case 'address':
- return (<AddressValue latitude={item.latitude} longitude={item.longitude} originalAddress={item[key]} />);
+ return (<AddressValue latitude={item.latitude} longitude={item.longitude} originalAddress={value} />);
default:
- return item[key];
+ return value;
}
};
@@ -129,7 +129,7 @@ const StopReportPage = () => {
)}
<div className={classes.containerMain}>
<div className={classes.header}>
- <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule}>
+ <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} loading={loading}>
<ColumnSelect columns={columns} setColumns={setColumns} columnsArray={columnsArray} />
</ReportFilter>
</div>
diff --git a/src/reports/SummaryReportPage.jsx b/src/reports/SummaryReportPage.jsx
index ae7e043e..9b9c00c9 100644
--- a/src/reports/SummaryReportPage.jsx
+++ b/src/reports/SummaryReportPage.jsx
@@ -8,7 +8,7 @@ import {
formatDistance, formatSpeed, formatVolume, formatTime, formatNumericHours,
} from '../common/util/formatter';
import ReportFilter from './components/ReportFilter';
-import { useAttributePreference, usePreference } from '../common/util/preferences';
+import { useAttributePreference } from '../common/util/preferences';
import { useTranslation } from '../common/components/LocalizationProvider';
import PageLayout from '../common/components/PageLayout';
import ReportsMenu from './components/ReportsMenu';
@@ -27,6 +27,8 @@ const columnsArray = [
['averageSpeed', 'reportAverageSpeed'],
['maxSpeed', 'reportMaximumSpeed'],
['engineHours', 'reportEngineHours'],
+ ['startHours', 'reportStartEngineHours'],
+ ['endHours', 'reportEndEngineHours'],
['spentFuel', 'reportSpentFuel'],
];
const columnsMap = new Map(columnsArray);
@@ -41,7 +43,6 @@ const SummaryReportPage = () => {
const distanceUnit = useAttributePreference('distanceUnit');
const speedUnit = useAttributePreference('speedUnit');
const volumeUnit = useAttributePreference('volumeUnit');
- const hours12 = usePreference('twelveHourFormat');
const [columns, setColumns] = usePersistedState('summaryColumns', ['startTime', 'distance', 'averageSpeed']);
const [daily, setDaily] = useState(false);
@@ -88,31 +89,34 @@ const SummaryReportPage = () => {
});
const formatValue = (item, key) => {
+ const value = item[key];
switch (key) {
case 'deviceId':
- return devices[item[key]].name;
+ return devices[value].name;
case 'startTime':
- return formatTime(item[key], 'date', hours12);
+ return formatTime(value, 'date');
case 'startOdometer':
case 'endOdometer':
case 'distance':
- return formatDistance(item[key], distanceUnit, t);
+ return formatDistance(value, distanceUnit, t);
case 'averageSpeed':
case 'maxSpeed':
- return formatSpeed(item[key], speedUnit, t);
+ return value > 0 ? formatSpeed(value, speedUnit, t) : null;
case 'engineHours':
- return formatNumericHours(item[key], t);
+ case 'startHours':
+ case 'endHours':
+ return value > 0 ? formatNumericHours(value, t) : null;
case 'spentFuel':
- return formatVolume(item[key], volumeUnit, t);
+ return value > 0 ? formatVolume(value, volumeUnit, t) : null;
default:
- return item[key];
+ return value;
}
};
return (
<PageLayout menu={<ReportsMenu />} breadcrumbs={['reportTitle', 'reportSummary']}>
<div className={classes.header}>
- <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} multiDevice includeGroups>
+ <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} multiDevice includeGroups loading={loading}>
<div className={classes.filterItem}>
<FormControl fullWidth>
<InputLabel>{t('sharedType')}</InputLabel>
diff --git a/src/reports/TripReportPage.jsx b/src/reports/TripReportPage.jsx
index 897ee506..22fb9b91 100644
--- a/src/reports/TripReportPage.jsx
+++ b/src/reports/TripReportPage.jsx
@@ -9,7 +9,7 @@ import {
formatDistance, formatSpeed, formatVolume, formatTime, formatNumericHours,
} from '../common/util/formatter';
import ReportFilter from './components/ReportFilter';
-import { useAttributePreference, usePreference } from '../common/util/preferences';
+import { useAttributePreference } from '../common/util/preferences';
import { useTranslation } from '../common/components/LocalizationProvider';
import PageLayout from '../common/components/PageLayout';
import ReportsMenu from './components/ReportsMenu';
@@ -50,7 +50,6 @@ const TripReportPage = () => {
const distanceUnit = useAttributePreference('distanceUnit');
const speedUnit = useAttributePreference('speedUnit');
const volumeUnit = useAttributePreference('volumeUnit');
- const hours12 = usePreference('twelveHourFormat');
const [columns, setColumns] = usePersistedState('tripColumns', ['startTime', 'endTime', 'distance', 'averageSpeed']);
const [items, setItems] = useState([]);
@@ -130,27 +129,28 @@ const TripReportPage = () => {
});
const formatValue = (item, key) => {
+ const value = item[key];
switch (key) {
case 'startTime':
case 'endTime':
- return formatTime(item[key], 'minutes', hours12);
+ return formatTime(value, 'minutes');
case 'startOdometer':
case 'endOdometer':
case 'distance':
- return formatDistance(item[key], distanceUnit, t);
+ return formatDistance(value, distanceUnit, t);
case 'averageSpeed':
case 'maxSpeed':
- return formatSpeed(item[key], speedUnit, t);
+ return value > 0 ? formatSpeed(value, speedUnit, t) : null;
case 'duration':
- return formatNumericHours(item[key], t);
+ return formatNumericHours(value, t);
case 'spentFuel':
- return formatVolume(item[key], volumeUnit, t);
+ return value > 0 ? formatVolume(value, volumeUnit, t) : null;
case 'startAddress':
- return (<AddressValue latitude={item.startLat} longitude={item.startLon} originalAddress={item[key]} />);
+ return (<AddressValue latitude={item.startLat} longitude={item.startLon} originalAddress={value} />);
case 'endAddress':
- return (<AddressValue latitude={item.endLat} longitude={item.endLon} originalAddress={item[key]} />);
+ return (<AddressValue latitude={item.endLat} longitude={item.endLon} originalAddress={value} />);
default:
- return item[key];
+ return value;
}
};
@@ -173,7 +173,7 @@ const TripReportPage = () => {
)}
<div className={classes.containerMain}>
<div className={classes.header}>
- <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule}>
+ <ReportFilter handleSubmit={handleSubmit} handleSchedule={handleSchedule} loading={loading}>
<ColumnSelect columns={columns} setColumns={setColumns} columnsArray={columnsArray} />
</ReportFilter>
</div>
diff --git a/src/reports/components/ReportFilter.jsx b/src/reports/components/ReportFilter.jsx
index e6e08f16..437a7487 100644
--- a/src/reports/components/ReportFilter.jsx
+++ b/src/reports/components/ReportFilter.jsx
@@ -11,7 +11,7 @@ import SplitButton from '../../common/components/SplitButton';
import SelectField from '../../common/components/SelectField';
import { useRestriction } from '../../common/util/permissions';
-const ReportFilter = ({ children, handleSubmit, handleSchedule, showOnly, ignoreDevice, multiDevice, includeGroups }) => {
+const ReportFilter = ({ children, handleSubmit, handleSchedule, showOnly, ignoreDevice, multiDevice, includeGroups, loading }) => {
const classes = useReportStyles();
const dispatch = useDispatch();
const t = useTranslation();
@@ -33,7 +33,7 @@ const ReportFilter = ({ children, handleSubmit, handleSchedule, showOnly, ignore
const [calendarId, setCalendarId] = useState();
const scheduleDisabled = button === 'schedule' && (!description || !calendarId);
- const disabled = (!ignoreDevice && !deviceId && !deviceIds.length && !groupIds.length) || scheduleDisabled;
+ const disabled = (!ignoreDevice && !deviceId && !deviceIds.length && !groupIds.length) || scheduleDisabled || loading;
const handleClick = (type) => {
if (type === 'schedule') {
diff --git a/src/resources/l10n/af.json b/src/resources/l10n/af.json
index 5ecd845e..8437b5a5 100644
--- a/src/resources/l10n/af.json
+++ b/src/resources/l10n/af.json
@@ -4,6 +4,7 @@
"sharedSave": "Stoor",
"sharedUpload": "Upload",
"sharedSet": "Stel",
+ "sharedAccept": "Accept",
"sharedCancel": "Kanselleer",
"sharedCopy": "Copy",
"sharedAdd": "Sit by",
@@ -34,6 +35,7 @@
"sharedName": "Naam",
"sharedDescription": "Beskrywing",
"sharedSearch": "Soek",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geografiese omheining",
"sharedGeofences": "Geografiese omheinings",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Teken aan",
"loginLanguage": "Taal",
"loginReset": "Herstel Wagwoord",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Kaart",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Gemiddelde Spoed",
"reportMaximumSpeed": "Maksimum Spoed",
"reportEngineHours": "Engin Ure",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duur",
"reportStartDate": "Begindatum",
"reportStartTime": "Begin tyd",
diff --git a/src/resources/l10n/ar.json b/src/resources/l10n/ar.json
index 19f4c9d8..020b7e3e 100644
--- a/src/resources/l10n/ar.json
+++ b/src/resources/l10n/ar.json
@@ -4,6 +4,7 @@
"sharedSave": "حفظ",
"sharedUpload": "Upload",
"sharedSet": "ضبط",
+ "sharedAccept": "Accept",
"sharedCancel": "إلغاء",
"sharedCopy": "Copy",
"sharedAdd": "إضافة",
@@ -34,6 +35,7 @@
"sharedName": "الاسم",
"sharedDescription": "الوصف",
"sharedSearch": "بحث",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "السياج الجغرافي",
"sharedGeofences": "السياجات الجغرافية",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "رمز",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "تسجيل الدخول",
"loginLanguage": "اللغة",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "خريطة",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "متوسط السرعة",
"reportMaximumSpeed": "السرعة القصوى",
"reportEngineHours": "ساعات عمل المحرك",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "المدة الزمنية",
"reportStartDate": "تاريخ البدء",
"reportStartTime": "وقت البدء",
diff --git a/src/resources/l10n/az.json b/src/resources/l10n/az.json
index 02430a47..09cf30d6 100644
--- a/src/resources/l10n/az.json
+++ b/src/resources/l10n/az.json
@@ -4,6 +4,7 @@
"sharedSave": "Yadda saxlamaq",
"sharedUpload": "Upload",
"sharedSet": "Qurmaq",
+ "sharedAccept": "Accept",
"sharedCancel": "Ləğv etmək",
"sharedCopy": "Copy",
"sharedAdd": "Əlavə etmək",
@@ -34,6 +35,7 @@
"sharedName": "Ad",
"sharedDescription": "Təsvir",
"sharedSearch": "Axtarış",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geozona",
"sharedGeofences": "Geozonalar",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Açar",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Giriş",
"loginLanguage": "Dil",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Xəritə",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Orta sürət",
"reportMaximumSpeed": "Maksimal sürə",
"reportEngineHours": "Mühərrik saatları",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Davamiyyəti",
"reportStartDate": "Start Date",
"reportStartTime": "Başlanğıc vaxtı",
diff --git a/src/resources/l10n/bg.json b/src/resources/l10n/bg.json
index 299b7a15..8538bc50 100644
--- a/src/resources/l10n/bg.json
+++ b/src/resources/l10n/bg.json
@@ -4,6 +4,7 @@
"sharedSave": "Запази",
"sharedUpload": "Upload",
"sharedSet": "Настрой",
+ "sharedAccept": "Accept",
"sharedCancel": "Отказ",
"sharedCopy": "Copy",
"sharedAdd": "Добави",
@@ -34,6 +35,7 @@
"sharedName": "Име",
"sharedDescription": "Описание",
"sharedSearch": "Търси",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Зона",
"sharedGeofences": "Зони",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Жетон",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Вход",
"loginLanguage": "Език",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Карта",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Средна скорост",
"reportMaximumSpeed": "Максимална скорост",
"reportEngineHours": "Машиночас",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Продължителност",
"reportStartDate": "Start Date",
"reportStartTime": "Начален час",
diff --git a/src/resources/l10n/bn.json b/src/resources/l10n/bn.json
index 79d6c3d0..ddda55dd 100644
--- a/src/resources/l10n/bn.json
+++ b/src/resources/l10n/bn.json
@@ -4,6 +4,7 @@
"sharedSave": " সংরক্ষণ করুন",
"sharedUpload": "Upload",
"sharedSet": "স্থাপন করুন",
+ "sharedAccept": "Accept",
"sharedCancel": " বাতিল করুন",
"sharedCopy": "Copy",
"sharedAdd": "যুক্ত করুন",
@@ -34,6 +35,7 @@
"sharedName": "নাম",
"sharedDescription": "বিবরণ / বর্ণনা",
"sharedSearch": "অনুসন্ধান / খোঁজা",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "জিওফেন্স / ভৌগোলিক বেষ্টনী",
"sharedGeofences": "জিওফেন্স / ভৌগোলিক বেষ্টনী",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "টোকেন",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "লগইন",
"loginLanguage": "ভাষা",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "মানচিত্র",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Average Speed",
"reportMaximumSpeed": "Maximum Speed",
"reportEngineHours": "Engine Hours",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duration",
"reportStartDate": "Start Date",
"reportStartTime": "শুরুর সময় ",
diff --git a/src/resources/l10n/ca.json b/src/resources/l10n/ca.json
index 6ac0b872..6619412b 100644
--- a/src/resources/l10n/ca.json
+++ b/src/resources/l10n/ca.json
@@ -4,14 +4,15 @@
"sharedSave": "Guardar",
"sharedUpload": "Carrega",
"sharedSet": "Establir",
+ "sharedAccept": "Accept",
"sharedCancel": "Cancel·lar",
- "sharedCopy": "Copy",
+ "sharedCopy": "Còpia",
"sharedAdd": "Afegir",
"sharedEdit": "Editar",
"sharedRemove": "Eliminar",
"sharedRemoveConfirm": "Eliminar element?",
"sharedNoData": "Sense dades",
- "sharedSubject": "Subject",
+ "sharedSubject": "Assumpte",
"sharedYes": "Sí",
"sharedNo": "No",
"sharedKm": "Km",
@@ -34,6 +35,7 @@
"sharedName": "Nom",
"sharedDescription": "Descripció",
"sharedSearch": "Cercar",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geo-Zona",
"sharedGeofences": "Geo-Zones",
@@ -101,8 +103,9 @@
"sharedImport": "Importar",
"sharedColumns": "Columnes",
"sharedDropzoneText": "Arrossegueu i deixeu anar un fitxer aquí o feu clic",
- "sharedLogs": "Logs",
- "sharedLink": "Link",
+ "sharedLogs": "Registres",
+ "sharedLink": "Enllaç",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrència",
"calendarOnce": "Una vegada",
@@ -147,11 +150,11 @@
"attributeMailSmtpAuth": "Correu: Habilitar autenticació SMTP",
"attributeMailSmtpUsername": "Correu: Nom d\\'usuari SMTP",
"attributeMailSmtpPassword": "Correu: Contrasenya SMTP",
- "attributeUiDisableSavedCommands": "UI: Disable Saved Commands",
+ "attributeUiDisableSavedCommands": "Interfície d'usuari: desactiva les ordres desades",
"attributeUiDisableAttributes": "UI: Disable Attributes",
"attributeUiDisableGroups": "UI: Deshabilitar Grups",
"attributeUiDisableEvents": "UI: Deshabilitar esdeveniments",
- "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features",
+ "attributeUiDisableVehicleFeatures": "UI: Deshabilitar característiques del vehicle",
"attributeUiDisableDrivers": "UI: Deshabilitar Conductors",
"attributeUiDisableComputedAttributes": "UI: Deshabilitar Atributs calculats",
"attributeUiDisableCalendars": "UI: Deshabilitar Calendari",
@@ -178,7 +181,11 @@
"userFixedEmail": "No Email Change",
"userToken": "Token Accés",
"userDeleteAccount": "Delete Account",
- "userTemporary": "Temporary",
+ "userTemporary": "Temporal",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Iniciar sessió",
"loginLanguage": "Idioma",
"loginReset": "Reiniciar contrasenya",
@@ -235,7 +242,7 @@
"settingsTotpForce": "Força contrasenya d'un sol ús",
"settingsServiceWorkerUpdateInterval": "Interval d'actualització del ServiceWorker",
"settingsUpdateAvailable": "Hi ha una actualització disponible.",
- "settingsSupport": "Support",
+ "settingsSupport": "Suport",
"reportTitle": "Informes",
"reportScheduled": "Informes programats",
"reportDevice": "Dispositius",
@@ -329,7 +336,8 @@
"serverLogo": "Imatge del logotip",
"serverLogoInverted": "Imatge de logotip invertida",
"serverChangeDisable": "Desactiva el canvi de servidor",
- "serverDisableShare": "Disable Device Sharing",
+ "serverDisableShare": "Desactiva l'ús compartit de dispositius",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
"mapActive": "Mapes actius",
"mapOverlay": "Capa sobre el mapa",
@@ -363,7 +371,7 @@
"mapWikimedia": "Wikimedia",
"mapOrdnanceSurvey": "Ordnance Survey",
"mapMapboxStreets": "Mapbox Streets",
- "mapMapboxStreetsDark": "Mapbox Streets Dark",
+ "mapMapboxStreetsDark": "Mapbox Streets Fosc",
"mapMapboxOutdoors": "Mapbox Outdoors",
"mapMapboxSatellite": "Mapbox Satellite",
"mapMapboxKey": "Mapbox Access Token",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Velocitat Mitjana",
"reportMaximumSpeed": "Velocitat Màxima",
"reportEngineHours": "Hores de Motor",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Durada",
"reportStartDate": "Data Inical",
"reportStartTime": "Hora Inical",
diff --git a/src/resources/l10n/cs.json b/src/resources/l10n/cs.json
index 10a1f1fa..5c9e53f3 100644
--- a/src/resources/l10n/cs.json
+++ b/src/resources/l10n/cs.json
@@ -2,16 +2,17 @@
"sharedLoading": "Načítám...",
"sharedHide": "Skrýt",
"sharedSave": "Uložit",
- "sharedUpload": "Upload",
+ "sharedUpload": "Nahrát",
"sharedSet": "Nastavit",
+ "sharedAccept": "Akceptovat",
"sharedCancel": "Zrušit",
- "sharedCopy": "Copy",
+ "sharedCopy": "Kopírovat",
"sharedAdd": "Přidat",
"sharedEdit": "Změnit",
"sharedRemove": "Odstranit",
"sharedRemoveConfirm": "Odstranit položku?",
- "sharedNoData": "No data",
- "sharedSubject": "Subject",
+ "sharedNoData": "Žádná data",
+ "sharedSubject": "Předmět",
"sharedYes": "Ano",
"sharedNo": "Ne",
"sharedKm": "km",
@@ -34,10 +35,11 @@
"sharedName": "Jméno",
"sharedDescription": "Popis",
"sharedSearch": "Hledat",
- "sharedIconScale": "Icon Scale",
+ "sharedPriority": "Priority",
+ "sharedIconScale": "Velikost ikony",
"sharedGeofence": "Zóna",
"sharedGeofences": "Zóny",
- "sharedCreateGeofence": "Create Geofence",
+ "sharedCreateGeofence": "Vytvořte lokalitu",
"sharedNotifications": "Upozornění",
"sharedNotification": "Upozornění",
"sharedAttributes": "Atributy",
@@ -66,14 +68,14 @@
"sharedDevice": "Zařízení",
"sharedTest": "Test",
"sharedTestNotification": "Odeslat testovací oznámení",
- "sharedTestNotificators": "Test Channels",
- "sharedTestExpression": "Test Expression",
+ "sharedTestNotificators": "Testovací kanály",
+ "sharedTestExpression": "Testovací výraz",
"sharedCalendar": "Kalendář",
"sharedCalendars": "Kalendáře",
"sharedFile": "Soubor",
- "sharedSearchDevices": "Search Devices",
- "sharedSortBy": "Sort By",
- "sharedFilterMap": "Filter on Map",
+ "sharedSearchDevices": "Vyhledat zařízení",
+ "sharedSortBy": "Seřazeno podle",
+ "sharedFilterMap": "Filtr na mapě",
"sharedSelectFile": "Vybrat soubor",
"sharedPhone": "Telefon",
"sharedRequired": "Povinné",
@@ -81,8 +83,8 @@
"sharedPermissions": "Oprávnění",
"sharedConnections": "Připojení",
"sharedExtra": "Volitelné",
- "sharedPrimary": "Primary",
- "sharedSecondary": "Secondary",
+ "sharedPrimary": "Hlavní",
+ "sharedSecondary": "Sekundární",
"sharedTypeString": "Řetězec",
"sharedTypeNumber": "Číslo",
"sharedTypeBoolean": "Logická hodnota",
@@ -99,33 +101,34 @@
"sharedAlarms": "Alarmy",
"sharedLocation": "Lokace",
"sharedImport": "Import",
- "sharedColumns": "Columns",
- "sharedDropzoneText": "Drag and drop a file here or click",
- "sharedLogs": "Logs",
- "sharedLink": "Link",
- "calendarSimple": "Simple",
- "calendarRecurrence": "Recurrence",
- "calendarOnce": "Once",
- "calendarDaily": "Daily",
- "calendarWeekly": "Weekly",
- "calendarMonthly": "Monthly",
- "calendarDays": "Days",
- "calendarSunday": "Sunday",
- "calendarMonday": "Monday",
- "calendarTuesday": "Tuesday",
- "calendarWednesday": "Wednesday",
- "calendarThursday": "Thursday",
- "calendarFriday": "Friday",
- "calendarSaturday": "Saturday",
- "attributeShowGeofences": "Show Geofences",
+ "sharedColumns": "Sloupce",
+ "sharedDropzoneText": "Přetáhněte soubor sem nebo klikněte",
+ "sharedLogs": "Protokoly",
+ "sharedLink": "Odkaz",
+ "sharedEmulator": "Emulator",
+ "calendarSimple": "Jednoduchý",
+ "calendarRecurrence": "Opakování",
+ "calendarOnce": "Jednou",
+ "calendarDaily": "Denně",
+ "calendarWeekly": "Denně",
+ "calendarMonthly": "Měsíční",
+ "calendarDays": "Dny",
+ "calendarSunday": "Neděle",
+ "calendarMonday": "Pondělí",
+ "calendarTuesday": "Úterý",
+ "calendarWednesday": "Středa",
+ "calendarThursday": "Čtvrtek",
+ "calendarFriday": "Pátek",
+ "calendarSaturday": "Sobota",
+ "attributeShowGeofences": "Ukázat lokality",
"attributeSpeedLimit": "Rychlostní limit",
- "attributeFuelDropThreshold": "Fuel Drop Threshold",
- "attributeFuelIncreaseThreshold": "Fuel Increase Threshold",
+ "attributeFuelDropThreshold": "Práh poklesu paliva",
+ "attributeFuelIncreaseThreshold": "Práh zvýšení paliva",
"attributePolylineDistance": "Vzdálenost křivky",
"attributeReportIgnoreOdometer": "Report: Počítadlo kilometrů",
"attributeWebReportColor": "Web: Barva reportu",
"attributeDevicePassword": "Heslo zařízení",
- "attributeDeviceImage": "Device Image",
+ "attributeDeviceImage": "Obrázek zařízení",
"attributeDeviceInactivityStart": "Počátek nečinnosti zařízení",
"attributeDeviceInactivityPeriod": "Období nečinnosti zařízení",
"attributeProcessingCopyAttributes": "Procesuji: Kopírování vlastností",
@@ -133,9 +136,9 @@
"attributeWebLiveRouteLength": "Web: Aktuální délka trasy",
"attributeWebSelectZoom": "Web: Přiblížit při výběru",
"attributeWebMaxZoom": "Web: Maximální přiblížení",
- "attributeTelegramChatId": "Telegram Chat ID",
- "attributePushoverUserKey": "Pushover User Key",
- "attributePushoverDeviceNames": "Pushover Device Names",
+ "attributeTelegramChatId": "ID Telegramového chatu",
+ "attributePushoverUserKey": "Pushover uživatelský klíč",
+ "attributePushoverDeviceNames": "Názvy zařízení Pushover",
"attributeMailSmtpHost": "Mail: SMTP server",
"attributeMailSmtpPort": "Mail: SMTP port",
"attributeMailSmtpStarttlsEnable": "Mail: SMTP STARTTLS povolit",
@@ -147,19 +150,19 @@
"attributeMailSmtpAuth": "Mail: SMTP povolení ověřování",
"attributeMailSmtpUsername": "Mail: SMTP uživatelské jméno",
"attributeMailSmtpPassword": "Mail: SMTP heslo",
- "attributeUiDisableSavedCommands": "UI: Disable Saved Commands",
- "attributeUiDisableAttributes": "UI: Disable Attributes",
- "attributeUiDisableGroups": "UI: Disable Groups",
+ "attributeUiDisableSavedCommands": "UI: Zakázat uložené příkazy",
+ "attributeUiDisableAttributes": "UI: Zakázat atributy",
+ "attributeUiDisableGroups": "UI: Zakázat skupiny",
"attributeUiDisableEvents": "UI: Zakázat události",
- "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features",
+ "attributeUiDisableVehicleFeatures": "UI: Zakázat funkce vozidla",
"attributeUiDisableDrivers": "UI: Zakázat řidiče",
"attributeUiDisableComputedAttributes": "UI: Zakázat vypočítané vlastnosti",
"attributeUiDisableCalendars": "UI: Zakázat kalendáře",
"attributeUiDisableMaintenance": "UI: Zakázat údržbu",
"attributeUiHidePositionAttributes": "UI: Skrýt atributy pozice",
- "attributeUiDisableLoginLanguage": "UI: Disable Login Language",
+ "attributeUiDisableLoginLanguage": "UI: Zakázat jazyk přihlášení",
"attributeNotificationTokens": "Notifikační tokeny",
- "attributePopupInfo": "Popup Info",
+ "attributePopupInfo": "Vyskakovací okno",
"errorTitle": "Chyba",
"errorGeneral": "Nesprávné parametry nebo překročení omezení",
"errorConnection": "Chyba spojení",
@@ -174,30 +177,34 @@
"userUserLimit": "Limit uživatele",
"userDeviceReadonly": "Zařízení pouze pro čtení",
"userLimitCommands": "Limit příkazů",
- "userDisableReports": "Disable Reports",
- "userFixedEmail": "No Email Change",
+ "userDisableReports": "Zakázat přehledy",
+ "userFixedEmail": "Zakázat změnu e-mailu",
"userToken": "Token",
- "userDeleteAccount": "Delete Account",
- "userTemporary": "Temporary",
+ "userDeleteAccount": "Smazat účet",
+ "userTemporary": "Dočasný",
+ "userTerms": "Podmínky služby",
+ "userPrivacy": "Zásady ochrany osobních údajů",
+ "userTermsPrompt": "Kliknutím na tlačítko \"Akceptovat\" souhlasíte s našimi Podmínkami služby a potvrzujete, že jste si přečetli naše Zásady ochrany osobních údajů.",
+ "userTermsAccepted": "Podmínky přijaty",
"loginTitle": "Přihlášení",
"loginLanguage": "Jazyk",
"loginReset": "Obnovit Heslo",
"loginRegister": "Registrace",
"loginLogin": "Přihlášení",
- "loginOpenId": "Login with OpenID",
+ "loginOpenId": "Přihlaste se pomocí OpenID",
"loginFailed": "Nesprávný email nebo heslo",
"loginCreated": "Nový uživatel byl zaregistrován",
"loginResetSuccess": "Zkontroluj si email ",
"loginUpdateSuccess": "Nové heslo je nastaveno",
"loginLogout": "Odhlášení",
"loginLogo": "Logo",
- "loginTotpCode": "One-time Password Code",
- "loginTotpKey": "One-time Password Key",
+ "loginTotpCode": "Dvoufaktorová autentifikace kód",
+ "loginTotpKey": "Dvoufaktorová autentifikace klíč",
"devicesAndState": "Zařízení a stav",
- "deviceSelected": "Selected Device",
+ "deviceSelected": "Vybrané zařízení",
"deviceTitle": "Zařízení",
- "devicePrimaryInfo": "Device Title",
- "deviceSecondaryInfo": "Device Detail",
+ "devicePrimaryInfo": "Název zařízení",
+ "deviceSecondaryInfo": "Detail zařízení",
"deviceIdentifier": "Identifikace",
"deviceModel": "Model",
"deviceContact": "Kontakt",
@@ -210,9 +217,9 @@
"deviceStatusOnline": "Online",
"deviceStatusOffline": "Offline",
"deviceStatusUnknown": "Neznámý",
- "deviceRegisterFirst": "Register your first device",
- "deviceIdentifierHelp": "IMEI, serial number or other id. It has to match the identifier device reports to the server.",
- "deviceShare": "Share Device",
+ "deviceRegisterFirst": "Zaregistrujte své první zařízení",
+ "deviceIdentifierHelp": "IMEI, sériové číslo nebo jiné ID. Musí se shodovat s identifikátorem zařízení na serveru.",
+ "deviceShare": "Sdílet zařízení",
"groupDialog": "Skupina",
"groupParent": "Skupina",
"groupNoGroup": "Žádná skupina",
@@ -222,34 +229,34 @@
"settingsServer": "Server",
"settingsUsers": "Uživatelé",
"settingsDistanceUnit": "Jednotka vzdálenosti",
- "settingsAltitudeUnit": "Altitude Unit",
+ "settingsAltitudeUnit": "Výšková jednotka",
"settingsSpeedUnit": "Jednotka rychlosti",
"settingsVolumeUnit": "Jednotka objemu",
"settingsTwelveHourFormat": "12-hodinový formát",
"settingsCoordinateFormat": "Formát souřadnic",
- "settingsServerVersion": "Server Version",
- "settingsAppVersion": "App Version",
- "settingsConnection": "Connection",
- "settingsDarkMode": "Dark Mode",
- "settingsTotpEnable": "Enable One-time Password",
- "settingsTotpForce": "Force One-time Password",
- "settingsServiceWorkerUpdateInterval": "ServiceWorker Update Interval",
- "settingsUpdateAvailable": "There is an update available.",
- "settingsSupport": "Support",
+ "settingsServerVersion": "Verze serveru",
+ "settingsAppVersion": "Verze aplikace",
+ "settingsConnection": "Spojení",
+ "settingsDarkMode": "Tmavý režim",
+ "settingsTotpEnable": "Povolit dvoufaktorové ověření",
+ "settingsTotpForce": "Vynutit dvoufaktorové ověření",
+ "settingsServiceWorkerUpdateInterval": "Interval aktualizace ServiceWorker",
+ "settingsUpdateAvailable": "K dispozici je aktualizace.",
+ "settingsSupport": "Podpora",
"reportTitle": "Reporty",
- "reportScheduled": "Scheduled Reports",
+ "reportScheduled": "Naplánované zprávy",
"reportDevice": "Zařízení",
"reportGroup": "Skupina",
"reportFrom": "Od",
"reportTo": "Komu",
"reportShow": "Zobrazit",
"reportClear": "Vyprázdnit",
- "linkGoogleMaps": "Google Maps",
- "linkAppleMaps": "Apple Maps",
+ "linkGoogleMaps": "Google Mapy",
+ "linkAppleMaps": "Apple Mapy",
"linkStreetView": "Street View",
- "positionFixTime": "Fix Time",
- "positionDeviceTime": "Device Time",
- "positionServerTime": "Server Time",
+ "positionFixTime": "Čas",
+ "positionDeviceTime": "Čas zařízení",
+ "positionServerTime": "Čas serveru",
"positionValid": "Správný",
"positionAccuracy": "Přesnost",
"positionLatitude": "Šířka",
@@ -283,7 +290,7 @@
"positionHours": "Hodiny",
"positionSteps": "Kroky",
"positionInput": "Vstup",
- "positionHeartRate": "Heart Rate",
+ "positionHeartRate": "Tepová frekvence",
"positionOutput": "Výstup",
"positionBatteryLevel": "Úroveň baterie",
"positionFuelConsumption": "Spotřeba paliva",
@@ -301,18 +308,18 @@
"positionMotion": "Pohyb",
"positionArmed": "Odjištěno",
"positionAcceleration": "Akcelerace",
- "positionTemp": "Temperature",
+ "positionTemp": "Teplota",
"positionDeviceTemp": "Teplota zařízení",
- "positionCoolantTemp": "Coolant Temperature",
+ "positionCoolantTemp": "Teplota chladicí kapaliny",
"positionOperator": "Operátor",
"positionCommand": "Příkaz",
"positionBlocked": "Blokované",
"positionDtcs": "DTC",
"positionObdSpeed": "OBD rychlost",
"positionObdOdometer": "OBD počítadlo kilometrů",
- "positionDrivingTime": "Driving Time",
+ "positionDrivingTime": "Doba jízdy",
"positionDriverUniqueId": "Unikátní ID ridiče",
- "positionCard": "Card",
+ "positionCard": "Karta",
"positionImage": "Obraz",
"positionVideo": "Video",
"positionAudio": "Zvuk",
@@ -322,26 +329,27 @@
"serverReadonly": "Pouze pro čtení",
"serverForceSettings": "Vynutit nastavení",
"serverAnnouncement": "Oznámení",
- "serverName": "Server Name",
- "serverDescription": "Server Description",
- "serverColorPrimary": "Color Primary",
- "serverColorSecondary": "Color Secondary",
- "serverLogo": "Logo Image",
- "serverLogoInverted": "Inverted Logo Image",
- "serverChangeDisable": "Disable Server Change",
- "serverDisableShare": "Disable Device Sharing",
+ "serverName": "Název serveru",
+ "serverDescription": "Popis serveru",
+ "serverColorPrimary": "Barva primární",
+ "serverColorSecondary": "Barva sekundární",
+ "serverLogo": "Obrázek loga",
+ "serverLogoInverted": "Barevně obrácený obrázek loga",
+ "serverChangeDisable": "Zakázat změnu serveru",
+ "serverDisableShare": "Zakázat sdílení zařízení",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
- "mapActive": "Active Maps",
- "mapOverlay": "Map Overlay",
- "mapOverlayCustom": "Custom Overlay",
+ "mapActive": "Aktivní mapy",
+ "mapOverlay": "Překrytí mapy",
+ "mapOverlayCustom": "Vlastní překrytí mapy",
"mapOpenSeaMap": "OpenSeaMap",
"mapOpenRailwayMap": "OpenRailwayMap",
- "mapOpenWeatherKey": "OpenWeather API Key",
+ "mapOpenWeatherKey": "OpenWeather API Klíč",
"mapOpenWeatherClouds": "OpenWeather Clouds",
- "mapOpenWeatherPrecipitation": "OpenWeather Precipitation",
- "mapOpenWeatherPressure": "OpenWeather Pressure",
- "mapOpenWeatherWind": "OpenWeather Wind",
- "mapOpenWeatherTemperature": "OpenWeather Temperature",
+ "mapOpenWeatherPrecipitation": "OpenWeather Srážky",
+ "mapOpenWeatherPressure": "OpenWeather Tlak",
+ "mapOpenWeatherWind": "OpenWeather Vítr",
+ "mapOpenWeatherTemperature": "OpenWeather Teplota",
"mapLayer": "Vrstva mapy",
"mapCustom": "Vlastní (XYZ)",
"mapCustomArcgis": "Vlastní (ArcGIS)",
@@ -350,7 +358,7 @@
"mapOsm": "OpenStreetMap",
"mapGoogleRoad": "Google Road",
"mapGoogleHybrid": "Google Hybrid",
- "mapGoogleSatellite": "Google Satellite",
+ "mapGoogleSatellite": "Google Satelit",
"mapOpenTopoMap": "OpenTopoMap",
"mapBingKey": "Bing Maps klíč",
"mapBingRoad": "Bing Maps silniční",
@@ -363,35 +371,35 @@
"mapWikimedia": "Wikimedia",
"mapOrdnanceSurvey": "Ordnance Survey",
"mapMapboxStreets": "Mapbox ulice",
- "mapMapboxStreetsDark": "Mapbox Streets Dark",
+ "mapMapboxStreetsDark": "Mapbox Streets Tmavé",
"mapMapboxOutdoors": "Mapbox venkovní",
"mapMapboxSatellite": "Mapbox satelit",
"mapMapboxKey": "Mapbox Access Token",
"mapMapTilerBasic": "MapTiler Základní",
"mapMapTilerHybrid": "MapTiler Hybridní",
- "mapMapTilerKey": "MapTiler API Key",
+ "mapMapTilerKey": "MapTiler API Klíč",
"mapLocationIqStreets": "LocationIQ Streets",
- "mapLocationIqDark": "LocationIQ Dark",
- "mapLocationIqKey": "LocationIQ Access Token",
+ "mapLocationIqDark": "LocationIQ Tmavé",
+ "mapLocationIqKey": "LocationIQ Přístupový klíč",
"mapTomTomBasic": "TomTom Basic",
- "mapTomTomFlow": "TomTom Traffic Flow",
- "mapTomTomIncidents": "TomTom Traffic Incidents",
- "mapTomTomKey": "TomTom API Key",
+ "mapTomTomFlow": "TomTom Dopravní tok",
+ "mapTomTomIncidents": "TomTom Dopravní nehody",
+ "mapTomTomKey": "TomTom API Klíč",
"mapHereBasic": "Here Basic",
"mapHereHybrid": "Here Hybrid",
"mapHereSatellite": "Here Satellite",
- "mapHereFlow": "Here Traffic Flow",
- "mapHereKey": "Here API Key",
+ "mapHereFlow": "Here Dopravní tok",
+ "mapHereKey": "Here API Klíč",
"mapShapePolygon": "Mnohoúhelník",
"mapShapeCircle": "Kruh",
"mapShapePolyline": "Křivka",
"mapLiveRoutes": "Trasy živě",
- "mapDirection": "Show Direction",
+ "mapDirection": "Zobrazit směr",
"mapCurrentLocation": "Současná pozice",
"mapPoiLayer": "Vrstva s POI",
- "mapClustering": "Markers Clustering",
- "mapOnSelect": "Show Map on Selection",
- "mapDefault": "Default Map",
+ "mapClustering": "Shlukování markerů",
+ "mapOnSelect": "Zobrazit mapu při výběru",
+ "mapDefault": "Výchozí mapa",
"stateTitle": "Stav",
"stateName": "Atribut",
"stateValue": "Hodnota",
@@ -433,16 +441,16 @@
"commandGetModemStatus": "Získat stav modemu",
"commandGetDeviceStatus": "Získat stav zařízení",
"commandSetSpeedLimit": "Nastavit rychlostní limit",
- "commandModePowerSaving": "Power Saving Mode",
- "commandModeDeepSleep": "Deep Sleep Mode",
- "commandAlarmGeofence": "Set Geofence Alarm",
- "commandAlarmBattery": "Set Battery Alarm",
- "commandAlarmSos": "Set SOS Alarm",
- "commandAlarmRemove": "Set Remove Alarm",
- "commandAlarmClock": "Set Clock Alarm",
- "commandAlarmSpeed": "Set Speed Alarm",
- "commandAlarmFall": "Set Fall Alarm",
- "commandAlarmVibration": "Set Vibration Alarm",
+ "commandModePowerSaving": "Úsporný režim",
+ "commandModeDeepSleep": "Režim hlubokého spánku",
+ "commandAlarmGeofence": "Nastavte alarm lokality",
+ "commandAlarmBattery": "Nastavte alarm baterie",
+ "commandAlarmSos": "Nastavte SOS alarm",
+ "commandAlarmRemove": "Nastavte odstranit alarm",
+ "commandAlarmClock": "Nastavte budík",
+ "commandAlarmSpeed": "Nastavte alarm rychlosti",
+ "commandAlarmFall": "Nastavte alarm pádu",
+ "commandAlarmVibration": "Nastavte vibrační alarm",
"commandFrequency": "Frekvence",
"commandTimezone": "Ofset časové zóny",
"commandMessage": "Zpráva",
@@ -458,12 +466,12 @@
"eventDeviceUnknown": "Status neznámý",
"eventDeviceOffline": "Status offline",
"eventDeviceInactive": "Zařízení je neaktivní",
- "eventQueuedCommandSent": "Queued command sent",
+ "eventQueuedCommandSent": "Příkaz ve frontě odeslán",
"eventDeviceMoving": "Zařízení se přesouvá",
"eventDeviceStopped": "Zařízení bylo zastaveno",
"eventDeviceOverspeed": "Rychlostní limit překročen",
"eventDeviceFuelDrop": "Pokles paliva",
- "eventDeviceFuelIncrease": "Fuel increase",
+ "eventDeviceFuelIncrease": "Zvýšení paliva",
"eventCommandResult": "Výsledek příkazu",
"eventGeofenceEnter": "Vstoupeno do geozóny",
"eventGeofenceExit": "Geozóna opuštěna",
@@ -473,10 +481,10 @@
"eventMaintenance": "Vyžadována údržba",
"eventTextMessage": "Obdržena textová zpráva",
"eventDriverChanged": "Řidič vyměněn",
- "eventMedia": "Media",
+ "eventMedia": "Média",
"eventsScrollToLast": "Posunout na poslední",
- "eventsSoundEvents": "Sound Events",
- "eventsSoundAlarms": "Sound Alarms",
+ "eventsSoundEvents": "Zvukové události",
+ "eventsSoundAlarms": "Zvukové alarmy",
"alarmGeneral": "Hlavní",
"alarmSos": "SOS",
"alarmVibration": "Vibrace",
@@ -518,7 +526,7 @@
"notificationType": "Typ oznámení",
"notificationAlways": "Všechna zařízení",
"notificationNotificators": "Kanály",
- "notificatorCommand": "Command",
+ "notificatorCommand": "Příkaz",
"notificatorWeb": "Web",
"notificatorMail": "Mail",
"notificatorSms": "SMS",
@@ -527,7 +535,7 @@
"notificatorTelegram": "Telegram",
"notificatorPushover": "Pushover",
"reportReplay": "Přehrát",
- "reportCombined": "Combined",
+ "reportCombined": "Kombinovaný",
"reportRoute": "Trasa",
"reportEvents": "Události",
"reportTrips": "Cesty",
@@ -541,7 +549,7 @@
"reportShowMarkers": "Zobrazit značky",
"reportExport": "Exportovat",
"reportEmail": "Zaslat report mailem",
- "reportSchedule": "Schedule",
+ "reportSchedule": "Plán",
"reportPeriod": "Období",
"reportCustom": "Vlastní",
"reportToday": "Dnes",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Průměrná rychlost",
"reportMaximumSpeed": "Maximální rychlost",
"reportEngineHours": "Motohodiny",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Trvání",
"reportStartDate": "Počáteční datum",
"reportStartTime": "Čas startu",
@@ -579,7 +589,7 @@
"categoryBoat": "Loď",
"categoryBus": "Autobus",
"categoryCar": "Auto",
- "categoryCamper": "Camper",
+ "categoryCamper": "Obytný vůz",
"categoryCrane": "Jeřáb",
"categoryHelicopter": "Helikoptéra",
"categoryMotorcycle": "Motocykl",
diff --git a/src/resources/l10n/da.json b/src/resources/l10n/da.json
index 4c24a3c6..09e2546b 100644
--- a/src/resources/l10n/da.json
+++ b/src/resources/l10n/da.json
@@ -4,6 +4,7 @@
"sharedSave": "Gem",
"sharedUpload": "Upload",
"sharedSet": "Indstil",
+ "sharedAccept": "Accept",
"sharedCancel": "Fortryd",
"sharedCopy": "Copy",
"sharedAdd": "Tilføj",
@@ -34,6 +35,7 @@
"sharedName": "Navn",
"sharedDescription": "Beskrivelse",
"sharedSearch": "Søg",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geofence",
"sharedGeofences": "Geofences",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Log på",
"loginLanguage": "Sprog",
"loginReset": "Nulstille kodeord",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Kort",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Gennemsnits hastighed",
"reportMaximumSpeed": "Maximum hastighed",
"reportEngineHours": "Motor aktiv timer",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Varighed",
"reportStartDate": "Start dato",
"reportStartTime": "Start tidspunkt",
diff --git a/src/resources/l10n/de.json b/src/resources/l10n/de.json
index 3e937ea0..3e252446 100644
--- a/src/resources/l10n/de.json
+++ b/src/resources/l10n/de.json
@@ -4,6 +4,7 @@
"sharedSave": "Speichern",
"sharedUpload": "Upload",
"sharedSet": "Speichern",
+ "sharedAccept": "Akzeptieren",
"sharedCancel": "Abbrechen",
"sharedCopy": "Kopieren",
"sharedAdd": "Hinzufügen",
@@ -34,6 +35,7 @@
"sharedName": "Name",
"sharedDescription": "Beschreibung",
"sharedSearch": "Suchen",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon-Skalierung",
"sharedGeofence": "Geo-Zaun",
"sharedGeofences": "Geo-Zäune",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Datei hierhin ziehen oder klicken",
"sharedLogs": "Protokolle",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Einfach",
"calendarRecurrence": "Wiederholung",
"calendarOnce": "Einmalig",
@@ -147,7 +150,7 @@
"attributeMailSmtpAuth": "Mail: SMTP Authentifizierung aktivieren",
"attributeMailSmtpUsername": "Mail: SMTP Benutzername",
"attributeMailSmtpPassword": "Mail: SMTP Passwort",
- "attributeUiDisableSavedCommands": "UI: Disable Saved Commands",
+ "attributeUiDisableSavedCommands": "UI: Gespeicherte Befehle deaktivieren",
"attributeUiDisableAttributes": "UI: Attribute deaktivieren",
"attributeUiDisableGroups": "UI: Gruppen deaktivieren",
"attributeUiDisableEvents": "Oberfläche: Ereignisse deaktivieren",
@@ -179,6 +182,10 @@
"userToken": "Schlüssel",
"userDeleteAccount": "Account löschen",
"userTemporary": "Temporär",
+ "userTerms": "Nutzungsbedingungen",
+ "userPrivacy": "Datenschutzerklärung",
+ "userTermsPrompt": "Durch den Klick auf „Akzeptieren“ erklären Sie sich mit unseren Nutzungsbedingungen und der Datenschutzerklärung einverstanden.",
+ "userTermsAccepted": "Nutzungsbedingungen akzeptiert",
"loginTitle": "Anmeldung",
"loginLanguage": "Sprache",
"loginReset": "Passwort zurücksetzen",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Umgekehrte Logografik",
"serverChangeDisable": "Serverwechsel deaktivieren",
"serverDisableShare": "Gerätefreigabe deaktivieren",
+ "serverReboot": "Reboot",
"mapTitle": "Karte",
"mapActive": "Aktive Karte",
"mapOverlay": "Karten Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Durchschnittsgeschwindigkeit",
"reportMaximumSpeed": "Höchstgeschwindigkeit",
"reportEngineHours": "Betriebsstunden",
+ "reportStartEngineHours": "Betriebsstunden Start",
+ "reportEndEngineHours": "Bestriebsstunden Ziel",
"reportDuration": "Dauer",
"reportStartDate": "Beginn",
"reportStartTime": "Startzeit",
diff --git a/src/resources/l10n/el.json b/src/resources/l10n/el.json
index ad2f2cf1..5331f397 100644
--- a/src/resources/l10n/el.json
+++ b/src/resources/l10n/el.json
@@ -4,6 +4,7 @@
"sharedSave": "Αποθήκευση",
"sharedUpload": "Upload",
"sharedSet": "Θέσε",
+ "sharedAccept": "Accept",
"sharedCancel": "Άκυρο",
"sharedCopy": "Copy",
"sharedAdd": "Προσθήκη",
@@ -34,6 +35,7 @@
"sharedName": "Όνομα",
"sharedDescription": "Περιγραφή",
"sharedSearch": "Αναζήτηση",
+ "sharedPriority": "Priority",
"sharedIconScale": "Κλίμακα εικονιδίων",
"sharedGeofence": "Γεωφράχτης",
"sharedGeofences": "Γεωφράχτες",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Σύρετε και αποθέστε ένα αρχείο εδώ ή κάντε κλικ",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Απλό",
"calendarRecurrence": "Επανάληψη",
"calendarOnce": "Μια φορά",
@@ -179,6 +182,10 @@
"userToken": "Λεκτικό",
"userDeleteAccount": "Διαγραφή λογαριασμού",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Σύνδεση",
"loginLanguage": "Γλώσσα",
"loginReset": "Επαναφορά κωδικού",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Χάρτης",
"mapActive": "Ενεργοί Χάρτες",
"mapOverlay": "Υπέρθεση Χάρτη",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Μέση ταχύτητα",
"reportMaximumSpeed": "Μέγιστη ταχύτητα",
"reportEngineHours": "Ώρες Μηχανής",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Διάρκεια",
"reportStartDate": "Ημερομηνία έναρξης",
"reportStartTime": "Ώρα έναρξης",
diff --git a/src/resources/l10n/en.json b/src/resources/l10n/en.json
index a9303f63..608c36d8 100644
--- a/src/resources/l10n/en.json
+++ b/src/resources/l10n/en.json
@@ -4,6 +4,7 @@
"sharedSave": "Save",
"sharedUpload": "Upload",
"sharedSet": "Set",
+ "sharedAccept": "Accept",
"sharedCancel": "Cancel",
"sharedCopy": "Copy",
"sharedAdd": "Add",
@@ -34,6 +35,7 @@
"sharedName": "Name",
"sharedDescription": "Description",
"sharedSearch": "Search",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geofence",
"sharedGeofences": "Geofences",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Login",
"loginLanguage": "Language",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Map",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Average Speed",
"reportMaximumSpeed": "Maximum Speed",
"reportEngineHours": "Engine Hours",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duration",
"reportStartDate": "Start Date",
"reportStartTime": "Start Time",
diff --git a/src/resources/l10n/es.json b/src/resources/l10n/es.json
index a0405eb1..8c9ce749 100644
--- a/src/resources/l10n/es.json
+++ b/src/resources/l10n/es.json
@@ -4,6 +4,7 @@
"sharedSave": "Guardar",
"sharedUpload": "Cargar",
"sharedSet": "Establecer",
+ "sharedAccept": "Aceptar",
"sharedCancel": "Cancelar",
"sharedCopy": "Copiar",
"sharedAdd": "Añadir",
@@ -34,6 +35,7 @@
"sharedName": "Nombre",
"sharedDescription": "Descripción",
"sharedSearch": "Buscar",
+ "sharedPriority": "Prioridad",
"sharedIconScale": "Escala de los iconos",
"sharedGeofence": "Geo-Zona",
"sharedGeofences": "Geo-Zonas",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Arrastra y suelta el archivo aquí o pulsa",
"sharedLogs": "Registros",
"sharedLink": "Enlace",
+ "sharedEmulator": "Emulador",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrente",
"calendarOnce": "Una vez",
@@ -179,6 +182,10 @@
"userToken": "Token Acceso",
"userDeleteAccount": "Borrar cuenta",
"userTemporary": "Temporal",
+ "userTerms": "Condiciones del Servicio",
+ "userPrivacy": "Política de Privacidad",
+ "userTermsPrompt": "Al hacer clic en Aceptar, aceptas nuestras Condiciones del Servicio y confirmas que has leído nuestra Política de Privacidad",
+ "userTermsAccepted": "Condiciones Aceptadas",
"loginTitle": "Iniciar sesión",
"loginLanguage": "Idioma",
"loginReset": "Reiniciar contraseña",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Imagen de logo invertida",
"serverChangeDisable": "Deshabilitar el cambio de servidor",
"serverDisableShare": "Deshabilitar poder Compartir Dispositivos",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
"mapActive": "Mapas activos",
"mapOverlay": "Capa sobre el mapa",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Velocidad media",
"reportMaximumSpeed": "Velocidad máxima",
"reportEngineHours": "Horas motor",
+ "reportStartEngineHours": "Horas de motor en marcha",
+ "reportEndEngineHours": "Horas de motor parado",
"reportDuration": "Duración",
"reportStartDate": "Fecha de inicio",
"reportStartTime": "Hora de Inicio",
diff --git a/src/resources/l10n/fa.json b/src/resources/l10n/fa.json
index 3507681c..50d949e2 100644
--- a/src/resources/l10n/fa.json
+++ b/src/resources/l10n/fa.json
@@ -4,6 +4,7 @@
"sharedSave": "ذخيره",
"sharedUpload": "Upload",
"sharedSet": "تنظیم",
+ "sharedAccept": "Accept",
"sharedCancel": "انصراف",
"sharedCopy": "Copy",
"sharedAdd": "اضافه كردن",
@@ -34,6 +35,7 @@
"sharedName": "نام",
"sharedDescription": "توضیحات",
"sharedSearch": "جستجو",
+ "sharedPriority": "Priority",
"sharedIconScale": "اندازه آیکن",
"sharedGeofence": "حصار جغرافیایی",
"sharedGeofences": "حصارهای جغرافیایی",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "یک فایل را در اینجا بکشید و رها کنید یا کلیک کنید",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "ساده",
"calendarRecurrence": "عکس العمل",
"calendarOnce": "یکبار",
@@ -179,6 +182,10 @@
"userToken": "رمز یکبار",
"userDeleteAccount": "حذف اکانت",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "ورود",
"loginLanguage": "انتخاب زبان",
"loginReset": "بازیابی رمز عبور",
@@ -330,6 +337,7 @@
"serverLogoInverted": "معکوس سازی رنگ لوگو",
"serverChangeDisable": "غیرفعال کردن تغییر سرور",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "نقشه",
"mapActive": "نقشه های فعال",
"mapOverlay": "لایه نقشه",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "سرعت میانگین",
"reportMaximumSpeed": "حداکثر سرعت",
"reportEngineHours": "مدت زمان روشن بودن وسیله",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "مسافت",
"reportStartDate": "تاریخ آغاز",
"reportStartTime": "زمان شروع",
diff --git a/src/resources/l10n/fi.json b/src/resources/l10n/fi.json
index f5459166..ba2c19ea 100644
--- a/src/resources/l10n/fi.json
+++ b/src/resources/l10n/fi.json
@@ -4,6 +4,7 @@
"sharedSave": "Tallenna",
"sharedUpload": "Lataa palvelimelle",
"sharedSet": "Aseta",
+ "sharedAccept": "Accept",
"sharedCancel": "Peruuta",
"sharedCopy": "Kopioi",
"sharedAdd": "Lisää",
@@ -34,6 +35,7 @@
"sharedName": "Nimi",
"sharedDescription": "Kuvaus",
"sharedSearch": "Haku",
+ "sharedPriority": "Priority",
"sharedIconScale": "Kuvakkeiden skaalaus",
"sharedGeofence": "Geoaita",
"sharedGeofences": "Geoaidat",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Vedä ja pudota tiedosto tähän tai klikkaa",
"sharedLogs": "Lokit",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Yksinkertainen",
"calendarRecurrence": "Toisto",
"calendarOnce": "Kerran",
@@ -179,6 +182,10 @@
"userToken": "Todennustunnus",
"userDeleteAccount": "Poista tili",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Kirjaudu",
"loginLanguage": "Kieli",
"loginReset": "Nollaa salasana",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Logo kuva negatiivinen",
"serverChangeDisable": "Estä palvelimen vaihto",
"serverDisableShare": "Estä laitteen jakaminen",
+ "serverReboot": "Reboot",
"mapTitle": "Kartta",
"mapActive": "Aktiiviset kartat",
"mapOverlay": "Karttapäällys",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Keskinopeus",
"reportMaximumSpeed": "Suurin nopeus",
"reportEngineHours": "Käyttötunnit",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Kesto",
"reportStartDate": "Aloituspäivä",
"reportStartTime": "Aloitusaika",
diff --git a/src/resources/l10n/fr.json b/src/resources/l10n/fr.json
index 1e9147ae..84ed00fa 100644
--- a/src/resources/l10n/fr.json
+++ b/src/resources/l10n/fr.json
@@ -4,6 +4,7 @@
"sharedSave": "Enregistrer",
"sharedUpload": "Upload",
"sharedSet": "Régler",
+ "sharedAccept": "Accept",
"sharedCancel": "Annuler",
"sharedCopy": "Copy",
"sharedAdd": "Ajouter",
@@ -34,6 +35,7 @@
"sharedName": "Nom",
"sharedDescription": "Description",
"sharedSearch": "Recherche",
+ "sharedPriority": "Priority",
"sharedIconScale": "Echelle des icônes",
"sharedGeofence": "Périmètre virtuel",
"sharedGeofences": "Périmètres virtuels",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Glissez et déposez un fichier ici ou cliquez",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Récurrence",
"calendarOnce": "Une fois",
@@ -179,6 +182,10 @@
"userToken": "Jeton",
"userDeleteAccount": "Supprimer le compte",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Identification",
"loginLanguage": "Langue",
"loginReset": "Réinitialiser le mot de passe",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Carte",
"mapActive": "Cartes actives",
"mapOverlay": "Superposition de cartes",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Vitesse moyenne",
"reportMaximumSpeed": "Vitesse maximum",
"reportEngineHours": "Heures du moteur",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Durée",
"reportStartDate": "Date de départ",
"reportStartTime": "Heure de départ",
diff --git a/src/resources/l10n/gl.json b/src/resources/l10n/gl.json
index 8464e7bb..9c86834d 100644
--- a/src/resources/l10n/gl.json
+++ b/src/resources/l10n/gl.json
@@ -4,6 +4,7 @@
"sharedSave": "Gardar",
"sharedUpload": "Upload",
"sharedSet": "Establecer",
+ "sharedAccept": "Accept",
"sharedCancel": "Cancelar",
"sharedCopy": "Copy",
"sharedAdd": "Engadir",
@@ -34,6 +35,7 @@
"sharedName": "Nome",
"sharedDescription": "Descrición",
"sharedSearch": "Buscar",
+ "sharedPriority": "Priority",
"sharedIconScale": "Escala das iconas",
"sharedGeofence": "Xeocerca",
"sharedGeofences": "Xeocercas",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Arrastra e solta un arquivo aquí ou fai clic",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recorrencia",
"calendarOnce": "Unha vez",
@@ -179,6 +182,10 @@
"userToken": "Token Acceso",
"userDeleteAccount": "Eliminar conta",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Iniciar sesión",
"loginLanguage": "Idioma",
"loginReset": "Restablecer o contrasinal",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Imaxe do logotipo con cores inversos",
"serverChangeDisable": "Desactivar o cambio de servidor",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
"mapActive": "Mapas activos",
"mapOverlay": "Superposición de mapas",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Velocidade media",
"reportMaximumSpeed": "Velocidade máxima",
"reportEngineHours": "Horas do motor",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duración",
"reportStartDate": "Data de inicio",
"reportStartTime": "Hora de inicio",
diff --git a/src/resources/l10n/he.json b/src/resources/l10n/he.json
index 8a2a4eed..314ac5c6 100644
--- a/src/resources/l10n/he.json
+++ b/src/resources/l10n/he.json
@@ -4,6 +4,7 @@
"sharedSave": "שמירה",
"sharedUpload": "Upload",
"sharedSet": "הגדרה",
+ "sharedAccept": "Accept",
"sharedCancel": "ביטול",
"sharedCopy": "העתקה",
"sharedAdd": "הוספה",
@@ -34,6 +35,7 @@
"sharedName": "שם",
"sharedDescription": "תיאור",
"sharedSearch": "חיפוש",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "גדר וירטואלית",
"sharedGeofences": "גדרות וירטואליות",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "פעם אחת",
@@ -179,6 +182,10 @@
"userToken": "אסימון",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "כניסה",
"loginLanguage": "שפה",
"loginReset": "איפוס סיסמה",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "מפה",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "מהירות ממוצעת",
"reportMaximumSpeed": "מהירות מירבית",
"reportEngineHours": "שעות מנוע",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "משך הנסיעה",
"reportStartDate": "Start Date",
"reportStartTime": "זמן התחלה",
diff --git a/src/resources/l10n/hi.json b/src/resources/l10n/hi.json
index 1716dc99..879451dd 100644
--- a/src/resources/l10n/hi.json
+++ b/src/resources/l10n/hi.json
@@ -4,6 +4,7 @@
"sharedSave": "सुरक्षित करें",
"sharedUpload": "Upload",
"sharedSet": "स्वीकृति दें",
+ "sharedAccept": "Accept",
"sharedCancel": "रद्द करें",
"sharedCopy": "Copy",
"sharedAdd": "जोड़ें",
@@ -34,6 +35,7 @@
"sharedName": "नाम",
"sharedDescription": "विवरण",
"sharedSearch": "खोजें",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "जिओफेंस / भूगौलिक परिधि",
"sharedGeofences": "जिओफेंसस / भूगौलिक परिधियां",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "टोकन",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "लॉगिन / प्रवेश करें",
"loginLanguage": "भाषा",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "मानचित्र",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "औसत गति",
"reportMaximumSpeed": "अधिकतम गति",
"reportEngineHours": "इंजन के घंटे",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "अवधि",
"reportStartDate": "Start Date",
"reportStartTime": "समय का आरंभ",
diff --git a/src/resources/l10n/hr.json b/src/resources/l10n/hr.json
index f64cdb04..3ca14fcf 100644
--- a/src/resources/l10n/hr.json
+++ b/src/resources/l10n/hr.json
@@ -4,6 +4,7 @@
"sharedSave": "Spremi",
"sharedUpload": "Upload",
"sharedSet": "Postavi",
+ "sharedAccept": "Accept",
"sharedCancel": "Poništi",
"sharedCopy": "Copy",
"sharedAdd": "Dodaj",
@@ -34,6 +35,7 @@
"sharedName": "Ime",
"sharedDescription": "Opis",
"sharedSearch": "Pretraži",
+ "sharedPriority": "Priority",
"sharedIconScale": "Skaliraj ikonu",
"sharedGeofence": "Geo-ograda",
"sharedGeofences": "Geo-ograde",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Dovuci i pusti datoteku ovdje ili klikni",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Jednostavno",
"calendarRecurrence": "Ponavljajuće",
"calendarOnce": "Jednom",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Obriši račun",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Prijava",
"loginLanguage": "Jezik",
"loginReset": "Ponovo postavi lozinku",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Karta",
"mapActive": "Aktivna karta",
"mapOverlay": "Prekrivajuća karta",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Prosječna brzina",
"reportMaximumSpeed": "Maksimalna brzina",
"reportEngineHours": "Sati rada motora",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Trajanje",
"reportStartDate": "Početni datum",
"reportStartTime": "Početno vrijeme",
diff --git a/src/resources/l10n/hu.json b/src/resources/l10n/hu.json
index f50b329c..a9520228 100644
--- a/src/resources/l10n/hu.json
+++ b/src/resources/l10n/hu.json
@@ -4,6 +4,7 @@
"sharedSave": "Mentés",
"sharedUpload": "Upload",
"sharedSet": "Beállít",
+ "sharedAccept": "Accept",
"sharedCancel": "Mégse",
"sharedCopy": "Copy",
"sharedAdd": "Hozzáadás",
@@ -34,6 +35,7 @@
"sharedName": "Név",
"sharedDescription": "Leírás",
"sharedSearch": "Keresés",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geokerítés",
"sharedGeofences": "Geokerítések",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Bejelentkezés",
"loginLanguage": "Nyelv",
"loginReset": "Jelszó reset",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Térkép",
"mapActive": "Aktív térképek",
"mapOverlay": "Térkép réteg",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Átlagos sebesség",
"reportMaximumSpeed": "Maximális sebesség",
"reportEngineHours": "Motorjárat órák",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Időtartam",
"reportStartDate": "Kezdés dátuma",
"reportStartTime": "Indulás ideje",
diff --git a/src/resources/l10n/id.json b/src/resources/l10n/id.json
index c7883dae..0c1910a1 100644
--- a/src/resources/l10n/id.json
+++ b/src/resources/l10n/id.json
@@ -4,6 +4,7 @@
"sharedSave": "Simpan",
"sharedUpload": "Upload",
"sharedSet": "Setel",
+ "sharedAccept": "Accept",
"sharedCancel": "Batal",
"sharedCopy": "Copy",
"sharedAdd": "Tambah",
@@ -34,6 +35,7 @@
"sharedName": "Nama",
"sharedDescription": "Deskripsi",
"sharedSearch": "Cari",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Batas Wilayah",
"sharedGeofences": "Semua Batas Wilayah",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Masuk",
"loginLanguage": "Bahasa",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Peta",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Kecepatan Rata-rata",
"reportMaximumSpeed": "Kecepatan Tertinggi",
"reportEngineHours": "Durasi Mesin",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Durasi",
"reportStartDate": "Start Date",
"reportStartTime": "Waktu Awal",
diff --git a/src/resources/l10n/it.json b/src/resources/l10n/it.json
index 03fcbb16..93756f25 100644
--- a/src/resources/l10n/it.json
+++ b/src/resources/l10n/it.json
@@ -4,6 +4,7 @@
"sharedSave": "Salva",
"sharedUpload": "Carica",
"sharedSet": "Imposta",
+ "sharedAccept": "Accept",
"sharedCancel": "Annulla",
"sharedCopy": "Copia",
"sharedAdd": "Aggiungi",
@@ -34,6 +35,7 @@
"sharedName": "Nome",
"sharedDescription": "Descrizione",
"sharedSearch": "Cerca",
+ "sharedPriority": "Priority",
"sharedIconScale": "Grandezza Icona",
"sharedGeofence": "Geo Area",
"sharedGeofences": "Geo Aree",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Trascina un file qui o clicca",
"sharedLogs": "Registri",
"sharedLink": "Collegamento",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Semplice",
"calendarRecurrence": "Ricorrente",
"calendarOnce": "Una volta",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Elimina Account",
"userTemporary": "Temporaneo",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Accesso",
"loginLanguage": "Lingua",
"loginReset": "Resetta Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Immagine Logo Invertita",
"serverChangeDisable": "Disattiva cambiamento Server",
"serverDisableShare": "Disattiva la Condivisione del Dispositivo",
+ "serverReboot": "Reboot",
"mapTitle": "Mappa",
"mapActive": "Mappe Attive",
"mapOverlay": "Soprapposizione Mappa",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Velocità Media",
"reportMaximumSpeed": "Velocità Massima",
"reportEngineHours": "Ore di Guida",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Durata",
"reportStartDate": "Data di partenza",
"reportStartTime": "Ora di Partenza",
diff --git a/src/resources/l10n/ja.json b/src/resources/l10n/ja.json
index 3c99b0c0..437fcfb0 100644
--- a/src/resources/l10n/ja.json
+++ b/src/resources/l10n/ja.json
@@ -4,6 +4,7 @@
"sharedSave": "保存",
"sharedUpload": "Upload",
"sharedSet": "設定",
+ "sharedAccept": "Accept",
"sharedCancel": "キャンセル",
"sharedCopy": "Copy",
"sharedAdd": "追加",
@@ -34,6 +35,7 @@
"sharedName": "名前",
"sharedDescription": "説明",
"sharedSearch": "検索",
+ "sharedPriority": "Priority",
"sharedIconScale": "アイコンの大きさ",
"sharedGeofence": "ジオフェンス",
"sharedGeofences": "ジオフェンス",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "ファイルをドラッグ&ドロップするかクリック",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "シンプル",
"calendarRecurrence": "再発",
"calendarOnce": "一度",
@@ -179,6 +182,10 @@
"userToken": "トークン",
"userDeleteAccount": "アカウントを削除",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "ログイン",
"loginLanguage": "言語",
"loginReset": "パスワードをリセット",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "地図",
"mapActive": "アクティブなマップ",
"mapOverlay": "マップのオーバーレイ",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "平均速度",
"reportMaximumSpeed": "最高速度",
"reportEngineHours": "エンジン稼働時間",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "期間",
"reportStartDate": "開始日",
"reportStartTime": "開始日時",
diff --git a/src/resources/l10n/ka.json b/src/resources/l10n/ka.json
index 5a6b4cb2..e4c154cc 100644
--- a/src/resources/l10n/ka.json
+++ b/src/resources/l10n/ka.json
@@ -4,6 +4,7 @@
"sharedSave": "შენახვა",
"sharedUpload": "Upload",
"sharedSet": "დაყენება",
+ "sharedAccept": "Accept",
"sharedCancel": "უარყოფა",
"sharedCopy": "Copy",
"sharedAdd": "დამატება",
@@ -34,6 +35,7 @@
"sharedName": "დასახელება",
"sharedDescription": "აღწერილობა",
"sharedSearch": "ძებნა",
+ "sharedPriority": "Priority",
"sharedIconScale": "იკონკის მასშტაბი",
"sharedGeofence": "გეოზონა",
"sharedGeofences": "გეოზონები",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "გადმოათრიეთ ფაილი აქ ან დააწკაპუნეთ",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "მარტივი",
"calendarRecurrence": "რეციდივი",
"calendarOnce": "ერთხელ",
@@ -179,6 +182,10 @@
"userToken": "ტოკენი",
"userDeleteAccount": "Ანგარიშის წაშლა",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "ავტორიზაცია",
"loginLanguage": "ენა",
"loginReset": "პაროლის განულება",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "რუკა",
"mapActive": "აქტიური რუკა",
"mapOverlay": "რუკის დაფარვა",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "საშუალო სიჩქარე",
"reportMaximumSpeed": "მაქსიმალური სიჩქარე",
"reportEngineHours": "მოტოსაათი",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "ხანგრძლივობა",
"reportStartDate": "დაწყების თარიღი",
"reportStartTime": "დაწყების დრო",
diff --git a/src/resources/l10n/kk.json b/src/resources/l10n/kk.json
index 706f2b78..94cec108 100644
--- a/src/resources/l10n/kk.json
+++ b/src/resources/l10n/kk.json
@@ -4,6 +4,7 @@
"sharedSave": "Сақтау",
"sharedUpload": "Upload",
"sharedSet": "Орнату",
+ "sharedAccept": "Accept",
"sharedCancel": "Болдырмау",
"sharedCopy": "Copy",
"sharedAdd": "Енгізу",
@@ -34,6 +35,7 @@
"sharedName": "Атауы",
"sharedDescription": "Сипаттамасы",
"sharedSearch": "Іздеу",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Геозона",
"sharedGeofences": "Геозоналар",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Кілт",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Кіру",
"loginLanguage": "Тіл",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Карта",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Орташа жылдамдық",
"reportMaximumSpeed": "Максималды жылдамдық",
"reportEngineHours": "Мотосағат",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Ұзақтығы",
"reportStartDate": "Start Date",
"reportStartTime": "Бастапқы уақыт",
diff --git a/src/resources/l10n/km.json b/src/resources/l10n/km.json
index d6d38ea8..bcd4d919 100644
--- a/src/resources/l10n/km.json
+++ b/src/resources/l10n/km.json
@@ -4,6 +4,7 @@
"sharedSave": "រក្សារទុក",
"sharedUpload": "Upload",
"sharedSet": "កំណត់",
+ "sharedAccept": "Accept",
"sharedCancel": "បោះបង់",
"sharedCopy": "Copy",
"sharedAdd": "បន្ថែម",
@@ -34,6 +35,7 @@
"sharedName": "ឈ្មោះ",
"sharedDescription": "បរិយាយ",
"sharedSearch": "ស្វែងរក",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "កំណត់ភូមិសាស្ត្រ",
"sharedGeofences": "កំណត់ភូមិសាស្ត្រ",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "សញ្ញាសម្ងាត់",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "ចូល",
"loginLanguage": "ភាសា",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "ផែនទី",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "ល្បឿន​មធ្យម",
"reportMaximumSpeed": "ល្បឿនអតិបរមា",
"reportEngineHours": "ម៉ោងម៉ាស៊ីន",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "រយៈពេល",
"reportStartDate": "Start Date",
"reportStartTime": "ម៉ោងចាប់ផ្តើម",
diff --git a/src/resources/l10n/ko.json b/src/resources/l10n/ko.json
index 0ba191cf..be65dd97 100644
--- a/src/resources/l10n/ko.json
+++ b/src/resources/l10n/ko.json
@@ -4,6 +4,7 @@
"sharedSave": "저장",
"sharedUpload": "Upload",
"sharedSet": "확인",
+ "sharedAccept": "Accept",
"sharedCancel": "취소",
"sharedCopy": "Copy",
"sharedAdd": "추가",
@@ -34,6 +35,7 @@
"sharedName": "이름",
"sharedDescription": "내용",
"sharedSearch": "검색",
+ "sharedPriority": "Priority",
"sharedIconScale": "아이콘 크기",
"sharedGeofence": "지오펜스",
"sharedGeofences": "지오펜스",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "파일을 가져오거나 여기를 누르세요.",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "심플",
"calendarRecurrence": "반복 주기",
"calendarOnce": "한번",
@@ -179,6 +182,10 @@
"userToken": "토큰",
"userDeleteAccount": "계정 삭제",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "로그인",
"loginLanguage": "언어",
"loginReset": "비밀번호 초기화",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "지도",
"mapActive": "활성화된 지도",
"mapOverlay": "지도 오버레이",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "평균 속도",
"reportMaximumSpeed": "최대 속도",
"reportEngineHours": "엔진 시간",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "기간",
"reportStartDate": "시작일",
"reportStartTime": "시작시간",
diff --git a/src/resources/l10n/lo.json b/src/resources/l10n/lo.json
index d0a40085..64dd2864 100644
--- a/src/resources/l10n/lo.json
+++ b/src/resources/l10n/lo.json
@@ -4,6 +4,7 @@
"sharedSave": "ບັນທຶກ",
"sharedUpload": "Upload",
"sharedSet": "Set",
+ "sharedAccept": "Accept",
"sharedCancel": "ຍົກເລີກ",
"sharedCopy": "Copy",
"sharedAdd": "ເພີ່ມ",
@@ -34,6 +35,7 @@
"sharedName": "ຊື່",
"sharedDescription": "ລັກສະນະ",
"sharedSearch": "ຄົ້ນຫາ",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "ເຂດພື້ນທີ່",
"sharedGeofences": "ເຂດພື້ນທີ່",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "ເຂົ້າສູ່ລະບົບ",
"loginLanguage": "ພາສາ",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "ແຜ່ນທີ",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Average Speed",
"reportMaximumSpeed": "Maximum Speed",
"reportEngineHours": "Engine Hours",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duration",
"reportStartDate": "Start Date",
"reportStartTime": "Start Time",
diff --git a/src/resources/l10n/lt.json b/src/resources/l10n/lt.json
index d4ae0530..43f61758 100644
--- a/src/resources/l10n/lt.json
+++ b/src/resources/l10n/lt.json
@@ -4,6 +4,7 @@
"sharedSave": "Išsaugoti",
"sharedUpload": "Įkelti",
"sharedSet": "Nustatyti",
+ "sharedAccept": "Accept",
"sharedCancel": "Atšaukti",
"sharedCopy": "Kopijuoti",
"sharedAdd": "Pridėti",
@@ -34,6 +35,7 @@
"sharedName": "Pavadinimas",
"sharedDescription": "Aprašymas",
"sharedSearch": "Paieška",
+ "sharedPriority": "Priority",
"sharedIconScale": "Ikonos mastelis",
"sharedGeofence": "Georiba",
"sharedGeofences": "Georibos",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Nutempkite failą čia arba paspauskite",
"sharedLogs": "Žurnalai",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Paprastas",
"calendarRecurrence": "Pasikartojimas",
"calendarOnce": "Vienkartinis",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Pašalinti vartotoją",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Prisijungimas",
"loginLanguage": "Kalba",
"loginReset": "Atstatyti slaptažodį",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Invertuotas logo vaizdas",
"serverChangeDisable": "Uždrausti keisti serverį",
"serverDisableShare": "Išjungti dalinimasi įrenginiais",
+ "serverReboot": "Reboot",
"mapTitle": "Žemėlapis",
"mapActive": "Aktyvūs žemėlapiai",
"mapOverlay": "Žemėlapių sluoksniai",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Vidutinis greitis",
"reportMaximumSpeed": "Maksimalus greitis",
"reportEngineHours": "Variklio valandos",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Trukmė",
"reportStartDate": "Pradžios data",
"reportStartTime": "Pradžios laikas",
diff --git a/src/resources/l10n/lv.json b/src/resources/l10n/lv.json
index 5769fe30..cb15f446 100644
--- a/src/resources/l10n/lv.json
+++ b/src/resources/l10n/lv.json
@@ -4,6 +4,7 @@
"sharedSave": "Saglabāt",
"sharedUpload": "Upload",
"sharedSet": "Iestatīt",
+ "sharedAccept": "Accept",
"sharedCancel": "Atcelt",
"sharedCopy": "Copy",
"sharedAdd": "Pievienot",
@@ -34,6 +35,7 @@
"sharedName": "Vārds",
"sharedDescription": "Apraksts",
"sharedSearch": "Meklēt",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geolaukums",
"sharedGeofences": "Geolaukumi",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Zīme",
"userDeleteAccount": "Dzēst Kontu",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Lietotājvārds",
"loginLanguage": "Valoda",
"loginReset": "Atiestatīt paroli",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Karte",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Vidējais Ātrums",
"reportMaximumSpeed": "Maksimālais Ātrums",
"reportEngineHours": "Motorstundas",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Ilgums",
"reportStartDate": "Sākuma Datums",
"reportStartTime": "Sākuma Laiks",
diff --git a/src/resources/l10n/mk.json b/src/resources/l10n/mk.json
index 4aa2119e..998552f3 100644
--- a/src/resources/l10n/mk.json
+++ b/src/resources/l10n/mk.json
@@ -4,6 +4,7 @@
"sharedSave": "Зачувај",
"sharedUpload": "Прикачи",
"sharedSet": "Постави",
+ "sharedAccept": "Accept",
"sharedCancel": "Откажи",
"sharedCopy": "Копирај",
"sharedAdd": "Додади",
@@ -34,6 +35,7 @@
"sharedName": "Име",
"sharedDescription": "Опис",
"sharedSearch": "Пребарување",
+ "sharedPriority": "Priority",
"sharedIconScale": "Размер на икони",
"sharedGeofence": "Географска зона",
"sharedGeofences": "Географски зони",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Повлечи фајл овде или кликни",
"sharedLogs": "Логови",
"sharedLink": "Линк",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Едноставно",
"calendarRecurrence": "Повторување",
"calendarOnce": "Еднаш",
@@ -179,6 +182,10 @@
"userToken": "Токен",
"userDeleteAccount": "Избриши Акаунт",
"userTemporary": "Привремено",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Најава",
"loginLanguage": "Јазик",
"loginReset": "Ресетирај лозинка",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Инверзна слика за лого",
"serverChangeDisable": "Оневозможи промена на сервер",
"serverDisableShare": "Оневозможи споделување на уреди",
+ "serverReboot": "Reboot",
"mapTitle": "Мапа",
"mapActive": "Активни мапи",
"mapOverlay": "Преклопени мапи",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Просечна брзина",
"reportMaximumSpeed": "Максимална брзина",
"reportEngineHours": "Работни саати",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Времетраење",
"reportStartDate": "Почетен датум",
"reportStartTime": "Почетно време",
diff --git a/src/resources/l10n/ml.json b/src/resources/l10n/ml.json
index 40dde8f2..98b869fe 100644
--- a/src/resources/l10n/ml.json
+++ b/src/resources/l10n/ml.json
@@ -4,6 +4,7 @@
"sharedSave": "സേവ്",
"sharedUpload": "Upload",
"sharedSet": "സെറ്റ്",
+ "sharedAccept": "Accept",
"sharedCancel": "റദ്ദാക്കുക",
"sharedCopy": "Copy",
"sharedAdd": "ചേര്‍ക്കുക",
@@ -34,6 +35,7 @@
"sharedName": "പേര്",
"sharedDescription": "വിവരണം",
"sharedSearch": "സെർച്ച് ",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "ജിയോഫെൻസ് ",
"sharedGeofences": "ജിയോഫെൻസെസ് ",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "ലോഗിൻ ചെയ്യുക ",
"loginLanguage": "ഭാഷ",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "ഭൂപടം",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Average Speed",
"reportMaximumSpeed": "Maximum Speed",
"reportEngineHours": "Engine Hours",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duration",
"reportStartDate": "Start Date",
"reportStartTime": "Start Time",
diff --git a/src/resources/l10n/mn.json b/src/resources/l10n/mn.json
index ea3ecedb..c11686bf 100644
--- a/src/resources/l10n/mn.json
+++ b/src/resources/l10n/mn.json
@@ -4,6 +4,7 @@
"sharedSave": "Хадгалах",
"sharedUpload": "Upload",
"sharedSet": "Тааруулах",
+ "sharedAccept": "Accept",
"sharedCancel": "Цуцлах",
"sharedCopy": "Copy",
"sharedAdd": "Нэмэх",
@@ -34,6 +35,7 @@
"sharedName": "Нэр",
"sharedDescription": "Тайлбар",
"sharedSearch": "Хайх",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Хязгаарлалт",
"sharedGeofences": "Хязгаарлалтууд",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Нэвтрэх",
"loginLanguage": "Хэл",
"loginReset": "Нууц үг сэргээх",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Map",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Дундаж хурд",
"reportMaximumSpeed": "Дээд хурд",
"reportEngineHours": "Engine Hours",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Хугацаа",
"reportStartDate": "Эхлэх өдөр",
"reportStartTime": "Эхлэх цаг",
diff --git a/src/resources/l10n/ms.json b/src/resources/l10n/ms.json
index 50b4048a..4c787349 100644
--- a/src/resources/l10n/ms.json
+++ b/src/resources/l10n/ms.json
@@ -4,6 +4,7 @@
"sharedSave": "Simpan",
"sharedUpload": "Upload",
"sharedSet": "Set",
+ "sharedAccept": "Accept",
"sharedCancel": "Batal",
"sharedCopy": "Copy",
"sharedAdd": "Tambah",
@@ -34,6 +35,7 @@
"sharedName": "Name",
"sharedDescription": "Description",
"sharedSearch": "Search",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geofence",
"sharedGeofences": "Geofences",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Log masuk",
"loginLanguage": "Bahasa",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Peta",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Average Speed",
"reportMaximumSpeed": "Maximum Speed",
"reportEngineHours": "Engine Hours",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duration",
"reportStartDate": "Start Date",
"reportStartTime": "Start Time",
diff --git a/src/resources/l10n/nb.json b/src/resources/l10n/nb.json
index a3faa8c0..3d8d1613 100644
--- a/src/resources/l10n/nb.json
+++ b/src/resources/l10n/nb.json
@@ -4,6 +4,7 @@
"sharedSave": "Lagre",
"sharedUpload": "Upload",
"sharedSet": "Sett",
+ "sharedAccept": "Accept",
"sharedCancel": "Avbryt",
"sharedCopy": "Copy",
"sharedAdd": "Legg til",
@@ -34,6 +35,7 @@
"sharedName": "Navn",
"sharedDescription": "Beskrivelse",
"sharedSearch": "Søk",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "geo-gjerde",
"sharedGeofences": "Geo-gjerder",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Symbol",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Logg inn",
"loginLanguage": "Språk",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Kart",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Gjennomsnittshastighet ",
"reportMaximumSpeed": "Maksimumshastighet",
"reportEngineHours": "Motortimer",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Varighet",
"reportStartDate": "Start Date",
"reportStartTime": "Starttidspunkt",
diff --git a/src/resources/l10n/ne.json b/src/resources/l10n/ne.json
index 0c89df5d..c8bff3e6 100644
--- a/src/resources/l10n/ne.json
+++ b/src/resources/l10n/ne.json
@@ -4,6 +4,7 @@
"sharedSave": "सुरक्षित गर्ने ",
"sharedUpload": "Upload",
"sharedSet": "सेट गर्ने ",
+ "sharedAccept": "Accept",
"sharedCancel": "रद्ध गर्ने ",
"sharedCopy": "Copy",
"sharedAdd": "थप्ने",
@@ -34,6 +35,7 @@
"sharedName": "नाम ",
"sharedDescription": "विवरण ",
"sharedSearch": "खोज्ने ",
+ "sharedPriority": "Priority",
"sharedIconScale": "आइकन स्केल",
"sharedGeofence": "भू परिधि ",
"sharedGeofences": "भू परिधिहरू ",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "यहाँ एउटा फाइल तान्नुहोस् र छोड्नुहोस् वा क्लिक गर्नुहोस्",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "सरल",
"calendarRecurrence": "पुनरावृत्ति",
"calendarOnce": "एक पटक",
@@ -179,6 +182,10 @@
"userToken": "टोकन",
"userDeleteAccount": "खाता मेटाउनुहोस्",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "लगिन गर्ने ",
"loginLanguage": "भाषा ",
"loginReset": "पासवर्ड रिसेट",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "नक्शा ",
"mapActive": "सक्रिय नक्शा",
"mapOverlay": "नक्सा ओभरले",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "औसत गति",
"reportMaximumSpeed": "अधिकतम गति",
"reportEngineHours": "इन्जिन घण्टा",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "अवधि",
"reportStartDate": "सुरू मिति",
"reportStartTime": "शुरु समय",
diff --git a/src/resources/l10n/nl.json b/src/resources/l10n/nl.json
index 224adc26..6a22a8d6 100644
--- a/src/resources/l10n/nl.json
+++ b/src/resources/l10n/nl.json
@@ -4,6 +4,7 @@
"sharedSave": "Opslaan",
"sharedUpload": "Upload",
"sharedSet": "Instellen",
+ "sharedAccept": "Accept",
"sharedCancel": "Annuleren",
"sharedCopy": "Copy",
"sharedAdd": "Toevoegen",
@@ -34,6 +35,7 @@
"sharedName": "Naam",
"sharedDescription": "Omschrijving",
"sharedSearch": "Zoeken",
+ "sharedPriority": "Priority",
"sharedIconScale": "Schaal van iconen",
"sharedGeofence": "Geografisch gebied",
"sharedGeofences": "Geografische gebieden",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Sleep en plaats hier een bestand of klik hier",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Eenvoudig",
"calendarRecurrence": "Herhaling",
"calendarOnce": "Eenmalig",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Geen account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Inloggen",
"loginLanguage": "Taal",
"loginReset": "Wachtwoord herstellen",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Kaart",
"mapActive": "Actieve kaarten",
"mapOverlay": "Kaartlaag",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Gemiddelde snelheid",
"reportMaximumSpeed": "Maximale snelheid",
"reportEngineHours": "Draaiuren motor",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duur",
"reportStartDate": "Startdatum",
"reportStartTime": "Starttijd",
diff --git a/src/resources/l10n/nn.json b/src/resources/l10n/nn.json
index 2bdc5a9a..9e1a0815 100644
--- a/src/resources/l10n/nn.json
+++ b/src/resources/l10n/nn.json
@@ -4,6 +4,7 @@
"sharedSave": "Lagre",
"sharedUpload": "Upload",
"sharedSet": "Sett",
+ "sharedAccept": "Accept",
"sharedCancel": "Avbryt",
"sharedCopy": "Copy",
"sharedAdd": "Legg til",
@@ -34,6 +35,7 @@
"sharedName": "Namn",
"sharedDescription": "Beskriving",
"sharedSearch": "Søk",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geo-gjerde",
"sharedGeofences": "Geo-gjerde",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Symbol",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Logg inn",
"loginLanguage": "Språk",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Kart",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Gjennomsnittshastighet",
"reportMaximumSpeed": "Maksimumshastighet",
"reportEngineHours": "Motortimar",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Varigheit",
"reportStartDate": "Start Date",
"reportStartTime": "Starttidspunkt",
diff --git a/src/resources/l10n/pl.json b/src/resources/l10n/pl.json
index 6e0a57d4..cdd12bb0 100644
--- a/src/resources/l10n/pl.json
+++ b/src/resources/l10n/pl.json
@@ -4,6 +4,7 @@
"sharedSave": "Zapisz",
"sharedUpload": "Wyślij",
"sharedSet": "Ustaw",
+ "sharedAccept": "Accept",
"sharedCancel": "Anuluj",
"sharedCopy": "Copy",
"sharedAdd": "Dodaj",
@@ -34,6 +35,7 @@
"sharedName": "Nazwa",
"sharedDescription": "Opis",
"sharedSearch": "Szukaj",
+ "sharedPriority": "Priority",
"sharedIconScale": "Skala ikon",
"sharedGeofence": "Obszar monitorowany",
"sharedGeofences": "Obszary monitorowane",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Przeciągnij i upuść plik tutaj lub kliknij",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Prosty",
"calendarRecurrence": "Powtarzalny",
"calendarOnce": "Jednorazowy",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Usuń konto",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Login",
"loginLanguage": "Język",
"loginReset": "Zresetuj hasło",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Odwrócony obraz logo",
"serverChangeDisable": "Wyłącz zmianę serwera",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
"mapActive": "Aktywne mapy",
"mapOverlay": "Nakładka mapy",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Średnia prędkość",
"reportMaximumSpeed": "Maksymalna prędkość",
"reportEngineHours": "Czas pracy silnika",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Czas trwania",
"reportStartDate": "Data początkowa",
"reportStartTime": "Czas uruchomienia",
diff --git a/src/resources/l10n/pt.json b/src/resources/l10n/pt.json
index 66181d39..3e68d191 100644
--- a/src/resources/l10n/pt.json
+++ b/src/resources/l10n/pt.json
@@ -4,6 +4,7 @@
"sharedSave": "Guardar",
"sharedUpload": "Upload",
"sharedSet": "Conjunto",
+ "sharedAccept": "Accept",
"sharedCancel": "Cancelar",
"sharedCopy": "Copy",
"sharedAdd": "Adicionar",
@@ -34,6 +35,7 @@
"sharedName": "Nome",
"sharedDescription": "Descrição",
"sharedSearch": "Pesquisar",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Cerca Geográfica",
"sharedGeofences": "Cercas Geográficas",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Símbolo",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Entrar",
"loginLanguage": "Idioma",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Velocidade Média",
"reportMaximumSpeed": "Velocidade Máxima",
"reportEngineHours": "Duração Ligado",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duração",
"reportStartDate": "Data de Início",
"reportStartTime": "Hora de Inicio",
diff --git a/src/resources/l10n/pt_BR.json b/src/resources/l10n/pt_BR.json
index 7f47050f..8b25df7c 100644
--- a/src/resources/l10n/pt_BR.json
+++ b/src/resources/l10n/pt_BR.json
@@ -4,14 +4,15 @@
"sharedSave": "Salvar",
"sharedUpload": "Enviar",
"sharedSet": "Aplicar",
+ "sharedAccept": "Accept",
"sharedCancel": "Cancelar",
- "sharedCopy": "Copy",
+ "sharedCopy": "Copia",
"sharedAdd": "Adicionar",
"sharedEdit": "Editar",
"sharedRemove": "Remover",
"sharedRemoveConfirm": "Remover item?",
"sharedNoData": "Sem dados",
- "sharedSubject": "Subject",
+ "sharedSubject": "Assunto",
"sharedYes": "Sim",
"sharedNo": "Não",
"sharedKm": "km",
@@ -34,6 +35,7 @@
"sharedName": "Nome",
"sharedDescription": "Descrição",
"sharedSearch": "Busca",
+ "sharedPriority": "Priority",
"sharedIconScale": "Escala do ícone",
"sharedGeofence": "Geocerca",
"sharedGeofences": "Cerca Virtual",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Arraste e solte um arquivo aqui ou clique",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simples",
"calendarRecurrence": "Recorrência",
"calendarOnce": "Uma vez",
@@ -147,11 +150,11 @@
"attributeMailSmtpAuth": "Email: Ativar Autenticação (SMTP)",
"attributeMailSmtpUsername": "Email: Nome de Usuário (SMTP)",
"attributeMailSmtpPassword": "Email: Senha (SMTP)",
- "attributeUiDisableSavedCommands": "UI: Disable Saved Commands",
+ "attributeUiDisableSavedCommands": "UI: Desativar Comandos Salvos",
"attributeUiDisableAttributes": "UI: Desativar atributos",
"attributeUiDisableGroups": "UI: Desabilitar Grupos",
"attributeUiDisableEvents": "UI: Eventos Desativados",
- "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features",
+ "attributeUiDisableVehicleFeatures": "UI: Desativar Recursos do Veículo",
"attributeUiDisableDrivers": "UI: Desativar Motoristas",
"attributeUiDisableComputedAttributes": "UI: Desativar Atributos Calculados",
"attributeUiDisableCalendars": "UI: Desativar Calendários",
@@ -178,7 +181,11 @@
"userFixedEmail": "Sem alteração de e-mail",
"userToken": "Token",
"userDeleteAccount": "Deletar conta",
- "userTemporary": "Temporary",
+ "userTemporary": "Temporário",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Login",
"loginLanguage": "Idioma",
"loginReset": "Redefinir senha",
@@ -235,7 +242,7 @@
"settingsTotpForce": "Forçar One-time Password",
"settingsServiceWorkerUpdateInterval": "Intervalo de atualização do ServiceWorker",
"settingsUpdateAvailable": "Existe uma atualização disponível.",
- "settingsSupport": "Support",
+ "settingsSupport": "Suporte",
"reportTitle": "Relatórios",
"reportScheduled": "Agendamento de relatórios",
"reportDevice": "Dispositivo",
@@ -329,7 +336,8 @@
"serverLogo": "Imagem do Logo",
"serverLogoInverted": "Imagem do logo invertida",
"serverChangeDisable": "Desabilitar mudança de servidor",
- "serverDisableShare": "Disable Device Sharing",
+ "serverDisableShare": "Desativar Compartilhamento de Dispositivos",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
"mapActive": "Mapas ativos",
"mapOverlay": "Sobreposição de mapa",
@@ -363,7 +371,7 @@
"mapWikimedia": "Wikimedia",
"mapOrdnanceSurvey": "Levantamento de artilharia",
"mapMapboxStreets": "Mapbox Ruas",
- "mapMapboxStreetsDark": "Mapbox Streets Dark",
+ "mapMapboxStreetsDark": "Mapbox Streets Escuro",
"mapMapboxOutdoors": "Mapbox ao ar livre",
"mapMapboxSatellite": "Mapbox Satélite",
"mapMapboxKey": "Mapbox Token de Acesso",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Velocidade Média",
"reportMaximumSpeed": "Velocidade Máxima",
"reportEngineHours": "Horas ligado",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duração",
"reportStartDate": "Data de Início",
"reportStartTime": "Hora inicial",
diff --git a/src/resources/l10n/ro.json b/src/resources/l10n/ro.json
index 84367c5b..6446b0ee 100644
--- a/src/resources/l10n/ro.json
+++ b/src/resources/l10n/ro.json
@@ -4,6 +4,7 @@
"sharedSave": "Salvează",
"sharedUpload": "Încarcă",
"sharedSet": "Configurare",
+ "sharedAccept": "Accept",
"sharedCancel": "Anulează",
"sharedCopy": "Copy",
"sharedAdd": "Adaugă",
@@ -34,6 +35,7 @@
"sharedName": "Nume",
"sharedDescription": "Descriere",
"sharedSearch": "Căutare",
+ "sharedPriority": "Priority",
"sharedIconScale": "Scală pentru Iconiță",
"sharedGeofence": "Perimetru Restricționat",
"sharedGeofences": "Perimetre Restricționate",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop un fișier aici ori click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simplu",
"calendarRecurrence": "Recurent",
"calendarOnce": "O singură dată",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Șterge Cont",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Autentificare",
"loginLanguage": "Limbă",
"loginReset": "Reconfigurare Parolă",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Imagine Logo Inversată",
"serverChangeDisable": "Dezactivează Schimbarea Serverului",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Hartă",
"mapActive": "Hărți Active",
"mapOverlay": "Suprapunere Hartă",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Viteza medie",
"reportMaximumSpeed": "Viteză Maximă",
"reportEngineHours": "Ore motor",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Durata",
"reportStartDate": "Data Start",
"reportStartTime": "Oră Start",
diff --git a/src/resources/l10n/ru.json b/src/resources/l10n/ru.json
index 4d70757d..e9beb53e 100644
--- a/src/resources/l10n/ru.json
+++ b/src/resources/l10n/ru.json
@@ -4,6 +4,7 @@
"sharedSave": "Сохранить",
"sharedUpload": "Upload",
"sharedSet": "Установить",
+ "sharedAccept": "Accept",
"sharedCancel": "Отмена",
"sharedCopy": "Copy",
"sharedAdd": "Добавить",
@@ -34,6 +35,7 @@
"sharedName": "Имя",
"sharedDescription": "Описание",
"sharedSearch": "Поиск",
+ "sharedPriority": "Priority",
"sharedIconScale": "Иконка масштаба",
"sharedGeofence": "Геозона",
"sharedGeofences": "Геозоны",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Перетащите файл сюда или нажмите",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Простой",
"calendarRecurrence": "Повторение",
"calendarOnce": "Однократно",
@@ -179,6 +182,10 @@
"userToken": "Ключ",
"userDeleteAccount": "Удалить аккаунт",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Вход",
"loginLanguage": "Язык",
"loginReset": "Сброс пароля",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Карта",
"mapActive": "Активные карты",
"mapOverlay": "Слой карты",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Средняя скорость",
"reportMaximumSpeed": "Максимальная скорость",
"reportEngineHours": "Моточасы",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Длительность",
"reportStartDate": "Дата начала",
"reportStartTime": "Начальное время",
diff --git a/src/resources/l10n/si.json b/src/resources/l10n/si.json
index 9e8ad6af..c999d439 100644
--- a/src/resources/l10n/si.json
+++ b/src/resources/l10n/si.json
@@ -4,6 +4,7 @@
"sharedSave": "සුරකින්න",
"sharedUpload": "Upload",
"sharedSet": "සකසන්න",
+ "sharedAccept": "Accept",
"sharedCancel": "සිදු කරන්න",
"sharedCopy": "Copy",
"sharedAdd": "එක් කරන්න",
@@ -34,6 +35,7 @@
"sharedName": "නම",
"sharedDescription": "සවිස්තරය",
"sharedSearch": "සොයන්න",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "භූ වැටිය",
"sharedGeofences": "භූ වැටි",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "ටෝකනය",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "ඇතුල් වන්න",
"loginLanguage": "භාෂාව",
"loginReset": "මුරපදය නැවත සකසන්න",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "දක්වා",
"mapActive": "ක්රියාකාරී සිතියම්",
"mapOverlay": "සිතියම උඩ තට්ටුව",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "සාමාන්‍ය වේගය",
"reportMaximumSpeed": "උපරිම වේගය",
"reportEngineHours": "එන්ජින් පැය",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "කාලසීමාව",
"reportStartDate": "ආරම්භක දිනය",
"reportStartTime": "ආරම්භක වේලාව",
diff --git a/src/resources/l10n/sk.json b/src/resources/l10n/sk.json
index e4aebedc..d73e0efb 100644
--- a/src/resources/l10n/sk.json
+++ b/src/resources/l10n/sk.json
@@ -1,19 +1,20 @@
{
- "sharedLoading": "Načítava...",
+ "sharedLoading": "Načítavam...",
"sharedHide": "Schovať",
"sharedSave": "Uložiť",
- "sharedUpload": "Upload",
+ "sharedUpload": "Nahrať",
"sharedSet": "Nastaviť",
+ "sharedAccept": "Súhlasím",
"sharedCancel": "Zrušiť",
- "sharedCopy": "Copy",
+ "sharedCopy": "Kopírovať",
"sharedAdd": "Pridať",
"sharedEdit": "Upraviť",
"sharedRemove": "Odstrániť",
"sharedRemoveConfirm": "Odstrániť položku?",
- "sharedNoData": "No data",
- "sharedSubject": "Subject",
- "sharedYes": "Yes",
- "sharedNo": "No",
+ "sharedNoData": "Žiadne dáta",
+ "sharedSubject": "Predmet",
+ "sharedYes": "Áno",
+ "sharedNo": "Nie",
"sharedKm": "Km",
"sharedMi": "mi",
"sharedNmi": "nmi",
@@ -34,10 +35,11 @@
"sharedName": "Meno",
"sharedDescription": "Popis",
"sharedSearch": "Hľadať",
- "sharedIconScale": "Icon Scale",
- "sharedGeofence": "Geofence",
- "sharedGeofences": "Geofences",
- "sharedCreateGeofence": "Create Geofence",
+ "sharedPriority": "Priority",
+ "sharedIconScale": "Veľkosť ikonky",
+ "sharedGeofence": "Lokalita",
+ "sharedGeofences": "Lokality",
+ "sharedCreateGeofence": "Vytvoriť lokalitu",
"sharedNotifications": "Notifikácie",
"sharedNotification": "Notifikácia",
"sharedAttributes": "Atribúty",
@@ -59,30 +61,30 @@
"sharedUsGallon": "Americký galón",
"sharedLiterPerHourAbbreviation": "l/h",
"sharedGetMapState": "Získať mapu štátu",
- "sharedComputedAttribute": "Computed Attribute",
- "sharedComputedAttributes": "Computed Attributes",
- "sharedCheckComputedAttribute": "Check Computed Attribute",
+ "sharedComputedAttribute": "Vypočítaný atribút",
+ "sharedComputedAttributes": "Vypočítané atribúty",
+ "sharedCheckComputedAttribute": "Skontrolujte vypočítaný atribút",
"sharedExpression": "Výraz",
"sharedDevice": "Zariadenie",
- "sharedTest": "Test",
- "sharedTestNotification": "Pošli skúšobnú notifikáciu",
- "sharedTestNotificators": "Test Channels",
- "sharedTestExpression": "Test Expression",
+ "sharedTest": "Otestovať",
+ "sharedTestNotification": "Odoslať skúšobnú notifikáciu",
+ "sharedTestNotificators": "Testovacie kanály",
+ "sharedTestExpression": "Testovací výraz",
"sharedCalendar": "Kalendár",
"sharedCalendars": "Kalendáre",
"sharedFile": "Súbor",
- "sharedSearchDevices": "Search Devices",
- "sharedSortBy": "Sort By",
- "sharedFilterMap": "Filter on Map",
+ "sharedSearchDevices": "Hľadať zariadenia",
+ "sharedSortBy": "Zoradiť podľa",
+ "sharedFilterMap": "Filtrovať na mape",
"sharedSelectFile": "Vyberte súbor",
"sharedPhone": "Telefón",
"sharedRequired": "Požadované",
"sharedPreferences": "Preferencie",
"sharedPermissions": "Povolenia",
- "sharedConnections": "Connections",
+ "sharedConnections": "Prepojenia",
"sharedExtra": "Extra",
- "sharedPrimary": "Primary",
- "sharedSecondary": "Secondary",
+ "sharedPrimary": "Primárne",
+ "sharedSecondary": "Sekundárne",
"sharedTypeString": "Reťazec",
"sharedTypeNumber": "Číslo",
"sharedTypeBoolean": "Binárna hodnota",
@@ -92,117 +94,122 @@
"sharedSavedCommands": "Uložené príkazy",
"sharedNew": "Nový...",
"sharedShowAddress": "Zobraziť adresu",
- "sharedShowDetails": "More Details",
+ "sharedShowDetails": "Viac detailov",
"sharedDisabled": "Vypnuté",
- "sharedMaintenance": "Maintenance",
- "sharedDeviceAccumulators": "Accumulators",
+ "sharedMaintenance": "Údržba",
+ "sharedDeviceAccumulators": "Akumulátory",
"sharedAlarms": "Upozornenia",
- "sharedLocation": "Location",
- "sharedImport": "Import",
- "sharedColumns": "Columns",
- "sharedDropzoneText": "Drag and drop a file here or click",
- "sharedLogs": "Logs",
- "sharedLink": "Link",
- "calendarSimple": "Simple",
- "calendarRecurrence": "Recurrence",
- "calendarOnce": "Once",
- "calendarDaily": "Daily",
- "calendarWeekly": "Weekly",
- "calendarMonthly": "Monthly",
- "calendarDays": "Days",
- "calendarSunday": "Sunday",
- "calendarMonday": "Monday",
- "calendarTuesday": "Tuesday",
- "calendarWednesday": "Wednesday",
- "calendarThursday": "Thursday",
- "calendarFriday": "Friday",
- "calendarSaturday": "Saturday",
- "attributeShowGeofences": "Show Geofences",
+ "sharedLocation": "Poloha",
+ "sharedImport": "Importovať",
+ "sharedColumns": "Stĺpce",
+ "sharedDropzoneText": "Presuňte sem súbor alebo kliknite",
+ "sharedLogs": "Logy",
+ "sharedLink": "Odkaz",
+ "sharedEmulator": "Emulator",
+ "calendarSimple": "Jednoduché",
+ "calendarRecurrence": "Opakovanie",
+ "calendarOnce": "Raz",
+ "calendarDaily": "Denne",
+ "calendarWeekly": "Týždenne",
+ "calendarMonthly": "Mesačne",
+ "calendarDays": "Dni",
+ "calendarSunday": "Nedeľa",
+ "calendarMonday": "Pondelok",
+ "calendarTuesday": "Utorok",
+ "calendarWednesday": "Streda",
+ "calendarThursday": "Štvrtok",
+ "calendarFriday": "Piatok",
+ "calendarSaturday": "Sobota",
+ "attributeShowGeofences": "Zobraziť lokality",
"attributeSpeedLimit": "Limit rýchlosti",
- "attributeFuelDropThreshold": "Fuel Drop Threshold",
- "attributeFuelIncreaseThreshold": "Fuel Increase Threshold",
- "attributePolylineDistance": "Polyline Distance",
+ "attributeFuelDropThreshold": "Prah poklesu paliva",
+ "attributeFuelIncreaseThreshold": "Prah zvýšenia paliva",
+ "attributePolylineDistance": "Dĺžka čiary",
"attributeReportIgnoreOdometer": "Report: Ignoruj kilometrovník",
"attributeWebReportColor": "Web: Farba reportu",
"attributeDevicePassword": "Heslo zaridenia",
- "attributeDeviceImage": "Device Image",
- "attributeDeviceInactivityStart": "Device Inactivity Start",
- "attributeDeviceInactivityPeriod": "Device Inactivity Period",
- "attributeProcessingCopyAttributes": "Processing: Copy Attributes",
+ "attributeDeviceImage": "Obrázok zariadenia",
+ "attributeDeviceInactivityStart": "Nečinnosť zariadenia Štart",
+ "attributeDeviceInactivityPeriod": "Obdobie nečinnosti zariadenia",
+ "attributeProcessingCopyAttributes": "Spracovanie: Kopírovať atribúty",
"attributeColor": "Farba",
- "attributeWebLiveRouteLength": "Web: Live Route Length",
- "attributeWebSelectZoom": "Web: Zoom On Select",
+ "attributeWebLiveRouteLength": "Web: Dĺžka aktuálnej trasy",
+ "attributeWebSelectZoom": "Web: Priblížiť pri zakliknutí",
"attributeWebMaxZoom": "Web: Maximálne priblíženie",
- "attributeTelegramChatId": "Telegram Chat ID",
- "attributePushoverUserKey": "Pushover User Key",
- "attributePushoverDeviceNames": "Pushover Device Names",
+ "attributeTelegramChatId": "ID Telegram četu",
+ "attributePushoverUserKey": "Pushover API kľúč",
+ "attributePushoverDeviceNames": "Pushover názov zariadenia",
"attributeMailSmtpHost": "E-Mail: SMTP Host",
"attributeMailSmtpPort": "E-Mail: SMTP Port",
"attributeMailSmtpStarttlsEnable": "E-Mail: SMTP STARTTLS Zapnuté",
"attributeMailSmtpStarttlsRequired": "E-Mail: SMTP STARTTLS Povinná",
"attributeMailSmtpSslEnable": "Mail: Povolenie SMTP SSL",
- "attributeMailSmtpSslTrust": "Mail: SMTP SSL Trust",
+ "attributeMailSmtpSslTrust": "Mail: SMTP SSL dôverihodnosť",
"attributeMailSmtpSslProtocols": "Mail: SMTP SSL Protokoly",
"attributeMailSmtpFrom": "Mail: SMTP Od",
- "attributeMailSmtpAuth": "Mail: SMTP Auth Enable",
+ "attributeMailSmtpAuth": "Mail: Povoliť overenie SMTP",
"attributeMailSmtpUsername": "Mail: SMTP Používateľské meno",
"attributeMailSmtpPassword": "Mail: SMTP Heslo",
- "attributeUiDisableSavedCommands": "UI: Disable Saved Commands",
- "attributeUiDisableAttributes": "UI: Disable Attributes",
- "attributeUiDisableGroups": "UI: Disable Groups",
+ "attributeUiDisableSavedCommands": "UI: Zakázať uložené príkazy",
+ "attributeUiDisableAttributes": "UI: Zakázať atribúty",
+ "attributeUiDisableGroups": "UI: Zakázať skupiny",
"attributeUiDisableEvents": "UI: Zakázať udalosti",
- "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features",
+ "attributeUiDisableVehicleFeatures": "UI: Zakázať funkcie vozidla",
"attributeUiDisableDrivers": "UI: Zakázať vodičov",
- "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes",
+ "attributeUiDisableComputedAttributes": "UI: Zakázať vypočítané atribúty",
"attributeUiDisableCalendars": "UI: Zakázať kalendáre",
- "attributeUiDisableMaintenance": "UI: Disable Maintenance",
- "attributeUiHidePositionAttributes": "UI: Hide Position Attributes",
- "attributeUiDisableLoginLanguage": "UI: Disable Login Language",
- "attributeNotificationTokens": "Notification Tokens",
- "attributePopupInfo": "Popup Info",
+ "attributeUiDisableMaintenance": "UI: Zakázať údržbu",
+ "attributeUiHidePositionAttributes": "UI: Skryť atribúty pozície",
+ "attributeUiDisableLoginLanguage": "UI: Zakázať zmenu jazyka",
+ "attributeNotificationTokens": "Tokeny upozornení",
+ "attributePopupInfo": "Vyskakovacie okno",
"errorTitle": "Chyba",
- "errorGeneral": "Invalid parameters or constraints violation",
+ "errorGeneral": "Neplatné parametre alebo porušenie obmedzení",
"errorConnection": "Chyba pripojenia",
"errorSocket": "Chyba pripojenia web konektora",
- "errorZero": "Can't be zero",
+ "errorZero": "Nemôže byť nula",
"userEmail": "E-mail",
"userPassword": "Heslo",
"userAdmin": "Admin",
"userRemember": "Zapamätať",
"userExpirationTime": "Uplynutie platnosti",
- "userDeviceLimit": "Limit zariadenia",
+ "userDeviceLimit": "Limitovať zariadenia",
"userUserLimit": "Obmedzenie používateľov",
"userDeviceReadonly": "Zariadenie len na čítanie",
- "userLimitCommands": "Limit Commands",
- "userDisableReports": "Disable Reports",
- "userFixedEmail": "No Email Change",
+ "userLimitCommands": "Obmedzenie príkazov",
+ "userDisableReports": "Zakázať prehľady",
+ "userFixedEmail": "Žiadna zmena e-mailu",
"userToken": "Token",
- "userDeleteAccount": "Delete Account",
- "userTemporary": "Temporary",
+ "userDeleteAccount": "Zmazať účet",
+ "userTemporary": "Dočasné",
+ "userTerms": "Podmienky služby",
+ "userPrivacy": "Zásady ochrany osobných údajov",
+ "userTermsPrompt": "Kliknutím na tlačidlo \"Súhlasím\" súhlasíte s našimi zmluvnými podmienkami a potvrdzujete, že ste si prečítali naše zásady ochrany osobných údajov.",
+ "userTermsAccepted": "Podmienky prijaté",
"loginTitle": "Prihlásenie",
"loginLanguage": "Jazyk",
- "loginReset": "Reset Password",
+ "loginReset": "Obnoviť heslo",
"loginRegister": "Registrovať",
"loginLogin": "Prihlásenie",
- "loginOpenId": "Login with OpenID",
+ "loginOpenId": "Prihláste sa pomocou OpenID",
"loginFailed": "Nesprávna e-mailová adresa alebo heslo",
"loginCreated": "Nový užívateľ sa zaregistroval",
- "loginResetSuccess": "Check your email",
- "loginUpdateSuccess": "New password is set",
+ "loginResetSuccess": "Skontrolujte E-Mail",
+ "loginUpdateSuccess": "Nové heslo je nastavené",
"loginLogout": "Odhlásiť",
"loginLogo": "Logo",
- "loginTotpCode": "One-time Password Code",
- "loginTotpKey": "One-time Password Key",
+ "loginTotpCode": "Kód dvojfaktorového overovania",
+ "loginTotpKey": "Kľúč dvojfaktorového overovania",
"devicesAndState": "Zariadenia a Status",
- "deviceSelected": "Selected Device",
+ "deviceSelected": "Vybrané zariadenie",
"deviceTitle": "Zariadena",
- "devicePrimaryInfo": "Device Title",
- "deviceSecondaryInfo": "Device Detail",
+ "devicePrimaryInfo": "Názov zariadenia",
+ "deviceSecondaryInfo": "Detaily zariadenia",
"deviceIdentifier": "Identifikátor",
"deviceModel": "Model",
"deviceContact": "Kontakt",
"deviceCategory": "Kategória",
- "deviceLastUpdate": "Posledný update",
+ "deviceLastUpdate": "Posledná aktualizácia",
"deviceCommand": "Príkaz",
"deviceFollow": "Nasleduj",
"deviceTotalDistance": "Celková vzdialenosť",
@@ -210,9 +217,9 @@
"deviceStatusOnline": "Online",
"deviceStatusOffline": "Offline",
"deviceStatusUnknown": "Neznáme",
- "deviceRegisterFirst": "Register your first device",
- "deviceIdentifierHelp": "IMEI, serial number or other id. It has to match the identifier device reports to the server.",
- "deviceShare": "Share Device",
+ "deviceRegisterFirst": "Zaregistrovať prvé zariadenie",
+ "deviceIdentifierHelp": "IMEI, sériové číslo alebo iné ID. Musí sa zhodovať s identifikátormi zariadenia nahlásenými na serveri.",
+ "deviceShare": "Zdieľať zariadenie",
"groupDialog": "Skupina",
"groupParent": "Skupina",
"groupNoGroup": "Žiadna skupina",
@@ -222,34 +229,34 @@
"settingsServer": "Server",
"settingsUsers": "Používatelia",
"settingsDistanceUnit": "Jednotka vzdialenosti",
- "settingsAltitudeUnit": "Altitude Unit",
+ "settingsAltitudeUnit": "Jednotka nadmorskej výšky",
"settingsSpeedUnit": "Jednotka rýchlosti",
"settingsVolumeUnit": "Jednotka objemu",
"settingsTwelveHourFormat": "12-hodinový formát",
"settingsCoordinateFormat": "Formát koordinátov",
- "settingsServerVersion": "Server Version",
- "settingsAppVersion": "App Version",
- "settingsConnection": "Connection",
- "settingsDarkMode": "Dark Mode",
- "settingsTotpEnable": "Enable One-time Password",
- "settingsTotpForce": "Force One-time Password",
- "settingsServiceWorkerUpdateInterval": "ServiceWorker Update Interval",
- "settingsUpdateAvailable": "There is an update available.",
- "settingsSupport": "Support",
+ "settingsServerVersion": "Verzia servera",
+ "settingsAppVersion": "Verzia aplikácie",
+ "settingsConnection": "Pripojenie",
+ "settingsDarkMode": "Tmavý režim",
+ "settingsTotpEnable": "Povoliť dvojfaktorové overovanie",
+ "settingsTotpForce": "Vynútiť dvojfaktorové overovanie",
+ "settingsServiceWorkerUpdateInterval": "Interval aktualizácie ServiceWorker",
+ "settingsUpdateAvailable": "K dispozícii je aktualizácia.",
+ "settingsSupport": "Podpora",
"reportTitle": "Správy",
- "reportScheduled": "Scheduled Reports",
+ "reportScheduled": "Plánované prehľady",
"reportDevice": "Zariadenie",
"reportGroup": "Skupina",
"reportFrom": "Od",
"reportTo": "Do",
"reportShow": "Zobraziť",
"reportClear": "Vyčistiť",
- "linkGoogleMaps": "Google Maps",
- "linkAppleMaps": "Apple Maps",
- "linkStreetView": "Street View",
- "positionFixTime": "Fix Time",
- "positionDeviceTime": "Device Time",
- "positionServerTime": "Server Time",
+ "linkGoogleMaps": "Google Mapy",
+ "linkAppleMaps": "Apple Mapy",
+ "linkStreetView": "Pohľad z ulice",
+ "positionFixTime": "Čas",
+ "positionDeviceTime": "Čas zariadenia",
+ "positionServerTime": "Čas servera",
"positionValid": "Platný",
"positionAccuracy": "Presnosť",
"positionLatitude": "Šírka",
@@ -264,7 +271,7 @@
"positionFuel": "Palivo",
"positionPower": "Napätie",
"positionBattery": "Baterka",
- "positionRaw": "Raw",
+ "positionRaw": "Čisté dáta",
"positionIndex": "Index",
"positionHdop": "HDOP",
"positionVdop": "VDOP",
@@ -278,12 +285,12 @@
"positionAlarm": "Upozornenie",
"positionStatus": "Stav",
"positionOdometer": "Kilometrovník",
- "positionServiceOdometer": "Service Odometer",
- "positionTripOdometer": "Trip Odometer",
+ "positionServiceOdometer": "Servisné počítadlo kilometrov",
+ "positionTripOdometer": "Počítadlo kilometrov",
"positionHours": "Hodiny",
- "positionSteps": "Steps",
+ "positionSteps": "Kroky",
"positionInput": "Vstup",
- "positionHeartRate": "Heart Rate",
+ "positionHeartRate": "Frekvencia",
"positionOutput": "Výstup",
"positionBatteryLevel": "Stav batérie",
"positionFuelConsumption": "Spotreba paliva",
@@ -292,65 +299,66 @@
"positionVersionHw": "Verzia hardvéru",
"positionIgnition": "Zapaľovanie",
"positionFlags": "Značky",
- "positionCharge": "Charge",
+ "positionCharge": "Zmena",
"positionIp": "IP",
"positionArchive": "Archív",
"positionVin": "VIN",
- "positionApproximate": "Approximate",
- "positionThrottle": "Throttle",
+ "positionApproximate": "Približné",
+ "positionThrottle": "Plyn",
"positionMotion": "Pohyb",
- "positionArmed": "Armed",
+ "positionArmed": "Odistené",
"positionAcceleration": "Zrýchlenie",
- "positionTemp": "Temperature",
+ "positionTemp": "Teplota",
"positionDeviceTemp": "Teplota zariadenia",
- "positionCoolantTemp": "Coolant Temperature",
+ "positionCoolantTemp": "Teplota chladiacej kvapaliny",
"positionOperator": "Operátor",
"positionCommand": "Príkaz",
"positionBlocked": "Blokované",
- "positionDtcs": "DTCs",
+ "positionDtcs": "Diagnostické poruchové kódy",
"positionObdSpeed": "OBD rýchlosť",
"positionObdOdometer": "OBD kilometrovník",
- "positionDrivingTime": "Driving Time",
+ "positionDrivingTime": "Čas jazdy",
"positionDriverUniqueId": "Unikátne ID vodiča",
- "positionCard": "Card",
- "positionImage": "Image",
+ "positionCard": "Karta",
+ "positionImage": "Obrázok",
"positionVideo": "Video",
- "positionAudio": "Audio",
+ "positionAudio": "Zvuk",
"serverTitle": "Nastavenie servera",
"serverZoom": "Zoom",
"serverRegistration": "Registrácia",
"serverReadonly": "Iba na čítanie",
"serverForceSettings": "Nastavenie sily",
- "serverAnnouncement": "Announcement",
- "serverName": "Server Name",
- "serverDescription": "Server Description",
- "serverColorPrimary": "Color Primary",
- "serverColorSecondary": "Color Secondary",
- "serverLogo": "Logo Image",
- "serverLogoInverted": "Inverted Logo Image",
- "serverChangeDisable": "Disable Server Change",
- "serverDisableShare": "Disable Device Sharing",
+ "serverAnnouncement": "Oznámenie",
+ "serverName": "Názov serveru",
+ "serverDescription": "Popis serveru",
+ "serverColorPrimary": "Hlavná farba",
+ "serverColorSecondary": "Sekundárna farba",
+ "serverLogo": "Obrázok loga",
+ "serverLogoInverted": "Farebne obrátený obrázok loga",
+ "serverChangeDisable": "Zakázať zmenu servera",
+ "serverDisableShare": "Zakázať zdieľanie zariadení",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
- "mapActive": "Active Maps",
- "mapOverlay": "Map Overlay",
- "mapOverlayCustom": "Custom Overlay",
+ "mapActive": "Aktívne mapy",
+ "mapOverlay": "Prekrytie mapy",
+ "mapOverlayCustom": "Vlastné prekrytie",
"mapOpenSeaMap": "OpenSeaMap",
"mapOpenRailwayMap": "OpenRailwayMap",
"mapOpenWeatherKey": "OpenWeather API Key",
- "mapOpenWeatherClouds": "OpenWeather Clouds",
- "mapOpenWeatherPrecipitation": "OpenWeather Precipitation",
- "mapOpenWeatherPressure": "OpenWeather Pressure",
- "mapOpenWeatherWind": "OpenWeather Wind",
- "mapOpenWeatherTemperature": "OpenWeather Temperature",
+ "mapOpenWeatherClouds": "OpenWeather Oblačnosť",
+ "mapOpenWeatherPrecipitation": "OpenWeather Zrážky",
+ "mapOpenWeatherPressure": "OpenWeather Tlak",
+ "mapOpenWeatherWind": "OpenWeather Vietor",
+ "mapOpenWeatherTemperature": "OpenWeather Teplota",
"mapLayer": "Mapové vrstvy",
- "mapCustom": "Custom (XYZ)",
- "mapCustomArcgis": "Custom (ArcGIS)",
- "mapCustomLabel": "Custom map",
+ "mapCustom": "Vlastné (XYZ)",
+ "mapCustomArcgis": "Vlastné (ArcGIS)",
+ "mapCustomLabel": "Vlastná mapa",
"mapCarto": "Carto Basemaps",
"mapOsm": "OpenStreetMap",
"mapGoogleRoad": "Google Road",
- "mapGoogleHybrid": "Google Hybrid",
- "mapGoogleSatellite": "Google Satellite",
+ "mapGoogleHybrid": "Google Hybridná mapa",
+ "mapGoogleSatellite": "Google Satelitné snímky",
"mapOpenTopoMap": "OpenTopoMap",
"mapBingKey": "Klúč Bing Maps",
"mapBingRoad": "Bing Maps Road",
@@ -363,42 +371,42 @@
"mapWikimedia": "Wikimedia",
"mapOrdnanceSurvey": "Ordnance Survey",
"mapMapboxStreets": "Mapbox Streets",
- "mapMapboxStreetsDark": "Mapbox Streets Dark",
+ "mapMapboxStreetsDark": "Mapbox Streets Tmavé",
"mapMapboxOutdoors": "Mapbox Outdoors",
- "mapMapboxSatellite": "Mapbox Satellite",
- "mapMapboxKey": "Mapbox Access Token",
+ "mapMapboxSatellite": "Mapbox Satelitné snímky",
+ "mapMapboxKey": "Mapbox API kľuč",
"mapMapTilerBasic": "MapTiler Basic",
"mapMapTilerHybrid": "MapTiler Hybrid",
- "mapMapTilerKey": "MapTiler API Key",
+ "mapMapTilerKey": "MapTiler API kľuč",
"mapLocationIqStreets": "LocationIQ Streets",
- "mapLocationIqDark": "LocationIQ Dark",
- "mapLocationIqKey": "LocationIQ Access Token",
+ "mapLocationIqDark": "LocationIQ Tmavé",
+ "mapLocationIqKey": "LocationIQ API kľúč",
"mapTomTomBasic": "TomTom Basic",
- "mapTomTomFlow": "TomTom Traffic Flow",
- "mapTomTomIncidents": "TomTom Traffic Incidents",
- "mapTomTomKey": "TomTom API Key",
+ "mapTomTomFlow": "TomTom Dopravné zápchy",
+ "mapTomTomIncidents": "TomTom Dopravné nehody",
+ "mapTomTomKey": "TomTom API kľúč",
"mapHereBasic": "Here Basic",
"mapHereHybrid": "Here Hybrid",
- "mapHereSatellite": "Here Satellite",
- "mapHereFlow": "Here Traffic Flow",
- "mapHereKey": "Here API Key",
+ "mapHereSatellite": "Here Satelitné snímky",
+ "mapHereFlow": "Here Dopravné zápchy",
+ "mapHereKey": "Here API kľúč",
"mapShapePolygon": "Polygón",
"mapShapeCircle": "Kruh",
"mapShapePolyline": "Lomená čiara",
- "mapLiveRoutes": "Live Routes",
- "mapDirection": "Show Direction",
- "mapCurrentLocation": "Current Location",
- "mapPoiLayer": "POI Layer",
- "mapClustering": "Markers Clustering",
- "mapOnSelect": "Show Map on Selection",
- "mapDefault": "Default Map",
+ "mapLiveRoutes": "Živá trasa",
+ "mapDirection": "Zobraziť smer",
+ "mapCurrentLocation": "Súčasná poloha",
+ "mapPoiLayer": "POI vrstva",
+ "mapClustering": "Zjednocovanie zariadení",
+ "mapOnSelect": "Zobraziť mapu pri výbere",
+ "mapDefault": "Predvolená mapa",
"stateTitle": "Parametre",
"stateName": "Parameter",
"stateValue": "Hodnota",
"commandTitle": "Príkaz",
"commandSend": "Odoslať",
"commandSent": "Príkaz odoslaný",
- "commandQueued": "Command queued",
+ "commandQueued": "Príkaz vo fronte",
"commandUnit": "Jednotka",
"commandCustom": "Vlastný príkaz",
"commandDeviceIdentification": "Identifikácia zariadenia",
@@ -409,12 +417,12 @@
"commandEngineResume": "Spustenie motora",
"commandAlarmArm": "Nastaviť upozornenie",
"commandAlarmDisarm": "Zrušiť upozornenie",
- "commandAlarmDismiss": "Dismiss Alarm",
+ "commandAlarmDismiss": "Zrušiť alarm",
"commandSetTimezone": "Nastaviť časovú zónu",
"commandRequestPhoto": "Poslať fotku",
- "commandPowerOff": "Power Off Device",
+ "commandPowerOff": "Vypnutie zariadenia",
"commandRebootDevice": "Rebootovať zariadenie",
- "commandFactoryReset": "Factory Reset",
+ "commandFactoryReset": "Obnovenie továrenských nastavení",
"commandSendSms": "Postať SMS",
"commandSendUssd": "Postať USSD",
"commandSosNumber": "Nastaviť čislo SOS",
@@ -422,7 +430,7 @@
"commandSetPhonebook": "Nastav telefónny zoznam",
"commandVoiceMessage": "Hlasové správy",
"commandOutputControl": "Výstupná kontrola",
- "commandVoiceMonitoring": "Voice Monitoring",
+ "commandVoiceMonitoring": "Hlasové monitorovanie",
"commandSetAgps": "Nastaviť AGPS",
"commandSetIndicator": "Nastavte ukazovateľ",
"commandConfiguration": "Konfigurácia",
@@ -432,17 +440,17 @@
"commandSetOdometer": "Nastaviť kilometrovník",
"commandGetModemStatus": "Získať stav modemu",
"commandGetDeviceStatus": "Získať stav zariadenia",
- "commandSetSpeedLimit": "Set Speed Limit",
- "commandModePowerSaving": "Power Saving Mode",
- "commandModeDeepSleep": "Deep Sleep Mode",
- "commandAlarmGeofence": "Set Geofence Alarm",
- "commandAlarmBattery": "Set Battery Alarm",
- "commandAlarmSos": "Set SOS Alarm",
- "commandAlarmRemove": "Set Remove Alarm",
- "commandAlarmClock": "Set Clock Alarm",
- "commandAlarmSpeed": "Set Speed Alarm",
- "commandAlarmFall": "Set Fall Alarm",
- "commandAlarmVibration": "Set Vibration Alarm",
+ "commandSetSpeedLimit": "Nastavte rýchlostný limit",
+ "commandModePowerSaving": "Režim šetrenia elektrickej energie",
+ "commandModeDeepSleep": "Režim hlbokého spánku",
+ "commandAlarmGeofence": "Nastaviť upozornenie lokalít",
+ "commandAlarmBattery": "Nastaviť upozornenie batérie",
+ "commandAlarmSos": "Nastaviť upozornenie SOS",
+ "commandAlarmRemove": "Nastaviť odstránenie upozornenia",
+ "commandAlarmClock": "Nastaviť upozornenie času",
+ "commandAlarmSpeed": "Nastaviť upozornenie rýchlosti",
+ "commandAlarmFall": "Nastaviť upozornenie pádu",
+ "commandAlarmVibration": "Nastaviť upozornenie vibrácii ",
"commandFrequency": "Frekvencia",
"commandTimezone": "Časová zóna Offset",
"commandMessage": "Správa",
@@ -455,70 +463,70 @@
"commandPort": "Port",
"eventAll": "Všetky akcie",
"eventDeviceOnline": "Stav online",
- "eventDeviceUnknown": "Status unknown",
+ "eventDeviceUnknown": "Stav neznámy",
"eventDeviceOffline": "Stav offline",
- "eventDeviceInactive": "Device inactive",
- "eventQueuedCommandSent": "Queued command sent",
+ "eventDeviceInactive": "Neaktívne zariadenie",
+ "eventQueuedCommandSent": "Odoslaný príkaz vo fronte",
"eventDeviceMoving": "Zariadenie sa hýbe",
"eventDeviceStopped": "Zariadenie zastavilo",
- "eventDeviceOverspeed": "Speed limit exceeded",
- "eventDeviceFuelDrop": "Fuel drop",
- "eventDeviceFuelIncrease": "Fuel increase",
+ "eventDeviceOverspeed": "Prekročená rýchlosť",
+ "eventDeviceFuelDrop": "Zníženie paliva",
+ "eventDeviceFuelIncrease": "Zvýšenie paliva",
"eventCommandResult": "Výsledok príkazu",
- "eventGeofenceEnter": "Geofence entered",
- "eventGeofenceExit": "Geofence exited",
+ "eventGeofenceEnter": "Vstup do lokality",
+ "eventGeofenceExit": "Odchod z lokality",
"eventAlarm": "Upozornenie",
- "eventIgnitionOn": "Ignition on",
- "eventIgnitionOff": "Ignition off",
+ "eventIgnitionOn": "Zapaľovanie zapnuté",
+ "eventIgnitionOff": "Zapaľovanie vypnuté",
"eventMaintenance": "Vyžaduje sa údržba",
"eventTextMessage": "Prijatá textová správa",
"eventDriverChanged": "Zmena vodiča",
- "eventMedia": "Media",
- "eventsScrollToLast": "Scroll To Last",
- "eventsSoundEvents": "Sound Events",
- "eventsSoundAlarms": "Sound Alarms",
+ "eventMedia": "Média",
+ "eventsScrollToLast": "Prejdite na posledný",
+ "eventsSoundEvents": "Zvukové udalosti",
+ "eventsSoundAlarms": "Zvukové alarmy",
"alarmGeneral": "Všeobecné",
"alarmSos": "SOS",
"alarmVibration": "Vibrácia",
"alarmMovement": "Pobyb",
- "alarmLowspeed": "Low Speed",
+ "alarmLowspeed": "Malá rýchlosť",
"alarmOverspeed": "Prekročenie rýchlosti",
- "alarmFallDown": "Fall Down",
+ "alarmFallDown": "Pád",
"alarmLowPower": "Slabý prúd",
"alarmLowBattery": "Slabá batéria",
"alarmFault": "Chyba",
- "alarmPowerOff": "Power Off",
- "alarmPowerOn": "Power On",
- "alarmDoor": "Door",
+ "alarmPowerOff": "Vypnúť",
+ "alarmPowerOn": "Zapnúť",
+ "alarmDoor": "Dvere",
"alarmLock": "Zamknúť",
"alarmUnlock": "Odomknúť",
- "alarmGeofence": "Geofence",
- "alarmGeofenceEnter": "Geofence Enter",
- "alarmGeofenceExit": "Geofence Exit",
- "alarmGpsAntennaCut": "GPS Antenna Cut",
- "alarmAccident": "Accident",
- "alarmTow": "Tow",
- "alarmIdle": "Idle",
- "alarmHighRpm": "High RPM",
- "alarmHardAcceleration": "Hard Acceleration",
- "alarmHardBraking": "Hard Braking",
- "alarmHardCornering": "Hard Cornering",
- "alarmLaneChange": "Lane Change",
- "alarmFatigueDriving": "Fatigue Driving",
- "alarmPowerCut": "Power Cut",
+ "alarmGeofence": "Lokalita",
+ "alarmGeofenceEnter": "Vstup do lokality",
+ "alarmGeofenceExit": "Odchod z lokality",
+ "alarmGpsAntennaCut": "Prerušenie GPS",
+ "alarmAccident": "Nehoda",
+ "alarmTow": "Ťahanie",
+ "alarmIdle": "Nečinný",
+ "alarmHighRpm": "Vysoké otáčky",
+ "alarmHardAcceleration": "Prudká akcelerácia",
+ "alarmHardBraking": "Prudké brzdenie",
+ "alarmHardCornering": "Prudké zatáčanie",
+ "alarmLaneChange": "Zmena jazdného pruhu",
+ "alarmFatigueDriving": "Únavová jazda",
+ "alarmPowerCut": "Odpojenie napájania",
"alarmPowerRestored": "Napájanie obnovené",
- "alarmJamming": "Jamming",
+ "alarmJamming": "Kradnutie",
"alarmTemperature": "Teplota",
"alarmParking": "Parkovanie",
- "alarmBonnet": "Bonnet",
- "alarmFootBrake": "Foot Brake",
- "alarmFuelLeak": "Fuel Leak",
- "alarmTampering": "Tampering",
- "alarmRemoving": "Removing",
+ "alarmBonnet": "Kapota",
+ "alarmFootBrake": "Ručná brzda",
+ "alarmFuelLeak": "Únik paliva",
+ "alarmTampering": "Manipulácia",
+ "alarmRemoving": "Odstránenie",
"notificationType": "Typ notifikácie",
"notificationAlways": "Všetky zariadenia",
- "notificationNotificators": "Channels",
- "notificatorCommand": "Command",
+ "notificationNotificators": "Kanály",
+ "notificatorCommand": "Príkaz",
"notificatorWeb": "Web",
"notificatorMail": "Mail",
"notificatorSms": "SMS",
@@ -526,23 +534,23 @@
"notificatorTraccar": "Traccar",
"notificatorTelegram": "Telegram",
"notificatorPushover": "Pushover",
- "reportReplay": "Replay",
- "reportCombined": "Combined",
+ "reportReplay": "Prehrať",
+ "reportCombined": "Kombinované",
"reportRoute": "Cesta",
"reportEvents": "Udalosti",
"reportTrips": "Cesty",
"reportStops": "Zastávky",
"reportSummary": "Zhrnutie",
- "reportDaily": "Daily Summary",
+ "reportDaily": "Denný súhrn",
"reportChart": "Graf",
"reportConfigure": "Konfigurácia",
"reportEventTypes": "Typy udalstí",
"reportChartType": "Typ grafu",
"reportShowMarkers": "Zobraziť značky",
- "reportExport": "Export",
- "reportEmail": "Email Report",
- "reportSchedule": "Schedule",
- "reportPeriod": "Period",
+ "reportExport": "Exportovať",
+ "reportEmail": "E-mailová správa",
+ "reportSchedule": "Rozvrh",
+ "reportPeriod": "Obdobie",
"reportCustom": "Vlastné",
"reportToday": "Dnes",
"reportYesterday": "Včera",
@@ -554,15 +562,17 @@
"reportAverageSpeed": "Priemerná rýchlosť",
"reportMaximumSpeed": "Maximálna rýchlosť",
"reportEngineHours": "Prevádzkové hodiny motora",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Trvanie",
- "reportStartDate": "Start Date",
+ "reportStartDate": "Dátum začiatku",
"reportStartTime": "Čas spustenia",
"reportStartAddress": "Počiatočná adresa",
"reportEndTime": "Čas ukončenia",
"reportEndAddress": "Koncová adresa",
"reportSpentFuel": "Spotrebované palivo",
- "reportStartOdometer": "Odometer Start",
- "reportEndOdometer": "Odometer End",
+ "reportStartOdometer": "Štart počítadla kilometrov",
+ "reportEndOdometer": "Koniec počítadla kilometrov",
"statisticsTitle": "Štatistika",
"statisticsCaptureTime": "Zachyť čas",
"statisticsActiveUsers": "Aktívny používatelia",
@@ -570,8 +580,8 @@
"statisticsRequests": "Požiadavka",
"statisticsMessagesReceived": "Správa doručená",
"statisticsMessagesStored": "Správa uložená",
- "statisticsGeocoder": "Geocoder Requests",
- "statisticsGeolocation": "Geolocation Requests",
+ "statisticsGeocoder": "Požiadavky geokódera",
+ "statisticsGeolocation": "Požiadavky na geolokáciu",
"categoryArrow": "Šípka",
"categoryDefault": "Základné",
"categoryAnimal": "Zviera",
@@ -579,7 +589,7 @@
"categoryBoat": "Loď",
"categoryBus": "Autobus",
"categoryCar": "Auto",
- "categoryCamper": "Camper",
+ "categoryCamper": "Karavan",
"categoryCrane": "Žeriav",
"categoryHelicopter": "Helikoptéra",
"categoryMotorcycle": "Motocykel",
@@ -589,12 +599,12 @@
"categoryPlane": "Lietadlo",
"categoryShip": "Loď",
"categoryTractor": "Traktor",
- "categoryTrain": "Train",
- "categoryTram": "Tram",
+ "categoryTrain": "Vlak",
+ "categoryTram": "Električka",
"categoryTrolleybus": "Trolleybus",
"categoryTruck": "Nákladné auto",
"categoryVan": "Dodávka",
- "categoryScooter": "Scooter",
- "maintenanceStart": "Start",
- "maintenancePeriod": "Period"
+ "categoryScooter": "Skúter",
+ "maintenanceStart": "Štart",
+ "maintenancePeriod": "Obdobie"
} \ No newline at end of file
diff --git a/src/resources/l10n/sl.json b/src/resources/l10n/sl.json
index 3c55e91b..cd6be412 100644
--- a/src/resources/l10n/sl.json
+++ b/src/resources/l10n/sl.json
@@ -4,6 +4,7 @@
"sharedSave": "Shrani",
"sharedUpload": "Naloži",
"sharedSet": "Nastavi",
+ "sharedAccept": "Accept",
"sharedCancel": "Prekini",
"sharedCopy": "Copy",
"sharedAdd": "Dodaj",
@@ -34,6 +35,7 @@
"sharedName": "Ime",
"sharedDescription": "Opis",
"sharedSearch": "Išči",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Omejeno območje",
"sharedGeofences": "Omejena območja",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Povlecite in spustite datoteko sem ali kliknite",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Preprost",
"calendarRecurrence": "Ponovitev",
"calendarOnce": "Enkrat",
@@ -179,6 +182,10 @@
"userToken": "Žeton",
"userDeleteAccount": "Izbriši račun",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Prijava",
"loginLanguage": "Jezik",
"loginReset": "Ponastavi geslo",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Zemljevid",
"mapActive": "Aktivni zemljevidi",
"mapOverlay": "Podatkovna plast",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Povprečna hitrost",
"reportMaximumSpeed": "Najvišja hitrost",
"reportEngineHours": "Motorinh ur",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Trajanje",
"reportStartDate": "Datum začetka",
"reportStartTime": "Začetni čas",
diff --git a/src/resources/l10n/sq.json b/src/resources/l10n/sq.json
index 8b77004a..72566a94 100644
--- a/src/resources/l10n/sq.json
+++ b/src/resources/l10n/sq.json
@@ -4,6 +4,7 @@
"sharedSave": "Ruaj",
"sharedUpload": "Upload",
"sharedSet": "Set",
+ "sharedAccept": "Accept",
"sharedCancel": "Anullim",
"sharedCopy": "Copy",
"sharedAdd": "Shto",
@@ -34,6 +35,7 @@
"sharedName": "Emri",
"sharedDescription": "Description",
"sharedSearch": "Kërkim",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Geofence",
"sharedGeofences": "Geofences",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Hyrje",
"loginLanguage": "Gjuha",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Harta",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Average Speed",
"reportMaximumSpeed": "Maximum Speed",
"reportEngineHours": "Engine Hours",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Duration",
"reportStartDate": "Start Date",
"reportStartTime": "Start Time",
diff --git a/src/resources/l10n/sr.json b/src/resources/l10n/sr.json
index a23fc3ee..f2b9d955 100644
--- a/src/resources/l10n/sr.json
+++ b/src/resources/l10n/sr.json
@@ -4,6 +4,7 @@
"sharedSave": "Sačuvaj",
"sharedUpload": "Učitaj",
"sharedSet": "Podesi",
+ "sharedAccept": "Prihvati",
"sharedCancel": "Odustani",
"sharedCopy": "Kopiraj",
"sharedAdd": "Dodaj",
@@ -34,6 +35,7 @@
"sharedName": "Ime",
"sharedDescription": "Opis",
"sharedSearch": "Traži",
+ "sharedPriority": "Prioritet",
"sharedIconScale": "Razmera Ikonice",
"sharedGeofence": "Geoograda",
"sharedGeofences": "Geoograde",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Prevuci file i pusti ili klikni",
"sharedLogs": "Dnevnici",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Jednostavno",
"calendarRecurrence": "Ponavljanje",
"calendarOnce": "Jednom",
@@ -179,6 +182,10 @@
"userToken": "Znak",
"userDeleteAccount": "Izbriši nalog",
"userTemporary": "Privremeno",
+ "userTerms": "Uslovi korišćenja",
+ "userPrivacy": "Politika privatnosti",
+ "userTermsPrompt": "Klikom na Prihvati, prihvatate naše Uslove korišćenja usluge i potvrđujete da ste pročitali našu Politiku privatnosti.",
+ "userTermsAccepted": "Uslovi su prihvaćeni",
"loginTitle": "Prijava",
"loginLanguage": "Jezik",
"loginReset": "Resetuj Lozinku",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Obrnuta logo slika",
"serverChangeDisable": "Onemogući Server promene",
"serverDisableShare": "Onemogući deljenje vozila",
+ "serverReboot": "Reboot",
"mapTitle": "Mapa",
"mapActive": "Aktivne mape",
"mapOverlay": "Preklapanje mape",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Prosečna brzina",
"reportMaximumSpeed": "Maksimalna brzina",
"reportEngineHours": "Radni sati",
+ "reportStartEngineHours": "Početak radnih sati motora",
+ "reportEndEngineHours": "Završetak radnih sati motora",
"reportDuration": "Trajanje",
"reportStartDate": "Početni datum",
"reportStartTime": "Startno vreme",
diff --git a/src/resources/l10n/sv.json b/src/resources/l10n/sv.json
index e6ee943b..06191f31 100644
--- a/src/resources/l10n/sv.json
+++ b/src/resources/l10n/sv.json
@@ -4,6 +4,7 @@
"sharedSave": "Spara",
"sharedUpload": "Upload",
"sharedSet": "Set",
+ "sharedAccept": "Accept",
"sharedCancel": "Avbryt",
"sharedCopy": "Copy",
"sharedAdd": "Lägg till",
@@ -34,6 +35,7 @@
"sharedName": "Namn",
"sharedDescription": "Beskrivning",
"sharedSearch": "Sök",
+ "sharedPriority": "Priority",
"sharedIconScale": "Ikonskala",
"sharedGeofence": "Geofence",
"sharedGeofences": "Geofences",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Dra och släpp en fil här eller klicka",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Enkel",
"calendarRecurrence": "Upprepning",
"calendarOnce": "En gång",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Ta bor Konto",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Logga in",
"loginLanguage": "Språk",
"loginReset": "Återställ Lösenord",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Karta",
"mapActive": "Aktiva Kartor",
"mapOverlay": "Kartöverlägg",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Genomsnittshastighet",
"reportMaximumSpeed": "Maxhastighet",
"reportEngineHours": "Motortimmar",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Varaktighet",
"reportStartDate": "Startdatum",
"reportStartTime": "Starttid",
diff --git a/src/resources/l10n/ta.json b/src/resources/l10n/ta.json
index 8cdbdc62..3182f00b 100644
--- a/src/resources/l10n/ta.json
+++ b/src/resources/l10n/ta.json
@@ -4,6 +4,7 @@
"sharedSave": "சேமி",
"sharedUpload": "Upload",
"sharedSet": "அமை",
+ "sharedAccept": "Accept",
"sharedCancel": "ரத்து செய்",
"sharedCopy": "Copy",
"sharedAdd": "சேர்க்க",
@@ -34,6 +35,7 @@
"sharedName": "பெயர்",
"sharedDescription": "விளக்கம்",
"sharedSearch": "தேடுக",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "பூகோள வேலி",
"sharedGeofences": "பூகோள வேலிகள்",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "டோக்கன் ",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "உள் நுழை",
"loginLanguage": "மொழி",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "வரைபடம்",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "சராசரி வேகம்",
"reportMaximumSpeed": "அதிகபட்ச வேகம்",
"reportEngineHours": "இயந்திர மணி",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "கால அளவு ",
"reportStartDate": "Start Date",
"reportStartTime": "துவக்க நேரம் ",
diff --git a/src/resources/l10n/th.json b/src/resources/l10n/th.json
index 95f783c4..a95f9e0c 100644
--- a/src/resources/l10n/th.json
+++ b/src/resources/l10n/th.json
@@ -4,6 +4,7 @@
"sharedSave": "จัดเก็บแฟ้มข้อมูล",
"sharedUpload": "อัพโหลด",
"sharedSet": "ตั้งค่า",
+ "sharedAccept": "ยอมรับ",
"sharedCancel": "ยกเลิก",
"sharedCopy": "คัดลอก",
"sharedAdd": "เพิ่ม",
@@ -34,6 +35,7 @@
"sharedName": "ชื่อ",
"sharedDescription": "คำอธิบาย",
"sharedSearch": "ค้นหา",
+ "sharedPriority": "ลำดับความสำคัญ",
"sharedIconScale": "ขนาดไอคอน",
"sharedGeofence": "เขตพื้นที่",
"sharedGeofences": "เขตพื้นที่",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "ลากและวางไฟล์ที่นี่หรือคลิก",
"sharedLogs": "Logs",
"sharedLink": "ลิงก์",
+ "sharedEmulator": "อีมูเลเตอร์",
"calendarSimple": "เรียบง่าย",
"calendarRecurrence": "การเกิดซ้ำ",
"calendarOnce": "ครั้งเดียว",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "ลบบัญชี",
"userTemporary": "ชั่วคราว",
+ "userTerms": "เงื่อนไขการให้บริการ",
+ "userPrivacy": "นโยบายความเป็นส่วนตัว",
+ "userTermsPrompt": "เมื่อคลิกยอมรับ แสดงว่าคุณยอมรับข้อกำหนดในการให้บริการของเรา และยืนยันว่าคุณได้อ่านนโยบายความเป็นส่วนตัวของเราแล้ว",
+ "userTermsAccepted": "ยอมรับข้อกำหนดแล้ว",
"loginTitle": "เข้าสู่ระบบ",
"loginLanguage": "ภาษา",
"loginReset": "รีเซ็ตรหัสผ่าน",
@@ -330,6 +337,7 @@
"serverLogoInverted": "กลับด้านภาพโลโก้แล้ว",
"serverChangeDisable": "ปิดใช้งานการเปลี่ยนแปลงเซิร์ฟเวอร์",
"serverDisableShare": "ปิดใช้งานการแชร์อุปกรณ์",
+ "serverReboot": "Reboot",
"mapTitle": "แผนที่",
"mapActive": "แผนที่ที่ใช้งานอยู่",
"mapOverlay": "การวางซ้อนแผนที่",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "ความเร็วเฉลี่ย",
"reportMaximumSpeed": "ความเร็วสูงสุด",
"reportEngineHours": "เวลาการทำงานเครื่องยนต์",
+ "reportStartEngineHours": "จำนวนชั่วโมงเครื่องยนต์ทำงาน",
+ "reportEndEngineHours": "จำนวนชั่วโมงเครื่องยนต์หยุดทำงาน",
"reportDuration": "ช่วงเวลา",
"reportStartDate": "วันที่เริ่ม",
"reportStartTime": "เวลาเริ่มต้น",
diff --git a/src/resources/l10n/tr.json b/src/resources/l10n/tr.json
index ff534af7..252e9919 100644
--- a/src/resources/l10n/tr.json
+++ b/src/resources/l10n/tr.json
@@ -4,6 +4,7 @@
"sharedSave": "Kaydet",
"sharedUpload": "Upload",
"sharedSet": "Belirle",
+ "sharedAccept": "Accept",
"sharedCancel": "İptal",
"sharedCopy": "Copy",
"sharedAdd": "Ekle",
@@ -34,6 +35,7 @@
"sharedName": "İsim",
"sharedDescription": "Açıklama",
"sharedSearch": "Arama",
+ "sharedPriority": "Priority",
"sharedIconScale": "Simge Ölçeği",
"sharedGeofence": "Güvenli Bölge",
"sharedGeofences": "Güvenli Bölgeler",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Bir dosyayı buraya sürükleyip bırakın veya tıklayın",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Basit",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Bir kere",
@@ -179,6 +182,10 @@
"userToken": "Kullanıcı Anahtarı",
"userDeleteAccount": "Hesabı sil",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Oturum aç",
"loginLanguage": "Lisan",
"loginReset": "Şifreyi yenile",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Harita",
"mapActive": "Aktif Haritalar",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Ortalama Hız",
"reportMaximumSpeed": "En Fazla Hız",
"reportEngineHours": "Motor Saatleri",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Süre",
"reportStartDate": "Başlangıç ​​Tarihi",
"reportStartTime": "Başlama Zamanı",
diff --git a/src/resources/l10n/uk.json b/src/resources/l10n/uk.json
index 5e013dc6..9e7a11c2 100644
--- a/src/resources/l10n/uk.json
+++ b/src/resources/l10n/uk.json
@@ -4,6 +4,7 @@
"sharedSave": "Зберегти",
"sharedUpload": "Upload",
"sharedSet": "Встановити",
+ "sharedAccept": "Accept",
"sharedCancel": "Відміна",
"sharedCopy": "Copy",
"sharedAdd": "Додати",
@@ -34,6 +35,7 @@
"sharedName": "Назва пристрою",
"sharedDescription": "Опис",
"sharedSearch": "Пошук",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Геозон",
"sharedGeofences": "Геозони",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Ключ",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Логiн",
"loginLanguage": "Мова",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Карта",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Середня швидкість",
"reportMaximumSpeed": "Максимальна швидкість",
"reportEngineHours": "Мотогодинник",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Тривалість",
"reportStartDate": "Start Date",
"reportStartTime": "Початковий час",
diff --git a/src/resources/l10n/uz.json b/src/resources/l10n/uz.json
index 51b9364d..8f9c28e2 100644
--- a/src/resources/l10n/uz.json
+++ b/src/resources/l10n/uz.json
@@ -4,6 +4,7 @@
"sharedSave": "Сақлаш",
"sharedUpload": "Upload",
"sharedSet": "Ўрнатиш",
+ "sharedAccept": "Accept",
"sharedCancel": "Бекор қилиш",
"sharedCopy": "Copy",
"sharedAdd": "Қўшиш",
@@ -34,6 +35,7 @@
"sharedName": "Исм",
"sharedDescription": "Тавсиф",
"sharedSearch": "Қидирув",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Геозона",
"sharedGeofences": "Геозоналар",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Калит",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Кириш",
"loginLanguage": "Тил",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Харита",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Ўртача тезлик",
"reportMaximumSpeed": "Максимал тезлик",
"reportEngineHours": "Мотосоат",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Узунлиги",
"reportStartDate": "Start Date",
"reportStartTime": "Бошланиш вақти",
diff --git a/src/resources/l10n/vi.json b/src/resources/l10n/vi.json
index 87f0e236..e4cc407b 100644
--- a/src/resources/l10n/vi.json
+++ b/src/resources/l10n/vi.json
@@ -4,6 +4,7 @@
"sharedSave": "Lưu",
"sharedUpload": "Upload",
"sharedSet": "Thiết lập",
+ "sharedAccept": "Accept",
"sharedCancel": "Hủy",
"sharedCopy": "Copy",
"sharedAdd": "Thêm mới",
@@ -34,6 +35,7 @@
"sharedName": "Tên",
"sharedDescription": "Mô tả",
"sharedSearch": "Tìm kiếm",
+ "sharedPriority": "Priority",
"sharedIconScale": "Icon Scale",
"sharedGeofence": "Giới hạn địa lý",
"sharedGeofences": "Giới hạn địa lý",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "Drag and drop a file here or click",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "Simple",
"calendarRecurrence": "Recurrence",
"calendarOnce": "Once",
@@ -179,6 +182,10 @@
"userToken": "Token",
"userDeleteAccount": "Delete Account",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "Đăng nhập",
"loginLanguage": "Ngôn ngữ",
"loginReset": "Reset Password",
@@ -330,6 +337,7 @@
"serverLogoInverted": "Inverted Logo Image",
"serverChangeDisable": "Disable Server Change",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "Bản đồ",
"mapActive": "Active Maps",
"mapOverlay": "Map Overlay",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "Tốc độ trung bình",
"reportMaximumSpeed": "Tốc độ cao nhất",
"reportEngineHours": "Thời gian nổ máy",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "Khoảng thời gian",
"reportStartDate": "Start Date",
"reportStartTime": "Thời gian bắt đầu",
diff --git a/src/resources/l10n/zh.json b/src/resources/l10n/zh.json
index 65d9e723..df05c0e0 100644
--- a/src/resources/l10n/zh.json
+++ b/src/resources/l10n/zh.json
@@ -4,6 +4,7 @@
"sharedSave": "保存",
"sharedUpload": "上传",
"sharedSet": "设置",
+ "sharedAccept": "接受",
"sharedCancel": "取消",
"sharedCopy": "复制",
"sharedAdd": "添加",
@@ -34,6 +35,7 @@
"sharedName": "名称",
"sharedDescription": "描述",
"sharedSearch": "搜索",
+ "sharedPriority": "Priority",
"sharedIconScale": "图标比例",
"sharedGeofence": "围栏",
"sharedGeofences": "围栏",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "将文件拖放到此处或者单击",
"sharedLogs": "日志",
"sharedLink": "关联",
+ "sharedEmulator": "Emulator",
"calendarSimple": "简单",
"calendarRecurrence": "复现",
"calendarOnce": "单次",
@@ -179,6 +182,10 @@
"userToken": "令牌",
"userDeleteAccount": "删除账户",
"userTemporary": "暂时",
+ "userTerms": "服务条款",
+ "userPrivacy": "隐私政策",
+ "userTermsPrompt": "点击“接受”,表示您同意我们的服务条款,并确认您已阅读我们的隐私政策。",
+ "userTermsAccepted": "接受条款",
"loginTitle": "登录",
"loginLanguage": "语言",
"loginReset": "密码重设",
@@ -330,6 +337,7 @@
"serverLogoInverted": "倒置标识图片",
"serverChangeDisable": "禁用服务器更改",
"serverDisableShare": "禁用设备共享",
+ "serverReboot": "Reboot",
"mapTitle": "地图",
"mapActive": "已选地图",
"mapOverlay": "地图叠层",
@@ -448,7 +456,7 @@
"commandMessage": "消息",
"commandRadius": "半径",
"commandEnable": "开启",
- "commandData": "日期",
+ "commandData": "数据",
"commandIndex": "索引",
"commandPhone": "电话号码",
"commandServer": "服务器",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "平均速度",
"reportMaximumSpeed": "最大速度",
"reportEngineHours": "发动机使用时间",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "持续时间",
"reportStartDate": "开始日期",
"reportStartTime": "开始时间",
diff --git a/src/resources/l10n/zh_TW.json b/src/resources/l10n/zh_TW.json
index 10cb88a8..eca52c09 100644
--- a/src/resources/l10n/zh_TW.json
+++ b/src/resources/l10n/zh_TW.json
@@ -4,6 +4,7 @@
"sharedSave": "存檔",
"sharedUpload": "上傳",
"sharedSet": "設定",
+ "sharedAccept": "Accept",
"sharedCancel": "取消",
"sharedCopy": "Copy",
"sharedAdd": "新增",
@@ -34,6 +35,7 @@
"sharedName": "名稱",
"sharedDescription": "描述",
"sharedSearch": "搜尋",
+ "sharedPriority": "Priority",
"sharedIconScale": "圖標比例",
"sharedGeofence": "地理圍籬",
"sharedGeofences": "地理圍籬",
@@ -103,6 +105,7 @@
"sharedDropzoneText": "將文件拖放到此處或者點擊",
"sharedLogs": "Logs",
"sharedLink": "Link",
+ "sharedEmulator": "Emulator",
"calendarSimple": "簡單",
"calendarRecurrence": "復現",
"calendarOnce": "僅一次",
@@ -179,6 +182,10 @@
"userToken": "簽證",
"userDeleteAccount": "刪除帳號",
"userTemporary": "Temporary",
+ "userTerms": "Terms of Service",
+ "userPrivacy": "Privacy Policy",
+ "userTermsPrompt": "By clicking Accept, you agree to our Terms of Service and confirm that you have read our Privacy Policy.",
+ "userTermsAccepted": "Terms Accepted",
"loginTitle": "登入",
"loginLanguage": "語言",
"loginReset": "密碼重設",
@@ -330,6 +337,7 @@
"serverLogoInverted": "倒置 Logo 圖片",
"serverChangeDisable": "禁改伺服器",
"serverDisableShare": "Disable Device Sharing",
+ "serverReboot": "Reboot",
"mapTitle": "地圖",
"mapActive": "啟用地圖",
"mapOverlay": "地圖疊層",
@@ -554,6 +562,8 @@
"reportAverageSpeed": "平均速率",
"reportMaximumSpeed": "最高速率",
"reportEngineHours": "引擎時數",
+ "reportStartEngineHours": "Start Engine Hours",
+ "reportEndEngineHours": "End Engine Hours",
"reportDuration": "持續時間",
"reportStartDate": "起始日期",
"reportStartTime": "起始時間",
diff --git a/src/settings/AnnouncementPage.jsx b/src/settings/AnnouncementPage.jsx
index 39488f02..87ccd498 100644
--- a/src/settings/AnnouncementPage.jsx
+++ b/src/settings/AnnouncementPage.jsx
@@ -62,7 +62,7 @@ const AnnouncementPage = () => {
<SelectField
value={notificator}
onChange={(e) => setNotificator(e.target.value)}
- endpoint="/api/notifications/notificators"
+ endpoint="/api/notifications/notificators?announcement=true"
keyGetter={(it) => it.type}
titleGetter={(it) => t(prefixString('notificator', it.type))}
label={t('notificationNotificators')}
diff --git a/src/settings/CalendarPage.jsx b/src/settings/CalendarPage.jsx
index 8a3dc986..9dac9b95 100644
--- a/src/settings/CalendarPage.jsx
+++ b/src/settings/CalendarPage.jsx
@@ -178,7 +178,7 @@ const CalendarPage = () => {
{rule.frequency === 'WEEKLY' ? ['sunday', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday'].map((it) => (
<MenuItem key={it} value={it.substring(0, 2).toUpperCase()}>{t(prefixString('calendar', it))}</MenuItem>
)) : Array.from({ length: 31 }, (_, i) => i + 1).map((it) => (
- <MenuItem key={it} value={it}>{it}</MenuItem>
+ <MenuItem key={it} value={String(it)}>{it}</MenuItem>
))}
</Select>
</FormControl>
diff --git a/src/settings/ComputedAttributePage.jsx b/src/settings/ComputedAttributePage.jsx
index 1b19033c..bd236688 100644
--- a/src/settings/ComputedAttributePage.jsx
+++ b/src/settings/ComputedAttributePage.jsx
@@ -142,6 +142,21 @@ const ComputedAttributePage = () => {
<Accordion>
<AccordionSummary expandIcon={<ExpandMoreIcon />}>
<Typography variant="subtitle1">
+ {t('sharedExtra')}
+ </Typography>
+ </AccordionSummary>
+ <AccordionDetails className={classes.details}>
+ <TextField
+ type="number"
+ value={item.priority || 0}
+ onChange={(e) => setItem({ ...item, priority: Number(e.target.value) })}
+ label={t('sharedPriority')}
+ />
+ </AccordionDetails>
+ </Accordion>
+ <Accordion>
+ <AccordionSummary expandIcon={<ExpandMoreIcon />}>
+ <Typography variant="subtitle1">
{t('sharedTest')}
</Typography>
</AccordionSummary>
diff --git a/src/settings/DevicesPage.jsx b/src/settings/DevicesPage.jsx
index c0da0ba7..831736e4 100644
--- a/src/settings/DevicesPage.jsx
+++ b/src/settings/DevicesPage.jsx
@@ -13,7 +13,6 @@ import CollectionFab from './components/CollectionFab';
import CollectionActions from './components/CollectionActions';
import TableShimmer from '../common/components/TableShimmer';
import SearchHeader, { filterByKeyword } from './components/SearchHeader';
-import { usePreference } from '../common/util/preferences';
import { formatTime } from '../common/util/formatter';
import { useDeviceReadonly } from '../common/util/permissions';
import useSettingsStyles from './common/useSettingsStyles';
@@ -25,8 +24,6 @@ const DevicesPage = () => {
const groups = useSelector((state) => state.groups.items);
- const hours12 = usePreference('twelveHourFormat');
-
const deviceReadonly = useDeviceReadonly();
const [timestamp, setTimestamp] = useState(Date.now());
@@ -84,7 +81,7 @@ const DevicesPage = () => {
<TableCell>{item.phone}</TableCell>
<TableCell>{item.model}</TableCell>
<TableCell>{item.contact}</TableCell>
- <TableCell>{formatTime(item.expirationTime, 'date', hours12)}</TableCell>
+ <TableCell>{formatTime(item.expirationTime, 'date')}</TableCell>
<TableCell className={classes.columnAction} padding="none">
<CollectionActions
itemId={item.id}
diff --git a/src/settings/MaintenancePage.jsx b/src/settings/MaintenancePage.jsx
index 491a0d3b..c88c1ced 100644
--- a/src/settings/MaintenancePage.jsx
+++ b/src/settings/MaintenancePage.jsx
@@ -53,11 +53,14 @@ const MaintenancePage = () => {
setLabels({ ...labels, start: null, period: t('sharedDays') });
} else if (attribute && attribute.dataType) {
switch (attribute.dataType) {
+ case 'speed':
+ setLabels({ ...labels, start: t(prefixString('shared', speedUnit)), period: t(prefixString('shared', speedUnit)) });
+ break;
case 'distance':
setLabels({ ...labels, start: t(prefixString('shared', distanceUnit)), period: t(prefixString('shared', distanceUnit)) });
break;
- case 'speed':
- setLabels({ ...labels, start: t(prefixString('shared', speedUnit)), period: t(prefixString('shared', speedUnit)) });
+ case 'hours':
+ setLabels({ ...labels, start: t('sharedHours'), period: t('sharedHours') });
break;
default:
setLabels({ ...labels, start: null, period: null });
@@ -82,6 +85,8 @@ const MaintenancePage = () => {
return speedFromKnots(value, speedUnit);
case 'distance':
return distanceFromMeters(value, distanceUnit);
+ case 'hours':
+ return value / 3600000;
default:
return value;
}
@@ -102,6 +107,8 @@ const MaintenancePage = () => {
return speedToKnots(value, speedUnit);
case 'distance':
return distanceToMeters(value, distanceUnit);
+ case 'hours':
+ return value * 3600000;
default:
return value;
}
diff --git a/src/settings/MaintenancesPage.jsx b/src/settings/MaintenancesPage.jsx
index 9241eb3e..4a78c057 100644
--- a/src/settings/MaintenancesPage.jsx
+++ b/src/settings/MaintenancesPage.jsx
@@ -57,6 +57,8 @@ const MaintenacesPage = () => {
return formatSpeed(value, speedUnit, t);
case 'distance':
return formatDistance(value, distanceUnit, t);
+ case 'hours':
+ return `${value / 3600000} ${t('sharedHours')}`;
default:
return value;
}
diff --git a/src/settings/PreferencesPage.jsx b/src/settings/PreferencesPage.jsx
index 2d6df62f..3b7fcaed 100644
--- a/src/settings/PreferencesPage.jsx
+++ b/src/settings/PreferencesPage.jsx
@@ -18,7 +18,7 @@ import useMapStyles from '../map/core/useMapStyles';
import useMapOverlays from '../map/overlay/useMapOverlays';
import { useCatch } from '../reactHelper';
import { sessionActions } from '../store';
-import { useRestriction } from '../common/util/permissions';
+import { useAdministrator, useRestriction } from '../common/util/permissions';
import useSettingsStyles from './common/useSettingsStyles';
const deviceFields = [
@@ -35,6 +35,7 @@ const PreferencesPage = () => {
const navigate = useNavigate();
const t = useTranslation();
+ const admin = useAdministrator();
const readonly = useRestriction('readonly');
const user = useSelector((state) => state.session.user);
@@ -86,6 +87,13 @@ const PreferencesPage = () => {
}
});
+ const handleReboot = useCatch(async () => {
+ const response = await fetch('/api/server/reboot', { method: 'POST' });
+ if (!response.ok) {
+ throw Error(await response.text());
+ }
+ });
+
return (
<PageLayout menu={<SettingsMenu />} breadcrumbs={['settingsTitle', 'sharedPreferences']}>
<Container maxWidth="xs" className={classes.container}>
@@ -149,7 +157,7 @@ const PreferencesPage = () => {
freeSolo
options={Object.keys(positionAttributes)}
getOptionLabel={(option) => (positionAttributes[option]?.name || option)}
- value={attributes.positionItems?.split(',') || ['speed', 'address', 'totalDistance', 'course']}
+ value={attributes.positionItems?.split(',') || ['fixTime', 'address', 'speed', 'totalDistance']}
onChange={(_, option) => {
setAttributes({ ...attributes, positionItems: option.join(',') });
}}
@@ -345,6 +353,22 @@ const PreferencesPage = () => {
label={t('settingsConnection')}
disabled
/>
+ <Button
+ variant="outlined"
+ color="primary"
+ onClick={() => navigate('/emulator')}
+ >
+ {t('sharedEmulator')}
+ </Button>
+ {admin && (
+ <Button
+ variant="outlined"
+ color="error"
+ onClick={handleReboot}
+ >
+ {t('serverReboot')}
+ </Button>
+ )}
</AccordionDetails>
</Accordion>
<div className={classes.buttons}>
diff --git a/src/settings/ServerPage.jsx b/src/settings/ServerPage.jsx
index 0ac76334..26258733 100644
--- a/src/settings/ServerPage.jsx
+++ b/src/settings/ServerPage.jsx
@@ -191,10 +191,6 @@ const ServerPage = () => {
/>
<FormGroup>
<FormControlLabel
- control={<Checkbox checked={item.twelveHourFormat} onChange={(event) => setItem({ ...item, twelveHourFormat: event.target.checked })} />}
- label={t('settingsTwelveHourFormat')}
- />
- <FormControlLabel
control={<Checkbox checked={item.forceSettings} onChange={(event) => setItem({ ...item, forceSettings: event.target.checked })} />}
label={t('serverForceSettings')}
/>
diff --git a/src/settings/UserPage.jsx b/src/settings/UserPage.jsx
index 6748dd31..03a016c1 100644
--- a/src/settings/UserPage.jsx
+++ b/src/settings/UserPage.jsx
@@ -270,12 +270,6 @@ const UserPage = () => {
onChange={(e) => setItem({ ...item, poiLayer: e.target.value })}
label={t('mapPoiLayer')}
/>
- <FormGroup>
- <FormControlLabel
- control={<Checkbox checked={item.twelveHourFormat} onChange={(e) => setItem({ ...item, twelveHourFormat: e.target.checked })} />}
- label={t('settingsTwelveHourFormat')}
- />
- </FormGroup>
</AccordionDetails>
</Accordion>
<Accordion>
diff --git a/src/settings/UsersPage.jsx b/src/settings/UsersPage.jsx
index 2941965b..030f6a18 100644
--- a/src/settings/UsersPage.jsx
+++ b/src/settings/UsersPage.jsx
@@ -15,7 +15,6 @@ import CollectionActions from './components/CollectionActions';
import TableShimmer from '../common/components/TableShimmer';
import { useManager } from '../common/util/permissions';
import SearchHeader, { filterByKeyword } from './components/SearchHeader';
-import { usePreference } from '../common/util/preferences';
import useSettingsStyles from './common/useSettingsStyles';
const UsersPage = () => {
@@ -25,8 +24,6 @@ const UsersPage = () => {
const manager = useManager();
- const hours12 = usePreference('twelveHourFormat');
-
const [timestamp, setTimestamp] = useState(Date.now());
const [items, setItems] = useState([]);
const [searchKeyword, setSearchKeyword] = useState('');
@@ -91,7 +88,7 @@ const UsersPage = () => {
<TableCell>{item.email}</TableCell>
<TableCell>{formatBoolean(item.administrator, t)}</TableCell>
<TableCell>{formatBoolean(item.disabled, t)}</TableCell>
- <TableCell>{formatTime(item.expirationTime, 'date', hours12)}</TableCell>
+ <TableCell>{formatTime(item.expirationTime, 'date')}</TableCell>
<TableCell className={classes.columnAction} padding="none">
<CollectionActions
itemId={item.id}
diff --git a/src/store/devices.js b/src/store/devices.js
index f2f6263b..130b11c8 100644
--- a/src/store/devices.js
+++ b/src/store/devices.js
@@ -15,14 +15,13 @@ const { reducer, actions } = createSlice({
update(state, action) {
action.payload.forEach((item) => state.items[item.id] = item);
},
- select(state, action) {
- state.selectedId = action.payload;
- },
selectId(state, action) {
+ state.selectTime = Date.now();
state.selectedId = action.payload;
state.selectedIds = state.selectedId ? [state.selectedId] : [];
},
selectIds(state, action) {
+ state.selectTime = Date.now();
state.selectedIds = action.payload;
[state.selectedId] = state.selectedIds;
},