diff --git a/src/client/app/components/HeaderButtonsComponent.tsx b/src/client/app/components/HeaderButtonsComponent.tsx index 5e289288e..cde5ef314 100644 --- a/src/client/app/components/HeaderButtonsComponent.tsx +++ b/src/client/app/components/HeaderButtonsComponent.tsx @@ -54,6 +54,7 @@ export default function HeaderButtonsComponent() { // The should ones tell if see but not selectable. shouldHomeButtonDisabled: true, shouldAdminButtonDisabled: true, + shouldUsersButtonDisabled: true, shouldGroupsButtonDisabled: true, shouldMetersButtonDisabled: true, shouldMapsButtonDisabled: true, @@ -88,6 +89,7 @@ export default function HeaderButtonsComponent() { ...prevState, shouldHomeButtonDisabled: pathname === '/', shouldAdminButtonDisabled: pathname === '/admin', + shouldUsersButtonDisabled: pathname === '/users', shouldGroupsButtonDisabled: pathname === '/groups', shouldMetersButtonDisabled: pathname === '/meters', shouldMapsButtonDisabled: pathname === '/maps', @@ -209,7 +211,7 @@ export default function HeaderButtonsComponent() { disabled={state.shouldAdminButtonDisabled} tag={Link} to="/admin"> - + }, { path: 'calibration', element: }, { path: 'maps', element: }, - { path: 'users/new', element: }, { path: 'units', element: }, { path: 'conversions', element: }, { path: 'users', element: } diff --git a/src/client/app/components/UnsavedWarningComponent.tsx b/src/client/app/components/UnsavedWarningComponent.tsx index 651c94eb4..68efef6c1 100644 --- a/src/client/app/components/UnsavedWarningComponent.tsx +++ b/src/client/app/components/UnsavedWarningComponent.tsx @@ -15,7 +15,7 @@ import translate from '../utils/translate'; export interface UnsavedWarningProps { changes: any; hasUnsavedChanges: boolean; - successMessage: LocaleDataKey; + successMessage: LocaleDataKey; failureMessage: LocaleDataKey; submitChanges: MutationTrigger; } @@ -31,14 +31,12 @@ export function UnsavedWarningComponent(props: UnsavedWarningProps) { submitChanges(changes) .unwrap() .then(() => { - //TODO translate me showSuccessNotification(translate('unsaved.success')); if (blocker.state === 'blocked') { blocker.proceed(); } }) .catch(() => { - //TODO translate me showErrorNotification(translate('unsaved.failure')); if (blocker.state === 'blocked') { blocker.proceed(); diff --git a/src/client/app/components/admin/AdminComponent.tsx b/src/client/app/components/admin/AdminComponent.tsx index 5ba19cdc6..b8666ed27 100644 --- a/src/client/app/components/admin/AdminComponent.tsx +++ b/src/client/app/components/admin/AdminComponent.tsx @@ -7,7 +7,7 @@ import { FormattedMessage } from 'react-intl'; import TooltipHelpComponent from '../../components/TooltipHelpComponent'; import TooltipMarkerComponent from '../TooltipMarkerComponent'; import PreferencesComponent from './PreferencesComponent'; -import ManageUsersLinkButtonComponent from './users/ManageUsersLinkButtonComponent'; +import AdminSideBar from './AdminSideBar'; /** * React component that defines the admin page @@ -15,41 +15,34 @@ import ManageUsersLinkButtonComponent from './users/ManageUsersLinkButtonCompone */ export default function AdminComponent() { - const bottomPaddingStyle: React.CSSProperties = { - paddingBottom: '15px' - }; + const [selectedPreference, setSelectedPreference] = React.useState('graph'); - const sectionTitleStyle: React.CSSProperties = { - fontWeight: 'bold', - margin: 0, - paddingBottom: '5px' - }; const titleStyle: React.CSSProperties = { - textAlign: 'center' + textAlign: 'start', + paddingLeft: '10px', + margin: 0 }; const tooltipStyle = { display: 'inline', fontSize: '50%' }; return ( -
- -
-

- +
+
+ + +

+

-
-
-
-

:

-
- -
+
+ +
+
+
-
diff --git a/src/client/app/components/admin/AdminSideBar.tsx b/src/client/app/components/admin/AdminSideBar.tsx new file mode 100644 index 000000000..2cac41d1a --- /dev/null +++ b/src/client/app/components/admin/AdminSideBar.tsx @@ -0,0 +1,54 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +import * as React from 'react'; +import translate from '../../utils/translate'; + +interface SidebarProps { + onSelectPreference: (preference: string) => void, + selectedPreference: string; +} + +/** + * Admin navigation side bar + * @param props Props for side bar + * @returns Admin navigation side bar + */ +export default function AdminSideBar(props: SidebarProps): React.JSX.Element { + return ( +
+
+ + + + +
+ +
+ ); +} diff --git a/src/client/app/components/admin/CreateUserModalComponent.tsx b/src/client/app/components/admin/CreateUserModalComponent.tsx new file mode 100644 index 000000000..30bc80e25 --- /dev/null +++ b/src/client/app/components/admin/CreateUserModalComponent.tsx @@ -0,0 +1,167 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +import * as React from 'react'; +import { useState } from 'react'; +import { Alert, Button, Col, Container, FormFeedback, FormGroup, Input, Label, Modal, ModalBody, ModalFooter, ModalHeader, Row } from 'reactstrap'; +import { FormattedMessage } from 'react-intl'; +import { UserRole } from '../../types/items'; +import { userApi } from '../../redux/api/userApi'; +import { NewUser } from '../../types/items'; +import { showErrorNotification, showSuccessNotification } from '../../utils/notifications'; +import translate from '../../utils/translate'; + +/** + * Defines the create user modal form + * @returns CreateUserModal component + */ +export default function CreateUserModal() { + const [showModal, setShowModal] = useState(false); + const [email, setEmail] = useState(''); + const [password, setPassword] = useState(''); + const [confirmPassword, setConfirmPassword] = useState(''); + const [passwordMatch, setPasswordMatch] = useState(true); + const [role, setRole] = useState(''); + const [createUser] = userApi.useCreateUserMutation(); + + const handleShowModal = () => setShowModal(true); + const handleCloseModal = () => { + setShowModal(false); + resetForm(); + }; + + const resetForm = () => { + setEmail(''); + setPassword(''); + setConfirmPassword(''); + setRole(''); + setPasswordMatch(true); + }; + + const handleSubmit = async () => { + if (password === confirmPassword) { + setPasswordMatch(true); + const userRole: UserRole = UserRole[role as keyof typeof UserRole]; + const newUser: NewUser = { email, role: userRole, password }; + createUser(newUser) + .unwrap() + .then(() => { + showSuccessNotification(translate('users.successfully.create.user')); + handleCloseModal(); + }) + .catch(() => { + showErrorNotification(translate('users.failed.to.create.user')); + }); + } else { + setPasswordMatch(false); + } + }; + + const isFormValid = email && password && confirmPassword === password && role; + + return ( + <> + + + + + + + + + + + + setEmail(e.target.value)} + required + /> + + + + {!passwordMatch && ( + + + {translate('user.password.mismatch')} + + + )} + + + + + setPassword(e.target.value)} + required + /> + + + + + + setConfirmPassword(e.target.value)} + invalid={confirmPassword !== password && confirmPassword !== ''} + required + /> + + + + + + + + + + + setRole(e.target.value)} + invalid={!role} + required + > + + {Object.entries(UserRole).map(([role, val]) => ( + + ))} + + + + + + + + + + + + + + + + ); +} \ No newline at end of file diff --git a/src/client/app/components/admin/PreferencesComponent.tsx b/src/client/app/components/admin/PreferencesComponent.tsx index fee69356a..4d980cd7a 100644 --- a/src/client/app/components/admin/PreferencesComponent.tsx +++ b/src/client/app/components/admin/PreferencesComponent.tsx @@ -16,13 +16,17 @@ import { showErrorNotification, showSuccessNotification } from '../../utils/noti import translate from '../../utils/translate'; import TimeZoneSelect from '../TimeZoneSelect'; import { defaultAdminState } from '../../redux/slices/adminSlice'; +import UserDetailComponent from './UsersDetailComponent'; +interface PreferencesProps { + selectedPreference: string; +} // TODO: Add warning for invalid data /** * @returns Preferences Component for Administrative use */ -export default function PreferencesComponent() { +export default function PreferencesComponent(props: PreferencesProps) { const { data: adminPreferences = defaultAdminState } = preferencesApi.useGetPreferencesQuery(); const [localAdminPref, setLocalAdminPref] = React.useState(cloneDeep(adminPreferences)); const [submitPreferences] = preferencesApi.useSubmitPreferencesMutation(); @@ -47,284 +51,305 @@ export default function PreferencesComponent() { successMessage='updated.preferences' failureMessage='failed.to.submit.changes' /> -
-

- {`${translate('default.site.title')}:`} -

- makeLocalChanges('displayTitle', e.target.value)} - maxLength={50} - /> -
-
-

- : -

- { - Object.values(ChartTypes).map(chartType => ( -
- -
-
-

- {translate('default.area.unit')} + {/* Date/Language Settings */} +

+

+ {translate('default.language')} +

+
+ +
+
+ +
+
+ +
+
+
+

+ {`${translate('default.time.zone')}:`} +

+ makeLocalChanges('defaultTimezone', e)} /> +
-

-
-
-
-

- {translate('default.language')} -

-
-
+
+

+ {`${translate('default.meter.maximum.value')}:`} +

+ makeLocalChanges('defaultMeterMaximumValue', e.target.value)} + maxLength={50} /> - English - -
-
-
+
+

+ {`${translate('default.meter.minimum.date')}:`} +

+ makeLocalChanges('defaultMeterMinimumDate', e.target.value)} + placeholder='YYYY-MM-DD HH:MM:SS' /> - Français - -
-
-
+
+

+ {`${translate('default.meter.maximum.date')}:`} +

+ makeLocalChanges('defaultMeterMaximumDate', e.target.value)} + placeholder='YYYY-MM-DD HH:MM:SS' /> - Español - -
-
-
-

- {`${translate('default.time.zone')}:`} -

- makeLocalChanges('defaultTimezone', e)} /> -
-
-

- {`${translate('default.warning.file.size')}:`} -

- makeLocalChanges('defaultWarningFileSize', e.target.value)} - maxLength={50} - /> -
-
-

- {`${translate('default.file.size.limit')}:`} -

- makeLocalChanges('defaultFileSizeLimit', e.target.value)} - maxLength={50} - /> -
-
-

- {`${translate('default.meter.reading.frequency')}:`} -

- makeLocalChanges('defaultMeterReadingFrequency', e.target.value)} - /> -
-
-

- {`${translate('default.meter.minimum.value')}:`} -

- makeLocalChanges('defaultMeterMinimumValue', e.target.value)} - maxLength={50} - /> -
-
-

- {`${translate('default.meter.maximum.value')}:`} -

- makeLocalChanges('defaultMeterMaximumValue', e.target.value)} - maxLength={50} - /> -
-
-

- {`${translate('default.meter.minimum.date')}:`} -

- makeLocalChanges('defaultMeterMinimumDate', e.target.value)} - placeholder='YYYY-MM-DD HH:MM:SS' - /> -
-
-

- {`${translate('default.meter.maximum.date')}:`} -

- makeLocalChanges('defaultMeterMaximumDate', e.target.value)} - placeholder='YYYY-MM-DD HH:MM:SS' - /> -
-
-

- {`${translate('default.meter.reading.gap')}:`} -

- makeLocalChanges('defaultMeterReadingGap', e.target.value)} - maxLength={50} - /> -
-
-

- {`${translate('default.meter.maximum.errors')}:`} -

- makeLocalChanges('defaultMeterMaximumErrors', e.target.value)} - maxLength={50} - /> -
-
-

- {`${translate('default.meter.disable.checks')}:`} -

- makeLocalChanges('defaultMeterDisableChecks', e.target.value)}> - {Object.keys(TrueFalseType).map(key => { - return (); - })} - -
-
-

- : -

- makeLocalChanges('defaultHelpUrl', e.target.value)} - /> -
+
+
+

+ {`${translate('default.meter.reading.gap')}:`} +

+ makeLocalChanges('defaultMeterReadingGap', e.target.value)} + maxLength={50} + /> +
+
+

+ {`${translate('default.meter.maximum.errors')}:`} +

+ makeLocalChanges('defaultMeterMaximumErrors', e.target.value)} + maxLength={50} + /> +
+
+

+ {`${translate('default.meter.disable.checks')}:`} +

+ makeLocalChanges('defaultMeterDisableChecks', e.target.value)}> + {Object.keys(TrueFalseType).map(key => { + return (); + })} + +
+ + } + + { + props.selectedPreference === 'users' && + <> + + + } diff --git a/src/client/app/components/admin/UserViewComponent.tsx b/src/client/app/components/admin/UserViewComponent.tsx new file mode 100644 index 000000000..845334232 --- /dev/null +++ b/src/client/app/components/admin/UserViewComponent.tsx @@ -0,0 +1,76 @@ +/* eslint-disable no-mixed-spaces-and-tabs */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +import * as React from 'react'; +import { Button, Input } from 'reactstrap'; +import { FormattedMessage } from 'react-intl'; +import { User, UserRole } from '../../types/items'; +import '../../styles/card-page.css'; +import { useState } from 'react'; +import ConfirmActionModalComponent from '../ConfirmActionModalComponent'; + +interface UserViewComponentProps { + user: User; + editUser: (e: React.ChangeEvent, user: User) => void; + deleteUser: (email: string) => void; +} + +const UserViewComponent: React.FC = ({ user, editUser, deleteUser }) => { + const [showDeleteConfirmation, setShowDeleteConfirmation] = useState(false); + + const handleDeleteConfirmation = () => { + setShowDeleteConfirmation(true); + }; + + const handleDeleteConfirm = () => { + deleteUser(user.email); + setShowDeleteConfirmation(false); + }; + + const handleDeleteCancel = () => { + setShowDeleteConfirmation(false); + }; + + const handleRoleChange = (e: React.ChangeEvent) => { + editUser(e, user); + }; + + return ( + <> + +
+
+ {user.email} +
+
+ + + {Object.entries(UserRole).map(([role, val]) => ( + + ))} + +
+
+ +
+
+ + ); +}; + +export default UserViewComponent; diff --git a/src/client/app/components/admin/UsersDetailComponent.tsx b/src/client/app/components/admin/UsersDetailComponent.tsx index fbc60b4ae..0458523b0 100644 --- a/src/client/app/components/admin/UsersDetailComponent.tsx +++ b/src/client/app/components/admin/UsersDetailComponent.tsx @@ -5,7 +5,7 @@ import { isEqual } from 'lodash'; import * as React from 'react'; import { FormattedMessage } from 'react-intl'; -import { Button, Input, Table } from 'reactstrap'; +import { Button } from 'reactstrap'; import TooltipHelpComponent from '../TooltipHelpComponent'; import { stableEmptyUsers, userApi } from '../../redux/api/userApi'; import { User, UserRole } from '../../types/items'; @@ -13,7 +13,8 @@ import { showErrorNotification, showSuccessNotification } from '../../utils/noti import translate from '../../utils/translate'; import TooltipMarkerComponent from '../TooltipMarkerComponent'; import { UnsavedWarningComponent } from '../UnsavedWarningComponent'; -import CreateUserLinkButtonComponent from './users/CreateUserLinkButtonComponent'; +import CreateUserModalComponent from './CreateUserModalComponent'; +import UserViewComponent from './UserViewComponent'; /** @@ -77,49 +78,27 @@ export default function UserDetailComponent() {

