diff options
Diffstat (limited to 'modern')
102 files changed, 1193 insertions, 543 deletions
diff --git a/modern/.eslintrc.js b/modern/.eslintrc.js deleted file mode 100644 index 20e3f4fb..00000000 --- a/modern/.eslintrc.js +++ /dev/null @@ -1,28 +0,0 @@ -module.exports = { - extends: 'airbnb', - parserOptions: { - ecmaVersion: 2020, - }, - plugins: [ - 'react', - ], - ignorePatterns: ['build/', 'switcher.js', 'theme.js'], - rules: { - 'max-len': [0], - 'no-shadow': [0], - 'no-return-assign': [0], - 'no-param-reassign': [0], - 'no-prototype-builtins': [0], - 'object-curly-newline': [1, { - ObjectExpression: { minProperties: 8, multiline: true, consistent: true }, - ObjectPattern: { minProperties: 8, multiline: true, consistent: true }, - ImportDeclaration: { minProperties: 4, multiline: true, consistent: true }, - ExportDeclaration: { minProperties: 4, multiline: true, consistent: true }, - }], - 'react/function-component-definition': [1, { - namedComponents: 'arrow-function', - unnamedComponents: 'arrow-function', - }], - 'react/prop-types': [0], - }, -}; diff --git a/modern/.eslintrc.json b/modern/.eslintrc.json new file mode 100644 index 00000000..6a60e087 --- /dev/null +++ b/modern/.eslintrc.json @@ -0,0 +1,37 @@ +{ + "extends": "airbnb", + "parserOptions": { + "ecmaVersion": 2020 + }, + "overrides": [{ + "files": ["*.jsx", "*.js"] + }], + "plugins": [ + "react" + ], + "ignorePatterns": ["build/", "switcher.js", "theme.js"], + "rules": { + "max-len": [0], + "no-shadow": [0], + "no-return-assign": [0], + "no-param-reassign": [0], + "no-prototype-builtins": [0], + "object-curly-newline": [1, { + "ObjectExpression": { "minProperties": 8, "multiline": true, "consistent": true }, + "ObjectPattern": { "minProperties": 8, "multiline": true, "consistent": true }, + "ImportDeclaration": { "minProperties": 4, "multiline": true, "consistent": true }, + "ExportDeclaration": { "minProperties": 4, "multiline": true, "consistent": true } + }], + "import/no-unresolved": [1, { + "ignore": ["\\.svg", "virtual:"] + }], + "react/function-component-definition": [1, { + "namedComponents": "arrow-function", + "unnamedComponents": "arrow-function" + }], + "react/jsx-props-no-spreading": [0], + "jsx-a11y/anchor-is-valid": [0], + "jsx-a11y/label-has-associated-control": [0], + "react/prop-types": [0] + } +} diff --git a/modern/package-lock.json b/modern/package-lock.json index 172ba661..e9a5540b 100644 --- a/modern/package-lock.json +++ b/modern/package-lock.json @@ -1,12 +1,12 @@ { "name": "traccar", - "version": "5.11.0", + "version": "5.12.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "traccar", - "version": "5.11.0", + "version": "5.12.0", "dependencies": { "@emotion/react": "^11.11.3", "@emotion/styled": "^11.11.0", @@ -37,7 +37,7 @@ "react-window": "^1.8.10", "recharts": "^2.10.4", "redux": "^5.0.1", - "vite": "^5.0.11", + "vite": "^5.0.12", "vite-plugin-pwa": "^0.17.4", "vite-plugin-svgr": "^4.2.0", "wellknown": "^0.5.0" @@ -11131,9 +11131,9 @@ } }, "node_modules/vite": { - "version": "5.0.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.11.tgz", - "integrity": "sha512-XBMnDjZcNAw/G1gEiskiM1v6yzM4GE5aMGvhWTlHAYYhxb7S3/V1s3m2LDHa8Vh6yIWYYB0iJwsEaS523c4oYA==", + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.12.tgz", + "integrity": "sha512-4hsnEkG3q0N4Tzf1+t6NdN9dg/L3BM+q8SWgbSPnJvrgH2kgdyzfVJwbR1ic69/4uMJJ/3dqDZZE5/WwqW8U1w==", "dependencies": { "esbuild": "^0.19.3", "postcss": "^8.4.32", diff --git a/modern/package.json b/modern/package.json index c8baba94..0a325835 100644 --- a/modern/package.json +++ b/modern/package.json @@ -1,6 +1,7 @@ { "name": "traccar", - "version": "5.11.0", + "version": "5.12.0", + "type": "module", "private": true, "dependencies": { "@emotion/react": "^11.11.3", @@ -32,7 +33,7 @@ "react-window": "^1.8.10", "recharts": "^2.10.4", "redux": "^5.0.1", - "vite": "^5.0.11", + "vite": "^5.0.12", "vite-plugin-pwa": "^0.17.4", "vite-plugin-svgr": "^4.2.0", "wellknown": "^0.5.0" @@ -42,7 +43,7 @@ "build": "vite build", "generate-pwa-assets": "pwa-assets-generator --preset minimal public/logo.svg", "lint": "eslint .", - "lint:fix": "eslint --fix --ext .js ." + "lint:fix": "eslint --fix ." }, "browserslist": { "production": [ diff --git a/modern/src/Navigation.jsx b/modern/src/Navigation.jsx index 731eeb62..37a6ddb5 100644 --- a/modern/src/Navigation.jsx +++ b/modern/src/Navigation.jsx @@ -55,6 +55,8 @@ import DeviceConnectionsPage from './settings/DeviceConnectionsPage'; import GroupConnectionsPage from './settings/GroupConnectionsPage'; import UserConnectionsPage from './settings/UserConnectionsPage'; import LogsPage from './reports/LogsPage'; +import SharePage from './settings/SharePage'; +import AnnouncementPage from './settings/AnnouncementPage'; const Navigation = () => { const navigate = useNavigate(); @@ -110,6 +112,7 @@ const Navigation = () => { <Route path="settings"> <Route path="accumulators/:deviceId" element={<AccumulatorsPage />} /> + <Route path="announcement" element={<AnnouncementPage />} /> <Route path="calendars" element={<CalendarsPage />} /> <Route path="calendar/:id" element={<CalendarPage />} /> <Route path="calendar" element={<CalendarPage />} /> @@ -122,6 +125,7 @@ const Navigation = () => { <Route path="devices" element={<DevicesPage />} /> <Route path="device/:id/connections" element={<DeviceConnectionsPage />} /> <Route path="device/:id/command" element={<CommandDevicePage />} /> + <Route path="device/:id/share" element={<SharePage />} /> <Route path="device/:id" element={<DevicePage />} /> <Route path="device" element={<DevicePage />} /> <Route path="drivers" element={<DriversPage />} /> diff --git a/modern/src/UpdateController.jsx b/modern/src/UpdateController.jsx index 0b2b7985..80ca6dc2 100644 --- a/modern/src/UpdateController.jsx +++ b/modern/src/UpdateController.jsx @@ -1,12 +1,12 @@ import { Snackbar, IconButton } from '@mui/material'; import RefreshIcon from '@mui/icons-material/Refresh'; -import React from 'react' +import React from 'react'; import { useSelector } from 'react-redux'; +import { useRegisterSW } from 'virtual:pwa-register/react'; import { useTranslation } from './common/components/LocalizationProvider'; -import { useRegisterSW } from 'virtual:pwa-register/react' // Based on https://vite-pwa-org.netlify.app/frameworks/react.html -function UpdateController() { +const UpdateController = () => { const t = useTranslation(); const swUpdateInterval = useSelector((state) => state.session.server.attributes.serviceWorkerUpdateInterval || 3600000); @@ -21,30 +21,30 @@ function UpdateController() { if (!(!swRegistration.installing && navigator)) { return; } - + if (('connection' in navigator) && !navigator.onLine) { return; } - + const newSW = await fetch(swUrl, { cache: 'no-store', headers: { - 'cache': 'no-store', + cache: 'no-store', 'cache-control': 'no-cache', }, }); - + if (newSW?.status === 200) { await swRegistration.update(); } }, swUpdateInterval); } - } + }, }); return ( - <Snackbar - open={needRefresh} + <Snackbar + open={needRefresh} message={t('settingsUpdateAvailable')} action={( <IconButton color="inherit" onClick={() => updateServiceWorker(true)}> @@ -53,6 +53,6 @@ function UpdateController() { )} /> ); -} +}; export default UpdateController; diff --git a/modern/src/common/attributes/useCommonUserAttributes.js b/modern/src/common/attributes/useCommonUserAttributes.js index bd88d1e8..1f811e56 100644 --- a/modern/src/common/attributes/useCommonUserAttributes.js +++ b/modern/src/common/attributes/useCommonUserAttributes.js @@ -93,8 +93,8 @@ export default (t) => useMemo(() => ({ name: t('attributeUiDisableEvents'), type: 'boolean', }, - 'ui.disableVehicleFetures': { - name: t('attributeUiDisableVehicleFetures'), + 'ui.disableVehicleFeatures': { + name: t('attributeUiDisableVehicleFeatures'), type: 'boolean', }, 'ui.disableDrivers': { diff --git a/modern/src/common/components/LocalizationProvider.jsx b/modern/src/common/components/LocalizationProvider.jsx index d48b12ce..4104c773 100644 --- a/modern/src/common/components/LocalizationProvider.jsx +++ b/modern/src/common/components/LocalizationProvider.jsx @@ -35,6 +35,7 @@ import ko from '../../resources/l10n/ko.json'; import 'dayjs/locale/ko'; import lo from '../../resources/l10n/lo.json'; import 'dayjs/locale/lo'; import lt from '../../resources/l10n/lt.json'; import 'dayjs/locale/lt'; import lv from '../../resources/l10n/lv.json'; import 'dayjs/locale/lv'; +import mk from '../../resources/l10n/mk.json'; import 'dayjs/locale/mk'; import ml from '../../resources/l10n/ml.json'; import 'dayjs/locale/ml'; import mn from '../../resources/l10n/mn.json'; import 'dayjs/locale/mn'; import ms from '../../resources/l10n/ms.json'; import 'dayjs/locale/ms'; @@ -93,6 +94,7 @@ const languages = { lo: { data: lo, country: 'LA', name: 'ລາວ' }, lt: { data: lt, country: 'LT', name: 'Lietuvių' }, lv: { data: lv, country: 'LV', name: 'Latviešu' }, + mk: { data: mk, country: 'MK', name: 'Mакедонски' }, ml: { data: ml, country: 'IN', name: 'മലയാളം' }, mn: { data: mn, country: 'MN', name: 'Монгол хэл' }, ms: { data: ms, country: 'MY', name: 'بهاس ملايو' }, diff --git a/modern/src/common/components/StatusCard.jsx b/modern/src/common/components/StatusCard.jsx index 53048645..a63d0f80 100644 --- a/modern/src/common/components/StatusCard.jsx +++ b/modern/src/common/components/StatusCard.jsx @@ -1,7 +1,6 @@ import React, { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; -import dayjs from 'dayjs'; import Draggable from 'react-draggable'; import { Card, @@ -16,11 +15,6 @@ import { Menu, MenuItem, CardMedia, - Dialog, - TextField, - DialogActions, - DialogContent, - Button, } from '@mui/material'; import makeStyles from '@mui/styles/makeStyles'; import CloseIcon from '@mui/icons-material/Close'; @@ -138,7 +132,6 @@ const StatusCard = ({ deviceId, position, onClose, disableActions, desktopPaddin const [anchorEl, setAnchorEl] = useState(null); const [removing, setRemoving] = useState(false); - const [shared, setShared] = useState(null); const handleRemove = useCatch(async (removed) => { if (removed) { @@ -178,20 +171,6 @@ const StatusCard = ({ deviceId, position, onClose, disableActions, desktopPaddin } }, [navigate, position]); - const handleShare = useCatchCallback(async () => { - const expiration = dayjs().add(1, 'week').toISOString(); - const response = await fetch('/api/devices/share', { - method: 'POST', - body: new URLSearchParams(`deviceId=${deviceId}&expiration=${expiration}`), - }); - if (response.ok) { - const token = await response.text(); - setShared(`${window.location.origin}?token=${token}`); - } else { - throw Error(await response.text()); - } - }, [deviceId, setShared]); - return ( <> <div className={classes.root}> @@ -293,7 +272,7 @@ const StatusCard = ({ deviceId, position, onClose, disableActions, desktopPaddin <MenuItem component="a" target="_blank" href={`https://www.google.com/maps/search/?api=1&query=${position.latitude}%2C${position.longitude}`}>{t('linkGoogleMaps')}</MenuItem> <MenuItem component="a" target="_blank" href={`http://maps.apple.com/?ll=${position.latitude},${position.longitude}`}>{t('linkAppleMaps')}</MenuItem> <MenuItem component="a" target="_blank" href={`https://www.google.com/maps/@?api=1&map_action=pano&viewpoint=${position.latitude}%2C${position.longitude}&heading=${position.course}`}>{t('linkStreetView')}</MenuItem> - {!shareDisabled && !user.temporary && <MenuItem onClick={handleShare}>{t('deviceShare')}</MenuItem>} + {!shareDisabled && !user.temporary && <MenuItem onClick={() => navigate(`/settings/device/${deviceId}/share`)}>{t('deviceShare')}</MenuItem>} </Menu> )} <RemoveDialog @@ -302,15 +281,6 @@ const StatusCard = ({ deviceId, position, onClose, disableActions, desktopPaddin itemId={deviceId} onResult={(removed) => handleRemove(removed)} /> - <Dialog open={Boolean(shared)} onClose={() => setShared(null)}> - <DialogContent> - <TextField value={shared} onFocus={e => e.target.select()} /> - </DialogContent> - <DialogActions> - <Button onClick={() => setShared(null)}>{t('sharedCancel')}</Button> - <Button onClick={() => navigator.clipboard?.writeText(shared)}>{t('sharedCopy')}</Button> - </DialogActions> - </Dialog> </> ); }; diff --git a/modern/src/common/util/formatter.js b/modern/src/common/util/formatter.js index aeacc145..7b7fc96d 100644 --- a/modern/src/common/util/formatter.js +++ b/modern/src/common/util/formatter.js @@ -66,8 +66,6 @@ export const formatSpeed = (value, unit, t) => `${speedFromKnots(value, unit).to export const formatVolume = (value, unit, t) => `${volumeFromLiters(value, unit).toFixed(2)} ${volumeUnitString(unit, t)}`; -export const formatHours = (value) => dayjs.duration(value).humanize(); - export const formatNumericHours = (value, t) => { const hours = Math.floor(value / 3600000); const minutes = Math.floor((value % 3600000) / 60000); diff --git a/modern/src/common/util/useFeatures.js b/modern/src/common/util/useFeatures.js index 08499e54..cafb2c7c 100644 --- a/modern/src/common/util/useFeatures.js +++ b/modern/src/common/util/useFeatures.js @@ -19,9 +19,9 @@ const featureSelector = createSelector( (state) => state.session.user, (server, user) => { const disableAttributes = get(server, user, 'ui.disableAttributes'); - const disableVehicleFetures = get(server, user, 'ui.disableVehicleFetures'); - const disableDrivers = disableVehicleFetures || get(server, user, 'ui.disableDrivers'); - const disableMaintenance = disableVehicleFetures || get(server, user, 'ui.disableMaintenance'); + const disableVehicleFeatures = get(server, user, 'ui.disableVehicleFeatures'); + const disableDrivers = disableVehicleFeatures || get(server, user, 'ui.disableDrivers'); + const disableMaintenance = disableVehicleFeatures || get(server, user, 'ui.disableMaintenance'); const disableGroups = get(server, user, 'ui.disableGroups'); const disableEvents = get(server, user, 'ui.disableEvents'); const disableComputedAttributes = get(server, user, 'ui.disableComputedAttributes'); diff --git a/modern/src/login/LoginPage.jsx b/modern/src/login/LoginPage.jsx index 6cca2837..62aa4a6b 100644 --- a/modern/src/login/LoginPage.jsx +++ b/modern/src/login/LoginPage.jsx @@ -96,7 +96,7 @@ const LoginPage = () => { const query = `email=${encodeURIComponent(email)}&password=${encodeURIComponent(password)}`; const response = await fetch('/api/session', { method: 'POST', - body: new URLSearchParams(code.length ? query + `&code=${code}` : query), + body: new URLSearchParams(code.length ? `${query}&code=${code}` : query), }); if (response.ok) { const user = await response.json(); diff --git a/modern/src/main/DeviceRow.jsx b/modern/src/main/DeviceRow.jsx index 8d40e139..d9c1a189 100644 --- a/modern/src/main/DeviceRow.jsx +++ b/modern/src/main/DeviceRow.jsx @@ -119,15 +119,15 @@ const DeviceRow = ({ data, index, style }) => { {position.attributes.hasOwnProperty('batteryLevel') && ( <Tooltip title={`${t('positionBatteryLevel')}: ${formatPercentage(position.attributes.batteryLevel)}`}> <IconButton size="small"> - {position.attributes.batteryLevel > 70 ? ( + {(position.attributes.batteryLevel > 70 && ( position.attributes.charge ? (<BatteryChargingFullIcon fontSize="small" className={classes.success} />) : (<BatteryFullIcon fontSize="small" className={classes.success} />) - ) : position.attributes.batteryLevel > 30 ? ( + )) || (position.attributes.batteryLevel > 30 && ( position.attributes.charge ? (<BatteryCharging60Icon fontSize="small" className={classes.warning} />) : (<Battery60Icon fontSize="small" className={classes.warning} />) - ) : ( + )) || ( position.attributes.charge ? (<BatteryCharging20Icon fontSize="small" className={classes.error} />) : (<Battery20Icon fontSize="small" className={classes.error} />) diff --git a/modern/src/other/PositionPage.jsx b/modern/src/other/PositionPage.jsx index 3ed3498c..f253cd2c 100644 --- a/modern/src/other/PositionPage.jsx +++ b/modern/src/other/PositionPage.jsx @@ -8,7 +8,6 @@ import makeStyles from '@mui/styles/makeStyles'; import ArrowBackIcon from '@mui/icons-material/ArrowBack'; import { useNavigate, useParams } from 'react-router-dom'; import { useEffectAsync } from '../reactHelper'; -import { prefixString } from '../common/util/stringUtils'; import { useTranslation } from '../common/components/LocalizationProvider'; import PositionValue from '../common/components/PositionValue'; import usePositionAttributes from '../common/attributes/usePositionAttributes'; diff --git a/modern/src/reports/EventReportPage.jsx b/modern/src/reports/EventReportPage.jsx index 10b539ab..5ffc8ac3 100644 --- a/modern/src/reports/EventReportPage.jsx +++ b/modern/src/reports/EventReportPage.jsx @@ -204,7 +204,7 @@ const EventReportPage = () => { {!loading ? items.map((item) => ( <TableRow key={item.id}> <TableCell className={classes.columnAction} padding="none"> - {item.positionId ? selectedItem === item ? ( + {(item.positionId && (selectedItem === item ? ( <IconButton size="small" onClick={() => setSelectedItem(null)}> <GpsFixedIcon fontSize="small" /> </IconButton> @@ -212,7 +212,7 @@ const EventReportPage = () => { <IconButton size="small" onClick={() => setSelectedItem(item)}> <LocationSearchingIcon fontSize="small" /> </IconButton> - ) : ''} + ))) || ''} </TableCell> {columns.map((key) => ( <TableCell key={key}> diff --git a/modern/src/reports/LogsPage.jsx b/modern/src/reports/LogsPage.jsx index 4b689944..7bdbd309 100644 --- a/modern/src/reports/LogsPage.jsx +++ b/modern/src/reports/LogsPage.jsx @@ -41,7 +41,7 @@ const LogsPage = () => { const registerDevice = (uniqueId) => { const query = new URLSearchParams({ uniqueId }); navigate(`/settings/device?${query.toString()}`); - } + }; return ( <PageLayout menu={<ReportsMenu />} breadcrumbs={['reportTitle', 'statisticsTitle']}> @@ -55,7 +55,7 @@ const LogsPage = () => { </TableRow> </TableHead> <TableBody> - {items.map((item, index) => ( + {items.map((item, index) => /* eslint-disable react/no-array-index-key */ ( <TableRow key={index}> <TableCell className={classes.columnAction} padding="none"> {item.deviceId ? ( diff --git a/modern/src/reports/StopReportPage.jsx b/modern/src/reports/StopReportPage.jsx index 3a6ee18d..066b29a4 100644 --- a/modern/src/reports/StopReportPage.jsx +++ b/modern/src/reports/StopReportPage.jsx @@ -7,7 +7,7 @@ import { import GpsFixedIcon from '@mui/icons-material/GpsFixed'; import LocationSearchingIcon from '@mui/icons-material/LocationSearching'; import { - formatDistance, formatHours, formatVolume, formatTime, + formatDistance, formatVolume, formatTime, formatNumericHours, } from '../common/util/formatter'; import ReportFilter from './components/ReportFilter'; import { useAttributePreference, usePreference } from '../common/util/preferences'; @@ -95,9 +95,9 @@ const StopReportPage = () => { case 'startOdometer': return formatDistance(item[key], distanceUnit, t); case 'duration': - return formatHours(item[key]); + return formatNumericHours(item[key], t); case 'engineHours': - return formatHours(item[key]); + return formatNumericHours(item[key], t); case 'spentFuel': return formatVolume(item[key], volumeUnit, t); case 'address': diff --git a/modern/src/reports/SummaryReportPage.jsx b/modern/src/reports/SummaryReportPage.jsx index ec5395f1..ae7e043e 100644 --- a/modern/src/reports/SummaryReportPage.jsx +++ b/modern/src/reports/SummaryReportPage.jsx @@ -5,7 +5,7 @@ import { FormControl, InputLabel, Select, MenuItem, Table, TableHead, TableRow, TableBody, TableCell, } from '@mui/material'; import { - formatDistance, formatHours, formatSpeed, formatVolume, formatTime, + formatDistance, formatSpeed, formatVolume, formatTime, formatNumericHours, } from '../common/util/formatter'; import ReportFilter from './components/ReportFilter'; import { useAttributePreference, usePreference } from '../common/util/preferences'; @@ -101,7 +101,7 @@ const SummaryReportPage = () => { case 'maxSpeed': return formatSpeed(item[key], speedUnit, t); case 'engineHours': - return formatHours(item[key]); + return formatNumericHours(item[key], t); case 'spentFuel': return formatVolume(item[key], volumeUnit, t); default: diff --git a/modern/src/reports/TripReportPage.jsx b/modern/src/reports/TripReportPage.jsx index f5b524ad..897ee506 100644 --- a/modern/src/reports/TripReportPage.jsx +++ b/modern/src/reports/TripReportPage.jsx @@ -6,7 +6,7 @@ import { import GpsFixedIcon from '@mui/icons-material/GpsFixed'; import LocationSearchingIcon from '@mui/icons-material/LocationSearching'; import { - formatDistance, formatSpeed, formatHours, formatVolume, formatTime, + formatDistance, formatSpeed, formatVolume, formatTime, formatNumericHours, } from '../common/util/formatter'; import ReportFilter from './components/ReportFilter'; import { useAttributePreference, usePreference } from '../common/util/preferences'; @@ -142,7 +142,7 @@ const TripReportPage = () => { case 'maxSpeed': return formatSpeed(item[key], speedUnit, t); case 'duration': - return formatHours(item[key]); + return formatNumericHours(item[key], t); case 'spentFuel': return formatVolume(item[key], volumeUnit, t); case 'startAddress': diff --git a/modern/src/resources/l10n/af.json b/modern/src/resources/l10n/af.json index a8ac759d..f13fd4d2 100644 --- a/modern/src/resources/l10n/af.json +++ b/modern/src/resources/l10n/af.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Stel", "sharedCancel": "Kanselleer", + "sharedCopy": "Copy", "sharedAdd": "Sit by", "sharedEdit": "Redigeer", "sharedRemove": "Verwyder", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Kolomme", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: deaktiveer gebeure", - "attributeUiDisableVehicleFetures": "UI: deaktiveer voertuig eienskappe", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: deaktiveer bestuurders", "attributeUiDisableComputedAttributes": "UI: deaktiveer berekende attribute", "attributeUiDisableCalendars": "UI: deaktiveer kalenders", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Kaart", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/ar.json b/modern/src/resources/l10n/ar.json index 6a270749..b425452a 100644 --- a/modern/src/resources/l10n/ar.json +++ b/modern/src/resources/l10n/ar.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "ضبط", "sharedCancel": "إلغاء", + "sharedCopy": "Copy", "sharedAdd": "إضافة", "sharedEdit": "تعديل", "sharedRemove": "حذف", @@ -99,7 +100,6 @@ "sharedImport": "استيراد", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "واجهة المستخدم: تعطيل الأحداث", - "attributeUiDisableVehicleFetures": "واجهة المستخدم: تعطيل مزايا المركبات", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "واجهة المستخدم: تعطيل السائقين", "attributeUiDisableComputedAttributes": "واجهة المستخدم: تعطيل السمات المحصاة", "attributeUiDisableCalendars": "واجهة المستخدم: تعطيل التقويمات", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "خريطة", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/az.json b/modern/src/resources/l10n/az.json index e2cf9c46..183d14c5 100644 --- a/modern/src/resources/l10n/az.json +++ b/modern/src/resources/l10n/az.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Qurmaq", "sharedCancel": "Ləğv etmək", + "sharedCopy": "Copy", "sharedAdd": "Əlavə etmək", "sharedEdit": "Redaktə etmək", "sharedRemove": "Silmək", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: şikəst vaqiəler", - "attributeUiDisableVehicleFetures": "UI: Avtomobil funksiyalarını deaktiv etmək", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Sürücüləri deaktiv etmək", "attributeUiDisableComputedAttributes": "UI: Hesablanılan atributları deaktiv etmək", "attributeUiDisableCalendars": "UI: Təqvimləri deaktiv etmək", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Xəritə", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/bg.json b/modern/src/resources/l10n/bg.json index e2b537e2..3a910808 100644 --- a/modern/src/resources/l10n/bg.json +++ b/modern/src/resources/l10n/bg.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Настрой", "sharedCancel": "Отказ", + "sharedCopy": "Copy", "sharedAdd": "Добави", "sharedEdit": "Редактирай", "sharedRemove": "Премахни", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "Деактивирай Събития", - "attributeUiDisableVehicleFetures": "Деактивирай МПС параметрите", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "Деактивирай Шофьори", "attributeUiDisableComputedAttributes": "Деактивирай изчислените параметри", "attributeUiDisableCalendars": "Деактивирай Календара", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Карта", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/bn.json b/modern/src/resources/l10n/bn.json index 6f4f1d0e..fb310006 100644 --- a/modern/src/resources/l10n/bn.json +++ b/modern/src/resources/l10n/bn.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "স্থাপন করুন", "sharedCancel": " বাতিল করুন", + "sharedCopy": "Copy", "sharedAdd": "যুক্ত করুন", "sharedEdit": "সম্পাদন করুন", "sharedRemove": "অপসারণ করুন", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "মানচিত্র", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/ca.json b/modern/src/resources/l10n/ca.json index 9e1dacb4..68e4b571 100644 --- a/modern/src/resources/l10n/ca.json +++ b/modern/src/resources/l10n/ca.json @@ -5,6 +5,7 @@ "sharedUpload": "Carrega", "sharedSet": "Establir", "sharedCancel": "Cancel·lar", + "sharedCopy": "Copy", "sharedAdd": "Afegir", "sharedEdit": "Editar", "sharedRemove": "Eliminar", @@ -99,7 +100,6 @@ "sharedImport": "Importar", "sharedColumns": "Columnes", "sharedDropzoneText": "Arrossegueu i deixeu anar un fitxer aquí o feu clic", - "sharedLinkCopied": "Enllaç copiat", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrència", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Deshabilitar Grups", "attributeUiDisableEvents": "UI: Deshabilitar esdeveniments", - "attributeUiDisableVehicleFetures": "UI: Deshabilitar característiques del vehicle", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Deshabilitar Conductors", "attributeUiDisableComputedAttributes": "UI: Deshabilitar Atributs calculats", "attributeUiDisableCalendars": "UI: Deshabilitar Calendari", @@ -325,6 +325,7 @@ "serverLogo": "Imatge del logotip", "serverLogoInverted": "Imatge de logotip invertida", "serverChangeDisable": "Desactiva el canvi de servidor", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mapa", "mapActive": "Mapes actius", "mapOverlay": "Capa sobre el mapa", diff --git a/modern/src/resources/l10n/cs.json b/modern/src/resources/l10n/cs.json index b148315a..b68f8db1 100644 --- a/modern/src/resources/l10n/cs.json +++ b/modern/src/resources/l10n/cs.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Nastavit", "sharedCancel": "Zrušit", + "sharedCopy": "Copy", "sharedAdd": "Přidat", "sharedEdit": "Změnit", "sharedRemove": "Odstranit", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Zakázat události", - "attributeUiDisableVehicleFetures": "UI: Zakázat funkce vozidel", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Zakázat řidiče", "attributeUiDisableComputedAttributes": "UI: Zakázat vypočítané vlastnosti", "attributeUiDisableCalendars": "UI: Zakázat kalendáře", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mapa", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/da.json b/modern/src/resources/l10n/da.json index 0a9ec911..e264902a 100644 --- a/modern/src/resources/l10n/da.json +++ b/modern/src/resources/l10n/da.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Indstil", "sharedCancel": "Fortryd", + "sharedCopy": "Copy", "sharedAdd": "Tilføj", "sharedEdit": "Rediger", "sharedRemove": "Fjern", @@ -99,7 +100,6 @@ "sharedImport": "Importer", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "Deaktiver begivenheder", - "attributeUiDisableVehicleFetures": "Deaktiver køretøjets funktioner", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "Deaktiver chauffører", "attributeUiDisableComputedAttributes": "Deaktiver beregnede attributter", "attributeUiDisableCalendars": "Deaktiver kalendere", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Kort", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/de.json b/modern/src/resources/l10n/de.json index a631111f..de37a2fe 100644 --- a/modern/src/resources/l10n/de.json +++ b/modern/src/resources/l10n/de.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Speichern", "sharedCancel": "Abbrechen", + "sharedCopy": "Kopieren", "sharedAdd": "Hinzufügen", "sharedEdit": "Bearbeiten", "sharedRemove": "Entfernen", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Spalten", "sharedDropzoneText": "Datei hierhin ziehen oder klicken", - "sharedLinkCopied": "Link kopiert", "sharedLogs": "Protokolle", "calendarSimple": "Einfach", "calendarRecurrence": "Wiederholung", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Attribute deaktivieren", "attributeUiDisableGroups": "UI: Gruppen deaktivieren", "attributeUiDisableEvents": "Oberfläche: Ereignisse deaktivieren", - "attributeUiDisableVehicleFetures": "Oberfläche: Fahrzeugfunktionen deaktivieren", + "attributeUiDisableVehicleFeatures": "UI: Fahrzeugfunktionen deaktivieren", "attributeUiDisableDrivers": "Oberfläche: Fahrer deaktivieren", "attributeUiDisableComputedAttributes": "Oberfläche: Berechnete Werte deaktivieren", "attributeUiDisableCalendars": "Oberfläche: Kalender deaktivieren", @@ -325,6 +325,7 @@ "serverLogo": "Logo", "serverLogoInverted": "Umgekehrte Logografik", "serverChangeDisable": "Serverwechsel deaktivieren", + "serverDisableShare": "Gerätefreigabe deaktivieren", "mapTitle": "Karte", "mapActive": "Aktive Karte", "mapOverlay": "Karten Overlay", diff --git a/modern/src/resources/l10n/el.json b/modern/src/resources/l10n/el.json index 048f5977..0439b4e2 100644 --- a/modern/src/resources/l10n/el.json +++ b/modern/src/resources/l10n/el.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Θέσε", "sharedCancel": "Άκυρο", + "sharedCopy": "Copy", "sharedAdd": "Προσθήκη", "sharedEdit": "Επεξεργασία", "sharedRemove": "Διαγραφή", @@ -99,7 +100,6 @@ "sharedImport": "Εισαγωγή", "sharedColumns": "Στήλες", "sharedDropzoneText": "Σύρετε και αποθέστε ένα αρχείο εδώ ή κάντε κλικ", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Απλό", "calendarRecurrence": "Επανάληψη", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "Διεπαφή: Απενεργοποίηση χαρακτηριστικών", "attributeUiDisableGroups": "Διεπαφή: Απενεργοποίηση ομάδων", "attributeUiDisableEvents": "Διεπαφή: Απενεργοποίηση Γεγονότων", - "attributeUiDisableVehicleFetures": "Διεπαφή: Απενεργοποίηση Χαρακτηριστικών Οχήματος", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "Διεπαφή: Απενεργοποίηση Οδηγών", "attributeUiDisableComputedAttributes": "Διεπαφή: Απενεργοποίηση Υπολογισμένων Ιδιοτήτων", "attributeUiDisableCalendars": "Διεπαφή: Απενεργοποίηση Ημερολογίων", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Χάρτης", "mapActive": "Ενεργοί Χάρτες", "mapOverlay": "Υπέρθεση Χάρτη", diff --git a/modern/src/resources/l10n/en.json b/modern/src/resources/l10n/en.json index fec79807..39fb219b 100644 --- a/modern/src/resources/l10n/en.json +++ b/modern/src/resources/l10n/en.json @@ -11,6 +11,7 @@ "sharedRemove": "Remove", "sharedRemoveConfirm": "Remove item?", "sharedNoData": "No data", + "sharedSubject": "Subject", "sharedYes": "Yes", "sharedNo": "No", "sharedKm": "km", @@ -101,6 +102,7 @@ "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", "sharedLogs": "Logs", + "sharedLink": "Link", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", "calendarOnce": "Once", @@ -148,7 +150,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -175,6 +177,7 @@ "userFixedEmail": "No Email Change", "userToken": "Token", "userDeleteAccount": "Delete Account", + "userTemporary": "Temporary", "loginTitle": "Login", "loginLanguage": "Language", "loginReset": "Reset Password", diff --git a/modern/src/resources/l10n/es.json b/modern/src/resources/l10n/es.json index fdeafce2..a03f29b3 100644 --- a/modern/src/resources/l10n/es.json +++ b/modern/src/resources/l10n/es.json @@ -5,6 +5,7 @@ "sharedUpload": "Cargar", "sharedSet": "Establecer", "sharedCancel": "Cancelar", + "sharedCopy": "Copiar", "sharedAdd": "Añadir", "sharedEdit": "Editar", "sharedRemove": "Eliminar", @@ -99,7 +100,6 @@ "sharedImport": "Importar", "sharedColumns": "Columnas", "sharedDropzoneText": "Arrastra y suelta el archivo aquí o pulsa", - "sharedLinkCopied": "Enlace copiado", "sharedLogs": "Registros", "calendarSimple": "Simple", "calendarRecurrence": "Recurrente", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Deshabilitar Atributos", "attributeUiDisableGroups": "UI: Deshabilitar Grupos", "attributeUiDisableEvents": "UI: Deshabilitar panel Eventos", - "attributeUiDisableVehicleFetures": "UI: Desactivar características del vehículo", + "attributeUiDisableVehicleFeatures": "UI: Desactivar características del vehículo", "attributeUiDisableDrivers": "UI: Desactivar Conductores", "attributeUiDisableComputedAttributes": "UI: Desactivar Atributos calculados", "attributeUiDisableCalendars": "UI: Desactivar Calendario", @@ -325,6 +325,7 @@ "serverLogo": "Imagen del Logo", "serverLogoInverted": "Imagen de logo invertida", "serverChangeDisable": "Deshabilitar el cambio de servidor", + "serverDisableShare": "Deshabilitar poder Compartir Dispositivos", "mapTitle": "Mapa", "mapActive": "Mapas activos", "mapOverlay": "Capa sobre el mapa", diff --git a/modern/src/resources/l10n/fa.json b/modern/src/resources/l10n/fa.json index 441fbace..cf72798c 100644 --- a/modern/src/resources/l10n/fa.json +++ b/modern/src/resources/l10n/fa.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "تنظیم", "sharedCancel": "انصراف", + "sharedCopy": "Copy", "sharedAdd": "اضافه كردن", "sharedEdit": "ویرایش", "sharedRemove": "پاک کردن", @@ -99,7 +100,6 @@ "sharedImport": "وارد كردن", "sharedColumns": "ستونها", "sharedDropzoneText": "یک فایل را در اینجا بکشید و رها کنید یا کلیک کنید", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "ساده", "calendarRecurrence": "عکس العمل", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: ویژگی ها را غیرفعال کنید", "attributeUiDisableGroups": "UI: غیر فعال کردن گروه ها", "attributeUiDisableEvents": "UI: غیر فعال کردن رویدادها", - "attributeUiDisableVehicleFetures": "غیرفعال کردن ویژگی های خودرو", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "غیرفعالسازی رانندگان", "attributeUiDisableComputedAttributes": "غیرفعالسازی محاسبات", "attributeUiDisableCalendars": "غیرفعالسازی تقویم", @@ -325,6 +325,7 @@ "serverLogo": "عکس لوگو", "serverLogoInverted": "معکوس سازی رنگ لوگو", "serverChangeDisable": "غیرفعال کردن تغییر سرور", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "نقشه", "mapActive": "نقشه های فعال", "mapOverlay": "لایه نقشه", diff --git a/modern/src/resources/l10n/fi.json b/modern/src/resources/l10n/fi.json index 49811a62..7a200e30 100644 --- a/modern/src/resources/l10n/fi.json +++ b/modern/src/resources/l10n/fi.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Aseta", "sharedCancel": "Peruuta", + "sharedCopy": "Copy", "sharedAdd": "Lisää", "sharedEdit": "Muokkaa", "sharedRemove": "Poista", @@ -99,7 +100,6 @@ "sharedImport": "Tuo", "sharedColumns": "Sarakkeet", "sharedDropzoneText": "Vedä ja pudota tiedosto tähän tai klikkaa", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Yksinkertainen", "calendarRecurrence": "Toisto", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Piilota ominaisuudet", "attributeUiDisableGroups": "UI: Piilota ryhmät", "attributeUiDisableEvents": "UI: Piilota tapahtumat", - "attributeUiDisableVehicleFetures": "UI: Piilota ajoneuvojen ominaisuudet", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Piilota kuljettajat", "attributeUiDisableComputedAttributes": "UI: Piilota lasketut ominaisuudet", "attributeUiDisableCalendars": "UI: Piilota kalenterit", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Kartta", "mapActive": "Aktiiviset kartat", "mapOverlay": "Karttapäällys", diff --git a/modern/src/resources/l10n/fr.json b/modern/src/resources/l10n/fr.json index faad67cd..0f2db93c 100644 --- a/modern/src/resources/l10n/fr.json +++ b/modern/src/resources/l10n/fr.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Régler", "sharedCancel": "Annuler", + "sharedCopy": "Copy", "sharedAdd": "Ajouter", "sharedEdit": "Editer", "sharedRemove": "Effacer", @@ -99,7 +100,6 @@ "sharedImport": "Importer", "sharedColumns": "Colonnes", "sharedDropzoneText": "Glissez et déposez un fichier ici ou cliquez", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Récurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Désactiver les attributs", "attributeUiDisableGroups": "UI: Désactiver groupes", "attributeUiDisableEvents": "UI: Désactiver évènements", - "attributeUiDisableVehicleFetures": "UI: Désactiver les fonctionalités véhicule", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Désactiver les conducteurs", "attributeUiDisableComputedAttributes": "UI: Désactiver les attributs calculés", "attributeUiDisableCalendars": "UI: Désactiver les calendiers", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Carte", "mapActive": "Cartes actives", "mapOverlay": "Superposition de cartes", diff --git a/modern/src/resources/l10n/gl.json b/modern/src/resources/l10n/gl.json index cbc16a2a..6a580892 100644 --- a/modern/src/resources/l10n/gl.json +++ b/modern/src/resources/l10n/gl.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Establecer", "sharedCancel": "Cancelar", + "sharedCopy": "Copy", "sharedAdd": "Engadir", "sharedEdit": "Editar", "sharedRemove": "Eliminar", @@ -99,7 +100,6 @@ "sharedImport": "Importar", "sharedColumns": "Columnas", "sharedDropzoneText": "Arrastra e solta un arquivo aquí ou fai clic", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recorrencia", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "IU: Desactivar atributos", "attributeUiDisableGroups": "IU: Desactivar grupos", "attributeUiDisableEvents": "IU: Desactivar eventos", - "attributeUiDisableVehicleFetures": "IU: Desactivar as características do vehículo", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "IU: Desactivar condutores", "attributeUiDisableComputedAttributes": "IU: Desactivar atributos calculados", "attributeUiDisableCalendars": "IU: desactivar os calendarios", @@ -325,6 +325,7 @@ "serverLogo": "Imaxe do logotipo", "serverLogoInverted": "Imaxe do logotipo con cores inversos", "serverChangeDisable": "Desactivar o cambio de servidor", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mapa", "mapActive": "Mapas activos", "mapOverlay": "Superposición de mapas", diff --git a/modern/src/resources/l10n/he.json b/modern/src/resources/l10n/he.json index 95fd268d..db403502 100644 --- a/modern/src/resources/l10n/he.json +++ b/modern/src/resources/l10n/he.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "הגדרה", "sharedCancel": "ביטול", + "sharedCopy": "Copy", "sharedAdd": "הוספה", "sharedEdit": "עריכה", "sharedRemove": "הסרה", @@ -99,7 +100,6 @@ "sharedImport": "ייבוא", "sharedColumns": "עמודות", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "ממשק: בטל ארועים", - "attributeUiDisableVehicleFetures": "ממשק: בטל תכונות רכב", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "ממשק : בטל נהגים ", "attributeUiDisableComputedAttributes": "ממשק : בטל תכונה ממוחשבת", "attributeUiDisableCalendars": "ממשק : בטל יומנים", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "מפה", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/hi.json b/modern/src/resources/l10n/hi.json index 6189e2b6..e92ffb28 100644 --- a/modern/src/resources/l10n/hi.json +++ b/modern/src/resources/l10n/hi.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "स्वीकृति दें", "sharedCancel": "रद्द करें", + "sharedCopy": "Copy", "sharedAdd": "जोड़ें", "sharedEdit": "संपादित करें", "sharedRemove": "हटाएं", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "यूआई: घटनाओं को अक्षम करें", - "attributeUiDisableVehicleFetures": "यूआई: वाहन विशेषताएं अक्षम करें", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "यूआई: ड्राइवर्स को अक्षम करें", "attributeUiDisableComputedAttributes": "यूआई: गणना गुणों को अक्षम करें", "attributeUiDisableCalendars": "यूआई: कैलेंडर अक्षम करें", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "मानचित्र", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/hr.json b/modern/src/resources/l10n/hr.json index 910557eb..7682d886 100644 --- a/modern/src/resources/l10n/hr.json +++ b/modern/src/resources/l10n/hr.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Postavi", "sharedCancel": "Poništi", + "sharedCopy": "Copy", "sharedAdd": "Dodaj", "sharedEdit": "Uredi", "sharedRemove": "Ukloni", @@ -99,7 +100,6 @@ "sharedImport": "Uvoz", "sharedColumns": "Stupac", "sharedDropzoneText": "Dovuci i pusti datoteku ovdje ili klikni", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Jednostavno", "calendarRecurrence": "Ponavljajuće", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Onemogući atribute", "attributeUiDisableGroups": "UI: Onemogući grupe", "attributeUiDisableEvents": "UI: Isključi događaje", - "attributeUiDisableVehicleFetures": "UI: Isključi značajke vozila", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Isključi vozače", "attributeUiDisableComputedAttributes": "UI: Isključi izračunate atribute", "attributeUiDisableCalendars": "UI: Isključi kalendare", @@ -325,6 +325,7 @@ "serverLogo": "Logo", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Karta", "mapActive": "Aktivna karta", "mapOverlay": "Prekrivajuća karta", diff --git a/modern/src/resources/l10n/hu.json b/modern/src/resources/l10n/hu.json index 71d3f8ad..d12cda50 100644 --- a/modern/src/resources/l10n/hu.json +++ b/modern/src/resources/l10n/hu.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Beállít", "sharedCancel": "Mégse", + "sharedCopy": "Copy", "sharedAdd": "Hozzáadás", "sharedEdit": "Szerkesztés", "sharedRemove": "Törlés", @@ -99,7 +100,6 @@ "sharedImport": "Importálás", "sharedColumns": "Oszlopok", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Csoportok letiltása", "attributeUiDisableEvents": "UI: Események letiltása", - "attributeUiDisableVehicleFetures": "UI: Eszköz képességeinek leállítása", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Sofőrök letiltása", "attributeUiDisableComputedAttributes": "UI: Számított attribútumok letiltása", "attributeUiDisableCalendars": "UI: Naptárak letiltása", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Térkép", "mapActive": "Aktív térképek", "mapOverlay": "Térkép réteg", diff --git a/modern/src/resources/l10n/id.json b/modern/src/resources/l10n/id.json index b10be72f..8e54667f 100644 --- a/modern/src/resources/l10n/id.json +++ b/modern/src/resources/l10n/id.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Setel", "sharedCancel": "Batal", + "sharedCopy": "Copy", "sharedAdd": "Tambah", "sharedEdit": "Ubah", "sharedRemove": "Hapus", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI : Nonaktifkan Fitur Kendaraan", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI : Nonaktifkan Antarmuka", "attributeUiDisableComputedAttributes": "UI : Nonaktifkan Computed Attributes", "attributeUiDisableCalendars": "UI : Nonaktifkan Kalender", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Peta", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/it.json b/modern/src/resources/l10n/it.json index c0a2ab43..7153f387 100644 --- a/modern/src/resources/l10n/it.json +++ b/modern/src/resources/l10n/it.json @@ -5,6 +5,7 @@ "sharedUpload": "Carica", "sharedSet": "Imposta", "sharedCancel": "Annulla", + "sharedCopy": "Copy", "sharedAdd": "Aggiungi", "sharedEdit": "Modifica", "sharedRemove": "Rimuovi", @@ -99,7 +100,6 @@ "sharedImport": "Importa", "sharedColumns": "Colonne", "sharedDropzoneText": "Trascina un file qui o clicca", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Semplice", "calendarRecurrence": "Ricorrente", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disattiva Attributi", "attributeUiDisableGroups": "UI: Disattiva Gruppi", "attributeUiDisableEvents": "UI: Disattiva Eventi", - "attributeUiDisableVehicleFetures": "UI: Disattiva Caratteristiche Veicolo", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disattiva Autisti", "attributeUiDisableComputedAttributes": "UI: Disattiva Attributi Calcolati", "attributeUiDisableCalendars": "UI: Disattiva Calendari", @@ -325,6 +325,7 @@ "serverLogo": "Immagine Logo", "serverLogoInverted": "Immagine Logo Invertita", "serverChangeDisable": "Disattiva cambiamento Server", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mappa", "mapActive": "Mappe Attive", "mapOverlay": "Soprapposizione Mappa", diff --git a/modern/src/resources/l10n/ja.json b/modern/src/resources/l10n/ja.json index 82845694..a7b2784c 100644 --- a/modern/src/resources/l10n/ja.json +++ b/modern/src/resources/l10n/ja.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "設定", "sharedCancel": "キャンセル", + "sharedCopy": "Copy", "sharedAdd": "追加", "sharedEdit": "編集", "sharedRemove": "削除", @@ -99,7 +100,6 @@ "sharedImport": "インポート", "sharedColumns": "列", "sharedDropzoneText": "ファイルをドラッグ&ドロップするかクリック", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "シンプル", "calendarRecurrence": "再発", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI:属性を無効にする", "attributeUiDisableGroups": "UI:グループを無効にする", "attributeUiDisableEvents": "UI: イベントを無効にする", - "attributeUiDisableVehicleFetures": "UI: 車両の機能を無効にする", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: ドライバーを無効にする", "attributeUiDisableComputedAttributes": "UI: 計算された属性を無効にする", "attributeUiDisableCalendars": "UI: カレンダーを無効にする", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "地図", "mapActive": "アクティブなマップ", "mapOverlay": "マップのオーバーレイ", diff --git a/modern/src/resources/l10n/ka.json b/modern/src/resources/l10n/ka.json index ed77fda8..adc0da5c 100644 --- a/modern/src/resources/l10n/ka.json +++ b/modern/src/resources/l10n/ka.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "დაყენება", "sharedCancel": "უარყოფა", + "sharedCopy": "Copy", "sharedAdd": "დამატება", "sharedEdit": "შეცვლა", "sharedRemove": "წაშლა", @@ -99,7 +100,6 @@ "sharedImport": "იმპორტი", "sharedColumns": "სვეტი", "sharedDropzoneText": "გადმოათრიეთ ფაილი აქ ან დააწკაპუნეთ", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "მარტივი", "calendarRecurrence": "რეციდივი", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "მომსხმარებლის ინტერფეისი: გამორთეთ ატრიბუტები", "attributeUiDisableGroups": "მომსხმარებლის ინტერფეისი: ჯგუფების გამორთვა", "attributeUiDisableEvents": "UI: მოვლენების გამორთვა", - "attributeUiDisableVehicleFetures": "UI: ავტომობილის მახასიათებლების გამორთვა", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: მძღოლების გამორთვა", "attributeUiDisableComputedAttributes": "UI: გამოთვლითი ატრიბუტების გამორთვა", "attributeUiDisableCalendars": "UI: კალენდრის გამორთვა", @@ -325,6 +325,7 @@ "serverLogo": "ლოგოს სურათი", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "რუკა", "mapActive": "აქტიური რუკა", "mapOverlay": "რუკის დაფარვა", diff --git a/modern/src/resources/l10n/kk.json b/modern/src/resources/l10n/kk.json index faa8dd15..b887b557 100644 --- a/modern/src/resources/l10n/kk.json +++ b/modern/src/resources/l10n/kk.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Орнату", "sharedCancel": "Болдырмау", + "sharedCopy": "Copy", "sharedAdd": "Енгізу", "sharedEdit": "Түзету", "sharedRemove": "Жою", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Карта", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/km.json b/modern/src/resources/l10n/km.json index ac7fae46..f14c53c3 100644 --- a/modern/src/resources/l10n/km.json +++ b/modern/src/resources/l10n/km.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "កំណត់", "sharedCancel": "បោះបង់", + "sharedCopy": "Copy", "sharedAdd": "បន្ថែម", "sharedEdit": "កែសម្រួល", "sharedRemove": "យកចេញ", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "ផែនទី", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/ko.json b/modern/src/resources/l10n/ko.json index 9db6e1b4..dc893b73 100644 --- a/modern/src/resources/l10n/ko.json +++ b/modern/src/resources/l10n/ko.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "확인", "sharedCancel": "취소", + "sharedCopy": "Copy", "sharedAdd": "추가", "sharedEdit": "편집", "sharedRemove": "제거", @@ -99,7 +100,6 @@ "sharedImport": "불러오기", "sharedColumns": "열", "sharedDropzoneText": "파일을 가져오거나 여기를 누르세요.", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "심플", "calendarRecurrence": "반복 주기", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: 속성 비활성화", "attributeUiDisableGroups": "UI: 그룹 비활성화", "attributeUiDisableEvents": "UI: 이벤트 비활성화", - "attributeUiDisableVehicleFetures": "UI: 기기 Fetures 비활성화", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: 운전자 비활성화", "attributeUiDisableComputedAttributes": "UI: 자동화 속성 비활성화", "attributeUiDisableCalendars": "UI: 달력 비활성화", @@ -325,6 +325,7 @@ "serverLogo": "로고 이미지", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "지도", "mapActive": "활성화된 지도", "mapOverlay": "지도 오버레이", diff --git a/modern/src/resources/l10n/lo.json b/modern/src/resources/l10n/lo.json index deedec13..e23e2a24 100644 --- a/modern/src/resources/l10n/lo.json +++ b/modern/src/resources/l10n/lo.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Set", "sharedCancel": "ຍົກເລີກ", + "sharedCopy": "Copy", "sharedAdd": "ເພີ່ມ", "sharedEdit": "ແກ້ໄຂ", "sharedRemove": "ລົບອອກ", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "ແຜ່ນທີ", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/lt.json b/modern/src/resources/l10n/lt.json index f4d0c6f3..c3ecf93d 100644 --- a/modern/src/resources/l10n/lt.json +++ b/modern/src/resources/l10n/lt.json @@ -5,6 +5,7 @@ "sharedUpload": "Įkelti", "sharedSet": "Nustatyti", "sharedCancel": "Atšaukti", + "sharedCopy": "Kopijuoti", "sharedAdd": "Pridėti", "sharedEdit": "Redaguoti", "sharedRemove": "Ištrinti", @@ -99,8 +100,7 @@ "sharedImport": "Importuoti", "sharedColumns": "Stulpeliai", "sharedDropzoneText": "Nutempkite failą čia arba paspauskite", - "sharedLinkCopied": "Nuoroda nukopijuota", - "sharedLogs": "Logs", + "sharedLogs": "Žurnalai", "calendarSimple": "Paprastas", "calendarRecurrence": "Pasikartojimas", "calendarOnce": "Vienkartinis", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: išjungti atributus", "attributeUiDisableGroups": "UI: išjungti grupes", "attributeUiDisableEvents": "UI: Išjungti įvykius", - "attributeUiDisableVehicleFetures": "UI: Išjungti mašinos funkcijas", + "attributeUiDisableVehicleFeatures": "UI: Išjungti automobilio funkcijas", "attributeUiDisableDrivers": "UI: Išjungti vairuotojus", "attributeUiDisableComputedAttributes": "UI: Išjungti apskaičiuotus parametrus", "attributeUiDisableCalendars": "UI: Išjungti kalendorius", @@ -187,8 +187,8 @@ "loginUpdateSuccess": "Naujas slaptažodis sukurtas", "loginLogout": "Atsijungti", "loginLogo": "Logotipas", - "loginTotpCode": "One-time Password Code", - "loginTotpKey": "One-time Password Key", + "loginTotpCode": "Vienkartinio slaptažodžio kodas", + "loginTotpKey": "Vienkartinio slaptažodžio raktas", "devicesAndState": "Prietaisai ir Statusas", "deviceSelected": "Pasirinktas įrenginys", "deviceTitle": "Prietaisai", @@ -208,7 +208,7 @@ "deviceStatusUnknown": "Nežinoma", "deviceRegisterFirst": "Registruokite savo pirmą įrenginį", "deviceIdentifierHelp": "IMEI, serijinis numeris arba identifikacinis ID. Turi atitikti įrenginio ID siunčiamą į serverį.", - "deviceShare": "Share Device", + "deviceShare": "Dalintis įrenginiu", "groupDialog": "Grupė", "groupParent": "Grupė", "groupNoGroup": "Nenurodyta grupė", @@ -227,11 +227,11 @@ "settingsAppVersion": "App versija", "settingsConnection": "Susijungimas", "settingsDarkMode": "Tamsi tema", - "settingsTotpEnable": "Enable One-time Password", - "settingsTotpForce": "Force One-time Password", - "settingsServiceWorkerUpdateInterval": "ServiceWorker Update Interval", - "settingsUpdateAvailable": "There is an update available.", - "settingsSupport": "Support", + "settingsTotpEnable": "Įjungti vienkartinį slaptažodį", + "settingsTotpForce": "Priverstinis vienkartinis slaptažodis", + "settingsServiceWorkerUpdateInterval": "ServiceWorker atnaujinimo intervalas", + "settingsUpdateAvailable": "Yra atnaujinimas.", + "settingsSupport": "Pagalba", "reportTitle": "Ataskaitos", "reportScheduled": "Suplanuotos ataskaitos", "reportDevice": "Prietaisas", @@ -325,6 +325,7 @@ "serverLogo": "Logo vaizdas", "serverLogoInverted": "Invertuotas logo vaizdas", "serverChangeDisable": "Uždrausti keisti serverį", + "serverDisableShare": "Išjungti dalinimasi įrenginiais", "mapTitle": "Žemėlapis", "mapActive": "Aktyvūs žemėlapiai", "mapOverlay": "Žemėlapių sluoksniai", @@ -358,7 +359,7 @@ "mapWikimedia": "Wikimedia", "mapOrdnanceSurvey": "Ordnance Survey", "mapMapboxStreets": "Mapbox gatvės", - "mapMapboxStreetsDark": "Mapbox Streets Dark", + "mapMapboxStreetsDark": "Tamsus Mapbox Streets", "mapMapboxOutdoors": "Mapbox Outdoors", "mapMapboxSatellite": "Mapbox Palydovinis", "mapMapboxKey": "Mapbox Access Token", @@ -453,7 +454,7 @@ "eventDeviceUnknown": "Būsena nežinoma", "eventDeviceOffline": "Būsena atsijungęs", "eventDeviceInactive": "Įrenginys neaktyvus", - "eventQueuedCommandSent": "Queued command sent", + "eventQueuedCommandSent": "Išsiųsta komanda eilėje", "eventDeviceMoving": "Įrenginys juda", "eventDeviceStopped": "Įrenginys sustojo", "eventDeviceOverspeed": "Greičio limitas viršytas", @@ -574,7 +575,7 @@ "categoryBoat": "Valtis", "categoryBus": "Autobusas", "categoryCar": "Automobilis", - "categoryCamper": "Camper", + "categoryCamper": "Kemperis", "categoryCrane": "Kranas", "categoryHelicopter": "Sraigtasparnis", "categoryMotorcycle": "Motociklas", diff --git a/modern/src/resources/l10n/lv.json b/modern/src/resources/l10n/lv.json index 3743b1be..6eb0d349 100644 --- a/modern/src/resources/l10n/lv.json +++ b/modern/src/resources/l10n/lv.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Iestatīt", "sharedCancel": "Atcelt", + "sharedCopy": "Copy", "sharedAdd": "Pievienot", "sharedEdit": "Rediģēt", "sharedRemove": "Dzēst", @@ -99,7 +100,6 @@ "sharedImport": "Importēt", "sharedColumns": "Kolonnas", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Atslēgt notikumus", - "attributeUiDisableVehicleFetures": "UI: Atslēgt transporta iespējas", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Atslēgt vadītājus", "attributeUiDisableComputedAttributes": "UI: Atslēgt aprēķinātos atribūtus", "attributeUiDisableCalendars": "UI: Atslēgt kalendārus", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Karte", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/mk.json b/modern/src/resources/l10n/mk.json new file mode 100644 index 00000000..168cc1f2 --- /dev/null +++ b/modern/src/resources/l10n/mk.json @@ -0,0 +1,596 @@ +{ + "sharedLoading": "Вчитување...", + "sharedHide": "Сокриј", + "sharedSave": "Зачувај", + "sharedUpload": "Прикачи", + "sharedSet": "Постави", + "sharedCancel": "Откажи", + "sharedCopy": "Копирај", + "sharedAdd": "Додади", + "sharedEdit": "Уреди", + "sharedRemove": "Отстрани", + "sharedRemoveConfirm": "Дали да се отстрани предметот?", + "sharedNoData": "Нема податоци", + "sharedYes": "Да", + "sharedNo": "Не", + "sharedKm": "km", + "sharedMi": "mi", + "sharedNmi": "nmi", + "sharedMeters": "m", + "sharedFeet": "ft", + "sharedKn": "kn", + "sharedKmh": "km/h", + "sharedMph": "mph", + "sharedHour": "Час", + "sharedMinute": "Минута", + "sharedSecond": "Секунда", + "sharedDays": "денови", + "sharedHours": "часови", + "sharedMinutes": "минути", + "sharedDecimalDegrees": "Децимални Степени", + "sharedDegreesDecimalMinutes": "Степени Децимални Минути", + "sharedDegreesMinutesSeconds": "Степени Минути Секунди", + "sharedName": "Име", + "sharedDescription": "Опис", + "sharedSearch": "Пребарување", + "sharedIconScale": "Размер на икони", + "sharedGeofence": "Географска зона", + "sharedGeofences": "Географски зони", + "sharedCreateGeofence": "Креирај Географска зона", + "sharedNotifications": "Известувања", + "sharedNotification": "Известување", + "sharedAttributes": "Атрибути", + "sharedAttribute": "Атрибут", + "sharedDrivers": "Возачи", + "sharedDriver": "Возач", + "sharedArea": "Област", + "sharedSound": "Звук за известување", + "sharedType": "Тип", + "sharedDistance": "Растојание", + "sharedHourAbbreviation": "ч", + "sharedMinuteAbbreviation": "м", + "sharedSecondAbbreviation": "с", + "sharedVoltAbbreviation": "V", + "sharedLiterAbbreviation": "I", + "sharedGallonAbbreviation": "gal", + "sharedLiter": "Литар", + "sharedImpGallon": "Imp. Gallon", + "sharedUsGallon": "U.S. Gallon", + "sharedLiterPerHourAbbreviation": "л/ч", + "sharedGetMapState": "Состојба на Мапа", + "sharedComputedAttribute": "Пресметан Атрибут", + "sharedComputedAttributes": "Пресметани Атрибути", + "sharedCheckComputedAttribute": "Провери го пресметаниот атрибут", + "sharedExpression": "Израз", + "sharedDevice": "Уред", + "sharedTest": "Тест", + "sharedTestNotification": "Испрати тест известување", + "sharedTestNotificators": "Тест Канали", + "sharedTestExpression": "Тестирај Изразување", + "sharedCalendar": "Календар", + "sharedCalendars": "Календари", + "sharedFile": "Фајл", + "sharedSearchDevices": "Пребарај Уреди", + "sharedSortBy": "Подреди по", + "sharedFilterMap": "Филтер на Мапа", + "sharedSelectFile": "Избери фајл", + "sharedPhone": "Телефон", + "sharedRequired": "Задолжително", + "sharedPreferences": "Подесувања", + "sharedPermissions": "Дозволи", + "sharedConnections": "Конекции", + "sharedExtra": "Екстра", + "sharedPrimary": "Примарен", + "sharedSecondary": "Секундарен", + "sharedTypeString": "Стринг", + "sharedTypeNumber": "Број", + "sharedTypeBoolean": "Булеан", + "sharedTimezone": "Временска зона", + "sharedInfoTitle": "Инфо", + "sharedSavedCommand": "Зачувана Команда", + "sharedSavedCommands": "Зачувани Команди", + "sharedNew": "Нов...", + "sharedShowAddress": "Прикажи Адреса", + "sharedShowDetails": "Повеќе Детали", + "sharedDisabled": "Оневозможено", + "sharedMaintenance": "Одржување", + "sharedDeviceAccumulators": "Акумулатори", + "sharedAlarms": "Аларми", + "sharedLocation": "Локација", + "sharedImport": "Импортирај", + "sharedColumns": "Колони", + "sharedDropzoneText": "Повлечи фајл овде или кликни", + "sharedLogs": "Логови", + "calendarSimple": "Едноставно", + "calendarRecurrence": "Повторување", + "calendarOnce": "Еднаш", + "calendarDaily": "Дневно", + "calendarWeekly": "Неделно", + "calendarMonthly": "Месечно", + "calendarDays": "Денови", + "calendarSunday": "Недела", + "calendarMonday": "Понеделник", + "calendarTuesday": "Вторник", + "calendarWednesday": "Среда", + "calendarThursday": "Четврток", + "calendarFriday": "Петок", + "calendarSaturday": "Сабота", + "attributeShowGeofences": "Прикажи Географски зони", + "attributeSpeedLimit": "Ограничување на брзината", + "attributeFuelDropThreshold": "Граница на прелиено гориво", + "attributeFuelIncreaseThreshold": "Граница на надополнето гориво", + "attributePolylineDistance": "Повеќелиниска оддалеченост", + "attributeReportIgnoreOdometer": "Извештај: Игнорирај го одометарот", + "attributeWebReportColor": "Веб: Боја на извештај", + "attributeDevicePassword": "Лозинка на уредот", + "attributeDeviceImage": "Слика на уредот", + "attributeDeviceInactivityStart": "Почеток на неактивност на уредот", + "attributeDeviceInactivityPeriod": "Период на неактивност на уредот", + "attributeProcessingCopyAttributes": "Процесирање: Копирање на атрибути", + "attributeColor": "Боја", + "attributeWebLiveRouteLength": "Веб: Должина на рута", + "attributeWebSelectZoom": "Веб: Зумирај го селектираното", + "attributeWebMaxZoom": "Веб: Максимално зумирање", + "attributeTelegramChatId": "Телеграм ID", + "attributePushoverUserKey": "Прoследи кориснички клуч", + "attributePushoverDeviceNames": "Проследи ги имињата на уредите", + "attributeMailSmtpHost": "Меил: SMTP хост", + "attributeMailSmtpPort": "Меил: SMTP порт", + "attributeMailSmtpStarttlsEnable": "Меил: Овозможи SMTP STARTTLS", + "attributeMailSmtpStarttlsRequired": "Меил: SMTP STARTTLS е потребен", + "attributeMailSmtpSslEnable": "Меил: Овозможи SMTP SSL", + "attributeMailSmtpSslTrust": "Меил: SMTP SSL Trust", + "attributeMailSmtpSslProtocols": "Меил: SMTP SSL протоколи", + "attributeMailSmtpFrom": "Меил: SMTP Испраќач", + "attributeMailSmtpAuth": "Меил: Овозможи SMTP автентикација", + "attributeMailSmtpUsername": "Меил: SMTP корисничко име", + "attributeMailSmtpPassword": "Меил: SMTP лозинка", + "attributeUiDisableAttributes": "UI: Оневозможи атрибути", + "attributeUiDisableGroups": "UI: Оневозможи групи", + "attributeUiDisableEvents": "UI: Оневозможи настани", + "attributeUiDisableVehicleFeatures": "UI: Оневозможи карактеристики на возила", + "attributeUiDisableDrivers": "UI: Оневозможи возачи", + "attributeUiDisableComputedAttributes": "UI: Оневозможи пресметани атрибути", + "attributeUiDisableCalendars": "UI: Оневозможи календари", + "attributeUiDisableMaintenance": "UI: Оневозможи одржување", + "attributeUiHidePositionAttributes": "UI: Сокриј атрибути на позиција", + "attributeUiDisableLoginLanguage": "UI: Оневозможи промена на јазик при најава", + "attributeNotificationTokens": "Токени за известување", + "attributePopupInfo": "Popup инфо", + "errorTitle": "Грешка", + "errorGeneral": "Невалидни параметри или кршење на ограничувањето", + "errorConnection": "Грешка во комуникација", + "errorSocket": "Web socket грешка во комуникација", + "errorZero": "Не може да биди нула", + "userEmail": "e-mail", + "userPassword": "Лозинка", + "userAdmin": "Администратор", + "userRemember": "Запамти", + "userExpirationTime": "Истекува на", + "userDeviceLimit": "Максимален број на уреди", + "userUserLimit": "Максимален број на корисници", + "userDeviceReadonly": "Уредот е Readonly", + "userLimitCommands": "Ограничи команди", + "userDisableReports": "Оневозможи извештаи", + "userFixedEmail": "Забрани промена на e-mail", + "userToken": "Токен", + "userDeleteAccount": "Избриши Акаунт", + "loginTitle": "Најава", + "loginLanguage": "Јазик", + "loginReset": "Ресетирај лозинка", + "loginRegister": "Регистрација", + "loginLogin": "Најава", + "loginOpenId": "Најава со OpenID", + "loginFailed": "невалидна e-mail адреса или лозинка", + "loginCreated": "Нов корисник е регистриран", + "loginResetSuccess": "Проверете ја вашата e-mail адреса", + "loginUpdateSuccess": "Новата лозинка е поставена", + "loginLogout": "Одјава", + "loginLogo": "Лого", + "loginTotpCode": "Еднократен код за лозинка", + "loginTotpKey": "Еднократен клуч за лозинка", + "devicesAndState": "Уреди и статус", + "deviceSelected": "Избран уред", + "deviceTitle": "Уреди", + "devicePrimaryInfo": "Назив на уред", + "deviceSecondaryInfo": "Детали за уред", + "deviceIdentifier": "Идентификатор", + "deviceModel": "Модел", + "deviceContact": "Контакт", + "deviceCategory": "Категорија", + "deviceLastUpdate": "Последна промена", + "deviceCommand": "Команда", + "deviceFollow": "Прати", + "deviceTotalDistance": "Вкупно растојание", + "deviceStatus": "Статус", + "deviceStatusOnline": "Достапен", + "deviceStatusOffline": "Недостапен", + "deviceStatusUnknown": "Непознато", + "deviceRegisterFirst": "Регистрирај го твојот прв уред", + "deviceIdentifierHelp": "IMEI, сериски број или друг ID. Треба да биде ист со уредот кој се поврзува на сервер", + "deviceShare": "Сподели уред", + "groupDialog": "Група", + "groupParent": "Група", + "groupNoGroup": "Нема група", + "settingsTitle": "Подесувања", + "settingsUser": "Акаунт", + "settingsGroups": "Групи", + "settingsServer": "Сервер", + "settingsUsers": "Корисници", + "settingsDistanceUnit": "Единица за растојание", + "settingsAltitudeUnit": "Единица за висина", + "settingsSpeedUnit": "Единица за брзина", + "settingsVolumeUnit": "Единица за волумен", + "settingsTwelveHourFormat": "12-часовен формат", + "settingsCoordinateFormat": "Формат за координати", + "settingsServerVersion": "Верзија на сервер", + "settingsAppVersion": "Верзија на апликација", + "settingsConnection": "Конекција", + "settingsDarkMode": "Dark мод", + "settingsTotpEnable": "Овозможи еднократна лозинка", + "settingsTotpForce": "Форсирај еднократна лозинка", + "settingsServiceWorkerUpdateInterval": "Интервал на ажурирање за ServiceWorker", + "settingsUpdateAvailable": "Достапна е нова верзија", + "settingsSupport": "Поддршка", + "reportTitle": "Извештаи", + "reportScheduled": "Редовни извештаи", + "reportDevice": "Уред", + "reportGroup": "Група", + "reportFrom": "Од", + "reportTo": "До", + "reportShow": "Прикажи", + "reportClear": "Избриши", + "linkGoogleMaps": "Google мапи", + "linkAppleMaps": "Apple мапи", + "linkStreetView": "Уличен поглед мод", + "positionFixTime": "Време за фиксирање", + "positionDeviceTime": "Време на уредот", + "positionServerTime": "Време на сервер", + "positionValid": "Валидно", + "positionAccuracy": "Прецизност", + "positionLatitude": "Географска ширина", + "positionLongitude": "Географска должина", + "positionAltitude": "Висина", + "positionSpeed": "Брзина", + "positionCourse": "Правец", + "positionAddress": "Адреса", + "positionProtocol": "Протокол", + "positionDistance": "Растојание", + "positionRpm": "Обртаи", + "positionFuel": "Гориво", + "positionPower": "Напојување", + "positionBattery": "Батерија", + "positionRaw": "Сирови податоци", + "positionIndex": "Index", + "positionHdop": "HDOP", + "positionVdop": "VDOP", + "positionPdop": "PDOP", + "positionSat": "Сателити", + "positionSatVisible": "Видливи сателити", + "positionRssi": "RSSI", + "positionGps": "ГПС", + "positionRoaming": "Роаминг", + "positionEvent": "Настан", + "positionAlarm": "Аларм", + "positionStatus": "Статус", + "positionOdometer": "Одометар", + "positionServiceOdometer": "Сервисен одометар", + "positionTripOdometer": "Патен одометар", + "positionHours": "Часови", + "positionSteps": "Чекори", + "positionInput": "Влез", + "positionHeartRate": "Пулс", + "positionOutput": "Излез", + "positionBatteryLevel": "Ниво на батерија", + "positionFuelConsumption": "Потрошувачка на гориво", + "positionRfid": "RFID", + "positionVersionFw": "Верзија на фирмвер", + "positionVersionHw": "Верзија на хардвер", + "positionIgnition": "Контакт-IGN", + "positionFlags": "Ознаки", + "positionCharge": "Полнење", + "positionIp": "IP", + "positionArchive": "Архива", + "positionVin": "Бр. шасија", + "positionApproximate": "Приближно", + "positionThrottle": "Гас", + "positionMotion": "Движење", + "positionArmed": "Активен", + "positionAcceleration": "Забрзување", + "positionTemp": "Температура", + "positionDeviceTemp": "Температура на уред", + "positionCoolantTemp": "Температура на разладен елемент", + "positionOperator": "Оператор", + "positionCommand": "Команда", + "positionBlocked": "Блокирано", + "positionDtcs": "DTCs", + "positionObdSpeed": "OBD Брзина", + "positionObdOdometer": "OBD одометар", + "positionDrivingTime": "Време на возење", + "positionDriverUniqueId": "ID на возач", + "positionCard": "Картичка", + "positionImage": "Слика", + "positionVideo": "Видео", + "positionAudio": "Аудио", + "serverTitle": "Подесувања за сервер", + "serverZoom": "Зумирање", + "serverRegistration": "Регистрација", + "serverReadonly": "Само преглед", + "serverForceSettings": "Форсирани поставки", + "serverAnnouncement": "Објава", + "serverName": "Име на сервер", + "serverDescription": "Опис на сервер", + "serverColorPrimary": "Примарна боја", + "serverColorSecondary": "Секундарна боја", + "serverLogo": "Слика за лого", + "serverLogoInverted": "Инверзна слика за лого", + "serverChangeDisable": "Оневозможи промена на сервер", + "serverDisableShare": "Оневозможи споделување на уреди", + "mapTitle": "Мапа", + "mapActive": "Активни мапи", + "mapOverlay": "Преклопени мапи", + "mapOverlayCustom": "Прилагодено преклопување", + "mapOpenSeaMap": "OpenSeaMap", + "mapOpenRailwayMap": "OpenRailwayMap", + "mapOpenWeatherKey": "OpenWeather API клуч", + "mapOpenWeatherClouds": "OpenWeather облаци", + "mapOpenWeatherPrecipitation": "OpenWeather врнежи", + "mapOpenWeatherPressure": "OpenWeather атм. притисок", + "mapOpenWeatherWind": "OpenWeather Ветер", + "mapOpenWeatherTemperature": "OpenWeather Температура", + "mapLayer": "Тип на мапа", + "mapCustom": "Прилагодено (XYZ)", + "mapCustomArcgis": "Прилагодено (ArcGIS)", + "mapCustomLabel": "Прилагодена мапа", + "mapCarto": "Carto Basemaps", + "mapOsm": "OpenStreetMap", + "mapGoogleRoad": "Google патишта", + "mapGoogleHybrid": "Google хибрид", + "mapGoogleSatellite": "Google сателити", + "mapOpenTopoMap": "OpenTopoMap", + "mapBingKey": "Bing Maps клуч", + "mapBingRoad": "Bing Maps патишта", + "mapBingAerial": "Bing Maps воздушна", + "mapBingHybrid": "Bing Maps хибрид", + "mapBaidu": "Baidu", + "mapAutoNavi": "AutoNavi", + "mapYandexMap": "Yandex Map", + "mapYandexSat": "Yandex сателит", + "mapWikimedia": "Wikimedia", + "mapOrdnanceSurvey": "Ordnance Survey", + "mapMapboxStreets": "Mapbox Streets", + "mapMapboxStreetsDark": "Mapbox Streets Dark", + "mapMapboxOutdoors": "Mapbox Outdoors", + "mapMapboxSatellite": "Mapbox сателит", + "mapMapboxKey": "Mapbox Токен за пристап", + "mapMapTilerBasic": "MapTiler основна", + "mapMapTilerHybrid": "MapTiler хибрид", + "mapMapTilerKey": "MapTiler API клуч", + "mapLocationIqStreets": "LocationIQ Streets", + "mapLocationIqDark": "LocationIQ Dark", + "mapLocationIqKey": "LocationIQ токен за пристап", + "mapTomTomBasic": "TomTom основна", + "mapTomTomFlow": "TomTom сообраќај", + "mapTomTomIncidents": "TomTom инциденти во сообраќај", + "mapTomTomKey": "TomTom API клуч", + "mapHereBasic": "Here основна", + "mapHereHybrid": "Here хибрид", + "mapHereSatellite": "Here сателит", + "mapHereFlow": "Here сообраќај", + "mapHereKey": "Here API клуч", + "mapShapePolygon": "Полигон", + "mapShapeCircle": "Круг", + "mapShapePolyline": "Полилинија", + "mapLiveRoutes": "Рути во живо", + "mapDirection": "Покажи насоки", + "mapCurrentLocation": "Моментална локација", + "mapPoiLayer": "Слој за точки од интерес", + "mapClustering": "Организација на маркери", + "mapOnSelect": "Прикажи мапа при селекција", + "mapDefault": "Предефинирана мапа", + "stateTitle": "Состојба", + "stateName": "Атрибут", + "stateValue": "Вредност", + "commandTitle": "Команда", + "commandSend": "Испрати", + "commandSent": "Командата е испратена", + "commandQueued": "Командата е на чекање", + "commandUnit": "Единица", + "commandCustom": "Прилагодена команда", + "commandDeviceIdentification": "Идентификација на уред", + "commandPositionSingle": "Единечно известување", + "commandPositionPeriodic": "Периодично известување", + "commandPositionStop": "Исклучи известување", + "commandEngineStop": "Изгаснат мотор", + "commandEngineResume": "Мотор во работа", + "commandAlarmArm": "Активирај аларм", + "commandAlarmDisarm": "Деактивирај аларм", + "commandAlarmDismiss": "Откажи аларм", + "commandSetTimezone": "Постави временска зона", + "commandRequestPhoto": "Побарај фотографија", + "commandPowerOff": "Исклучи уред", + "commandRebootDevice": "Рестартирај уред", + "commandFactoryReset": "Фабрични подесувања", + "commandSendSms": "Испрати СМС", + "commandSendUssd": "Испрати USSD", + "commandSosNumber": "Постави SOS број", + "commandSilenceTime": "Постави тивко време", + "commandSetPhonebook": "Постави Контакти", + "commandVoiceMessage": "Говорна порака", + "commandOutputControl": "Контрола на излез", + "commandVoiceMonitoring": "Гласовен мониторинг", + "commandSetAgps": "Постави АГПС", + "commandSetIndicator": "Постави индикатор", + "commandConfiguration": "Конфигурација", + "commandGetVersion": "Провери верзија", + "commandFirmwareUpdate": "Надградба на фирмвер", + "commandSetConnection": "Постави конекција", + "commandSetOdometer": "Постави одометар", + "commandGetModemStatus": "Провери статус на модем", + "commandGetDeviceStatus": "Провери статус на уред", + "commandSetSpeedLimit": "Постави ограничување на брзина", + "commandModePowerSaving": "Економичен мод", + "commandModeDeepSleep": "Deep Sleep мод", + "commandAlarmGeofence": "Постави аларм за географска зона", + "commandAlarmBattery": "Постави аларм за батерија", + "commandAlarmSos": "Постави СОС аларм", + "commandAlarmRemove": "Поставки за бришење на аларм", + "commandAlarmClock": "Постави временски аларм", + "commandAlarmSpeed": "Постави аларм за брзина", + "commandAlarmFall": "Постави аларм за пад", + "commandAlarmVibration": "Постави аларм за вибрации", + "commandFrequency": "Фреквенција", + "commandTimezone": "Отстапување од временска зона", + "commandMessage": "Порака", + "commandRadius": "Радиус", + "commandEnable": "Овозможи", + "commandData": "Податоци", + "commandIndex": "Индекс", + "commandPhone": "Телефонски број", + "commandServer": "Сервер", + "commandPort": "Порт", + "eventAll": "Сите настани", + "eventDeviceOnline": "Статус вклучен", + "eventDeviceUnknown": "Статус напознат", + "eventDeviceOffline": "Статус исклучен", + "eventDeviceInactive": "Уредот е неактивен", + "eventQueuedCommandSent": "Испратена команда на чекање", + "eventDeviceMoving": "Уредот е во движење", + "eventDeviceStopped": "Уредот е запрен", + "eventDeviceOverspeed": "Брзината е над дозволената", + "eventDeviceFuelDrop": "Пад на ниво на гориво", + "eventDeviceFuelIncrease": "Дотур на гориво", + "eventCommandResult": "Статус од команда", + "eventGeofenceEnter": "Влез во географска зона", + "eventGeofenceExit": "Излез од географска зона", + "eventAlarm": "Аларм", + "eventIgnitionOn": "Вклучен контакт-IGN", + "eventIgnitionOff": "Исклучен контакт-IGN", + "eventMaintenance": "Потребно е да се изврши одржување", + "eventTextMessage": "Примена е текст порака", + "eventDriverChanged": "Променет возач", + "eventMedia": "Media", + "eventsScrollToLast": "Прелистај до последна", + "eventsSoundEvents": "Звучни настани", + "eventsSoundAlarms": "звучни аларми", + "alarmGeneral": "Општо", + "alarmSos": "СОС", + "alarmVibration": "Вибрација", + "alarmMovement": "Движење", + "alarmLowspeed": "Мала брзина", + "alarmOverspeed": "Прекорачување на брзината", + "alarmFallDown": "Пад", + "alarmLowPower": "Слаб напон", + "alarmLowBattery": "Ниско ниво на батерија", + "alarmFault": "дефект, грешка", + "alarmPowerOff": "Исклучи", + "alarmPowerOn": "Уклучи", + "alarmDoor": "Врата", + "alarmLock": "Заклучи", + "alarmUnlock": "Отклучи", + "alarmGeofence": "Географска зона", + "alarmGeofenceEnter": "Влез во географска зона", + "alarmGeofenceExit": "Излез од географска зона", + "alarmGpsAntennaCut": "ГПС антената е исклучена", + "alarmAccident": "Несреќа", + "alarmTow": "Влечи", + "alarmIdle": "Неутрална брзина-лер", + "alarmHighRpm": "Високи обртаи", + "alarmHardAcceleration": "Нагло забрзување", + "alarmHardBraking": "Нагло кочење", + "alarmHardCornering": "Нагло свртување", + "alarmLaneChange": "Промена на траса", + "alarmFatigueDriving": "Возење со замор", + "alarmPowerCut": "Прекин на напојување", + "alarmPowerRestored": "Напојувањето е вратено во функција", + "alarmJamming": "Блокирање", + "alarmTemperature": "Температура", + "alarmParking": "Паркирање", + "alarmBonnet": "Хауба", + "alarmFootBrake": "Кочница", + "alarmFuelLeak": "Истекување на гориво", + "alarmTampering": "Манипулирање", + "alarmRemoving": "Отстранување", + "notificationType": "Тип на известување", + "notificationAlways": "Сите уреди", + "notificationNotificators": "Канали", + "notificatorCommand": "Команда", + "notificatorWeb": "Веб", + "notificatorMail": "е-mail", + "notificatorSms": "СМС", + "notificatorFirebase": "Firebase", + "notificatorTraccar": "Traccar", + "notificatorTelegram": "Телеграм", + "notificatorPushover": "Проследи", + "reportReplay": "Репродукција", + "reportCombined": "Комбинирано", + "reportRoute": "Рута", + "reportEvents": "Настани", + "reportTrips": "Патувања", + "reportStops": "Застанувања", + "reportSummary": "Преглед", + "reportDaily": "Дневен преглед", + "reportChart": "Графикон", + "reportConfigure": "Конфигурирај", + "reportEventTypes": "Типови на настани", + "reportChartType": "Тип на графикон", + "reportShowMarkers": "Покажи маркери", + "reportExport": "Извези", + "reportEmail": "Извештај по е-mail", + "reportSchedule": "Распоред", + "reportPeriod": "Период", + "reportCustom": "Прилагодено", + "reportToday": "Денес", + "reportYesterday": "Вчера", + "reportThisWeek": "Тековна седмица", + "reportPreviousWeek": "Претходна седмица", + "reportThisMonth": "Тековен месец", + "reportPreviousMonth": "Претходен месец", + "reportDeviceName": "Име на уред", + "reportAverageSpeed": "Просечна брзина", + "reportMaximumSpeed": "Максимална брзина", + "reportEngineHours": "Работни саати", + "reportDuration": "Времетраење", + "reportStartDate": "Почетен датум", + "reportStartTime": "Почетно време", + "reportStartAddress": "Почетна адреса", + "reportEndTime": "Крајно време", + "reportEndAddress": "Крајна адреса", + "reportSpentFuel": "Потрошено гориво", + "reportStartOdometer": "Почетна километража", + "reportEndOdometer": "Крајна километража", + "statisticsTitle": "Статистики", + "statisticsCaptureTime": "Време на сликање", + "statisticsActiveUsers": "Активни корисници", + "statisticsActiveDevices": "Активни уреди", + "statisticsRequests": "Барања", + "statisticsMessagesReceived": "Примени пораки", + "statisticsMessagesStored": "Сочувани пораки", + "statisticsGeocoder": "барања од геокодер", + "statisticsGeolocation": "барања од геолокација", + "categoryArrow": "Стрелка", + "categoryDefault": "Основно", + "categoryAnimal": "Животно", + "categoryBicycle": "Велосипед", + "categoryBoat": "Чамец", + "categoryBus": "Автобус", + "categoryCar": "Автомобил", + "categoryCamper": "Кампер", + "categoryCrane": "Кран", + "categoryHelicopter": "Хеликоптер", + "categoryMotorcycle": "Моторцикл", + "categoryOffroad": "Теренец", + "categoryPerson": "Личност", + "categoryPickup": "Пикап", + "categoryPlane": "Авион", + "categoryShip": "Брод", + "categoryTractor": "Трактор", + "categoryTrain": "Воз", + "categoryTram": "Трамвај", + "categoryTrolleybus": "Тролејбус", + "categoryTruck": "Камион", + "categoryVan": "Комбе", + "categoryScooter": "Скутер", + "maintenanceStart": "Почеток", + "maintenancePeriod": "Период" +}
\ No newline at end of file diff --git a/modern/src/resources/l10n/ml.json b/modern/src/resources/l10n/ml.json index 7a5b1e5f..f160ce14 100644 --- a/modern/src/resources/l10n/ml.json +++ b/modern/src/resources/l10n/ml.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "സെറ്റ്", "sharedCancel": "റദ്ദാക്കുക", + "sharedCopy": "Copy", "sharedAdd": "ചേര്ക്കുക", "sharedEdit": "തിരുത്തുക", "sharedRemove": "നീക്കം ചെയ്യുക", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "ഭൂപടം", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/mn.json b/modern/src/resources/l10n/mn.json index 77534a07..b0873e99 100644 --- a/modern/src/resources/l10n/mn.json +++ b/modern/src/resources/l10n/mn.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Тааруулах", "sharedCancel": "Цуцлах", + "sharedCopy": "Copy", "sharedAdd": "Нэмэх", "sharedEdit": "Засах", "sharedRemove": "Хасах", @@ -99,7 +100,6 @@ "sharedImport": "Оруулах", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Map", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/ms.json b/modern/src/resources/l10n/ms.json index ca93e1bd..f02945d9 100644 --- a/modern/src/resources/l10n/ms.json +++ b/modern/src/resources/l10n/ms.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Set", "sharedCancel": "Batal", + "sharedCopy": "Copy", "sharedAdd": "Tambah", "sharedEdit": "Ubah", "sharedRemove": "Hapus", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Peta", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/nb.json b/modern/src/resources/l10n/nb.json index 5ee7f4c5..dce77d22 100644 --- a/modern/src/resources/l10n/nb.json +++ b/modern/src/resources/l10n/nb.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Sett", "sharedCancel": "Avbryt", + "sharedCopy": "Copy", "sharedAdd": "Legg til", "sharedEdit": "Endre", "sharedRemove": "Fjern", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Deaktiver hendelser", - "attributeUiDisableVehicleFetures": "UI: Deaktiver kjøretøysfunksjoner", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Deaktiver sjåfører", "attributeUiDisableComputedAttributes": "UI: Deaktiver utregnede egenskaper", "attributeUiDisableCalendars": "UI: Deaktiver kalendere", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Kart", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/ne.json b/modern/src/resources/l10n/ne.json index e74c0e9e..6c45ecc9 100644 --- a/modern/src/resources/l10n/ne.json +++ b/modern/src/resources/l10n/ne.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "सेट गर्ने ", "sharedCancel": "रद्ध गर्ने ", + "sharedCopy": "Copy", "sharedAdd": "थप्ने", "sharedEdit": "सच्याउने", "sharedRemove": "हटाउने ", @@ -99,7 +100,6 @@ "sharedImport": "आयात", "sharedColumns": "स्तम्भहरू", "sharedDropzoneText": "यहाँ एउटा फाइल तान्नुहोस् र छोड्नुहोस् वा क्लिक गर्नुहोस्", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "सरल", "calendarRecurrence": "पुनरावृत्ति", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: विशेषताहरू असक्षम गर्नुहोस्", "attributeUiDisableGroups": "UI: समूहहरू असक्षम पार्नुहोस्", "attributeUiDisableEvents": "UI: अक्षम घटनाहरू", - "attributeUiDisableVehicleFetures": "UI: अक्षम सवारी बिशेषताहरू", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: अक्षम ड्राईभरहरू", "attributeUiDisableComputedAttributes": "UI: गणना गरिएका विशेषताहरू असक्षम पार्नुहोस्", "attributeUiDisableCalendars": "UI: अक्षम पात्रो", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "नक्शा ", "mapActive": "सक्रिय नक्शा", "mapOverlay": "नक्सा ओभरले", diff --git a/modern/src/resources/l10n/nl.json b/modern/src/resources/l10n/nl.json index 70215452..ac3322ea 100644 --- a/modern/src/resources/l10n/nl.json +++ b/modern/src/resources/l10n/nl.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Instellen", "sharedCancel": "Annuleren", + "sharedCopy": "Copy", "sharedAdd": "Toevoegen", "sharedEdit": "Bewerken", "sharedRemove": "Verwijderen", @@ -99,7 +100,6 @@ "sharedImport": "Importeren", "sharedColumns": "Kolommen", "sharedDropzoneText": "Sleep en plaats hier een bestand of klik hier", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Eenvoudig", "calendarRecurrence": "Herhaling", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: attributen uitschakelen", "attributeUiDisableGroups": "UI: groepen uitschakelen", "attributeUiDisableEvents": "UI: Gebeurtenissen uitschakelen", - "attributeUiDisableVehicleFetures": "UI: voertuigfuncties uitschakelen", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: bestuurders uitschakelen", "attributeUiDisableComputedAttributes": "UI: berekende attributen uitschakelen", "attributeUiDisableCalendars": "UI: kalenders uitschakelen", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Kaart", "mapActive": "Actieve kaarten", "mapOverlay": "Kaartlaag", diff --git a/modern/src/resources/l10n/nn.json b/modern/src/resources/l10n/nn.json index 7c0932c8..08088233 100644 --- a/modern/src/resources/l10n/nn.json +++ b/modern/src/resources/l10n/nn.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Sett", "sharedCancel": "Avbryt", + "sharedCopy": "Copy", "sharedAdd": "Legg til", "sharedEdit": "Endre", "sharedRemove": "Fjern", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Deaktiver hendingar", - "attributeUiDisableVehicleFetures": "UI: Deaktiver køyretøy-funksjonar", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Deaktiver Sjåførar", "attributeUiDisableComputedAttributes": "UI: Deaktiver Berekna eigenskaper", "attributeUiDisableCalendars": "UI: Deaktiver kalendrar", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Kart", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/pl.json b/modern/src/resources/l10n/pl.json index d0fda5d5..6ab7e537 100644 --- a/modern/src/resources/l10n/pl.json +++ b/modern/src/resources/l10n/pl.json @@ -5,6 +5,7 @@ "sharedUpload": "Wyślij", "sharedSet": "Ustaw", "sharedCancel": "Anuluj", + "sharedCopy": "Copy", "sharedAdd": "Dodaj", "sharedEdit": "Edytuj", "sharedRemove": "Usuń", @@ -99,7 +100,6 @@ "sharedImport": "Importuj", "sharedColumns": "Kolumny", "sharedDropzoneText": "Przeciągnij i upuść plik tutaj lub kliknij", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Prosty", "calendarRecurrence": "Powtarzalny", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Wyłącz atrybuty", "attributeUiDisableGroups": "UI: Wyłącz grupy", "attributeUiDisableEvents": "UI: Wyłącz zdarzenia", - "attributeUiDisableVehicleFetures": "UI: Wyłącz funkcje pojazdu", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Wyłącz kierowców", "attributeUiDisableComputedAttributes": "UI: Wyłącz obliczone atrybuty", "attributeUiDisableCalendars": "UI: Wyłącz kalendarze", @@ -325,6 +325,7 @@ "serverLogo": "Obraz logo", "serverLogoInverted": "Odwrócony obraz logo", "serverChangeDisable": "Wyłącz zmianę serwera", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mapa", "mapActive": "Aktywne mapy", "mapOverlay": "Nakładka mapy", diff --git a/modern/src/resources/l10n/pt.json b/modern/src/resources/l10n/pt.json index 0f0eb294..c12ba6a0 100644 --- a/modern/src/resources/l10n/pt.json +++ b/modern/src/resources/l10n/pt.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Conjunto", "sharedCancel": "Cancelar", + "sharedCopy": "Copy", "sharedAdd": "Adicionar", "sharedEdit": "Editar", "sharedRemove": "Remover", @@ -99,7 +100,6 @@ "sharedImport": "Importar", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Desativar Eventos", - "attributeUiDisableVehicleFetures": "UI: Desativar Caracteristicas", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Desativar Condutores", "attributeUiDisableComputedAttributes": "UI: Desativar Atributos", "attributeUiDisableCalendars": "UI: Desativar Calendários", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mapa", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/pt_BR.json b/modern/src/resources/l10n/pt_BR.json index 989ba10b..bad06285 100644 --- a/modern/src/resources/l10n/pt_BR.json +++ b/modern/src/resources/l10n/pt_BR.json @@ -5,6 +5,7 @@ "sharedUpload": "Enviar", "sharedSet": "Aplicar", "sharedCancel": "Cancelar", + "sharedCopy": "Copy", "sharedAdd": "Adicionar", "sharedEdit": "Editar", "sharedRemove": "Remover", @@ -99,7 +100,6 @@ "sharedImport": "Importar", "sharedColumns": "Colunas", "sharedDropzoneText": "Arraste e solte um arquivo aqui ou clique", - "sharedLinkCopied": "Link copiado", "sharedLogs": "Logs", "calendarSimple": "Simples", "calendarRecurrence": "Recorrência", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Desativar atributos", "attributeUiDisableGroups": "UI: Desabilitar Grupos", "attributeUiDisableEvents": "UI: Eventos Desativados", - "attributeUiDisableVehicleFetures": "UI: Desativar Características do Veículo", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Desativar Motoristas", "attributeUiDisableComputedAttributes": "UI: Desativar Atributos Calculados", "attributeUiDisableCalendars": "UI: Desativar Calendários", @@ -325,6 +325,7 @@ "serverLogo": "Imagem do Logo", "serverLogoInverted": "Imagem do logo invertida", "serverChangeDisable": "Desabilitar mudança de servidor", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mapa", "mapActive": "Mapas ativos", "mapOverlay": "Sobreposição de mapa", diff --git a/modern/src/resources/l10n/ro.json b/modern/src/resources/l10n/ro.json index eba9f118..e2254330 100644 --- a/modern/src/resources/l10n/ro.json +++ b/modern/src/resources/l10n/ro.json @@ -5,6 +5,7 @@ "sharedUpload": "Încarcă", "sharedSet": "Configurare", "sharedCancel": "Anulează", + "sharedCopy": "Copy", "sharedAdd": "Adaugă", "sharedEdit": "Modifică", "sharedRemove": "Elimină", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Coloane", "sharedDropzoneText": "Drag and drop un fișier aici ori click", - "sharedLinkCopied": "Link Copiat", "sharedLogs": "Logs", "calendarSimple": "Simplu", "calendarRecurrence": "Recurent", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Dezactivare Atribute", "attributeUiDisableGroups": "UI: Dezactivare Grupuri", "attributeUiDisableEvents": "UI: Dezactivare Evenimente", - "attributeUiDisableVehicleFetures": "UI: Dezactivare Detalii Vehicul", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Dezactivare Șoferi", "attributeUiDisableComputedAttributes": "UI: Dezactivare Atribute Calculate", "attributeUiDisableCalendars": "UI: Dezactivare Calendar", @@ -325,6 +325,7 @@ "serverLogo": "Imagine Logo", "serverLogoInverted": "Imagine Logo Inversată", "serverChangeDisable": "Dezactivează Schimbarea Serverului", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Hartă", "mapActive": "Hărți Active", "mapOverlay": "Suprapunere Hartă", diff --git a/modern/src/resources/l10n/ru.json b/modern/src/resources/l10n/ru.json index 90362a7b..e93a4211 100644 --- a/modern/src/resources/l10n/ru.json +++ b/modern/src/resources/l10n/ru.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Установить", "sharedCancel": "Отмена", + "sharedCopy": "Copy", "sharedAdd": "Добавить", "sharedEdit": "Редактировать", "sharedRemove": "Удалить", @@ -99,7 +100,6 @@ "sharedImport": "Импортировать", "sharedColumns": "Колонка", "sharedDropzoneText": "Перетащите файл сюда или нажмите", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Простой", "calendarRecurrence": "Повторение", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Выключить атрибуты", "attributeUiDisableGroups": "UI: Выключить группы", "attributeUiDisableEvents": "UI: Отключить события", - "attributeUiDisableVehicleFetures": "UI: Отключить автомобильные функции", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Отключить водителей", "attributeUiDisableComputedAttributes": "UI: Отключить вычисляемые атрибуты", "attributeUiDisableCalendars": "UI: Отключить календари", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Карта", "mapActive": "Активные карты", "mapOverlay": "Слой карты", diff --git a/modern/src/resources/l10n/si.json b/modern/src/resources/l10n/si.json index 08b35bd7..6a1a6983 100644 --- a/modern/src/resources/l10n/si.json +++ b/modern/src/resources/l10n/si.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "සකසන්න", "sharedCancel": "සිදු කරන්න", + "sharedCopy": "Copy", "sharedAdd": "එක් කරන්න", "sharedEdit": "සංස්කරණය", "sharedRemove": "ඉවත් කරන්න", @@ -99,7 +100,6 @@ "sharedImport": "ආනයන", "sharedColumns": "තීරු", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: කණ්ඩායම් අබල කරන්න", "attributeUiDisableEvents": "අ.මු.: සිදුවීම් අබල කරන්න", - "attributeUiDisableVehicleFetures": "අ.මු.: වාහනයේ විශේෂාංග අබල කරන්න", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: ධාවක අක්රීය කරන්න", "attributeUiDisableComputedAttributes": "UI: ගණනය කළ ගුණාංග අක්රීය කරන්න", "attributeUiDisableCalendars": "අ.මු.: දින දසුන අබල කරන්න", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "දක්වා", "mapActive": "ක්රියාකාරී සිතියම්", "mapOverlay": "සිතියම උඩ තට්ටුව", diff --git a/modern/src/resources/l10n/sk.json b/modern/src/resources/l10n/sk.json index 381677bc..a9403aee 100644 --- a/modern/src/resources/l10n/sk.json +++ b/modern/src/resources/l10n/sk.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Nastaviť", "sharedCancel": "Zrušiť", + "sharedCopy": "Copy", "sharedAdd": "Pridať", "sharedEdit": "Upraviť", "sharedRemove": "Odstrániť", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Zakázať udalosti", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Zakázať vodičov", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Zakázať kalendáre", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Mapa", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/sl.json b/modern/src/resources/l10n/sl.json index 58e67e57..56db2551 100644 --- a/modern/src/resources/l10n/sl.json +++ b/modern/src/resources/l10n/sl.json @@ -5,6 +5,7 @@ "sharedUpload": "Naloži", "sharedSet": "Nastavi", "sharedCancel": "Prekini", + "sharedCopy": "Copy", "sharedAdd": "Dodaj", "sharedEdit": "Uredi", "sharedRemove": "Odstrani", @@ -99,7 +100,6 @@ "sharedImport": "Uvozi", "sharedColumns": "Stolpci", "sharedDropzoneText": "Povlecite in spustite datoteko sem ali kliknite", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Preprost", "calendarRecurrence": "Ponovitev", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Zemljevid", "mapActive": "Aktivni zemljevidi", "mapOverlay": "Podatkovna plast", diff --git a/modern/src/resources/l10n/sq.json b/modern/src/resources/l10n/sq.json index 05f24ad9..8840ddcc 100644 --- a/modern/src/resources/l10n/sq.json +++ b/modern/src/resources/l10n/sq.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Set", "sharedCancel": "Anullim", + "sharedCopy": "Copy", "sharedAdd": "Shto", "sharedEdit": "Ndrysho", "sharedRemove": "Hiq", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Harta", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/sr.json b/modern/src/resources/l10n/sr.json index 3430308d..62951ee3 100644 --- a/modern/src/resources/l10n/sr.json +++ b/modern/src/resources/l10n/sr.json @@ -5,6 +5,7 @@ "sharedUpload": "Učitaj", "sharedSet": "Podesi", "sharedCancel": "Odustani", + "sharedCopy": "Kopiraj", "sharedAdd": "Dodaj", "sharedEdit": "Podesi", "sharedRemove": "Ukloni", @@ -99,7 +100,6 @@ "sharedImport": "Uvoz", "sharedColumns": "Kolone", "sharedDropzoneText": "Prevuci file i pusti ili klikni", - "sharedLinkCopied": "Link je kopiran", "sharedLogs": "Dnevnici", "calendarSimple": "Jednostavno", "calendarRecurrence": "Ponavljanje", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "Kor.Int.: Onemogući atribute", "attributeUiDisableGroups": "UI: Onemogući grupe", "attributeUiDisableEvents": "UI:Onemogući Dogadjaje", - "attributeUiDisableVehicleFetures": "KI: Onemogući Karakteristike vozila", + "attributeUiDisableVehicleFeatures": "KI: Onemogući Karakteristike vozila", "attributeUiDisableDrivers": "UI: Onemogući Vozače", "attributeUiDisableComputedAttributes": "Kor.Int. : Onemogući Izračunate atribute", "attributeUiDisableCalendars": "UI: Onemogući Kalendare", @@ -325,6 +325,7 @@ "serverLogo": "Logo slika", "serverLogoInverted": "Obrnuta logo slika", "serverChangeDisable": "Onemogući Server promene", + "serverDisableShare": "Onemogući deljenje vozila", "mapTitle": "Mapa", "mapActive": "Aktivne mape", "mapOverlay": "Preklapanje mape", diff --git a/modern/src/resources/l10n/sv.json b/modern/src/resources/l10n/sv.json index be77c2c0..0a2cf6df 100644 --- a/modern/src/resources/l10n/sv.json +++ b/modern/src/resources/l10n/sv.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Set", "sharedCancel": "Avbryt", + "sharedCopy": "Copy", "sharedAdd": "Lägg till", "sharedEdit": "Redigera", "sharedRemove": "Radera", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Kolumn", "sharedDropzoneText": "Dra och släpp en fil här eller klicka", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Enkel", "calendarRecurrence": "Upprepning", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Inaktivera attribut", "attributeUiDisableGroups": "UI: Inaktivera Grupper", "attributeUiDisableEvents": "UI: Inaktivera Händelser", - "attributeUiDisableVehicleFetures": "UI: Inaktivera Fordonsfunktioner", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Inaktivera Förare", "attributeUiDisableComputedAttributes": "UI: Inaktivera Beräknade Attribut", "attributeUiDisableCalendars": "UI: Inaktivera Kalendrar", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Karta", "mapActive": "Aktiva Kartor", "mapOverlay": "Kartöverlägg", diff --git a/modern/src/resources/l10n/ta.json b/modern/src/resources/l10n/ta.json index afb58d4e..d0b8af0e 100644 --- a/modern/src/resources/l10n/ta.json +++ b/modern/src/resources/l10n/ta.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "அமை", "sharedCancel": "ரத்து செய்", + "sharedCopy": "Copy", "sharedAdd": "சேர்க்க", "sharedEdit": "தொகுக்க", "sharedRemove": "நீக்குக", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: முடக்கு நிகழ்வுகள்", - "attributeUiDisableVehicleFetures": "UI: வாகன அம்சங்களை முடக்கு", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: முடக்கு இயக்கிகள்", "attributeUiDisableComputedAttributes": "UI: கணக்கிடப்பட்ட பண்புக்கூறுகளை முடக்கு", "attributeUiDisableCalendars": "UI: நாட்காட்டியை முடக்கு ", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "வரைபடம்", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/th.json b/modern/src/resources/l10n/th.json index c3ebbd27..da646c3a 100644 --- a/modern/src/resources/l10n/th.json +++ b/modern/src/resources/l10n/th.json @@ -5,6 +5,7 @@ "sharedUpload": "อัพโหลด", "sharedSet": "ตั้งค่า", "sharedCancel": "ยกเลิก", + "sharedCopy": "คัดลอก", "sharedAdd": "เพิ่ม", "sharedEdit": "แก้ไข", "sharedRemove": "ลบรายการ", @@ -99,7 +100,6 @@ "sharedImport": "นำเข้า", "sharedColumns": "คอลัมน์", "sharedDropzoneText": "ลากและวางไฟล์ที่นี่หรือคลิก", - "sharedLinkCopied": "คัดลอกลิงก์แล้ว", "sharedLogs": "Logs", "calendarSimple": "เรียบง่าย", "calendarRecurrence": "การเกิดซ้ำ", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: ปิดใช้งานแอตทริบิวต์", "attributeUiDisableGroups": "UI: ปิดการใช้งานกลุ่ม", "attributeUiDisableEvents": "UI: ปิดการใช้งานเหตุการณ์", - "attributeUiDisableVehicleFetures": "UI: ปิดการใช้งาน Fetures ยานพาหนะ", + "attributeUiDisableVehicleFeatures": "UI : ปิดการใช้งานคุณสมบัติของยานพาหนะ", "attributeUiDisableDrivers": "UI: ปิดการใช้งานไดร์เวอร์", "attributeUiDisableComputedAttributes": "UI: ปิดใช้งานแอ็ตทริบิวต์ที่คำนวณ", "attributeUiDisableCalendars": "UI: ปิดปฏิทิน", @@ -325,6 +325,7 @@ "serverLogo": "รูปภาพโลโก้", "serverLogoInverted": "กลับด้านภาพโลโก้แล้ว", "serverChangeDisable": "ปิดใช้งานการเปลี่ยนแปลงเซิร์ฟเวอร์", + "serverDisableShare": "ปิดใช้งานการแชร์อุปกรณ์", "mapTitle": "แผนที่", "mapActive": "แผนที่ที่ใช้งานอยู่", "mapOverlay": "การวางซ้อนแผนที่", diff --git a/modern/src/resources/l10n/tr.json b/modern/src/resources/l10n/tr.json index b6b2c373..4400ec9f 100644 --- a/modern/src/resources/l10n/tr.json +++ b/modern/src/resources/l10n/tr.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Belirle", "sharedCancel": "İptal", + "sharedCopy": "Copy", "sharedAdd": "Ekle", "sharedEdit": "Düzenle", "sharedRemove": "Kaldır", @@ -99,7 +100,6 @@ "sharedImport": "İçe aktarmak", "sharedColumns": "Sütunlar", "sharedDropzoneText": "Bir dosyayı buraya sürükleyip bırakın veya tıklayın", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Basit", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "Etkinlikler Devredışı", - "attributeUiDisableVehicleFetures": "Görünüm: Araç Özellikleri Devredışı", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "Görünüm: Sürücüler Devredışı", "attributeUiDisableComputedAttributes": "Görünüm: Hesaplanmış Öznitelikler Devredışı", "attributeUiDisableCalendars": "Görünüm: Takvim Devredışı", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Harita", "mapActive": "Aktif Haritalar", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/uk.json b/modern/src/resources/l10n/uk.json index 686e8670..2c9318e7 100644 --- a/modern/src/resources/l10n/uk.json +++ b/modern/src/resources/l10n/uk.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Встановити", "sharedCancel": "Відміна", + "sharedCopy": "Copy", "sharedAdd": "Додати", "sharedEdit": "Редагувати", "sharedRemove": "Видалити", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Вимкнути події", - "attributeUiDisableVehicleFetures": "UI: Вимкнути автомобільні функції", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Вимкнути водіїв", "attributeUiDisableComputedAttributes": "UI: Вимкнути обчислювані атрибути", "attributeUiDisableCalendars": "UI: Вимкнути календарі", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Карта", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/uz.json b/modern/src/resources/l10n/uz.json index 0ad2c11c..9ed24f92 100644 --- a/modern/src/resources/l10n/uz.json +++ b/modern/src/resources/l10n/uz.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Ўрнатиш", "sharedCancel": "Бекор қилиш", + "sharedCopy": "Copy", "sharedAdd": "Қўшиш", "sharedEdit": "Таҳрирлаш", "sharedRemove": "Ўчириш", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Харита", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/vi.json b/modern/src/resources/l10n/vi.json index 3513c3b0..c05d9f74 100644 --- a/modern/src/resources/l10n/vi.json +++ b/modern/src/resources/l10n/vi.json @@ -5,6 +5,7 @@ "sharedUpload": "Upload", "sharedSet": "Thiết lập", "sharedCancel": "Hủy", + "sharedCopy": "Copy", "sharedAdd": "Thêm mới", "sharedEdit": "Chỉnh sửa", "sharedRemove": "Xóa", @@ -99,7 +100,6 @@ "sharedImport": "Import", "sharedColumns": "Columns", "sharedDropzoneText": "Drag and drop a file here or click", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "Simple", "calendarRecurrence": "Recurrence", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "UI: Disable Attributes", "attributeUiDisableGroups": "UI: Disable Groups", "attributeUiDisableEvents": "UI: Disable Events", - "attributeUiDisableVehicleFetures": "UI: Disable Vehicle Fetures", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "UI: Disable Drivers", "attributeUiDisableComputedAttributes": "UI: Disable Computed Attributes", "attributeUiDisableCalendars": "UI: Disable Calendars", @@ -325,6 +325,7 @@ "serverLogo": "Logo Image", "serverLogoInverted": "Inverted Logo Image", "serverChangeDisable": "Disable Server Change", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "Bản đồ", "mapActive": "Active Maps", "mapOverlay": "Map Overlay", diff --git a/modern/src/resources/l10n/zh.json b/modern/src/resources/l10n/zh.json index 178b9c42..463151d1 100644 --- a/modern/src/resources/l10n/zh.json +++ b/modern/src/resources/l10n/zh.json @@ -5,6 +5,7 @@ "sharedUpload": "上传", "sharedSet": "设置", "sharedCancel": "取消", + "sharedCopy": "Copy", "sharedAdd": "添加", "sharedEdit": "编辑", "sharedRemove": "删除", @@ -99,7 +100,6 @@ "sharedImport": "导入", "sharedColumns": "显示列", "sharedDropzoneText": "将文件拖放到此处或者单击", - "sharedLinkCopied": "链接已复制", "sharedLogs": "日志", "calendarSimple": "简单", "calendarRecurrence": "复现", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "用户界面:禁用属性", "attributeUiDisableGroups": "用户界面:禁用分组", "attributeUiDisableEvents": "用户界面:禁用事件", - "attributeUiDisableVehicleFetures": "用户界面:禁用车辆特性", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "用户界面:禁用驾驶员", "attributeUiDisableComputedAttributes": "用户界面:禁用计算属性", "attributeUiDisableCalendars": "用户界面:禁用日历", @@ -325,6 +325,7 @@ "serverLogo": "标识图片", "serverLogoInverted": "倒置标识图片", "serverChangeDisable": "禁用服务器更改", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "地图", "mapActive": "已选地图", "mapOverlay": "地图叠层", diff --git a/modern/src/resources/l10n/zh_TW.json b/modern/src/resources/l10n/zh_TW.json index 6a34ba23..a38507a0 100644 --- a/modern/src/resources/l10n/zh_TW.json +++ b/modern/src/resources/l10n/zh_TW.json @@ -5,6 +5,7 @@ "sharedUpload": "上傳", "sharedSet": "設定", "sharedCancel": "取消", + "sharedCopy": "Copy", "sharedAdd": "新增", "sharedEdit": "編輯", "sharedRemove": "移除", @@ -99,7 +100,6 @@ "sharedImport": "接入", "sharedColumns": "列", "sharedDropzoneText": "將文件拖放到此處或者點擊", - "sharedLinkCopied": "Link copied", "sharedLogs": "Logs", "calendarSimple": "簡單", "calendarRecurrence": "復現", @@ -148,7 +148,7 @@ "attributeUiDisableAttributes": "用戶界面:禁用屬性", "attributeUiDisableGroups": "用戶界面:禁用分組", "attributeUiDisableEvents": "用戶界面:禁用事件", - "attributeUiDisableVehicleFetures": "用戶界面:禁用車輛特性", + "attributeUiDisableVehicleFeatures": "UI: Disable Vehicle Features", "attributeUiDisableDrivers": "用戶界面:禁用駕駛員", "attributeUiDisableComputedAttributes": "用戶界面:禁用計算屬性", "attributeUiDisableCalendars": "用戶界面:禁用日曆", @@ -325,6 +325,7 @@ "serverLogo": "Logo 圖片", "serverLogoInverted": "倒置 Logo 圖片", "serverChangeDisable": "禁改伺服器", + "serverDisableShare": "Disable Device Sharing", "mapTitle": "地圖", "mapActive": "啟用地圖", "mapOverlay": "地圖疊層", diff --git a/modern/src/settings/AccumulatorsPage.jsx b/modern/src/settings/AccumulatorsPage.jsx index 5067e4fd..1c9b6e65 100644 --- a/modern/src/settings/AccumulatorsPage.jsx +++ b/modern/src/settings/AccumulatorsPage.jsx @@ -10,7 +10,6 @@ import { TextField, Button, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { useTranslation } from '../common/components/LocalizationProvider'; import PageLayout from '../common/components/PageLayout'; @@ -18,31 +17,11 @@ import SettingsMenu from './components/SettingsMenu'; import { useCatch } from '../reactHelper'; import { useAttributePreference } from '../common/util/preferences'; import { distanceFromMeters, distanceToMeters, distanceUnitString } from '../common/util/converter'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - buttons: { - marginTop: theme.spacing(2), - marginBottom: theme.spacing(2), - display: 'flex', - justifyContent: 'space-evenly', - '& > *': { - flexBasis: '33%', - }, - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const AccumulatorsPage = () => { const navigate = useNavigate(); - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const distanceUnit = useAttributePreference('distanceUnit'); diff --git a/modern/src/settings/AnnouncementPage.jsx b/modern/src/settings/AnnouncementPage.jsx new file mode 100644 index 00000000..39488f02 --- /dev/null +++ b/modern/src/settings/AnnouncementPage.jsx @@ -0,0 +1,106 @@ +import React, { useState } from 'react'; +import { useNavigate } from 'react-router-dom'; +import { + Accordion, + AccordionSummary, + AccordionDetails, + Typography, + Container, + TextField, + Button, +} from '@mui/material'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; +import { useTranslation } from '../common/components/LocalizationProvider'; +import PageLayout from '../common/components/PageLayout'; +import SettingsMenu from './components/SettingsMenu'; +import { useCatchCallback } from '../reactHelper'; +import useSettingsStyles from './common/useSettingsStyles'; +import SelectField from '../common/components/SelectField'; +import { prefixString } from '../common/util/stringUtils'; + +const AnnouncementPage = () => { + const navigate = useNavigate(); + const classes = useSettingsStyles(); + const t = useTranslation(); + + const [users, setUsers] = useState([]); + const [notificator, setNotificator] = useState(); + const [message, setMessage] = useState({}); + + const handleSend = useCatchCallback(async () => { + const query = new URLSearchParams(); + users.forEach((userId) => query.append('userId', userId)); + const response = await fetch(`/api/notifications/send/${notificator}?${query.toString()}`, { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(message), + }); + if (response.ok) { + navigate(-1); + } else { + throw Error(await response.text()); + } + }, [users, notificator, message, navigate]); + + return ( + <PageLayout menu={<SettingsMenu />} breadcrumbs={['serverAnnouncement']}> + <Container maxWidth="xs" className={classes.container}> + <Accordion defaultExpanded> + <AccordionSummary expandIcon={<ExpandMoreIcon />}> + <Typography variant="subtitle1"> + {t('sharedRequired')} + </Typography> + </AccordionSummary> + <AccordionDetails className={classes.details}> + <SelectField + multiple + value={users} + onChange={(e) => setUsers(e.target.value)} + endpoint="/api/users" + label={t('settingsUsers')} + /> + <SelectField + value={notificator} + onChange={(e) => setNotificator(e.target.value)} + endpoint="/api/notifications/notificators" + keyGetter={(it) => it.type} + titleGetter={(it) => t(prefixString('notificator', it.type))} + label={t('notificationNotificators')} + /> + <TextField + value={message.subject} + onChange={(e) => setMessage({ ...message, subject: e.target.value })} + label={t('sharedSubject')} + /> + <TextField + value={message.body} + onChange={(e) => setMessage({ ...message, body: e.target.value })} + label={t('commandMessage')} + /> + </AccordionDetails> + </Accordion> + <div className={classes.buttons}> + <Button + type="button" + color="primary" + variant="outlined" + onClick={() => navigate(-1)} + > + {t('sharedCancel')} + </Button> + <Button + type="button" + color="primary" + variant="contained" + onClick={handleSend} + disabled={!notificator || !message.subject || !message.body} + > + {t('commandSend')} + </Button> + </div> + </Container> + </PageLayout> + ); +}; + +export default AnnouncementPage; diff --git a/modern/src/settings/CalendarPage.jsx b/modern/src/settings/CalendarPage.jsx index b7dcdd04..8a3dc986 100644 --- a/modern/src/settings/CalendarPage.jsx +++ b/modern/src/settings/CalendarPage.jsx @@ -5,7 +5,6 @@ import TextField from '@mui/material/TextField'; import { Accordion, AccordionSummary, AccordionDetails, Typography, FormControl, InputLabel, Select, MenuItem, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { DropzoneArea } from 'react-mui-dropzone'; import EditItemView from './components/EditItemView'; @@ -15,6 +14,7 @@ import SettingsMenu from './components/SettingsMenu'; import { prefixString } from '../common/util/stringUtils'; import { calendarsActions } from '../store'; import { useCatch } from '../reactHelper'; +import useSettingsStyles from './common/useSettingsStyles'; const formatCalendarTime = (time) => { const tzid = Intl.DateTimeFormat().resolvedOptions().timeZone; @@ -61,17 +61,8 @@ const simpleCalendar = () => window.btoa([ 'END:VCALENDAR', ].join('\n')); -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); - const CalendarPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const dispatch = useDispatch(); const t = useTranslation(); diff --git a/modern/src/settings/CommandDevicePage.jsx b/modern/src/settings/CommandDevicePage.jsx index ed802bfa..b3144cd0 100644 --- a/modern/src/settings/CommandDevicePage.jsx +++ b/modern/src/settings/CommandDevicePage.jsx @@ -8,7 +8,6 @@ import { Container, Button, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { useTranslation } from '../common/components/LocalizationProvider'; import BaseCommandView from './components/BaseCommandView'; @@ -17,31 +16,11 @@ import PageLayout from '../common/components/PageLayout'; import SettingsMenu from './components/SettingsMenu'; import { useCatch } from '../reactHelper'; import { useRestriction } from '../common/util/permissions'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - buttons: { - marginTop: theme.spacing(2), - marginBottom: theme.spacing(2), - display: 'flex', - justifyContent: 'space-evenly', - '& > *': { - flexBasis: '33%', - }, - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const CommandDevicePage = () => { const navigate = useNavigate(); - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const { id } = useParams(); diff --git a/modern/src/settings/CommandGroupPage.jsx b/modern/src/settings/CommandGroupPage.jsx index e2ba3946..e55a235d 100644 --- a/modern/src/settings/CommandGroupPage.jsx +++ b/modern/src/settings/CommandGroupPage.jsx @@ -16,37 +16,16 @@ import { Checkbox, TextField, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { useTranslation } from '../common/components/LocalizationProvider'; import PageLayout from '../common/components/PageLayout'; import SettingsMenu from './components/SettingsMenu'; import { useCatch } from '../reactHelper'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - buttons: { - marginTop: theme.spacing(2), - marginBottom: theme.spacing(2), - display: 'flex', - justifyContent: 'space-evenly', - '& > *': { - flexBasis: '33%', - }, - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const CommandDevicePage = () => { const navigate = useNavigate(); - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const { id } = useParams(); diff --git a/modern/src/settings/CommandPage.jsx b/modern/src/settings/CommandPage.jsx index 1d788610..e65ecd76 100644 --- a/modern/src/settings/CommandPage.jsx +++ b/modern/src/settings/CommandPage.jsx @@ -2,24 +2,15 @@ import React, { useState } from 'react'; import { Accordion, AccordionSummary, AccordionDetails, Typography, TextField, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import EditItemView from './components/EditItemView'; import { useTranslation } from '../common/components/LocalizationProvider'; import BaseCommandView from './components/BaseCommandView'; import SettingsMenu from './components/SettingsMenu'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const CommandPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const [item, setItem] = useState(); diff --git a/modern/src/settings/ComputedAttributePage.jsx b/modern/src/settings/ComputedAttributePage.jsx index e3a5e5a2..1b19033c 100644 --- a/modern/src/settings/ComputedAttributePage.jsx +++ b/modern/src/settings/ComputedAttributePage.jsx @@ -14,7 +14,6 @@ import { Button, Snackbar, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import EditItemView from './components/EditItemView'; import { useTranslation } from '../common/components/LocalizationProvider'; @@ -23,20 +22,12 @@ import SettingsMenu from './components/SettingsMenu'; import SelectField from '../common/components/SelectField'; import { useCatch } from '../reactHelper'; import { snackBarDurationLongMs } from '../common/util/duration'; +import useSettingsStyles from './common/useSettingsStyles'; const allowedProperties = ['valid', 'latitude', 'longitude', 'altitude', 'speed', 'course', 'address', 'accuracy']; -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); - const ComputedAttributePage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const positionAttributes = usePositionAttributes(t); diff --git a/modern/src/settings/DeviceConnectionsPage.jsx b/modern/src/settings/DeviceConnectionsPage.jsx index 88d47872..10d0c3f6 100644 --- a/modern/src/settings/DeviceConnectionsPage.jsx +++ b/modern/src/settings/DeviceConnectionsPage.jsx @@ -7,7 +7,6 @@ import { Typography, Container, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import LinkField from '../common/components/LinkField'; import { useTranslation } from '../common/components/LocalizationProvider'; @@ -15,21 +14,10 @@ import SettingsMenu from './components/SettingsMenu'; import { formatNotificationTitle } from '../common/util/formatter'; import PageLayout from '../common/components/PageLayout'; import useFeatures from '../common/util/useFeatures'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const DeviceConnectionsPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const { id } = useParams(); @@ -73,6 +61,7 @@ const DeviceConnectionsPage = () => { baseId={id} keyBase="deviceId" keyLink="driverId" + titleGetter={(it) => `${it.name} (${it.uniqueId})`} label={t('sharedDrivers')} /> )} diff --git a/modern/src/settings/DevicePage.jsx b/modern/src/settings/DevicePage.jsx index 72624270..0feb000b 100644 --- a/modern/src/settings/DevicePage.jsx +++ b/modern/src/settings/DevicePage.jsx @@ -9,7 +9,6 @@ import { Checkbox, TextField, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { DropzoneArea } from 'react-mui-dropzone'; import EditItemView from './components/EditItemView'; @@ -23,18 +22,10 @@ import SettingsMenu from './components/SettingsMenu'; import useCommonDeviceAttributes from '../common/attributes/useCommonDeviceAttributes'; import { useCatch } from '../reactHelper'; import useQuery from '../common/util/useQuery'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const DevicePage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const admin = useAdministrator(); diff --git a/modern/src/settings/DevicesPage.jsx b/modern/src/settings/DevicesPage.jsx index 5ef5aae5..c0da0ba7 100644 --- a/modern/src/settings/DevicesPage.jsx +++ b/modern/src/settings/DevicesPage.jsx @@ -2,7 +2,7 @@ import React, { useState } from 'react'; import { useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { - Table, TableRow, TableCell, TableHead, TableBody, + Table, TableRow, TableCell, TableHead, TableBody, Button, TableFooter, } from '@mui/material'; import LinkIcon from '@mui/icons-material/Link'; import { useEffectAsync } from '../reactHelper'; @@ -48,6 +48,10 @@ const DevicesPage = () => { } }, [timestamp]); + const handleExport = () => { + window.location.assign('/api/reports/devices/xlsx'); + }; + const actionConnections = { key: 'connections', title: t('sharedConnections'), @@ -94,6 +98,13 @@ const DevicesPage = () => { </TableRow> )) : (<TableShimmer columns={7} endAction />)} </TableBody> + <TableFooter> + <TableRow> + <TableCell colSpan={8} align="right"> + <Button onClick={handleExport} variant="text">{t('reportExport')}</Button> + </TableCell> + </TableRow> + </TableFooter> </Table> <CollectionFab editPath="/settings/device" /> </PageLayout> diff --git a/modern/src/settings/DriverPage.jsx b/modern/src/settings/DriverPage.jsx index 83d1f88f..5f70a44a 100644 --- a/modern/src/settings/DriverPage.jsx +++ b/modern/src/settings/DriverPage.jsx @@ -3,24 +3,15 @@ import TextField from '@mui/material/TextField'; import { Accordion, AccordionSummary, AccordionDetails, Typography, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import EditItemView from './components/EditItemView'; import EditAttributesAccordion from './components/EditAttributesAccordion'; import { useTranslation } from '../common/components/LocalizationProvider'; import SettingsMenu from './components/SettingsMenu'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const DriverPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const [item, setItem] = useState(); diff --git a/modern/src/settings/GeofencePage.jsx b/modern/src/settings/GeofencePage.jsx index 1d9e614b..c3c96ef8 100644 --- a/modern/src/settings/GeofencePage.jsx +++ b/modern/src/settings/GeofencePage.jsx @@ -3,7 +3,6 @@ import { useDispatch } from 'react-redux'; import { Accordion, AccordionSummary, AccordionDetails, Typography, TextField, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import EditItemView from './components/EditItemView'; import EditAttributesAccordion from './components/EditAttributesAccordion'; @@ -12,18 +11,10 @@ import useGeofenceAttributes from '../common/attributes/useGeofenceAttributes'; import SettingsMenu from './components/SettingsMenu'; import SelectField from '../common/components/SelectField'; import { geofencesActions } from '../store'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const GeofencePage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const dispatch = useDispatch(); const t = useTranslation(); diff --git a/modern/src/settings/GroupConnectionsPage.jsx b/modern/src/settings/GroupConnectionsPage.jsx index 8ea3b88e..cd4e743b 100644 --- a/modern/src/settings/GroupConnectionsPage.jsx +++ b/modern/src/settings/GroupConnectionsPage.jsx @@ -7,7 +7,6 @@ import { Typography, Container, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import LinkField from '../common/components/LinkField'; import { useTranslation } from '../common/components/LocalizationProvider'; @@ -15,21 +14,10 @@ import SettingsMenu from './components/SettingsMenu'; import { formatNotificationTitle } from '../common/util/formatter'; import PageLayout from '../common/components/PageLayout'; import useFeatures from '../common/util/useFeatures'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const GroupConnectionsPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const { id } = useParams(); @@ -73,6 +61,7 @@ const GroupConnectionsPage = () => { baseId={id} keyBase="groupId" keyLink="driverId" + titleGetter={(it) => `${it.name} (${it.uniqueId})`} label={t('sharedDrivers')} /> )} diff --git a/modern/src/settings/GroupPage.jsx b/modern/src/settings/GroupPage.jsx index 64498b9c..ba1cbc76 100644 --- a/modern/src/settings/GroupPage.jsx +++ b/modern/src/settings/GroupPage.jsx @@ -5,7 +5,6 @@ import TextField from '@mui/material/TextField'; import { Accordion, AccordionSummary, AccordionDetails, Typography, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import EditItemView from './components/EditItemView'; import EditAttributesAccordion from './components/EditAttributesAccordion'; @@ -16,18 +15,10 @@ import useCommonDeviceAttributes from '../common/attributes/useCommonDeviceAttri import useGroupAttributes from '../common/attributes/useGroupAttributes'; import { useCatch } from '../reactHelper'; import { groupsActions } from '../store'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const GroupPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const dispatch = useDispatch(); const t = useTranslation(); diff --git a/modern/src/settings/MaintenancePage.jsx b/modern/src/settings/MaintenancePage.jsx index 987789d5..420e2b82 100644 --- a/modern/src/settings/MaintenancePage.jsx +++ b/modern/src/settings/MaintenancePage.jsx @@ -10,7 +10,6 @@ import { MenuItem, Select, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { prefixString } from '../common/util/stringUtils'; import EditItemView from './components/EditItemView'; @@ -22,18 +21,10 @@ import { import { useTranslation } from '../common/components/LocalizationProvider'; import usePositionAttributes from '../common/attributes/usePositionAttributes'; import SettingsMenu from './components/SettingsMenu'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const MaintenancePage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const positionAttributes = usePositionAttributes(t); @@ -48,7 +39,7 @@ const MaintenancePage = () => { const otherList = []; Object.keys(attributes).forEach((key) => { const value = attributes[key]; - if (value.type === 'number') { + if (value.type === 'number' || key.endsWith('Time')) { otherList.push({ key, name: value.name, type: value.type }); } }); diff --git a/modern/src/settings/NotificationPage.jsx b/modern/src/settings/NotificationPage.jsx index 44399f92..63aa9b95 100644 --- a/modern/src/settings/NotificationPage.jsx +++ b/modern/src/settings/NotificationPage.jsx @@ -10,7 +10,6 @@ import { FormGroup, Button, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { useTranslation, useTranslationKeys } from '../common/components/LocalizationProvider'; import EditItemView from './components/EditItemView'; @@ -18,18 +17,10 @@ import { prefixString, unprefixString } from '../common/util/stringUtils'; import SelectField from '../common/components/SelectField'; import SettingsMenu from './components/SettingsMenu'; import { useCatch } from '../reactHelper'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const NotificationPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const [item, setItem] = useState(); diff --git a/modern/src/settings/PreferencesPage.jsx b/modern/src/settings/PreferencesPage.jsx index cfdcf885..2d6df62f 100644 --- a/modern/src/settings/PreferencesPage.jsx +++ b/modern/src/settings/PreferencesPage.jsx @@ -5,7 +5,6 @@ import { useNavigate } from 'react-router-dom'; import { Accordion, AccordionSummary, AccordionDetails, Typography, Container, FormControl, InputLabel, Select, MenuItem, Checkbox, FormControlLabel, FormGroup, InputAdornment, IconButton, OutlinedInput, Autocomplete, TextField, createFilterOptions, Button, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import CachedIcon from '@mui/icons-material/Cached'; import ContentCopyIcon from '@mui/icons-material/ContentCopy'; @@ -20,6 +19,7 @@ import useMapOverlays from '../map/overlay/useMapOverlays'; import { useCatch } from '../reactHelper'; import { sessionActions } from '../store'; import { useRestriction } from '../common/util/permissions'; +import useSettingsStyles from './common/useSettingsStyles'; const deviceFields = [ { id: 'name', name: 'sharedName' }, @@ -29,33 +29,8 @@ const deviceFields = [ { id: 'contact', name: 'deviceContact' }, ]; -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - buttons: { - marginTop: theme.spacing(2), - marginBottom: theme.spacing(2), - display: 'flex', - justifyContent: 'space-evenly', - '& > *': { - flexBasis: '33%', - }, - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, - tokenActions: { - display: 'flex', - flexDirection: 'column', - }, -})); - const PreferencesPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const dispatch = useDispatch(); const navigate = useNavigate(); const t = useTranslation(); @@ -332,7 +307,7 @@ const PreferencesPage = () => { value={token || ''} endAdornment={( <InputAdornment position="end"> - <div className={classes.tokenActions}> + <div className={classes.verticalActions}> <IconButton size="small" edge="end" onClick={generateToken} disabled={!!token}> <CachedIcon fontSize="small" /> </IconButton> diff --git a/modern/src/settings/ServerPage.jsx b/modern/src/settings/ServerPage.jsx index 1020092b..0ac76334 100644 --- a/modern/src/settings/ServerPage.jsx +++ b/modern/src/settings/ServerPage.jsx @@ -16,7 +16,6 @@ import { MenuItem, FormGroup, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import { useNavigate } from 'react-router-dom'; import { useDispatch, useSelector } from 'react-redux'; @@ -33,30 +32,10 @@ import { useCatch } from '../reactHelper'; import useServerAttributes from '../common/attributes/useServerAttributes'; import useMapStyles from '../map/core/useMapStyles'; import { map } from '../map/core/MapView'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - buttons: { - marginTop: theme.spacing(2), - marginBottom: theme.spacing(2), - display: 'flex', - justifyContent: 'space-evenly', - '& > *': { - flexBasis: '33%', - }, - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const ServerPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const navigate = useNavigate(); const dispatch = useDispatch(); const t = useTranslation(); diff --git a/modern/src/settings/SharePage.jsx b/modern/src/settings/SharePage.jsx new file mode 100644 index 00000000..d16fe44d --- /dev/null +++ b/modern/src/settings/SharePage.jsx @@ -0,0 +1,109 @@ +import React, { useState } from 'react'; +import { useSelector } from 'react-redux'; +import { useNavigate, useParams } from 'react-router-dom'; +import dayjs from 'dayjs'; +import { + Accordion, + AccordionSummary, + AccordionDetails, + Typography, + Container, + TextField, + Button, +} from '@mui/material'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; +import { useTranslation } from '../common/components/LocalizationProvider'; +import PageLayout from '../common/components/PageLayout'; +import SettingsMenu from './components/SettingsMenu'; +import { useCatchCallback } from '../reactHelper'; +import useSettingsStyles from './common/useSettingsStyles'; + +const SharePage = () => { + const navigate = useNavigate(); + const classes = useSettingsStyles(); + const t = useTranslation(); + + const { id } = useParams(); + + const device = useSelector((state) => state.devices.items[id]); + + const [expiration, setExpiration] = useState(dayjs().add(1, 'week').locale('en').format('YYYY-MM-DD')); + const [link, setLink] = useState(); + + const handleShare = useCatchCallback(async () => { + const expirationTime = dayjs(expiration).toISOString(); + const response = await fetch('/api/devices/share', { + method: 'POST', + body: new URLSearchParams(`deviceId=${id}&expiration=${expirationTime}`), + }); + if (response.ok) { + const token = await response.text(); + setLink(`${window.location.origin}?token=${token}`); + } else { + throw Error(await response.text()); + } + }, [id, expiration, setLink]); + + return ( + <PageLayout menu={<SettingsMenu />} breadcrumbs={['deviceShare']}> + <Container maxWidth="xs" className={classes.container}> + <Accordion defaultExpanded> + <AccordionSummary expandIcon={<ExpandMoreIcon />}> + <Typography variant="subtitle1"> + {t('sharedRequired')} + </Typography> + </AccordionSummary> + <AccordionDetails className={classes.details}> + <TextField + value={device.name} + label={t('sharedDevice')} + disabled + /> + <TextField + label={t('userExpirationTime')} + type="date" + value={(expiration && dayjs(expiration).locale('en').format('YYYY-MM-DD')) || '2099-01-01'} + onChange={(e) => setExpiration(dayjs(e.target.value, 'YYYY-MM-DD').locale('en').format())} + /> + <Button + variant="outlined" + color="primary" + onClick={handleShare} + > + {t('reportShow')} + </Button> + <TextField + value={link || ''} + onChange={(e) => setLink(e.target.value)} + label={t('sharedLink')} + InputProps={{ + readOnly: true, + }} + /> + </AccordionDetails> + </Accordion> + <div className={classes.buttons}> + <Button + type="button" + color="primary" + variant="outlined" + onClick={() => navigate(-1)} + > + {t('sharedCancel')} + </Button> + <Button + type="button" + color="primary" + variant="contained" + onClick={() => navigator.clipboard?.writeText(link)} + disabled={!link} + > + {t('sharedCopy')} + </Button> + </div> + </Container> + </PageLayout> + ); +}; + +export default SharePage; diff --git a/modern/src/settings/UserConnectionsPage.jsx b/modern/src/settings/UserConnectionsPage.jsx index 80de8835..3ca0bdc1 100644 --- a/modern/src/settings/UserConnectionsPage.jsx +++ b/modern/src/settings/UserConnectionsPage.jsx @@ -7,28 +7,16 @@ import { Typography, Container, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import LinkField from '../common/components/LinkField'; import { useTranslation } from '../common/components/LocalizationProvider'; import SettingsMenu from './components/SettingsMenu'; import { formatNotificationTitle } from '../common/util/formatter'; import PageLayout from '../common/components/PageLayout'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const UserConnectionsPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const { id } = useParams(); @@ -52,6 +40,7 @@ const UserConnectionsPage = () => { baseId={id} keyBase="userId" keyLink="deviceId" + titleGetter={(it) => `${it.name} (${it.uniqueId})`} label={t('deviceTitle')} /> <LinkField @@ -110,6 +99,7 @@ const UserConnectionsPage = () => { baseId={id} keyBase="userId" keyLink="driverId" + titleGetter={(it) => `${it.name} (${it.uniqueId})`} label={t('sharedDrivers')} /> <LinkField diff --git a/modern/src/settings/UserPage.jsx b/modern/src/settings/UserPage.jsx index f276beca..6748dd31 100644 --- a/modern/src/settings/UserPage.jsx +++ b/modern/src/settings/UserPage.jsx @@ -18,7 +18,6 @@ import { IconButton, OutlinedInput, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; import DeleteForeverIcon from '@mui/icons-material/DeleteForever'; import CachedIcon from '@mui/icons-material/Cached'; @@ -38,18 +37,10 @@ import useQuery from '../common/util/useQuery'; import { useCatch } from '../reactHelper'; import useMapStyles from '../map/core/useMapStyles'; import { map } from '../map/core/MapView'; - -const useStyles = makeStyles((theme) => ({ - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from './common/useSettingsStyles'; const UserPage = () => { - const classes = useStyles(); + const classes = useSettingsStyles(); const navigate = useNavigate(); const dispatch = useDispatch(); const t = useTranslation(); @@ -92,7 +83,7 @@ const UserPage = () => { const handleGenerateTotp = useCatch(async () => { const response = await fetch('/api/users/totp', { method: 'POST' }); if (response.ok) { - setItem({ ...item, totpKey: await response.text() }) + setItem({ ...item, totpKey: await response.text() }); } else { throw Error(await response.text()); } diff --git a/modern/src/settings/UsersPage.jsx b/modern/src/settings/UsersPage.jsx index d04f2a2b..2941965b 100644 --- a/modern/src/settings/UsersPage.jsx +++ b/modern/src/settings/UsersPage.jsx @@ -1,7 +1,7 @@ import React, { useState } from 'react'; import { useNavigate } from 'react-router-dom'; import { - Table, TableRow, TableCell, TableHead, TableBody, + Table, TableRow, TableCell, TableHead, TableBody, Switch, TableFooter, FormControlLabel, } from '@mui/material'; import LoginIcon from '@mui/icons-material/Login'; import LinkIcon from '@mui/icons-material/Link'; @@ -31,6 +31,7 @@ const UsersPage = () => { const [items, setItems] = useState([]); const [searchKeyword, setSearchKeyword] = useState(''); const [loading, setLoading] = useState(false); + const [temporary, setTemporary] = useState(false); const handleLogin = useCatch(async (userId) => { const response = await fetch(`/api/session/${userId}`); @@ -84,7 +85,7 @@ const UsersPage = () => { </TableRow> </TableHead> <TableBody> - {!loading ? items.filter(filterByKeyword(searchKeyword)).map((item) => ( + {!loading ? items.filter((u) => temporary || !u.temporary).filter(filterByKeyword(searchKeyword)).map((item) => ( <TableRow key={item.id}> <TableCell>{item.name}</TableCell> <TableCell>{item.email}</TableCell> @@ -103,6 +104,23 @@ const UsersPage = () => { </TableRow> )) : (<TableShimmer columns={6} endAction />)} </TableBody> + <TableFooter> + <TableRow> + <TableCell colSpan={6} align="right"> + <FormControlLabel + control={( + <Switch + value={temporary} + onChange={(e) => setTemporary(e.target.checked)} + size="small" + /> + )} + label={t('userTemporary')} + labelPlacement="start" + /> + </TableCell> + </TableRow> + </TableFooter> </Table> <CollectionFab editPath="/settings/user" /> </PageLayout> diff --git a/modern/src/settings/common/useSettingsStyles.js b/modern/src/settings/common/useSettingsStyles.js index 396af232..b276e0b7 100644 --- a/modern/src/settings/common/useSettingsStyles.js +++ b/modern/src/settings/common/useSettingsStyles.js @@ -8,4 +8,26 @@ export default makeStyles((theme) => ({ width: '1%', paddingRight: theme.spacing(1), }, + container: { + marginTop: theme.spacing(2), + }, + buttons: { + marginTop: theme.spacing(2), + marginBottom: theme.spacing(2), + display: 'flex', + justifyContent: 'space-evenly', + '& > *': { + flexBasis: '33%', + }, + }, + details: { + display: 'flex', + flexDirection: 'column', + gap: theme.spacing(2), + paddingBottom: theme.spacing(3), + }, + verticalActions: { + display: 'flex', + flexDirection: 'column', + }, })); diff --git a/modern/src/settings/components/EditAttributesAccordion.jsx b/modern/src/settings/components/EditAttributesAccordion.jsx index 214ddb0e..4d4ae254 100644 --- a/modern/src/settings/components/EditAttributesAccordion.jsx +++ b/modern/src/settings/components/EditAttributesAccordion.jsx @@ -15,7 +15,6 @@ import { Typography, AccordionDetails, } from '@mui/material'; -import makeStyles from '@mui/styles/makeStyles'; import CloseIcon from '@mui/icons-material/Close'; import AddIcon from '@mui/icons-material/Add'; import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; @@ -26,21 +25,10 @@ import { distanceFromMeters, distanceToMeters, distanceUnitString, speedFromKnots, speedToKnots, speedUnitString, volumeFromLiters, volumeToLiters, volumeUnitString, } from '../../common/util/converter'; import useFeatures from '../../common/util/useFeatures'; - -const useStyles = makeStyles((theme) => ({ - removeButton: { - marginRight: theme.spacing(1.5), - }, - details: { - display: 'flex', - flexDirection: 'column', - gap: theme.spacing(2), - paddingBottom: theme.spacing(3), - }, -})); +import useSettingsStyles from '../common/useSettingsStyles'; const EditAttributesAccordion = ({ attribute, attributes, setAttributes, definitions, focusAttribute }) => { - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const features = useFeatures(); diff --git a/modern/src/settings/components/EditItemView.jsx b/modern/src/settings/components/EditItemView.jsx index d45855dd..61bc4161 100644 --- a/modern/src/settings/components/EditItemView.jsx +++ b/modern/src/settings/components/EditItemView.jsx @@ -1,37 +1,18 @@ import React from 'react'; import { useNavigate, useParams } from 'react-router-dom'; -import makeStyles from '@mui/styles/makeStyles'; import { Container, Button, Accordion, AccordionDetails, AccordionSummary, Skeleton, Typography, TextField, } from '@mui/material'; import { useCatch, useEffectAsync } from '../../reactHelper'; import { useTranslation } from '../../common/components/LocalizationProvider'; import PageLayout from '../../common/components/PageLayout'; - -const useStyles = makeStyles((theme) => ({ - container: { - marginTop: theme.spacing(2), - }, - buttons: { - marginTop: theme.spacing(2), - marginBottom: theme.spacing(2), - display: 'flex', - justifyContent: 'space-evenly', - '& > *': { - flexBasis: '33%', - }, - }, - details: { - display: 'flex', - flexDirection: 'column', - }, -})); +import useSettingsStyles from '../common/useSettingsStyles'; const EditItemView = ({ children, endpoint, item, setItem, defaultItem, validate, onItemSaved, menu, breadcrumbs, }) => { const navigate = useNavigate(); - const classes = useStyles(); + const classes = useSettingsStyles(); const t = useTranslation(); const { id } = useParams(); diff --git a/modern/src/settings/components/SettingsMenu.jsx b/modern/src/settings/components/SettingsMenu.jsx index 0f3ebbe5..6d8c0fd7 100644 --- a/modern/src/settings/components/SettingsMenu.jsx +++ b/modern/src/settings/components/SettingsMenu.jsx @@ -14,6 +14,7 @@ import TodayIcon from '@mui/icons-material/Today'; import PublishIcon from '@mui/icons-material/Publish'; import SmartphoneIcon from '@mui/icons-material/Smartphone'; import HelpIcon from '@mui/icons-material/Help'; +import CampaignIcon from '@mui/icons-material/Campaign'; import { Link, useLocation } from 'react-router-dom'; import { useSelector } from 'react-redux'; import { useTranslation } from '../../common/components/LocalizationProvider'; @@ -139,12 +140,20 @@ const SettingsMenu = () => { <Divider /> <List> {admin && ( - <MenuItem - title={t('settingsServer')} - link="/settings/server" - icon={<StorageIcon />} - selected={location.pathname === '/settings/server'} - /> + <> + <MenuItem + title={t('serverAnnouncement')} + link="/settings/announcement" + icon={<CampaignIcon />} + selected={location.pathname === '/settings/announcement'} + /> + <MenuItem + title={t('settingsServer')} + link="/settings/server" + icon={<StorageIcon />} + selected={location.pathname === '/settings/server'} + /> + </> )} <MenuItem title={t('settingsUsers')} |