-
- - - - - - - - - - {localUsersChanges.map(user => ( - - - - - - ))} - -
{user.email} - editUser(e, user)} - > - {Object.entries(UserRole).map(([role, val]) => ( - - ))} - - - -
-
- - -
+
+ +
+
+ {localUsersChanges.map(user => ( + + ))} +
+
+
@@ -130,9 +109,10 @@ const titleStyle: React.CSSProperties = { textAlign: 'center' }; -const tableStyle: React.CSSProperties = { - marginLeft: '10%', - marginRight: '10%' + +const cardStyle: React.CSSProperties = { + margin: '.625rem', + padding: '.625rem' }; const buttonsStyle: React.CSSProperties = { @@ -143,4 +123,4 @@ const buttonsStyle: React.CSSProperties = { const tooltipStyle = { display: 'inline-block', fontSize: '50%' -}; +}; \ No newline at end of file diff --git a/src/client/app/components/router/ErrorComponent.tsx b/src/client/app/components/router/ErrorComponent.tsx index a95176c78..40107ce35 100644 --- a/src/client/app/components/router/ErrorComponent.tsx +++ b/src/client/app/components/router/ErrorComponent.tsx @@ -11,8 +11,13 @@ import translate from '../../utils/translate'; /** * @returns A error page that then returns to main dashboard page. */ + export default function ErrorComponent() { const nav = useNavigate(); + const refreshPage = () => { + nav('/'); + window.location.reload(); + }; return ( {/* Pass div as child prop to AppLayout */} @@ -31,6 +36,15 @@ export default function ErrorComponent() { > {translate('return.dashboard')} +

+ {translate('page.user.refresh.directions')} +

+
diff --git a/src/client/app/translations/data.ts b/src/client/app/translations/data.ts index aa9ff683a..1ee424253 100644 --- a/src/client/app/translations/data.ts +++ b/src/client/app/translations/data.ts @@ -14,7 +14,7 @@ const LocaleTranslationData = { "action": "Action", "add.new.meters": "Add new meters", "admin.only": "Admin Only", - "admin.panel": "Admin Panel", + "admin.settings": "Admin Settings", "alphabetically": "Alphabetically", "area": "Area:", "area.but.no.unit": "You have entered a nonzero area but no area unit.", @@ -129,7 +129,6 @@ const LocaleTranslationData = { "defaultGraphicUnit": "Default Graphic Unit:", "default.language": "Default Language", "default.meter.reading.frequency": "Default meter reading frequency", - "default.site.title": "Default Site Title", "default.warning.file.size": "Default Warning File Size", "default.file.size.limit": "Default File Size Limit", "default.help.url": "Help URL", @@ -366,6 +365,7 @@ const LocaleTranslationData = { "meter.type": "Type:", "minute": "Minute", "min": "min", + "misc": "Miscellaneous", "more.energy": "more energy", "name": "Name:", "navigation": "Navigation", @@ -379,6 +379,8 @@ const LocaleTranslationData = { "options": "Options", "page.choice.login": "Page choices & login", "page.choice.logout": "Page choices & logout", + "page.user.refresh.directions": "If clicking the 'Return to Dashboard button does not work then please click the button below to restart your OED session", + "page.restart.button": "Restart OED session", "password": "Password", "password.confirm": "Confirm password", "per.day": "Per Day", @@ -413,6 +415,7 @@ const LocaleTranslationData = { "show": "Show", "show.grid": "Show grid", "show.options": "Show options", + "site.title": "Site Title", "sort": "Sort", "submit": "Submit", "submitting": "submitting", @@ -424,7 +427,7 @@ const LocaleTranslationData = { "this.week": "This week", "threeD.area.incompatible": "
is incompatible
with area normalization", "threeD.date": "Date", - "threeD.date.range.too.long": 'Date Range Must be a year or less', + "threeD.date.range.too.long": "Date Range Must be a year or less", "threeD.incompatible": "Not Compatible with 3D", "threeD.rendering": "Rendering", "threeD.time": "Time", @@ -503,34 +506,34 @@ const LocaleTranslationData = { }, "fr": { "3D": "3D", - "400": "400 Bad Request\u{26A1}", + "400": "400 Bad Request", "404": "404 Introuvable", "4.weeks": "4 Semaines", - "action": "Action\u{26A1}", + "action": "Action", "add.new.meters": "Ajouter de Nouveaux Mètres", "admin.only": "Uniquement pour Les Administrateurs", - "admin.panel": "Panneau d'administration", + "admin.settings": "Paramètres d'administration", "alphabetically": "Alphabétiquement", "area": "Région:", - "area.but.no.unit": "You have entered a nonzero area but no area unit.\u{26A1}", - "area.error": "Please enter a number for area\u{26A1}", - "area.normalize": "Normalize by Area\u{26A1}", - "area.calculate.auto": "Calculate Group Area\u{26A1}", - "area.unit": "Area Unit:\u{26A1}", + "area.but.no.unit": "You have entered a nonzero area but no area unit.", + "area.error": "Please enter a number for area", + "area.normalize": "Normalize by Area", + "area.calculate.auto": "Calculate Group Area", + "area.unit": "Area Unit:", "AreaUnitType.feet": "pieds carrés", "AreaUnitType.meters": "mètre carré", - "AreaUnitType.none": "no unit\u{26A1}", + "AreaUnitType.none": "no unit", "ascending": "Ascendant", "as.meter.unit": "as meter unit\u{26A1}", "as.meter.defaultgraphicunit": "as meter default graphic unit\u{26A1}", "bar": "Bande", "bar.days.enter": "Enter in days and then hit enter\u{26A1}", "bar.interval": "Intervalle du Diagramme à Bandes", - "bar.raw": "Cannot create bar graph on raw units such as temperature\u{26A1}", + "bar.raw": "Cannot create bar graph on raw units such as temperature", "bar.stacking": "Empilage de Bandes", - "BooleanMeterTypes.false": "yes\u{26A1}", + "BooleanMeterTypes.false": "yes", "BooleanMeterTypes.meter": "valeur du compteur ou valeur par défaut", - "BooleanMeterTypes.true": "no\u{26A1}", + "BooleanMeterTypes.true": "no", "calibration.display": "résultat: ", "calibration.reset.button": "Réinitialiser", "calibration.save.database": "Enregistrer les modifications dans la base de données", @@ -540,54 +543,54 @@ const LocaleTranslationData = { "child.groups": "Groupes Enfants", "child.meters": "Mètres Enfants", "clear.graph.history": "Effacer l'historique", - "clipboard.copied": "Copied To Clipboard\u{26A1}", - "clipboard.not.copied": "Failed to Copy To Clipboard\u{26A1}", - "close": "Close\u{26A1}", + "clipboard.copied": "Copied To Clipboard", + "clipboard.not.copied": "Failed to Copy To Clipboard", + "close": "Close", "compare": "Comparer", - "compare.raw": "Cannot create comparison graph on raw units such as temperature\u{26A1}", - "confirm.action": "Confirm Action\u{26A1}", + "compare.raw": "Cannot create comparison graph on raw units such as temperature", + "confirm.action": "Confirm Action", "contact.us": "Contactez nous", - "conversion": "Conversion\u{26A1}", - "conversions": "Conversions\u{26A1}", - "ConversionType.conversion": "conversion\u{26A1}", - "conversion.bidirectional": "Bidirectional:\u{26A1}", - "conversion.create.destination.meter": "The destination cannot be a meter\u{26A1}", - "conversion.create.exists": "This conversion already exists\u{26A1}", - "conversion.create.exists.inverse": "This conversion already exists where one is not bidirectional\u{26A1}", - "conversion.create.mixed.represent": "A conversion cannot mix units of quantity, flow and raw\u{26A1}", - "conversion.create.source.destination.not": "Source or destination not set\u{26A1}", - "conversion.create.source.destination.same": "The source and destination cannot be the same for a conversion\u{26A1}", - "conversion.delete.conversion": "Delete Conversion\u{26A1}", - "conversion.destination": "Destination:\u{26A1}", - "conversion.dropdown.displayable.option.admin": "admin\u{26A1}", - "conversion.edit.conversion": "Edit Conversion\u{26A1}", - "conversion.failed.to.create.conversion": "Failed to create a conversion.\u{26A1}", - "conversion.failed.to.delete.conversion": "Failed to delete conversion\u{26A1}", - "conversion.failed.to.edit.conversion": "Failed to edit conversion.\u{26A1}", - "conversion.intercept": "Intercept:\u{26A1}", - "conversion.is.deleted": "Conversion removed from database\u{26A1}", - "conversion.represent": "Conversion Represent:\u{26A1}", - "conversion.select.destination": "Select a destination unit\u{26A1}", - "conversion.select.source": "Select a source unit\u{26A1}", - "conversion.slope": "Slope:\u{26A1}", - "conversion.source": "Source:\u{26A1}", - "conversion.submit.new.conversion": "Submit New Conversion\u{26A1}", - "conversion.successfully.create.conversion": "Successfully created a conversion.\u{26A1}", - "conversion.successfully.delete.conversion": "Successfully deleted conversion.\u{26A1}", - "conversion.successfully.edited.conversion": "Successfully edited conversion.\u{26A1}", - "create.conversion": "Create a Conversion\u{26A1}", + "conversion": "Conversion", + "conversions": "Conversions", + "ConversionType.conversion": "conversion", + "conversion.bidirectional": "Bidirectional:", + "conversion.create.destination.meter": "The destination cannot be a meter", + "conversion.create.exists": "This conversion already exists", + "conversion.create.exists.inverse": "This conversion already exists where one is not bidirectional", + "conversion.create.mixed.represent": "A conversion cannot mix units of quantity, flow and raw", + "conversion.create.source.destination.not": "Source or destination not set", + "conversion.create.source.destination.same": "The source and destination cannot be the same for a conversion", + "conversion.delete.conversion": "Delete Conversion", + "conversion.destination": "Destination:", + "conversion.dropdown.displayable.option.admin": "admin", + "conversion.edit.conversion": "Edit Conversion", + "conversion.failed.to.create.conversion": "Failed to create a conversion.", + "conversion.failed.to.delete.conversion": "Failed to delete conversion", + "conversion.failed.to.edit.conversion": "Failed to edit conversion.", + "conversion.intercept": "Intercept:", + "conversion.is.deleted": "Conversion removed from database", + "conversion.represent": "Conversion Represent:", + "conversion.select.destination": "Select a destination unit", + "conversion.select.source": "Select a source unit", + "conversion.slope": "Slope:", + "conversion.source": "Source:", + "conversion.submit.new.conversion": "Submit New Conversion", + "conversion.successfully.create.conversion": "Successfully created a conversion.", + "conversion.successfully.delete.conversion": "Successfully deleted conversion.", + "conversion.successfully.edited.conversion": "Successfully edited conversion.", + "create.conversion": "Create a Conversion", "create.group": "Créer un Groupe", "create.map": "Créer une carte", - "create.unit": "Create a Unit\u{26A1}", + "create.unit": "Create a Unit", "create.user": "Créer un utilisateur", "csv": "CSV", "csv.file": "Fichier CSV", "csv.common.param.gzip": "GzipComment", "csv.common.param.header.row": "Ligne d'en-tête", "csv.common.param.update": "Mise à jour", - "csv.download.size.limit": "Sorry you don't have permissions to download due to large number of points.\u{26A1}", - "csv.download.size.warning.size": "Total size of all files will be about (usually within 10% for large exports).\u{26A1}", - "csv.download.size.warning.verify": "Are you sure you want to download\u{26A1}", + "csv.download.size.limit": "Sorry you don't have permissions to download due to large number of points.", + "csv.download.size.warning.size": "Total size of all files will be about (usually within 10% for large exports).", + "csv.download.size.warning.verify": "Are you sure you want to download", "csv.readings.param.create.meter": "Créer un compteur", "csv.readings.param.cumulative": "Cumulatif", "csv.readings.param.cumulative.reset": "Réinitialisation cumulative", @@ -595,13 +598,13 @@ const LocaleTranslationData = { "csv.readings.param.cumulative.reset.start": "Début de réinitialisation cumulée", "csv.readings.param.duplications": "Duplications", "csv.readings.param.endOnly": "Heures de fin uniquement", - "csv.readings.param.honor.dst": "Honor Daylight Savings Time\u{26A1}", + "csv.readings.param.honor.dst": "Honor Daylight Savings Time", "csv.readings.param.lengthGap": "Écart de longueur", "csv.readings.param.length.variation": "Variation de longueur", "csv.readings.param.meter.name": "Nom du compteur", "csv.readings.param.refresh.hourlyReadings": "Actualiser les relevés horaires", "csv.readings.param.refresh.readings": "Actualiser les lectures quotidiennes", - "csv.readings.param.relaxed.parsing": "Relaxed Parsing\u{26A1}", + "csv.readings.param.relaxed.parsing": "Relaxed Parsing", "csv.readings.param.time.sort": "Tri de l'heure", "csv.readings.param.use.meter.zone": "Use Meter Zone\u{26A1}", "csv.readings.section.cumulative.data": "Données cumulées", @@ -615,27 +618,26 @@ const LocaleTranslationData = { "date.range": 'Plage de dates', "day": "Journée", "days": "Journées", - "decreasing": "decreasing\u{26A1}", - "default.area.normalize": "Normalize readings by area by default\u{26A1}", - "default.area.unit": "Default Area Unit\u{26A1}", - "default.bar.stacking": "Stack bars by default\u{26A1}", + "decreasing": "decreasing", + "default.area.normalize": "Normalize readings by area by default", + "default.area.unit": "Default Area Unit", + "default.bar.stacking": "Stack bars by default", "default.graph.type": "Type du Diagramme par Défaut", - "default.graph.settings": "Default Graph Settings\u{26A1}", - "defaultGraphicUnit": "Default Graphic Unit:\u{26A1}", + "default.graph.settings": "Default Graph Settings", + "defaultGraphicUnit": "Default Graphic Unit:", "default.language": "Langue par Défaut", - "default.meter.reading.frequency": "Default meter reading frequency\u{26A1}", - "default.site.title": "Titre du Site par Défaut", + "default.meter.reading.frequency": "Default meter reading frequency", "default.warning.file.size": "Taille du fichier d'avertissement par défaut", "default.file.size.limit": "Limite de taille de fichier par défaut", - "default.help.url": "Help URL\u{26A1}", + "default.help.url": "Help URL", "default.time.zone": "Zona Horaria Predeterminada", - "default.meter.minimum.value": "Default meter minimum reading value check\u{26A1}", - "default.meter.maximum.value": "Default meter maximum reading value check\u{26A1}", - "default.meter.minimum.date": "Default meter minimum reading date check\u{26A1}", - "default.meter.maximum.date": "Default meter maximum reading date check\u{26A1}", - "default.meter.reading.gap": "Default meter reading gap\u{26A1}", - "default.meter.maximum.errors": "Default maximum number of errors in meter reading\u{26A1}", - "default.meter.disable.checks": "Default meter disable checks\u{26A1}", + "default.meter.minimum.value": "Default meter minimum reading value check", + "default.meter.maximum.value": "Default meter maximum reading value check", + "default.meter.minimum.date": "Default meter minimum reading date check", + "default.meter.maximum.date": "Default meter maximum reading date check", + "default.meter.reading.gap": "Default meter reading gap", + "default.meter.maximum.errors": "Default maximum number of errors in meter reading", + "default.meter.disable.checks": "Default meter disable checks", "delete.group": "Supprimer le Groupe", "delete.map": "Supprimer la carte", "delete.user": "Supprimer l'utilisateur", @@ -664,9 +666,9 @@ const LocaleTranslationData = { "edit.unit": "Edit Unit\u{26A1}", "email": "E-mail", "enable": "Activer", - "error.bar": "Show error bars\u{26A1}", + "error.bar": "Show error bars", "export.graph.data": "Exporter les données du diagramme", - "export.raw.graph.data": "Export graph meter data\u{26A1}", + "export.raw.graph.data": "Export graph meter data", "failed.to.create.map": "Échec de la création d'une carte", "failed.to.delete.group": "N'a pas réussi à supprimer le groupe", "failed.to.delete.map": "Échec de la suppression d'une carte", @@ -674,56 +676,56 @@ const LocaleTranslationData = { "failed.to.link.graph": "Échec de lier le graphique", "failed.to.submit.changes": "Échec de l'envoi des modifications", "false": "Faux", - "gps": "GPS: latitude, longitude\u{26A1}", + "gps": "GPS: latitude, longitude", "graph": "Graphique", "graph.type": "Type du Diagramme", "group": "Groupe", "group.all.meters": "Tous les compteurs", - "group.area.calculate": "Calculate Group Area\u{26A1}", - "group.area.calculate.header": "Group Area will be set to \u{26A1}", - "group.area.calculate.error.header": "The following meters were excluded from the sum because:\u{26A1}", - "group.area.calculate.error.zero": ": area is unset or zero\u{26A1}", - "group.area.calculate.error.unit": ": nonzero area but no area unit\u{26A1}", - "group.area.calculate.error.no.meters": "No meters in group\u{26A1}", - "group.area.calculate.error.group.unit": "No group area unit\u{26A1}", - "group.create.nounit": "The default graphic unit was changed to no unit from \u{26A1}", - "group.delete.group": "Delete Group\u{26A1}", - "group.delete.issue": "is contained in the following groups and cannot be deleted\u{26A1}", - "group.details": "Group Details\u{26A1}", - "group.edit.cancelled": "THE CHANGE TO THE GROUP IS CANCELLED\u{26A1}", - "group.edit.changed": "will have its compatible units changed by the edit to this group\u{26A1}", - "group.edit.circular": "Adding this meter/group to this group creates a circular dependency.\u{26A1}", - "group.edit.empty": "Removing this meter/group means there are no child meters or groups which is not allowed. Delete the group if you want to remove it.\u{26A1}", - "group.edit.nocompatible": "would have no compatible units by the edit to this group so the edit is cancelled\u{26A1}", - "group.edit.nounit": "will have its compatible units changed and its default graphic unit set to \"no unit\" by the edit to this group\u{26A1}", - "group.edit.verify": "or continue (click OK)?\u{26A1}", - "group.failed.to.create.group": "Failed to create a group with message: \u{26A1}", - "group.failed.to.edit.group": "Failed to edit group with message: \u{26A1}", - "group.gps.error": "Please input a valid GPS: (latitude, longitude)\u{26A1}", - "group.hidden": "At least one group is not visible to you\u{26A1}", - "group.input.error": "Input invalid so group not created or edited.\u{26A1}", - "group.name.error": "Please enter a valid name: (must have at least one character that is not a space)\u{26A1}", + "group.area.calculate": "Calculate Group Area", + "group.area.calculate.header": "Group Area will be set to ", + "group.area.calculate.error.header": "The following meters were excluded from the sum because:", + "group.area.calculate.error.zero": ": area is unset or zero", + "group.area.calculate.error.unit": ": nonzero area but no area unit", + "group.area.calculate.error.no.meters": "No meters in group", + "group.area.calculate.error.group.unit": "No group area unit", + "group.create.nounit": "The default graphic unit was changed to no unit from ", + "group.delete.group": "Delete Group", + "group.delete.issue": "is contained in the following groups and cannot be deleted", + "group.details": "Group Details", + "group.edit.cancelled": "THE CHANGE TO THE GROUP IS CANCELLED", + "group.edit.changed": "will have its compatible units changed by the edit to this group", + "group.edit.circular": "Adding this meter/group to this group creates a circular dependency.", + "group.edit.empty": "Removing this meter/group means there are no child meters or groups which is not allowed. Delete the group if you want to remove it.", + "group.edit.nocompatible": "would have no compatible units by the edit to this group so the edit is cancelled", + "group.edit.nounit": "will have its compatible units changed and its default graphic unit set to \"no unit\" by the edit to this group", + "group.edit.verify": "or continue (click OK)?", + "group.failed.to.create.group": "Failed to create a group with message: ", + "group.failed.to.edit.group": "Failed to edit group with message: ", + "group.gps.error": "Please input a valid GPS: (latitude, longitude)", + "group.hidden": "At least one group is not visible to you", + "group.input.error": "Input invalid so group not created or edited.", + "group.name.error": "Please enter a valid name: (must have at least one character that is not a space)", "groups": "Groupes", - "group.successfully.create.group": "Successfully created a group.\u{26A1}", - "group.successfully.edited.group": "Successfully edited group.\u{26A1}", + "group.successfully.create.group": "Successfully created a group.", + "group.successfully.edited.group": "Successfully edited group.", "groups.select": "Sélectionnez des Groupes", - "has.no.data": "has no current data\u{26A1}", + "has.no.data": "has no current data", "has.used": "a utilisé", - "header.pages": "Pages\u{26A1}", - "header.options": "Options\u{26A1}", - "help": "Help\u{26A1}", - "help.admin.conversioncreate": "This page allows admins to create conversions. Please visit {link} for further details and information.\u{26A1}", - "help.admin.conversionedit": "This page allows admins to edit conversions. Please visit {link} for further details and information.\u{26A1}", - "help.admin.conversionview": "This page shows information on conversions. Please visit {link} for further details and information.\u{26A1}", - "help.admin.groupcreate": "This page allows admins to create goups. Please visit {link} for further details and information.\u{26A1}", - "help.admin.groupedit": "This page allows admins to edit groups. Please visit {link} for further details and information.\u{26A1}", - "help.admin.groupview": "This page allows admins to view groups. Please visit {link} for further details and information.\u{26A1}", - "help.admin.header": "This page is to allow site administrators to set values and manage users. Please visit {link} for further details and information.\u{26A1}", - "help.admin.mapview": "This page allows admins to view and edit maps. Please visit {link} for further details and information\u{26A1}", - "help.admin.metercreate": "This page allows admins to create meters. Please visit {link} for further details and information.\u{26A1}", - "help.admin.meteredit": "This page allows admins to edit meters. Please visit {link} for further details and information.\u{26A1}", - "help.admin.meterview": "This page allows admins to view and edit meters. Please visit {link} for further details and information.\u{26A1}", - "help.admin.unitcreate": "This page allows admins to create units. Please visit {link} for further details and information.\u{26A1}", + "header.pages": "Pages", + "header.options": "Options", + "help": "Help", + "help.admin.conversioncreate": "This page allows admins to create conversions. Please visit {link} for further details and information.", + "help.admin.conversionedit": "This page allows admins to edit conversions. Please visit {link} for further details and information.", + "help.admin.conversionview": "This page shows information on conversions. Please visit {link} for further details and information.", + "help.admin.groupcreate": "This page allows admins to create goups. Please visit {link} for further details and information.", + "help.admin.groupedit": "This page allows admins to edit groups. Please visit {link} for further details and information.", + "help.admin.groupview": "This page allows admins to view groups. Please visit {link} for further details and information.", + "help.admin.header": "This page is to allow site administrators to set values and manage users. Please visit {link} for further details and information.", + "help.admin.mapview": "This page allows admins to view and edit maps. Please visit {link} for further details and information", + "help.admin.metercreate": "This page allows admins to create meters. Please visit {link} for further details and information.", + "help.admin.meteredit": "This page allows admins to edit meters. Please visit {link} for further details and information.", + "help.admin.meterview": "This page allows admins to view and edit meters. Please visit {link} for further details and information.", + "help.admin.unitcreate": "This page allows admins to create units. Please visit {link} for further details and information.", "help.admin.unitedit": "This page allows admins to edit units. Please visit {link} for further details and information.", "help.admin.unitview": "This page shows information on units. Please visit {link} for further details and information.\u{26A1}", "help.admin.user": "This page allows admins to view and edit users. Please visit {link} for further details and information.\u{26A1}", @@ -744,49 +746,49 @@ const LocaleTranslationData = { "help.home.error.bar": "Toggle error bars with min and max value. Please visit {link} for further details and information.\u{26A1}", "help.home.export.graph.data": "With the \"Export graph data\" button, one can export the data for the graph when viewing either a line or bar graphic. The zoom and scroll feature on the line graph allows you to control the time frame of the data exported. The \"Export graph data\" button gives the data points for the graph and not the original meter data. The \"Export graph meter data\" gives the underlying meter data (line graphs only). Please visit {link} for further details and information on when meter data export is allowed.\u{26A1}", "help.home.history": "Permet à l'utilisateur de naviguer dans l'historique récent des graphiques. Veuillez visiter {link} pour plus de détails et d'informations.", - "help.home.navigation": "The \"Graph\" button goes to the graphic page, the \"Pages\" dropdown allows navigation to information pages, the \"Options\" dropdown allows selection of language, hide options and login/out and the \"Help\" button goes to the help pages. See help on the dropdown menus or the linked pages for further information.\u{26A1}", - "help.home.readings.per.day": "The number of readings shown for each day in a 3D graphic. Please visit {link} for further details and information.\u{26A1}", - "help.home.select.dateRange": "Select date range used in graphic display. For 3D graphic must be one year or less. Please visit {link} for further details and information.\u{26A1}", - "help.home.select.groups": "of any combination of groups and meters. You can choose which groups to view in your graphic from the \"Groups:\" dropdown menu. Note you can type in text to limit which groups are shown. The \"Groups\" option in the top, right \"Pages\" dropdown allows you to see more details about each group and, if you are an admin, to edit the groups. Please visit {link} for further details and information.\u{26A1}", - "help.home.select.maps": "Maps are a spatial representation of a site. You can choose which map to view from the \"Maps:\" dropdown menu. Note you can type in text to limit which maps are shown. Please visit {link} for further details and information.\u{26A1}", - "help.home.select.meters": "Meters are the basic unit of usage and generally represent the readings from a single usage meter. You can choose which meters to view in your graphic from the \"Meters:\" dropdown menu. Note you can type in text to limit which meters are shown. The \"Meters\" option in the top, right \"Pages\" dropdown allows you to see more details about each meter and, if you are an admin, to edit the meters. Please visit {link} for further details and information.\u{26A1}", - "help.home.select.rates": "Rates determine the time normalization for a line graph. Please visit {link} for further details and information\u{26A1}", - "help.home.select.units": "Units determine the values displayed in a graphic. Please visit {link} for further details and information\u{26A1}", - "help.home.toggle.chart.link": "With the \"Toggle chart link\" button a box appears that gives a URL that will recreate the current graphic. The link will recreate the graphic in the future, esp. for others to see. The person using this URL will be in a fully functional OED so they can make changes after the original graphic is displayed. You can help discourage changes by choosing the option to hide the option choice so they are not visible when using the URL. Please visit {link} for further details and information.\u{26A1}", - "help.meters.meterview": "This page shows information on meters. Please visit {link} for further details and information.\u{26A1}", + "help.home.navigation": "The \"Graph\" button goes to the graphic page, the \"Pages\" dropdown allows navigation to information pages, the \"Options\" dropdown allows selection of language, hide options and login/out and the \"Help\" button goes to the help pages. See help on the dropdown menus or the linked pages for further information.", + "help.home.readings.per.day": "The number of readings shown for each day in a 3D graphic. Please visit {link} for further details and information.", + "help.home.select.dateRange": "Select date range used in graphic display. For 3D graphic must be one year or less. Please visit {link} for further details and information.", + "help.home.select.groups": "of any combination of groups and meters. You can choose which groups to view in your graphic from the \"Groups:\" dropdown menu. Note you can type in text to limit which groups are shown. The \"Groups\" option in the top, right \"Pages\" dropdown allows you to see more details about each group and, if you are an admin, to edit the groups. Please visit {link} for further details and information.", + "help.home.select.maps": "Maps are a spatial representation of a site. You can choose which map to view from the \"Maps:\" dropdown menu. Note you can type in text to limit which maps are shown. Please visit {link} for further details and information.", + "help.home.select.meters": "Meters are the basic unit of usage and generally represent the readings from a single usage meter. You can choose which meters to view in your graphic from the \"Meters:\" dropdown menu. Note you can type in text to limit which meters are shown. The \"Meters\" option in the top, right \"Pages\" dropdown allows you to see more details about each meter and, if you are an admin, to edit the meters. Please visit {link} for further details and information.", + "help.home.select.rates": "Rates determine the time normalization for a line graph. Please visit {link} for further details and information", + "help.home.select.units": "Units determine the values displayed in a graphic. Please visit {link} for further details and information", + "help.home.toggle.chart.link": "With the \"Toggle chart link\" button a box appears that gives a URL that will recreate the current graphic. The link will recreate the graphic in the future, esp. for others to see. The person using this URL will be in a fully functional OED so they can make changes after the original graphic is displayed. You can help discourage changes by choosing the option to hide the option choice so they are not visible when using the URL. Please visit {link} for further details and information.", + "help.meters.meterview": "This page shows information on meters. Please visit {link} for further details and information.", "here": "ici", "hide": "Cacher", "hide.options": "Options de quai", - "hide.options.in.link": "Hide options in link\u{26A1}", + "hide.options.in.link": "Hide options in link", "home": "Accueil", - "hour": "Hour\u{26A1}", - "identifier": "Identifier:\u{26A1}", + "hour": "Hour", + "identifier": "Identifier:", "import.meter.readings": "Importer des Relevés de Mètres", - "incompatible.groups": "Incompatible Groups\u{26A1}", - "incompatible.meters": "Incompatible Meters\u{26A1}", - "incompatible.units": "Incompatible Units\u{26A1}", - "increasing": "increasing\u{26A1}", + "incompatible.groups": "Incompatible Groups", + "incompatible.meters": "Incompatible Meters", + "incompatible.units": "Incompatible Units", + "increasing": "increasing", "info": " pour plus d'informations. ", - "initializing": "Initializing\u{26A1}", - "input.gps.coords.first": "input GPS coordinate that corresponds to the point: \u{26A1}", - "input.gps.coords.second": "in this format -> latitude,longitude\u{26A1}", - "input.gps.range": "Coordonnée GPS invalide, la latitude doit être un nombre entier entre -90 et 90, la longitude doit être un nombre entier entre -180 et 180. You input: \u{26A1}", + "initializing": "Initializing", + "input.gps.coords.first": "input GPS coordinate that corresponds to the point: ", + "input.gps.coords.second": "in this format -> latitude,longitude", + "input.gps.range": "Coordonnée GPS invalide, la latitude doit être un nombre entier entre -90 et 90, la longitude doit être un nombre entier entre -180 et 180. You input: ", "insufficient.readings": "Données de lectures insuffisantes pour la comparaison de processus pour ", - "invalid.number": "Please submit a valid number (between 0 and 2.0)\u{26A1}", + "invalid.number": "Please submit a valid number (between 0 and 2.0)", "invalid.token.login": "Le jeton a expiré. Connectez-vous à nouveau.", - "invalid.token.login.admin": "Le jeton a expiré. Please log in again to view this page.\u{26A1}", + "invalid.token.login.admin": "Le jeton a expiré. Please log in again to view this page.", "language": "Langue", "last.four.weeks": "Quatre dernières semaines", "last.week": "La semaine dernière", - "leave": "Leave\u{26A1}", + "leave": "Leave", "less.energy": "moins d'énergie", "line": "Ligne", "log.in": "Se Connecter", "log.out": "Se Déconnecter", "login.failed": "Echec de la connexion", - "login.success": "Login Successful\u{26A1}", + "login.success": "Login Successful", "logo": "Logo", - "manage": "Manage\u{26A1}", + "manage": "Manage", "map": "Carte", "maps": "Plans", "map.bad.load": "Fichier image de la carte requis", @@ -816,27 +818,27 @@ const LocaleTranslationData = { "map.new.upload": "Téléchargez l'image de la carte pour commencer.", "map.notify.calibration.needed": "Étalonnage nécessaire pour l'affichage", "map.upload.new.file": "Refaire", - "max": "max\u{26A1}", + "max": "max", "menu": "Menu", "meter": "Mèter", "meters": "Mèters", - "meter.create": "Create a Meter\u{26A1}", - "meter.cumulative": "Cumulative:\u{26A1}", - "meter.cumulativeReset": "Cumulative Reset:\u{26A1}", - "meter.cumulativeResetEnd": "Cumulative Reset End:\u{26A1}", - "meter.cumulativeResetStart": "Cumulative Reset Start:\u{26A1}", + "meter.create": "Create a Meter", + "meter.cumulative": "Cumulative:", + "meter.cumulativeReset": "Cumulative Reset:", + "meter.cumulativeResetEnd": "Cumulative Reset End:", + "meter.cumulativeResetStart": "Cumulative Reset Start:", "meter.enabled": "Mises à Jour du Mèters", - "meter.endOnlyTime": "End Only Time:\u{26A1}", - "meter.endTimeStamp": "End Time Stamp:\u{26A1}", - "meter.minVal": "Minimum Reading Value Check\u{26A1}", - "meter.maxVal": "Maximum Reading Value Check\u{26A1}", - "meter.minDate": "Minimum Reading Date Check\u{26A1}", - "meter.maxDate": "Maximum Reading Date Check\u{26A1}", - "meter.maxError": "Maximum Number of Errors Check\u{26A1}", - "meter.disableChecks": "Disable Checks\u{26A1}", - "meter.failed.to.create.meter": "Failed to create a meter with message: \u{26A1}", - "meter.failed.to.edit.meter": "Failed to edit meter with message: \u{26A1}", - "meter.hidden": "At least one meter is not visible to you\u{26A1}", + "meter.endOnlyTime": "End Only Time:", + "meter.endTimeStamp": "End Time Stamp:", + "meter.minVal": "Minimum Reading Value Check", + "meter.maxVal": "Maximum Reading Value Check", + "meter.minDate": "Minimum Reading Date Check", + "meter.maxDate": "Maximum Reading Date Check", + "meter.maxError": "Maximum Number of Errors Check", + "meter.disableChecks": "Disable Checks", + "meter.failed.to.create.meter": "Failed to create a meter with message: ", + "meter.failed.to.edit.meter": "Failed to edit meter with message: ", + "meter.hidden": "At least one meter is not visible to you", "meter.id": "Identifiant du Mèters", "meter.input.error": "Input invalid so meter not created or edited.\u{26A1}", "meter.unit.change.requires": "needs to be changed before changing this unit's type\u{26A1}", @@ -846,84 +848,86 @@ const LocaleTranslationData = { "meter.is.enabled": "Mises à Jour Activées", "meter.is.not.displayable": "Affichage Désactivé", "meter.is.not.enabled": "Mises à Jour Désactivées", - "meter.unit.is.not.editable": "This meter's unit cannot be changed and was put back to the original value because: \u{26A1}", - "meter.previousEnd": "Previous End Time Stamp:\u{26A1}", - "meter.reading": "Reading:\u{26A1}", - "meter.readingDuplication": "Reading Duplication:\u{26A1}", - "meter.readingFrequency": "Reading Frequency\u{26A1}", - "meter.readingGap": "Reading Gap:\u{26A1}", - "meter.readingVariation": "Reading Variation:\u{26A1}", - "meter.startTimeStamp": "Start Time Stamp:\u{26A1}", - "meter.successfully.create.meter": "Successfully created a meter.\u{26A1}", - "meter.successfully.edited.meter": "Successfully edited meter.\u{26A1}", - "meter.timeSort": "Time Sort:\u{26A1}", + "meter.unit.is.not.editable": "This meter's unit cannot be changed and was put back to the original value because: ", + "meter.previousEnd": "Previous End Time Stamp:", + "meter.reading": "Reading:", + "meter.readingDuplication": "Reading Duplication:", + "meter.readingFrequency": "Reading Frequency", + "meter.readingGap": "Reading Gap:", + "meter.readingVariation": "Reading Variation:", + "meter.startTimeStamp": "Start Time Stamp:", + "meter.successfully.create.meter": "Successfully created a meter.", + "meter.successfully.edited.meter": "Successfully edited meter.", + "meter.timeSort": "Time Sort:", "meter.time.zone": "fuseau horaire du mètre", "meter.type": "Type de Mèters", - "minute": "Minute\u{26A1}", - "min": "min\u{26A1}", + "minute": "Minute", + "min": "min", + "misc": "Divers", "more.energy": "plus d'énergie", "name": "Nom:", "navigation": "Navigation", - "need.more.points": "Need more points\u{26A1}", - "no": "no\u{26A1}", + "need.more.points": "Need more points", + "no": "no", "note": "Noter:", - "no.data.in.range": "No Data In Date Range\u{26A1}", + "no.data.in.range": "No Data In Date Range", "oed": "Tableau de Bord Ouvert d'énergie", "oed.description": "Le Tableau de Bord Ouvert d'énergie est un projet open source indépendant. ", - "oed.version": "OED version \u{26A1}", + "oed.version": "OED version ", "options": "Options", - "page.choice.login": "Page choices & login\u{26A1}", - "page.choice.logout": "Page choices & logout\u{26A1}", + "page.choice.login": "Page choices & login", + "page.choice.logout": "Page choices & logout", "password": "Mot de passe", - "password.confirm": "Confirm password\u{26A1}", - "per.day": "Per Day\u{26A1}", - "per.hour": "Per Hour\u{26A1}", - "per.minute": "Per Minute\u{26A1}", - "per.second": "Per Second\u{26A1}", + "password.confirm": "Confirm password", + "per.day": "Per Day", + "per.hour": "Per Hour", + "per.minute": "Per Minute", + "per.second": "Per Second", "projected.to.be.used": "projeté pour être utilisé", "radar": "Radar", - "radar.lines.incompatible": "These meters/groups are not compatible for radar graphs\u{26A1}", - "radar.no.data": "There are no readings:
likely the data range is outside meter/group reading range\u{26A1}", - "rate": "Rate\u{26A1}", - "reading": "Reading:\u{26A1}", - "redo.cik.and.refresh.db.views": "Processing changes. This may take a while\u{26A1}", - "readings.per.day": "Readings per Day\u{26A1}", + "radar.lines.incompatible": "These meters/groups are not compatible for radar graphs", + "radar.no.data": "There are no readings:
likely the data range is outside meter/group reading range", + "rate": "Rate", + "reading": "Reading:", + "redo.cik.and.refresh.db.views": "Processing changes. This may take a while", + "readings.per.day": "Readings per Day", "redraw": "Redessiner", - "remove": "Remove\u{26A1}", + "remove": "Remove", "restore": "Restaurer", - "return.dashboard": "Return To Dashboard\u{26A1}", - "role": "Role\u{26A1}", - "save.all": "Save all\u{26A1}", - "save.map.edits": "Save map edits\u{26A1}", + "return.dashboard": "Return To Dashboard", + "role": "Rôle", + "save.all": "Sauver tous", + "save.map.edits": "Enregistrer les modifications de la carte", "save.meter.edits": "Enregistrer les modifications de compteur", - "save.role.changes": "Save role changes\u{26A1}", - "second": "Second\u{26A1}", + "save.role.changes": "Enregistrer les modifications de rôle", + "second": "Second", "select.groups": "Sélectionnez des Groupes", - "select.map": "Select Map\u{26A1}", - "select.meter.type": "Select Meter Type\u{26A1}", + "select.map": "Select Map", + "select.meter.type": "Select Meter Type", "select.meter": "Sélectionnez de Mètres", - "select.meter.group": "Select meter or group to graph\u{26A1}", + "select.meter.group": "Select meter or group to graph", "select.meters": "Sélectionnez des Mètres", - "select.unit": "Select Unit\u{26A1}", + "select.unit": "Select Unit", "show": "Montrer", - "show.grid": "Show grid\u{26A1}", + "show.grid": "Show grid", "show.options": "Options de désancrage", "sort": "Trier", + "site.title": "Titre du site", "submit": "Soumettre", - "submitting": "submitting\u{26A1}", + "submitting": "submitting", "submit.changes": "Soumettre les changements", - "submit.new.user": "Submit new user\u{26A1}", - "the.unit.of.meter": "The unit of meter\u{26A1}", + "submit.new.user": "Submit new user", + "the.unit.of.meter": "The unit of meter", "this.four.weeks": "Cette quatre semaines", "this.week": "Cette semaine", - "threeD.area.incompatible": "
is incompatible
with area normalization\u{26A1}", + "threeD.area.incompatible": "
is incompatible
with area normalization", "threeD.date": "Date", - "threeD.date.range.too.long": "Date Range Must be a year or less\u{26A1}", - "threeD.incompatible": "Not Compatible with 3D\u{26A1}", - 'threeD.rendering': "Rendering\u{26A1}", + "threeD.date.range.too.long": "Date Range Must be a year or less", + "threeD.incompatible": "Not Compatible with 3D", + "threeD.rendering": "Rendering", "threeD.time": "Temps", - 'threeD.x.axis.label': 'Heures de la journée', - 'threeD.y.axis.label': 'Jours de l\'année calendaire', + "threeD.x.axis.label": "Heures de la journée", + "threeD.y.axis.label": "Jours de l'année calendaire", "timezone.no": "Pas de fuseau horaire", "TimeSortTypes.decreasing": "décroissant", "TimeSortTypes.increasing": "en augmentant", @@ -932,50 +936,50 @@ const LocaleTranslationData = { "toggle.link": "Bascule du lien du diagramme", "total": "total", "true": "Vrai", - "TrueFalseType.false": "no\u{26A1}", - "TrueFalseType.true": "yes\u{26A1}", - "undefined": "undefined\u{26A1}", - "unit": "Unit\u{26A1}", - "UnitRepresentType.quantity": "quantity\u{26A1}", - "UnitRepresentType.flow": "flow\u{26A1}", - "UnitRepresentType.raw": "raw\u{26A1}", - "UnitType.unit": "unit\u{26A1}", - "UnitType.meter": "meter\u{26A1}", - "UnitType.suffix": "suffix\u{26A1}", - "unit.delete.failure": "Failed to deleted unit with error: \u{26A1}", - "unit.delete.success": "Successfully deleted unit\u{26A1}", - "unit.delete.unit": "Delete Unit\u{26A1}", - "unit.destination.error": "as the destination unit\u{26A1}", - "unit.dropdown.displayable.option.none": "None\u{26A1}", - "unit.dropdown.displayable.option.all": "All\u{26A1}", - "unit.dropdown.displayable.option.admin": "admin\u{26A1}", - "unit.failed.to.create.unit": "Failed to create a unit.\u{26A1}", - "unit.failed.to.delete.unit": "Delete cannot be done because this unit is used by the following\u{26A1}", - "unit.failed.to.edit.unit": "Failed to edit unit.\u{26A1}", - "unit.input.error": "Input invalid so unit not created or edited.\u{26A1}", - "unit.none": "no unit\u{26A1}", - "unit.preferred.display": "Preferred Display:\u{26A1}", - "unit.represent": "Unit Represent:\u{26A1}", - "unit.sec.in.rate": "Sec in Rate:\u{26A1}", - "unit.source.error": "as the source unit\u{26A1}", - "unit.submit.new.unit": "Submit New Unit\u{26A1}", - "unit.successfully.create.unit": "Successfully created a unit.\u{26A1}", - "unit.successfully.edited.unit": "Successfully edited unit.\u{26A1}", - "unit.suffix": "Suffix:\u{26A1}", - "unit.type.of.unit": "Type of Unit:\u{26A1}", - "unit.type.of.unit.suffix": "Added suffix will set type of unit to suffix\u{26A1}", - "units": "Units\u{26A1}", - "unsaved.failure": "Changes failed to save\u{26A1}", - "unsaved.success": "Changes saved\u{26A1}", - "unsaved.warning": "You have unsaved change(s). Are you sure you want to leave?\u{26A1}", + "TrueFalseType.false": "no", + "TrueFalseType.true": "yes", + "undefined": "undefined", + "unit": "Unit", + "UnitRepresentType.quantity": "quantity", + "UnitRepresentType.flow": "flow", + "UnitRepresentType.raw": "raw", + "UnitType.unit": "unit", + "UnitType.meter": "meter", + "UnitType.suffix": "suffix", + "unit.delete.failure": "Failed to deleted unit with error: ", + "unit.delete.success": "Successfully deleted unit", + "unit.delete.unit": "Delete Unit", + "unit.destination.error": "as the destination unit", + "unit.dropdown.displayable.option.none": "None", + "unit.dropdown.displayable.option.all": "All", + "unit.dropdown.displayable.option.admin": "admin", + "unit.failed.to.create.unit": "Failed to create a unit.", + "unit.failed.to.delete.unit": "Delete cannot be done because this unit is used by the following", + "unit.failed.to.edit.unit": "Failed to edit unit.", + "unit.input.error": "Input invalid so unit not created or edited.", + "unit.none": "no unit", + "unit.preferred.display": "Preferred Display:", + "unit.represent": "Unit Represent:", + "unit.sec.in.rate": "Sec in Rate:", + "unit.source.error": "as the source unit", + "unit.submit.new.unit": "Submit New Unit", + "unit.successfully.create.unit": "Successfully created a unit.", + "unit.successfully.edited.unit": "Successfully edited unit.", + "unit.suffix": "Suffix:", + "unit.type.of.unit": "Type of Unit:", + "unit.type.of.unit.suffix": "Added suffix will set type of unit to suffix", + "units": "Units", + "unsaved.failure": "Changes failed to save", + "unsaved.success": "Changes saved", + "unsaved.warning": "You have unsaved change(s). Are you sure you want to leave?", "update": "update", - "updated.map.with.calibration": "Updated map with renewed calibration\u{26A1}", - "updated.map.without.calibration": "Updated map(uncalibrated)\u{26A1}", - "updated.map.without.new.calibration": "Updated map\u{26A1}", + "updated.map.with.calibration": "Updated map with renewed calibration", + "updated.map.without.calibration": "Updated map(uncalibrated)", + "updated.map.without.new.calibration": "Updated map", "updated.preferences": "Préférences mises à jour", "upload.meters.csv": "Télécharger le fichier CSV mètres", - "upload.new.map.with.calibration": "Uploaded new calibrated map\u{26A1}", - "upload.new.map.without.calibration": "Uploaded new map(uncalibrated)\u{26A1}", + "upload.new.map.with.calibration": "Uploaded new calibrated map", + "upload.new.map.without.calibration": "Uploaded new map(uncalibrated)", "upload.readings.csv": "Télécharger les lectures fichier CSV", "used.so.far": "utilisé jusqu'à présent", "used.this.time": "utilisé cette fois", @@ -992,7 +996,7 @@ const LocaleTranslationData = { "visit": " ou visitez notre ", "website": "site web", "week": "Semaine", - "yes": " yes\u{26A1}", + "yes": " yes", "yesterday": "Hier", "you.cannot.create.a.cyclic.group": "Vous ne pouvez pas créer un groupe cyclique" }, @@ -1004,7 +1008,7 @@ const LocaleTranslationData = { "action": "Acción", "add.new.meters": "Agregar nuevos medidores", "admin.only": "Solo administrador", - "admin.panel": "Panel de administración", + "admin.settings": "Configuración de administrador", "alphabetically": "Alfabéticamente", "area": "Área:", "area.but.no.unit": "Ha ingresado un área distinta a cero sin unidad de área.", @@ -1356,6 +1360,7 @@ const LocaleTranslationData = { "meter.type": "Tipo:", "minute": "Minuto", "min": "mínimo", + "misc": "Misceláneos", "more.energy": "más energía", "name": "Nombre:", "navigation": "Navegación", @@ -1404,6 +1409,7 @@ const LocaleTranslationData = { "show.grid": "Mostrar rejilla", "show.options": "Mostrar opciones", "sort": "Ordenar", + "site.title": "Título del sitio", "submit": "Enviar", "submitting": "Enviando", "submit.changes": "Ingresar los cambios", @@ -1417,7 +1423,7 @@ const LocaleTranslationData = { "threeD.date.range.too.long": 'El rango de datos debe ser un año o menos', "threeD.incompatible": "No es compatible con 3D", "threeD.rendering": "Renderización", - "threeD.time": 'Hora', + "threeD.time": "Hora", "threeD.x.axis.label": "Horas del día", "threeD.y.axis.label": "Días del año calendario", "TimeSortTypes.decreasing": "decreciente", @@ -1498,4 +1504,4 @@ export type TranslationKey = keyof typeof LocaleTranslationData export type LocaleDataKey = keyof typeof LocaleTranslationData['en'] | keyof typeof LocaleTranslationData['es'] | - keyof typeof LocaleTranslationData['fr'] + keyof typeof LocaleTranslationData['fr']; \ No newline at end of file diff --git a/src/client/app/translations/locales/en.ts b/src/client/app/translations/locales/en.ts new file mode 100644 index 000000000..266b7dadf --- /dev/null +++ b/src/client/app/translations/locales/en.ts @@ -0,0 +1,492 @@ +export default { + "3D": "3D", + "400": "400 Bad Request", + "404": "404 Not Found", + "4.weeks": "4 Weeks", + "action": "Action", + "add.new.meters": "Add new meters", + "admin.only": "Admin Only", + "admin.settings": "Admin Settings", + "alphabetically": "Alphabetically", + "area": "Area:", + "area.but.no.unit": "You have entered a nonzero area but no area unit.", + "area.error": "Please enter a number for area", + "area.normalize": "Normalize by Area", + "area.calculate.auto": "Calculate Group Area", + "area.unit": "Area Unit:", + "AreaUnitType.feet": "sq. feet", + "AreaUnitType.meters": "sq. meters", + "AreaUnitType.none": "no unit", + "ascending": "Ascending", + "as.meter.unit": "as meter unit", + "as.meter.defaultgraphicunit": "as meter unit", + "bar": "Bar", + "bar.interval": "Bar Interval", + "bar.raw": "Cannot create bar graph on raw units such as temperature", + "bar.stacking": "Bar Stacking", + "BooleanMeterTypes.false": "no", + "BooleanMeterTypes.meter": "meter or default value", + "BooleanMeterTypes.true": "yes", + "calibration.display": "result:", + "calibration.reset.button": "Reset", + "calibration.save.database": "Save changes to database", + "calibration.submit.button": "Submit", + "cancel": "Cancel", + "child.groups": "Child Groups", + "child.meters": "Child Meters", + "clear.graph.history": "Clear History", + "clipboard.copied": "Copied To Clipboard", + "clipboard.not.copied": "Failed to Copy To Clipboard", + "close": "Close", + "compare": "Compare", + "compare.raw": "Cannot create comparison graph on raw units such as temperature", + "confirm.action": "Confirm Action", + "contact.us": "Contact us", + "conversion": "Conversion", + "conversions": "Conversions", + "ConversionType.conversion": "conversion", + "conversion.bidirectional": "Bidirectional:", + "conversion.create.destination.meter": "The destination cannot be a meter", + "conversion.create.exists": "This conversion already exists", + "conversion.create.exists.inverse": "This conversion already exists where one is not bidirectional", + "conversion.create.mixed.represent": "A conversion cannot mix units of quantity, flow and raw", + "conversion.create.source.destination.not": "Source or destination not set", + "conversion.create.source.destination.same": "The source and destination cannot be the same for a conversion", + "conversion.delete.conversion": "Delete Conversion", + "conversion.destination": "Destination:", + "conversion.dropdown.displayable.option.admin": "Admin", + "conversion.edit.conversion": "Edit Conversion", + "conversion.failed.to.create.conversion": "Failed to create a conversion.", + "conversion.failed.to.delete.conversion": "Failed to delete conversion", + "conversion.failed.to.edit.conversion": "Failed to edit conversion.", + "conversion.intercept": "Intercept:", + "conversion.is.deleted": "Conversion removed from database", + "conversion.represent": "Conversion Represent:", + "conversion.select.destination": "Select a destination unit", + "conversion.select.source": "Select a source unit", + "conversion.slope": "Slope:", + "conversion.source": "Source:", + "conversion.submit.new.conversion": "Submit New Conversion", + "conversion.successfully.create.conversion": "Successfully created a conversion.", + "conversion.successfully.delete.conversion": "Successfully deleted conversion.", + "conversion.successfully.edited.conversion": "Successfully edited conversion.", + "create.conversion": "Create a Conversion", + "create.group": "Create a Group", + "create.map": "Create a Map", + "create.user": "Create a User", + "create.unit": "Create a Unit", + "csv": "CSV", + "csv.file": "CSV File", + "csv.common.param.gzip": "Gzip", + "csv.common.param.header.row": "Header Row", + "csv.common.param.update": "Update", + "csv.download.size.limit": "Sorry you don't have permissions to download due to large number of points.", + "csv.download.size.warning.size": "Total size of all files will be about (usually within 10% for large exports).", + "csv.download.size.warning.verify": "Are you sure you want to download", + "csv.readings.param.create.meter": "Create Meter", + "csv.readings.param.cumulative": "Cumulative", + "csv.readings.param.cumulative.reset": "Cumulative Reset", + "csv.readings.param.cumulative.reset.end": "Cumulative Reset End", + "csv.readings.param.cumulative.reset.start": "Cumulative Reset Start", + "csv.readings.param.duplications": "Duplications", + "csv.readings.param.endOnly": "End Only times", + "csv.readings.param.honor.dst": "Honor Daylight Savings Time", + "csv.readings.param.lengthGap": "Length Gap", + "csv.readings.param.length.variation": "Length Variation", + "csv.readings.param.meter.name": "Meter name", + "csv.readings.param.refresh.hourlyReadings": "Refresh Hourly Readings", + "csv.readings.param.refresh.readings": "Refresh Daily Readings", + "csv.readings.param.relaxed.parsing": "Relaxed Parsing", + "csv.readings.param.time.sort": "Time Sort", + "csv.readings.section.cumulative.data": "Cumulative Data", + "csv.readings.section.time.gaps": "Time Gaps", + "csv.submit.button": "Submit CSV Data", + "csv.tab.meters": "Meters", + "csv.tab.readings": "Readings", + "csv.upload.meters": "Upload Meters CSV ", + "csv.upload.readings": "Upload Readings CSV ", + "date.range": "Date Range", + "day": "Day", + "days": "Days", + "decreasing": "decreasing", + "default.area.normalize": "Normalize readings by area by default", + "default.area.unit": "Default Area Unit", + "default.bar.stacking": "Stack bars by default", + "default.graph.type": "Default Graph Type", + "default.graph.settings": "Default Graph Settings", + "defaultGraphicUnit": "Default Graphic Unit:", + "default.language": "Default Language", + "default.meter.reading.frequency": "Default meter reading frequency", + "default.warning.file.size": "Default Warning File Size", + "default.file.size.limit": "Default File Size Limit", + "default.help.url": "Help URL", + "default.time.zone": "Default Time Zone", + "default.meter.minimum.value": "Default meter minimum reading value check", + "default.meter.maximum.value": "Default meter maximum reading value check", + "default.meter.minimum.date": "Default meter minimum reading date check", + "default.meter.maximum.date": "Default meter maximum reading date check", + "default.meter.reading.gap": "Default meter reading gap", + "default.meter.maximum.errors": "Default maximum number of errors in meter reading", + "default.meter.disable.checks": "Default meter disable checks", + "delete.group": "Delete Group", + "delete.map": "Delete Map", + "delete.user": "Delete User", + "descending": "Descending", + "discard.changes": "Discard Changes", + "disable": "Disable", + "displayable": "Displayable:", + "DisplayableType.none": "none", + "DisplayableType.all": "all", + "DisplayableType.admin": "admin", + "error.bounds": "Must be between {min} and {max}.", + "error.displayable": "Displayable will be set to false because no unit is selected.", + "error.displayable.meter": "Meter units will set displayable to none.", + "error.greater": "Must be greater than {min}.", + "error.gps": "Latitude must be between -90 and 90, and Longitude must be between -180 and 180.", + "error.negative": "Cannot be negative.", + "error.required": "Required field.", + "error.unknown": "Oops! An error has occurred.", + "edit": "Edit", + "edited": "edited", + "edit.a.group": "Edit a Group", + "edit.a.meter": "Edit a Meter", + "edit.group": "Edit Group", + "edit.meter": "Edit Meter", + "edit.unit": "Edit Unit", + "email": "Email", + "enable": "Enable", + "error.bar": "Show error bars", + "export.graph.data": "Export graph data", + "export.raw.graph.data": "Export graph meter data", + "failed.to.create.map": "Failed to create map", + "failed.to.delete.group": "Failed to delete group", + "failed.to.delete.map": "Failed to delete map", + "failed.to.edit.map": "Failed to edit map", + "failed.to.link.graph": "Failed to link graph", + "failed.to.submit.changes": "Failed to submit changes", + "false": "False", + "gps": "GPS: latitude, longitude", + "graph": "Graph", + "graph.type": "Graph Type", + "group": "Group", + "group.all.meters": "All Meters", + "group.area.calculate": "Calculate Group Area", + "group.area.calculate.header": "Group Area will be set to ", + "group.area.calculate.error.header": "The following meters were excluded from the sum because:", + "group.area.calculate.error.zero": ": area is unset or zero", + "group.area.calculate.error.unit": ": nonzero area but no area unit", + "group.area.calculate.error.no.meters": "No meters in group", + "group.area.calculate.error.group.unit": "No group area unit", + "group.create.nounit": "The default graphic unit was changed to no unit from ", + "group.delete.group": "Delete Group", + "group.delete.issue": "is contained in the following groups and cannot be deleted", + "group.details": "Group Details", + "group.edit.cancelled": "THE CHANGE TO THE GROUP IS CANCELLED", + "group.edit.changed": "will have its compatible units changed by the edit to this group", + "group.edit.circular": "Adding this meter/group to this group creates a circular dependency.", + "group.edit.empty": "Removing this meter/group means there are no child meters or groups which is not allowed . Delete the group if you want to remove it.", + "group.edit.nocompatible": "would have no compatible units by the edit to this group so the edit is cancelled", + "group.edit.nounit": "will have its compatible units changed and its default graphic unit set to \"no unit\" by the edit to this group", + "group.edit.verify": "Given the messages, do you want to cancel this change (click Cancel) or continue (click OK)?", + "group.failed.to.create.group": "Failed to create a group with message: ", + "group.failed.to.edit.group": "Failed to edit group with message: ", + "group.gps.error": "Please input a valid GPS: (latitude, longitude)", + "group.hidden": "At least one group is not visible to you", + "group.input.error": "Input invalid so group not created or edited.", + "group.name.error": "Please enter a valid name: (must have at least one character that is not a space)", + "groups": "Groups", + "group.successfully.create.group": "Successfully created a group.", + "group.successfully.edited.group": "Successfully edited group.", + "groups.select": "Select Groups", + "has.no.data": "has no current data", + "has.used": "has used", + "header.pages": "Pages", + "header.options": "Options", + "help": "Help", + "help.admin.conversioncreate": "This page allows admins to create conversions. Please visit {link} for further details and information.", + "help.admin.conversionedit": "This page allows admins to edit conversions. Please visit {link} for further details and information.", + "help.admin.conversionview": "This page shows information on conversions. Please visit {link} for further details and information.", + "help.admin.groupcreate": "This page allows admins to create groups. Please visit {link} for further details and information.", + "help.admin.groupedit": "This page allows admins to edit groups. Please visit {link} for further details and information.", + "help.admin.groupview": "This page allows admins to view groups. Please visit {link} for further details and information.", + "help.admin.header": "This page is to allow site administrators to set values and manage users. Please visit {link} for further details and information.", + "help.admin.mapview": "This page allows admins to view and edit maps. Please visit {link} for further details and information", + "help.admin.metercreate": "This page allows admins to create meters. Please visit {link} for further details and information.", + "help.admin.meteredit": "This page allows admins to edit meters. Please visit {link} for further details and information.", + "help.admin.meterview": "This page allows admins to view and edit meters. Please visit {link} for further details and information.", + "help.admin.unitcreate": "This page allows admins to create units. Please visit {link} for further details and information.", + "help.admin.unitedit": "This page allows admins to edit units. Please visit {link} for further details and information.", + "help.admin.unitview": "This page shows information on units. Please visit {link} for further details and information.", + "help.admin.user": "This page allows admins to view and edit users. Please visit {link} for further details and information.", + "help.csv.header": "This page allows certain users to upload meters and readings via a CSV file. Please visit {link} for further details and information.", + "help.groups.groupdetails": "This page shows detailed information on a group. Please visit {link} for further details and information.", + "help.groups.groupview": "This page shows information on groups. Please visit {link} for further details and information.", + "help.groups.area.calculate": "This will sum together the area of all meters in this group with a nonzero area with an area unit. It will ignore any meters which have no area or area unit. If this group has no area unit, it will do nothing.", + "help.home.area.normalize": "Toggles normalization by area. Meters/Groups without area will be hidden. Please visit {link} for further details and information.", + "help.home.bar.custom.slider.tip": "Allows user to select the desired number of days for each bar. Please see {link} for further details and information.", + "help.home.bar.interval.tip": "Selects the time interval (Day, Week or 4 Weeks) for each bar. Please see {link} for further details and information.", + "help.home.bar.stacking.tip": "Bars stack on top of each other. Please see {link} for further details and information.", + "help.home.map.interval.tip": "Selects the time interval (the last Day, Week or 4 Weeks) for map corresponding to bar's time interval. Please see {link} for further details and information.", + "help.home.chart.plotly.controls": "These controls are provided by Plotly, the graphics package used by OED. You generally do not need them but they are provided in case you want that level of control. Note that some of these options may not interact nicely with OED features. See Plotly documentation at {link}.", + "help.home.chart.redraw.restore": "OED automatically averages data when necessary so the graphs have a reasonable number of points. If you use the controls under the graph to scroll and/or zoom, you may find the resolution at this averaged level is not what you desire. Clicking the \"Redraw\" button will have OED recalculate the averaging and bring in higher resolution for the number of points it displays. If you want to restore the graph to the full range of dates, then click the \"Restore\" button. Please visit {link} for further details and information.", + "help.home.chart.select": "Any graph type can be used with any combination of groups and meters. Line graphs show the usage (e.g., kW) vs. time. You can zoom and scroll with the controls right below the graph. Bar shows the total usage (e.g., kWh) for the time frame of each bar where you can control the time frame. Compare allows you to see the current usage vs. the usage in the last previous period for a day, week and four weeks. Map graphs show a spatial image of each meter where the circle size is related to four weeks of usage. 3D graphs show usage vs. day vs. hours in the day. Clicking on one of the choices renders that graphic. Please visit {link} for further details and information.", + "help.home.compare.interval.tip": "Selects the time interval (Day, Week or 4 Weeks) to compare for current to previous. Please see {link} for further details and information.", + "help.home.compare.sort.tip": "Allows user to select the order of multiple comparison graphs to be Alphabetical (by name), Ascending (greatest to least reduction in usage) and Descending (least to greatest reduction in usage). Please see {link} for further details and information.", + "help.home.error.bar": "Toggle error bars with min and max value. Please visit {link} for further details and information.", + "help.home.export.graph.data": "With the \"Export graph data\" button, one can export the data for the graph when viewing either a line or bar graphic. The zoom and scroll feature on the line graph allows you to control the time frame of the data exported. The \"Export graph data\" button gives the data points for the graph and not the original meter data. The \"Export graph meter data\" gives the underlying meter data (line graphs only). Please visit {link} for further details and information on when meter data export is allowed.", + "help.home.history": "Allows the user to navigate through the recent history of graphs. Please visit {link} for further details and information.", + "help.home.navigation": "The \"Graph\" button goes to the graphic page, the \"Pages\" dropdown allows navigation to information pages, the \"Options\" dropdown allows selection of language, hide options and login/out and the \"Help\" button goes to the help pages. See help on the dropdown menus or the linked pages for further information.", + "help.home.readings.per.day": "The number of readings shown for each day in a 3D graphic. Please visit {link} for further details and information.", + "help.home.select.dateRange": "Select date range used in graphic display. For 3D graphic must be one year or less. Please visit {link} for further details and information.", + "help.home.select.groups": "Groups aggregate (sum the usage) of any combination of groups and meters. You can choose which groups to view in your graphic from the \"Groups:\" dropdown menu. Note you can type in text to limit which groups are shown. The \"Groups\" option in the top, right \"Pages\" dropdown allows you to see more details about each group and, if you are an admin, to edit the groups. Please visit {link} for further details and information.", + "help.home.select.maps": "Maps are a spatial representation of a site. You can choose which map to view from the \"Maps:\" dropdown menu. Note you can type in text to limit which maps are shown. Please visit {link} for further details and information.", + "help.home.select.meters": "Meters are the basic unit of usage and generally represent the readings from a single usage meter. You can choose which meters to view in your graphic from the \"Meters:\" dropdown menu. Note you can type in text to limit which meters are shown. The \"Meters\" option in the top, right \"Pages\" dropdown allows you to see more details about each meter and, if you are an admin, to edit the meters. Please visit {link} for further details and information.", + "help.home.select.rates": "Rates determine the time normalization for a line graph. Please visit {link} for further details and information", + "help.home.select.units": "Units determine the values displayed in a graphic. Please visit {link} for further details and information", + "help.home.toggle.chart.link": "With the \"Toggle chart link\" button a box appears that gives a URL that will recreate the current graphic. The link will recreate the graphic in the future, esp. for others to see. The person using this URL will be in a fully functional OED so they can make changes after the original graphic is displayed. You can help discourage changes by choosing the option to hide the option choice so they are not visible when using the URL. Please visit {link} for further details and information.", + "help.meters.meterview": "This page shows information on meters. Please visit {link} for further details and information.", + "here": "here", + "hide": "Hide", + "hide.options": "Hide options", + "hide.options.in.link": "Hide options in link", + "home": "Home", + "hour": "Hour", + "identifier": "Identifier:", + "import.meter.readings": "Import Meter Readings", + "incompatible.groups": "Incompatible Groups", + "incompatible.meters": "Incompatible Meters", + "incompatible.units": "Incompatible Units", + "increasing": "increasing", + "info": " for more information. ", + "initializing": "Initializing", + "input.gps.coords.first": "input GPS coordinate that corresponds to the point: ", + "input.gps.coords.second": "in this format -> latitude,longitude", + "input.gps.range": "Invalid GPS coordinate, latitude must be an integer between -90 and 90, longitude must be an integer between -180 and 180. You input: ", + "insufficient.readings": "Insufficient readings data to process comparison for ", + "invalid.number": "Please submit a valid number (between 0 and 2.0)", + "invalid.token.login": "Token has expired. Please log in again.", + "invalid.token.login.admin": "Token has expired. Please log in again to view this page.", + "language": "Language", + "last.four.weeks": "Last four weeks", + "last.week": "Last week", + "leave": "Leave", + "less.energy": "less energy", + "line": "Line", + "log.in": "Log in", + "log.out": "Log out", + "login.failed": "Failed logging in", + "login.success": "Login Successful", + "logo": "Logo", + "manage": "Manage", + "map": "Map", + "maps": "Maps", + "map.bad.load": "Map image file needed", + "map.bad.name": "Map name needed", + "map.bad.number": "Not a number, please change angle to a number between 0 and 360", + "map.bad.digita": "Greater than 360, please change angle to a number between 0 and 360", + "map.bad.digitb": "Less than 0, please change angle to a number between 0 and 360", + "map.calibrate": "Calibrate", + "map.calibration": "Calibration status", + "map.circle.size": "Map Circle Size", + "map.confirm.remove": "Are you sure you want to remove map", + "map.displayable": "Map Display", + "map.filename": "Map file", + "map.id": "Map ID", + "map.interval": "Map Interval", + "map.is.calibrated": "Calibration Complete", + "map.is.deleted": "Map removed from database", + "map.is.displayable": "Display Enabled", + "map.is.not.calibrated": "Calibration Needed", + "map.is.not.displayable": "Display Disabled", + "map.load.complete": "Map load complete from", + "map.modified.date": "Last Modified", + "map.name": "Map Name", + "map.new.angle": "List the angle with respect to true north (0 to 360)", + "map.new.name": "Define a name for the map:", + "map.new.submit": "Save and continue", + "map.new.upload": "Upload map image to begin.", + "map.notify.calibration.needed": "Calibration needed before display", + "map.upload.new.file": "Redo", + "max": "max", + "menu": "Menu", + "meter": "Meter", + "meters": "Meters", + "meter.create": "Create a Meter", + "meter.cumulative": "Cumulative:", + "meter.cumulativeReset": "Cumulative Reset:", + "meter.cumulativeResetEnd": "Cumulative Reset End:", + "meter.cumulativeResetStart": "Cumulative Reset Start:", + "meter.enabled": "Updates:", + "meter.endOnlyTime": "End Only Time:", + "meter.endTimeStamp": "End Time Stamp:", + "meter.minVal": "Minimum Reading Value Check", + "meter.maxVal": "Maximum Reading Value Check", + "meter.minDate": "Minimum Reading Date Check", + "meter.maxDate": "Maximum Reading Date Check", + "meter.maxError": "Maximum Number of Errors Check", + "meter.disableChecks": "Disable Checks", + "meter.failed.to.create.meter": "Failed to create a meter with message: ", + "meter.failed.to.edit.meter": "Failed to edit meter with message: ", + "meter.hidden": "At least one meter is not visible to you", + "meter.id": "ID", + "meter.input.error": "Input invalid so meter not created or edited.", + "meter.unit.change.requires": "needs to be changed before changing this unit's type", + "meter.unitName": "Unit:", + "meter.url": "URL:", + "meter.is.displayable": "Display Enabled", + "meter.is.enabled": "Updates Enabled", + "meter.is.not.displayable": "Display Disabled", + "meter.is.not.enabled": "Updates Disabled", + "meter.unit.is.not.editable": "This meter's unit cannot be changed and was put back to the original value because: ", + "meter.previousEnd": "Previous End Time Stamp:", + "meter.reading": "Reading:", + "meter.readingDuplication": "Reading Duplication:", + "meter.readingFrequency": "Reading Frequency", + "meter.readingGap": "Reading Gap:", + "meter.readingVariation": "Reading Variation:", + "meter.startTimeStamp": "Start Time Stamp:", + "meter.successfully.create.meter": "Successfully created a meter.", + "meter.successfully.edited.meter": "Successfully edited meter.", + "meter.timeSort": "Time Sort:", + "meter.time.zone": "Time Zone:", + "meter.type": "Type:", + "minute": "Minute", + "min": "min", + "misc": "Miscellaneous", + "more.energy": "more energy", + "name": "Name:", + "navigation": "Navigation", + "need.more.points": "Need more points", + "no": "no", + "note": "Note:", + "no.data.in.range": "No Data In Date Range", + "oed": "Open Energy Dashboard", + "oed.description": "Open Energy Dashboard is an independent open source project. ", + "oed.version": "OED version ", + "options": "Options", + "page.choice.login": "Page choices & login", + "page.choice.logout": "Page choices & logout", + "password": "Password", + "password.confirm": "Confirm password", + "per.day": "Per Day", + "per.hour": "Per Hour", + "per.minute": "Per Minute", + "per.second": "Per Second", + "projected.to.be.used": "projected to be used", + "radar": "Radar", + "radar.lines.incompatible": "These meters/groups are not compatible for radar graphs", + "radar.no.data": "There are no readings:
likely the data range is outside meter/group reading range", + "rate": "Rate", + "reading": "Reading:", + "redo.cik.and.refresh.db.views": "Processing changes. This may take a while.", + "readings.per.day": "Readings per Day", + "redraw": "Redraw", + "remove": "Remove", + "restore": "Restore", + "return.dashboard": "Return To Dashboard", + "role": "Role", + "save.all": "Save all", + "save.map.edits": "Save map edits", + "save.meter.edits": "Save meter edits", + "save.role.changes": "Save role changes", + "second": "Second", + "select.groups": "Select Groups", + "select.map": "Select Map", + "select.meter": "Select Meter", + "select.meter.type": "Select Meter Type", + "select.meter.group": "Select meter or group to graph", + "select.meters": "Select Meters", + "select.unit": "Select Unit", + "show": "Show", + "show.grid": "Show grid", + "show.options": "Show options", + "site.title": "Site Title", + "sort": "Sort", + "submit": "Submit", + "submitting": "submitting", + "submit.changes": "Submit changes", + "submit.new.user": "Submit new user", + "the.unit.of.meter": "The unit of meter", + "this.four.weeks": "These four weeks", + "TimeSortTypes.decreasing": "decreasing", + "TimeSortTypes.increasing": "increasing", + "TimeSortTypes.meter": "meter value or default", + "true": "True", + "timezone.no": "No timezone", + "this.week": "This week", + "threeD.area.incompatible": "
is incompatible
with area normalization", + "threeD.date": "Date", + "threeD.date.range.too.long": "Date Range Must be a year or less", + "threeD.incompatible": "Not Compatible with 3D", + "threeD.rendering": "Rendering", + "threeD.time": "Time", + "threeD.x.axis.label": "Hours of Day", + "threeD.y.axis.label": "Days of Calendar Year", + "today": "Today", + "toggle.custom.slider": "Toggle custom slider", + "toggle.link": "Toggle chart link", + "total": "total", + "TrueFalseType.false": "no", + "TrueFalseType.true": "yes", + "undefined": "undefined", + "unit": "Unit", + "UnitRepresentType.quantity": "quantity", + "UnitRepresentType.flow": "flow", + "UnitRepresentType.raw": "raw", + "UnitType.unit": "unit", + "UnitType.meter": "meter", + "UnitType.suffix": "suffix", + "unit.delete.failure": "Failed to deleted unit with error: ", + "unit.delete.success": "Successfully deleted unit", + "unit.delete.unit": "Delete Unit", + "unit.destination.error": "as the destination unit", + "unit.dropdown.displayable.option.none": "None", + "unit.dropdown.displayable.option.all": "All", + "unit.dropdown.displayable.option.admin": "admin", + "unit.failed.to.create.unit": "Failed to create a unit.", + "unit.failed.to.delete.unit": "Delete cannot be done because this unit is used by the following", + "unit.failed.to.edit.unit": "Failed to edit unit.", + "unit.input.error": "Input invalid so unit not created or edited.", + "unit.none": "no unit", + "unit.preferred.display": "Preferred Display:", + "unit.represent": "Unit Represent:", + "unit.sec.in.rate": "Sec in Rate:", + "unit.source.error": "as the source unit", + "unit.submit.new.unit": "Submit New Unit", + "unit.successfully.create.unit": "Successfully created a unit.", + "unit.successfully.edited.unit": "Successfully edited unit.", + "unit.suffix": "Suffix:", + "unit.type.of.unit": "Type of Unit:", + "unit.type.of.unit.suffix": "Added suffix will set type of unit to suffix", + "units": "Units", + "unsaved.failure": "Changes failed to save", + "unsaved.success": "Changes saved", + "unsaved.warning": "You have unsaved change(s). Are you sure you want to leave?", + "update": "update", + "updated.map.with.calibration": "Updated map with renewed calibration", + "updated.map.without.calibration": "Updated map(uncalibrated)", + "updated.map.without.new.calibration": "Updated map", + "updated.preferences": "Updated preferences", + "upload.meters.csv": "Upload meters CSV file", + "upload.new.map.with.calibration": "Uploaded new calibrated map", + "upload.new.map.without.calibration": "Uploaded new map(uncalibrated)", + "upload.readings.csv": "Upload readings CSV file", + "used.so.far": "used so far", + "used.this.time": "used this time", + "users": "Users", + "users.failed.to.create.user": "Failed to create a user.", + "users.failed.to.delete.user": "Failed to delete a user.", + "users.failed.to.edit.users": "Failed to edit users.", + "user.password.mismatch": "Passwords Do Not Match", + "users.successfully.create.user": "Successfully created a user.", + "users.successfully.delete.user": "Successfully deleted user.", + "users.successfully.edit.users": "Successfully edited users.", + "uses": "uses", + "view.groups": "View Groups", + "visit": " or visit our ", + "website": "website", + "week": "Week", + "yes": "yes", + "yesterday": "Yesterday", + "you.cannot.create.a.cyclic.group": "You cannot create a cyclic group" +}; \ No newline at end of file diff --git a/src/client/app/translations/locales/es.ts b/src/client/app/translations/locales/es.ts new file mode 100644 index 000000000..ffe4bceb7 --- /dev/null +++ b/src/client/app/translations/locales/es.ts @@ -0,0 +1,487 @@ +export default { + "3D": "3D", + "400": "400 Solicitud incorrecta", + "404": "404 Página no encontrada", + "4.weeks": "4 Semanas", + "action": "Acción", + "add.new.meters": "Agregar nuevos medidores", + "admin.only": "Solo administrador", + "admin.settings": "Configuración de administrador", + "alphabetically": "Alfabéticamente", + "area": "Área:", + "area.but.no.unit": "Ha entrado una área distinta de cero sin unidad de área.", + "area.error": "Por favor entre un número por la área", + "area.normalize": "Normalizar por la área", + "area.calculate.auto": "Calcular área del grupo", + "area.unit": "Unidad de Área:", + "AreaUnitType.feet": "pies cuadrados", + "AreaUnitType.meters": "metros cuadrados", + "AreaUnitType.none": "sin unidad", + "ascending": "Ascendente", + "as.meter.unit": "as meter unit", + "as.meter.defaultgraphicunit": "as meter unit", + "bar": "Barra", + "bar.interval": "Intervalo de barra", + "bar.raw": "No se puede crear un gráfico de barras con unidades crudas como temperatura", + "bar.stacking": "Barra de apilamiento", + "BooleanMeterTypes.false": "sí", + "BooleanMeterTypes.meter": "medidor o valor por defecto", + "BooleanMeterTypes.true": "no", + "calibration.display": "Resultado:", + "calibration.reset.button": "Restablecimiento", + "calibration.save.database": "Guardar los cambios en la base de datos", + "calibration.submit.button": "Enviar", + "cancel": "Cancelar", + "child.groups": "Los grupos secundarios", + "child.meters": "Medidores infantiles", + "clear.graph.history": "Borrar historia", + "clipboard.copied": "Copied To Clipboard", + "clipboard.not.copied": "Failed to Copy To Clipboard", + "close": "Cerrar", + "compare": "Comparar", + "compare.raw": "No se puede crear gráfico de comparación con unidades crudas como temperatura", + "confirm.action": "Confirmar acción", + "contact.us": "Contáctenos", + "conversion": "Conversión", + "conversions": "Conversiones", + "ConversionType.conversion": "conversión", + "conversion.bidirectional": "Bidireccional:", + "conversion.create.destination.meter": "La destinación no puede ser un medidor", + "conversion.create.exists": "Esta conversión ya existe", + "conversion.create.exists.inverse": "Esta conversión ya existe en que una no es bidireccional", + "conversion.create.mixed.represent": "Una conversión no puede mezclar unidades de cuantidad, fluidez y crudeza.", + "conversion.create.source.destination.same": "La fuente y destinación no pueden ser la misma para una conversión", + "conversion.delete.conversion": "Eliminar conversión", + "conversion.destination": "Destinación", + "conversion.dropdown.displayable.option.admin": "Administrador", + "conversion.edit.conversion": "Editar conversión", + "conversion.failed.to.create.conversion": "No se pudo crear la conversión.", + "conversion.failed.to.delete.conversion": "No se pudo eliminar la conversión", + "conversion.failed.to.edit.conversion": "No se pudo editar la conversión", + "conversion.intercept": "Interceptar:", + "conversion.is.deleted": "Se quitó la conversión de la base de datos", + "conversion.represent": "La Conversión Representa:", + "conversion.select.destination": "Seleccionar una unidad de destinación", + "conversion.select.source": "Seleccionar una unidad de fuente", + "conversion.slope": "Pendiente:", + "conversion.source": "Fuente:", + "conversion.submit.new.conversion": "Ingresar nueva conversión", + "conversion.successfully.create.conversion": "Se creó una conversión con éxito.", + "conversion.successfully.delete.conversion": "Se eliminó una conversión con éxito.", + "conversion.successfully.edited.conversion": "Se editó una conversión con éxito", + "create.conversion": "Crear una conversión", + "create.group": "Crear un grupo", + "create.map": "Crear un mapa", + "create.unit": "Crear una unidad", + "create.user": "Crear un usuario", + "csv": "CSV", + "csv.file": "Archivo de CSV", + "csv.common.param.gzip": "Gzip", + "csv.common.param.header.row": "Fila de cabecera", + "csv.common.param.update": "Actualización", + "csv.download.size.limit": "Perdón no tienes permiso a descargar por el número grande de puntos.", + "csv.download.size.warning.size": "Tamaño total de todos los archivos será unos de (usualmente entre 10% para exportaciones largas).", + "csv.download.size.warning.verify": "Estás seguro que quieres descargar", + "csv.readings.param.create.meter": "Crear medidor", + "csv.readings.param.cumulative": "Acumulado", + "csv.readings.param.cumulative.reset": "Reinicio acumulativo", + "csv.readings.param.cumulative.reset.end": "Fin de reinicio acumulativo", + "csv.readings.param.cumulative.reset.start": "Iniciar de reinicio acumulativo", + "csv.readings.param.duplications": "Duplicaciones", + "csv.readings.param.endOnly": "Fin solamente de tiempo", + "csv.readings.param.honor.dst": "Honrar Horario del Verano", + "csv.readings.param.lengthGap": "Espacio de largo", + "csv.readings.param.length.variation": "Distancia de variación", + "csv.readings.param.meter.name": "Nombre de medidor", + "csv.readings.param.refresh.hourlyReadings": "Actualizar lecturas por hora", + "csv.readings.param.refresh.readings": "Actualizar lecturas diarias", + "csv.readings.param.relaxed.parsing": "Análisis de Sintactico relajado", + "csv.readings.param.time.sort": "Ordenar el tiempo", + "csv.readings.section.cumulative.data": "Datos acumulativos", + "csv.readings.section.time.gaps": "Espacio de tiempo", + "csv.submit.button": "Enviar datos de CSV", + "csv.tab.meters": "Medidor", + "csv.tab.readings": "Lecturas", + "csv.upload.meters": "Cargar medidores de CSV", + "csv.upload.readings": "Cargar lecturas de CSV", + "date.range": "Rango de fechas", + "day": "Día", + "days": "Días", + "decreasing": "decreciente", + "default.area.normalize": "Normalizar lecturas de área predeterminadas", + "default.area.unit": "Unidad de Área Predeterminada", + "default.bar.stacking": "Apilamiento de barras predeterminado", + "default.graph.type": "Tipo de gráfico por defecto", + "default.graph.settings": "Configuraciones predeterminadas del gráfico", + "defaultGraphicUnit": "Unidad del gráfico predeterminada:", + "default.language": "Idioma predeterminado", + "default.meter.reading.frequency": "Frecuencia de la lectura del medidor predeterminada", + "default.warning.file.size": "Advertencia Predeterminada del Tamaño de Archivo", + "default.file.size.limit": "El límite del tamaño del archivo predeterminado", + "default.help.url": "URL Ayuda", + "default.time.zone": "Zona del horario predeterminada", + "default.meter.minimum.value": "Default meter minimum reading value check", + "default.meter.maximum.value": "Default meter maximum reading value check", + "default.meter.minimum.date": "Default meter minimum reading date check", + "default.meter.maximum.date": "Default meter maximum reading date check", + "default.meter.reading.gap": "Default meter reading gap", + "default.meter.maximum.errors": "Default maximum number of errors in meter reading", + "default.meter.disable.checks": "Default meter disable checks", + "delete.group": "Eliminar grupo", + "delete.map": "Borrar mapa", + "delete.user": "Borrar usario", + "descending": "Descendente", + "discard.changes": "Descartar los Cambios", + "disable": "Desactivar", + "displayable": "Visualizable:", + "DisplayableType.none": "nada", + "DisplayableType.all": "todo", + "DisplayableType.admin": "administrador", + "error.bounds": "Debe ser entre {min} y {max}.", + "error.displayable": "El elemento mostrable se establecerá a falso porque no unidad está seleccionada.", + "error.displayable.meter": "Unidades del medidor establecerá el elemento mostrable a nada.", + "error.greater": "Debe ser más que {min}.", + "error.gps": "Latitud deber ser entre -90 y 90, y Longitud debe ser entre -180 y 180.", + "error.negative": "No puede ser negativo.", + "error.required": "Campo requerido", + "edit": "Editar", + "edited": "Editado", + "edit.a.group": "Editar un grupo", + "edit.a.meter": "Editar un medidor", + "edit.group": "Edición de grupo", + "edit.meter": "Editar Medidor", + "edit.unit": "Editar unidad", + "email": "Correo Electronico", + "enable": "Activar", + "error.bar": "Mostrar barras de errores", + "export.graph.data": "Exportar datos del gráfico", + "export.raw.graph.data": "Exportar datos gráficos de medidor", + "failed.to.create.map": "No se pudo crear el mapa", + "failed.to.delete.group": "No se pudo eliminar el grupo", + "failed.to.delete.map": "No se pudo borrar el mapa", + "failed.to.edit.map": "No se pudo editar el mapa", + "failed.to.link.graph": "No se pudo vincular el gráfico", + "failed.to.submit.changes": "No se pudo entregar los cambios", + "false": "Falso", + "gps": "GPS: latitud, longitud", + "graph": "Gráfico", + "graph.type": "Tipo de gráfico", + "group": "Grupo", + "group.all.meters": "Todos los medidores", + "group.area.calculate": "Calcular Área del Grupo", + "group.area.calculate.header": "Área del grupo se establecerá a ", + "group.area.calculate.error.header": "Los siguientes medidores fueron excluidos del suma porque:", + "group.area.calculate.error.unit": ": área distinta de cero pero sin unidad de área", + "group.area.calculate.error.no.meters": "No medidores en grupo", + "group.area.calculate.error.group.unit": "No unidad de la área del grupo", + "group.create.nounit": "La unidad predeterminada fue cambiado a sin unidad por ", + "group.delete.group": "Eliminar grupo", + "group.delete.issue": "is contained in the following groups and cannot be deleted", + "group.details": "Detalles del grupo", + "group.edit.cancelled": "EL CAMBIO AL GRUPO ESTÁ CANCELADO", + "group.edit.changed": "will have its compatible units changed by the edit to this group", + "group.edit.circular": "Adding this meter/group to this group creates a circular dependency.", + "group.edit.empty": "Removing this meter/group means there are no child meters or groups which is not allowed. Delete the group if you want to remove it.", + "group.edit.nocompatible": "would have no compatible units by the edit to this group so the edit is cancelled", + "group.edit.nounit": "will have its compatible units changed and its default graphic unit set to \"no unit\" by the edit to this group", + "group.edit.verify": "or continue (click OK)?", + "group.failed.to.create.group": "Failed to create a group with message: ", + "group.failed.to.edit.group": "Failed to edit group with message: ", + "group.gps.error": "Por favor importa un GPS valído: (latitud, longitud)", + "group.hidden": "At least one group is not visible to you", + "group.input.error": "Input invalid so group not created or edited.", + "group.name.error": "Please enter a valid name: (must have at least one character that is not a space)", + "groups": "Grupos", + "group.successfully.create.group": "Grupo creado con éxito.", + "group.successfully.edited.group": "Grupo editado con éxito.", + "groups.select": "Seleccionar grupos", + "has.no.data": "No hay datos actuales", + "has.used": "ha utilizado", + "header.pages": "Páginas", + "header.options": "Opciones", + "help": "Ayuda", + "help.admin.conversioncreate": "This page allows admins to create conversions. Please visit {link} for further details and information.", + "help.admin.conversionedit": "This page allows admins to edit conversions. Please visit {link} for further details and information.", + "help.admin.conversionview": "This page shows information on conversions. Please visit {link} for further details and information.", + "help.admin.groupcreate": "This page allows admins to create goups. Please visit {link} for further details and information.", + "help.admin.groupedit": "This page allows admins to edit groups. Please visit {link} for further details and information.", + "help.admin.groupview": "Esta página permite a los administradores ver grupos. Por favor, visite {link} para más detalles e información.", + "help.admin.header": "Esta página permite a los administradores del sitio establecer valores y gestionar usarios. Por favor, visite {link} para más detalles e información.", + "help.admin.mapview": "Esta página permite a los administradores ver e editar mapas. Por favor, visite {link} para más detalles e información", + "help.admin.metercreate": "This page allows admins to create meters. Please visit {link} for further details and information.", + "help.admin.meteredit": "This page allows admins to edit meters. Please visit {link} for further details and information.", + "help.admin.meterview": "Esta página permite a los administradores ver e editar los mediores. Por favor, visite {link} para más detalles e información.", + "help.admin.unitcreate": "This page allows admins to create units. Please visit {link} for further details and information.", + "help.admin.unitedit": "This page allows admins to edit units. Please visit {link} for further details and information.", + "help.admin.unitview": "This page shows information on units. Please visit {link} for further details and information.", + "help.admin.user": "Esta página permite a los administradores ver e editar los usarios. Por favor, visite {link} para más detalles e información.", + "help.csv.header": "Esta página permite unos usuarios cargar medidores y lecturas a través de un archivo CSV. Por favor, visite {link} para más detalles e información.", + "help.groups.groupdetails": "Esta página muestra información detallada de un grupo. Por favor visite {link} para obtener más detalles e información.", + "help.groups.groupview": "Esta página muestra información sobre los grupos. Por favor, visite {link} para más detalles e información.", + "help.groups.area.calculate": "Esto sumará junta la área de todos los medidores en este grupo con una área distinta de cero con una unidad de área. Ignorará cualquier medidor lo cual no tiene área o unidad de área. Si este grupo no tenga unidad de área, no hará nada.", + "help.home.area.normalize": "Alterna normalización por la área. Medidores/Grupos serán escondidos. Por favor visite {link} para obtener más detalles e información.", + "help.home.bar.custom.slider.tip": "Permite al usuario seleccionar el número de días deseado para cada barra. Por favor, vea {link} para más detalles e información.", + "help.home.bar.interval.tip": "Selecciona el intervalo de tiempo (Día, Semana o Cuatro semanas) para cada barra. Por favor, vea {link} para más detalles e información.", + "help.home.bar.stacking.tip": "Pila barras en la parte superior de uno al otro. Visite {link} para obtener más detalles e información.", + "help.home.map.interval.tip": "Selecionar el intervalo de tiempo (el último día, semana o cuatro semanas) para el correspondiente de mapa al intervalo de tiempo de la barra. Por favor ver {link} para mas detalles e información", + "help.home.chart.plotly.controls": "Estos controles son proporcionados por Plotly, el paquete de gráficos utilizado por OED. Por lo general no se necesita pero se proporcionan por si se deséa ese nivel de control. Tenga en cuenta que quizás algunas de estas opciones no interactúen bien con las funciones de OED. Consulte la documentación de Plotly en {link}.", + "help.home.chart.redraw.restore": "OED automáticamente promedia los datos cuando sea necesario para que los gráficos tengan un número razonable de puntos. Si usa los controles debajo del gráfico para desplazarse y / o acercarse, puede encontrar que la resolución en este promedio nivel no es la que desea. Al hacer clic en el botón \"Redraw\" OED volverá a calcular el promedio y obtendrá una resolución más alta para el número de puntos que muestra. Si desea restaurar el gráfico al rango completo de fechas, haga clic en el botón \"Restore\" button. Visite {link} para obtener más detalles e información.", + "help.home.chart.select": "Se puede usar cualquier tipo de gráfico con cualquier combinación de grupos y medidores. Los gráficos de líneas muestran el uso (por ejemplo, kW) contra el tiempo. Puede hacer zoom y desplazarse con los controles justo debajo del gráfico. La barra muestra el uso total (por ejemplo, kWh) para el período de tiempo de cada barra donde puede controlar el período de tiempo. Comparar le permite ver el uso actual contra el uso de el último período anterior durante un día, una semana y cuatro semanas. Gráficos del mapa muestra un imagen especial de cada meter donde el talla del círculo está relacionado de cuatro semanas de uso. 3D graphs show usage vs. day vs. hours in the day. Al hacer clic en uno de las opciones va a representa ese gráfico. Visite {link} para obtener más detalles e información.", + "help.home.compare.interval.tip": "Selecciona el intervalo de tiempo (Día, Semana o Cuatro semanas) para comparar el actual con el anterior. Por favor, vea {link} para más detalles e información.", + "help.home.compare.sort.tip": "Permite al usuario seleccionar el orden de los gráficos de comparación múltiple para que sean alfabéticos (por nombre), ascendentes (de mayor a menor reducción de uso) y descendentes (de menor a mayor reducción de uso). Por favor, vea {link} para más detalles e información.", + "help.home.error.bar": "Alternar barras de error con valoes del min y max. Por favor, vea {link} para más detalles e información.", + "help.home.export.graph.data": "Con el botón \"Exportar data de gráfico\", uno puede exportar los datos del gráfico al ver una línea o barra el gráfico. La función de zoom y desplazamiento en el gráfico de líneas le permite controlar el período de tiempo de los datos exportados. El \"Exportar data de gráfico\" botón da el puntos de dato para el gráfico y no los datos sin procesar de medidor. La \"Exportar el dato gráfhico de medidor\" proporciona los datos del medidor subyacente (solo gráficos de líneas). Visite {link} para obtener más detalles e información.", + "help.home.history": "Permite al usuario navegar por el historial reciente de gráficos. Visite {link} para obtener más detalles e información.", + "help.home.navigation": "El botón \"Gráfico\" va a la página gráfica, el desplegable \"Páginas\" permite navigación a las páginas de información, el desplegable \"Opciones\" permite selección de idioma, opciones de ocultar y iniciar/cerrar sesión y el botón \"Ayuda\" va a las páginas de ayuda. Buscar ayuda en los menús desplegables o las páginas vínculadas para más informacións.", + "help.home.readings.per.day": "El número de lecturas mostrado para cada día en un gráfico 3D. Por favor visite {link} para obtener más detalles e información.", + "help.home.select.dateRange": "Seleccione el rango de datos usado en el elemento mostrable del gráfico. Para el gráfico 3D debe ser un año o menos. Por favor visite {link} para obtener más detalles e información.", + "help.home.select.groups": "Los grupos se agregan (suman el uso) de cualquier combinación de grupos y medidores. Puede elegir qué grupos ver en su gráfico desde el menú desplegable \"Groups:\" . Tenga en cuenta que puede escribir texto para limitar que grupos se muestran. La opción \"Grupos\" en el menú desplegable \"Páginas\" en la parte superior derecha de la ventana le permite ver más detalles sobre cada grupo y, si es un administrador, editar los grupos. Visite {link} para obtener más detalles e información.", + "help.home.select.maps": "Los mapas son una representación espacial de un sitio. Puede elegir el mapa que desea ver en el menú desplegable \"Mapas:\". Tenga en cuenta que puede introducir texto para limitar las mapas que se muestran. Por favor, visite {link} para más detalles e información.", + "help.home.select.meters": "Medidor son la unidad básica de uso y generalmente representan las lecturas de un solo medidor de uso. Puede elegir qué medidores ver en su gráfico desde el menú desplegable \"Meters:\". Tenga en cuenta que puede escribir texto para limitar los medidores que se muestran. La opción \"Medidores\" en el menú desplegable \"Páginas\" en la parte superior derecha de la ventana le permite ver más detalles sobre cada medidor y, si es un administrador, editar los medidores . Visite {link} para obtener más detalles e información.", + "help.home.select.rates": "Tasas determinan la normalización de tiempo para un gráfico de línea. Por favor visite {link} para obtener más detalles e información.", + "help.home.select.units": "Las unidades determinan los valores mostrados en un gráfico. Por favor visite {link} para obtener más detalles e información.", + "help.home.toggle.chart.link": "Con el botón \"Alternar enlace de gráfico\" aparece un cuadro que da un URL que recreará el gráfico actual. El vínculo recreará el gráfico en el futuro, especialmente para que otros lo vean. La persona que usa este URL estará en un OED completamente funcional para que pueda realizar cambios después de que se muestre el gráfico original. Puede ayudar a desalentar los cambios eligiendo la opción para acoplar las opciones del menú para que no sean visible al usar el URL. Visite {link} para obtener más detalles e información.", + "help.meters.meterview": "Esta página muestra información sobre los medidores. Visite {link} para obtener más detalles e información.", + "here": "aquí", + "hide": "Ocultar", + "hide.options": "Opciones de muelle", + "hide.options.in.link": "Ocultar las opciones en el enlace", + "home": "Hogar", + "identifier": "Identificador:", + "hour": "Hora", + "import.meter.readings": "Importar lecturas del medidor", + "incompatible.groups": "Grupos incompatibles", + "incompatible.meters": "Medidores incompatibles", + "incompatible.units": "Unidades incompatibles", + "increasing": "aumentando", + "info": " para obtener más información. ", + "initializing": "Initializing", + "input.gps.coords.first": "Entrada el cordenata de GPS que corresponde al punto: ", + "input.gps.coords.second": "En este forma -> latitud, longitud", + "input.gps.range": "Coordenada GPS no válida, la latitud debe ser un número entero entre -90 y 90, la longitud debe ser un número entero entre -180 y 180. You input: ", + "insufficient.readings": "Datos de lecturas insuficientes para procesar la comparación de", + "invalid.number": "Por favor entregar un número válido (entre 0 a 2.0)", + "invalid.token.login": "El token ha vencido. Inicie sesión nuevamente", + "invalid.token.login.admin": "El token ha vencido. Inicie sesión nuevamente para ver esta página.", + "language": "Idioma", + "last.four.weeks": "Últimas cuatro semanas", + "last.week": "La semana pasada", + "leave": "Salir", + "less.energy": "menos energía", + "line": "Línea", + "log.in": "Iniciar sesión", + "log.out": "Cerrar sesión", + "login.failed": "Error al iniciar sesión", + "login.success": "Login Successful", + "logo": "Logo", + "manage": "Gestionar", + "map": "Mapa", + "maps": "Mapas", + "map.bad.load": "Se necesita el archivo de la imagen del mapa", + "map.bad.name": "Nombre para el mapa es necesario", + "map.bad.number": "Ni un número, por favor cambiar el angúlo entre 0 a 360", + "map.bad.digita": "Mayor que 360, por favor cambiar el angúlo a un número entre 0 a 360", + "map.bad.digitb": "Menor que 0, por favor cambiar el angúlo a un número entre 0 a 360", + "map.calibrate": "Calibrar", + "map.calibration": "Estado de calibración", + "map.circle.size": "El Circulo Tamaño de el Mapa", + "map.confirm.remove": "¿Estás seguro de que quieres eliminar el mapa", + "map.displayable": "Visuilización de el mapa", + "map.filename": "Archivo de mapa", + "map.id": "Mapa ID", + "map.interval": "Intervalo de mapa", + "map.is.calibrated": "Calibración completa", + "map.is.deleted": "Mapa eliminado de la base de datos", + "map.is.displayable": "Pantalla activado", + "map.is.not.calibrated": "Necesitar calibración", + "map.is.not.displayable": "Pantalla desactivada", + "map.load.complete": "Carga de mapas completa de", + "map.modified.date": "Ultima modificación", + "map.name": "Nombre de mapa", + "map.new.angle": " Enumere el ángulo con respecto al norte verdadero (0 a 360)", + "map.new.name": "Defina un nombre para el mapa:", + "map.new.submit": "Guardar y continuar", + "map.new.upload": "Subir la imagen del mapa para empezar.", + "map.notify.calibration.needed": "Nececitar calibración antes de visualizar", + "map.upload.new.file": "Rehacer", + "max": "máximo", + "menu": "Menú", + "meter": "Medidor", + "meters": "Medidores", + "meter.create": "Crear un Medidor", + "meter.cumulative": "Cumulative:", + "meter.cumulativeReset": "Cumulative Reset:", + "meter.cumulativeResetEnd": "Cumulative Reset End:", + "meter.cumulativeResetStart": "Cumulative Reset Start:", + "meter.enabled": "Medidor activada", + "meter.endOnlyTime": "End Only Time:", + "meter.endTimeStamp": "End Time Stamp:", + "meter.minVal": "Revisión del Valor de Lectura Mínimo", + "meter.maxVal": "Revisión del Valor de Lectura Máximo", + "meter.minDate": "Revisión de la Fecha de Lectura Mínimo", + "meter.maxDate": "Revisión de la Fecha de Lectura Máximo", + "meter.maxError": "Revisión del Número de Errores Máximo", + "meter.disableChecks": "Desactivar revisiones", + "meter.failed.to.create.meter": "No se pudo crear un medidor con mensaje: ", + "meter.failed.to.edit.meter": "No se pudo editar un medidor con mensaje: ", + "meter.hidden": "Al menos un medidor no está visible para ti.", + "meter.id": "ID del medidor", + "meter.input.error": "Entrada no válida entonces medidor no se creó ni se editó.", + "meter.unit.change.requires": "necesita cambiarse antes de cambiar el tipo de esta unidad", + "meter.unitName": "Unidad:", + "meter.url": "URL del medidor", + "meter.is.displayable": "El medidor es visualizable", + "meter.is.enabled": "Actualizaciones Habilitado", + "meter.is.not.displayable": "El medidor es visualizable", + "meter.is.not.enabled": "El medidor no está activada", + "meter.unit.is.not.editable": "This meter's unit cannot be changed and was put back to the original value because: ", + "meter.previousEnd": "Marca de tiempo de fin previo:", + "meter.reading": "Lectura:", + "meter.readingDuplication": "Duplicación de Lectura:", + "meter.readingFrequency": "Frecuencia de Lectura", + "meter.readingGap": "Brecha de Lectura:", + "meter.readingVariation": "Variación de Lectura:", + "meter.startTimeStamp": "Marca de tiempo de inicio:", + "meter.successfully.create.meter": "Se creó un medidor con éxito.", + "meter.successfully.edited.meter": "Se editó medidor con éxito.", + "meter.timeSort": "Ordenar por tiempo:", + "meter.time.zone": "Zona horaria del medidor", + "meter.type": "Tipo de medidor", + "minute": "Minuto", + "min": "mínimo", + "misc": "Misceláneos", + "more.energy": "más energía", + "name": "Nombre:", + "navigation": "Navegación", + "need.more.points": "Nececitar más puntos", + "no": "no", + "note": "Nota:", + "no.data.in.range": "No Data In Date Range", + "oed": "Panel de Energía Abierta", + "oed.description": "Open Energy Dashboard es un proyecto independiente. ", + "oed.version": "OED versión ", + "options": "Opciones", + "page.choice.login": "Elecciones de la página y inicio de sesión", + "page.choice.logout": "Elecciones de la página y fin de sesión", + "password": "Contraseña", + "password.confirm": "Confirmar contraseña", + "per.day": "Por día", + "per.hour": "Por hora", + "per.minute": "Por minuto", + "per.second": "Por segundo", + "projected.to.be.used": "proyectado para ser utilizado", + "radar": "Radar", + "radar.lines.incompatible": "Estos medidores/grupos no están compatibles para gráficos de radar", + "radar.no.data": "No hay lecturas:
probablemente el rango de los datos esté fuera del rango de lecturas de los medidores/grupos", + "rate": "Tasa", + "reading": "Lecturas:", + "redo.cik.and.refresh.db.views": "Procesando cambios. Esto será un momento.", + "readings.per.day": "Lecturas por Día", + "redraw": "Redibujar", + "remove": "Eliminar", + "restore": "Restaurar", + "return.dashboard": "Return To Dashboard", + "role": "Rol", + "save.all": "Guardar todos", + "save.map.edits": "Guardar las ediciones del mapa", + "save.meter.edits": "Guardar ediciones del medidor", + "save.role.changes": "Guardar cambios de rol", + "second": "Segundo", + "select.groups": "Seleccionar grupos", + "select.map": "Seleccionar mapa", + "select.meter.type": "Seleccionar Tipo de Medidor", + "select.meter": "Seleccionar medidor", + "select.meter.group": "Seleccionar medidor o grupo para hacer gráfico", + "select.meters": "Seleccionar medidores", + "select.unit": "Seleccionar unidad", + "show": "Mostrar", + "show.grid": "Mostrar rejilla", + "show.options": "Opciones de desacoplamiento", + "sort": "Ordenar", + "site.title": "Título del sitio", + "submit": "Enviar", + "submitting": "Enviando", + "submit.changes": "Enviar cambios", + "submit.new.user": "Entregar un nuevo usario", + "the.unit.of.meter": "La unidad del medidor", + "this.four.weeks": "Estas cuatro semanas", + "timezone.no": "no zona horaria", + "this.week": "Esta semana", + "threeD.area.incompatible": "
está incompatible
con normalización de la área", + "threeD.date": "Fecha", + "threeD.date.range.too.long": "El rango de datos debe ser un año o menos", + "threeD.incompatible": "No está compatible con 3D", + "threeD.no.data": "No Datos en el Rango de Datos", + "threeD.rendering": "Renderización", + "threeD.time": "Hora", + "threeD.x.axis.label": "Horas del día", + "threeD.y.axis.label": "Días del año calendario", + "TimeSortTypes.decreasing": "decreciente", + "TimeSortTypes.increasing": "creciente", + "TimeSortTypes.meter": "valor del medidor o predeterminado", + "today": "Hoy", + "toggle.custom.slider": "deslizador personalizada", + "toggle.link": "Alternar enlace de gráfico", + "total": "Total", + "true": "Verdad", + "TrueFalseType.false": "no", + "TrueFalseType.true": "sí", + "undefined": "indefinido", + "unit": "Unidad", + "UnitRepresentType.quantity": "cuantidad", + "UnitRepresentType.flow": "fluidez", + "UnitRepresentType.raw": "crudo", + "UnitType.unit": "unidad", + "UnitType.meter": "medidor", + "UnitType.suffix": "sufijo", + "unit.delete.failure": "Failed to deleted unit with error: ", + "unit.delete.success": "Successfully deleted unit", + "unit.delete.unit": "Delete Unit", + "unit.destination.error": "as the destination unit", + "unit.dropdown.displayable.option.none": "Nada", + "unit.dropdown.displayable.option.all": "Todo", + "unit.dropdown.displayable.option.admin": "administrador", + "unit.failed.to.create.unit": "No se pudo crear unidad", + "unit.failed.to.delete.unit": "Delete cannot be done because this unit is used by the following", + "unit.failed.to.edit.unit": "No se pudo editar unidad", + "unit.input.error": "Entrada no válida por eso unidad no se creó ni se editó.", + "unit.none": "Sin unidad", + "unit.preferred.display": "Visualización preferida:", + "unit.represent": "Unidad Representa:", + "unit.sec.in.rate": "Segundo en Tasa:", + "unit.source.error": "as the source unit", + "unit.submit.new.unit": "Ingresar nueva unidad", + "unit.successfully.create.unit": "Unidad creado con éxito.", + "unit.successfully.edited.unit": "Unidad editado con éxito.", + "unit.suffix": "Sufijo:", + "unit.type.of.unit": "Tipo de Unidad:", + "unit.type.of.unit.suffix": "Sufijo agregado establecerá el tipo de unidad al sufijo", + "units": "Unidades", + "unsaved.warning": "Tienes cambios sin guardar. ¿Estás seguro que quieres salir?", + "update": "Actualizado", + "updated.map.with.calibration": "Mapa actualizado con calibración renovada", + "updated.map.without.calibration": "Actualización de un mapa sin calibrar", + "updated.map.without.new.calibration": "Mapa actualizado", + "updated.preferences": "Preferencias Actualizado", + "upload.meters.csv": "Subir archivo de CSV medidores", + "upload.new.map.with.calibration": "Subido un nuevo mapa con calibración", + "upload.new.map.without.calibration": "Subido un nuevo mapa sin calibrar", + "upload.readings.csv": "Subir archivo de las lecturas de CSV", + "used.so.far": "usado hasta ahora", + "used.this.time": "usado esta vez", + "users": "Usuarios", + "users.failed.to.create.user": "No se pudo crear usuario.", + "users.failed.to.delete.user": "No se pudo eliminar usuario.", + "users.failed.to.edit.users": "No se pudo editar usuarios.", + "users.successfully.create.user": "Usuario creado con éxito.", + "users.successfully.delete.user": "Usuario borrado con éxito.", + "users.successfully.edit.users": "Usuarios editados con éxito.", + "uses": "uses", + "view.groups": "Ver grupos", + "visit": " o visite nuestra ", + "website": "sitio web", + "week": "Semana", + "yes": "sí", + "yesterday": "Ayer", + "you.cannot.create.a.cyclic.group": "No se puede crear un grupo cíclico" +}; \ No newline at end of file diff --git a/src/client/app/translations/locales/fr.ts b/src/client/app/translations/locales/fr.ts new file mode 100644 index 000000000..e5676ef35 --- /dev/null +++ b/src/client/app/translations/locales/fr.ts @@ -0,0 +1,492 @@ +export default { + "3D": "3D", + "400": "400 Bad Request", + "404": "404 Introuvable", + "4.weeks": "4 Semaines", + "action": "Action", + "add.new.meters": "Ajouter de Nouveaux Mètres", + "admin.only": "Uniquement pour Les Administrateurs", + "admin.settings": "Paramètres d'administration", + "alphabetically": "Alphabétiquement", + "area": "Région:", + "area.but.no.unit": "You have entered a nonzero area but no area unit.", + "area.error": "Please enter a number for area", + "area.normalize": "Normalize by Area", + "area.calculate.auto": "Calculate Group Area", + "area.unit": "Area Unit:", + "AreaUnitType.feet": "pieds carrés", + "AreaUnitType.meters": "mètre carré", + "AreaUnitType.none": "no unit", + "ascending": "Ascendant", + "as.meter.unit": "as meter unit", + "as.meter.defaultgraphicunit": "as meter unit", + "bar": "Bande", + "bar.interval": "Intervalle du Diagramme à Bandes", + "bar.raw": "Cannot create bar graph on raw units such as temperature", + "bar.stacking": "Empilage de Bandes", + "BooleanMeterTypes.false": "yes", + "BooleanMeterTypes.meter": "valeur du compteur ou valeur par défaut", + "BooleanMeterTypes.true": "no", + "calibration.display": "résultat: ", + "calibration.reset.button": "Réinitialiser", + "calibration.save.database": "Enregistrer les modifications dans la base de données", + "calibration.submit.button": "Soumettre", + "cancel": "Annuler", + "child.groups": "Groupes Enfants", + "child.meters": "Mètres Enfants", + "clear.graph.history": "Effacer l'historique", + "clipboard.copied": "Copied To Clipboard", + "clipboard.not.copied": "Failed to Copy To Clipboard", + "close": "Close", + "compare": "Comparer", + "compare.raw": "Cannot create comparison graph on raw units such as temperature", + "confirm.action": "Confirm Action", + "contact.us": "Contactez nous", + "conversion": "Conversion", + "conversions": "Conversions", + "ConversionType.conversion": "conversion", + "conversion.bidirectional": "Bidirectional:", + "conversion.create.destination.meter": "The destination cannot be a meter", + "conversion.create.exists": "This conversion already exists", + "conversion.create.exists.inverse": "This conversion already exists where one is not bidirectional", + "conversion.create.mixed.represent": "A conversion cannot mix units of quantity, flow and raw", + "conversion.create.source.destination.not": "Source or destination not set", + "conversion.create.source.destination.same": "The source and destination cannot be the same for a conversion", + "conversion.delete.conversion": "Delete Conversion", + "conversion.destination": "Destination:", + "conversion.dropdown.displayable.option.admin": "admin", + "conversion.edit.conversion": "Edit Conversion", + "conversion.failed.to.create.conversion": "Failed to create a conversion.", + "conversion.failed.to.delete.conversion": "Failed to delete conversion", + "conversion.failed.to.edit.conversion": "Failed to edit conversion.", + "conversion.intercept": "Intercept:", + "conversion.is.deleted": "Conversion removed from database", + "conversion.represent": "Conversion Represent:", + "conversion.select.destination": "Select a destination unit", + "conversion.select.source": "Select a source unit", + "conversion.slope": "Slope:", + "conversion.source": "Source:", + "conversion.submit.new.conversion": "Submit New Conversion", + "conversion.successfully.create.conversion": "Successfully created a conversion.", + "conversion.successfully.delete.conversion": "Successfully deleted conversion.", + "conversion.successfully.edited.conversion": "Successfully edited conversion.", + "create.conversion": "Create a Conversion", + "create.group": "Créer un Groupe", + "create.map": "Créer une carte", + "create.unit": "Create a Unit", + "create.user": "Créer un utilisateur", + "csv": "CSV", + "csv.file": "Fichier CSV", + "csv.common.param.gzip": "GzipComment", + "csv.common.param.header.row": "Ligne d'en-tête", + "csv.common.param.update": "Mise à jour", + "csv.download.size.limit": "Sorry you don't have permissions to download due to large number of points.", + "csv.download.size.warning.size": "Total size of all files will be about (usually within 10% for large exports).", + "csv.download.size.warning.verify": "Are you sure you want to download", + "csv.readings.param.create.meter": "Créer un compteur", + "csv.readings.param.cumulative": "Cumulatif", + "csv.readings.param.cumulative.reset": "Réinitialisation cumulative", + "csv.readings.param.cumulative.reset.end": "Fin de la réinitialisation cumulative", + "csv.readings.param.cumulative.reset.start": "Début de réinitialisation cumulée", + "csv.readings.param.duplications": "Duplications", + "csv.readings.param.endOnly": "Heures de fin uniquement", + "csv.readings.param.honor.dst": "Honor Daylight Savings Time", + "csv.readings.param.lengthGap": "Écart de longueur", + "csv.readings.param.length.variation": "Variation de longueur", + "csv.readings.param.meter.name": "Nom du compteur", + "csv.readings.param.refresh.hourlyReadings": "Actualiser les relevés horaires", + "csv.readings.param.refresh.readings": "Actualiser les lectures quotidiennes", + "csv.readings.param.relaxed.parsing": "Relaxed Parsing", + "csv.readings.param.time.sort": "Tri de l'heure", + "csv.readings.section.cumulative.data": "Données cumulées", + "csv.readings.section.time.gaps": "Intervalles de temps", + "csv.submit.button": "Soumettre les données CSV", + "csv.tab.meters": "Mètres", + "csv.tab.readings": "Lectures", + "csv.upload.meters": "Télécharger les compteurs au format CSV", + "csv.upload.readings": "Télécharger les lectures CSV", + "date.range": "Plage de dates", + "day": "Journée", + "days": "Journées", + "decreasing": "decreasing", + "default.area.normalize": "Normalize readings by area by default", + "default.area.unit": "Default Area Unit", + "default.bar.stacking": "Stack bars by default", + "default.graph.type": "Type du Diagramme par Défaut", + "default.graph.settings": "Default Graph Settings", + "defaultGraphicUnit": "Default Graphic Unit:", + "default.language": "Langue par Défaut", + "default.meter.reading.frequency": "Default meter reading frequency", + "default.warning.file.size": "Taille du fichier d'avertissement par défaut", + "default.file.size.limit": "Limite de taille de fichier par défaut", + "default.help.url": "Help URL", + "default.time.zone": "Zona Horaria Predeterminada", + "default.meter.minimum.value": "Default meter minimum reading value check", + "default.meter.maximum.value": "Default meter maximum reading value check", + "default.meter.minimum.date": "Default meter minimum reading date check", + "default.meter.maximum.date": "Default meter maximum reading date check", + "default.meter.reading.gap": "Default meter reading gap", + "default.meter.maximum.errors": "Default maximum number of errors in meter reading", + "default.meter.disable.checks": "Default meter disable checks", + "delete.group": "Supprimer le Groupe", + "delete.map": "Supprimer la carte", + "delete.user": "Supprimer l'utilisateur", + "descending": "Descendant", + "discard.changes": "Annuler les Modifications", + "disable": "Désactiver", + "displayable": "Affichable:", + "DisplayableType.none": "none", + "DisplayableType.all": "all", + "DisplayableType.admin": "admin", + "error.bounds": "Must be between {min} and {max}.", + "error.displayable": "Displayable will be set to false because no unit is selected.", + "error.displayable.meter": "Meter units will set displayable to none.", + "error.greater": "Must be greater than {min}.", + "error.gps": "Latitude must be between -90 and 90, and Longitude must be between -180 and 180.", + "error.negative": "Cannot be negative.", + "error.required": "Required field.", + "error.unknown": "Oops! An error has occurred.", + "edit": "Modifier", + "edited": "édité", + "edit.a.group": "Modifier le Groupe", + "edit.a.meter": "Modifier le Métre", + "edit.group": "Modifier Groupe", + "edit.meter": "Modifier Métre", + "edit.unit": "Edit Unit", + "email": "E-mail", + "enable": "Activer", + "error.bar": "Show error bars", + "export.graph.data": "Exporter les données du diagramme", + "export.raw.graph.data": "Export graph meter data", + "failed.to.create.map": "Échec de la création d'une carte", + "failed.to.delete.group": "N'a pas réussi à supprimer le groupe", + "failed.to.delete.map": "Échec de la suppression d'une carte", + "failed.to.edit.map": "Échec de la modification d'une carte", + "failed.to.link.graph": "Échec de lier le graphique", + "failed.to.submit.changes": "Échec de l'envoi des modifications", + "false": "Faux", + "gps": "GPS: latitude, longitude", + "graph": "Graphique", + "graph.type": "Type du Diagramme", + "group": "Groupe", + "group.all.meters": "Tous les compteurs", + "group.area.calculate": "Calculate Group Area", + "group.area.calculate.header": "Group Area will be set to ", + "group.area.calculate.error.header": "The following meters were excluded from the sum because:", + "group.area.calculate.error.zero": ": area is unset or zero", + "group.area.calculate.error.unit": ": nonzero area but no area unit", + "group.area.calculate.error.no.meters": "No meters in group", + "group.area.calculate.error.group.unit": "No group area unit", + "group.create.nounit": "The default graphic unit was changed to no unit from ", + "group.delete.group": "Delete Group", + "group.delete.issue": "is contained in the following groups and cannot be deleted", + "group.details": "Group Details", + "group.edit.cancelled": "THE CHANGE TO THE GROUP IS CANCELLED", + "group.edit.changed": "will have its compatible units changed by the edit to this group", + "group.edit.circular": "Adding this meter/group to this group creates a circular dependency.", + "group.edit.empty": "Removing this meter/group means there are no child meters or groups which is not allowed. Delete the group if you want to remove it.", + "group.edit.nocompatible": "would have no compatible units by the edit to this group so the edit is cancelled", + "group.edit.nounit": "will have its compatible units changed and its default graphic unit set to \"no unit\" by the edit to this group", + "group.edit.verify": "or continue (click OK)?", + "group.failed.to.create.group": "Failed to create a group with message: ", + "group.failed.to.edit.group": "Failed to edit group with message: ", + "group.gps.error": "Please input a valid GPS: (latitude, longitude)", + "group.hidden": "At least one group is not visible to you", + "group.input.error": "Input invalid so group not created or edited.", + "group.name.error": "Please enter a valid name: (must have at least one character that is not a space)", + "groups": "Groupes", + "group.successfully.create.group": "Successfully created a group.", + "group.successfully.edited.group": "Successfully edited group.", + "groups.select": "Sélectionnez des Groupes", + "has.no.data": "has no current data", + "has.used": "a utilisé", + "header.pages": "Pages", + "header.options": "Options", + "help": "Help", + "help.admin.conversioncreate": "This page allows admins to create conversions. Please visit {link} for further details and information.", + "help.admin.conversionedit": "This page allows admins to edit conversions. Please visit {link} for further details and information.", + "help.admin.conversionview": "This page shows information on conversions. Please visit {link} for further details and information.", + "help.admin.groupcreate": "This page allows admins to create goups. Please visit {link} for further details and information.", + "help.admin.groupedit": "This page allows admins to edit groups. Please visit {link} for further details and information.", + "help.admin.groupview": "This page allows admins to view groups. Please visit {link} for further details and information.", + "help.admin.header": "This page is to allow site administrators to set values and manage users. Please visit {link} for further details and information.", + "help.admin.mapview": "This page allows admins to view and edit maps. Please visit {link} for further details and information", + "help.admin.metercreate": "This page allows admins to create meters. Please visit {link} for further details and information.", + "help.admin.meteredit": "This page allows admins to edit meters. Please visit {link} for further details and information.", + "help.admin.meterview": "This page allows admins to view and edit meters. Please visit {link} for further details and information.", + "help.admin.unitcreate": "This page allows admins to create units. Please visit {link} for further details and information.", + "help.admin.unitedit": "This page allows admins to edit units. Please visit {link} for further details and information.", + "help.admin.unitview": "This page shows information on units. Please visit {link} for further details and information.", + "help.admin.user": "This page allows admins to view and edit users. Please visit {link} for further details and information.", + "help.csv.header": "This page allows certain users to upload meters and readings via a CSV file. Please visit {link} for further details and information.", + "help.groups.groupdetails": "This page shows detailed information on a group. Please visit {link} for further details and information.", + "help.groups.groupview": "This page shows information on groups. Please visit {link} for further details and information.", + "help.groups.area.calculate": "This will sum together the area of all meters in this group with a nonzero area with an area unit. It will ignore any meters which have no area or area unit. If this group has no area unit, it will do nothing.", + "help.home.area.normalize": "Toggles normalization by area. Meters/Groups without area will be hidden. Please visit {link} for further details and information.", + "help.home.bar.custom.slider.tip": "Allows user to select the desired number of days for each bar. Please see {link} for further details and information.", + "help.home.bar.interval.tip": "for each bar. Please see {link} for further details and information.", + "help.home.bar.stacking.tip": "Bars stack on top of each other. Please see {link} for further details and information.", + "help.home.map.interval.tip": "for map corresponding to bar's time interval. Please see {link} for further details and information.", + "help.home.chart.plotly.controls": "These controls are provided by Plotly, the graphics package used by OED. You generally do not need them but they are provided in case you want that level of control. Note that some of these options may not interact nicely with OED features. See Plotly documentation at {link}.", + "help.home.chart.redraw.restore": "OED automatically averages data when necessary so the graphs have a reasonable number of points. If you use the controls under the graph to scroll and/or zoom, you may find the resolution at this averaged level is not what you desire. Clicking the \"Redraw\" button will have OED recalculate the averaging and bring in higher resolution for the number of points it displays. If you want to restore the graph to the full range of dates, then click the \"Restore\" button. Please visit {link} for further details and information.", + "help.home.chart.select": "for the time frame of each bar where you can control the time frame. Compare allows you to see the current usage vs. the usage in the last previous period for a day, week and four weeks. Map graphs show a spatial image of each meter where the circle size is related to four weeks of usage. 3D graphs show usage vs. day vs. hours in the day. Clicking on one of the choices renders that graphic. Please visit {link} for further details and information.", + "help.home.compare.interval.tip": "to compare for current to previous. Please see {link} for further details and information.", + "help.home.compare.sort.tip": "and Descending (least to greatest reduction in usage). Please see {link} for further details and information.", + "help.home.error.bar": "Toggle error bars with min and max value. Please visit {link} for further details and information.", + "help.home.export.graph.data": "With the \"Export graph data\" button, one can export the data for the graph when viewing either a line or bar graphic. The zoom and scroll feature on the line graph allows you to control the time frame of the data exported. The \"Export graph data\" button gives the data points for the graph and not the original meter data. The \"Export graph meter data\" gives the underlying meter data (line graphs only). Please visit {link} for further details and information on when meter data export is allowed.", + "help.home.history": "Permet à l'utilisateur de naviguer dans l'historique récent des graphiques. Veuillez visiter {link} pour plus de détails et d'informations.", + "help.home.navigation": "The \"Graph\" button goes to the graphic page, the \"Pages\" dropdown allows navigation to information pages, the \"Options\" dropdown allows selection of language, hide options and login/out and the \"Help\" button goes to the help pages. See help on the dropdown menus or the linked pages for further information.", + "help.home.readings.per.day": "The number of readings shown for each day in a 3D graphic. Please visit {link} for further details and information.", + "help.home.select.dateRange": "Select date range used in graphic display. For 3D graphic must be one year or less. Please visit {link} for further details and information.", + "help.home.select.groups": "of any combination of groups and meters. You can choose which groups to view in your graphic from the \"Groups:\" dropdown menu. Note you can type in text to limit which groups are shown. The \"Groups\" option in the top, right \"Pages\" dropdown allows you to see more details about each group and, if you are an admin, to edit the groups. Please visit {link} for further details and information.", + "help.home.select.maps": "Maps are a spatial representation of a site. You can choose which map to view from the \"Maps:\" dropdown menu. Note you can type in text to limit which maps are shown. Please visit {link} for further details and information.", + "help.home.select.meters": "Meters are the basic unit of usage and generally represent the readings from a single usage meter. You can choose which meters to view in your graphic from the \"Meters:\" dropdown menu. Note you can type in text to limit which meters are shown. The \"Meters\" option in the top, right \"Pages\" dropdown allows you to see more details about each meter and, if you are an admin, to edit the meters. Please visit {link} for further details and information.", + "help.home.select.rates": "Rates determine the time normalization for a line graph. Please visit {link} for further details and information", + "help.home.select.units": "Units determine the values displayed in a graphic. Please visit {link} for further details and information", + "help.home.toggle.chart.link": "With the \"Toggle chart link\" button a box appears that gives a URL that will recreate the current graphic. The link will recreate the graphic in the future, esp. for others to see. The person using this URL will be in a fully functional OED so they can make changes after the original graphic is displayed. You can help discourage changes by choosing the option to hide the option choice so they are not visible when using the URL. Please visit {link} for further details and information.", + "help.meters.meterview": "This page shows information on meters. Please visit {link} for further details and information.", + "here": "ici", + "hide": "Cacher", + "hide.options": "Options de quai", + "hide.options.in.link": "Hide options in link", + "home": "Accueil", + "hour": "Hour", + "identifier": "Identifier:", + "import.meter.readings": "Importer des Relevés de Mètres", + "incompatible.groups": "Incompatible Groups", + "incompatible.meters": "Incompatible Meters", + "incompatible.units": "Incompatible Units", + "increasing": "increasing", + "info": " pour plus d'informations. ", + "initializing": "Initializing", + "input.gps.coords.first": "input GPS coordinate that corresponds to the point: ", + "input.gps.coords.second": "in this format -> latitude,longitude", + "input.gps.range": "Coordonnée GPS invalide, la latitude doit être un nombre entier entre -90 et 90, la longitude doit être un nombre entier entre -180 et 180. You input: ", + "insufficient.readings": "Données de lectures insuffisantes pour la comparaison de processus pour ", + "invalid.number": "Please submit a valid number (between 0 and 2.0)", + "invalid.token.login": "Le jeton a expiré. Connectez-vous à nouveau.", + "invalid.token.login.admin": "Le jeton a expiré. Please log in again to view this page.", + "language": "Langue", + "last.four.weeks": "Quatre dernières semaines", + "last.week": "La semaine dernière", + "leave": "Leave", + "less.energy": "moins d'énergie", + "line": "Ligne", + "log.in": "Se Connecter", + "log.out": "Se Déconnecter", + "login.failed": "Echec de la connexion", + "login.success": "Login Successful", + "logo": "Logo", + "manage": "Manage", + "map": "Carte", + "maps": "Plans", + "map.bad.load": "Fichier image de la carte requis", + "map.bad.name": "Nom de la carte requis", + "map.bad.number": "Pas un nombre, veuillez changer l'angle en un nombre entre 0 et 360", + "map.bad.digita": "Supérieur à 360, veuillez changer l'angle en un nombre compris entre 0 et 360", + "map.bad.digitb": "Moins de 0, veuillez changer l'angle en un nombre compris entre 0 et 360", + "map.calibrate": "Étalonner", + "map.calibration": "Statut d'étalonnage", + "map.circle.size": "Taille du cercle de la carte", + "map.confirm.remove": "Voulez-vous vraiment supprimer la carte?", + "map.displayable": "Affichage de la carte", + "map.filename": "Fichier de carte", + "map.id": "ID de la carte", + "map.interval": "Intervalle de carte", + "map.is.calibrated": "Étalonnage terminé", + "map.is.deleted": "Carte supprimée de la base de données", + "map.is.displayable": "Affichage activé", + "map.is.not.calibrated": "Étalonnage nécessaire", + "map.is.not.displayable": "Affichage désactivé", + "map.load.complete": "Chargement de la carte terminé à partir de", + "map.modified.date": "Dernière modification", + "map.name": "Nom de la carte", + "map.new.angle": "Indiquez l'angle par rapport au vrai nord (0 à 360)", + "map.new.name": "Définir un nom pour la carte", + "map.new.submit": "Sauvegarder et continuer", + "map.new.upload": "Téléchargez l'image de la carte pour commencer.", + "map.notify.calibration.needed": "Étalonnage nécessaire pour l'affichage", + "map.upload.new.file": "Refaire", + "max": "max", + "menu": "Menu", + "meter": "Mèter", + "meters": "Mèters", + "meter.create": "Create a Meter", + "meter.cumulative": "Cumulative:", + "meter.cumulativeReset": "Cumulative Reset:", + "meter.cumulativeResetEnd": "Cumulative Reset End:", + "meter.cumulativeResetStart": "Cumulative Reset Start:", + "meter.enabled": "Mises à Jour du Mèters", + "meter.endOnlyTime": "End Only Time:", + "meter.endTimeStamp": "End Time Stamp:", + "meter.minVal": "Minimum Reading Value Check", + "meter.maxVal": "Maximum Reading Value Check", + "meter.minDate": "Minimum Reading Date Check", + "meter.maxDate": "Maximum Reading Date Check", + "meter.maxError": "Maximum Number of Errors Check", + "meter.disableChecks": "Disable Checks", + "meter.failed.to.create.meter": "Failed to create a meter with message: ", + "meter.failed.to.edit.meter": "Failed to edit meter with message: ", + "meter.hidden": "At least one meter is not visible to you", + "meter.id": "Identifiant du Mèters", + "meter.input.error": "Input invalid so meter not created or edited.", + "meter.unit.change.requires": "needs to be changed before changing this unit's type", + "meter.unitName": "Unit:", + "meter.url": "URL du Mèters", + "meter.is.displayable": "Affichage Activées", + "meter.is.enabled": "Mises à Jour Activées", + "meter.is.not.displayable": "Affichage Désactivé", + "meter.is.not.enabled": "Mises à Jour Désactivées", + "meter.unit.is.not.editable": "This meter's unit cannot be changed and was put back to the original value because: ", + "meter.previousEnd": "Previous End Time Stamp:", + "meter.reading": "Reading:", + "meter.readingDuplication": "Reading Duplication:", + "meter.readingFrequency": "Reading Frequency", + "meter.readingGap": "Reading Gap:", + "meter.readingVariation": "Reading Variation:", + "meter.startTimeStamp": "Start Time Stamp:", + "meter.successfully.create.meter": "Successfully created a meter.", + "meter.successfully.edited.meter": "Successfully edited meter.", + "meter.timeSort": "Time Sort:", + "meter.time.zone": "fuseau horaire du mètre", + "meter.type": "Type de Mèters", + "minute": "Minute", + "min": "min", + "misc": "Divers", + "more.energy": "plus d'énergie", + "name": "Nom:", + "navigation": "Navigation", + "need.more.points": "Need more points", + "no": "no", + "note": "Noter:", + "no.data.in.range": "No Data In Date Range", + "oed": "Tableau de Bord Ouvert d'énergie", + "oed.description": "Le Tableau de Bord Ouvert d'énergie est un projet open source indépendant. ", + "oed.version": "OED version ", + "options": "Options", + "page.choice.login": "Page choices & login", + "page.choice.logout": "Page choices & logout", + "password": "Mot de passe", + "password.confirm": "Confirm password", + "per.day": "Per Day", + "per.hour": "Per Hour", + "per.minute": "Per Minute", + "per.second": "Per Second", + "projected.to.be.used": "projeté pour être utilisé", + "radar": "Radar", + "radar.lines.incompatible": "These meters/groups are not compatible for radar graphs", + "radar.no.data": "There are no readings:
likely the data range is outside meter/group reading range", + "rate": "Rate", + "reading": "Reading:", + "redo.cik.and.refresh.db.views": "Processing changes. This may take a while", + "readings.per.day": "Readings per Day", + "redraw": "Redessiner", + "remove": "Remove", + "restore": "Restaurer", + "return.dashboard": "Return To Dashboard", + "role": "Role", + "save.all": "Save all", + "save.map.edits": "Save map edits", + "save.meter.edits": "Enregistrer les modifications de compteur", + "save.role.changes": "Save role changes", + "second": "Second", + "select.groups": "Sélectionnez des Groupes", + "select.map": "Select Map", + "select.meter.type": "Select Meter Type", + "select.meter": "Sélectionnez de Mètres", + "select.meter.group": "Select meter or group to graph", + "select.meters": "Sélectionnez des Mètres", + "select.unit": "Select Unit", + "show": "Montrer", + "show.grid": "Show grid", + "show.options": "Options de désancrage", + "sort": "Trier", + "site.title": "Titre du site", + "submit": "Soumettre", + "submitting": "submitting", + "submit.changes": "Soumettre les changements", + "submit.new.user": "Submit new user", + "the.unit.of.meter": "The unit of meter", + "this.four.weeks": "Cette quatre semaines", + "this.week": "Cette semaine", + "threeD.area.incompatible": "
is incompatible
with area normalization", + "threeD.date": "Date", + "threeD.date.range.too.long": "Date Range Must be a year or less", + "threeD.incompatible": "Not Compatible with 3D", + "threeD.rendering": "Rendering", + "threeD.time": "Temps", + "threeD.x.axis.label": "Heures de la journée", + "threeD.y.axis.label": "Jours de l'année calendaire", + "timezone.no": "Pas de fuseau horaire", + "TimeSortTypes.decreasing": "décroissant", + "TimeSortTypes.increasing": "en augmentant", + "TimeSortTypes.meter": "valeur du compteur ou valeur par défaut", + "today": "Aujourd'hui", + "toggle.custom.slider": "Basculer le curseur personnalisé", + "toggle.link": "Bascule du lien du diagramme", + "total": "total", + "true": "Vrai", + "TrueFalseType.false": "no", + "TrueFalseType.true": "yes", + "undefined": "undefined", + "unit": "Unit", + "UnitRepresentType.quantity": "quantity", + "UnitRepresentType.flow": "flow", + "UnitRepresentType.raw": "raw", + "UnitType.unit": "unit", + "UnitType.meter": "meter", + "UnitType.suffix": "suffix", + "unit.delete.failure": "Failed to deleted unit with error: ", + "unit.delete.success": "Successfully deleted unit", + "unit.delete.unit": "Delete Unit", + "unit.destination.error": "as the destination unit", + "unit.dropdown.displayable.option.none": "None", + "unit.dropdown.displayable.option.all": "All", + "unit.dropdown.displayable.option.admin": "admin", + "unit.failed.to.create.unit": "Failed to create a unit.", + "unit.failed.to.delete.unit": "Delete cannot be done because this unit is used by the following", + "unit.failed.to.edit.unit": "Failed to edit unit.", + "unit.input.error": "Input invalid so unit not created or edited.", + "unit.none": "no unit", + "unit.preferred.display": "Preferred Display:", + "unit.represent": "Unit Represent:", + "unit.sec.in.rate": "Sec in Rate:", + "unit.source.error": "as the source unit", + "unit.submit.new.unit": "Submit New Unit", + "unit.successfully.create.unit": "Successfully created a unit.", + "unit.successfully.edited.unit": "Successfully edited unit.", + "unit.suffix": "Suffix:", + "unit.type.of.unit": "Type of Unit:", + "unit.type.of.unit.suffix": "Added suffix will set type of unit to suffix", + "units": "Units", + "unsaved.failure": "Changes failed to save", + "unsaved.success": "Changes saved", + "unsaved.warning": "You have unsaved change(s). Are you sure you want to leave?", + "update": "update", + "updated.map.with.calibration": "Updated map with renewed calibration", + "updated.map.without.calibration": "Updated map(uncalibrated)", + "updated.map.without.new.calibration": "Updated map", + "updated.preferences": "Préférences mises à jour", + "upload.meters.csv": "Télécharger le fichier CSV mètres", + "upload.new.map.with.calibration": "Uploaded new calibrated map", + "upload.new.map.without.calibration": "Uploaded new map(uncalibrated)", + "upload.readings.csv": "Télécharger les lectures fichier CSV", + "used.so.far": "utilisé jusqu'à présent", + "used.this.time": "utilisé cette fois", + "users": "Users", + "users.failed.to.create.user": "Failed to create a user.", + "users.failed.to.delete.user": "Failed to delete a user.", + "users.failed.to.edit.users": "Failed to edit users.", + "user.password.mismatch": "Passwords Do Not Match", + "users.successfully.create.user": "Création réussie d'un utilisateur.", + "users.successfully.delete.user": "Utilisateur supprimé avec succès.", + "users.successfully.edit.users": "Utilisateurs modifiés avec succès.", + "uses": "uses", + "view.groups": "Visionner les groupes", + "visit": " ou visitez notre ", + "website": "site web", + "week": "Semaine", + "yes": " yes", + "yesterday": "Hier", + "you.cannot.create.a.cyclic.group": "Vous ne pouvez pas créer un groupe cyclique" +}; \ No newline at end of file