From 5dea652860083af7b50884fdacdb86224c90ac8e Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:56:56 -0500 Subject: [PATCH 01/29] Add renderer for taxon tree def items --- .../lib/components/Preferences/Renderers.tsx | 44 ++++++++++++++++++- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 0af5d46b5a2..af6b5982744 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -3,7 +3,7 @@ * Most use the default renderes, but there are some exceptions */ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import { usePromise } from '../../hooks/useAsyncState'; import { useTriggerState } from '../../hooks/useTriggerState'; @@ -27,7 +27,7 @@ import { ReadOnlyContext } from '../Core/Contexts'; import type { AnySchema } from '../DataModel/helperTypes'; import type { SpecifyTable } from '../DataModel/specifyTable'; import { tables } from '../DataModel/tables'; -import type { Collection } from '../DataModel/types'; +import type { Collection, TaxonTreeDefItem } from '../DataModel/types'; import { rawMenuItemsPromise } from '../Header/menuItemDefinitions'; import { useMenuItems, useUserTools } from '../Header/menuItemProcessing'; import { AttachmentPicker } from '../Molecules/AttachmentPicker'; @@ -378,3 +378,43 @@ export function DefaultPreferenceItemRender({ /> ); } + +export async function fetchTaxonTreeDefItems(): Promise<{ rankId: number; name: string }[]> { + const response = await fetch('/api/specify/taxontreedefitem/'); + if (!response.ok) throw new Error('Failed to fetch TaxonTreeDefItems'); + const data = await response.json(); + return (data.objects ?? []).map((item: any) => ({ + rankId: item.rankid, + name: item.name, + })); +} + +export function ThresholdRank({ + value, + onChange, +}: PreferenceRendererProps): JSX.Element { + const [items, setItems] = useState<{ rankId: number; name: string }[]>([]); + const [loading, setLoading] = useState(true); + + useEffect(() => { + fetchTaxonTreeDefItems() + .then(setItems) + .finally(() => setLoading(false)); + }, []); + + if (loading) return <>{commonText.loading()}; + + return ( + + ); +} From 444b04f76ee052cb8a16ae0263bd2c94d542b500 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:57:15 -0500 Subject: [PATCH 02/29] Add threshold rank preference --- .../lib/components/Preferences/UserDefinitions.tsx | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx index 629d1d4d0a6..a296d742f2b 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx @@ -51,6 +51,7 @@ import { FontFamilyPreferenceItem, HeaderItemsPreferenceItem, WelcomePageModePreferenceItem, + ThresholdRank, } from './Renderers'; import type { GenericPreferences, PreferencesVisibilityContext } from './types'; import { definePref } from './types'; @@ -1463,6 +1464,15 @@ export const userPreferenceDefinitions = { defaultValue: true, type: 'java.lang.Boolean', }), + taxonRankThreshold: definePref({ + title: preferencesText.rankThreshold(), + description: preferencesText.rankThresholdDescription(), + requiresReload: true, + visible: true, + defaultValue: 0, + renderer: ThresholdRank, + container: 'label', + }), }, }, storage: { From 3c25958b799894321e6f15f16b6eaac5a0241ef3 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 20:57:19 -0500 Subject: [PATCH 03/29] Update preferences.ts --- .../js_src/lib/localization/preferences.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/specifyweb/frontend/js_src/lib/localization/preferences.ts b/specifyweb/frontend/js_src/lib/localization/preferences.ts index cecc515b83c..9e980dd2746 100644 --- a/specifyweb/frontend/js_src/lib/localization/preferences.ts +++ b/specifyweb/frontend/js_src/lib/localization/preferences.ts @@ -128,6 +128,21 @@ export const preferencesText = createDictionary({ 'de-ch': 'Nicht erforderliche Animationen und Übergänge deaktivieren.', 'pt-br': 'Desabilite animações e transições não essenciais.', }, + rankThreshold: { + 'en-us': 'Show object count', + }, + rankThresholdDescription: { + 'en-us': 'Show the count of Collection Objects for all ranks including and below this one.', + 'ru-ru': + 'Показывать количество объектов коллекции для всех рангов, включая и ниже этого.', + 'es-es': 'Mostrar la cantidad de objetos de colección para todos los rangos, incluidos y por debajo de este.', + 'fr-fr': + 'Afficher le nombre d\'objets de collection pour tous les rangs, y compris et en dessous de celui-ci.', + 'uk-ua': 'Показати кількість об\'єктів колекції для всіх рангів, включаючи та нижче цього.', + 'de-ch': + 'Anzahl der Sammlungsobjekte für alle Ränge einschließlich und unterhalb dieses Rangs anzeigen.', + 'pt-br': 'Mostrar a contagem de Objetos de Coleção para todos os ranks, incluindo e abaixo deste.', + }, reduceTransparency: { 'en-us': 'Reduce transparency', 'ru-ru': 'Уменьшить прозрачность', From cc2fbe62b76186538597d34977d0b3bca6cd545b Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 21:02:12 -0500 Subject: [PATCH 04/29] Update Renderers.tsx --- .../frontend/js_src/lib/components/Preferences/Renderers.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index af6b5982744..a7780968041 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -27,7 +27,7 @@ import { ReadOnlyContext } from '../Core/Contexts'; import type { AnySchema } from '../DataModel/helperTypes'; import type { SpecifyTable } from '../DataModel/specifyTable'; import { tables } from '../DataModel/tables'; -import type { Collection, TaxonTreeDefItem } from '../DataModel/types'; +import type { Collection } from '../DataModel/types'; import { rawMenuItemsPromise } from '../Header/menuItemDefinitions'; import { useMenuItems, useUserTools } from '../Header/menuItemProcessing'; import { AttachmentPicker } from '../Molecules/AttachmentPicker'; From 2ae849728f9d2d34626b6a9170e825c1c06994a2 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 21:12:09 -0500 Subject: [PATCH 05/29] Update remotePrefs.test.ts.snap --- .../__tests__/__snapshots__/remotePrefs.test.ts.snap | 1 + 1 file changed, 1 insertion(+) diff --git a/specifyweb/frontend/js_src/lib/components/InitialContext/__tests__/__snapshots__/remotePrefs.test.ts.snap b/specifyweb/frontend/js_src/lib/components/InitialContext/__tests__/__snapshots__/remotePrefs.test.ts.snap index c03e1bb1729..81c8500b492 100644 --- a/specifyweb/frontend/js_src/lib/components/InitialContext/__tests__/__snapshots__/remotePrefs.test.ts.snap +++ b/specifyweb/frontend/js_src/lib/components/InitialContext/__tests__/__snapshots__/remotePrefs.test.ts.snap @@ -50,6 +50,7 @@ exports[`fetches and parses remotePrefs correctly 1`] = ` "SubPaneMgr.MaxPanes": "12", "SymbiotaTask.BaseUrlPref": "http\\\\://pinkava.asu.edu/symbiota/sandbox/webservices/dwc/dwcaingesthandler.php", "SymbiotaTask.SHOW_TASK_PREF.fish": "false", + "TaxonTreeEditor.DisplayAuthor": "true", "Testing2": "", "TreeEditor.Rank.Threshold.Geography": "100", "TreeEditor.Rank.Threshold.GeologicTimePeriod": "0", From 8806806c5c3768d34e9857ae3a4a55c54fcfdc91 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 21:51:36 -0500 Subject: [PATCH 06/29] Update renderer to be generic across tree tables --- .../lib/components/Preferences/Renderers.tsx | 35 +++++------ .../Preferences/UserDefinitions.tsx | 61 ++++++++++++++++++- 2 files changed, 74 insertions(+), 22 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index a7780968041..8fa3c23f978 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -392,29 +392,24 @@ export async function fetchTaxonTreeDefItems(): Promise<{ rankId: number; name: export function ThresholdRank({ value, onChange, -}: PreferenceRendererProps): JSX.Element { - const [items, setItems] = useState<{ rankId: number; name: string }[]>([]); - const [loading, setLoading] = useState(true); - - useEffect(() => { - fetchTaxonTreeDefItems() - .then(setItems) - .finally(() => setLoading(false)); - }, []); - - if (loading) return <>{commonText.loading()}; + tableName, +}: PreferenceRendererProps & { tableName: string }): JSX.Element { + const [items, setItems] = React.useState<{ rankId: number; name: string }[]>([]); + React.useEffect(() => { + fetch(`/api/specify/${tableName.toLowerCase()}treedefitem/`) + .then(res => res.json()) + .then(data => setItems((data.objects ?? []).map((item: any) => ({ + rankId: item.rankid, + name: item.name, + })))); + }, [tableName]); return ( - onChange(Number(e.target.value))}> + {items.map(({ rankId, name }) => ( - + ))} - + ); } diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx index a296d742f2b..cf6d64b1d30 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx @@ -1436,6 +1436,17 @@ export const userPreferenceDefinitions = { renderer: ColorPickerPreferenceItem, container: 'label', }), + rankThreshold: definePref({ + title: preferencesText.rankThreshold(), + description: preferencesText.rankThresholdDescription(), + requiresReload: true, + visible: true, + defaultValue: 0, + renderer: (props) => ( + + ), + container: 'label', + }), }, }, taxon: { @@ -1464,13 +1475,15 @@ export const userPreferenceDefinitions = { defaultValue: true, type: 'java.lang.Boolean', }), - taxonRankThreshold: definePref({ + rankThreshold: definePref({ title: preferencesText.rankThreshold(), description: preferencesText.rankThresholdDescription(), requiresReload: true, visible: true, defaultValue: 0, - renderer: ThresholdRank, + renderer: (props) => ( + + ), container: 'label', }), }, @@ -1494,6 +1507,17 @@ export const userPreferenceDefinitions = { renderer: ColorPickerPreferenceItem, container: 'label', }), + rankThreshold: definePref({ + title: preferencesText.rankThreshold(), + description: preferencesText.rankThresholdDescription(), + requiresReload: true, + visible: true, + defaultValue: 0, + renderer: (props) => ( + + ), + container: 'label', + }), }, }, geologicTimePeriod: { @@ -1515,6 +1539,17 @@ export const userPreferenceDefinitions = { renderer: ColorPickerPreferenceItem, container: 'label', }), + rankThreshold: definePref({ + title: preferencesText.rankThreshold(), + description: preferencesText.rankThresholdDescription(), + requiresReload: true, + visible: true, + defaultValue: 0, + renderer: (props) => ( + + ), + container: 'label', + }), }, }, lithoStrat: { @@ -1536,6 +1571,17 @@ export const userPreferenceDefinitions = { renderer: ColorPickerPreferenceItem, container: 'label', }), + rankThreshold: definePref({ + title: preferencesText.rankThreshold(), + description: preferencesText.rankThresholdDescription(), + requiresReload: true, + visible: true, + defaultValue: 0, + renderer: (props) => ( + + ), + container: 'label', + }), }, }, tectonicUnit: { @@ -1557,6 +1603,17 @@ export const userPreferenceDefinitions = { renderer: ColorPickerPreferenceItem, container: 'label', }), + rankThreshold: definePref({ + title: preferencesText.rankThreshold(), + description: preferencesText.rankThresholdDescription(), + requiresReload: true, + visible: true, + defaultValue: 0, + renderer: (props) => ( + + ), + container: 'label', + }), }, }, }, From c760d44465a70e5c5fd746431aa6d33f6bf8d2f6 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 22:07:26 -0500 Subject: [PATCH 07/29] Use user preference instead of remotePref --- specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx index 19c3fe432ee..4d834453533 100644 --- a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx +++ b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx @@ -98,8 +98,10 @@ export function Tree< 'synonymColor' ); - const statsThreshold = getPref( - `TreeEditor.Rank.Threshold.${tableName as 'Geography'}` + const [statsThreshold] = userPreferences.use( + 'treeEditor', + treeToPref[tableName], + 'rankThreshold' ); const getStats = React.useCallback( async (nodeId: number | 'null', rankId: number): Promise => From 25217bfd9e3fcf4c55d493469387a9416096c3b9 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 22:11:52 -0500 Subject: [PATCH 08/29] Remove unused imports --- .../frontend/js_src/lib/components/Preferences/Renderers.tsx | 2 -- specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx | 1 - 2 files changed, 3 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 8fa3c23f978..5dbfc5e5706 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -3,8 +3,6 @@ * Most use the default renderes, but there are some exceptions */ -import React, { useEffect, useState } from 'react'; - import { usePromise } from '../../hooks/useAsyncState'; import { useTriggerState } from '../../hooks/useTriggerState'; import { useValidation } from '../../hooks/useValidation'; diff --git a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx index 4d834453533..547dd500661 100644 --- a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx +++ b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx @@ -19,7 +19,6 @@ import { idFromUrl } from '../DataModel/resource'; import { deserializeResource } from '../DataModel/serializers'; import { softError } from '../Errors/assert'; import { ResourceView } from '../Forms/ResourceView'; -import { getPref } from '../InitialContext/remotePrefs'; import { hasTablePermission } from '../Permissions/helpers'; import { useHighContrast } from '../Preferences/Hooks'; import { userPreferences } from '../Preferences/userPreferences'; From 30c35c6ebeeff89bb24cbbb53f59fb6082ee4a2a Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 22:18:30 -0500 Subject: [PATCH 09/29] Update Renderers.tsx --- .../frontend/js_src/lib/components/Preferences/Renderers.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 5dbfc5e5706..679a17ed415 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -3,6 +3,8 @@ * Most use the default renderes, but there are some exceptions */ +import React from 'react'; + import { usePromise } from '../../hooks/useAsyncState'; import { useTriggerState } from '../../hooks/useTriggerState'; import { useValidation } from '../../hooks/useValidation'; From e80d3b7c1a6c765031b5048be40033fbd224a4c8 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Tue, 1 Jul 2025 03:22:36 +0000 Subject: [PATCH 10/29] Lint code with ESLint and Prettier Triggered by 30c35c6ebeeff89bb24cbbb53f59fb6082ee4a2a on branch refs/heads/issue-6843 --- .../js_src/lib/components/Preferences/Renderers.tsx | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 679a17ed415..663d11a4975 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -379,7 +379,7 @@ export function DefaultPreferenceItemRender({ ); } -export async function fetchTaxonTreeDefItems(): Promise<{ rankId: number; name: string }[]> { +export async function fetchTaxonTreeDefItems(): Promise { const response = await fetch('/api/specify/taxontreedefitem/'); if (!response.ok) throw new Error('Failed to fetch TaxonTreeDefItems'); const data = await response.json(); @@ -393,11 +393,11 @@ export function ThresholdRank({ value, onChange, tableName, -}: PreferenceRendererProps & { tableName: string }): JSX.Element { - const [items, setItems] = React.useState<{ rankId: number; name: string }[]>([]); +}: PreferenceRendererProps & { readonly tableName: string }): JSX.Element { + const [items, setItems] = React.useState([]); React.useEffect(() => { fetch(`/api/specify/${tableName.toLowerCase()}treedefitem/`) - .then(res => res.json()) + .then(async res => res.json()) .then(data => setItems((data.objects ?? []).map((item: any) => ({ rankId: item.rankid, name: item.name, From 68a187d4da5b74f474f151acde83d212991ca40c Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 22:30:19 -0500 Subject: [PATCH 11/29] Correct description --- specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx | 1 + specifyweb/frontend/js_src/lib/localization/preferences.ts | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx index 547dd500661..4134fcf320e 100644 --- a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx +++ b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx @@ -102,6 +102,7 @@ export function Tree< treeToPref[tableName], 'rankThreshold' ); + const getStats = React.useCallback( async (nodeId: number | 'null', rankId: number): Promise => rankId >= statsThreshold diff --git a/specifyweb/frontend/js_src/lib/localization/preferences.ts b/specifyweb/frontend/js_src/lib/localization/preferences.ts index 9e980dd2746..8da53179f45 100644 --- a/specifyweb/frontend/js_src/lib/localization/preferences.ts +++ b/specifyweb/frontend/js_src/lib/localization/preferences.ts @@ -132,7 +132,7 @@ export const preferencesText = createDictionary({ 'en-us': 'Show object count', }, rankThresholdDescription: { - 'en-us': 'Show the count of Collection Objects for all ranks including and below this one.', + 'en-us': 'Show the count of Collection Objects for all ranks below this one.', 'ru-ru': 'Показывать количество объектов коллекции для всех рангов, включая и ниже этого.', 'es-es': 'Mostrar la cantidad de objetos de colección para todos los rangos, incluidos y por debajo de este.', From d18394c75bf98658c138300b18d8cf04922d7750 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Tue, 1 Jul 2025 03:34:29 +0000 Subject: [PATCH 12/29] Lint code with ESLint and Prettier Triggered by 95c7c50dca8187814ae71455c37e3162e4ce2de1 on branch refs/heads/issue-6843 --- .../js_src/lib/localization/preferences.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/localization/preferences.ts b/specifyweb/frontend/js_src/lib/localization/preferences.ts index 8da53179f45..5bd31d90854 100644 --- a/specifyweb/frontend/js_src/lib/localization/preferences.ts +++ b/specifyweb/frontend/js_src/lib/localization/preferences.ts @@ -132,16 +132,20 @@ export const preferencesText = createDictionary({ 'en-us': 'Show object count', }, rankThresholdDescription: { - 'en-us': 'Show the count of Collection Objects for all ranks below this one.', + 'en-us': + 'Show the count of Collection Objects for all ranks below this one.', 'ru-ru': 'Показывать количество объектов коллекции для всех рангов, включая и ниже этого.', - 'es-es': 'Mostrar la cantidad de objetos de colección para todos los rangos, incluidos y por debajo de este.', + 'es-es': + 'Mostrar la cantidad de objetos de colección para todos los rangos, incluidos y por debajo de este.', 'fr-fr': - 'Afficher le nombre d\'objets de collection pour tous les rangs, y compris et en dessous de celui-ci.', - 'uk-ua': 'Показати кількість об\'єктів колекції для всіх рангів, включаючи та нижче цього.', + "Afficher le nombre d'objets de collection pour tous les rangs, y compris et en dessous de celui-ci.", + 'uk-ua': + "Показати кількість об'єктів колекції для всіх рангів, включаючи та нижче цього.", 'de-ch': 'Anzahl der Sammlungsobjekte für alle Ränge einschließlich und unterhalb dieses Rangs anzeigen.', - 'pt-br': 'Mostrar a contagem de Objetos de Coleção para todos os ranks, incluindo e abaixo deste.', + 'pt-br': + 'Mostrar a contagem de Objetos de Coleção para todos os ranks, incluindo e abaixo deste.', }, reduceTransparency: { 'en-us': 'Reduce transparency', @@ -708,7 +712,7 @@ export const preferencesText = createDictionary({ 'en-us': 'Show author in the tree', 'ru-ru': 'Показать автора в дереве', 'es-es': 'Mostrar autor en el árbol', - 'fr-fr': 'Afficher l\'auteur dans l\'arbre', + 'fr-fr': "Afficher l'auteur dans l'arbre", 'uk-ua': 'Показати автора в дереві', 'de-ch': 'Autor im Baum anzeigen', 'pt-br': 'Mostrar autoria', From 539027d7b2fd37f7c630dd027b4ec23f002dc42c Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 23:03:58 -0500 Subject: [PATCH 13/29] Remove unused function --- .../js_src/lib/components/Preferences/Renderers.tsx | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 663d11a4975..973044d958e 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -379,16 +379,6 @@ export function DefaultPreferenceItemRender({ ); } -export async function fetchTaxonTreeDefItems(): Promise { - const response = await fetch('/api/specify/taxontreedefitem/'); - if (!response.ok) throw new Error('Failed to fetch TaxonTreeDefItems'); - const data = await response.json(); - return (data.objects ?? []).map((item: any) => ({ - rankId: item.rankid, - name: item.name, - })); -} - export function ThresholdRank({ value, onChange, From 430e743918f3d422699cf350b94a617c340c6cae Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 23:04:32 -0500 Subject: [PATCH 14/29] Update specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../js_src/lib/components/Preferences/Renderers.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 973044d958e..ee39eb9160c 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -387,11 +387,18 @@ export function ThresholdRank({ const [items, setItems] = React.useState([]); React.useEffect(() => { fetch(`/api/specify/${tableName.toLowerCase()}treedefitem/`) - .then(async res => res.json()) + .then(async res => { + if (!res.ok) throw new Error('Failed to fetch ThresholdRank items'); + return res.json(); + }) .then(data => setItems((data.objects ?? []).map((item: any) => ({ rankId: item.rankid, name: item.name, - })))); + })))) + .catch(error => { + console.error('Error fetching ThresholdRank items:', error); + setItems([]); + }); }, [tableName]); return ( From e7c7afe032c7f1e0d4195ca37f9482a0107ff90d Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 23:06:26 -0500 Subject: [PATCH 15/29] Remove 'none' option --- .../frontend/js_src/lib/components/Preferences/Renderers.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 973044d958e..505b6441eda 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -396,7 +396,6 @@ export function ThresholdRank({ return ( onChange(Number(e.target.value))}> + {items.map(({ rankId, name }) => ( ))} From 098d3618f27fd06aeb4d76827537ba332ce6dc7e Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Mon, 30 Jun 2025 23:12:01 -0500 Subject: [PATCH 18/29] Update preferences.ts --- specifyweb/frontend/js_src/lib/localization/preferences.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifyweb/frontend/js_src/lib/localization/preferences.ts b/specifyweb/frontend/js_src/lib/localization/preferences.ts index 7b30375f677..3a9e293ab5d 100644 --- a/specifyweb/frontend/js_src/lib/localization/preferences.ts +++ b/specifyweb/frontend/js_src/lib/localization/preferences.ts @@ -129,7 +129,7 @@ export const preferencesText = createDictionary({ 'pt-br': 'Desabilite animações e transições não essenciais.', }, rankThreshold: { - 'en-us': 'Show object count', + 'en-us': 'Show object count below', }, rankThresholdDescription: { 'en-us': From 48314b3545ed0beed8dadc650a6a51e6fbd44b83 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Tue, 1 Jul 2025 09:13:52 -0500 Subject: [PATCH 19/29] Use RA<> Suggested by @CarolineDenis --- .../frontend/js_src/lib/components/Preferences/Renderers.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index ee39eb9160c..87276093e94 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -384,7 +384,7 @@ export function ThresholdRank({ onChange, tableName, }: PreferenceRendererProps & { readonly tableName: string }): JSX.Element { - const [items, setItems] = React.useState([]); + const [items, setItems] = React.useState>([]); React.useEffect(() => { fetch(`/api/specify/${tableName.toLowerCase()}treedefitem/`) .then(async res => { From 86a8e33360df20f76632b34390c9e88a9dc6545f Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Tue, 1 Jul 2025 11:39:32 -0500 Subject: [PATCH 20/29] Order ranks --- .../lib/components/Preferences/Renderers.tsx | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 87276093e94..fadf081adbf 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -379,23 +379,36 @@ export function DefaultPreferenceItemRender({ ); } +type Rank = { rankId: number; name: string }; + +// This grabs the ranks from the API and displays them in a dropdown +// The ranks are sorted in ascending order by `rankId` so they appear in the correct order for the user export function ThresholdRank({ value, onChange, tableName, }: PreferenceRendererProps & { readonly tableName: string }): JSX.Element { - const [items, setItems] = React.useState>([]); + const [items, setItems] = React.useState([]); React.useEffect(() => { fetch(`/api/specify/${tableName.toLowerCase()}treedefitem/`) .then(async res => { if (!res.ok) throw new Error('Failed to fetch ThresholdRank items'); return res.json(); }) - .then(data => setItems((data.objects ?? []).map((item: any) => ({ - rankId: item.rankid, - name: item.name, - })))) - .catch(error => { + .then((data: { objects?: Array<{ rankid: number; name: string }> }) => + setItems( + (data.objects ?? []) + .map( + // Map the results to the Rank type + (item: { rankid: number; name: string }): Rank => ({ + rankId: item.rankid, + name: item.name, + }) + ) // This sorts the ranks so they appear in ascending order in the dropdown + .sort((rankA, rankB) => rankA.rankId - rankB.rankId) + ) + ) + .catch((error: unknown) => { console.error('Error fetching ThresholdRank items:', error); setItems([]); }); From 4f08ce20a50762d0273e6ea1868728dc78baadb5 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Tue, 1 Jul 2025 16:43:31 +0000 Subject: [PATCH 21/29] Lint code with ESLint and Prettier Triggered by 86a8e33360df20f76632b34390c9e88a9dc6545f on branch refs/heads/issue-6843 --- .../lib/components/Preferences/Renderers.tsx | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index fadf081adbf..48fe82b7838 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -379,28 +379,30 @@ export function DefaultPreferenceItemRender({ ); } -type Rank = { rankId: number; name: string }; +type Rank = { readonly rankId: number; readonly name: string }; -// This grabs the ranks from the API and displays them in a dropdown -// The ranks are sorted in ascending order by `rankId` so they appear in the correct order for the user +/* + * This grabs the ranks from the API and displays them in a dropdown + * The ranks are sorted in ascending order by `rankId` so they appear in the correct order for the user + */ export function ThresholdRank({ value, onChange, tableName, }: PreferenceRendererProps & { readonly tableName: string }): JSX.Element { - const [items, setItems] = React.useState([]); + const [items, setItems] = React.useState([]); React.useEffect(() => { fetch(`/api/specify/${tableName.toLowerCase()}treedefitem/`) .then(async res => { if (!res.ok) throw new Error('Failed to fetch ThresholdRank items'); return res.json(); }) - .then((data: { objects?: Array<{ rankid: number; name: string }> }) => + .then((data: { readonly objects?: readonly { readonly rankid: number; readonly name: string }[] }) => setItems( (data.objects ?? []) .map( // Map the results to the Rank type - (item: { rankid: number; name: string }): Rank => ({ + (item: { readonly rankid: number; readonly name: string }): Rank => ({ rankId: item.rankid, name: item.name, }) From 7a2eff4d4bc9b3e8413351d60bc8f07a1a99ba97 Mon Sep 17 00:00:00 2001 From: Jason Melton <64045831+melton-jason@users.noreply.github.com> Date: Mon, 7 Jul 2025 20:51:08 +0000 Subject: [PATCH 22/29] Lint code with ESLint and Prettier Triggered by 5d91e2077eff38cabd1e4b601f83a7ce2a4683fd on branch refs/heads/issue-6843 --- .../AppResources/__tests__/useAppResources.test.ts | 12 ++++++------ .../lib/components/Preferences/UserDefinitions.tsx | 6 ++---- .../frontend/js_src/lib/hooks/useAsyncStateMock.ts | 6 ++++-- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/useAppResources.test.ts b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/useAppResources.test.ts index b60ee212e16..43f7dd3891c 100644 --- a/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/useAppResources.test.ts +++ b/specifyweb/frontend/js_src/lib/components/AppResources/__tests__/useAppResources.test.ts @@ -1,16 +1,16 @@ import { renderHook, waitFor } from '@testing-library/react'; +import { useAsyncStateMock } from '../../../hooks/useAsyncStateMock'; import { overrideAjax } from '../../../tests/ajax'; import { requireContext } from '../../../tests/helpers'; import type { RA } from '../../../utils/types'; import { useAppResources } from '../hooks'; import { staticAppResources } from './staticAppResources'; -import { useAsyncStateMock } from '../../../hooks/useAsyncStateMock'; -const mockFn = jest.fn(); +const mockFunction = jest.fn(); function mockState(callback: () => Promise | undefined) { - useAsyncStateMock(callback, mockFn); + useAsyncStateMock(callback, mockFunction); return [undefined, undefined]; } @@ -25,7 +25,7 @@ jest.mock('../../../hooks/useAsyncState', () => { requireContext(); beforeAll(() => { - mockFn.mockClear(); + mockFunction.mockClear(); }); describe('useAppResources', () => { @@ -69,8 +69,8 @@ describe('useAppResources', () => { renderHook(() => useAppResources(false)); await waitFor(() => { - expect(mockFn).toBeCalledTimes(1); - expect(mockFn.mock.lastCall).toEqual([staticAppResources]); + expect(mockFunction).toHaveBeenCalledTimes(1); + expect(mockFunction.mock.lastCall).toEqual([staticAppResources]); }); }); }); diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx index 49c10b430ed..f110cd76e42 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/UserDefinitions.tsx @@ -50,8 +50,8 @@ import { defaultFont, FontFamilyPreferenceItem, HeaderItemsPreferenceItem, - WelcomePageModePreferenceItem, ThresholdRank, + WelcomePageModePreferenceItem, } from './Renderers'; import type { GenericPreferences, PreferencesVisibilityContext } from './types'; import { definePref } from './types'; @@ -1497,9 +1497,7 @@ export const userPreferenceDefinitions = { requiresReload: true, visible: true, defaultValue: 0, - renderer: (props) => ( - - ), + renderer: (props) => , container: 'label', }), }, diff --git a/specifyweb/frontend/js_src/lib/hooks/useAsyncStateMock.ts b/specifyweb/frontend/js_src/lib/hooks/useAsyncStateMock.ts index 9644205b634..ea1d32dd688 100644 --- a/specifyweb/frontend/js_src/lib/hooks/useAsyncStateMock.ts +++ b/specifyweb/frontend/js_src/lib/hooks/useAsyncStateMock.ts @@ -1,5 +1,7 @@ -// Like useAsyncState, but calls the callback function rather than updating the state. -// Actually, useAsyncState can be refactored to use this +/* + * Like useAsyncState, but calls the callback function rather than updating the state. + * Actually, useAsyncState can be refactored to use this + */ import React from 'react'; From c81eafca9c22840c7bc8bf6fcd0739df394a8650 Mon Sep 17 00:00:00 2001 From: Grant Fitzsimmons <37256050+grantfitzsimmons@users.noreply.github.com> Date: Thu, 24 Jul 2025 03:19:08 +0000 Subject: [PATCH 23/29] Lint code with ESLint and Prettier Triggered by d7632f6d0133e1fea80abfc86df7cb637fb9bc34 on branch refs/heads/issue-6843 --- .../js_src/lib/localization/locality.ts | 908 ++++----- .../frontend/js_src/lib/localization/main.ts | 424 ++-- .../frontend/js_src/lib/localization/query.ts | 1500 +++++++-------- .../js_src/lib/localization/schema.ts | 842 ++++---- .../js_src/lib/localization/specifyNetwork.ts | 300 +-- .../frontend/js_src/lib/localization/user.ts | 1710 ++++++++--------- .../js_src/lib/localization/wbPlan.ts | 1038 +++++----- .../js_src/lib/localization/welcome.ts | 310 +-- 8 files changed, 3516 insertions(+), 3516 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/localization/locality.ts b/specifyweb/frontend/js_src/lib/localization/locality.ts index 6d8ca9f6a51..53086da596f 100644 --- a/specifyweb/frontend/js_src/lib/localization/locality.ts +++ b/specifyweb/frontend/js_src/lib/localization/locality.ts @@ -4,590 +4,590 @@ * @module */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const localityText = createDictionary({ openMap: { - "en-us": "Open Map", - "ru-ru": "Открыть карту", - "es-es": "Abrir mapa", - "fr-fr": "Ouvrir la carte", - "uk-ua": "Відкрийте карту", - "de-ch": "Karte öffnen", - "pt-br": "Mapa aberto", + 'en-us': 'Open Map', + 'ru-ru': 'Открыть карту', + 'es-es': 'Abrir mapa', + 'fr-fr': 'Ouvrir la carte', + 'uk-ua': 'Відкрийте карту', + 'de-ch': 'Karte öffnen', + 'pt-br': 'Mapa aberto', }, geoMap: { - "en-us": "GeoMap", - "ru-ru": "Карта", - "es-es": "GeoMap", - "fr-fr": "GeoMap", - "uk-ua": "Геокарта", - "de-ch": "Karte", - "pt-br": "GeoMap", + 'en-us': 'GeoMap', + 'ru-ru': 'Карта', + 'es-es': 'GeoMap', + 'fr-fr': 'GeoMap', + 'uk-ua': 'Геокарта', + 'de-ch': 'Karte', + 'pt-br': 'GeoMap', }, queryMapSubset: { - comment: "Used in GeoMap header while records are still being fetched", - "en-us": - "GeoMap - Plotted {plotted:number|formatted} of {total:number|formatted} records", - "ru-ru": - "Карта - Отображено {plotted:number|formatted} из {total:number|formatted} записей", - "es-es": - "GeoMap - Trazado {plotted:number|formatted} de {total:number|formatted} registros", - "fr-fr": - "GeoMap - {plotted:number|formatted} sur {total:number|formatted} enregistrements placés", - "uk-ua": - "GeoMap - нанесено {plotted:number|formatted} із {total:number|formatted} записів", - "de-ch": - "GeoMap hat {plotted:number|formatted} von {total:number|formatted} Datensätzen gezeichnet", - "pt-br": - "GeoMap - Plotado {plotted:number|formatted} de {total:number|formatted} registros", + comment: 'Used in GeoMap header while records are still being fetched', + 'en-us': + 'GeoMap - Plotted {plotted:number|formatted} of {total:number|formatted} records', + 'ru-ru': + 'Карта - Отображено {plotted:number|formatted} из {total:number|formatted} записей', + 'es-es': + 'GeoMap - Trazado {plotted:number|formatted} de {total:number|formatted} registros', + 'fr-fr': + 'GeoMap - {plotted:number|formatted} sur {total:number|formatted} enregistrements placés', + 'uk-ua': + 'GeoMap - нанесено {plotted:number|formatted} із {total:number|formatted} записів', + 'de-ch': + 'GeoMap hat {plotted:number|formatted} von {total:number|formatted} Datensätzen gezeichnet', + 'pt-br': + 'GeoMap - Plotado {plotted:number|formatted} de {total:number|formatted} registros', }, queryMapAll: { - "en-us": "GeoMap - Plotted {plotted:number|formatted} records", - "ru-ru": "Карта - Отображено {plotted:number|formatted} записей", - "es-es": "GeoMap - {plotted:number|formatted} registros trazados", - "fr-fr": "GéoCarte - {plotted:number|formatted} enregistrements placés", - "uk-ua": "GeoMap - Нанесені записи {plotted:number|formatted}.", - "de-ch": "GeoMap hat {plotted:number|formatted} Datensätze gezeichnet", - "pt-br": "GeoMap - Registros plotados {plotted:number|formatted}", + 'en-us': 'GeoMap - Plotted {plotted:number|formatted} records', + 'ru-ru': 'Карта - Отображено {plotted:number|formatted} записей', + 'es-es': 'GeoMap - {plotted:number|formatted} registros trazados', + 'fr-fr': 'GéoCarte - {plotted:number|formatted} enregistrements placés', + 'uk-ua': 'GeoMap - Нанесені записи {plotted:number|formatted}.', + 'de-ch': 'GeoMap hat {plotted:number|formatted} Datensätze gezeichnet', + 'pt-br': 'GeoMap - Registros plotados {plotted:number|formatted}', }, polygonBoundaries: { - "en-us": "Polygon Boundaries", - "ru-ru": "Границы многоугольника", - "es-es": "Límites de polígono", - "fr-fr": "Limites du polygone", - "uk-ua": "Межі багатокутників", - "de-ch": "Polygon-Grenzen", - "pt-br": "Limites de polígonos", + 'en-us': 'Polygon Boundaries', + 'ru-ru': 'Границы многоугольника', + 'es-es': 'Límites de polígono', + 'fr-fr': 'Limites du polygone', + 'uk-ua': 'Межі багатокутників', + 'de-ch': 'Polygon-Grenzen', + 'pt-br': 'Limites de polígonos', }, errorRadius: { - "en-us": "Error Radius", - "ru-ru": "Радиус ошибки", - "es-es": "Radio de error", - "fr-fr": "Rayon d'erreur", - "uk-ua": "Радіус помилки", - "de-ch": "Fehlerradius", - "pt-br": "Raio de erro", + 'en-us': 'Error Radius', + 'ru-ru': 'Радиус ошибки', + 'es-es': 'Radio de error', + 'fr-fr': "Rayon d'erreur", + 'uk-ua': 'Радіус помилки', + 'de-ch': 'Fehlerradius', + 'pt-br': 'Raio de erro', }, showMap: { - "en-us": "Show Map", - "ru-ru": "Показать карту", - "es-es": "Mostrar mapa", - "fr-fr": "Afficher la carte", - "uk-ua": "Показати карту", - "de-ch": "Karte anzeigen", - "pt-br": "Mostrar mapa", + 'en-us': 'Show Map', + 'ru-ru': 'Показать карту', + 'es-es': 'Mostrar mapa', + 'fr-fr': 'Afficher la carte', + 'uk-ua': 'Показати карту', + 'de-ch': 'Karte anzeigen', + 'pt-br': 'Mostrar mapa', }, noCoordinates: { - "en-us": "No coordinates", - "ru-ru": "Нет координат", - "es-es": "Sin coordenadas", - "fr-fr": "Pas de coordonnées", - "uk-ua": "Без координат", - "de-ch": "Keine Koordinaten", - "pt-br": "Sem coordenadas", + 'en-us': 'No coordinates', + 'ru-ru': 'Нет координат', + 'es-es': 'Sin coordenadas', + 'fr-fr': 'Pas de coordonnées', + 'uk-ua': 'Без координат', + 'de-ch': 'Keine Koordinaten', + 'pt-br': 'Sem coordenadas', }, notEnoughInformationToMap: { - "en-us": "{localityTable:string} must have coordinates to be mapped.", - "ru-ru": - "Чтобы нанести {localityTable:string} на карту, необходимо указать координаты.", - "es-es": "{localityTable:string} debe tener coordenadas para ser mapeadas.", - "fr-fr": - "{localityTable:string} doit avoir des coordonnées pour être cartographié.", - "uk-ua": "{localityTable:string} має мати координати для відображення.", - "de-ch": - "{localityTable:string} muss Koordinaten haben, um kartiert werden zu können.", - "pt-br": "{localityTable:string} deve ter coordenadas para ser mapeado.", + 'en-us': '{localityTable:string} must have coordinates to be mapped.', + 'ru-ru': + 'Чтобы нанести {localityTable:string} на карту, необходимо указать координаты.', + 'es-es': '{localityTable:string} debe tener coordenadas para ser mapeadas.', + 'fr-fr': + '{localityTable:string} doit avoir des coordonnées pour être cartographié.', + 'uk-ua': '{localityTable:string} має мати координати для відображення.', + 'de-ch': + '{localityTable:string} muss Koordinaten haben, um kartiert werden zu können.', + 'pt-br': '{localityTable:string} deve ter coordenadas para ser mapeado.', }, occurrencePoints: { - "en-us": "Pins", - "ru-ru": "Точки", - "es-es": "Patas", - "fr-fr": "Épingles", - "uk-ua": "Шпильки", - "de-ch": "Stecknadeln", - "pt-br": "Alfinetes", + 'en-us': 'Pins', + 'ru-ru': 'Точки', + 'es-es': 'Patas', + 'fr-fr': 'Épingles', + 'uk-ua': 'Шпильки', + 'de-ch': 'Stecknadeln', + 'pt-br': 'Alfinetes', }, occurrencePolygons: { - "en-us": "Polygons", - "ru-ru": "Полигоны", - "es-es": "Polígonos", - "fr-fr": "Polygones", - "uk-ua": "Багатокутники", - "de-ch": "Polygone", - "pt-br": "Polígonos", + 'en-us': 'Polygons', + 'ru-ru': 'Полигоны', + 'es-es': 'Polígonos', + 'fr-fr': 'Polygones', + 'uk-ua': 'Багатокутники', + 'de-ch': 'Polygone', + 'pt-br': 'Polígonos', }, geoLocate: { - "en-us": "GEOLocate", - "ru-ru": "GEOLocate", - "es-es": "GEOlocalizar", - "fr-fr": "GEOLocate", - "uk-ua": "GEOLocate", - "de-ch": "GEO Lokalisierung", - "pt-br": "GEOLocate", + 'en-us': 'GEOLocate', + 'ru-ru': 'GEOLocate', + 'es-es': 'GEOlocalizar', + 'fr-fr': 'GEOLocate', + 'uk-ua': 'GEOLocate', + 'de-ch': 'GEO Lokalisierung', + 'pt-br': 'GEOLocate', }, geographyRequired: { - "en-us": "{geographyTable:string} must be mapped", - "ru-ru": "{geographyTable:string} должна быть связана", - "es-es": "{geographyTable:string} debe ser mapeado", - "fr-fr": "{geographyTable:string} doit être cartographié", - "uk-ua": "{geographyTable:string} має бути зіставлено", - "de-ch": "{geographyTable:string} muss kartiert werden", - "pt-br": "{geographyTable:string} deve ser mapeado", + 'en-us': '{geographyTable:string} must be mapped', + 'ru-ru': '{geographyTable:string} должна быть связана', + 'es-es': '{geographyTable:string} debe ser mapeado', + 'fr-fr': '{geographyTable:string} doit être cartographié', + 'uk-ua': '{geographyTable:string} має бути зіставлено', + 'de-ch': '{geographyTable:string} muss kartiert werden', + 'pt-br': '{geographyTable:string} deve ser mapeado', }, geographyRequiredDescription: { - "en-us": - "The GeoLocate plugin requires the geography field to be populated.", - "ru-ru": "Плагин GeoLocate требует, чтобы поле географии было заполнено.", - "es-es": - "El complemento GeoLocate requiere que se complete el campo de geografía.", - "fr-fr": - "Le plug-in GeoLocate nécessite que le champ géographie soit rempli.", - "uk-ua": "Плагін GeoLocate вимагає заповнення поля географії.", - "de-ch": - "Das GeoLocate-Plugin erfordert, dass das Koordinaten-Feld eingegeben wird.", - "pt-br": - "O plugin GeoLocate requer que o campo geográfico seja preenchido.", + 'en-us': + 'The GeoLocate plugin requires the geography field to be populated.', + 'ru-ru': 'Плагин GeoLocate требует, чтобы поле географии было заполнено.', + 'es-es': + 'El complemento GeoLocate requiere que se complete el campo de geografía.', + 'fr-fr': + 'Le plug-in GeoLocate nécessite que le champ géographie soit rempli.', + 'uk-ua': 'Плагін GeoLocate вимагає заповнення поля географії.', + 'de-ch': + 'Das GeoLocate-Plugin erfordert, dass das Koordinaten-Feld eingegeben wird.', + 'pt-br': + 'O plugin GeoLocate requer que o campo geográfico seja preenchido.', }, coordinates: { - "en-us": "Coordinates", - "ru-ru": "Координаты", - "es-es": "Coordenadas", - "fr-fr": "Coordonnées", - "uk-ua": "Координати", - "de-ch": "Koordinaten", - "pt-br": "Coordenadas", + 'en-us': 'Coordinates', + 'ru-ru': 'Координаты', + 'es-es': 'Coordenadas', + 'fr-fr': 'Coordonnées', + 'uk-ua': 'Координати', + 'de-ch': 'Koordinaten', + 'pt-br': 'Coordenadas', }, northWestCorner: { - comment: "Represents coordinates. Careful with translation", - "en-us": "NW Corner", - "ru-ru": "СЗ Угол", - "es-es": "Esquina noroeste", - "fr-fr": "Coin NO", - "uk-ua": "NW Кут", - "de-ch": "NW-Ecke", - "pt-br": "Canto NW", + comment: 'Represents coordinates. Careful with translation', + 'en-us': 'NW Corner', + 'ru-ru': 'СЗ Угол', + 'es-es': 'Esquina noroeste', + 'fr-fr': 'Coin NO', + 'uk-ua': 'NW Кут', + 'de-ch': 'NW-Ecke', + 'pt-br': 'Canto NW', }, southEastCorner: { - comment: "Represents coordinates. Careful with translation", - "en-us": "SE Corner", - "ru-ru": "ЮВ Угол", - "es-es": "Esquina SE", - "fr-fr": "Coin SE", - "uk-ua": "SE Кут", - "de-ch": "SO-Ecke", - "pt-br": "Canto SE", + comment: 'Represents coordinates. Careful with translation', + 'en-us': 'SE Corner', + 'ru-ru': 'ЮВ Угол', + 'es-es': 'Esquina SE', + 'fr-fr': 'Coin SE', + 'uk-ua': 'SE Кут', + 'de-ch': 'SO-Ecke', + 'pt-br': 'Canto SE', }, coordinateType: { - "en-us": "Coordinate Type", - "ru-ru": "Тип координат", - "es-es": "Tipo de coordenada", - "fr-fr": "Type de coordonnées", - "uk-ua": "Тип координат", - "de-ch": "Koordinatentyp", - "pt-br": "Tipo de coordenada", + 'en-us': 'Coordinate Type', + 'ru-ru': 'Тип координат', + 'es-es': 'Tipo de coordenada', + 'fr-fr': 'Type de coordonnées', + 'uk-ua': 'Тип координат', + 'de-ch': 'Koordinatentyp', + 'pt-br': 'Tipo de coordenada', }, point: { - "en-us": "Point", - "ru-ru": "Точка", - "es-es": "Punto", - "fr-fr": "Point", - "uk-ua": "точка", - "de-ch": "Punkt", - "pt-br": "Apontar", + 'en-us': 'Point', + 'ru-ru': 'Точка', + 'es-es': 'Punto', + 'fr-fr': 'Point', + 'uk-ua': 'точка', + 'de-ch': 'Punkt', + 'pt-br': 'Apontar', }, line: { - "en-us": "Line", - "ru-ru": "Линия", - "es-es": "Línea", - "fr-fr": "Ligne", - "uk-ua": "лінія", - "de-ch": "Linie", - "pt-br": "Linha", + 'en-us': 'Line', + 'ru-ru': 'Линия', + 'es-es': 'Línea', + 'fr-fr': 'Ligne', + 'uk-ua': 'лінія', + 'de-ch': 'Linie', + 'pt-br': 'Linha', }, rectangle: { - "en-us": "Rectangle", - "ru-ru": "Прямоугольник", - "es-es": "Rectángulo", - "fr-fr": "Rectangle", - "uk-ua": "Прямокутник", - "de-ch": "Rechteck", - "pt-br": "Retângulo", + 'en-us': 'Rectangle', + 'ru-ru': 'Прямоугольник', + 'es-es': 'Rectángulo', + 'fr-fr': 'Rectangle', + 'uk-ua': 'Прямокутник', + 'de-ch': 'Rechteck', + 'pt-br': 'Retângulo', }, parsed: { - "en-us": "Parsed", - "ru-ru": "Проверено", - "es-es": "Analizado", - "fr-fr": "analysé", - "uk-ua": "Проаналізовано", - "de-ch": "Geparst", - "pt-br": "Analisado", + 'en-us': 'Parsed', + 'ru-ru': 'Проверено', + 'es-es': 'Analizado', + 'fr-fr': 'analysé', + 'uk-ua': 'Проаналізовано', + 'de-ch': 'Geparst', + 'pt-br': 'Analisado', }, latitude: { - "en-us": "Latitude", - "ru-ru": "Широта", - "es-es": "Latitud", - "fr-fr": "Latitude", - "uk-ua": "Широта", - "de-ch": "Breitengrad", - "pt-br": "Latitude", + 'en-us': 'Latitude', + 'ru-ru': 'Широта', + 'es-es': 'Latitud', + 'fr-fr': 'Latitude', + 'uk-ua': 'Широта', + 'de-ch': 'Breitengrad', + 'pt-br': 'Latitude', }, longitude: { - "en-us": "Longitude", - "ru-ru": "Долгота", - "es-es": "Longitud", - "fr-fr": "Longitude", - "uk-ua": "Довгота", - "de-ch": "Längengrad", - "pt-br": "Longitude", + 'en-us': 'Longitude', + 'ru-ru': 'Долгота', + 'es-es': 'Longitud', + 'fr-fr': 'Longitude', + 'uk-ua': 'Довгота', + 'de-ch': 'Längengrad', + 'pt-br': 'Longitude', }, toggleFullScreen: { - "en-us": "Toggle Full Screen", - "ru-ru": "Включить полноэкранный режим", - "es-es": "Cambiar a pantalla completa", - "fr-fr": "Basculer en plein écran", - "uk-ua": "Перемкнути повний екран", - "de-ch": "Vollbildmodus", - "pt-br": "Alternar tela cheia", + 'en-us': 'Toggle Full Screen', + 'ru-ru': 'Включить полноэкранный режим', + 'es-es': 'Cambiar a pantalla completa', + 'fr-fr': 'Basculer en plein écran', + 'uk-ua': 'Перемкнути повний екран', + 'de-ch': 'Vollbildmodus', + 'pt-br': 'Alternar tela cheia', }, degrees: { - "en-us": "DD.DDDD (32.7619)", - "ru-ru": "DD.DDDD (32.7619)", - "es-es": "DD.DDDD (32.7619)", - "fr-fr": "DD.dddd (32.7619)", - "uk-ua": "DD.DDDD (32,7619)", - "de-ch": "DD.DDDD (32.7619)", - "pt-br": "DD.DDDD (32.7619)", + 'en-us': 'DD.DDDD (32.7619)', + 'ru-ru': 'DD.DDDD (32.7619)', + 'es-es': 'DD.DDDD (32.7619)', + 'fr-fr': 'DD.dddd (32.7619)', + 'uk-ua': 'DD.DDDD (32,7619)', + 'de-ch': 'DD.DDDD (32.7619)', + 'pt-br': 'DD.DDDD (32.7619)', }, degreesMinutes: { - "en-us": "DD MMMM (32. 45.714)", - "ru-ru": "DD MMMM (32. 45.714)", - "es-es": "DD MMMM (32. 45.714)", - "fr-fr": "DD MMMM (32. 45.714)", - "uk-ua": "ДД ММММ (32. 45.714)", - "de-ch": "DD MMMM (32. 45.714)", - "pt-br": "DD MMMM (32.45.714)", + 'en-us': 'DD MMMM (32. 45.714)', + 'ru-ru': 'DD MMMM (32. 45.714)', + 'es-es': 'DD MMMM (32. 45.714)', + 'fr-fr': 'DD MMMM (32. 45.714)', + 'uk-ua': 'ДД ММММ (32. 45.714)', + 'de-ch': 'DD MMMM (32. 45.714)', + 'pt-br': 'DD MMMM (32.45.714)', }, degreesMinutesSeconds: { - "en-us": "DD MM SS.SS (32 45 42.84)", - "ru-ru": "DD MM SS.SS (32 45 42.84)", - "es-es": "DD MM SS.SS (32 45 42.84)", - "fr-fr": "DD MM SS.ss (32 45 42.84)", - "uk-ua": "ДД ММ СС.СС (32 45 42,84)", - "de-ch": "DD MM SS.SS (32 45 42.84)", - "pt-br": "DD MM SS.SS (32 45 42,84)", + 'en-us': 'DD MM SS.SS (32 45 42.84)', + 'ru-ru': 'DD MM SS.SS (32 45 42.84)', + 'es-es': 'DD MM SS.SS (32 45 42.84)', + 'fr-fr': 'DD MM SS.ss (32 45 42.84)', + 'uk-ua': 'ДД ММ СС.СС (32 45 42,84)', + 'de-ch': 'DD MM SS.SS (32 45 42.84)', + 'pt-br': 'DD MM SS.SS (32 45 42,84)', }, degreesWithDirection: { - "en-us": "DD.DDDD N/S/E/W (32.7619 N)", - "ru-ru": "DD.DDDD N/S/E/W (32.7619 N)", - "es-es": "DD.DDDD N/S/E/O (32.7619 N)", - "fr-fr": "DD.dddd N/S/E/O (32,7619 N)", - "uk-ua": "DD.DDDD Пн/Пд/З/З (32,7619 Пн)", - "de-ch": "DD.DDDD N/S/O/W (32.7619 N)", - "pt-br": "DD.DDDD N/S/E/O (32.7619 N)", + 'en-us': 'DD.DDDD N/S/E/W (32.7619 N)', + 'ru-ru': 'DD.DDDD N/S/E/W (32.7619 N)', + 'es-es': 'DD.DDDD N/S/E/O (32.7619 N)', + 'fr-fr': 'DD.dddd N/S/E/O (32,7619 N)', + 'uk-ua': 'DD.DDDD Пн/Пд/З/З (32,7619 Пн)', + 'de-ch': 'DD.DDDD N/S/O/W (32.7619 N)', + 'pt-br': 'DD.DDDD N/S/E/O (32.7619 N)', }, degreesMinutesWithDirection: { - "en-us": "DD MM.MM N/S/E/W (32 45.714 N)", - "ru-ru": "DD MM.MM N/S/E/W (32 45.714 N)", - "es-es": "DD MM.MM N/S/E/O (32 45.714 N)", - "fr-fr": "DD MM.mm N/S/E/O (32 45.714 N)", - "uk-ua": "ДД ММ.ХМ Пн/Пд/В/З (32 45,714 Пн)", - "de-ch": "DD MM.MM N/S/O/W (32 45.714 N)", - "pt-br": "DD MM.MM N/S/E/O (32 45.714 N)", + 'en-us': 'DD MM.MM N/S/E/W (32 45.714 N)', + 'ru-ru': 'DD MM.MM N/S/E/W (32 45.714 N)', + 'es-es': 'DD MM.MM N/S/E/O (32 45.714 N)', + 'fr-fr': 'DD MM.mm N/S/E/O (32 45.714 N)', + 'uk-ua': 'ДД ММ.ХМ Пн/Пд/В/З (32 45,714 Пн)', + 'de-ch': 'DD MM.MM N/S/O/W (32 45.714 N)', + 'pt-br': 'DD MM.MM N/S/E/O (32 45.714 N)', }, degreesMinutesSecondsWithDirection: { - "en-us": "DD MM SS.SS N/S/E/W (32 45 42.84 N)", - "ru-ru": "DD MM SS.SS N/S/E/W (32 45 42.84 N)", - "es-es": "DD MM SS.SS N/S/E/O (32 45 42.84 N)", - "fr-fr": "DD MM SS.ss N/S/E/O (32 45 42.84 N)", - "uk-ua": "DD MM SS.SS N/S/E/W (32 45 42.84 N)", - "de-ch": "DD MM SS.SS N/S/O/W (32 45 42.84 N)", - "pt-br": "DD MM SS.SS N/S/E/O (32 45 42,84 N)", + 'en-us': 'DD MM SS.SS N/S/E/W (32 45 42.84 N)', + 'ru-ru': 'DD MM SS.SS N/S/E/W (32 45 42.84 N)', + 'es-es': 'DD MM SS.SS N/S/E/O (32 45 42.84 N)', + 'fr-fr': 'DD MM SS.ss N/S/E/O (32 45 42.84 N)', + 'uk-ua': 'DD MM SS.SS N/S/E/W (32 45 42.84 N)', + 'de-ch': 'DD MM SS.SS N/S/O/W (32 45 42.84 N)', + 'pt-br': 'DD MM SS.SS N/S/E/O (32 45 42,84 N)', }, localityUpdateHeaderError: { - "en-us": "Errors Found in Column Headers", - "de-ch": "In Spaltenüberschriften gefundene Fehler", - "es-es": "Errores encontrados en los encabezados de columna", - "fr-fr": "Erreurs trouvées dans les en-têtes de colonnes", - "ru-ru": "Обнаружены ошибки в заголовках столбцов", - "uk-ua": "Знайдено помилки в заголовках стовпців", - "pt-br": "Erros encontrados em cabeçalhos de colunas", + 'en-us': 'Errors Found in Column Headers', + 'de-ch': 'In Spaltenüberschriften gefundene Fehler', + 'es-es': 'Errores encontrados en los encabezados de columna', + 'fr-fr': 'Erreurs trouvées dans les en-têtes de colonnes', + 'ru-ru': 'Обнаружены ошибки в заголовках столбцов', + 'uk-ua': 'Знайдено помилки в заголовках стовпців', + 'pt-br': 'Erros encontrados em cabeçalhos de colunas', }, localityUpdateMissingHeader: { - "en-us": "The following columns are required but missing in the data set", - "de-ch": - "Die folgenden Spalten sind erforderlich, fehlen aber im Datensatz", - "es-es": - "Las siguientes columnas son obligatorias pero faltan en el conjunto de datos", - "fr-fr": + 'en-us': 'The following columns are required but missing in the data set', + 'de-ch': + 'Die folgenden Spalten sind erforderlich, fehlen aber im Datensatz', + 'es-es': + 'Las siguientes columnas son obligatorias pero faltan en el conjunto de datos', + 'fr-fr': "Les colonnes suivantes sont obligatoires mais manquantes dans l'ensemble de données", - "ru-ru": - "Следующие столбцы являются обязательными, но отсутствуют в наборе данных", - "uk-ua": "Наступні стовпці є обов’язковими, але відсутні в наборі даних", - "pt-br": - "As seguintes colunas são necessárias, mas estão ausentes no conjunto de dados", + 'ru-ru': + 'Следующие столбцы являются обязательными, но отсутствуют в наборе данных', + 'uk-ua': 'Наступні стовпці є обов’язковими, але відсутні в наборі даних', + 'pt-br': + 'As seguintes colunas são necessárias, mas estão ausentes no conjunto de dados', }, localityUpdateUnrecognizedHeaders: { - "en-us": - "The following columns in the dataset are not recognized and will be ignored on import", - "de-ch": - "Die folgenden Spalten im Datensatz werden nicht erkannt und beim Import ignoriert", - "es-es": - "Las siguientes columnas del conjunto de datos no se reconocen y se ignorarán durante la importación", - "fr-fr": + 'en-us': + 'The following columns in the dataset are not recognized and will be ignored on import', + 'de-ch': + 'Die folgenden Spalten im Datensatz werden nicht erkannt und beim Import ignoriert', + 'es-es': + 'Las siguientes columnas del conjunto de datos no se reconocen y se ignorarán durante la importación', + 'fr-fr': "Les colonnes suivantes dans l'ensemble de données ne sont pas reconnues et seront ignorées lors de l'importation", - "ru-ru": - "Следующие столбцы в наборе данных не распознаются и будут проигнорированы при импорте", - "uk-ua": - "Наступні стовпці в наборі даних не розпізнаються та ігноруватимуться під час імпорту", - "pt-br": - "As seguintes colunas no conjunto de dados não são reconhecidas e serão ignoradas na importação", + 'ru-ru': + 'Следующие столбцы в наборе данных не распознаются и будут проигнорированы при импорте', + 'uk-ua': + 'Наступні стовпці в наборі даних не розпізнаються та ігноруватимуться під час імпорту', + 'pt-br': + 'As seguintes colunas no conjunto de dados não são reconhecidas e serão ignoradas na importação', }, localityUpdateAcceptedHeaders: { - "en-us": "Only the following headers are accepted", - "de-ch": "Es werden nur die folgenden Header akzeptiert", - "es-es": "Sólo se aceptan los siguientes encabezados", - "fr-fr": "Seuls les en-têtes suivants sont acceptés", - "ru-ru": "Принимаются только следующие заголовки", - "uk-ua": "Приймаються лише такі заголовки", - "pt-br": "Somente os seguintes cabeçalhos são aceitos", + 'en-us': 'Only the following headers are accepted', + 'de-ch': 'Es werden nur die folgenden Header akzeptiert', + 'es-es': 'Sólo se aceptan los siguientes encabezados', + 'fr-fr': 'Seuls les en-têtes suivants sont acceptés', + 'ru-ru': 'Принимаются только следующие заголовки', + 'uk-ua': 'Приймаються лише такі заголовки', + 'pt-br': 'Somente os seguintes cabeçalhos são aceitos', }, localityUpdateStarting: { - "en-us": "Starting Locality Update", - "de-ch": "Lokalitätsaktualisierung wird gestartet", - "es-es": "Actualización de localidad inicial", - "fr-fr": "Mise à jour de la localité de départ", - "ru-ru": "Начало обновления населенного пункта", - "uk-ua": "Початок оновлення місцевості", - "pt-br": "Iniciando atualização de localidade", + 'en-us': 'Starting Locality Update', + 'de-ch': 'Lokalitätsaktualisierung wird gestartet', + 'es-es': 'Actualización de localidad inicial', + 'fr-fr': 'Mise à jour de la localité de départ', + 'ru-ru': 'Начало обновления населенного пункта', + 'uk-ua': 'Початок оновлення місцевості', + 'pt-br': 'Iniciando atualização de localidade', }, localityUpdateParsing: { - "en-us": "Parsing Locality Data Set", - "de-ch": "Analysieren des Ortsdatensatzes", - "es-es": "Análisis del conjunto de datos de localidad", - "fr-fr": "Analyse de l'ensemble de données de localité", - "ru-ru": "Анализ набора данных о местоположении", - "uk-ua": "Розбір набору даних місцевості", - "pt-br": "Analisando o conjunto de dados de localidade", + 'en-us': 'Parsing Locality Data Set', + 'de-ch': 'Analysieren des Ortsdatensatzes', + 'es-es': 'Análisis del conjunto de datos de localidad', + 'fr-fr': "Analyse de l'ensemble de données de localité", + 'ru-ru': 'Анализ набора данных о местоположении', + 'uk-ua': 'Розбір набору даних місцевості', + 'pt-br': 'Analisando o conjunto de dados de localidade', }, localityUpdateProgressing: { - "en-us": "Importing Locality Data Set", - "de-ch": "Importieren des Ortsdatensatzes", - "es-es": "Importación del conjunto de datos de localidad", - "fr-fr": "Importation d'un ensemble de données de localité", - "ru-ru": "Импорт набора данных о местоположении", - "uk-ua": "Імпорт набору даних місцевості", - "pt-br": "Importando conjunto de dados de localidade", + 'en-us': 'Importing Locality Data Set', + 'de-ch': 'Importieren des Ortsdatensatzes', + 'es-es': 'Importación del conjunto de datos de localidad', + 'fr-fr': "Importation d'un ensemble de données de localité", + 'ru-ru': 'Импорт набора данных о местоположении', + 'uk-ua': 'Імпорт набору даних місцевості', + 'pt-br': 'Importando conjunto de dados de localidade', }, localityUpdateParsed: { - "en-us": "Locality Update Data Set Parsed", - "de-ch": "Lokalitätsaktualisierungsdatensatz analysiert", - "es-es": "Conjunto de datos de actualización de localidad analizados", - "fr-fr": "Ensemble de données de mise à jour de localité analysé", - "ru-ru": "Набор данных обновления местоположения проанализирован", - "uk-ua": "Проаналізовано набір даних оновлення місцевості", - "pt-br": "Conjunto de dados de atualização de localidade analisado", + 'en-us': 'Locality Update Data Set Parsed', + 'de-ch': 'Lokalitätsaktualisierungsdatensatz analysiert', + 'es-es': 'Conjunto de datos de actualización de localidad analizados', + 'fr-fr': 'Ensemble de données de mise à jour de localité analysé', + 'ru-ru': 'Набор данных обновления местоположения проанализирован', + 'uk-ua': 'Проаналізовано набір даних оновлення місцевості', + 'pt-br': 'Conjunto de dados de atualização de localidade analisado', }, localityUpdateFailed: { - "en-us": "Locality Update Failed", - "de-ch": "Lokalitätsaktualisierung fehlgeschlagen", - "es-es": "Error en la actualización de localidad", - "fr-fr": "Échec de la mise à jour de la localité", - "ru-ru": "Ошибка обновления местоположения", - "uk-ua": "Помилка оновлення місцевості", - "pt-br": "Falha na atualização de localidade", + 'en-us': 'Locality Update Failed', + 'de-ch': 'Lokalitätsaktualisierung fehlgeschlagen', + 'es-es': 'Error en la actualización de localidad', + 'fr-fr': 'Échec de la mise à jour de la localité', + 'ru-ru': 'Ошибка обновления местоположения', + 'uk-ua': 'Помилка оновлення місцевості', + 'pt-br': 'Falha na atualização de localidade', }, localityUpdateParseFailure: { - "en-us": "Locality Update Parsing Failed", - "de-ch": "Lokale Aktualisierungsanalyse fehlgeschlagen", - "es-es": "Error en el análisis de actualización de localidad", - "fr-fr": "Échec de l'analyse de la mise à jour de la localité", - "ru-ru": "Ошибка анализа обновления местоположения", - "uk-ua": "Помилка аналізу оновлення місцевості", - "pt-br": "Falha na análise da atualização de localidade", + 'en-us': 'Locality Update Parsing Failed', + 'de-ch': 'Lokale Aktualisierungsanalyse fehlgeschlagen', + 'es-es': 'Error en el análisis de actualización de localidad', + 'fr-fr': "Échec de l'analyse de la mise à jour de la localité", + 'ru-ru': 'Ошибка анализа обновления местоположения', + 'uk-ua': 'Помилка аналізу оновлення місцевості', + 'pt-br': 'Falha na análise da atualização de localidade', }, localityUpdateCancelled: { - "en-us": "Locality Update Cancelled", - "de-ch": "Ortsaktualisierung abgebrochen", - "es-es": "Actualización de localidad cancelada", - "fr-fr": "Mise à jour de la localité annulée", - "ru-ru": "Обновление местоположения отменено", - "uk-ua": "Оновлення місцевості скасовано", - "pt-br": "Atualização de localidade cancelada", + 'en-us': 'Locality Update Cancelled', + 'de-ch': 'Ortsaktualisierung abgebrochen', + 'es-es': 'Actualización de localidad cancelada', + 'fr-fr': 'Mise à jour de la localité annulée', + 'ru-ru': 'Обновление местоположения отменено', + 'uk-ua': 'Оновлення місцевості скасовано', + 'pt-br': 'Atualização de localidade cancelada', }, localityUpdateSucceeded: { - "en-us": "Locality Update Succeeded", - "de-ch": "Lokalitätsaktualisierung erfolgreich", - "es-es": "Actualización de localidad exitosa", - "fr-fr": "Mise à jour de la localité réussie", - "ru-ru": "Обновление местоположения прошло успешно", - "uk-ua": "Місцезнаходження оновлено", - "pt-br": "Atualização de localidade bem-sucedida", + 'en-us': 'Locality Update Succeeded', + 'de-ch': 'Lokalitätsaktualisierung erfolgreich', + 'es-es': 'Actualización de localidad exitosa', + 'fr-fr': 'Mise à jour de la localité réussie', + 'ru-ru': 'Обновление местоположения прошло успешно', + 'uk-ua': 'Місцезнаходження оновлено', + 'pt-br': 'Atualização de localidade bem-sucedida', }, localityUpdateWentWrong: { - "en-us": "Something went wrong during the Locality Update process", - "de-ch": "Beim Lokalitäts-Update ist ein Fehler aufgetreten", - "es-es": "Algo salió mal durante el proceso de actualización de localidad", - "fr-fr": + 'en-us': 'Something went wrong during the Locality Update process', + 'de-ch': 'Beim Lokalitäts-Update ist ein Fehler aufgetreten', + 'es-es': 'Algo salió mal durante el proceso de actualización de localidad', + 'fr-fr': "Une erreur s'est produite lors du processus de mise à jour de la localité", - "ru-ru": "Что-то пошло не так в процессе обновления населенного пункта", - "uk-ua": "Щось пішло не так під час процесу оновлення місцевості", - "pt-br": "Algo deu errado durante o processo de atualização de localidade", + 'ru-ru': 'Что-то пошло не так в процессе обновления населенного пункта', + 'uk-ua': 'Щось пішло не так під час процесу оновлення місцевості', + 'pt-br': 'Algo deu errado durante o processo de atualização de localidade', }, localityUpdateParseErrorFileName: { comment: ` The file name which is used when Parse Errors are exported. The .csv file extension is appended to the end of this string `, - "en-us": "Locality Update Errors - {date:string}", - "de-ch": "Fehler beim Lokalitätsupdate - {date:string}", - "es-es": "Errores de actualización de localidad - {date:string}", - "fr-fr": "Erreurs de mise à jour de la localité - {date:string}", - "ru-ru": "Ошибки обновления местоположения - {date:string}", - "uk-ua": "Помилки оновлення місцевості - {date:string}", - "pt-br": "Erros de atualização de localidade - {date:string}", + 'en-us': 'Locality Update Errors - {date:string}', + 'de-ch': 'Fehler beim Lokalitätsupdate - {date:string}', + 'es-es': 'Errores de actualización de localidad - {date:string}', + 'fr-fr': 'Erreurs de mise à jour de la localité - {date:string}', + 'ru-ru': 'Ошибки обновления местоположения - {date:string}', + 'uk-ua': 'Помилки оновлення місцевості - {date:string}', + 'pt-br': 'Erros de atualização de localidade - {date:string}', }, localityUpdateCrashFileName: { comment: ` The file name which is used when any Generic non-parsing errors are exported. The .txt file extension is appended to the end of this string `, - "en-us": "Locality Update {taskId: string} Crash Report - {date: string}", - "de-ch": - "Ortsaktualisierung {taskId: string} Absturzbericht – {date: string}", - "es-es": - "Informe de fallos de actualización de localidad {taskId: string} - {date: string}", - "fr-fr": + 'en-us': 'Locality Update {taskId: string} Crash Report - {date: string}', + 'de-ch': + 'Ortsaktualisierung {taskId: string} Absturzbericht – {date: string}', + 'es-es': + 'Informe de fallos de actualización de localidad {taskId: string} - {date: string}', + 'fr-fr': "Mise à jour de la localité {taskId: string} Rapport d'incident - {date: string}", - "ru-ru": - "Обновление местоположения {taskId: string} Отчет о сбое - {date: string}", - "uk-ua": - "Оновлення місцевості {taskId: string} Звіт про збій - {date: string}", - "pt-br": - "Relatório de falha de atualização de localidade {taskId: string} - {date: string}", + 'ru-ru': + 'Обновление местоположения {taskId: string} Отчет о сбое - {date: string}', + 'uk-ua': + 'Оновлення місцевості {taskId: string} Звіт про збій - {date: string}', + 'pt-br': + 'Relatório de falha de atualização de localidade {taskId: string} - {date: string}', }, guidHeaderNotProvided: { - "en-us": "The Dataset must contain a 'guid' header", - "de-ch": "Der Datensatz muss einen GUID-Header enthalten", - "es-es": "El conjunto de datos debe contener un encabezado 'guid'", - "fr-fr": "L'ensemble de données doit contenir un en-tête « guid »", - "ru-ru": "Набор данных должен содержать заголовок «guid».", - "uk-ua": "Набір даних має містити заголовок «guid».", - "pt-br": "O conjunto de dados deve conter um cabeçalho 'guid'", + 'en-us': "The Dataset must contain a 'guid' header", + 'de-ch': 'Der Datensatz muss einen GUID-Header enthalten', + 'es-es': "El conjunto de datos debe contener un encabezado 'guid'", + 'fr-fr': "L'ensemble de données doit contenir un en-tête « guid »", + 'ru-ru': 'Набор данных должен содержать заголовок «guid».', + 'uk-ua': 'Набір даних має містити заголовок «guid».', + 'pt-br': "O conjunto de dados deve conter um cabeçalho 'guid'", }, noLocalityMatchingGuid: { - "en-us": "No Locality with guid: '{guid:string}'", - "de-ch": "Kein Ort mit GUID: „{guid:string}“", - "es-es": "Sin localidad con guid: '{guid:string}'", - "fr-fr": "Aucune localité avec guid : '{guid:string}'", - "ru-ru": "Нет населенного пункта с guid: '{guid:string}'", - "uk-ua": "Немає місцевості з guid: '{guid:string}'", - "pt-br": "Nenhuma localidade com guid: '{guid:string}'", + 'en-us': "No Locality with guid: '{guid:string}'", + 'de-ch': 'Kein Ort mit GUID: „{guid:string}“', + 'es-es': "Sin localidad con guid: '{guid:string}'", + 'fr-fr': "Aucune localité avec guid : '{guid:string}'", + 'ru-ru': "Нет населенного пункта с guid: '{guid:string}'", + 'uk-ua': "Немає місцевості з guid: '{guid:string}'", + 'pt-br': "Nenhuma localidade com guid: '{guid:string}'", }, multipleLocalitiesWithGuid: { - "en-us": - "More than one Locality found with guid: {guid:string}. Locality IDs: {localityIds: string}", - "de-ch": - "Mehrere Orte mit GUID gefunden: {guid:string}. Orts-IDs: {localityIds: string}", - "es-es": - "Se encontró más de una localidad con guid: {guid:string}. ID de localidad: {localityIds: string}", - "fr-fr": - "Plusieurs localités trouvées avec le GUID : {guid:string}. ID de localité : {localityIds: string}", - "ru-ru": - "Найдено более одного населенного пункта с guid: {guid:string}. Идентификаторы населенных пунктов: {localityIds: string}", - "uk-ua": - "За допомогою guid: {guid:string} знайдено більше одного населеного пункту. Ідентифікатори населених пунктів: {localityIds: рядок}", - "pt-br": - "Mais de uma localidade encontrada com guid: {guid:string}. IDs de localidade: {localityIds: string}", + 'en-us': + 'More than one Locality found with guid: {guid:string}. Locality IDs: {localityIds: string}', + 'de-ch': + 'Mehrere Orte mit GUID gefunden: {guid:string}. Orts-IDs: {localityIds: string}', + 'es-es': + 'Se encontró más de una localidad con guid: {guid:string}. ID de localidad: {localityIds: string}', + 'fr-fr': + 'Plusieurs localités trouvées avec le GUID : {guid:string}. ID de localité : {localityIds: string}', + 'ru-ru': + 'Найдено более одного населенного пункта с guid: {guid:string}. Идентификаторы населенных пунктов: {localityIds: string}', + 'uk-ua': + 'За допомогою guid: {guid:string} знайдено більше одного населеного пункту. Ідентифікатори населених пунктів: {localityIds: рядок}', + 'pt-br': + 'Mais de uma localidade encontrada com guid: {guid:string}. IDs de localidade: {localityIds: string}', }, localityUpdateEffectCounts: { - "en-us": - "The following number of {localityTabelLabel: string} records will be affected by the update and {geoCoordDetailTableLabel: string} records will be created:", - "de-ch": - "Die folgende Anzahl von {localityTabelLabel: string}-Datensätzen wird von der Aktualisierung betroffen sein und {geoCoordDetailTableLabel: string}-Datensätze werden erstellt:", - "es-es": - "La siguiente cantidad de registros {localityTabelLabel: string} se verá afectada por la actualización y se crearán registros {geoCoordDetailTableLabel: string}:", - "fr-fr": + 'en-us': + 'The following number of {localityTabelLabel: string} records will be affected by the update and {geoCoordDetailTableLabel: string} records will be created:', + 'de-ch': + 'Die folgende Anzahl von {localityTabelLabel: string}-Datensätzen wird von der Aktualisierung betroffen sein und {geoCoordDetailTableLabel: string}-Datensätze werden erstellt:', + 'es-es': + 'La siguiente cantidad de registros {localityTabelLabel: string} se verá afectada por la actualización y se crearán registros {geoCoordDetailTableLabel: string}:', + 'fr-fr': "Le nombre suivant d'enregistrements {localityTabelLabel: string} sera affecté par la mise à jour et les enregistrements {geoCoordDetailTableLabel: string} seront créés :", - "ru-ru": - "Обновление повлияет на следующее количество записей {localityTabelLabel: string} и будет создано записей {geoCoordDetailTableLabel: string}:", - "uk-ua": - "Оновлення вплине на таку кількість записів {localityTabelLabel: string} і буде створено записи {geoCoordDetailTableLabel: string}:", - "pt-br": - "O seguinte número de registros {localityTabelLabel: string} será afetado pela atualização e os registros {geoCoordDetailTableLabel: string} serão criados:", + 'ru-ru': + 'Обновление повлияет на следующее количество записей {localityTabelLabel: string} и будет создано записей {geoCoordDetailTableLabel: string}:', + 'uk-ua': + 'Оновлення вплине на таку кількість записів {localityTabelLabel: string} і буде створено записи {geoCoordDetailTableLabel: string}:', + 'pt-br': + 'O seguinte número de registros {localityTabelLabel: string} será afetado pela atualização e os registros {geoCoordDetailTableLabel: string} serão criados:', }, localityUploadedDescription: { - "en-us": - "The following number of {localityTabelLabel: string} records were updated and {geoCoordDetailTableLabel: string} records were created:", - "de-ch": - "Die folgende Anzahl von {localityTabelLabel: string}-Datensätzen wurde aktualisiert und {geoCoordDetailTableLabel: string}-Datensätzen erstellt:", - "es-es": - "Se actualizó la siguiente cantidad de registros {localityTabelLabel: string} y se crearon registros {geoCoordDetailTableLabel: string}:", - "fr-fr": + 'en-us': + 'The following number of {localityTabelLabel: string} records were updated and {geoCoordDetailTableLabel: string} records were created:', + 'de-ch': + 'Die folgende Anzahl von {localityTabelLabel: string}-Datensätzen wurde aktualisiert und {geoCoordDetailTableLabel: string}-Datensätzen erstellt:', + 'es-es': + 'Se actualizó la siguiente cantidad de registros {localityTabelLabel: string} y se crearon registros {geoCoordDetailTableLabel: string}:', + 'fr-fr': "Le nombre suivant d'enregistrements {localityTabelLabel: string} ont été mis à jour et d'enregistrements {geoCoordDetailTableLabel: string} ont été créés :", - "ru-ru": - "Следующее количество записей {localityTabelLabel: string} было обновлено и создано {geoCoordDetailTableLabel: string} записей:", - "uk-ua": - "Оновлено таку кількість записів {localityTabelLabel: string} і створено записи {geoCoordDetailTableLabel: string}:", - "pt-br": - "O seguinte número de registros {localityTabelLabel: string} foi atualizado e os registros {geoCoordDetailTableLabel: string} foram criados:", + 'ru-ru': + 'Следующее количество записей {localityTabelLabel: string} было обновлено и создано {geoCoordDetailTableLabel: string} записей:', + 'uk-ua': + 'Оновлено таку кількість записів {localityTabelLabel: string} і створено записи {geoCoordDetailTableLabel: string}:', + 'pt-br': + 'O seguinte número de registros {localityTabelLabel: string} foi atualizado e os registros {geoCoordDetailTableLabel: string} foram criados:', }, localityUpdateStarted: { - "en-us": "The Locality Update process has started", - "de-ch": "Der Locality-Update-Prozess wurde gestartet", - "es-es": "El proceso de actualización de localidad ha comenzado", - "fr-fr": "Le processus de mise à jour de la localité a commencé", - "ru-ru": "Процесс обновления населенного пункта начался", - "uk-ua": "Розпочато процес оновлення місцевості", - "pt-br": "O processo de atualização da localidade foi iniciado", + 'en-us': 'The Locality Update process has started', + 'de-ch': 'Der Locality-Update-Prozess wurde gestartet', + 'es-es': 'El proceso de actualización de localidad ha comenzado', + 'fr-fr': 'Le processus de mise à jour de la localité a commencé', + 'ru-ru': 'Процесс обновления населенного пункта начался', + 'uk-ua': 'Розпочато процес оновлення місцевості', + 'pt-br': 'O processo de atualização da localidade foi iniciado', }, localityUpdateResults: { - "en-us": "Locality Update Results", - "de-ch": "Ergebnisse der Ortsaktualisierung", - "es-es": "Resultados de la actualización de localidad", - "fr-fr": "Résultats de la mise à jour de la localité", - "ru-ru": "Результаты обновления местоположения", - "uk-ua": "Результати оновлення місцевості", - "pt-br": "Resultados da atualização de localidade", + 'en-us': 'Locality Update Results', + 'de-ch': 'Ergebnisse der Ortsaktualisierung', + 'es-es': 'Resultados de la actualización de localidad', + 'fr-fr': 'Résultats de la mise à jour de la localité', + 'ru-ru': 'Результаты обновления местоположения', + 'uk-ua': 'Результати оновлення місцевості', + 'pt-br': 'Resultados da atualização de localidade', }, localityUpdateFailureResults: { - "en-us": "Locality Update Failure Results", - "de-ch": "Ergebnisse der fehlgeschlagenen Lokalitätsaktualisierung", - "es-es": "Resultados de errores de actualización de localidad", - "fr-fr": "Résultats de l'échec de la mise à jour de la localité", - "ru-ru": "Результаты сбоя обновления местоположения", - "uk-ua": "Результати помилки оновлення місцевості", - "pt-br": "Resultados de falha na atualização de localidade", + 'en-us': 'Locality Update Failure Results', + 'de-ch': 'Ergebnisse der fehlgeschlagenen Lokalitätsaktualisierung', + 'es-es': 'Resultados de errores de actualización de localidad', + 'fr-fr': "Résultats de l'échec de la mise à jour de la localité", + 'ru-ru': 'Результаты сбоя обновления местоположения', + 'uk-ua': 'Результати помилки оновлення місцевості', + 'pt-br': 'Resultados de falha na atualização de localidade', }, taskId: { - "en-us": "Task ID", - "de-ch": "Aufgaben-ID", - "es-es": "ID de tarea", - "fr-fr": "ID de tâche", - "ru-ru": "Идентификатор задачи", - "uk-ua": "ID завдання", - "pt-br": "ID da tarefa", + 'en-us': 'Task ID', + 'de-ch': 'Aufgaben-ID', + 'es-es': 'ID de tarea', + 'fr-fr': 'ID de tâche', + 'ru-ru': 'Идентификатор задачи', + 'uk-ua': 'ID завдання', + 'pt-br': 'ID da tarefa', }, validLatitude: { - "en-us": "Latitude needs to have a value between -90° and 90°", - "de-ch": "Der Breitengrad muss einen Wert zwischen -90° und 90° haben", - "es-es": "La latitud debe tener un valor entre -90° y 90°", - "fr-fr": "La latitude doit avoir une valeur comprise entre -90° et 90°", - "ru-ru": "Широта должна иметь значение от -90° до 90°.", - "uk-ua": "Значення широти має бути від -90° до 90°", - "pt-br": "A latitude precisa ter um valor entre -90° e 90°", + 'en-us': 'Latitude needs to have a value between -90° and 90°', + 'de-ch': 'Der Breitengrad muss einen Wert zwischen -90° und 90° haben', + 'es-es': 'La latitud debe tener un valor entre -90° y 90°', + 'fr-fr': 'La latitude doit avoir une valeur comprise entre -90° et 90°', + 'ru-ru': 'Широта должна иметь значение от -90° до 90°.', + 'uk-ua': 'Значення широти має бути від -90° до 90°', + 'pt-br': 'A latitude precisa ter um valor entre -90° e 90°', }, validLongitude: { - "en-us": "Longitude needs to have a value between -180° and 180°", - "de-ch": "Der Längengrad muss einen Wert zwischen -180° und 180° haben", - "es-es": - "La siguiente cantidad de registros {localityTabelLabel: string} se verán afectados por la actualización y se crearán registros {geoCoordDetailTableLabel: string}:", - "fr-fr": "La longitude doit avoir une valeur comprise entre -180° et 180°", - "ru-ru": "Долгота должна иметь значение от -180° до 180°.", - "uk-ua": - "Оновлення вплине на таку кількість записів {localityTabelLabel: string} і буде створено записи {geoCoordDetailTableLabel: string}:", - "pt-br": "A longitude precisa ter um valor entre -180° e 180°", + 'en-us': 'Longitude needs to have a value between -180° and 180°', + 'de-ch': 'Der Längengrad muss einen Wert zwischen -180° und 180° haben', + 'es-es': + 'La siguiente cantidad de registros {localityTabelLabel: string} se verán afectados por la actualización y se crearán registros {geoCoordDetailTableLabel: string}:', + 'fr-fr': 'La longitude doit avoir une valeur comprise entre -180° et 180°', + 'ru-ru': 'Долгота должна иметь значение от -180° до 180°.', + 'uk-ua': + 'Оновлення вплине на таку кількість записів {localityTabelLabel: string} і буде створено записи {geoCoordDetailTableLabel: string}:', + 'pt-br': 'A longitude precisa ter um valor entre -180° e 180°', }, } as const); diff --git a/specifyweb/frontend/js_src/lib/localization/main.ts b/specifyweb/frontend/js_src/lib/localization/main.ts index a11444428c2..a7ee0e8dfbd 100644 --- a/specifyweb/frontend/js_src/lib/localization/main.ts +++ b/specifyweb/frontend/js_src/lib/localization/main.ts @@ -5,270 +5,270 @@ * @module */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const mainText = createDictionary({ appTitle: { - comment: "Formatting for the title in the web page title bar", - "en-us": "{baseTitle:string} | Specify 7", - "ru-ru": "{baseTitle:string} | Specify 7", - "es-es": "{baseTitle:string} | Specify 7", - "fr-fr": "{baseTitle:string} | Specify 7", - "uk-ua": "{baseTitle:string} | Specify 7", - "de-ch": "{baseTitle:string} | Specify 7", - "pt-br": "{baseTitle:string} | Especifique 7", + comment: 'Formatting for the title in the web page title bar', + 'en-us': '{baseTitle:string} | Specify 7', + 'ru-ru': '{baseTitle:string} | Specify 7', + 'es-es': '{baseTitle:string} | Specify 7', + 'fr-fr': '{baseTitle:string} | Specify 7', + 'uk-ua': '{baseTitle:string} | Specify 7', + 'de-ch': '{baseTitle:string} | Specify 7', + 'pt-br': '{baseTitle:string} | Especifique 7', }, baseAppTitle: { - comment: "Default page title", - "en-us": "Specify 7", - "ru-ru": "Specify 7", - "es-es": "Specify 7", - "fr-fr": "Specify 7", - "uk-ua": "Specify 7", - "de-ch": "Specify 7", - "pt-br": "Especifique 7", + comment: 'Default page title', + 'en-us': 'Specify 7', + 'ru-ru': 'Specify 7', + 'es-es': 'Specify 7', + 'fr-fr': 'Specify 7', + 'uk-ua': 'Specify 7', + 'de-ch': 'Specify 7', + 'pt-br': 'Especifique 7', }, pageNotFound: { - comment: "Used in title", - "en-us": "Page Not Found", - "ru-ru": "Страница не найдена", - "es-es": "Página no encontrada", - "fr-fr": "Page non trouvée", - "uk-ua": "Сторінку не знайдено", - "de-ch": "Seite wurde nicht gefunden", - "pt-br": "Página não encontrada", + comment: 'Used in title', + 'en-us': 'Page Not Found', + 'ru-ru': 'Страница не найдена', + 'es-es': 'Página no encontrada', + 'fr-fr': 'Page non trouvée', + 'uk-ua': 'Сторінку не знайдено', + 'de-ch': 'Seite wurde nicht gefunden', + 'pt-br': 'Página não encontrada', }, nothingWasFound: { - comment: "Used in the heading on 404 page", - "en-us": "Oops! Nothing was found", - "ru-ru": "Ой! Ничего не найдено", - "es-es": "¡Uy! No se encontró nada", - "fr-fr": "Oups ! Rien n'a été trouvé", - "uk-ua": "Ой! Нічого не знайдено", - "de-ch": "Hoppla! Es wurde nichts gefunden :-(", - "pt-br": "Ops! Nada foi encontrado", + comment: 'Used in the heading on 404 page', + 'en-us': 'Oops! Nothing was found', + 'ru-ru': 'Ой! Ничего не найдено', + 'es-es': '¡Uy! No se encontró nada', + 'fr-fr': "Oups ! Rien n'a été trouvé", + 'uk-ua': 'Ой! Нічого не знайдено', + 'de-ch': 'Hoppla! Es wurde nichts gefunden :-(', + 'pt-br': 'Ops! Nada foi encontrado', }, pageNotFoundDescription: { - comment: "Used in the paragraph on 404 page", - "en-us": - "The page you are looking for might have been removed, had its name changed or is temporarily unavailable.", - "ru-ru": - "Возможно, страница, которую вы ищете, была удалена, ее название изменилось или она временно недоступна.", - "es-es": - "Es posible que la página que busca haya sido eliminada, haya cambiado de nombre o no esté disponible temporalmente.", - "fr-fr": - "La page que vous recherchez a peut-être été supprimée, a changé de nom ou est temporairement indisponible.", - "uk-ua": - "Можливо, сторінку, яку ви шукаєте, видалили, її назву змінили або вона тимчасово недоступна.", - "de-ch": - "Die Seite, die Sie suchen, wurde möglicherweise entfernt, ihr Name wurde geändert oder sie ist vorübergehend nicht verfügbar.", - "pt-br": - "A página que você está procurando pode ter sido removida, teve seu nome alterado ou está temporariamente indisponível.", + comment: 'Used in the paragraph on 404 page', + 'en-us': + 'The page you are looking for might have been removed, had its name changed or is temporarily unavailable.', + 'ru-ru': + 'Возможно, страница, которую вы ищете, была удалена, ее название изменилось или она временно недоступна.', + 'es-es': + 'Es posible que la página que busca haya sido eliminada, haya cambiado de nombre o no esté disponible temporalmente.', + 'fr-fr': + 'La page que vous recherchez a peut-être été supprimée, a changé de nom ou est temporairement indisponible.', + 'uk-ua': + 'Можливо, сторінку, яку ви шукаєте, видалили, її назву змінили або вона тимчасово недоступна.', + 'de-ch': + 'Die Seite, die Sie suchen, wurde möglicherweise entfernt, ihr Name wurde geändert oder sie ist vorübergehend nicht verfügbar.', + 'pt-br': + 'A página que você está procurando pode ter sido removida, teve seu nome alterado ou está temporariamente indisponível.', }, returnToHomepage: { - "en-us": "Return to homepage", - "ru-ru": "Вернуться на главную страницу", - "es-es": "Regresar a la página de inicio", - "fr-fr": "Retour à la page d'accueil", - "uk-ua": "Повернутися на домашню сторінку", - "de-ch": "Zurück zur Startseite", - "pt-br": "Voltar para a página inicial", + 'en-us': 'Return to homepage', + 'ru-ru': 'Вернуться на главную страницу', + 'es-es': 'Regresar a la página de inicio', + 'fr-fr': "Retour à la page d'accueil", + 'uk-ua': 'Повернутися на домашню сторінку', + 'de-ch': 'Zurück zur Startseite', + 'pt-br': 'Voltar para a página inicial', }, errorOccurred: { - "en-us": "We are sorry, something has gone wrong", - "ru-ru": "Извините, что-то пошло не так.", - "es-es": "Lo sentimos, algo ha ido mal", - "fr-fr": "Nous sommes désolés, quelque chose s'est mal passé", - "uk-ua": "Вибачте, щось пішло не так", - "de-ch": "Es tut uns leid, etwas ist schiefgelaufen", - "pt-br": "Lamentamos, algo deu errado", + 'en-us': 'We are sorry, something has gone wrong', + 'ru-ru': 'Извините, что-то пошло не так.', + 'es-es': 'Lo sentimos, algo ha ido mal', + 'fr-fr': "Nous sommes désolés, quelque chose s'est mal passé", + 'uk-ua': 'Вибачте, щось пішло не так', + 'de-ch': 'Es tut uns leid, etwas ist schiefgelaufen', + 'pt-br': 'Lamentamos, algo deu errado', }, clickToSeeDetails: { - "en-us": "Click to see details", - "es-es": "Haz clic para ver los detalles", - "uk-ua": "Натисніть, щоб переглянути деталі", - "de-ch": "Klicken Sie hier, um Details anzuzeigen", - "fr-fr": "Cliquez pour voir les détails", - "ru-ru": "Нажмите, чтобы увидеть подробности", - "pt-br": "Clique para ver detalhes", + 'en-us': 'Click to see details', + 'es-es': 'Haz clic para ver los detalles', + 'uk-ua': 'Натисніть, щоб переглянути деталі', + 'de-ch': 'Klicken Sie hier, um Details anzuzeigen', + 'fr-fr': 'Cliquez pour voir les détails', + 'ru-ru': 'Нажмите, чтобы увидеть подробности', + 'pt-br': 'Clique para ver detalhes', }, errorOccurredDescription: { - "en-us": + 'en-us': "We're sorry, it seems you have encountered an error in Specify 7 that we may not be aware of.", - "ru-ru": - "Произошла неисправимая ошибка, которая не позволит нам безопасно вернуться к вашему текущему окну.", - "es-es": - "Lo sentimos, parece que ha encontrado un error en Specify 7 del que no somos conscientes.", - "fr-fr": + 'ru-ru': + 'Произошла неисправимая ошибка, которая не позволит нам безопасно вернуться к вашему текущему окну.', + 'es-es': + 'Lo sentimos, parece que ha encontrado un error en Specify 7 del que no somos conscientes.', + 'fr-fr': "Nous sommes désolés, il semble que vous ayez rencontré une erreur dans Specify 7 dont nous n'avons peut-être pas connaissance.", - "uk-ua": - "Вибачте, здається, ви зіткнулися з помилкою в Specify 7, про яку ми могливо не знаємо.", - "de-ch": - "Es tut uns leid, aber es scheint, dass Sie auf einen Fehler in Specify 7 gestossen sind, der uns möglicherweise nicht bekannt ist.", - "pt-br": - "Lamentamos, parece que você encontrou um erro no Specify 7 do qual talvez não estejamos cientes.", + 'uk-ua': + 'Вибачте, здається, ви зіткнулися з помилкою в Specify 7, про яку ми могливо не знаємо.', + 'de-ch': + 'Es tut uns leid, aber es scheint, dass Sie auf einen Fehler in Specify 7 gestossen sind, der uns möglicherweise nicht bekannt ist.', + 'pt-br': + 'Lamentamos, parece que você encontrou um erro no Specify 7 do qual talvez não estejamos cientes.', }, criticalErrorOccurredDescription: { - "en-us": - "To avoid corrupting data records, you need to start again from a safe spot--the Home page.", - "ru-ru": - "Чтобы избежать повреждения записей данных, вам необходимо начать заново с безопасного места — с домашней страницы.", - "es-es": - "Para evitar corromper los registros de datos, debe comenzar de nuevo desde un lugar seguro: la página de inicio.", - "fr-fr": + 'en-us': + 'To avoid corrupting data records, you need to start again from a safe spot--the Home page.', + 'ru-ru': + 'Чтобы избежать повреждения записей данных, вам необходимо начать заново с безопасного места — с домашней страницы.', + 'es-es': + 'Para evitar corromper los registros de datos, debe comenzar de nuevo desde un lugar seguro: la página de inicio.', + 'fr-fr': "Pour éviter de corrompre les enregistrements de données, vous devez recommencer à partir d'un endroit sûr : la page d'accueil.", - "uk-ua": - "Щоб уникнути пошкодження записів даних, вам потрібно почати знову з безпечного місця – головної сторінки.", - "de-ch": - "Um eine Beschädigung der Datensätze zu vermeiden, müssen Sie an einer sicheren Stelle neu beginnen – der Startseite.", - "pt-br": - "Para evitar corromper registros de dados, você precisa começar novamente em um local seguro: a página inicial.", + 'uk-ua': + 'Щоб уникнути пошкодження записів даних, вам потрібно почати знову з безпечного місця – головної сторінки.', + 'de-ch': + 'Um eine Beschädigung der Datensätze zu vermeiden, müssen Sie an einer sicheren Stelle neu beginnen – der Startseite.', + 'pt-br': + 'Para evitar corromper registros de dados, você precisa começar novamente em um local seguro: a página inicial.', }, errorResolutionDescription: { - "en-us": - "If this issue persists, please contact your IT support. If this is a Specify Cloud database, please download the error message and send it to .", - "ru-ru": - "Если эта проблема не устраняется, обратитесь к вашей службе поддержки. Если это база данных Specify Cloud, загрузите сообщение об ошибке и отправьте его на .", - "es-es": - "Si el problema persiste, póngase en contacto con el servicio de asistencia informática. Si se trata de una base de datos de Specify Cloud, descargue el mensaje de error y envíelo a .", - "fr-fr": + 'en-us': + 'If this issue persists, please contact your IT support. If this is a Specify Cloud database, please download the error message and send it to .', + 'ru-ru': + 'Если эта проблема не устраняется, обратитесь к вашей службе поддержки. Если это база данных Specify Cloud, загрузите сообщение об ошибке и отправьте его на .', + 'es-es': + 'Si el problema persiste, póngase en contacto con el servicio de asistencia informática. Si se trata de una base de datos de Specify Cloud, descargue el mensaje de error y envíelo a .', + 'fr-fr': "Si ce problème persiste, veuillez contacter votre support informatique. S'il s'agit d'une base de données Specify Cloud, veuillez télécharger le message d'erreur et l'envoyer à .", - "uk-ua": - "Якщо проблема не зникне, зверніться до служби підтримки ІТ. Якщо це база даних Specify Cloud, завантажте повідомлення про помилку та надішліть його на .", - "de-ch": - "Wenn dieses Problem weiterhin besteht, wenden Sie sich bitte an Ihren IT-Support. Wenn es sich um eine Specify Cloud-Datenbank handelt, laden Sie bitte die Fehlermeldung herunter und senden Sie sie an .", - "pt-br": - "Se o problema persistir, entre em contato com o suporte de TI. Se for um banco de dados do Specify Cloud, baixe a mensagem de erro e envie para .", + 'uk-ua': + 'Якщо проблема не зникне, зверніться до служби підтримки ІТ. Якщо це база даних Specify Cloud, завантажте повідомлення про помилку та надішліть його на .', + 'de-ch': + 'Wenn dieses Problem weiterhin besteht, wenden Sie sich bitte an Ihren IT-Support. Wenn es sich um eine Specify Cloud-Datenbank handelt, laden Sie bitte die Fehlermeldung herunter und senden Sie sie an .', + 'pt-br': + 'Se o problema persistir, entre em contato com o suporte de TI. Se for um banco de dados do Specify Cloud, baixe a mensagem de erro e envie para .', }, errorResolutionSecondDescription: { - comment: "Careful with the tags when localizing", - "en-us": - "Users from member institutions can search for answered questions and ask for help on our Community Forum.", - "ru-ru": - "Пользователи из учреждений Консорциума могут искать ответы на вопросы и обращаться за помощью на нашем форуме.", - "es-es": - "Los usuarios de miembros de las instituciones pueden buscar preguntas respondidas y pedir ayuda en nuestro Foro.", - "fr-fr": + comment: 'Careful with the tags when localizing', + 'en-us': + 'Users from member institutions can search for answered questions and ask for help on our Community Forum.', + 'ru-ru': + 'Пользователи из учреждений Консорциума могут искать ответы на вопросы и обращаться за помощью на нашем форуме.', + 'es-es': + 'Los usuarios de miembros de las instituciones pueden buscar preguntas respondidas y pedir ayuda en nuestro Foro.', + 'fr-fr': "Les utilisateurs des institutions membres peuvent rechercher des réponses aux questions et demander de l'aide sur notre Forum communautaire.", - "uk-ua": - "Користувачі установ-членів можуть шукати відповіді на запитання та звертатися за допомогою на нашому форумі.", - "de-ch": - "Benutzer von Mitgliedsinstitutionen können in unserem Community Forum nach Antworten suchen und um Hilfe bitten.", - "pt-br": - "Usuários de instituições membros podem pesquisar perguntas respondidas e pedir ajuda em nosso Fórum da Comunidade.", + 'uk-ua': + 'Користувачі установ-членів можуть шукати відповіді на запитання та звертатися за допомогою на нашому форумі.', + 'de-ch': + 'Benutzer von Mitgliedsinstitutionen können in unserem Community Forum nach Antworten suchen und um Hilfe bitten.', + 'pt-br': + 'Usuários de instituições membros podem pesquisar perguntas respondidas e pedir ajuda em nosso Fórum da Comunidade.', }, errorMessage: { - "en-us": "Error Message", - "ru-ru": "Описание ошибки", - "es-es": "Mensaje de error", - "fr-fr": "Message d'erreur", - "uk-ua": "Повідомлення про помилку", - "de-ch": "Fehlermeldung", - "pt-br": "Mensagem de erro", + 'en-us': 'Error Message', + 'ru-ru': 'Описание ошибки', + 'es-es': 'Mensaje de error', + 'fr-fr': "Message d'erreur", + 'uk-ua': 'Повідомлення про помилку', + 'de-ch': 'Fehlermeldung', + 'pt-br': 'Mensagem de erro', }, leavePageConfirmation: { - "en-us": "Are you sure you want to leave this page?", - "ru-ru": "Вы уверены, что хотите покинуть эту страницу?", - "es-es": "¿Está seguro de que quiere abandonar esta página?", - "fr-fr": "Voulez-vous vraiment quitter cette page ?", - "uk-ua": "Ви впевнені, що бажаєте покинути цю сторінку?", - "de-ch": "Sind Sie sicher, dass Sie diese Seite verlassen wollen?", - "pt-br": "Tem certeza de que deseja sair desta página?", + 'en-us': 'Are you sure you want to leave this page?', + 'ru-ru': 'Вы уверены, что хотите покинуть эту страницу?', + 'es-es': '¿Está seguro de que quiere abandonar esta página?', + 'fr-fr': 'Voulez-vous vraiment quitter cette page ?', + 'uk-ua': 'Ви впевнені, що бажаєте покинути цю сторінку?', + 'de-ch': 'Sind Sie sicher, dass Sie diese Seite verlassen wollen?', + 'pt-br': 'Tem certeza de que deseja sair desta página?', }, leavePageConfirmationDescription: { - "en-us": "Unsaved changes will be lost if you leave this page.", - "ru-ru": - "Несохраненные изменения будут потеряны, если вы покинете эту страницу.", - "es-es": "Los cambios no guardados se perderán si abandona esta página.", - "fr-fr": - "Les modifications non enregistrées seront perdues si vous quittez cette page.", - "uk-ua": "Незбережені зміни будуть втрачені, якщо ви залишите цю сторінку.", - "de-ch": - "Nicht gespeicherte Änderungen gehen verloren, wenn Sie diese Seite verlassen.", - "pt-br": - "As alterações não salvas serão perdidas se você sair desta página.", + 'en-us': 'Unsaved changes will be lost if you leave this page.', + 'ru-ru': + 'Несохраненные изменения будут потеряны, если вы покинете эту страницу.', + 'es-es': 'Los cambios no guardados se perderán si abandona esta página.', + 'fr-fr': + 'Les modifications non enregistrées seront perdues si vous quittez cette page.', + 'uk-ua': 'Незбережені зміни будуть втрачені, якщо ви залишите цю сторінку.', + 'de-ch': + 'Nicht gespeicherte Änderungen gehen verloren, wenn Sie diese Seite verlassen.', + 'pt-br': + 'As alterações não salvas serão perdidas se você sair desta página.', }, leave: { - "en-us": "Leave", - "ru-ru": "Покинуть", - "es-es": "Abandonar", - "fr-fr": "Quitter", - "uk-ua": "Покинути", - "de-ch": "Verlassen", - "pt-br": "Deixar", + 'en-us': 'Leave', + 'ru-ru': 'Покинуть', + 'es-es': 'Abandonar', + 'fr-fr': 'Quitter', + 'uk-ua': 'Покинути', + 'de-ch': 'Verlassen', + 'pt-br': 'Deixar', }, versionMismatch: { - "en-us": "Specify version does not match database version", - "ru-ru": "Specify версия не соответствует версии базы данных", - "es-es": - "La versión de Specify no coincide con la versión de la base de datos", - "fr-fr": - "La version de Specify ne correspond pas à la version de la base de données", - "uk-ua": "Версія Specify не відповідає версії бази даних", - "de-ch": - "Die Specify Version stimmt nicht mit der Datenbankversion überein", - "pt-br": "A versão especificada não corresponde à versão do banco de dados", + 'en-us': 'Specify version does not match database version', + 'ru-ru': 'Specify версия не соответствует версии базы данных', + 'es-es': + 'La versión de Specify no coincide con la versión de la base de datos', + 'fr-fr': + 'La version de Specify ne correspond pas à la version de la base de données', + 'uk-ua': 'Версія Specify не відповідає версії бази даних', + 'de-ch': + 'Die Specify Version stimmt nicht mit der Datenbankversion überein', + 'pt-br': 'A versão especificada não corresponde à versão do banco de dados', }, versionMismatchDescription: { - "en-us": - "The Specify version {specifySixVersion:string} does not match the database version {databaseVersion:string}.", - "ru-ru": - "Specify версия {specifySixVersion:string} не соответствует версии базы данных {databaseVersion:string}.", - "es-es": - "La versión de Specify {specifySixVersion:string} no coincide con la versión {databaseVersion:string} de la base de datos.", - "fr-fr": - "La version {specifySixVersion:string} de Specify ne correspond pas à la version {databaseVersion:string} de la base de données.", - "uk-ua": - "Версія Specify {specifySixVersion:string} не відповідає версії бази даних {databaseVersion:string}.", - "de-ch": - "Die Specify Version {specifySixVersion:string} stimmt nicht mit der Datenbankversion {databaseVersion:string} überein.", - "pt-br": - "A versão Especificar {specifySixVersion:string} não corresponde à versão do banco de dados {databaseVersion:string}.", + 'en-us': + 'The Specify version {specifySixVersion:string} does not match the database version {databaseVersion:string}.', + 'ru-ru': + 'Specify версия {specifySixVersion:string} не соответствует версии базы данных {databaseVersion:string}.', + 'es-es': + 'La versión de Specify {specifySixVersion:string} no coincide con la versión {databaseVersion:string} de la base de datos.', + 'fr-fr': + 'La version {specifySixVersion:string} de Specify ne correspond pas à la version {databaseVersion:string} de la base de données.', + 'uk-ua': + 'Версія Specify {specifySixVersion:string} не відповідає версії бази даних {databaseVersion:string}.', + 'de-ch': + 'Die Specify Version {specifySixVersion:string} stimmt nicht mit der Datenbankversion {databaseVersion:string} überein.', + 'pt-br': + 'A versão Especificar {specifySixVersion:string} não corresponde à versão do banco de dados {databaseVersion:string}.', }, versionMismatchSecondDescription: { - "en-us": - "Some features of Specify 7 may therefore fail to operate correctly.", - "ru-ru": "Поэтому некоторые функции Specify 7 могут неработать.", - "es-es": - "Por lo tanto, es posible que algunas funciones de Specific 7 no funcionen correctamente.", - "fr-fr": - "Certaines fonctionnalités de Specify 7 peuvent donc ne pas fonctionner correctement.", - "uk-ua": "Тому деякі функції Specify 7 можуть не працювати належним чином.", - "de-ch": - "Einige Funktionen von Specify 7 funktionieren daher möglicherweise nicht richtig.", - "pt-br": - "Alguns recursos do Specify 7 podem, portanto, não funcionar corretamente.", + 'en-us': + 'Some features of Specify 7 may therefore fail to operate correctly.', + 'ru-ru': 'Поэтому некоторые функции Specify 7 могут неработать.', + 'es-es': + 'Por lo tanto, es posible que algunas funciones de Specific 7 no funcionen correctamente.', + 'fr-fr': + 'Certaines fonctionnalités de Specify 7 peuvent donc ne pas fonctionner correctement.', + 'uk-ua': 'Тому деякі функції Specify 7 можуть не працювати належним чином.', + 'de-ch': + 'Einige Funktionen von Specify 7 funktionieren daher möglicherweise nicht richtig.', + 'pt-br': + 'Alguns recursos do Specify 7 podem, portanto, não funcionar corretamente.', }, versionMismatchInstructions: { - "en-us": "Instructions for resolving Specify schema mismatch", - "ru-ru": "Инструкции по устранению несоответствия схемы Specify", - "es-es": - "Instrucciones para resolver la discrepancia de los esquema de Specify", - "fr-fr": + 'en-us': 'Instructions for resolving Specify schema mismatch', + 'ru-ru': 'Инструкции по устранению несоответствия схемы Specify', + 'es-es': + 'Instrucciones para resolver la discrepancia de los esquema de Specify', + 'fr-fr': "Instructions pour résoudre l'incompatibilité de schéma de Specify", - "uk-ua": "Інструкції щодо вирішення невідповідності версій", - "de-ch": "Anweisungen zur Behebung der Abweichung des Specify Schemas", - "pt-br": - "Instruções para resolver a incompatibilidade do esquema de especificação", + 'uk-ua': 'Інструкції щодо вирішення невідповідності версій', + 'de-ch': 'Anweisungen zur Behebung der Abweichung des Specify Schemas', + 'pt-br': + 'Instruções para resolver a incompatibilidade do esquema de especificação', }, online: { - "en-us": "online", - "es-es": "conectado", - "fr-fr": "en ligne", - "ru-ru": "онлайн", - "uk-ua": "онлайн", - "de-ch": "online", - "pt-br": "on-line", + 'en-us': 'online', + 'es-es': 'conectado', + 'fr-fr': 'en ligne', + 'ru-ru': 'онлайн', + 'uk-ua': 'онлайн', + 'de-ch': 'online', + 'pt-br': 'on-line', }, offline: { - "en-us": "offline", - "es-es": "desconectado", - "fr-fr": "hors ligne", - "ru-ru": "не в сети", - "uk-ua": "офлайн", - "de-ch": "offline", - "pt-br": "desconectado", + 'en-us': 'offline', + 'es-es': 'desconectado', + 'fr-fr': 'hors ligne', + 'ru-ru': 'не в сети', + 'uk-ua': 'офлайн', + 'de-ch': 'offline', + 'pt-br': 'desconectado', }, } as const); diff --git a/specifyweb/frontend/js_src/lib/localization/query.ts b/specifyweb/frontend/js_src/lib/localization/query.ts index 1186d06a67f..e093dba8102 100644 --- a/specifyweb/frontend/js_src/lib/localization/query.ts +++ b/specifyweb/frontend/js_src/lib/localization/query.ts @@ -4,948 +4,948 @@ * @module */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const queryText = createDictionary({ query: { - "en-us": "Query", - "ru-ru": "Запрос", - "es-es": "Consulta", - "fr-fr": "Requête", - "uk-ua": "Запит", - "de-ch": "Abfrage", - "pt-br": "Consulta", + 'en-us': 'Query', + 'ru-ru': 'Запрос', + 'es-es': 'Consulta', + 'fr-fr': 'Requête', + 'uk-ua': 'Запит', + 'de-ch': 'Abfrage', + 'pt-br': 'Consulta', }, queries: { - "en-us": "Queries", - "ru-ru": "Запросы", - "es-es": "Consultas", - "fr-fr": "Requêtes", - "uk-ua": "Запити", - "de-ch": "Abfragen", - "pt-br": "Consultas", + 'en-us': 'Queries', + 'ru-ru': 'Запросы', + 'es-es': 'Consultas', + 'fr-fr': 'Requêtes', + 'uk-ua': 'Запити', + 'de-ch': 'Abfragen', + 'pt-br': 'Consultas', }, queryBuilder: { - "en-us": "Query Builder", - "ru-ru": "Конструктор запросов", - "es-es": "Generador de consultas", - "fr-fr": "Générateur de requêtes", - "uk-ua": "Конструктор запитів", - "de-ch": "Query Builder", - "pt-br": "Construtor de consultas", + 'en-us': 'Query Builder', + 'ru-ru': 'Конструктор запросов', + 'es-es': 'Generador de consultas', + 'fr-fr': 'Générateur de requêtes', + 'uk-ua': 'Конструктор запитів', + 'de-ch': 'Query Builder', + 'pt-br': 'Construtor de consultas', }, newQueryName: { - "en-us": "New Query", - "es-es": "Nueva consulta", - "uk-ua": "Новий запит", - "de-ch": "Neue Abfrage", - "fr-fr": "Nouvelle requête", - "ru-ru": "Новый запрос", - "pt-br": "Nova consulta", + 'en-us': 'New Query', + 'es-es': 'Nueva consulta', + 'uk-ua': 'Новий запит', + 'de-ch': 'Neue Abfrage', + 'fr-fr': 'Nouvelle requête', + 'ru-ru': 'Новый запрос', + 'pt-br': 'Nova consulta', }, searchFields: { comment: ` Used in a Query Combo Box's hover-over message to show which fields are being searched on `, - "en-us": "Searched fields", - "ru-ru": "Поля поиска", - "es-es": "Campos buscados", - "fr-fr": "Champs recherchés", - "uk-ua": "Пошукові поля", - "de-ch": "Durchsuchte Felder", - "pt-br": "Campos pesquisados", + 'en-us': 'Searched fields', + 'ru-ru': 'Поля поиска', + 'es-es': 'Campos buscados', + 'fr-fr': 'Champs recherchés', + 'uk-ua': 'Пошукові поля', + 'de-ch': 'Durchsuchte Felder', + 'pt-br': 'Campos pesquisados', }, any: { - "en-us": "Any", - "ru-ru": "Любой", - "es-es": "Cualquier", - "fr-fr": "N'importe lequel", - "uk-ua": "Будь-який", - "de-ch": "Beliebig", - "pt-br": "Qualquer", + 'en-us': 'Any', + 'ru-ru': 'Любой', + 'es-es': 'Cualquier', + 'fr-fr': "N'importe lequel", + 'uk-ua': 'Будь-який', + 'de-ch': 'Beliebig', + 'pt-br': 'Qualquer', }, startValue: { - "en-us": "Start Value", - "ru-ru": "Начальное значение", - "es-es": "Valor inicial", - "fr-fr": "Valeur de départ", - "uk-ua": "Початкове значення", - "de-ch": "Startwert", - "pt-br": "Valor inicial", + 'en-us': 'Start Value', + 'ru-ru': 'Начальное значение', + 'es-es': 'Valor inicial', + 'fr-fr': 'Valeur de départ', + 'uk-ua': 'Початкове значення', + 'de-ch': 'Startwert', + 'pt-br': 'Valor inicial', }, endValue: { - "en-us": "End Value", - "ru-ru": "Конечное значение", - "es-es": "Valor final", - "fr-fr": "Valeur finale", - "uk-ua": "Кінцеве значення", - "de-ch": "Endwert", - "pt-br": "Valor final", + 'en-us': 'End Value', + 'ru-ru': 'Конечное значение', + 'es-es': 'Valor final', + 'fr-fr': 'Valeur finale', + 'uk-ua': 'Кінцеве значення', + 'de-ch': 'Endwert', + 'pt-br': 'Valor final', }, saveQuery: { - "en-us": "Save Query", - "ru-ru": "Сохранить запрос", - "es-es": "Guardar consulta", - "fr-fr": "Enregistrer la requête", - "uk-ua": "Зберегти запит", - "de-ch": "Abfrage speichern", - "pt-br": "Salvar consulta", + 'en-us': 'Save Query', + 'ru-ru': 'Сохранить запрос', + 'es-es': 'Guardar consulta', + 'fr-fr': 'Enregistrer la requête', + 'uk-ua': 'Зберегти запит', + 'de-ch': 'Abfrage speichern', + 'pt-br': 'Salvar consulta', }, saveClonedQuery: { - "en-us": "Save query as...", - "ru-ru": "Сохранить запрос как...", - "es-es": "Guardar consulta como...", - "fr-fr": "Enregistrer la requête sous...", - "uk-ua": "Зберегти запит як...", - "de-ch": "Abfrage speichern unter...", - "pt-br": "Salvar consulta como...", + 'en-us': 'Save query as...', + 'ru-ru': 'Сохранить запрос как...', + 'es-es': 'Guardar consulta como...', + 'fr-fr': 'Enregistrer la requête sous...', + 'uk-ua': 'Зберегти запит як...', + 'de-ch': 'Abfrage speichern unter...', + 'pt-br': 'Salvar consulta como...', }, saveClonedQueryDescription: { - "en-us": - "The query will be saved with a new name leaving the current query unchanged.", - "ru-ru": - "Запрос будет сохранен под новым именем, текущий запрос останется неизменным.", - "es-es": - "La consulta se guardará con un nuevo nombre dejando la consulta actual sin cambios.", - "fr-fr": - "La requête sera enregistrée avec un nouveau nom, laissant la requête actuelle inchangée.", - "uk-ua": - "Запит буде збережено з новою назвою, а поточний запит залишиться без змін.", - "de-ch": - "Die Abfrage wird unter einem neuen Namen gespeichert, die aktuelle Abfrage bleibt unverändert.", - "pt-br": - "A consulta será salva com um novo nome, deixando a consulta atual inalterada.", + 'en-us': + 'The query will be saved with a new name leaving the current query unchanged.', + 'ru-ru': + 'Запрос будет сохранен под новым именем, текущий запрос останется неизменным.', + 'es-es': + 'La consulta se guardará con un nuevo nombre dejando la consulta actual sin cambios.', + 'fr-fr': + 'La requête sera enregistrée avec un nouveau nom, laissant la requête actuelle inchangée.', + 'uk-ua': + 'Запит буде збережено з новою назвою, а поточний запит залишиться без змін.', + 'de-ch': + 'Die Abfrage wird unter einem neuen Namen gespeichert, die aktuelle Abfrage bleibt unverändert.', + 'pt-br': + 'A consulta será salva com um novo nome, deixando a consulta atual inalterada.', }, queryDeleteIncomplete: { - "en-us": "Query definition contains incomplete fields", - "ru-ru": "Определение запроса содержит неполные поля", - "es-es": "La definición de consulta contiene campos incompletos", - "fr-fr": "La définition de la requête contient des champs incomplets", - "uk-ua": "Визначення запиту містить незаповнені поля", - "de-ch": "Abfragedefinition enthält unvollständige Felder", - "pt-br": "A definição da consulta contém campos incompletos", + 'en-us': 'Query definition contains incomplete fields', + 'ru-ru': 'Определение запроса содержит неполные поля', + 'es-es': 'La definición de consulta contiene campos incompletos', + 'fr-fr': 'La définition de la requête contient des champs incomplets', + 'uk-ua': 'Визначення запиту містить незаповнені поля', + 'de-ch': 'Abfragedefinition enthält unvollständige Felder', + 'pt-br': 'A definição da consulta contém campos incompletos', }, queryDeleteIncompleteDescription: { - "en-us": - "There are uncompleted fields in the query definition. Do you want to remove them?", - "ru-ru": - "В определении запроса есть незаполненные поля. Хотите их удалить?", - "es-es": - "Hay campos sin completar en la definición de la consulta. ¿Desea eliminarlos?", - "fr-fr": - "La définition de la requête contient des champs non renseignés. Voulez-vous les supprimer ?", - "uk-ua": "У визначенні запиту є незаповнені поля. Ви хочете видалити їх?", - "de-ch": - "Die Abfragedefinition enthält unvollständige Felder. Möchten Sie diese entfernen?", - "pt-br": - "Há campos incompletos na definição da consulta. Deseja removê-los?", + 'en-us': + 'There are uncompleted fields in the query definition. Do you want to remove them?', + 'ru-ru': + 'В определении запроса есть незаполненные поля. Хотите их удалить?', + 'es-es': + 'Hay campos sin completar en la definición de la consulta. ¿Desea eliminarlos?', + 'fr-fr': + 'La définition de la requête contient des champs non renseignés. Voulez-vous les supprimer ?', + 'uk-ua': 'У визначенні запиту є незаповнені поля. Ви хочете видалити їх?', + 'de-ch': + 'Die Abfragedefinition enthält unvollständige Felder. Möchten Sie diese entfernen?', + 'pt-br': + 'Há campos incompletos na definição da consulta. Deseja removê-los?', }, queryUnloadProtect: { - "en-us": "The new or modified query definition has not been saved", - "ru-ru": "Новое или измененное определение запроса не было сохранено.", - "es-es": "La definición de consulta nueva o modificada no se ha guardado", - "fr-fr": + 'en-us': 'The new or modified query definition has not been saved', + 'ru-ru': 'Новое или измененное определение запроса не было сохранено.', + 'es-es': 'La definición de consulta nueva o modificada no se ha guardado', + 'fr-fr': "La définition de requête nouvelle ou modifiée n'a pas été enregistrée", - "uk-ua": "Нове або змінене визначення запиту не було збережено", - "de-ch": - "Die neue oder geänderte Abfragedefinition wurde nicht gespeichert", - "pt-br": "A definição de consulta nova ou modificada não foi salva", + 'uk-ua': 'Нове або змінене визначення запиту не було збережено', + 'de-ch': + 'Die neue oder geänderte Abfragedefinition wurde nicht gespeichert', + 'pt-br': 'A definição de consulta nova ou modificada não foi salva', }, recordSetToQuery: { - comment: "Example: Creating a Record Set from Query", - "en-us": "Creating a {recordSetTable:string} from Query", - "ru-ru": "Создание {recordSetTable:string} из запроса", - "es-es": "Creando un {recordSetTable:string} a partir de una consulta", - "fr-fr": "Création d'un {recordSetTable:string} à partir d'une requête", - "uk-ua": "Створення {recordSetTable:string} із запиту", - "de-ch": "Erstellen eines {recordSetTable:string} aus einer Abfrage", - "pt-br": "Criando um {recordSetTable:string} a partir da consulta", + comment: 'Example: Creating a Record Set from Query', + 'en-us': 'Creating a {recordSetTable:string} from Query', + 'ru-ru': 'Создание {recordSetTable:string} из запроса', + 'es-es': 'Creando un {recordSetTable:string} a partir de una consulta', + 'fr-fr': "Création d'un {recordSetTable:string} à partir d'une requête", + 'uk-ua': 'Створення {recordSetTable:string} із запиту', + 'de-ch': 'Erstellen eines {recordSetTable:string} aus einer Abfrage', + 'pt-br': 'Criando um {recordSetTable:string} a partir da consulta', }, recordSetToQueryDescription: { - "en-us": "Generating {recordSetTable:string}...", - "ru-ru": "Генерация {recordSetTable:string}...", - "es-es": "Generando {recordSetTable:string}...", - "fr-fr": "Génération de {recordSetTable:string}...", - "uk-ua": "Створення {recordSetTable:string}...", - "de-ch": "{recordSetTable:string} wird generiert...", - "pt-br": "Gerando {recordSetTable:string}...", + 'en-us': 'Generating {recordSetTable:string}...', + 'ru-ru': 'Генерация {recordSetTable:string}...', + 'es-es': 'Generando {recordSetTable:string}...', + 'fr-fr': 'Génération de {recordSetTable:string}...', + 'uk-ua': 'Створення {recordSetTable:string}...', + 'de-ch': '{recordSetTable:string} wird generiert...', + 'pt-br': 'Gerando {recordSetTable:string}...', }, recordSetCreated: { - "en-us": "{recordSetTable:string} Created", - "ru-ru": "{recordSetTable:string} Создано", - "es-es": "{recordSetTable:string} Creado", - "fr-fr": "{recordSetTable:string} Créé", - "uk-ua": "{recordSetTable:string} Створено", - "de-ch": "{recordSetTable:string} Erstellt", - "pt-br": "{recordSetTable:string} Criado", + 'en-us': '{recordSetTable:string} Created', + 'ru-ru': '{recordSetTable:string} Создано', + 'es-es': '{recordSetTable:string} Creado', + 'fr-fr': '{recordSetTable:string} Créé', + 'uk-ua': '{recordSetTable:string} Створено', + 'de-ch': '{recordSetTable:string} Erstellt', + 'pt-br': '{recordSetTable:string} Criado', }, missingCoordinatesForKml: { - "en-us": "Unable to export to KML", - "ru-ru": "Невозможно экспортировать в KML", - "es-es": "No se puede exportar a KML", - "fr-fr": "Impossible d'exporter vers KML", - "uk-ua": "Не вдалося експортувати в KML", - "de-ch": "Export in KML nicht möglich", - "pt-br": "Não é possível exportar para KML", + 'en-us': 'Unable to export to KML', + 'ru-ru': 'Невозможно экспортировать в KML', + 'es-es': 'No se puede exportar a KML', + 'fr-fr': "Impossible d'exporter vers KML", + 'uk-ua': 'Не вдалося експортувати в KML', + 'de-ch': 'Export in KML nicht möglich', + 'pt-br': 'Não é possível exportar para KML', }, missingCoordinatesForKmlDescription: { - "en-us": "Please add latitude and longitude fields to the query.", - "ru-ru": "Добавьте в запрос поля широты и долготы.", - "es-es": "Agregue campos de latitud y longitud a la consulta.", - "fr-fr": - "Veuillez ajouter les champs de latitude et de longitude à la requête.", - "uk-ua": "Будь ласка, додайте поля широти та довготи до запиту.", - "de-ch": "Bitte fügen Sie der Abfrage Breiten- und Längengradfelder hinzu.", - "pt-br": "Adicione campos de latitude e longitude à consulta.", + 'en-us': 'Please add latitude and longitude fields to the query.', + 'ru-ru': 'Добавьте в запрос поля широты и долготы.', + 'es-es': 'Agregue campos de latitud y longitud a la consulta.', + 'fr-fr': + 'Veuillez ajouter les champs de latitude et de longitude à la requête.', + 'uk-ua': 'Будь ласка, додайте поля широти та довготи до запиту.', + 'de-ch': 'Bitte fügen Sie der Abfrage Breiten- und Längengradfelder hinzu.', + 'pt-br': 'Adicione campos de latitude e longitude à consulta.', }, queryExportStarted: { - "en-us": "Export File Being Created", - "ru-ru": "Создается файл экспорта", - "es-es": "Archivo de exportación en creación", - "fr-fr": "Fichier d'exportation en cours de création", - "uk-ua": "Експортний файл створюється", - "de-ch": "Exportdatei wird erstellt", - "pt-br": "Arquivo de exportação sendo criado", + 'en-us': 'Export File Being Created', + 'ru-ru': 'Создается файл экспорта', + 'es-es': 'Archivo de exportación en creación', + 'fr-fr': "Fichier d'exportation en cours de création", + 'uk-ua': 'Експортний файл створюється', + 'de-ch': 'Exportdatei wird erstellt', + 'pt-br': 'Arquivo de exportação sendo criado', }, queryExportStartedDescription: { - "en-us": - "A notification will appear when the export file is complete and ready for download.", - "es-es": - "Aparecerá una notificación cuando el archivo de exportación esté completo y listo para descargar.", - "uk-ua": - "Коли файл експорту буде завершено та готовий до завантаження, з’явиться сповіщення.", - "de-ch": - "Wenn die Exportdatei vollständig ist und zum Download bereit steht, wird eine Benachrichtigung angezeigt.", - "fr-fr": + 'en-us': + 'A notification will appear when the export file is complete and ready for download.', + 'es-es': + 'Aparecerá una notificación cuando el archivo de exportación esté completo y listo para descargar.', + 'uk-ua': + 'Коли файл експорту буде завершено та готовий до завантаження, з’явиться сповіщення.', + 'de-ch': + 'Wenn die Exportdatei vollständig ist und zum Download bereit steht, wird eine Benachrichtigung angezeigt.', + 'fr-fr': "Une notification apparaîtra lorsque le fichier d'exportation sera terminé et prêt à être téléchargé.", - "ru-ru": - "Когда файл экспорта будет завершен и готов к загрузке, появится уведомление.", - "pt-br": - "Uma notificação aparecerá quando o arquivo de exportação estiver concluído e pronto para download.", + 'ru-ru': + 'Когда файл экспорта будет завершен и готов к загрузке, появится уведомление.', + 'pt-br': + 'Uma notificação aparecerá quando o arquivo de exportação estiver concluído e pronto para download.', }, invalidPicklistValue: { - comment: "Used when selected pick list value is not one of allowed values", - "en-us": "{value:string} (current, invalid value)", - "ru-ru": "{value:string} (текущее, недопустимое значение)", - "es-es": "{value:string} (valor actual, no válido)", - "fr-fr": "{value:string} (valeur actuelle, non valide)", - "uk-ua": "{value:string} (поточне, недійсне значення)", - "de-ch": "{value:string} (aktueller, ungültiger Wert)", - "pt-br": "{value:string} (valor atual, inválido)", + comment: 'Used when selected pick list value is not one of allowed values', + 'en-us': '{value:string} (current, invalid value)', + 'ru-ru': '{value:string} (текущее, недопустимое значение)', + 'es-es': '{value:string} (valor actual, no válido)', + 'fr-fr': '{value:string} (valeur actuelle, non valide)', + 'uk-ua': '{value:string} (поточне, недійсне значення)', + 'de-ch': '{value:string} (aktueller, ungültiger Wert)', + 'pt-br': '{value:string} (valor atual, inválido)', }, queryRecordSetTitle: { - comment: "Used in query builder header when querying on record set", - "en-us": + comment: 'Used in query builder header when querying on record set', + 'en-us': 'Query: "{queryName:string}" on {recordSetTable:string}: "{recordSetName:string}"', - "ru-ru": + 'ru-ru': 'Запрос: "{queryName:string}" на {recordSetTable:string}: "{recordSetName:string}"', - "es-es": + 'es-es': 'Consulta: "{queryName:string}" en {recordSetTable:string}: "{recordSetName:string}"', - "fr-fr": - "Requête : « {queryName:string} » sur {recordSetTable:string} : « {recordSetName:string} »", - "uk-ua": + 'fr-fr': + 'Requête : « {queryName:string} » sur {recordSetTable:string} : « {recordSetName:string} »', + 'uk-ua': 'Запит: "{queryName:string}" на {recordSetTable:string}: "{recordSetName:string}"', - "de-ch": + 'de-ch': 'Abfrage: "{queryName:string}" auf {recordSetTable:string}: "{recordSetName:string}"', - "pt-br": + 'pt-br': 'Consulta: "{queryName:string}" em {recordSetTable:string}: "{recordSetName:string}"', }, treeQueryName: { - comment: "Used in query builder header when querying on tree node usages", - "en-us": '{tableName:string} using "{nodeFullName:string}"', - "ru-ru": '{tableName:string} с использованием "{nodeFullName:string}"', - "es-es": '{tableName:string} usando "{nodeFullName:string}"', - "fr-fr": "{tableName:string} en utilisant « {nodeFullName:string} »", - "uk-ua": '{tableName:string} за допомогою "{nodeFullName:string}"', - "de-ch": '{tableName:string} mit "{nodeFullName:string}"', - "pt-br": '{tableName:string} usando "{nodeFullName:string}"', + comment: 'Used in query builder header when querying on tree node usages', + 'en-us': '{tableName:string} using "{nodeFullName:string}"', + 'ru-ru': '{tableName:string} с использованием "{nodeFullName:string}"', + 'es-es': '{tableName:string} usando "{nodeFullName:string}"', + 'fr-fr': '{tableName:string} en utilisant « {nodeFullName:string} »', + 'uk-ua': '{tableName:string} за допомогою "{nodeFullName:string}"', + 'de-ch': '{tableName:string} mit "{nodeFullName:string}"', + 'pt-br': '{tableName:string} usando "{nodeFullName:string}"', }, newButtonDescription: { - "en-us": "Add New Field", - "ru-ru": "Добавить новое поле", - "es-es": "Agregar nuevo campo", - "fr-fr": "Ajouter un nouveau champ", - "uk-ua": "Додати нове поле", - "de-ch": "Neues Feld hinzufügen", - "pt-br": "Adicionar novo campo", + 'en-us': 'Add New Field', + 'ru-ru': 'Добавить новое поле', + 'es-es': 'Agregar nuevo campo', + 'fr-fr': 'Ajouter un nouveau champ', + 'uk-ua': 'Додати нове поле', + 'de-ch': 'Neues Feld hinzufügen', + 'pt-br': 'Adicionar novo campo', }, countOnly: { - comment: "Verb", - "en-us": "Count", - "ru-ru": "Считать", - "es-es": "Contar", - "fr-fr": "Compter", - "uk-ua": "Рахувати", - "de-ch": "Zählen", - "pt-br": "Contar", + comment: 'Verb', + 'en-us': 'Count', + 'ru-ru': 'Считать', + 'es-es': 'Contar', + 'fr-fr': 'Compter', + 'uk-ua': 'Рахувати', + 'de-ch': 'Zählen', + 'pt-br': 'Contar', }, distinct: { - "en-us": "Distinct", - "ru-ru": "Отчетливый", - "es-es": "Distinto", - "fr-fr": "Distinct", - "uk-ua": "Виразний", - "de-ch": "Unterscheidbar", - "pt-br": "Distinto", + 'en-us': 'Distinct', + 'ru-ru': 'Отчетливый', + 'es-es': 'Distinto', + 'fr-fr': 'Distinct', + 'uk-ua': 'Виразний', + 'de-ch': 'Unterscheidbar', + 'pt-br': 'Distinto', }, series: { - "en-us": "Series", - "de-ch": "Serie", - "es-es": "Serie", - "fr-fr": "Série", - "pt-br": "Série", - "ru-ru": "Ряд", - "uk-ua": "Серія", + 'en-us': 'Series', + 'de-ch': 'Serie', + 'es-es': 'Serie', + 'fr-fr': 'Série', + 'pt-br': 'Série', + 'ru-ru': 'Ряд', + 'uk-ua': 'Серія', }, createCsv: { - "en-us": "Create CSV", - "ru-ru": "Создать CSV-файл", - "es-es": "Crear CSV", - "fr-fr": "Créer un fichier CSV", - "uk-ua": "Створити CSV", - "de-ch": "CSV erstellen", - "pt-br": "Criar CSV", + 'en-us': 'Create CSV', + 'ru-ru': 'Создать CSV-файл', + 'es-es': 'Crear CSV', + 'fr-fr': 'Créer un fichier CSV', + 'uk-ua': 'Створити CSV', + 'de-ch': 'CSV erstellen', + 'pt-br': 'Criar CSV', }, createKml: { - "en-us": "Create KML", - "ru-ru": "Создать KML-файл", - "es-es": "Crear KML", - "fr-fr": "Créer un fichier KML", - "uk-ua": "Створіть KML", - "de-ch": "KML erstellen", - "pt-br": "Criar KML", + 'en-us': 'Create KML', + 'ru-ru': 'Создать KML-файл', + 'es-es': 'Crear KML', + 'fr-fr': 'Créer un fichier KML', + 'uk-ua': 'Створіть KML', + 'de-ch': 'KML erstellen', + 'pt-br': 'Criar KML', }, createRecordSet: { - "en-us": "Create {recordSetTable:string}", - "ru-ru": "Создать {recordSetTable:string}", - "es-es": "Crear {recordSetTable:string}", - "fr-fr": "Créer {recordSetTable:string}", - "uk-ua": "Створити {recordSetTable:string}", - "de-ch": "Erstellen {recordSetTable:string}", - "pt-br": "Criar {recordSetTable:string}", + 'en-us': 'Create {recordSetTable:string}', + 'ru-ru': 'Создать {recordSetTable:string}', + 'es-es': 'Crear {recordSetTable:string}', + 'fr-fr': 'Créer {recordSetTable:string}', + 'uk-ua': 'Створити {recordSetTable:string}', + 'de-ch': 'Erstellen {recordSetTable:string}', + 'pt-br': 'Criar {recordSetTable:string}', }, saveAs: { - "en-us": "Save As", - "es-es": "Guardar como", - "uk-ua": "Зберегти як", - "de-ch": "Speichern unter", - "fr-fr": "Enregistrer sous", - "ru-ru": "Сохранить как", - "pt-br": "Salvar como", + 'en-us': 'Save As', + 'es-es': 'Guardar como', + 'uk-ua': 'Зберегти як', + 'de-ch': 'Speichern unter', + 'fr-fr': 'Enregistrer sous', + 'ru-ru': 'Сохранить как', + 'pt-br': 'Salvar como', }, anyRank: { - "en-us": "(any rank)", - "ru-ru": "(любой ранг)", - "es-es": "(cualquier rango)", - "fr-fr": "(n'importe quel rang)", - "uk-ua": "(будь-який ранг)", - "de-ch": "(jeder Rang)", - "pt-br": "(qualquer classificação)", + 'en-us': '(any rank)', + 'ru-ru': '(любой ранг)', + 'es-es': '(cualquier rango)', + 'fr-fr': "(n'importe quel rang)", + 'uk-ua': '(будь-який ранг)', + 'de-ch': '(jeder Rang)', + 'pt-br': '(qualquer classificação)', }, anyTree: { - "en-us": "(any tree)", - "de-ch": "(jeder Baum)", - "es-es": "(cualquier árbol)", - "fr-fr": "(n'importe quel arbre)", - "pt-br": "(qualquer árvore)", - "ru-ru": "(любое дерево)", - "uk-ua": "(будь-яке дерево)", + 'en-us': '(any tree)', + 'de-ch': '(jeder Baum)', + 'es-es': '(cualquier árbol)', + 'fr-fr': "(n'importe quel arbre)", + 'pt-br': '(qualquer árvore)', + 'ru-ru': '(любое дерево)', + 'uk-ua': '(будь-яке дерево)', }, moveUp: { - comment: "As in move it up", - "en-us": "Move Up", - "ru-ru": "Двигаться вверх", - "es-es": "Mover hacia arriba", - "fr-fr": "Monter", - "uk-ua": "Рухатися вгору", - "de-ch": "Nach oben", - "pt-br": "Mover para cima", + comment: 'As in move it up', + 'en-us': 'Move Up', + 'ru-ru': 'Двигаться вверх', + 'es-es': 'Mover hacia arriba', + 'fr-fr': 'Monter', + 'uk-ua': 'Рухатися вгору', + 'de-ch': 'Nach oben', + 'pt-br': 'Mover para cima', }, moveDown: { - comment: "As in move it down", - "en-us": "Move Down", - "ru-ru": "Переместить вниз", - "es-es": "Mover hacia abajo", - "fr-fr": "Descendre", - "uk-ua": "Рухатися вниз", - "de-ch": "Nach unten", - "pt-br": "Mover para baixo", + comment: 'As in move it down', + 'en-us': 'Move Down', + 'ru-ru': 'Переместить вниз', + 'es-es': 'Mover hacia abajo', + 'fr-fr': 'Descendre', + 'uk-ua': 'Рухатися вниз', + 'de-ch': 'Nach unten', + 'pt-br': 'Mover para baixo', }, sort: { - "en-us": "Sort", - "ru-ru": "Сортировать", - "es-es": "Ordenar", - "fr-fr": "Trier", - "uk-ua": "Сортувати", - "de-ch": "Sortieren", - "pt-br": "Organizar", + 'en-us': 'Sort', + 'ru-ru': 'Сортировать', + 'es-es': 'Ordenar', + 'fr-fr': 'Trier', + 'uk-ua': 'Сортувати', + 'de-ch': 'Sortieren', + 'pt-br': 'Organizar', }, ascendingSort: { - "en-us": "Ascending Sort", - "ru-ru": "Сортировка по возрастанию", - "es-es": "Orden ascendente", - "fr-fr": "Tri croissant", - "uk-ua": "Сортування за зростанням", - "de-ch": "Aufsteigende Sortierung", - "pt-br": "Classificação crescente", + 'en-us': 'Ascending Sort', + 'ru-ru': 'Сортировка по возрастанию', + 'es-es': 'Orden ascendente', + 'fr-fr': 'Tri croissant', + 'uk-ua': 'Сортування за зростанням', + 'de-ch': 'Aufsteigende Sortierung', + 'pt-br': 'Classificação crescente', }, descendingSort: { - "en-us": "Descending Sort", - "ru-ru": "Сортировка по убыванию", - "es-es": "Orden descendente", - "fr-fr": "Tri décroissant", - "uk-ua": "Сортування за спаданням", - "de-ch": "Absteigende Sortierung", - "pt-br": "Classificação decrescente", + 'en-us': 'Descending Sort', + 'ru-ru': 'Сортировка по убыванию', + 'es-es': 'Orden descendente', + 'fr-fr': 'Tri décroissant', + 'uk-ua': 'Сортування за спаданням', + 'de-ch': 'Absteigende Sortierung', + 'pt-br': 'Classificação decrescente', }, negate: { - comment: "as in negate query condition", - "en-us": "Negate", - "ru-ru": "Отрицать", - "es-es": "Negar", - "fr-fr": "Nier", - "uk-ua": "Заперечувати", - "de-ch": "Negieren", - "pt-br": "Negar", + comment: 'as in negate query condition', + 'en-us': 'Negate', + 'ru-ru': 'Отрицать', + 'es-es': 'Negar', + 'fr-fr': 'Nier', + 'uk-ua': 'Заперечувати', + 'de-ch': 'Negieren', + 'pt-br': 'Negar', }, showButtonDescription: { - "en-us": "Show in results", - "es-es": "Mostrar en resultados", - "uk-ua": "Показати в результатах", - "de-ch": "In Ergebnissen anzeigen", - "fr-fr": "Afficher dans les résultats", - "ru-ru": "Показать в результатах", - "pt-br": "Mostrar nos resultados", + 'en-us': 'Show in results', + 'es-es': 'Mostrar en resultados', + 'uk-ua': 'Показати в результатах', + 'de-ch': 'In Ergebnissen anzeigen', + 'fr-fr': 'Afficher dans les résultats', + 'ru-ru': 'Показать в результатах', + 'pt-br': 'Mostrar nos resultados', }, aggregatedInline: { - "en-us": "(aggregated)", - "ru-ru": "(агрегированные)", - "es-es": "(agregado)", - "fr-fr": "(agrégés)", - "uk-ua": "(узагальнено)", - "de-ch": "(aggregiert)", - "pt-br": "(agregado)", + 'en-us': '(aggregated)', + 'ru-ru': '(агрегированные)', + 'es-es': '(agregado)', + 'fr-fr': '(agrégés)', + 'uk-ua': '(узагальнено)', + 'de-ch': '(aggregiert)', + 'pt-br': '(agregado)', }, formattedInline: { - "en-us": "(formatted)", - "ru-ru": "(отформатировано)", - "es-es": "(formateado)", - "fr-fr": "(formaté)", - "uk-ua": "(відформатований)", - "de-ch": "(formatiert)", - "pt-br": "(formatado)", + 'en-us': '(formatted)', + 'ru-ru': '(отформатировано)', + 'es-es': '(formateado)', + 'fr-fr': '(formaté)', + 'uk-ua': '(відформатований)', + 'de-ch': '(formatiert)', + 'pt-br': '(formatado)', }, like: { - "en-us": "Like", - "ru-ru": "Нравиться", - "es-es": "Como", - "fr-fr": "Comme", - "uk-ua": "Люблю", - "de-ch": "Wie", - "pt-br": "Como", + 'en-us': 'Like', + 'ru-ru': 'Нравиться', + 'es-es': 'Como', + 'fr-fr': 'Comme', + 'uk-ua': 'Люблю', + 'de-ch': 'Wie', + 'pt-br': 'Como', }, likeDescription: { comment: 'Explains the use of special symbols for the "like" query filter', - "en-us": + 'en-us': 'Use "%" to match any number of characters.\n\nUse "_" to match a single character', - "ru-ru": - "Используйте «%» для сопоставления любого количества символов.\n\nИспользуйте «_» для сопоставления одного символа", - "es-es": + 'ru-ru': + 'Используйте «%» для сопоставления любого количества символов.\n\nИспользуйте «_» для сопоставления одного символа', + 'es-es': 'Usar "%" para hacer coincidir cualquier número de caracteres.\n\nUsar "_" para hacer coincidir un solo carácter', - "fr-fr": + 'fr-fr': "Utilisez « % » pour correspondre à n'importe quel nombre de caractères.\n\nUtilisez « _ » pour correspondre à un seul caractère.", - "uk-ua": + 'uk-ua': 'Використовуйте "%", щоб відповідати будь-якій кількості символів.\n\nВикористовуйте "_", щоб відповідати одному символу', - "de-ch": - "Verwenden Sie „%“, um eine beliebige Anzahl von Zeichen abzugleichen.\n\nVerwenden Sie „_“, um ein einzelnes Zeichen abzugleichen.", - "pt-br": + 'de-ch': + 'Verwenden Sie „%“, um eine beliebige Anzahl von Zeichen abzugleichen.\n\nVerwenden Sie „_“, um ein einzelnes Zeichen abzugleichen.', + 'pt-br': 'Use "%" para corresponder a qualquer número de caracteres.\n\nUse "_" para corresponder a um único caractere.', }, equal: { - "en-us": "Equal", - "ru-ru": "Равный", - "es-es": "Igual", - "fr-fr": "Égal", - "uk-ua": "Рівні", - "de-ch": "Gleich", - "pt-br": "Igual", + 'en-us': 'Equal', + 'ru-ru': 'Равный', + 'es-es': 'Igual', + 'fr-fr': 'Égal', + 'uk-ua': 'Рівні', + 'de-ch': 'Gleich', + 'pt-br': 'Igual', }, greaterThan: { - "en-us": "Greater than", - "ru-ru": "Больше чем", - "es-es": "Mayor que", - "fr-fr": "Plus grand que", - "uk-ua": "Більш чим", - "de-ch": "Größer als", - "pt-br": "Maior que", + 'en-us': 'Greater than', + 'ru-ru': 'Больше чем', + 'es-es': 'Mayor que', + 'fr-fr': 'Plus grand que', + 'uk-ua': 'Більш чим', + 'de-ch': 'Größer als', + 'pt-br': 'Maior que', }, lessThan: { - "en-us": "Less than", - "ru-ru": "Меньше, чем", - "es-es": "Menor que", - "fr-fr": "Moins que", - "uk-ua": "Менше ніж", - "de-ch": "Weniger als", - "pt-br": "Menor que", + 'en-us': 'Less than', + 'ru-ru': 'Меньше, чем', + 'es-es': 'Menor que', + 'fr-fr': 'Moins que', + 'uk-ua': 'Менше ніж', + 'de-ch': 'Weniger als', + 'pt-br': 'Menor que', }, greaterOrEqualTo: { - "en-us": "Greater or Equal to", - "ru-ru": "Больше или равно", - "es-es": "Mayor o igual a", - "fr-fr": "Supérieur ou égal à", - "uk-ua": "Більше або дорівнює", - "de-ch": "Größer oder gleich", - "pt-br": "Maior ou igual a", + 'en-us': 'Greater or Equal to', + 'ru-ru': 'Больше или равно', + 'es-es': 'Mayor o igual a', + 'fr-fr': 'Supérieur ou égal à', + 'uk-ua': 'Більше або дорівнює', + 'de-ch': 'Größer oder gleich', + 'pt-br': 'Maior ou igual a', }, lessOrEqualTo: { - "en-us": "Less or Equal to", - "ru-ru": "Меньше или равно", - "es-es": "Menor o igual a", - "fr-fr": "Inférieur ou égal à", - "uk-ua": "Менше або дорівнює", - "de-ch": "Kleiner oder gleich", - "pt-br": "Menor ou igual a", + 'en-us': 'Less or Equal to', + 'ru-ru': 'Меньше или равно', + 'es-es': 'Menor o igual a', + 'fr-fr': 'Inférieur ou égal à', + 'uk-ua': 'Менше або дорівнює', + 'de-ch': 'Kleiner oder gleich', + 'pt-br': 'Menor ou igual a', }, true: { - "en-us": "True", - "ru-ru": "Истинный", - "es-es": "Verdadero", - "fr-fr": "Vrai", - "uk-ua": "правда", - "de-ch": "WAHR", - "pt-br": "Verdadeiro", + 'en-us': 'True', + 'ru-ru': 'Истинный', + 'es-es': 'Verdadero', + 'fr-fr': 'Vrai', + 'uk-ua': 'правда', + 'de-ch': 'WAHR', + 'pt-br': 'Verdadeiro', }, false: { - "en-us": "False", - "ru-ru": "ЛОЖЬ", - "es-es": "Falso", - "fr-fr": "FAUX", - "uk-ua": "помилковий", - "de-ch": "FALSCH", - "pt-br": "Falso", + 'en-us': 'False', + 'ru-ru': 'ЛОЖЬ', + 'es-es': 'Falso', + 'fr-fr': 'FAUX', + 'uk-ua': 'помилковий', + 'de-ch': 'FALSCH', + 'pt-br': 'Falso', }, trueOrNull: { - "en-us": "True or Empty", - "ru-ru": "Правда или Пусто", - "es-es": "Verdadero o vacío", - "fr-fr": "Vrai ou vide", - "uk-ua": "True або Empty", - "de-ch": "Wahr oder leer", - "pt-br": "Verdadeiro ou Vazio", + 'en-us': 'True or Empty', + 'ru-ru': 'Правда или Пусто', + 'es-es': 'Verdadero o vacío', + 'fr-fr': 'Vrai ou vide', + 'uk-ua': 'True або Empty', + 'de-ch': 'Wahr oder leer', + 'pt-br': 'Verdadeiro ou Vazio', }, falseOrNull: { - "en-us": "False or Empty", - "ru-ru": "Ложь или Пусто", - "es-es": "Falso o vacío", - "fr-fr": "Faux ou vide", - "uk-ua": "False або Empty", - "de-ch": "Falsch oder leer", - "pt-br": "Falso ou Vazio", + 'en-us': 'False or Empty', + 'ru-ru': 'Ложь или Пусто', + 'es-es': 'Falso o vacío', + 'fr-fr': 'Faux ou vide', + 'uk-ua': 'False або Empty', + 'de-ch': 'Falsch oder leer', + 'pt-br': 'Falso ou Vazio', }, between: { - "en-us": "Between", - "ru-ru": "Между", - "es-es": "Entre", - "fr-fr": "Entre", - "uk-ua": "Між", - "de-ch": "Zwischen", - "pt-br": "Entre", + 'en-us': 'Between', + 'ru-ru': 'Между', + 'es-es': 'Entre', + 'fr-fr': 'Entre', + 'uk-ua': 'Між', + 'de-ch': 'Zwischen', + 'pt-br': 'Entre', }, in: { - "en-us": "In", - "ru-ru": "В", - "es-es": "En", - "fr-fr": "Dans", - "uk-ua": "в", - "de-ch": "In", - "pt-br": "Em", + 'en-us': 'In', + 'ru-ru': 'В', + 'es-es': 'En', + 'fr-fr': 'Dans', + 'uk-ua': 'в', + 'de-ch': 'In', + 'pt-br': 'Em', }, inDescription: { - "en-us": "A comma-separated list of values", - "ru-ru": "Список значений, разделенных запятыми", - "es-es": "Una lista de valores separados por comas", - "fr-fr": "Une liste de valeurs séparées par des virgules", - "uk-ua": "Список значень, розділених комами", - "de-ch": "Eine durch Kommas getrennte Liste von Werten", - "pt-br": "Uma lista de valores separados por vírgulas", + 'en-us': 'A comma-separated list of values', + 'ru-ru': 'Список значений, разделенных запятыми', + 'es-es': 'Una lista de valores separados por comas', + 'fr-fr': 'Une liste de valeurs séparées par des virgules', + 'uk-ua': 'Список значень, розділених комами', + 'de-ch': 'Eine durch Kommas getrennte Liste von Werten', + 'pt-br': 'Uma lista de valores separados por vírgulas', }, contains: { - "en-us": "Contains", - "ru-ru": "Содержит", - "es-es": "Contiene", - "fr-fr": "Contient", - "uk-ua": "Містить", - "de-ch": "Enthält", - "pt-br": "Contém", + 'en-us': 'Contains', + 'ru-ru': 'Содержит', + 'es-es': 'Contiene', + 'fr-fr': 'Contient', + 'uk-ua': 'Містить', + 'de-ch': 'Enthält', + 'pt-br': 'Contém', }, empty: { - "en-us": "Empty", - "ru-ru": "Пустой", - "es-es": "Vacío", - "fr-fr": "Vide", - "uk-ua": "Порожній", - "de-ch": "Leer", - "pt-br": "Vazio", + 'en-us': 'Empty', + 'ru-ru': 'Пустой', + 'es-es': 'Vacío', + 'fr-fr': 'Vide', + 'uk-ua': 'Порожній', + 'de-ch': 'Leer', + 'pt-br': 'Vazio', }, and: { - "en-us": "and", - "ru-ru": "и", - "es-es": "y", - "fr-fr": "et", - "uk-ua": "і", - "de-ch": "Und", - "pt-br": "e", + 'en-us': 'and', + 'ru-ru': 'и', + 'es-es': 'y', + 'fr-fr': 'et', + 'uk-ua': 'і', + 'de-ch': 'Und', + 'pt-br': 'e', }, startsWith: { - "en-us": "Starts With", - "ru-ru": "Начинается с", - "es-es": "Comienza con", - "fr-fr": "Commence par", - "uk-ua": "Починається з", - "de-ch": "Beginnt mit", - "pt-br": "Começa com", + 'en-us': 'Starts With', + 'ru-ru': 'Начинается с', + 'es-es': 'Comienza con', + 'fr-fr': 'Commence par', + 'uk-ua': 'Починається з', + 'de-ch': 'Beginnt mit', + 'pt-br': 'Começa com', }, or: { - "en-us": "or", - "ru-ru": "или", - "es-es": "o", - "fr-fr": "ou", - "uk-ua": "або", - "de-ch": "oder", - "pt-br": "ou", + 'en-us': 'or', + 'ru-ru': 'или', + 'es-es': 'o', + 'fr-fr': 'ou', + 'uk-ua': 'або', + 'de-ch': 'oder', + 'pt-br': 'ou', }, yes: { - "en-us": "Yes", - "ru-ru": "Да", - "es-es": "Sí", - "fr-fr": "Oui", - "uk-ua": "Так", - "de-ch": "Ja", - "pt-br": "Sim", + 'en-us': 'Yes', + 'ru-ru': 'Да', + 'es-es': 'Sí', + 'fr-fr': 'Oui', + 'uk-ua': 'Так', + 'de-ch': 'Ja', + 'pt-br': 'Sim', }, queryResults: { - "en-us": "Query Results", - "ru-ru": "Результаты запроса", - "es-es": "Resultados de la consulta", - "fr-fr": "Résultats de la requête", - "uk-ua": "Результати запиту", - "de-ch": "Abfrageergebnisse", - "pt-br": "Resultados da consulta", + 'en-us': 'Query Results', + 'ru-ru': 'Результаты запроса', + 'es-es': 'Resultados de la consulta', + 'fr-fr': 'Résultats de la requête', + 'uk-ua': 'Результати запиту', + 'de-ch': 'Abfrageergebnisse', + 'pt-br': 'Resultados da consulta', }, browseInForms: { - "en-us": "Browse in Forms", - "ru-ru": "Просмотр в формах", - "es-es": "Navegar en formularios", - "fr-fr": "Parcourir les formulaires", - "uk-ua": "Перегляд у Формах", - "de-ch": "In Formularen stöbern", - "pt-br": "Navegar em Formulários", + 'en-us': 'Browse in Forms', + 'ru-ru': 'Просмотр в формах', + 'es-es': 'Navegar en formularios', + 'fr-fr': 'Parcourir les formulaires', + 'uk-ua': 'Перегляд у Формах', + 'de-ch': 'In Formularen stöbern', + 'pt-br': 'Navegar em Formulários', }, configureQueryTables: { - "en-us": "Configure visible query tables", - "ru-ru": "Настройте видимые таблицы запросов", - "es-es": "Configurar tablas de consulta visibles", - "fr-fr": "Configurer les tables de requête visibles", - "uk-ua": "Налаштувати видимі таблиці запитів", - "de-ch": "Konfigurieren sichtbarer Abfragetabellen", - "pt-br": "Configurar tabelas de consulta visíveis", + 'en-us': 'Configure visible query tables', + 'ru-ru': 'Настройте видимые таблицы запросов', + 'es-es': 'Configurar tablas de consulta visibles', + 'fr-fr': 'Configurer les tables de requête visibles', + 'uk-ua': 'Налаштувати видимі таблиці запитів', + 'de-ch': 'Konfigurieren sichtbarer Abfragetabellen', + 'pt-br': 'Configurar tabelas de consulta visíveis', }, exportQueryForDwca: { - "en-us": "Export query for DwCA definition", - "ru-ru": "Экспорт запроса на определение DwCA", - "es-es": "Consulta de exportación para la definición de DwCA", - "fr-fr": "Requête d'exportation pour la définition DwCA", - "uk-ua": "Експорт запиту для визначення DwCA", - "de-ch": "Exportabfrage für DwCA-Definition", - "pt-br": "Consulta de exportação para definição DwCA", + 'en-us': 'Export query for DwCA definition', + 'ru-ru': 'Экспорт запроса на определение DwCA', + 'es-es': 'Consulta de exportación para la definición de DwCA', + 'fr-fr': "Requête d'exportation pour la définition DwCA", + 'uk-ua': 'Експорт запиту для визначення DwCA', + 'de-ch': 'Exportabfrage für DwCA-Definition', + 'pt-br': 'Consulta de exportação para definição DwCA', }, exportQueryAsReport: { - "en-us": "Define report based on query", - "ru-ru": "Определить отчет на основе запроса", - "es-es": "Definir informe basado en consulta", - "fr-fr": "Définir un rapport basé sur une requête", - "uk-ua": "Визначити звіт на основі запиту", - "de-ch": "Definieren Sie den Bericht basierend auf der Abfrage", - "pt-br": "Definir relatório com base na consulta", + 'en-us': 'Define report based on query', + 'ru-ru': 'Определить отчет на основе запроса', + 'es-es': 'Definir informe basado en consulta', + 'fr-fr': 'Définir un rapport basé sur une requête', + 'uk-ua': 'Визначити звіт на основі запиту', + 'de-ch': 'Definieren Sie den Bericht basierend auf der Abfrage', + 'pt-br': 'Definir relatório com base na consulta', }, exportQueryAsLabel: { - "en-us": "Define label based on query", - "ru-ru": "Определить метку на основе запроса", - "es-es": "Definir etiqueta según consulta", - "fr-fr": "Définir l'étiquette en fonction de la requête", - "uk-ua": "Визначте мітку на основі запиту", - "de-ch": "Definieren Sie das Label basierend auf der Abfrage", - "pt-br": "Definir rótulo com base na consulta", + 'en-us': 'Define label based on query', + 'ru-ru': 'Определить метку на основе запроса', + 'es-es': 'Definir etiqueta según consulta', + 'fr-fr': "Définir l'étiquette en fonction de la requête", + 'uk-ua': 'Визначте мітку на основі запиту', + 'de-ch': 'Definieren Sie das Label basierend auf der Abfrage', + 'pt-br': 'Definir rótulo com base na consulta', }, treeMerge: { - comment: "Audit Log Action Type", - "en-us": "Tree Merge", - "ru-ru": "Слияние деревьев", - "es-es": "Fusión de árboles", - "fr-fr": "Fusion d'arbres", - "uk-ua": "Об'єднання дерев", - "de-ch": "Baumzusammenführung", - "pt-br": "Mesclagem de Árvores", + comment: 'Audit Log Action Type', + 'en-us': 'Tree Merge', + 'ru-ru': 'Слияние деревьев', + 'es-es': 'Fusión de árboles', + 'fr-fr': "Fusion d'arbres", + 'uk-ua': "Об'єднання дерев", + 'de-ch': 'Baumzusammenführung', + 'pt-br': 'Mesclagem de Árvores', }, treeMove: { - comment: "Audit Log Action Type", - "en-us": "Tree Move", - "ru-ru": "Перемещение дерева", - "es-es": "Movimiento de árbol", - "fr-fr": "Déplacement d'arbre", - "uk-ua": "Переміщення дерева", - "de-ch": "Baum verschieben", - "pt-br": "Movimentação de árvores", + comment: 'Audit Log Action Type', + 'en-us': 'Tree Move', + 'ru-ru': 'Перемещение дерева', + 'es-es': 'Movimiento de árbol', + 'fr-fr': "Déplacement d'arbre", + 'uk-ua': 'Переміщення дерева', + 'de-ch': 'Baum verschieben', + 'pt-br': 'Movimentação de árvores', }, treeSynonymize: { - comment: "Audit Log Action Type", - "en-us": "Tree Synonymize", - "ru-ru": "Дерево Синонимизировать", - "es-es": "Árbol Sinónimos", - "fr-fr": "Synonyme d'arbre", - "uk-ua": "Синонімізувати дерево", - "de-ch": "Baum synonymisieren", - "pt-br": "Árvore Sinonímia", + comment: 'Audit Log Action Type', + 'en-us': 'Tree Synonymize', + 'ru-ru': 'Дерево Синонимизировать', + 'es-es': 'Árbol Sinónimos', + 'fr-fr': "Synonyme d'arbre", + 'uk-ua': 'Синонімізувати дерево', + 'de-ch': 'Baum synonymisieren', + 'pt-br': 'Árvore Sinonímia', }, treeDesynonymize: { - comment: "Audit Log Action Type", - "en-us": "Tree Desynonymize", - "ru-ru": "Дерево Десиномизирует", - "es-es": "Desinonimizar árboles", - "fr-fr": "Arbre désynonymisé", - "uk-ua": "Десинонімізація дерева", - "de-ch": "Baum-Desynonymisierung", - "pt-br": "Árvore Dessinonimizar", + comment: 'Audit Log Action Type', + 'en-us': 'Tree Desynonymize', + 'ru-ru': 'Дерево Десиномизирует', + 'es-es': 'Desinonimizar árboles', + 'fr-fr': 'Arbre désynonymisé', + 'uk-ua': 'Десинонімізація дерева', + 'de-ch': 'Baum-Desynonymisierung', + 'pt-br': 'Árvore Dessinonimizar', }, treeBulkMove: { - comment: "Audit Log Action Type", - "en-us": "Tree Bulk Move", - "de-ch": "Massenverschiebung von Bäumen", - "es-es": "Movimiento masivo de árboles", - "fr-fr": "Déplacement d'arbres en vrac", - "ru-ru": "Массовая перевозка деревьев", - "uk-ua": "Масове переміщення дерева", - "pt-br": "Mudança de árvores em massa", + comment: 'Audit Log Action Type', + 'en-us': 'Tree Bulk Move', + 'de-ch': 'Massenverschiebung von Bäumen', + 'es-es': 'Movimiento masivo de árboles', + 'fr-fr': "Déplacement d'arbres en vrac", + 'ru-ru': 'Массовая перевозка деревьев', + 'uk-ua': 'Масове переміщення дерева', + 'pt-br': 'Mudança de árvores em massa', }, tooLongErrorMessage: { - "en-us": - "Field value is too long. Max allowed length is {maxLength:number|formatted}", - "ru-ru": - "Значение поля слишком длинное. Максимально допустимая длина {maxLength:number|formatted}", - "es-es": - "El valor del campo es demasiado largo. La longitud máxima permitida es {maxLength:number|formatted}.", - "fr-fr": - "La valeur du champ est trop longue. La longueur maximale autorisée est {maxLength:number|formatted}.", - "uk-ua": - "Значення поля задовге. Максимальна дозволена довжина {maxLength:number|formatted}", - "de-ch": - "Der Feldwert ist zu lang. Die maximal zulässige Länge beträgt {maxLength:number|formatted}.", - "pt-br": - "O valor do campo é muito longo. O comprimento máximo permitido é {maxLength:number|formatted}", + 'en-us': + 'Field value is too long. Max allowed length is {maxLength:number|formatted}', + 'ru-ru': + 'Значение поля слишком длинное. Максимально допустимая длина {maxLength:number|formatted}', + 'es-es': + 'El valor del campo es demasiado largo. La longitud máxima permitida es {maxLength:number|formatted}.', + 'fr-fr': + 'La valeur du champ est trop longue. La longueur maximale autorisée est {maxLength:number|formatted}.', + 'uk-ua': + 'Значення поля задовге. Максимальна дозволена довжина {maxLength:number|formatted}', + 'de-ch': + 'Der Feldwert ist zu lang. Die maximal zulässige Länge beträgt {maxLength:number|formatted}.', + 'pt-br': + 'O valor do campo é muito longo. O comprimento máximo permitido é {maxLength:number|formatted}', }, future: { - "en-us": "in the future", - "de-ch": "in der Zukunft", - "es-es": "en el futuro", - "fr-fr": "à l'avenir", - "ru-ru": "в будущем", - "uk-ua": "в майбутньому", - "pt-br": "no futuro", + 'en-us': 'in the future', + 'de-ch': 'in der Zukunft', + 'es-es': 'en el futuro', + 'fr-fr': "à l'avenir", + 'ru-ru': 'в будущем', + 'uk-ua': 'в майбутньому', + 'pt-br': 'no futuro', }, past: { - "en-us": "in the past", - "de-ch": "in der Vergangenheit", - "es-es": "en el pasado", - "fr-fr": "dans le passé", - "ru-ru": "в прошлом", - "uk-ua": "в минулому", - "pt-br": "no passado", + 'en-us': 'in the past', + 'de-ch': 'in der Vergangenheit', + 'es-es': 'en el pasado', + 'fr-fr': 'dans le passé', + 'ru-ru': 'в прошлом', + 'uk-ua': 'в минулому', + 'pt-br': 'no passado', }, day: { - "en-us": "Days", - "es-es": "Días", - "fr-fr": "Jours", - "ru-ru": "Дни", - "uk-ua": "днів", - "de-ch": "Tage", - "pt-br": "Dias", + 'en-us': 'Days', + 'es-es': 'Días', + 'fr-fr': 'Jours', + 'ru-ru': 'Дни', + 'uk-ua': 'днів', + 'de-ch': 'Tage', + 'pt-br': 'Dias', }, week: { - "en-us": "Weeks", - "de-ch": "Wochen", - "es-es": "Semanas", - "fr-fr": "Semaines", - "ru-ru": "Недели", - "uk-ua": "тижнів", - "pt-br": "Semanas", + 'en-us': 'Weeks', + 'de-ch': 'Wochen', + 'es-es': 'Semanas', + 'fr-fr': 'Semaines', + 'ru-ru': 'Недели', + 'uk-ua': 'тижнів', + 'pt-br': 'Semanas', }, month: { - "en-us": "Months", - "de-ch": "Monate", - "es-es": "Meses", - "fr-fr": "Mois", - "ru-ru": "Месяцы", - "uk-ua": "Місяці", - "pt-br": "Meses", + 'en-us': 'Months', + 'de-ch': 'Monate', + 'es-es': 'Meses', + 'fr-fr': 'Mois', + 'ru-ru': 'Месяцы', + 'uk-ua': 'Місяці', + 'pt-br': 'Meses', }, year: { - "en-us": "Years", - "de-ch": "Jahre", - "es-es": "Años", - "fr-fr": "Années", - "ru-ru": "Годы", - "uk-ua": "років", - "pt-br": "Anos", + 'en-us': 'Years', + 'de-ch': 'Jahre', + 'es-es': 'Años', + 'fr-fr': 'Années', + 'ru-ru': 'Годы', + 'uk-ua': 'років', + 'pt-br': 'Anos', }, relativeDate: { comment: ` Used in query builder lines, will be shown as a number followed by a period of time (ie: day, month or week) then a direction (past or future) `, - "en-us": - "{size:number} {type:string} {direction:string}", - "de-ch": - "{size:number} {type:string} {direction:string}", - "es-es": - "{size:number} {type:string} {direction:string}", - "fr-fr": - "{size:number} {type:string} {direction:string}", - "ru-ru": - "{size:number} {type:string} {direction:string}", - "uk-ua": - "{size:number} {type:string} {direction:string}", - "pt-br": - "{size:number} {type:string} {direction:string}", + 'en-us': + '{size:number} {type:string} {direction:string}', + 'de-ch': + '{size:number} {type:string} {direction:string}', + 'es-es': + '{size:number} {type:string} {direction:string}', + 'fr-fr': + '{size:number} {type:string} {direction:string}', + 'ru-ru': + '{size:number} {type:string} {direction:string}', + 'uk-ua': + '{size:number} {type:string} {direction:string}', + 'pt-br': + '{size:number} {type:string} {direction:string}', }, importHiddenFields: { - "en-us": "The following fields are hidden in the query you imported:", - "es-es": "Los siguientes campos están ocultos en la consulta que importó:", - "fr-fr": - "Les champs suivants sont masqués dans la requête que vous avez importée :", - "ru-ru": "В импортированном вами запросе скрыты следующие поля:", - "uk-ua": "В імпортованому вами запиті приховано такі поля:", - "de-ch": - "Die folgenden Felder sind in der von Ihnen importierten Abfrage ausgeblendet:", - "pt-br": "Os seguintes campos estão ocultos na consulta que você importou:", + 'en-us': 'The following fields are hidden in the query you imported:', + 'es-es': 'Los siguientes campos están ocultos en la consulta que importó:', + 'fr-fr': + 'Les champs suivants sont masqués dans la requête que vous avez importée :', + 'ru-ru': 'В импортированном вами запросе скрыты следующие поля:', + 'uk-ua': 'В імпортованому вами запиті приховано такі поля:', + 'de-ch': + 'Die folgenden Felder sind in der von Ihnen importierten Abfrage ausgeblendet:', + 'pt-br': 'Os seguintes campos estão ocultos na consulta que você importou:', }, importNoReadPermission: { - "en-us": - "The query you imported contains tables you do not have read access to:", - "es-es": - "La consulta que importó contiene tablas a las que no tiene acceso de lectura:", - "fr-fr": - "La requête que vous avez importée contient des tables auxquelles vous n’avez pas accès en lecture :", - "ru-ru": - "Импортированный вами запрос содержит таблицы, к которым у вас нет прав на чтение:", - "uk-ua": - "Запит, який ви імпортували, містить таблиці, до яких ви не маєте доступу на читання:", - "de-ch": - "Die von Ihnen importierte Abfrage enthält Tabellen, auf die Sie keinen Lesezugriff haben:", - "pt-br": - "A consulta que você importou contém tabelas às quais você não tem acesso de leitura:", + 'en-us': + 'The query you imported contains tables you do not have read access to:', + 'es-es': + 'La consulta que importó contiene tablas a las que no tiene acceso de lectura:', + 'fr-fr': + 'La requête que vous avez importée contient des tables auxquelles vous n’avez pas accès en lecture :', + 'ru-ru': + 'Импортированный вами запрос содержит таблицы, к которым у вас нет прав на чтение:', + 'uk-ua': + 'Запит, який ви імпортували, містить таблиці, до яких ви не маєте доступу на читання:', + 'de-ch': + 'Die von Ihnen importierte Abfrage enthält Tabellen, auf die Sie keinen Lesezugriff haben:', + 'pt-br': + 'A consulta que você importou contém tabelas às quais você não tem acesso de leitura:', }, noReadPermission: { - "en-us": "No read permission", - "es-es": "Sin permiso de lectura", - "fr-fr": "Aucune autorisation de lecture", - "ru-ru": "Нет разрешения на чтение", - "uk-ua": "Немає дозволу на читання", - "de-ch": "Keine Leseberechtigung", - "pt-br": "Sem permissão de leitura", + 'en-us': 'No read permission', + 'es-es': 'Sin permiso de lectura', + 'fr-fr': 'Aucune autorisation de lecture', + 'ru-ru': 'Нет разрешения на чтение', + 'uk-ua': 'Немає дозволу на читання', + 'de-ch': 'Keine Leseberechtigung', + 'pt-br': 'Sem permissão de leitura', }, switchToRelative: { - "en-us": "Switch to relative", - "de-ch": "Wechseln zu relativ", - "es-es": "Cambiar a relativo", - "fr-fr": "Passer au relatif", - "ru-ru": "Переключиться на относительный", - "uk-ua": "Перейти до відносного", - "pt-br": "Mudar para relativo", + 'en-us': 'Switch to relative', + 'de-ch': 'Wechseln zu relativ', + 'es-es': 'Cambiar a relativo', + 'fr-fr': 'Passer au relatif', + 'ru-ru': 'Переключиться на относительный', + 'uk-ua': 'Перейти до відносного', + 'pt-br': 'Mudar para relativo', }, switchToAbsolute: { - "en-us": "Switch to absolute", - "de-ch": "Wechseln Sie zu absolut", - "es-es": "Cambiar a absoluto", - "fr-fr": "Passer à l'absolu", - "ru-ru": "Переключиться на абсолютный", - "uk-ua": "Перейти до відносного", - "pt-br": "Mudar para absoluto", + 'en-us': 'Switch to absolute', + 'de-ch': 'Wechseln Sie zu absolut', + 'es-es': 'Cambiar a absoluto', + 'fr-fr': "Passer à l'absolu", + 'ru-ru': 'Переключиться на абсолютный', + 'uk-ua': 'Перейти до відносного', + 'pt-br': 'Mudar para absoluto', }, scrollToEditor: { - "en-us": "Scroll to editor", - "de-ch": "Zum Editor scrollen", - "es-es": "Desplazarse al editor", - "uk-ua": "Перейдіть до редактора", - "fr-fr": "Faites défiler jusqu'à l'éditeur", - "ru-ru": "Прокрутите до редактора", - "pt-br": "Vá até o editor", + 'en-us': 'Scroll to editor', + 'de-ch': 'Zum Editor scrollen', + 'es-es': 'Desplazarse al editor', + 'uk-ua': 'Перейдіть до редактора', + 'fr-fr': "Faites défiler jusqu'à l'éditeur", + 'ru-ru': 'Прокрутите до редактора', + 'pt-br': 'Vá até o editor', }, viewRecords: { - "en-us": "View records", - "de-ch": "Datensätze anzeigen", - "es-es": "Ver registros", - "fr-fr": "Afficher les enregistrements", - "ru-ru": "Посмотреть записи", - "uk-ua": "Переглянути записи", - "pt-br": "Ver registros", + 'en-us': 'View records', + 'de-ch': 'Datensätze anzeigen', + 'es-es': 'Ver registros', + 'fr-fr': 'Afficher les enregistrements', + 'ru-ru': 'Посмотреть записи', + 'uk-ua': 'Переглянути записи', + 'pt-br': 'Ver registros', }, chooseFormatter: { - "en-us": "Choose formatter", - "de-ch": "Formatierer auswählen", - "es-es": "Elija el formateador", - "fr-fr": "Choisir le formateur", - "ru-ru": "Выбрать форматировщик", - "uk-ua": "Виберіть форматер", - "pt-br": "Escolha o formatador", + 'en-us': 'Choose formatter', + 'de-ch': 'Formatierer auswählen', + 'es-es': 'Elija el formateador', + 'fr-fr': 'Choisir le formateur', + 'ru-ru': 'Выбрать форматировщик', + 'uk-ua': 'Виберіть форматер', + 'pt-br': 'Escolha o formatador', }, range: { - "en-us": "Range", - "de-ch": "Reichweite", - "es-es": "Rango", - "fr-fr": "Gamme", - "pt-br": "Faixa", - "ru-ru": "Диапазон", - "uk-ua": "Діапазон", + 'en-us': 'Range', + 'de-ch': 'Reichweite', + 'es-es': 'Rango', + 'fr-fr': 'Gamme', + 'pt-br': 'Faixa', + 'ru-ru': 'Диапазон', + 'uk-ua': 'Діапазон', }, strict: { - "en-us": "Strict", - "de-ch": "Strikt", - "es-es": "Estricto", - "fr-fr": "Strict", - "pt-br": "Estrito", - "ru-ru": "Строгий", - "uk-ua": "Суворий", + 'en-us': 'Strict', + 'de-ch': 'Strikt', + 'es-es': 'Estricto', + 'fr-fr': 'Strict', + 'pt-br': 'Estrito', + 'ru-ru': 'Строгий', + 'uk-ua': 'Суворий', }, nonStrict: { - "en-us": "Non strict", - "de-ch": "Nicht streng", - "es-es": "No estricto", - "fr-fr": "Non strict", - "pt-br": "Não rigoroso", - "ru-ru": "Не строгий", - "uk-ua": "Не суворий", + 'en-us': 'Non strict', + 'de-ch': 'Nicht streng', + 'es-es': 'No estricto', + 'fr-fr': 'Non strict', + 'pt-br': 'Não rigoroso', + 'ru-ru': 'Не строгий', + 'uk-ua': 'Не суворий', }, catalogNumberInheritance: { - "en-us": "Catalog Number Inheritance", - "de-ch": "Katalognummernvererbung", - "es-es": "Herencia del número de catálogo", - "fr-fr": "Héritage du numéro de catalogue", - "pt-br": "Herança de Número de Catálogo", - "ru-ru": "Наследование каталожного номера", - "uk-ua": "Успадкування каталожних номерів", + 'en-us': 'Catalog Number Inheritance', + 'de-ch': 'Katalognummernvererbung', + 'es-es': 'Herencia del número de catálogo', + 'fr-fr': 'Héritage du numéro de catalogue', + 'pt-br': 'Herança de Número de Catálogo', + 'ru-ru': 'Наследование каталожного номера', + 'uk-ua': 'Успадкування каталожних номерів', }, catalogNumberParentCOInheritance: { - "en-us": "Catalog Number Parent Collection Object Inheritance", - "de-ch": "Katalognummer Übergeordnete Sammlung Objektvererbung", - "es-es": - "Herencia de objetos de la colección principal del número de catálogo", - "fr-fr": "Numéro de catalogue Collection parente Héritage d'objet", - "pt-br": "Herança de objeto de coleção pai de número de catálogo", - "ru-ru": "Номер каталога Родительская коллекция Объект Наследование", - "uk-ua": "Успадкування батьківського об'єкта колекції за номером каталогу", + 'en-us': 'Catalog Number Parent Collection Object Inheritance', + 'de-ch': 'Katalognummer Übergeordnete Sammlung Objektvererbung', + 'es-es': + 'Herencia de objetos de la colección principal del número de catálogo', + 'fr-fr': "Numéro de catalogue Collection parente Héritage d'objet", + 'pt-br': 'Herança de objeto de coleção pai de número de catálogo', + 'ru-ru': 'Номер каталога Родительская коллекция Объект Наследование', + 'uk-ua': "Успадкування батьківського об'єкта колекції за номером каталогу", }, formatInputAs: { comment: ` @@ -955,33 +955,33 @@ export const queryText = createDictionary({ Example: Format As: Ichthyology Example: Format As: Rock, Mineral `, - "en-us": "Format As: {commaSeparatedFormats:string}", - "de-ch": "Formatieren als: {commaSeparatedFormats:string}", - "es-es": "Formato como: {commaSeparatedFormats:string}", - "fr-fr": "Formater comme : {commaSeparatedFormats:string}", - "pt-br": "Formato como: {commaSeparatedFormats:string}", - "ru-ru": "Форматировать как: {commaSeparatedFormats:string}", - "uk-ua": "Форматувати як: {commaSeparatedFormats:string}", + 'en-us': 'Format As: {commaSeparatedFormats:string}', + 'de-ch': 'Formatieren als: {commaSeparatedFormats:string}', + 'es-es': 'Formato como: {commaSeparatedFormats:string}', + 'fr-fr': 'Formater comme : {commaSeparatedFormats:string}', + 'pt-br': 'Formato como: {commaSeparatedFormats:string}', + 'ru-ru': 'Форматировать как: {commaSeparatedFormats:string}', + 'uk-ua': 'Форматувати як: {commaSeparatedFormats:string}', }, unsavedChangesInQuery: { - "en-us": "Query has unsaved changes", - "de-ch": "Die Abfrage enthält nicht gespeicherte Änderungen", - "es-es": "La consulta tiene cambios sin guardar", - "fr-fr": "La requête comporte des modifications non enregistrées", - "pt-br": "A consulta possui alterações não salvas", - "ru-ru": "Запрос имеет несохраненные изменения", - "uk-ua": "Запит містить незбережені зміни", + 'en-us': 'Query has unsaved changes', + 'de-ch': 'Die Abfrage enthält nicht gespeicherte Änderungen', + 'es-es': 'La consulta tiene cambios sin guardar', + 'fr-fr': 'La requête comporte des modifications non enregistrées', + 'pt-br': 'A consulta possui alterações não salvas', + 'ru-ru': 'Запрос имеет несохраненные изменения', + 'uk-ua': 'Запит містить незбережені зміни', }, unsavedChangesInQueryDescription: { - "en-us": "Please save the query before running Batch Edit", - "de-ch": - "Bitte speichern Sie die Abfrage, bevor Sie die Stapelbearbeitung ausführen", - "es-es": "Guarde la consulta antes de ejecutar la edición por lotes", - "fr-fr": + 'en-us': 'Please save the query before running Batch Edit', + 'de-ch': + 'Bitte speichern Sie die Abfrage, bevor Sie die Stapelbearbeitung ausführen', + 'es-es': 'Guarde la consulta antes de ejecutar la edición por lotes', + 'fr-fr': "Veuillez enregistrer la requête avant d'exécuter l'édition par lots", - "pt-br": "Salve a consulta antes de executar a edição em lote", - "ru-ru": - "Пожалуйста, сохраните запрос перед запуском пакетного редактирования.", - "uk-ua": "Будь ласка, збережіть запит перед запуском пакетного редагування", + 'pt-br': 'Salve a consulta antes de executar a edição em lote', + 'ru-ru': + 'Пожалуйста, сохраните запрос перед запуском пакетного редактирования.', + 'uk-ua': 'Будь ласка, збережіть запит перед запуском пакетного редагування', }, } as const); diff --git a/specifyweb/frontend/js_src/lib/localization/schema.ts b/specifyweb/frontend/js_src/lib/localization/schema.ts index 6dccacc9925..f07c5e6de3f 100644 --- a/specifyweb/frontend/js_src/lib/localization/schema.ts +++ b/specifyweb/frontend/js_src/lib/localization/schema.ts @@ -4,549 +4,549 @@ * @module */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const schemaText = createDictionary({ table: { - "en-us": "Table", - "ru-ru": "Стол", - "es-es": "Mesa", - "fr-fr": "Tableau", - "uk-ua": "Таблиця", - "de-ch": "Tabelle", - "pt-br": "Mesa", + 'en-us': 'Table', + 'ru-ru': 'Стол', + 'es-es': 'Mesa', + 'fr-fr': 'Tableau', + 'uk-ua': 'Таблиця', + 'de-ch': 'Tabelle', + 'pt-br': 'Mesa', }, tables: { - "en-us": "Tables", - "ru-ru": "Таблицы", - "es-es": "Tablas", - "fr-fr": "Tableaux", - "uk-ua": "Столи", - "de-ch": "Tabellen", - "pt-br": "Tabelas", + 'en-us': 'Tables', + 'ru-ru': 'Таблицы', + 'es-es': 'Tablas', + 'fr-fr': 'Tableaux', + 'uk-ua': 'Столи', + 'de-ch': 'Tabellen', + 'pt-br': 'Tabelas', }, tableName: { - "en-us": "Table Name", - "ru-ru": "Название таблицы", - "fr-fr": "Nom de la table", - "uk-ua": "Назва таблиці", - "de-ch": "Tabellennamen", - "es-es": "Nombre de la tabla", - "pt-br": "Nome da tabela", + 'en-us': 'Table Name', + 'ru-ru': 'Название таблицы', + 'fr-fr': 'Nom de la table', + 'uk-ua': 'Назва таблиці', + 'de-ch': 'Tabellennamen', + 'es-es': 'Nombre de la tabla', + 'pt-br': 'Nome da tabela', }, withoutTable: { - "en-us": "Without Table", - "de-ch": "Ohne Tisch", - "es-es": "Sin mesa", - "fr-fr": "Sans table", - "ru-ru": "Без таблицы", - "uk-ua": "Без столу", - "pt-br": "Sem mesa", + 'en-us': 'Without Table', + 'de-ch': 'Ohne Tisch', + 'es-es': 'Sin mesa', + 'fr-fr': 'Sans table', + 'ru-ru': 'Без таблицы', + 'uk-ua': 'Без столу', + 'pt-br': 'Sem mesa', }, schemaConfig: { - "en-us": "Schema Config", - "ru-ru": "Конфигурация схемы", - "es-es": "Configuración del esquema", - "fr-fr": "Configuration du schéma", - "uk-ua": "Конфігурація схеми", - "de-ch": "Schema konfigurieren", - "pt-br": "Configuração do esquema", + 'en-us': 'Schema Config', + 'ru-ru': 'Конфигурация схемы', + 'es-es': 'Configuración del esquema', + 'fr-fr': 'Configuration du schéma', + 'uk-ua': 'Конфігурація схеми', + 'de-ch': 'Schema konfigurieren', + 'pt-br': 'Configuração do esquema', }, unsavedSchemaUnloadProtect: { - "en-us": "Schema changes have not been saved", - "ru-ru": "Изменения схемы не были сохранены", - "es-es": "Los cambios de esquema no se han guardado", - "fr-fr": "Les modifications du schéma n'ont pas été enregistrées", - "uk-ua": "Зміни схеми не збережено", - "de-ch": "Schema Änderungen wurden nicht gespeichert", - "pt-br": "As alterações de esquema não foram salvas", + 'en-us': 'Schema changes have not been saved', + 'ru-ru': 'Изменения схемы не были сохранены', + 'es-es': 'Los cambios de esquema no se han guardado', + 'fr-fr': "Les modifications du schéma n'ont pas été enregistrées", + 'uk-ua': 'Зміни схеми не збережено', + 'de-ch': 'Schema Änderungen wurden nicht gespeichert', + 'pt-br': 'As alterações de esquema não foram salvas', }, changeBaseTable: { - "en-us": "Change Base Table", - "ru-ru": "Изменить базовую таблицу", - "es-es": "Cambiar la tabla base", - "fr-fr": "Changer la table de base", - "uk-ua": "Змінити базову таблицю", - "de-ch": "Basis-Tabelle ändern", - "pt-br": "Alterar tabela base", + 'en-us': 'Change Base Table', + 'ru-ru': 'Изменить базовую таблицу', + 'es-es': 'Cambiar la tabla base', + 'fr-fr': 'Changer la table de base', + 'uk-ua': 'Змінити базову таблицю', + 'de-ch': 'Basis-Tabelle ändern', + 'pt-br': 'Alterar tabela base', }, field: { - "en-us": "Field", - "ru-ru": "Поле", - "es-es": "Campo", - "fr-fr": "Champ", - "uk-ua": "Поле", - "de-ch": "Feld", - "pt-br": "Campo", + 'en-us': 'Field', + 'ru-ru': 'Поле', + 'es-es': 'Campo', + 'fr-fr': 'Champ', + 'uk-ua': 'Поле', + 'de-ch': 'Feld', + 'pt-br': 'Campo', }, fields: { - "en-us": "Fields", - "ru-ru": "Поля", - "es-es": "Campos", - "fr-fr": "Champs", - "uk-ua": "Поля", - "de-ch": "Felder", - "pt-br": "Campos", + 'en-us': 'Fields', + 'ru-ru': 'Поля', + 'es-es': 'Campos', + 'fr-fr': 'Champs', + 'uk-ua': 'Поля', + 'de-ch': 'Felder', + 'pt-br': 'Campos', }, relationships: { - "en-us": "Relationships", - "ru-ru": "Отношения", - "es-es": "Relaciones", - "fr-fr": "Relations", - "uk-ua": "Стосунки", - "de-ch": "Beziehungen", - "pt-br": "Relacionamentos", + 'en-us': 'Relationships', + 'ru-ru': 'Отношения', + 'es-es': 'Relaciones', + 'fr-fr': 'Relations', + 'uk-ua': 'Стосунки', + 'de-ch': 'Beziehungen', + 'pt-br': 'Relacionamentos', }, database: { - "en-us": "Database", - "de-ch": "Datenbank", - "fr-fr": "Base de données", - "ru-ru": "База данных", - "uk-ua": "База даних", - "es-es": "Base de datos", - "pt-br": "Banco de dados", + 'en-us': 'Database', + 'de-ch': 'Datenbank', + 'fr-fr': 'Base de données', + 'ru-ru': 'База данных', + 'uk-ua': 'База даних', + 'es-es': 'Base de datos', + 'pt-br': 'Banco de dados', }, setScope: { - "en-us": "Set Scope", - "de-ch": "Umfang festlegen", - "es-es": "Establecer alcance", - "fr-fr": "Définir la portée", - "ru-ru": "Установить область действия", - "uk-ua": "Встановити область дії", - "pt-br": "Definir escopo", + 'en-us': 'Set Scope', + 'de-ch': 'Umfang festlegen', + 'es-es': 'Establecer alcance', + 'fr-fr': 'Définir la portée', + 'ru-ru': 'Установить область действия', + 'uk-ua': 'Встановити область дії', + 'pt-br': 'Definir escopo', }, caption: { - "en-us": "Caption", - "ru-ru": "Подпись", - "es-es": "Subtítulo", - "fr-fr": "Légende", - "uk-ua": "Підпис", - "de-ch": "Beschriftung", - "pt-br": "Rubrica", + 'en-us': 'Caption', + 'ru-ru': 'Подпись', + 'es-es': 'Subtítulo', + 'fr-fr': 'Légende', + 'uk-ua': 'Підпис', + 'de-ch': 'Beschriftung', + 'pt-br': 'Rubrica', }, description: { - "en-us": "Description", - "ru-ru": "Описание", - "es-es": "Descripción", - "fr-fr": "Description", - "uk-ua": "Опис", - "de-ch": "Beschreibung", - "pt-br": "Descrição", + 'en-us': 'Description', + 'ru-ru': 'Описание', + 'es-es': 'Descripción', + 'fr-fr': 'Description', + 'uk-ua': 'Опис', + 'de-ch': 'Beschreibung', + 'pt-br': 'Descrição', }, hideTable: { - "en-us": "Hide Table", - "ru-ru": "Скрыть таблицу", - "es-es": "Ocultar tabla", - "fr-fr": "Masquer le tableau", - "uk-ua": "Приховати таблицю", - "de-ch": "Tabelle verbergen", - "pt-br": "Ocultar tabela", + 'en-us': 'Hide Table', + 'ru-ru': 'Скрыть таблицу', + 'es-es': 'Ocultar tabla', + 'fr-fr': 'Masquer le tableau', + 'uk-ua': 'Приховати таблицю', + 'de-ch': 'Tabelle verbergen', + 'pt-br': 'Ocultar tabela', }, hideField: { - "en-us": "Hide Field", - "ru-ru": "Скрыть поле", - "es-es": "Ocultar campo", - "fr-fr": "Masquer le champ", - "uk-ua": "Приховати поле", - "de-ch": "Feld verbergen", - "pt-br": "Ocultar campo", + 'en-us': 'Hide Field', + 'ru-ru': 'Скрыть поле', + 'es-es': 'Ocultar campo', + 'fr-fr': 'Masquer le champ', + 'uk-ua': 'Приховати поле', + 'de-ch': 'Feld verbergen', + 'pt-br': 'Ocultar campo', }, tableFormat: { - "en-us": "Table Format", - "ru-ru": "Формат таблицы", - "es-es": "Formato de tabla", - "fr-fr": "Format de tableau", - "uk-ua": "Формат таблиці", - "de-ch": "Tabellenformat", - "pt-br": "Formato de tabela", + 'en-us': 'Table Format', + 'ru-ru': 'Формат таблицы', + 'es-es': 'Formato de tabla', + 'fr-fr': 'Format de tableau', + 'uk-ua': 'Формат таблиці', + 'de-ch': 'Tabellenformat', + 'pt-br': 'Formato de tabela', }, tableAggregation: { - "en-us": "Table Aggregation", - "ru-ru": "Агрегация таблиц", - "es-es": "Agregación de tablas", - "fr-fr": "Agrégation de tables", - "uk-ua": "Агрегація таблиць", - "de-ch": "Tabellenaggregation", - "pt-br": "Agregação de tabelas", + 'en-us': 'Table Aggregation', + 'ru-ru': 'Агрегация таблиц', + 'es-es': 'Agregación de tablas', + 'fr-fr': 'Agrégation de tables', + 'uk-ua': 'Агрегація таблиць', + 'de-ch': 'Tabellenaggregation', + 'pt-br': 'Agregação de tabelas', }, oneToOne: { - "en-us": "One-to-one", - "ru-ru": "Один на один", - "es-es": "Cara a cara", - "fr-fr": "Un à un", - "uk-ua": "Один на один", - "de-ch": "Eins zu eins", - "pt-br": "Um para um", + 'en-us': 'One-to-one', + 'ru-ru': 'Один на один', + 'es-es': 'Cara a cara', + 'fr-fr': 'Un à un', + 'uk-ua': 'Один на один', + 'de-ch': 'Eins zu eins', + 'pt-br': 'Um para um', }, oneToMany: { - "en-us": "One-to-many", - "ru-ru": "Один-ко-многим", - "es-es": "Uno a muchos", - "fr-fr": "Un-à-plusieurs", - "uk-ua": "Один до багатьох", - "de-ch": "Eins zu vielen", - "pt-br": "Um para muitos", + 'en-us': 'One-to-many', + 'ru-ru': 'Один-ко-многим', + 'es-es': 'Uno a muchos', + 'fr-fr': 'Un-à-plusieurs', + 'uk-ua': 'Один до багатьох', + 'de-ch': 'Eins zu vielen', + 'pt-br': 'Um para muitos', }, manyToOne: { - "en-us": "Many-to-one", - "ru-ru": "Многие-к-одному", - "es-es": "Muchos a uno", - "fr-fr": "Plusieurs à un", - "uk-ua": "Багато до одного", - "de-ch": "Viele zu eins", - "pt-br": "Muitos para um", + 'en-us': 'Many-to-one', + 'ru-ru': 'Многие-к-одному', + 'es-es': 'Muchos a uno', + 'fr-fr': 'Plusieurs à un', + 'uk-ua': 'Багато до одного', + 'de-ch': 'Viele zu eins', + 'pt-br': 'Muitos para um', }, manyToMany: { - "en-us": "many-to-many", - "ru-ru": "многие-ко-многим", - "es-es": "de muchos a muchos", - "fr-fr": "plusieurs à plusieurs", - "uk-ua": "багато-до-багатьох", - "de-ch": "Viele zu viele", - "pt-br": "muitos para muitos", + 'en-us': 'many-to-many', + 'ru-ru': 'многие-ко-многим', + 'es-es': 'de muchos a muchos', + 'fr-fr': 'plusieurs à plusieurs', + 'uk-ua': 'багато-до-багатьох', + 'de-ch': 'Viele zu viele', + 'pt-br': 'muitos para muitos', }, fieldLength: { - "en-us": "Length", - "es-es": "Longitud", - "fr-fr": "Longueur", - "uk-ua": "Довжина", - "de-ch": "Länge", - "ru-ru": "Длина", - "pt-br": "Comprimento", + 'en-us': 'Length', + 'es-es': 'Longitud', + 'fr-fr': 'Longueur', + 'uk-ua': 'Довжина', + 'de-ch': 'Länge', + 'ru-ru': 'Длина', + 'pt-br': 'Comprimento', }, readOnly: { - "en-us": "Read-only", - "ru-ru": "Только для чтения", - "es-es": "Sólo lectura", - "fr-fr": "Lecture seule", - "uk-ua": "Тільки для читання", - "de-ch": "Nur-Lesen", - "pt-br": "Somente leitura", + 'en-us': 'Read-only', + 'ru-ru': 'Только для чтения', + 'es-es': 'Sólo lectura', + 'fr-fr': 'Lecture seule', + 'uk-ua': 'Тільки для читання', + 'de-ch': 'Nur-Lesen', + 'pt-br': 'Somente leitura', }, fieldFormat: { - "en-us": "Field Format", - "ru-ru": "Формат поля", - "es-es": "Formato de campo", - "fr-fr": "Format de champ", - "uk-ua": "Формат поля", - "de-ch": "Feldformat", - "pt-br": "Formato de campo", + 'en-us': 'Field Format', + 'ru-ru': 'Формат поля', + 'es-es': 'Formato de campo', + 'fr-fr': 'Format de champ', + 'uk-ua': 'Формат поля', + 'de-ch': 'Feldformat', + 'pt-br': 'Formato de campo', }, uiFormattersForField: { - "en-us": "Field Formatters for {fieldLabel:string}", - "de-ch": "Feldformatierer für {fieldLabel:string}", - "es-es": "Formateadores de campos para {fieldLabel:string}", - "fr-fr": "Formateurs de champs pour {fieldLabel:string}", - "pt-br": "Formatadores de campo para {fieldLabel:string}", - "ru-ru": "Форматировщики полей для {fieldLabel:string}", - "uk-ua": "Форматування полів для {fieldLabel:string}", + 'en-us': 'Field Formatters for {fieldLabel:string}', + 'de-ch': 'Feldformatierer für {fieldLabel:string}', + 'es-es': 'Formateadores de campos para {fieldLabel:string}', + 'fr-fr': 'Formateurs de champs pour {fieldLabel:string}', + 'pt-br': 'Formatadores de campo para {fieldLabel:string}', + 'ru-ru': 'Форматировщики полей для {fieldLabel:string}', + 'uk-ua': 'Форматування полів для {fieldLabel:string}', }, formatted: { - "en-us": "Formatted", - "ru-ru": "Отформатированный", - "es-es": "Formateado", - "fr-fr": "Formaté", - "uk-ua": "Відформатовано", - "de-ch": "Formatiert", - "pt-br": "Formatado", + 'en-us': 'Formatted', + 'ru-ru': 'Отформатированный', + 'es-es': 'Formateado', + 'fr-fr': 'Formaté', + 'uk-ua': 'Відформатовано', + 'de-ch': 'Formatiert', + 'pt-br': 'Formatado', }, webLink: { - "en-us": "Web Link", - "ru-ru": "Веб-ссылка", - "es-es": "Enlace web", - "fr-fr": "Lien Web", - "uk-ua": "Веб-посиланні", - "de-ch": "Web-Link", - "pt-br": "Link da Web", + 'en-us': 'Web Link', + 'ru-ru': 'Веб-ссылка', + 'es-es': 'Enlace web', + 'fr-fr': 'Lien Web', + 'uk-ua': 'Веб-посиланні', + 'de-ch': 'Web-Link', + 'pt-br': 'Link da Web', }, userDefined: { - "en-us": "User Defined", - "es-es": "Definido por el usuario", - "fr-fr": "Défini par l'utilisateur", - "uk-ua": "Визначено користувачем", - "de-ch": "Benutzerdefiniert", - "ru-ru": "Определяется пользователем", - "pt-br": "Definido pelo usuário", + 'en-us': 'User Defined', + 'es-es': 'Definido por el usuario', + 'fr-fr': "Défini par l'utilisateur", + 'uk-ua': 'Визначено користувачем', + 'de-ch': 'Benutzerdefiniert', + 'ru-ru': 'Определяется пользователем', + 'pt-br': 'Definido pelo usuário', }, addLanguage: { - "en-us": "Add Language", - "fr-fr": "Ajouter une langue", - "uk-ua": "Додати мову", - "de-ch": "Sprache hinzuzufügen", - "es-es": "Agregar idioma", - "ru-ru": "Добавить язык", - "pt-br": "Adicionar idioma", + 'en-us': 'Add Language', + 'fr-fr': 'Ajouter une langue', + 'uk-ua': 'Додати мову', + 'de-ch': 'Sprache hinzuzufügen', + 'es-es': 'Agregar idioma', + 'ru-ru': 'Добавить язык', + 'pt-br': 'Adicionar idioma', }, databaseColumn: { - "en-us": "Database Column", - "ru-ru": "Колонка базы данных", - "es-es": "Columna de base de datos", - "fr-fr": "Colonne de base de données", - "uk-ua": "Стовпець бази даних", - "de-ch": "Datenbank-Spalte", - "pt-br": "Coluna do Banco de Dados", + 'en-us': 'Database Column', + 'ru-ru': 'Колонка базы данных', + 'es-es': 'Columna de base de datos', + 'fr-fr': 'Colonne de base de données', + 'uk-ua': 'Стовпець бази даних', + 'de-ch': 'Datenbank-Spalte', + 'pt-br': 'Coluna do Banco de Dados', }, relatedTable: { - "en-us": "Related Model", - "ru-ru": "Связанная модель", - "es-es": "Modelo relacionado", - "fr-fr": "Modèle associé", - "uk-ua": "Пов'язана модель", - "de-ch": "Zugehöriges Modell", - "pt-br": "Modelo relacionado", + 'en-us': 'Related Model', + 'ru-ru': 'Связанная модель', + 'es-es': 'Modelo relacionado', + 'fr-fr': 'Modèle associé', + 'uk-ua': "Пов'язана модель", + 'de-ch': 'Zugehöriges Modell', + 'pt-br': 'Modelo relacionado', }, otherSideName: { - "en-us": "Other side name", - "ru-ru": "Имя другой стороны", - "fr-fr": "Nom de l'autre côté", - "uk-ua": "Інша назва сторони", - "de-ch": "Name der anderen Seite", - "es-es": "Nombre del otro lado", - "pt-br": "Nome do outro lado", + 'en-us': 'Other side name', + 'ru-ru': 'Имя другой стороны', + 'fr-fr': "Nom de l'autre côté", + 'uk-ua': 'Інша назва сторони', + 'de-ch': 'Name der anderen Seite', + 'es-es': 'Nombre del otro lado', + 'pt-br': 'Nome do outro lado', }, dependent: { - "en-us": "Dependent", - "ru-ru": "Зависимый", - "es-es": "Dependiente", - "fr-fr": "Dépendant", - "uk-ua": "Утриманець", - "de-ch": "Abhängig", - "pt-br": "Dependente", + 'en-us': 'Dependent', + 'ru-ru': 'Зависимый', + 'es-es': 'Dependiente', + 'fr-fr': 'Dépendant', + 'uk-ua': 'Утриманець', + 'de-ch': 'Abhängig', + 'pt-br': 'Dependente', }, independent: { - "en-us": "Independent", - "es-es": "Independiente", - "fr-fr": "Indépendant", - "ru-ru": "Независимый", - "uk-ua": "Незалежний", - "de-ch": "Unabhängig", - "pt-br": "Independente", + 'en-us': 'Independent', + 'es-es': 'Independiente', + 'fr-fr': 'Indépendant', + 'ru-ru': 'Независимый', + 'uk-ua': 'Незалежний', + 'de-ch': 'Unabhängig', + 'pt-br': 'Independente', }, downloadAsJson: { - "en-us": "Download as JSON", - "ru-ru": "Скачать как JSON", - "es-es": "Descargar como JSON", - "fr-fr": "Télécharger au format JSON", - "uk-ua": "Завантажити як JSON", - "de-ch": "Als JSON herunterladen", - "pt-br": "Baixar como JSON", + 'en-us': 'Download as JSON', + 'ru-ru': 'Скачать как JSON', + 'es-es': 'Descargar como JSON', + 'fr-fr': 'Télécharger au format JSON', + 'uk-ua': 'Завантажити як JSON', + 'de-ch': 'Als JSON herunterladen', + 'pt-br': 'Baixar como JSON', }, downloadAsXml: { - "en-us": "Download as XML", - "ru-ru": "Загрузить как XML", - "es-es": "Descargar como XML", - "fr-fr": "Télécharger au format XML", - "uk-ua": "Завантажити як XML", - "de-ch": "Als XML herunterladen", - "pt-br": "Baixar como XML", + 'en-us': 'Download as XML', + 'ru-ru': 'Загрузить как XML', + 'es-es': 'Descargar como XML', + 'fr-fr': 'Télécharger au format XML', + 'uk-ua': 'Завантажити як XML', + 'de-ch': 'Als XML herunterladen', + 'pt-br': 'Baixar como XML', }, downloadAsTsv: { - "en-us": "Download as TSV", - "ru-ru": "Загрузить как TSV", - "es-es": "Descargar como TSV", - "fr-fr": "Télécharger au format TSV", - "uk-ua": "Завантажити як TSV", - "de-ch": "Als TSV herunterladen", - "pt-br": "Baixar como TSV", + 'en-us': 'Download as TSV', + 'ru-ru': 'Загрузить как TSV', + 'es-es': 'Descargar como TSV', + 'fr-fr': 'Télécharger au format TSV', + 'uk-ua': 'Завантажити як TSV', + 'de-ch': 'Als TSV herunterladen', + 'pt-br': 'Baixar como TSV', }, tableId: { - "en-us": "Table ID", - "ru-ru": "Идентификатор таблицы", - "es-es": "ID de tabla", - "fr-fr": "ID de la table", - "uk-ua": "Ідентифікатор таблиці", - "de-ch": "Tabellen-ID", - "pt-br": "ID da tabela", + 'en-us': 'Table ID', + 'ru-ru': 'Идентификатор таблицы', + 'es-es': 'ID de tabla', + 'fr-fr': 'ID de la table', + 'uk-ua': 'Ідентифікатор таблиці', + 'de-ch': 'Tabellen-ID', + 'pt-br': 'ID da tabela', }, fieldCount: { - "en-us": "Field count", - "ru-ru": "Количество полей", - "es-es": "Recuento de campos", - "fr-fr": "Nombre de champs", - "uk-ua": "Кількість полів", - "de-ch": "Anzahl Felder", - "pt-br": "Contagem de campos", + 'en-us': 'Field count', + 'ru-ru': 'Количество полей', + 'es-es': 'Recuento de campos', + 'fr-fr': 'Nombre de champs', + 'uk-ua': 'Кількість полів', + 'de-ch': 'Anzahl Felder', + 'pt-br': 'Contagem de campos', }, relationshipCount: { - "en-us": "Relationship count", - "ru-ru": "Количество отношений", - "es-es": "Recuento de relaciones", - "fr-fr": "Nombre de relations", - "uk-ua": "Кількість зв'язків", - "de-ch": "Anzahl Beziehungen", - "pt-br": "Contagem de relacionamento", + 'en-us': 'Relationship count', + 'ru-ru': 'Количество отношений', + 'es-es': 'Recuento de relaciones', + 'fr-fr': 'Nombre de relations', + 'uk-ua': "Кількість зв'язків", + 'de-ch': 'Anzahl Beziehungen', + 'pt-br': 'Contagem de relacionamento', }, databaseSchema: { - "en-us": "Database Schema", - "ru-ru": "Схема базы данных", - "es-es": "Esquema de base de datos", - "fr-fr": "Schéma de base de données", - "uk-ua": "Схема бази даних", - "de-ch": "Datenbankschema", - "pt-br": "Esquema de banco de dados", + 'en-us': 'Database Schema', + 'ru-ru': 'Схема базы данных', + 'es-es': 'Esquema de base de datos', + 'fr-fr': 'Schéma de base de données', + 'uk-ua': 'Схема бази даних', + 'de-ch': 'Datenbankschema', + 'pt-br': 'Esquema de banco de dados', }, selectedTables: { - "en-us": "Selected Tables", - "ru-ru": "Избранные таблицы", - "es-es": "Tablas seleccionadas", - "fr-fr": "Tableaux sélectionnés", - "uk-ua": "Вибрані таблиці", - "de-ch": "Ausgewählte Tabellen", - "pt-br": "Tabelas Selecionadas", + 'en-us': 'Selected Tables', + 'ru-ru': 'Избранные таблицы', + 'es-es': 'Tablas seleccionadas', + 'fr-fr': 'Tableaux sélectionnés', + 'uk-ua': 'Вибрані таблиці', + 'de-ch': 'Ausgewählte Tabellen', + 'pt-br': 'Tabelas Selecionadas', }, possibleTables: { - "en-us": "Possible Tables", - "ru-ru": "Возможные таблицы", - "es-es": "Tablas posibles", - "fr-fr": "Tableaux possibles", - "uk-ua": "Можливі таблиці", - "de-ch": "Mögliche Tabellen", - "pt-br": "Tabelas Possíveis", + 'en-us': 'Possible Tables', + 'ru-ru': 'Возможные таблицы', + 'es-es': 'Tablas posibles', + 'fr-fr': 'Tableaux possibles', + 'uk-ua': 'Можливі таблиці', + 'de-ch': 'Mögliche Tabellen', + 'pt-br': 'Tabelas Possíveis', }, goToTop: { - "en-us": "Go to top", - "es-es": "Ir arriba", - "fr-fr": "Aller en haut", - "uk-ua": "Перейти на початок", - "de-ch": "Nach oben", - "ru-ru": "Перейти наверх", - "pt-br": "Ir para o topo", + 'en-us': 'Go to top', + 'es-es': 'Ir arriba', + 'fr-fr': 'Aller en haut', + 'uk-ua': 'Перейти на початок', + 'de-ch': 'Nach oben', + 'ru-ru': 'Перейти наверх', + 'pt-br': 'Ir para o topo', }, idField: { - "en-us": "ID Field", - "es-es": "Campo de identificación", - "fr-fr": "Champ d'identification", - "ru-ru": "Поле идентификатора", - "uk-ua": "Поле ідентифікатора", - "de-ch": "Feld-ID", - "pt-br": "Campo ID", + 'en-us': 'ID Field', + 'es-es': 'Campo de identificación', + 'fr-fr': "Champ d'identification", + 'ru-ru': 'Поле идентификатора', + 'uk-ua': 'Поле ідентифікатора', + 'de-ch': 'Feld-ID', + 'pt-br': 'Campo ID', }, tableUniquenessRules: { - "en-us": "{tableName:string} Uniqueness Rules", - "de-ch": "{tableName:string} Eindeutigkeitsregeln", - "es-es": "{tableName:string} Reglas de unicidad", - "fr-fr": "{tableName:string} Règles d'unicité", - "ru-ru": "{tableName:string} Правила уникальности", - "uk-ua": "{tableName:string} Правила унікальності", - "pt-br": "{tableName:string} Regras de Unicidade", + 'en-us': '{tableName:string} Uniqueness Rules', + 'de-ch': '{tableName:string} Eindeutigkeitsregeln', + 'es-es': '{tableName:string} Reglas de unicidad', + 'fr-fr': "{tableName:string} Règles d'unicité", + 'ru-ru': '{tableName:string} Правила уникальности', + 'uk-ua': '{tableName:string} Правила унікальності', + 'pt-br': '{tableName:string} Regras de Unicidade', }, uniquenessRules: { - "en-us": "Uniqueness Rules", - "de-ch": "Eindeutigkeitsregeln", - "es-es": "Reglas de unicidad", - "fr-fr": "Règles d'unicité", - "ru-ru": "Правила уникальности", - "uk-ua": "Правила унікальності", - "pt-br": "Regras de Unicidade", + 'en-us': 'Uniqueness Rules', + 'de-ch': 'Eindeutigkeitsregeln', + 'es-es': 'Reglas de unicidad', + 'fr-fr': "Règles d'unicité", + 'ru-ru': 'Правила уникальности', + 'uk-ua': 'Правила унікальності', + 'pt-br': 'Regras de Unicidade', }, uniqueFields: { - "en-us": "Unique Fields", - "de-ch": "Eindeutige Felder", - "es-es": "Campos únicos", - "fr-fr": "Champs uniques", - "ru-ru": "Уникальные поля", - "uk-ua": "Унікальні поля", - "pt-br": "Campos Únicos", + 'en-us': 'Unique Fields', + 'de-ch': 'Eindeutige Felder', + 'es-es': 'Campos únicos', + 'fr-fr': 'Champs uniques', + 'ru-ru': 'Уникальные поля', + 'uk-ua': 'Унікальні поля', + 'pt-br': 'Campos Únicos', }, addUniquenessRule: { - "en-us": "Add Uniqueness Rule", - "de-ch": "Eindeutigkeitsregel hinzufügen", - "es-es": "Agregar regla de unicidad", - "fr-fr": "Ajouter une règle d'unicité", - "ru-ru": "Добавить правило уникальности", - "uk-ua": "Додати правило унікальності", - "pt-br": "Adicionar regra de exclusividade", + 'en-us': 'Add Uniqueness Rule', + 'de-ch': 'Eindeutigkeitsregel hinzufügen', + 'es-es': 'Agregar regla de unicidad', + 'fr-fr': "Ajouter une règle d'unicité", + 'ru-ru': 'Добавить правило уникальности', + 'uk-ua': 'Додати правило унікальності', + 'pt-br': 'Adicionar regra de exclusividade', }, configureUniquenessRule: { - "en-us": "Configure Uniqueness Rule", - "de-ch": "Eindeutigkeitsregel konfigurieren", - "es-es": "Configurar regla de unicidad", - "fr-fr": "Configurer la règle d'unicité", - "ru-ru": "Настроить правило уникальности", - "uk-ua": "Налаштувати правило унікальності", - "pt-br": "Configurar regra de exclusividade", + 'en-us': 'Configure Uniqueness Rule', + 'de-ch': 'Eindeutigkeitsregel konfigurieren', + 'es-es': 'Configurar regla de unicidad', + 'fr-fr': "Configurer la règle d'unicité", + 'ru-ru': 'Настроить правило уникальности', + 'uk-ua': 'Налаштувати правило унікальності', + 'pt-br': 'Configurar regra de exclusividade', }, scope: { - "en-us": "Scope", - "es-es": "Alcance", - "fr-fr": "Portée", - "ru-ru": "Объем", - "uk-ua": "Сфера застосування", - "de-ch": "Anwendungsbereich", - "pt-br": "Escopo", + 'en-us': 'Scope', + 'es-es': 'Alcance', + 'fr-fr': 'Portée', + 'ru-ru': 'Объем', + 'uk-ua': 'Сфера застосування', + 'de-ch': 'Anwendungsbereich', + 'pt-br': 'Escopo', }, uniquenessDuplicatesFound: { - "en-us": "Duplicates found in database", - "de-ch": "In der Datenbank gefundene Duplikate", - "es-es": "muchos a uno", - "fr-fr": "Doublons trouvés dans la base de données", - "ru-ru": "В базе данных найдены дубликаты", - "uk-ua": "У базі даних знайдено дублікати", - "pt-br": "Duplicatas encontradas no banco de dados", + 'en-us': 'Duplicates found in database', + 'de-ch': 'In der Datenbank gefundene Duplikate', + 'es-es': 'muchos a uno', + 'fr-fr': 'Doublons trouvés dans la base de données', + 'ru-ru': 'В базе данных найдены дубликаты', + 'uk-ua': 'У базі даних знайдено дублікати', + 'pt-br': 'Duplicatas encontradas no banco de dados', }, exportDuplicates: { - "en-us": "Export Duplicates", - "de-ch": "Duplikate exportieren", - "es-es": "Exportar duplicados", - "fr-fr": "Exporter les doublons", - "ru-ru": "Экспортировать дубликаты", - "uk-ua": "Експорт дублікатів", - "pt-br": "Exportar Duplicatas", + 'en-us': 'Export Duplicates', + 'de-ch': 'Duplikate exportieren', + 'es-es': 'Exportar duplicados', + 'fr-fr': 'Exporter les doublons', + 'ru-ru': 'Экспортировать дубликаты', + 'uk-ua': 'Експорт дублікатів', + 'pt-br': 'Exportar Duplicatas', }, numberOfDuplicates: { - "en-us": "Number of Duplicates", - "de-ch": "Anzahl Duplikate", - "es-es": "Número de duplicados", - "fr-fr": "Nombre de doublons", - "ru-ru": "Количество дубликатов", - "uk-ua": "Кількість дублікатів", - "pt-br": "Número de duplicatas", + 'en-us': 'Number of Duplicates', + 'de-ch': 'Anzahl Duplikate', + 'es-es': 'Número de duplicados', + 'fr-fr': 'Nombre de doublons', + 'ru-ru': 'Количество дубликатов', + 'uk-ua': 'Кількість дублікатів', + 'pt-br': 'Número de duplicatas', }, schemaViewTitle: { - "en-us": "Schema Config: {tableName:string}", - "es-es": "Configuración del esquema: {tableName:string}", - "fr-fr": "Configuration du schéma : {tableName:string}", - "ru-ru": "Конфигурация схемы: {tableName:string}", - "uk-ua": "Конфігурація схеми: {tableName:string}", - "de-ch": "Schema-Konfiguration: {tableName:string}", - "pt-br": "Configuração do esquema: {tableName:string}", + 'en-us': 'Schema Config: {tableName:string}', + 'es-es': 'Configuración del esquema: {tableName:string}', + 'fr-fr': 'Configuration du schéma : {tableName:string}', + 'ru-ru': 'Конфигурация схемы: {tableName:string}', + 'uk-ua': 'Конфігурація схеми: {tableName:string}', + 'de-ch': 'Schema-Konfiguration: {tableName:string}', + 'pt-br': 'Configuração do esquema: {tableName:string}', }, schemaExportFileName: { - "en-us": "Specify 7 Data Model", - "ru-ru": "Укажите 7 моделей данных", - "es-es": "Especificar 7 modelos de datos", - "fr-fr": "Spécifier 7 modèles de données", - "uk-ua": "Specify 7 моделей даних", - "de-ch": "Specify 7 Datenmodell", - "pt-br": "Especifique 7 modelos de dados", + 'en-us': 'Specify 7 Data Model', + 'ru-ru': 'Укажите 7 моделей данных', + 'es-es': 'Especificar 7 modelos de datos', + 'fr-fr': 'Spécifier 7 modèles de données', + 'uk-ua': 'Specify 7 моделей даних', + 'de-ch': 'Specify 7 Datenmodell', + 'pt-br': 'Especifique 7 modelos de dados', }, sortByHiddenFields: { - "en-us": "Sort by hidden fields", - "de-ch": "Nach ausgeblendeten Feldern sortieren", - "es-es": "Ordenar por campos ocultos", - "fr-fr": "Trier par champs cachés", - "ru-ru": "Сортировать по скрытым полям", - "uk-ua": "Сортувати за прихованими полями", - "pt-br": "Classificar por campos ocultos", + 'en-us': 'Sort by hidden fields', + 'de-ch': 'Nach ausgeblendeten Feldern sortieren', + 'es-es': 'Ordenar por campos ocultos', + 'fr-fr': 'Trier par champs cachés', + 'ru-ru': 'Сортировать по скрытым полям', + 'uk-ua': 'Сортувати за прихованими полями', + 'pt-br': 'Classificar por campos ocultos', }, hidden: { - "en-us": "hidden", - "de-ch": "versteckt", - "es-es": "oculto", - "fr-fr": "caché", - "ru-ru": "скрытый", - "uk-ua": "прихований", - "pt-br": "escondido", + 'en-us': 'hidden', + 'de-ch': 'versteckt', + 'es-es': 'oculto', + 'fr-fr': 'caché', + 'ru-ru': 'скрытый', + 'uk-ua': 'прихований', + 'pt-br': 'escondido', }, customFieldFormat: { - "en-us": "Custom Field Format", - "de-ch": "Benutzerdefiniertes Feldformat", - "es-es": "Formato de campo personalizado", - "fr-fr": "Format de champ personnalisé", - "ru-ru": "Пользовательский формат поля", - "uk-ua": "Формат користувацького поля", - "pt-br": "Formato de campo personalizado", + 'en-us': 'Custom Field Format', + 'de-ch': 'Benutzerdefiniertes Feldformat', + 'es-es': 'Formato de campo personalizado', + 'fr-fr': 'Format de champ personnalisé', + 'ru-ru': 'Пользовательский формат поля', + 'uk-ua': 'Формат користувацького поля', + 'pt-br': 'Formato de campo personalizado', }, } as const); diff --git a/specifyweb/frontend/js_src/lib/localization/specifyNetwork.ts b/specifyweb/frontend/js_src/lib/localization/specifyNetwork.ts index b66847771f3..8f66e8237bc 100644 --- a/specifyweb/frontend/js_src/lib/localization/specifyNetwork.ts +++ b/specifyweb/frontend/js_src/lib/localization/specifyNetwork.ts @@ -2,193 +2,193 @@ * Localization strings for the Specify Network integration */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const specifyNetworkText = createDictionary({ specifyNetwork: { - "en-us": "Specify Network", - "ru-ru": "Укажите сеть", - "es-es": "Specify red", - "fr-fr": "Réseau Specify", - "uk-ua": "Specify Network", - "de-ch": "Specify Network", - "pt-br": "Especificar rede", + 'en-us': 'Specify Network', + 'ru-ru': 'Укажите сеть', + 'es-es': 'Specify red', + 'fr-fr': 'Réseau Specify', + 'uk-ua': 'Specify Network', + 'de-ch': 'Specify Network', + 'pt-br': 'Especificar rede', }, occurrenceOrGuidRequired: { - "en-us": "Species Name or GUID must be provided to display this page", - "de-ch": - "Zur Anzeige dieser Seite muss der Artname oder die GUID angegeben werden", - "es-es": - "Se debe proporcionar el nombre de especie o el GUID para mostrar esta página", - "fr-fr": + 'en-us': 'Species Name or GUID must be provided to display this page', + 'de-ch': + 'Zur Anzeige dieser Seite muss der Artname oder die GUID angegeben werden', + 'es-es': + 'Se debe proporcionar el nombre de especie o el GUID para mostrar esta página', + 'fr-fr': "Le nom de l'espèce ou le GUID doit être fourni pour afficher cette page", - "ru-ru": - "Для отображения этой страницы необходимо указать название вида или GUID", - "uk-ua": - "Щоб відобразити цю сторінку, потрібно вказати назву виду або GUID", - "pt-br": - "O nome da espécie ou GUID deve ser fornecido para exibir esta página", + 'ru-ru': + 'Для отображения этой страницы необходимо указать название вида или GUID', + 'uk-ua': + 'Щоб відобразити цю сторінку, потрібно вказати назву виду або GUID', + 'pt-br': + 'O nome da espécie ou GUID deve ser fornecido para exibir esta página', }, noDataError: { - "en-us": "Unable to find any data for this request", - "de-ch": "Zu dieser Anfrage konnten keine Daten gefunden werden", - "es-es": "No se encuentran datos para esta solicitud", - "fr-fr": "Impossible de trouver des données pour cette demande", - "ru-ru": "Не удалось найти данные по этому запросу.", - "uk-ua": "Неможливо знайти дані для цього запиту", - "pt-br": "Não foi possível encontrar nenhum dado para esta solicitação", + 'en-us': 'Unable to find any data for this request', + 'de-ch': 'Zu dieser Anfrage konnten keine Daten gefunden werden', + 'es-es': 'No se encuentran datos para esta solicitud', + 'fr-fr': 'Impossible de trouver des données pour cette demande', + 'ru-ru': 'Не удалось найти данные по этому запросу.', + 'uk-ua': 'Неможливо знайти дані для цього запиту', + 'pt-br': 'Não foi possível encontrar nenhum dado para esta solicitação', }, noDataErrorDescription: { - "en-us": "Please try searching for a different record", - "de-ch": "Versuchen Sie bitte, nach einem anderen Datensatz zu suchen", - "es-es": "Intente buscar un registro diferente", - "fr-fr": "Veuillez essayer de rechercher un autre enregistrement", - "ru-ru": "Попробуйте поискать другую запись.", - "uk-ua": "Будь ласка, спробуйте знайти інший запис", - "pt-br": "Por favor, tente procurar um registro diferente", + 'en-us': 'Please try searching for a different record', + 'de-ch': 'Versuchen Sie bitte, nach einem anderen Datensatz zu suchen', + 'es-es': 'Intente buscar un registro diferente', + 'fr-fr': 'Veuillez essayer de rechercher un autre enregistrement', + 'ru-ru': 'Попробуйте поискать другую запись.', + 'uk-ua': 'Будь ласка, спробуйте знайти інший запис', + 'pt-br': 'Por favor, tente procurar um registro diferente', }, dataQuality: { - "en-us": "Data Quality", - "de-ch": "Datenqualität", - "es-es": "Calidad de datos", - "fr-fr": "Qualité des données", - "ru-ru": "Качество данных", - "uk-ua": "Якість даних", - "pt-br": "Qualidade de dados", + 'en-us': 'Data Quality', + 'de-ch': 'Datenqualität', + 'es-es': 'Calidad de datos', + 'fr-fr': 'Qualité des données', + 'ru-ru': 'Качество данных', + 'uk-ua': 'Якість даних', + 'pt-br': 'Qualidade de dados', }, reportedBy: { - "en-us": "Reported by {provider:string}", - "de-ch": "Gemeldet von {provider:string}", - "es-es": "Reportado por {provider:string}", - "fr-fr": "Rapporté par {provider:string}", - "ru-ru": "Сообщил {provider:string}", - "uk-ua": "Повідомив {provider:string}", - "pt-br": "Reportado por {provider:string}", + 'en-us': 'Reported by {provider:string}', + 'de-ch': 'Gemeldet von {provider:string}', + 'es-es': 'Reportado por {provider:string}', + 'fr-fr': 'Rapporté par {provider:string}', + 'ru-ru': 'Сообщил {provider:string}', + 'uk-ua': 'Повідомив {provider:string}', + 'pt-br': 'Reportado por {provider:string}', }, collectionDate: { - "en-us": "Collection Date", - "de-ch": "Abholdatum", - "es-es": "Fecha de colecta", - "fr-fr": "Date de collecte", - "ru-ru": "Дата сбора", - "uk-ua": "Дата збору", - "pt-br": "Data de coleta", + 'en-us': 'Collection Date', + 'de-ch': 'Abholdatum', + 'es-es': 'Fecha de colecta', + 'fr-fr': 'Date de collecte', + 'ru-ru': 'Дата сбора', + 'uk-ua': 'Дата збору', + 'pt-br': 'Data de coleta', }, mapDescription: { - "en-us": - "This map shows occurrences of this taxon from the iDigBio and GBIF aggregators.", - "de-ch": - "Diese Karte zeigt Vorkommen dieses Taxons aus den Aggregatoren iDigBio und GBIF.", - "es-es": - "Este mapa muestra los registros de este taxón en los agregadores iDigBio y GBIF.", - "fr-fr": - "Cette carte montre les occurrences de ce taxon à partir des agrégateurs iDigBio et GBIF.", - "ru-ru": - "На этой карте показаны случаи встречаемости этого таксона по данным агрегаторов iDigBio и GBIF.", - "uk-ua": - "Ця карта показує випадки появи цього таксону з агрегаторів iDigBio та GBIF.", - "pt-br": - "Este mapa mostra ocorrências deste táxon dos agregadores iDigBio e GBIF.", + 'en-us': + 'This map shows occurrences of this taxon from the iDigBio and GBIF aggregators.', + 'de-ch': + 'Diese Karte zeigt Vorkommen dieses Taxons aus den Aggregatoren iDigBio und GBIF.', + 'es-es': + 'Este mapa muestra los registros de este taxón en los agregadores iDigBio y GBIF.', + 'fr-fr': + 'Cette carte montre les occurrences de ce taxon à partir des agrégateurs iDigBio et GBIF.', + 'ru-ru': + 'На этой карте показаны случаи встречаемости этого таксона по данным агрегаторов iDigBio и GBIF.', + 'uk-ua': + 'Ця карта показує випадки появи цього таксону з агрегаторів iDigBio та GBIF.', + 'pt-br': + 'Este mapa mostra ocorrências deste táxon dos agregadores iDigBio e GBIF.', }, iDigBioDescription: { - "en-us": - "Occurrences recorded in iDigBio are shown as round green points, except for those from the current collection recorded in iDigBio that are round red points. Zooming in on the red points brings up a blue teardrop pin, clicking on the pin executes a locality query in Specify that shows all of the species in the current Specify database collected from that location.", - "de-ch": - "In iDigBio erfasste Vorkommen werden als runde grüne Punkte dargestellt, mit Ausnahme der in iDigBio erfassten Vorkommen, die als runde rote Punkte dargestellt werden. Beim Vergrößern der roten Punkte wird eine blaue Stecknadel angezeigt. Ein Klick darauf führt eine Ortsabfrage in Specify aus, die alle an diesem Ort erfassten Arten der aktuellen Specify-Datenbank anzeigt.", - "es-es": - "Los registros recogidos en iDigBio se muestran como puntos verdes redondos, excepto los de esta colección, registrados en iDigBio, que son puntos rojos redondos. Al acercarse a los puntos rojos, aparece una chincheta en forma de lágrima azul; al hacer clic en la chincheta, se ejecuta una consulta de localidad en Specify que muestra todas las especies en la base de datos actual de Specify colectadas en esa localización.", - "fr-fr": + 'en-us': + 'Occurrences recorded in iDigBio are shown as round green points, except for those from the current collection recorded in iDigBio that are round red points. Zooming in on the red points brings up a blue teardrop pin, clicking on the pin executes a locality query in Specify that shows all of the species in the current Specify database collected from that location.', + 'de-ch': + 'In iDigBio erfasste Vorkommen werden als runde grüne Punkte dargestellt, mit Ausnahme der in iDigBio erfassten Vorkommen, die als runde rote Punkte dargestellt werden. Beim Vergrößern der roten Punkte wird eine blaue Stecknadel angezeigt. Ein Klick darauf führt eine Ortsabfrage in Specify aus, die alle an diesem Ort erfassten Arten der aktuellen Specify-Datenbank anzeigt.', + 'es-es': + 'Los registros recogidos en iDigBio se muestran como puntos verdes redondos, excepto los de esta colección, registrados en iDigBio, que son puntos rojos redondos. Al acercarse a los puntos rojos, aparece una chincheta en forma de lágrima azul; al hacer clic en la chincheta, se ejecuta una consulta de localidad en Specify que muestra todas las especies en la base de datos actual de Specify colectadas en esa localización.', + 'fr-fr': "Les occurrences enregistrées dans iDigBio sont représentées par des points verts ronds, à l'exception de celles de la collection actuelle, qui sont représentées par des points rouges ronds. Un zoom sur les points rouges fait apparaître une épingle bleue en forme de larme. Cliquer dessus exécute une requête de localité dans Specify, qui affiche toutes les espèces de la base de données Specify actuelles collectées à cet endroit.", - "ru-ru": - "Встречи, зарегистрированные в iDigBio, показаны круглыми зелеными точками, за исключением тех, которые есть в текущей коллекции, зарегистрированной в iDigBio, которые показаны круглыми красными точками. При увеличении красных точек появляется синяя каплевидная булавка, нажатие на булавку выполняет запрос на местоположение в Specify, который показывает все виды в текущей базе данных Specify, собранные из этого местоположения.", - "uk-ua": - "Випадки, записані в iDigBio, відображаються круглими зеленими точками, за винятком випадків із поточної колекції, записаної в iDigBio, які мають круглі червоні точки. Збільшення масштабу червоних крапок відкриває блакитну шпильку-сльозинку, клацання шпильки виконує запит місцевості в Specify, який показує всі види в поточній базі даних Specify, зібрані з цього місця.", - "pt-br": - "As ocorrências registradas no iDigBio são mostradas como pontos verdes redondos, exceto aquelas da coleção atual registrada no iDigBio, que são pontos vermelhos redondos. Ao ampliar os pontos vermelhos, um alfinete azul em forma de lágrima é exibido. Clicar no alfinete executa uma consulta de localidade no Specify, que mostra todas as espécies coletadas naquele local no banco de dados do Specify atual.", + 'ru-ru': + 'Встречи, зарегистрированные в iDigBio, показаны круглыми зелеными точками, за исключением тех, которые есть в текущей коллекции, зарегистрированной в iDigBio, которые показаны круглыми красными точками. При увеличении красных точек появляется синяя каплевидная булавка, нажатие на булавку выполняет запрос на местоположение в Specify, который показывает все виды в текущей базе данных Specify, собранные из этого местоположения.', + 'uk-ua': + 'Випадки, записані в iDigBio, відображаються круглими зеленими точками, за винятком випадків із поточної колекції, записаної в iDigBio, які мають круглі червоні точки. Збільшення масштабу червоних крапок відкриває блакитну шпильку-сльозинку, клацання шпильки виконує запит місцевості в Specify, який показує всі види в поточній базі даних Specify, зібрані з цього місця.', + 'pt-br': + 'As ocorrências registradas no iDigBio são mostradas como pontos verdes redondos, exceto aquelas da coleção atual registrada no iDigBio, que são pontos vermelhos redondos. Ao ampliar os pontos vermelhos, um alfinete azul em forma de lágrima é exibido. Clicar no alfinete executa uma consulta de localidade no Specify, que mostra todas as espécies coletadas naquele local no banco de dados do Specify atual.', }, gbifDescription: { - "en-us": - "For GBIF data, individual points and clusters of points are shown as hexagons of different colors ranging from yellow to orange to red. Dark red hexagons corresponding to densest distributions of collected specimens of that species.", - "de-ch": - "Bei GBIF-Daten werden einzelne Punkte und Punktcluster als Sechsecke in verschiedenen Farben von Gelb über Orange bis Rot dargestellt. Dunkelrote Sechsecke entsprechen der dichtesten Verteilung gesammelter Exemplare dieser Art.", - "es-es": - "Para los datos de GBIF, los puntos individuales y los grupos de puntos se muestran como hexágonos de diferentes colores que van del amarillo al naranja y al rojo. Hexágonos de color rojo oscuro que corresponden a las distribuciones más densas de especímenes colectados de esa especie.", - "fr-fr": + 'en-us': + 'For GBIF data, individual points and clusters of points are shown as hexagons of different colors ranging from yellow to orange to red. Dark red hexagons corresponding to densest distributions of collected specimens of that species.', + 'de-ch': + 'Bei GBIF-Daten werden einzelne Punkte und Punktcluster als Sechsecke in verschiedenen Farben von Gelb über Orange bis Rot dargestellt. Dunkelrote Sechsecke entsprechen der dichtesten Verteilung gesammelter Exemplare dieser Art.', + 'es-es': + 'Para los datos de GBIF, los puntos individuales y los grupos de puntos se muestran como hexágonos de diferentes colores que van del amarillo al naranja y al rojo. Hexágonos de color rojo oscuro que corresponden a las distribuciones más densas de especímenes colectados de esa especie.', + 'fr-fr': "Pour les données GBIF, les points individuels et les groupes de points sont représentés par des hexagones de différentes couleurs, allant du jaune à l'orange et au rouge. Les hexagones rouge foncé correspondent aux distributions les plus denses de spécimens collectés de l'espèce.", - "ru-ru": - "Для данных GBIF отдельные точки и кластеры точек показаны в виде шестиугольников разных цветов от желтого до оранжевого и красного. Темно-красные шестиугольники соответствуют наиболее плотным распределениям собранных образцов этого вида.", - "uk-ua": - "Для даних GBIF окремі точки та кластери точок відображаються у вигляді шестикутників різних кольорів від жовтого до оранжевого та червоного. Темно-червоні шестикутники відповідають найщільнішому розподілу зібраних зразків цього виду.", - "pt-br": - "Para dados do GBIF, pontos individuais e grupos de pontos são mostrados como hexágonos de cores diferentes, que variam do amarelo ao laranja e ao vermelho. Hexágonos vermelho-escuros correspondem às distribuições mais densas de espécimes coletados daquela espécie.", + 'ru-ru': + 'Для данных GBIF отдельные точки и кластеры точек показаны в виде шестиугольников разных цветов от желтого до оранжевого и красного. Темно-красные шестиугольники соответствуют наиболее плотным распределениям собранных образцов этого вида.', + 'uk-ua': + 'Для даних GBIF окремі точки та кластери точок відображаються у вигляді шестикутників різних кольорів від жовтого до оранжевого та червоного. Темно-червоні шестикутники відповідають найщільнішому розподілу зібраних зразків цього виду.', + 'pt-br': + 'Para dados do GBIF, pontos individuais e grupos de pontos são mostrados como hexágonos de cores diferentes, que variam do amarelo ao laranja e ao vermelho. Hexágonos vermelho-escuros correspondem às distribuições mais densas de espécimes coletados daquela espécie.', }, connectToGbif: { - "en-us": "Connect to GBIF", - "de-ch": "Mit GBIF verbinden", - "es-es": "Conectarse a GBIF", - "fr-fr": "Connectez-vous au GBIF", - "ru-ru": "Подключиться к ГБИФ", - "uk-ua": "Підключіться до GBIF", - "pt-br": "Conecte-se ao GBIF", + 'en-us': 'Connect to GBIF', + 'de-ch': 'Mit GBIF verbinden', + 'es-es': 'Conectarse a GBIF', + 'fr-fr': 'Connectez-vous au GBIF', + 'ru-ru': 'Подключиться к ГБИФ', + 'uk-ua': 'Підключіться до GBIF', + 'pt-br': 'Conecte-se ao GBIF', }, searchForInstitution: { - "en-us": "Search for your institution:", - "de-ch": "Suchen Sie nach Ihrer Institution:", - "es-es": "Busque su institución:", - "fr-fr": "Recherchez votre établissement :", - "ru-ru": "Поиск вашего учреждения:", - "uk-ua": "Підключіться до GBIF", - "pt-br": "Pesquise sua instituição:", + 'en-us': 'Search for your institution:', + 'de-ch': 'Suchen Sie nach Ihrer Institution:', + 'es-es': 'Busque su institución:', + 'fr-fr': 'Recherchez votre établissement :', + 'ru-ru': 'Поиск вашего учреждения:', + 'uk-ua': 'Підключіться до GBIF', + 'pt-br': 'Pesquise sua instituição:', }, institutionDistributionMap: { - "en-us": - "Distribution map of all of the digitized specimens curated in your Institution", - "de-ch": - "Verbreitungskarte aller digitalisierten Exemplare, die in Ihrer Institution kuratiert werden", - "es-es": - "Mapa de distribución de todos los ejemplares digitalizados conservados en su Institución", - "fr-fr": - "Carte de répartition de tous les spécimens numérisés conservés dans votre institution", - "ru-ru": - "Карта распределения всех оцифрованных образцов, хранящихся в вашем учреждении", - "uk-ua": - "Карта розповсюдження всіх оцифрованих зразків, збережених у вашій установі", - "pt-br": - "Mapa de distribuição de todos os espécimes digitalizados e curados em sua Instituição", + 'en-us': + 'Distribution map of all of the digitized specimens curated in your Institution', + 'de-ch': + 'Verbreitungskarte aller digitalisierten Exemplare, die in Ihrer Institution kuratiert werden', + 'es-es': + 'Mapa de distribución de todos los ejemplares digitalizados conservados en su Institución', + 'fr-fr': + 'Carte de répartition de tous les spécimens numérisés conservés dans votre institution', + 'ru-ru': + 'Карта распределения всех оцифрованных образцов, хранящихся в вашем учреждении', + 'uk-ua': + 'Карта розповсюдження всіх оцифрованих зразків, збережених у вашій установі', + 'pt-br': + 'Mapa de distribuição de todos os espécimes digitalizados e curados em sua Instituição', }, collectionDistributionMap: { - "en-us": - "Distribution map of all of the digitized specimens curated in your Collection", - "de-ch": "Verbreitungskarte aller digitalisierten Exemplare Ihrer Sammlung", - "es-es": - "Mapa de distribución de todos los ejemplares digitalizados conservados en su Colección", - "fr-fr": - "Carte de répartition de tous les spécimens numérisés conservés dans votre collection", - "ru-ru": - "Карта распределения всех оцифрованных образцов, хранящихся в вашей коллекции", - "uk-ua": - "Карта розповсюдження всіх оцифрованих зразків, збережених у вашій колекції", - "pt-br": - "Mapa de distribuição de todos os espécimes digitalizados selecionados em sua coleção", + 'en-us': + 'Distribution map of all of the digitized specimens curated in your Collection', + 'de-ch': 'Verbreitungskarte aller digitalisierten Exemplare Ihrer Sammlung', + 'es-es': + 'Mapa de distribución de todos los ejemplares digitalizados conservados en su Colección', + 'fr-fr': + 'Carte de répartition de tous les spécimens numérisés conservés dans votre collection', + 'ru-ru': + 'Карта распределения всех оцифрованных образцов, хранящихся в вашей коллекции', + 'uk-ua': + 'Карта розповсюдження всіх оцифрованих зразків, збережених у вашій колекції', + 'pt-br': + 'Mapa de distribuição de todos os espécimes digitalizados selecionados em sua coleção', }, startYear: { - "en-us": "Start Year", - "de-ch": "Startjahr", - "es-es": "Año de inicio", - "fr-fr": "Année de début", - "ru-ru": "Год начала", - "uk-ua": "Рік початку", - "pt-br": "Ano de início", + 'en-us': 'Start Year', + 'de-ch': 'Startjahr', + 'es-es': 'Año de inicio', + 'fr-fr': 'Année de début', + 'ru-ru': 'Год начала', + 'uk-ua': 'Рік початку', + 'pt-br': 'Ano de início', }, endYear: { - "en-us": "End Year", - "de-ch": "Jahresende", - "es-es": "Año final", - "fr-fr": "Fin d'année", - "ru-ru": "Конец года", - "uk-ua": "Кінцевий рік", - "pt-br": "Fim de ano", + 'en-us': 'End Year', + 'de-ch': 'Jahresende', + 'es-es': 'Año final', + 'fr-fr': "Fin d'année", + 'ru-ru': 'Конец года', + 'uk-ua': 'Кінцевий рік', + 'pt-br': 'Fim de ano', }, } as const); diff --git a/specifyweb/frontend/js_src/lib/localization/user.ts b/specifyweb/frontend/js_src/lib/localization/user.ts index baf3b902c0e..f4b22da8ebe 100644 --- a/specifyweb/frontend/js_src/lib/localization/user.ts +++ b/specifyweb/frontend/js_src/lib/localization/user.ts @@ -4,1096 +4,1096 @@ * @module */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const userText = createDictionary({ logIn: { - "en-us": "Log In", - "ru-ru": "Авторизоваться", - "es-es": "Iniciar sesión", - "fr-fr": "Connexion", - "uk-ua": "Увійти", - "de-ch": "Anmelden", - "pt-br": "Conecte-se", + 'en-us': 'Log In', + 'ru-ru': 'Авторизоваться', + 'es-es': 'Iniciar sesión', + 'fr-fr': 'Connexion', + 'uk-ua': 'Увійти', + 'de-ch': 'Anmelden', + 'pt-br': 'Conecte-se', }, username: { - "en-us": "Username", - "ru-ru": "Имя пользователя", - "es-es": "Nombre de usuario", - "fr-fr": "Nom d'utilisateur", - "uk-ua": "Ім'я користувача", - "de-ch": "Benutzername", - "pt-br": "Nome de usuário", + 'en-us': 'Username', + 'ru-ru': 'Имя пользователя', + 'es-es': 'Nombre de usuario', + 'fr-fr': "Nom d'utilisateur", + 'uk-ua': "Ім'я користувача", + 'de-ch': 'Benutzername', + 'pt-br': 'Nome de usuário', }, password: { - "en-us": "Password", - "ru-ru": "Пароль", - "es-es": "Contraseña", - "fr-fr": "Mot de passe", - "uk-ua": "Пароль", - "de-ch": "Kennwort", - "pt-br": "Senha", + 'en-us': 'Password', + 'ru-ru': 'Пароль', + 'es-es': 'Contraseña', + 'fr-fr': 'Mot de passe', + 'uk-ua': 'Пароль', + 'de-ch': 'Kennwort', + 'pt-br': 'Senha', }, collectionAccessDenied: { - "en-us": "You do not have access to this collection", - "ru-ru": "У вас нет доступа к этой коллекции", - "es-es": "No tiene acceso a esta colección", - "fr-fr": "Vous n'avez pas accès à cette collection", - "uk-ua": "У вас немає доступу до цієї колекції", - "de-ch": "Sie haben keinen Zugang zu dieser Sammlung", - "pt-br": "Você não tem acesso a esta coleção", + 'en-us': 'You do not have access to this collection', + 'ru-ru': 'У вас нет доступа к этой коллекции', + 'es-es': 'No tiene acceso a esta colección', + 'fr-fr': "Vous n'avez pas accès à cette collection", + 'uk-ua': 'У вас немає доступу до цієї колекції', + 'de-ch': 'Sie haben keinen Zugang zu dieser Sammlung', + 'pt-br': 'Você não tem acesso a esta coleção', }, collectionAccessDeniedDescription: { - "en-us": - "The currently logged in account does not have access to the {collectionName:string} collection.", - "ru-ru": - "Текущая учетная запись не имеет доступа к коллекции {collectionName:string}.", - "es-es": - "La cuenta actualmente iniciada no tiene acceso a la colección {collectionName:string}.", - "fr-fr": + 'en-us': + 'The currently logged in account does not have access to the {collectionName:string} collection.', + 'ru-ru': + 'Текущая учетная запись не имеет доступа к коллекции {collectionName:string}.', + 'es-es': + 'La cuenta actualmente iniciada no tiene acceso a la colección {collectionName:string}.', + 'fr-fr': "Le compte actuellement connecté n'a pas accès à la collection {collectionName:string}.", - "uk-ua": - "Поточний обліковий запис, у який ви ввійшли, не має доступу до колекції {collectionName:string}.", - "de-ch": - "Das aktuell angemeldete Konto hat keinen Zugriff auf die {collectionName:string}-Sammlung.", - "pt-br": - "A conta atualmente conectada não tem acesso à coleção {collectionName:string}.", + 'uk-ua': + 'Поточний обліковий запис, у який ви ввійшли, не має доступу до колекції {collectionName:string}.', + 'de-ch': + 'Das aktuell angemeldete Konto hat keinen Zugriff auf die {collectionName:string}-Sammlung.', + 'pt-br': + 'A conta atualmente conectada não tem acesso à coleção {collectionName:string}.', }, changePassword: { - "en-us": "Change Password", - "ru-ru": "Изменить пароль", - "es-es": "Cambiar la contraseña", - "fr-fr": "Modifier le mot de passe", - "uk-ua": "Змінити пароль", - "de-ch": "Kennwort ändern", - "pt-br": "Alterar a senha", + 'en-us': 'Change Password', + 'ru-ru': 'Изменить пароль', + 'es-es': 'Cambiar la contraseña', + 'fr-fr': 'Modifier le mot de passe', + 'uk-ua': 'Змінити пароль', + 'de-ch': 'Kennwort ändern', + 'pt-br': 'Alterar a senha', }, oldPassword: { - "en-us": "Old password", - "ru-ru": "Старый пароль", - "es-es": "Contraseña anterior", - "fr-fr": "Mot de passe actuel", - "uk-ua": "Старий пароль", - "de-ch": "Altes Kennwort", - "pt-br": "Senha Antiga", + 'en-us': 'Old password', + 'ru-ru': 'Старый пароль', + 'es-es': 'Contraseña anterior', + 'fr-fr': 'Mot de passe actuel', + 'uk-ua': 'Старий пароль', + 'de-ch': 'Altes Kennwort', + 'pt-br': 'Senha Antiga', }, newPassword: { - "en-us": "New password", - "ru-ru": "Новый пароль", - "es-es": "Nueva contraseña", - "fr-fr": "Nouveau mot de passe", - "uk-ua": "Новий пароль", - "de-ch": "Neues Kennwort", - "pt-br": "Nova Senha", + 'en-us': 'New password', + 'ru-ru': 'Новый пароль', + 'es-es': 'Nueva contraseña', + 'fr-fr': 'Nouveau mot de passe', + 'uk-ua': 'Новий пароль', + 'de-ch': 'Neues Kennwort', + 'pt-br': 'Nova Senha', }, repeatPassword: { - "en-us": "Repeat new password", - "ru-ru": "Повторите новый пароль", - "es-es": "repita la nueva contraseña", - "fr-fr": "Répéter le nouveau mot de passe", - "uk-ua": "Повторіть новий пароль", - "de-ch": "Wiederhole das neue Kennwort", - "pt-br": "Repita a nova senha", + 'en-us': 'Repeat new password', + 'ru-ru': 'Повторите новый пароль', + 'es-es': 'repita la nueva contraseña', + 'fr-fr': 'Répéter le nouveau mot de passe', + 'uk-ua': 'Повторіть новий пароль', + 'de-ch': 'Wiederhole das neue Kennwort', + 'pt-br': 'Repita a nova senha', }, logOut: { - "en-us": "Log Out", - "ru-ru": "Выйти", - "es-es": "Cerrar sesión", - "fr-fr": "Se déconnecter", - "uk-ua": "Вийти", - "de-ch": "Ausloggen", - "pt-br": "Sair", + 'en-us': 'Log Out', + 'ru-ru': 'Выйти', + 'es-es': 'Cerrar sesión', + 'fr-fr': 'Se déconnecter', + 'uk-ua': 'Вийти', + 'de-ch': 'Ausloggen', + 'pt-br': 'Sair', }, setUserAgents: { - "en-us": "Set User Agents", - "ru-ru": "Установить пользовательских агентов", - "es-es": "Establecer agentes usuarios", - "fr-fr": "Définir les agents utilisateurs", - "uk-ua": "Налаштування агентів користувачів", - "de-ch": "Benutzeragenten festlegen", - "pt-br": "Definir agentes de usuário", + 'en-us': 'Set User Agents', + 'ru-ru': 'Установить пользовательских агентов', + 'es-es': 'Establecer agentes usuarios', + 'fr-fr': 'Définir les agents utilisateurs', + 'uk-ua': 'Налаштування агентів користувачів', + 'de-ch': 'Benutzeragenten festlegen', + 'pt-br': 'Definir agentes de usuário', }, noAgent: { - "en-us": "Current user does not have an agent assigned", - "ru-ru": "Текущий пользователь не имеет назначенного агента", - "es-es": "El usuario actual no tiene un agente asignado", - "fr-fr": "L'utilisateur actuel n'a pas d'agent attribué", - "uk-ua": "Поточному користувачеві не призначено агента", - "de-ch": "Dem aktuellen Benutzer ist kein Agent zugewiesen", - "pt-br": "O usuário atual não tem um agente atribuído", + 'en-us': 'Current user does not have an agent assigned', + 'ru-ru': 'Текущий пользователь не имеет назначенного агента', + 'es-es': 'El usuario actual no tiene un agente asignado', + 'fr-fr': "L'utilisateur actuel n'a pas d'agent attribué", + 'uk-ua': 'Поточному користувачеві не призначено агента', + 'de-ch': 'Dem aktuellen Benutzer ist kein Agent zugewiesen', + 'pt-br': 'O usuário atual não tem um agente atribuído', }, noAgentDescription: { - "en-us": "Please log in as admin and assign an agent to this user", - "ru-ru": - "Пожалуйста, войдите в систему как администратор и назначьте агента этому пользователю.", - "es-es": - "Iniciar sesión como administrador y asignar un agente a este usuario", - "fr-fr": + 'en-us': 'Please log in as admin and assign an agent to this user', + 'ru-ru': + 'Пожалуйста, войдите в систему как администратор и назначьте агента этому пользователю.', + 'es-es': + 'Iniciar sesión como administrador y asignar un agente a este usuario', + 'fr-fr': "Veuillez vous connecter en tant qu'administrateur et attribuer un agent à cet utilisateur", - "uk-ua": - "Будь ласка, увійдіть як адміністратор і призначте агента цьому користувачеві", - "de-ch": - "Bitte melden Sie sich als Administrator an und weisen Sie diesem Benutzer einen Agenten zu", - "pt-br": - "Por favor, faça login como administrador e atribua um agente a este usuário", + 'uk-ua': + 'Будь ласка, увійдіть як адміністратор і призначте агента цьому користувачеві', + 'de-ch': + 'Bitte melden Sie sich als Administrator an und weisen Sie diesem Benutzer einen Agenten zu', + 'pt-br': + 'Por favor, faça login como administrador e atribua um agente a este usuário', }, helloMessage: { - "en-us": "Hello, {userName:string}!", - "ru-ru": "Привет, {userName:string}!", - "es-es": "¡Hola, {userName:string}!", - "fr-fr": "Bonjour, {userName:string} !", - "de-ch": "Hallo, {userName:string}!", - "uk-ua": "Привіт, {userName:string}!", - "pt-br": "Olá, {userName:string}!", + 'en-us': 'Hello, {userName:string}!', + 'ru-ru': 'Привет, {userName:string}!', + 'es-es': '¡Hola, {userName:string}!', + 'fr-fr': 'Bonjour, {userName:string} !', + 'de-ch': 'Hallo, {userName:string}!', + 'uk-ua': 'Привіт, {userName:string}!', + 'pt-br': 'Olá, {userName:string}!', }, oicWelcomeMessage: { - "en-us": + 'en-us': "You've been invited to associate an external login to your Specify user account. This will enable you to log in to Specify with your chosen provider going forward.", - "ru-ru": - "Вас пригласили связать внешний вход с вашей учетной записью пользователя Specify. Это позволит вам в дальнейшем входить в Specify с выбранным вами провайдером.", - "es-es": - "Se le ha invitado a asociar un inicio de sesión externo a su cuenta de usuario de Specify. Esto le permitirá en el futuro iniciar sesión en Specify con el proveedor elegido.", - "fr-fr": - "Vous avez été invité à associer un identifiant externe à votre compte utilisateur Specify. Cela vous permettra de vous connecter à Specify avec le fournisseur de votre choix.", - "uk-ua": - "Вам запропоновано пов’язати зовнішній логін із вашим обліковим записом користувача Specify. Це дозволить вам надалі входити в Specify за допомогою обраного вами постачальника.", - "de-ch": - "Sie wurden aufgefordert, Ihrem Specify-Benutzerkonto einen externen Login zuzuordnen. Dadurch können Sie sich künftig mit Ihrem gewählten Anbieter bei Specify anmelden.", - "pt-br": - "Você foi convidado a associar um login externo à sua conta de usuário do Specify. Isso permitirá que você faça login no Specify com o provedor escolhido a partir de agora.", + 'ru-ru': + 'Вас пригласили связать внешний вход с вашей учетной записью пользователя Specify. Это позволит вам в дальнейшем входить в Specify с выбранным вами провайдером.', + 'es-es': + 'Se le ha invitado a asociar un inicio de sesión externo a su cuenta de usuario de Specify. Esto le permitirá en el futuro iniciar sesión en Specify con el proveedor elegido.', + 'fr-fr': + 'Vous avez été invité à associer un identifiant externe à votre compte utilisateur Specify. Cela vous permettra de vous connecter à Specify avec le fournisseur de votre choix.', + 'uk-ua': + 'Вам запропоновано пов’язати зовнішній логін із вашим обліковим записом користувача Specify. Це дозволить вам надалі входити в Specify за допомогою обраного вами постачальника.', + 'de-ch': + 'Sie wurden aufgefordert, Ihrem Specify-Benutzerkonto einen externen Login zuzuordnen. Dadurch können Sie sich künftig mit Ihrem gewählten Anbieter bei Specify anmelden.', + 'pt-br': + 'Você foi convidado a associar um login externo à sua conta de usuário do Specify. Isso permitirá que você faça login no Specify com o provedor escolhido a partir de agora.', }, legacyLogin: { - "en-us": "Sign in with Specify Account", - "ru-ru": "Войти с помощью Указать учетную запись", - "es-es": "Iniciar sesión con una cuenta de Specify", - "fr-fr": "Connectez-vous avec un compte spécifié", - "uk-ua": "Увійти за допомогою Вказати обліковий запис", - "de-ch": "Mit „Konto angeben“ anmelden", - "pt-br": "Entrar com Especificar Conta", + 'en-us': 'Sign in with Specify Account', + 'ru-ru': 'Войти с помощью Указать учетную запись', + 'es-es': 'Iniciar sesión con una cuenta de Specify', + 'fr-fr': 'Connectez-vous avec un compte spécifié', + 'uk-ua': 'Увійти за допомогою Вказати обліковий запис', + 'de-ch': 'Mit „Konto angeben“ anmelden', + 'pt-br': 'Entrar com Especificar Conta', }, unknownOicUser: { - "en-us": - "There is currently no Specify user associated with your {providerName:string} account. If you have a Specify user name and password, you can enter them below to associate that user with your {providerName:string} account for future logins.", - "ru-ru": - "В настоящее время нет Указанного пользователя, связанного с вашей учетной записью {providerName:string}. Если у вас есть Указанное имя пользователя и пароль, вы можете ввести их ниже, чтобы связать этого пользователя с вашей учетной записью {providerName:string} для будущих входов.", - "es-es": - "Actualmente no hay ningún usuario de Specify asociado con su cuenta {providerName:string}. Si tiene un nombre de usuario y contraseña de Specify, puede ingresarlos a continuación para asociar ese usuario con su cuenta {providerName:string} para futuros inicios de sesión.", - "fr-fr": + 'en-us': + 'There is currently no Specify user associated with your {providerName:string} account. If you have a Specify user name and password, you can enter them below to associate that user with your {providerName:string} account for future logins.', + 'ru-ru': + 'В настоящее время нет Указанного пользователя, связанного с вашей учетной записью {providerName:string}. Если у вас есть Указанное имя пользователя и пароль, вы можете ввести их ниже, чтобы связать этого пользователя с вашей учетной записью {providerName:string} для будущих входов.', + 'es-es': + 'Actualmente no hay ningún usuario de Specify asociado con su cuenta {providerName:string}. Si tiene un nombre de usuario y contraseña de Specify, puede ingresarlos a continuación para asociar ese usuario con su cuenta {providerName:string} para futuros inicios de sesión.', + 'fr-fr': "Aucun utilisateur spécifié n'est actuellement associé à votre compte {providerName:string}. Si vous possédez un nom d'utilisateur et un mot de passe spécifiés, saisissez-les ci-dessous pour associer cet utilisateur à votre compte {providerName:string} lors de vos prochaines connexions.", - "uk-ua": - "Наразі з вашим обліковим записом {providerName:string} не пов’язано жодного користувача типу «Вказати». Якщо у вас є ім’я користувача та пароль типу «Вказати», ви можете ввести їх нижче, щоб пов’язати цього користувача з вашим обліковим записом {providerName:string} для майбутніх входів.", - "de-ch": - "Ihrem {providerName:string}-Konto ist derzeit kein Benutzername zugeordnet. Wenn Sie über einen Benutzernamen und ein Passwort verfügen, können Sie diese unten eingeben, um diesen Benutzer bei zukünftigen Anmeldungen Ihrem {providerName:string}-Konto zuzuordnen.", - "pt-br": - "Atualmente, não há nenhum usuário específico associado à sua conta {providerName:string}. Se você tiver um nome de usuário e uma senha específicos, poderá inseri-los abaixo para associar esse usuário à sua conta {providerName:string} para logins futuros.", + 'uk-ua': + 'Наразі з вашим обліковим записом {providerName:string} не пов’язано жодного користувача типу «Вказати». Якщо у вас є ім’я користувача та пароль типу «Вказати», ви можете ввести їх нижче, щоб пов’язати цього користувача з вашим обліковим записом {providerName:string} для майбутніх входів.', + 'de-ch': + 'Ihrem {providerName:string}-Konto ist derzeit kein Benutzername zugeordnet. Wenn Sie über einen Benutzernamen und ein Passwort verfügen, können Sie diese unten eingeben, um diesen Benutzer bei zukünftigen Anmeldungen Ihrem {providerName:string}-Konto zuzuordnen.', + 'pt-br': + 'Atualmente, não há nenhum usuário específico associado à sua conta {providerName:string}. Se você tiver um nome de usuário e uma senha específicos, poderá inseri-los abaixo para associar esse usuário à sua conta {providerName:string} para logins futuros.', }, generateMasterKey: { - "en-us": "Generate Master Key", - "es-es": "Generar clave maestra", - "fr-fr": "Générer la clé principale", - "de-ch": "Masterschlüssel generieren", - "ru-ru": "Сгенерировать главный ключ", - "uk-ua": "Згенерувати головний ключ", - "pt-br": "Gerar Chave Mestra", + 'en-us': 'Generate Master Key', + 'es-es': 'Generar clave maestra', + 'fr-fr': 'Générer la clé principale', + 'de-ch': 'Masterschlüssel generieren', + 'ru-ru': 'Сгенерировать главный ключ', + 'uk-ua': 'Згенерувати головний ключ', + 'pt-br': 'Gerar Chave Mestra', }, userPassword: { - "en-us": "User Password", - "ru-ru": "Пароль пользователя", - "es-es": "Contraseña de usuario", - "fr-fr": "Mot de passe utilisateur", - "uk-ua": "Пароль користувача", - "de-ch": "Benutzer-Kennwort", - "pt-br": "Senha do usuário", + 'en-us': 'User Password', + 'ru-ru': 'Пароль пользователя', + 'es-es': 'Contraseña de usuario', + 'fr-fr': 'Mot de passe utilisateur', + 'uk-ua': 'Пароль користувача', + 'de-ch': 'Benutzer-Kennwort', + 'pt-br': 'Senha do usuário', }, generate: { - "en-us": "Generate", - "ru-ru": "Генерировать", - "es-es": "Generar", - "fr-fr": "Générer", - "uk-ua": "Згенерувати", - "de-ch": "Generieren", - "pt-br": "Gerar", + 'en-us': 'Generate', + 'ru-ru': 'Генерировать', + 'es-es': 'Generar', + 'fr-fr': 'Générer', + 'uk-ua': 'Згенерувати', + 'de-ch': 'Generieren', + 'pt-br': 'Gerar', }, masterKeyGenerated: { - "en-us": "Master key generated", - "ru-ru": "Сгенерирован главный ключ", - "es-es": "Clave maestra generada", - "fr-fr": "Clé principale générée", - "uk-ua": "Згенеровано головний ключ", - "de-ch": "Hauptschlüssel wurde generiert", - "pt-br": "Chave mestra gerada", + 'en-us': 'Master key generated', + 'ru-ru': 'Сгенерирован главный ключ', + 'es-es': 'Clave maestra generada', + 'fr-fr': 'Clé principale générée', + 'uk-ua': 'Згенеровано головний ключ', + 'de-ch': 'Hauptschlüssel wurde generiert', + 'pt-br': 'Chave mestra gerada', }, masterKeyFieldLabel: { - "en-us": "Master Key", - "ru-ru": "Мастер-ключ", - "es-es": "Clave maestra", - "fr-fr": "Clé principale", - "uk-ua": "Головний ключ", - "de-ch": "Hauptschlüssel", - "pt-br": "Chave Mestra", + 'en-us': 'Master Key', + 'ru-ru': 'Мастер-ключ', + 'es-es': 'Clave maestra', + 'fr-fr': 'Clé principale', + 'uk-ua': 'Головний ключ', + 'de-ch': 'Hauptschlüssel', + 'pt-br': 'Chave Mestra', }, incorrectPassword: { - "en-us": "Password was incorrect.", - "ru-ru": "Пароль неверный.", - "es-es": "La contraseña era incorrecta.", - "fr-fr": "Le mot de passe était incorrect.", - "uk-ua": "Пароль був неправильним.", - "de-ch": "Das Passwort war falsch.", - "pt-br": "A senha estava incorreta.", + 'en-us': 'Password was incorrect.', + 'ru-ru': 'Пароль неверный.', + 'es-es': 'La contraseña era incorrecta.', + 'fr-fr': 'Le mot de passe était incorrect.', + 'uk-ua': 'Пароль був неправильним.', + 'de-ch': 'Das Passwort war falsch.', + 'pt-br': 'A senha estava incorreta.', }, noAccessToResource: { - "en-us": - "You do not have access to any {collectionTable:string} containing this resource through the currently logged in account", - "ru-ru": - "У вас нет доступа ни к одному {collectionTable:string}, содержащему этот ресурс, через текущую учетную запись.", - "es-es": - "No tiene acceso a ningún {collectionTable:string} que contenga este recurso a través de la cuenta actualmente iniciada", - "fr-fr": + 'en-us': + 'You do not have access to any {collectionTable:string} containing this resource through the currently logged in account', + 'ru-ru': + 'У вас нет доступа ни к одному {collectionTable:string}, содержащему этот ресурс, через текущую учетную запись.', + 'es-es': + 'No tiene acceso a ningún {collectionTable:string} que contenga este recurso a través de la cuenta actualmente iniciada', + 'fr-fr': "Vous n'avez accès à aucun {collectionTable:string} contenant cette ressource via le compte actuellement connecté", - "uk-ua": - "Ви не маєте доступу до жодного {collectionTable:string}, що містить цей ресурс, через обліковий запис, у який ви зараз увійшли", - "de-ch": - "Sie haben über das aktuell angemeldete Konto keinen Zugriff auf {collectionTable:string}, das diese Ressource enthält", - "pt-br": - "Você não tem acesso a nenhum {collectionTable:string} contendo este recurso por meio da conta atualmente conectada", + 'uk-ua': + 'Ви не маєте доступу до жодного {collectionTable:string}, що містить цей ресурс, через обліковий запис, у який ви зараз увійшли', + 'de-ch': + 'Sie haben über das aktuell angemeldete Konto keinen Zugriff auf {collectionTable:string}, das diese Ressource enthält', + 'pt-br': + 'Você não tem acesso a nenhum {collectionTable:string} contendo este recurso por meio da conta atualmente conectada', }, resourceInaccessible: { - "en-us": - "The requested resource cannot be accessed while logged into the current collection.", - "ru-ru": - "Запрошенный ресурс не может быть доступен, пока вы вошли в текущую коллекцию.", - "es-es": - "No se puede acceder al recurso solicitado mientras se está conectado a la colección actual.", - "fr-fr": + 'en-us': + 'The requested resource cannot be accessed while logged into the current collection.', + 'ru-ru': + 'Запрошенный ресурс не может быть доступен, пока вы вошли в текущую коллекцию.', + 'es-es': + 'No se puede acceder al recurso solicitado mientras se está conectado a la colección actual.', + 'fr-fr': "La ressource demandée n'est pas accessible lorsque vous êtes connecté à la collection actuelle.", - "uk-ua": "Запитаний ресурс недоступний під час входу в поточну колекцію.", - "de-ch": - "Auf die angeforderte Ressource kann nicht zugegriffen werden, während Sie bei der aktuellen Sammlung angemeldet sind.", - "pt-br": - "O recurso solicitado não pode ser acessado enquanto estiver conectado à coleção atual.", + 'uk-ua': 'Запитаний ресурс недоступний під час входу в поточну колекцію.', + 'de-ch': + 'Auf die angeforderte Ressource kann nicht zugegriffen werden, während Sie bei der aktuellen Sammlung angemeldet sind.', + 'pt-br': + 'O recurso solicitado não pode ser acessado enquanto estiver conectado à coleção atual.', }, selectCollection: { - "en-us": "Select one of the following collections:", - "ru-ru": "Выберите одну из следующих коллекций:", - "es-es": "Seleccione una de las siguientes colecciones:", - "uk-ua": "Виберіть одну з наступних колекцій:", - "de-ch": "Wählen Sie eine der folgenden Sammlungen aus:", - "fr-fr": "Sélectionnez l'une des collections suivantes :", - "pt-br": "Selecione uma das seguintes coleções:", + 'en-us': 'Select one of the following collections:', + 'ru-ru': 'Выберите одну из следующих коллекций:', + 'es-es': 'Seleccione una de las siguientes colecciones:', + 'uk-ua': 'Виберіть одну з наступних колекцій:', + 'de-ch': 'Wählen Sie eine der folgenden Sammlungen aus:', + 'fr-fr': "Sélectionnez l'une des collections suivantes :", + 'pt-br': 'Selecione uma das seguintes coleções:', }, loginToProceed: { - comment: "Example: You can login to the Collection, to proceed:", - "en-us": "You can login to the {collectionTable:string}, to proceed:", - "ru-ru": "Вы можете войти в {collectionTable:string}, чтобы продолжить:", - "es-es": "Puede iniciar sesión en {collectionTable:string} para continuar:", - "fr-fr": - "Vous pouvez vous connecter au {collectionTable:string} pour continuer :", - "uk-ua": "Ви можете увійти до {collectionTable:string}, щоб продовжити:", - "de-ch": - "Sie können sich bei {collectionTable:string} anmelden, um fortzufahren:", - "pt-br": - "Você pode fazer login no {collectionTable:string}, para prosseguir:", + comment: 'Example: You can login to the Collection, to proceed:', + 'en-us': 'You can login to the {collectionTable:string}, to proceed:', + 'ru-ru': 'Вы можете войти в {collectionTable:string}, чтобы продолжить:', + 'es-es': 'Puede iniciar sesión en {collectionTable:string} para continuar:', + 'fr-fr': + 'Vous pouvez vous connecter au {collectionTable:string} pour continuer :', + 'uk-ua': 'Ви можете увійти до {collectionTable:string}, щоб продовжити:', + 'de-ch': + 'Sie können sich bei {collectionTable:string} anmelden, um fortzufahren:', + 'pt-br': + 'Você pode fazer login no {collectionTable:string}, para prosseguir:', }, sessionTimeOut: { - "en-us": "Insufficient Privileges", - "ru-ru": "Недостаточно привилегий", - "es-es": "Privilegios insuficientes", - "fr-fr": "Privilèges insuffisants", - "uk-ua": "Недостатньо привілеїв", - "de-ch": "Unzureichende Berechtigungen", - "pt-br": "Privilégios Insuficientes", + 'en-us': 'Insufficient Privileges', + 'ru-ru': 'Недостаточно привилегий', + 'es-es': 'Privilegios insuficientes', + 'fr-fr': 'Privilèges insuffisants', + 'uk-ua': 'Недостатньо привілеїв', + 'de-ch': 'Unzureichende Berechtigungen', + 'pt-br': 'Privilégios Insuficientes', }, sessionTimeOutDescription: { - "en-us": - "You lack sufficient privileges for that action, or your current session has been logged out.", - "ru-ru": - "У вас недостаточно прав для этого действия, или ваш текущий сеанс был завершен.", - "es-es": - "No tiene privilegios suficientes para esa acción o se ha cerrado la sesión actual.", - "fr-fr": - "Vous ne disposez pas des privilèges suffisants pour cette action ou votre session actuelle a été déconnectée.", - "uk-ua": - "У вас недостатньо прав для цієї дії, або ваш поточний сеанс завершено.", - "de-ch": - "Ihnen fehlen die erforderlichen Berechtigungen für diese Aktion oder Ihre aktuelle Sitzung wurde abgemeldet.", - "pt-br": - "Você não tem privilégios suficientes para essa ação ou sua sessão atual foi desconectada.", + 'en-us': + 'You lack sufficient privileges for that action, or your current session has been logged out.', + 'ru-ru': + 'У вас недостаточно прав для этого действия, или ваш текущий сеанс был завершен.', + 'es-es': + 'No tiene privilegios suficientes para esa acción o se ha cerrado la sesión actual.', + 'fr-fr': + 'Vous ne disposez pas des privilèges suffisants pour cette action ou votre session actuelle a été déconnectée.', + 'uk-ua': + 'У вас недостатньо прав для цієї дії, або ваш поточний сеанс завершено.', + 'de-ch': + 'Ihnen fehlen die erforderlichen Berechtigungen für diese Aktion oder Ihre aktuelle Sitzung wurde abgemeldet.', + 'pt-br': + 'Você não tem privilégios suficientes para essa ação ou sua sessão atual foi desconectada.', }, noPermission: { comment: ` Used in field formatter if user doesn't have read access to the related table `, - "en-us": "NO PERMISSION", - "ru-ru": "НЕТ РАЗРЕШЕНИЯ", - "es-es": "SIN AUTORIZACIÓN", - "fr-fr": "AUCUNE AUTORISATION", - "uk-ua": "ДОЗВІЛУ НЕ ПОТРІБНО", - "de-ch": "KEINE ERLAUBNIS", - "pt-br": "SEM PERMISSÃO", + 'en-us': 'NO PERMISSION', + 'ru-ru': 'НЕТ РАЗРЕШЕНИЯ', + 'es-es': 'SIN AUTORIZACIÓN', + 'fr-fr': 'AUCUNE AUTORISATION', + 'uk-ua': 'ДОЗВІЛУ НЕ ПОТРІБНО', + 'de-ch': 'KEINE ERLAUBNIS', + 'pt-br': 'SEM PERMISSÃO', }, permissionDeniedError: { - "en-us": "Permission denied error", - "ru-ru": "Ошибка «Отказано в доступе»", - "es-es": "Error de permiso denegado", - "fr-fr": "Erreur d'autorisation refusée", - "uk-ua": "Помилка відмови у доступі", - "de-ch": "Fehler „Berechtigung verweigert“", - "pt-br": "Erro de permissão negada", + 'en-us': 'Permission denied error', + 'ru-ru': 'Ошибка «Отказано в доступе»', + 'es-es': 'Error de permiso denegado', + 'fr-fr': "Erreur d'autorisation refusée", + 'uk-ua': 'Помилка відмови у доступі', + 'de-ch': 'Fehler „Berechtigung verweigert“', + 'pt-br': 'Erro de permissão negada', }, permissionDeniedDescription: { - "en-us": + 'en-us': "You don't have any policy or role that gives you permission to do the following action:", - "ru-ru": - "У вас нет политики или роли, которая дает вам разрешение на выполнение следующих действий:", - "es-es": - "No tiene ninguna política o función que le otorgue permiso para realizar la siguiente acción:", - "fr-fr": + 'ru-ru': + 'У вас нет политики или роли, которая дает вам разрешение на выполнение следующих действий:', + 'es-es': + 'No tiene ninguna política o función que le otorgue permiso para realizar la siguiente acción:', + 'fr-fr': "Vous ne disposez d'aucune politique ni d'aucun rôle vous autorisant à effectuer l'action suivante :", - "uk-ua": - "У вас немає жодної політики чи ролі, яка б давала вам дозвіл на виконання наступної дії:", - "de-ch": - "Sie verfügen über keine Richtlinie oder Rolle, die Ihnen die Berechtigung zur Ausführung der folgenden Aktion erteilt:", - "pt-br": - "Você não tem nenhuma política ou função que lhe dê permissão para executar a seguinte ação:", + 'uk-ua': + 'У вас немає жодної політики чи ролі, яка б давала вам дозвіл на виконання наступної дії:', + 'de-ch': + 'Sie verfügen über keine Richtlinie oder Rolle, die Ihnen die Berechtigung zur Ausführung der folgenden Aktion erteilt:', + 'pt-br': + 'Você não tem nenhuma política ou função que lhe dê permissão para executar a seguinte ação:', }, emptyRecordSetsReadOnly: { - "en-us": "Cannot open empty {recordSetTable:string} when in Read-Only mode", - "es-es": - "No se puede abrir {recordSetTable:string} vacío cuando está en modo de solo lectura", - "fr-fr": + 'en-us': 'Cannot open empty {recordSetTable:string} when in Read-Only mode', + 'es-es': + 'No se puede abrir {recordSetTable:string} vacío cuando está en modo de solo lectura', + 'fr-fr': "Impossible d'ouvrir un {recordSetTable:string} vide en mode lecture seule", - "ru-ru": - "Невозможно открыть пустой {recordSetTable:string} в режиме «Только чтение»", - "uk-ua": - "Не вдається відкрити порожній {recordSetTable:string} у режимі лише для читання", - "de-ch": - "Leeres {recordSetTable:string} kann im schreibgeschützten Modus nicht geöffnet werden", - "pt-br": - "Não é possível abrir {recordSetTable:string} vazio no modo somente leitura", + 'ru-ru': + 'Невозможно открыть пустой {recordSetTable:string} в режиме «Только чтение»', + 'uk-ua': + 'Не вдається відкрити порожній {recordSetTable:string} у режимі лише для читання', + 'de-ch': + 'Leeres {recordSetTable:string} kann im schreibgeschützten Modus nicht geöffnet werden', + 'pt-br': + 'Não é possível abrir {recordSetTable:string} vazio no modo somente leitura', }, permissionDeniedForUrl: { - "en-us": "Permission denied when accessing ", - "ru-ru": "Отказано в доступе при доступе ", - "es-es": "Permiso denegado al acceder a ", - "fr-fr": "Autorisation refusée lors de l'accès à ", - "uk-ua": "Відмовлено в доступі під час доступу до ", - "de-ch": "Zugriff verweigert beim Zugriff auf ", - "pt-br": "Permissão negada ao acessar ", + 'en-us': 'Permission denied when accessing ', + 'ru-ru': 'Отказано в доступе при доступе ', + 'es-es': 'Permiso denegado al acceder a ', + 'fr-fr': "Autorisation refusée lors de l'accès à ", + 'uk-ua': 'Відмовлено в доступі під час доступу до ', + 'de-ch': 'Zugriff verweigert beim Zugriff auf ', + 'pt-br': 'Permissão negada ao acessar ', }, noAccessToCollections: { - "en-us": - "The logged in user has not been given access to any collections in this database. You must login as another user.", - "ru-ru": - "Вошедшему в систему пользователю не предоставлен доступ ни к одной коллекции в этой базе данных. Вы должны войти в систему как другой пользователь.", - "es-es": - "Al usuario que inició sesión no se le ha dado acceso a ninguna colección de esta base de datos. Debe iniciar sesión como otro usuario.", - "fr-fr": + 'en-us': + 'The logged in user has not been given access to any collections in this database. You must login as another user.', + 'ru-ru': + 'Вошедшему в систему пользователю не предоставлен доступ ни к одной коллекции в этой базе данных. Вы должны войти в систему как другой пользователь.', + 'es-es': + 'Al usuario que inició sesión no se le ha dado acceso a ninguna colección de esta base de datos. Debe iniciar sesión como otro usuario.', + 'fr-fr': "L'utilisateur connecté n'a accès à aucune collection de cette base de données. Vous devez vous connecter sous un autre nom d'utilisateur.", - "uk-ua": - "Користувач, який зареєстрований, не має доступу до жодної колекції в цій базі даних. Ви повинні увійти як інший користувач.", - "de-ch": - "Dem angemeldeten Benutzer wurde kein Zugriff auf Sammlungen in dieser Datenbank gewährt. Sie müssen sich als anderer Benutzer anmelden.", - "pt-br": - "O usuário logado não recebeu acesso a nenhuma coleção neste banco de dados. Você deve efetuar login como outro usuário.", + 'uk-ua': + 'Користувач, який зареєстрований, не має доступу до жодної колекції в цій базі даних. Ви повинні увійти як інший користувач.', + 'de-ch': + 'Dem angemeldeten Benutzer wurde kein Zugriff auf Sammlungen in dieser Datenbank gewährt. Sie müssen sich als anderer Benutzer anmelden.', + 'pt-br': + 'O usuário logado não recebeu acesso a nenhuma coleção neste banco de dados. Você deve efetuar login como outro usuário.', }, userAccount: { - "en-us": "User Account", - "ru-ru": "Учетная запись пользователя", - "es-es": "Cuenta de usuario", - "fr-fr": "Compte utilisateur", - "uk-ua": "Обліковий запис користувача", - "de-ch": "Benutzerkonto", - "pt-br": "Conta de usuário", + 'en-us': 'User Account', + 'ru-ru': 'Учетная запись пользователя', + 'es-es': 'Cuenta de usuario', + 'fr-fr': 'Compte utilisateur', + 'uk-ua': 'Обліковий запис користувача', + 'de-ch': 'Benutzerkonto', + 'pt-br': 'Conta de usuário', }, removeAdmin: { - "en-us": "Remove Admin", - "ru-ru": "Удалить администратора", - "es-es": "Eliminar administrador", - "fr-fr": "Supprimer l'administrateur", - "uk-ua": "Видалити адміністратора", - "de-ch": "Administrator entfernen", - "pt-br": "Remover administrador", + 'en-us': 'Remove Admin', + 'ru-ru': 'Удалить администратора', + 'es-es': 'Eliminar administrador', + 'fr-fr': "Supprimer l'administrateur", + 'uk-ua': 'Видалити адміністратора', + 'de-ch': 'Administrator entfernen', + 'pt-br': 'Remover administrador', }, canNotRemoveYourself: { - "en-us": "You cannot revoke your own admin status", - "ru-ru": "Вы не можете отозвать свой собственный статус администратора.", - "es-es": "No puede revocar su propio estatus de administrador", - "fr-fr": "Vous ne pouvez pas révoquer votre propre statut d'administrateur", - "uk-ua": "Ви не можете скасувати свій власний статус адміністратора", - "de-ch": "Sie können Ihren eigenen Administratorstatus nicht widerrufen", - "pt-br": "Você não pode revogar seu próprio status de administrador", + 'en-us': 'You cannot revoke your own admin status', + 'ru-ru': 'Вы не можете отозвать свой собственный статус администратора.', + 'es-es': 'No puede revocar su propio estatus de administrador', + 'fr-fr': "Vous ne pouvez pas révoquer votre propre statut d'administrateur", + 'uk-ua': 'Ви не можете скасувати свій власний статус адміністратора', + 'de-ch': 'Sie können Ihren eigenen Administratorstatus nicht widerrufen', + 'pt-br': 'Você não pode revogar seu próprio status de administrador', }, makeAdmin: { - "en-us": "Make Admin", - "ru-ru": "Сделать администратором", - "es-es": "Hacer administrador", - "fr-fr": "Créer un administrateur", - "uk-ua": "Зробити адміністратором", - "de-ch": "Zum Administrator machen", - "pt-br": "Tornar administrador", + 'en-us': 'Make Admin', + 'ru-ru': 'Сделать администратором', + 'es-es': 'Hacer administrador', + 'fr-fr': 'Créer un administrateur', + 'uk-ua': 'Зробити адміністратором', + 'de-ch': 'Zum Administrator machen', + 'pt-br': 'Tornar administrador', }, saveUserFirst: { - "en-us": "Save user first", - "ru-ru": "Сначала сохраните пользователя", - "es-es": "Guardar usuario primero", - "fr-fr": "Enregistrer l'utilisateur en premier", - "uk-ua": "Спочатку збережіть користувача", - "de-ch": "Benutzer zuerst speichern", - "pt-br": "Salvar usuário primeiro", + 'en-us': 'Save user first', + 'ru-ru': 'Сначала сохраните пользователя', + 'es-es': 'Guardar usuario primero', + 'fr-fr': "Enregistrer l'utilisateur en premier", + 'uk-ua': 'Спочатку збережіть користувача', + 'de-ch': 'Benutzer zuerst speichern', + 'pt-br': 'Salvar usuário primeiro', }, mustBeManager: { - "en-us": "User must be saved as Manager first", - "ru-ru": "Сначала пользователь должен быть сохранен как менеджер.", - "es-es": "El usuario debe guardarse primero como administrador", - "de-ch": "Der Benutzer muss zuerst als Manager gespeichert werden", - "fr-fr": + 'en-us': 'User must be saved as Manager first', + 'ru-ru': 'Сначала пользователь должен быть сохранен как менеджер.', + 'es-es': 'El usuario debe guardarse primero como administrador', + 'de-ch': 'Der Benutzer muss zuerst als Manager gespeichert werden', + 'fr-fr': "L'utilisateur doit d'abord être enregistré en tant que gestionnaire", - "uk-ua": "Спочатку користувача потрібно зберегти як менеджера", - "pt-br": "O usuário deve ser salvo como gerente primeiro", + 'uk-ua': 'Спочатку користувача потрібно зберегти як менеджера', + 'pt-br': 'O usuário deve ser salvo como gerente primeiro', }, users: { - "en-us": "User Accounts", - "ru-ru": "Учетные записи пользователей", - "es-es": "Cuentas de usuario", - "fr-fr": "Comptes d'utilisateurs", - "uk-ua": "Облікові записи користувачів", - "de-ch": "Benutzerkonten", - "pt-br": "Contas de usuário", + 'en-us': 'User Accounts', + 'ru-ru': 'Учетные записи пользователей', + 'es-es': 'Cuentas de usuario', + 'fr-fr': "Comptes d'utilisateurs", + 'uk-ua': 'Облікові записи користувачів', + 'de-ch': 'Benutzerkonten', + 'pt-br': 'Contas de usuário', }, institutionUsers: { - "en-us": "User Accounts Defined in this {institutionTable:string}", - "ru-ru": - "Учетные записи пользователей, определенные в этом {institutionTable:string}", - "es-es": "Cuentas de usuario definidas en este {institutionTable:string}", - "fr-fr": "Comptes d'utilisateurs définis dans ce {institutionTable:string}", - "uk-ua": - "Облікові записи користувачів, визначені в цьому {institutionTable:string}", - "de-ch": "In diesem {institutionTable:string} definierte Benutzerkonten", - "pt-br": "Contas de usuário definidas neste {institutionTable:string}", + 'en-us': 'User Accounts Defined in this {institutionTable:string}', + 'ru-ru': + 'Учетные записи пользователей, определенные в этом {institutionTable:string}', + 'es-es': 'Cuentas de usuario definidas en este {institutionTable:string}', + 'fr-fr': "Comptes d'utilisateurs définis dans ce {institutionTable:string}", + 'uk-ua': + 'Облікові записи користувачів, визначені в цьому {institutionTable:string}', + 'de-ch': 'In diesem {institutionTable:string} definierte Benutzerkonten', + 'pt-br': 'Contas de usuário definidas neste {institutionTable:string}', }, collectionUsers: { - "en-us": "User Accounts Assigned to this {collectionTable:string}", - "ru-ru": - "Учетные записи пользователей, назначенные этому {collectionTable:string}", - "es-es": "Cuentas de usuario asignadas a este {collectionTable:string}", - "fr-fr": "Comptes d'utilisateurs attribués à ce {collectionTable:string}", - "uk-ua": - "Облікові записи користувачів, призначені цьому {collectionTable:string}", - "de-ch": "Zugewiesene Benutzerkonten {collectionTable:string}", - "pt-br": "Contas de usuário atribuídas a este {collectionTable:string}", + 'en-us': 'User Accounts Assigned to this {collectionTable:string}', + 'ru-ru': + 'Учетные записи пользователей, назначенные этому {collectionTable:string}', + 'es-es': 'Cuentas de usuario asignadas a este {collectionTable:string}', + 'fr-fr': "Comptes d'utilisateurs attribués à ce {collectionTable:string}", + 'uk-ua': + 'Облікові записи користувачів, призначені цьому {collectionTable:string}', + 'de-ch': 'Zugewiesene Benutzerkonten {collectionTable:string}', + 'pt-br': 'Contas de usuário atribuídas a este {collectionTable:string}', }, setPassword: { - "en-us": "Set Password", - "ru-ru": "Установить пароль", - "es-es": "Establecer contraseña", - "fr-fr": "Définir le mot de passe", - "uk-ua": "Встановити пароль", - "de-ch": "Passwort festlegen", - "pt-br": "Definir senha", + 'en-us': 'Set Password', + 'ru-ru': 'Установить пароль', + 'es-es': 'Establecer contraseña', + 'fr-fr': 'Définir le mot de passe', + 'uk-ua': 'Встановити пароль', + 'de-ch': 'Passwort festlegen', + 'pt-br': 'Definir senha', }, passwordsDoNotMatchError: { - "en-us": "Passwords do not match.", - "ru-ru": "Пароли не совпадают.", - "es-es": "Las contraseñas no coinciden.", - "fr-fr": "Les mots de passe ne correspondent pas.", - "uk-ua": "Паролі не збігаються.", - "de-ch": "Die Passwörter stimmen nicht überein.", - "pt-br": "As senhas não coincidem.", + 'en-us': 'Passwords do not match.', + 'ru-ru': 'Пароли не совпадают.', + 'es-es': 'Las contraseñas no coinciden.', + 'fr-fr': 'Les mots de passe ne correspondent pas.', + 'uk-ua': 'Паролі не збігаються.', + 'de-ch': 'Die Passwörter stimmen nicht überein.', + 'pt-br': 'As senhas não coincidem.', }, confirmPassword: { - "en-us": "Confirm", - "ru-ru": "Подтверждать", - "es-es": "Confirmar", - "fr-fr": "Confirmer", - "uk-ua": "Підтвердити", - "de-ch": "Bestätigen", - "pt-br": "Confirmar", + 'en-us': 'Confirm', + 'ru-ru': 'Подтверждать', + 'es-es': 'Confirmar', + 'fr-fr': 'Confirmer', + 'uk-ua': 'Підтвердити', + 'de-ch': 'Bestätigen', + 'pt-br': 'Confirmar', }, collections: { - "en-us": "Collections", - "ru-ru": "Коллекции", - "es-es": "Colecciones", - "fr-fr": "Collections", - "uk-ua": "Колекції", - "de-ch": "Sammlungen", - "pt-br": "Coleções", + 'en-us': 'Collections', + 'ru-ru': 'Коллекции', + 'es-es': 'Colecciones', + 'fr-fr': 'Collections', + 'uk-ua': 'Колекції', + 'de-ch': 'Sammlungen', + 'pt-br': 'Coleções', }, configureCollectionAccess: { - "en-us": "Select user collection access", - "ru-ru": "Выберите доступ к коллекции пользователей", - "es-es": "Seleccionar acceso a la colección del usuario", - "fr-fr": "Sélectionner l'accès à la collection d'utilisateurs", - "uk-ua": "Виберіть доступ до колекції користувачів", - "de-ch": "Auswählen des Benutzerzugriffs auf die Sammlung", - "pt-br": "Selecione o acesso à coleção de usuários", + 'en-us': 'Select user collection access', + 'ru-ru': 'Выберите доступ к коллекции пользователей', + 'es-es': 'Seleccionar acceso a la colección del usuario', + 'fr-fr': "Sélectionner l'accès à la collection d'utilisateurs", + 'uk-ua': 'Виберіть доступ до колекції користувачів', + 'de-ch': 'Auswählen des Benutzerzugriffs auf die Sammlung', + 'pt-br': 'Selecione o acesso à coleção de usuários', }, securityPanel: { - "en-us": "Security and Accounts", - "es-es": "Seguridad y cuentas", - "fr-fr": "Sécurité et comptes", - "uk-ua": "Безпека та облікові записи", - "de-ch": "Sicherheit und Konten", - "ru-ru": "Безопасность и учетные записи", - "pt-br": "Segurança e Contas", + 'en-us': 'Security and Accounts', + 'es-es': 'Seguridad y cuentas', + 'fr-fr': 'Sécurité et comptes', + 'uk-ua': 'Безпека та облікові записи', + 'de-ch': 'Sicherheit und Konten', + 'ru-ru': 'Безопасность и учетные записи', + 'pt-br': 'Segurança e Contas', }, userRoleLibrary: { - "en-us": "Institution Library of Role Templates", - "ru-ru": "Библиотека шаблонов ролей учреждений", - "es-es": "Biblioteca institucional de plantillas de roles", - "fr-fr": "Bibliothèque institutionnelle de modèles de rôles", - "uk-ua": "Бібліотека шаблонів ролей установи", - "de-ch": "Institutionsbibliothek mit Rollenvorlagen", - "pt-br": "Biblioteca de Modelos de Funções da Instituição", + 'en-us': 'Institution Library of Role Templates', + 'ru-ru': 'Библиотека шаблонов ролей учреждений', + 'es-es': 'Biblioteca institucional de plantillas de roles', + 'fr-fr': 'Bibliothèque institutionnelle de modèles de rôles', + 'uk-ua': 'Бібліотека шаблонів ролей установи', + 'de-ch': 'Institutionsbibliothek mit Rollenvorlagen', + 'pt-br': 'Biblioteca de Modelos de Funções da Instituição', }, userRoles: { - "en-us": "User Roles", - "ru-ru": "Роли пользователей", - "es-es": "Roles del usuario", - "fr-fr": "Rôles utilisateur", - "uk-ua": "Ролі користувачів", - "de-ch": "Benutzerrollen", - "pt-br": "Funções do usuário", + 'en-us': 'User Roles', + 'ru-ru': 'Роли пользователей', + 'es-es': 'Roles del usuario', + 'fr-fr': 'Rôles utilisateur', + 'uk-ua': 'Ролі користувачів', + 'de-ch': 'Benutzerrollen', + 'pt-br': 'Funções do usuário', }, collectionUserRoles: { - "en-us": "{collectionTable:string} User Roles", - "ru-ru": "{collectionTable:string} Роли пользователей", - "es-es": "Roles de usuario de {collectionTable:string}", - "fr-fr": "{collectionTable:string} Rôles utilisateur", - "uk-ua": "Ролі користувачів {collectionTable:string}", - "de-ch": "{collectionTable:string} Benutzerrollen", - "pt-br": "{collectionTable:string} Funções do usuário", + 'en-us': '{collectionTable:string} User Roles', + 'ru-ru': '{collectionTable:string} Роли пользователей', + 'es-es': 'Roles de usuario de {collectionTable:string}', + 'fr-fr': '{collectionTable:string} Rôles utilisateur', + 'uk-ua': 'Ролі користувачів {collectionTable:string}', + 'de-ch': '{collectionTable:string} Benutzerrollen', + 'pt-br': '{collectionTable:string} Funções do usuário', }, assignedUserRoles: { - "en-us": "Assigned User Roles", - "es-es": "Roles de usuario asignados", - "fr-fr": "Rôles utilisateur attribués", - "uk-ua": "Призначені ролі користувачів", - "de-ch": "Zugewiesene Benutzerrollen", - "ru-ru": "Назначенные роли пользователей", - "pt-br": "Funções de usuário atribuídas", + 'en-us': 'Assigned User Roles', + 'es-es': 'Roles de usuario asignados', + 'fr-fr': 'Rôles utilisateur attribués', + 'uk-ua': 'Призначені ролі користувачів', + 'de-ch': 'Zugewiesene Benutzerrollen', + 'ru-ru': 'Назначенные роли пользователей', + 'pt-br': 'Funções de usuário atribuídas', }, rolePolicies: { - "en-us": "Role Permission Policies", - "ru-ru": "Политики разрешений ролей", - "es-es": "Políticas de permisos", - "fr-fr": "Politiques d'autorisation des rôles", - "uk-ua": "Політики дозволів для ролей", - "de-ch": "Rollenberechtigungsrichtlinien", - "pt-br": "Políticas de permissão de função", + 'en-us': 'Role Permission Policies', + 'ru-ru': 'Политики разрешений ролей', + 'es-es': 'Políticas de permisos', + 'fr-fr': "Politiques d'autorisation des rôles", + 'uk-ua': 'Політики дозволів для ролей', + 'de-ch': 'Rollenberechtigungsrichtlinien', + 'pt-br': 'Políticas de permissão de função', }, userPolicies: { - "en-us": "User Permission Policies", - "ru-ru": "Политики разрешений пользователей", - "es-es": "Políticas de permisos de usuario", - "fr-fr": "Politiques d'autorisation des utilisateurs", - "uk-ua": "Політики дозволів користувачів", - "de-ch": "Richtlinien für Benutzerberechtigungen", - "pt-br": "Políticas de permissão do usuário", + 'en-us': 'User Permission Policies', + 'ru-ru': 'Политики разрешений пользователей', + 'es-es': 'Políticas de permisos de usuario', + 'fr-fr': "Politiques d'autorisation des utilisateurs", + 'uk-ua': 'Політики дозволів користувачів', + 'de-ch': 'Richtlinien für Benutzerberechtigungen', + 'pt-br': 'Políticas de permissão do usuário', }, customUserPolices: { - "en-us": - "Custom Collection-level Policies (applies to this collection only)", - "ru-ru": - "Пользовательские политики на уровне коллекции (применяются только к этой коллекции)", - "es-es": - "Políticas personalizadas a nivel de colección (sólo se aplican a esta colección)", - "fr-fr": + 'en-us': + 'Custom Collection-level Policies (applies to this collection only)', + 'ru-ru': + 'Пользовательские политики на уровне коллекции (применяются только к этой коллекции)', + 'es-es': + 'Políticas personalizadas a nivel de colección (sólo se aplican a esta colección)', + 'fr-fr': "Politiques personnalisées au niveau de la collection (s'applique uniquement à cette collection)", - "uk-ua": - "Політики на рівні користувацьких колекцій (стосуються лише цієї колекції)", - "de-ch": - "Benutzerdefinierte Richtlinien auf Sammlungsebene (gilt nur für diese Sammlung)", - "pt-br": - "Políticas personalizadas em nível de coleção (aplica-se somente a esta coleção)", + 'uk-ua': + 'Політики на рівні користувацьких колекцій (стосуються лише цієї колекції)', + 'de-ch': + 'Benutzerdefinierte Richtlinien auf Sammlungsebene (gilt nur für diese Sammlung)', + 'pt-br': + 'Políticas personalizadas em nível de coleção (aplica-se somente a esta coleção)', }, role: { - "en-us": "Role", - "ru-ru": "Роль", - "es-es": "Rol", - "fr-fr": "Rôle", - "uk-ua": "Роль", - "de-ch": "Rolle", - "pt-br": "Papel", + 'en-us': 'Role', + 'ru-ru': 'Роль', + 'es-es': 'Rol', + 'fr-fr': 'Rôle', + 'uk-ua': 'Роль', + 'de-ch': 'Rolle', + 'pt-br': 'Papel', }, read: { - "en-us": "Read", - "ru-ru": "Читать", - "es-es": "Leer", - "fr-fr": "Lire", - "uk-ua": "Читати", - "de-ch": "Lesen", - "pt-br": "Ler", + 'en-us': 'Read', + 'ru-ru': 'Читать', + 'es-es': 'Leer', + 'fr-fr': 'Lire', + 'uk-ua': 'Читати', + 'de-ch': 'Lesen', + 'pt-br': 'Ler', }, userPermissionPreview: { - "en-us": "User's Permission Profile (read-only)", - "ru-ru": "Профиль разрешений пользователя (только для чтения)", - "es-es": "Perfil de permisos del usuario (solo lectura)", - "fr-fr": "Profil d'autorisation de l'utilisateur (lecture seule)", - "uk-ua": "Профіль дозволів користувача (лише для читання)", - "de-ch": "Berechtigungsprofil des Benutzers (schreibgeschützt)", - "pt-br": "Perfil de permissão do usuário (somente leitura)", + 'en-us': "User's Permission Profile (read-only)", + 'ru-ru': 'Профиль разрешений пользователя (только для чтения)', + 'es-es': 'Perfil de permisos del usuario (solo lectura)', + 'fr-fr': "Profil d'autorisation de l'utilisateur (lecture seule)", + 'uk-ua': 'Профіль дозволів користувача (лише для читання)', + 'de-ch': 'Berechtigungsprofil des Benutzers (schreibgeschützt)', + 'pt-br': 'Perfil de permissão do usuário (somente leitura)', }, outOfDateWarning: { - "en-us": - "Note: preview may be out of date. Save changes to update the preview", - "ru-ru": - "Примечание: предварительный просмотр может быть устаревшим. Сохраните изменения, чтобы обновить предварительный просмотр", - "es-es": - "Nota: la vista previa puede estar desactualizada. Guarde los cambios para actualizar la vista previa", - "fr-fr": + 'en-us': + 'Note: preview may be out of date. Save changes to update the preview', + 'ru-ru': + 'Примечание: предварительный просмотр может быть устаревшим. Сохраните изменения, чтобы обновить предварительный просмотр', + 'es-es': + 'Nota: la vista previa puede estar desactualizada. Guarde los cambios para actualizar la vista previa', + 'fr-fr': "Remarque : l'aperçu peut être obsolète. Enregistrez les modifications pour le mettre à jour.", - "uk-ua": - "Примітка: попередній перегляд може бути застарілим. Збережіть зміни, щоб оновити попередній перегляд", - "de-ch": - "Hinweis: Die Vorschau ist möglicherweise veraltet. Speichern Sie die Änderungen, um die Vorschau zu aktualisieren.", - "pt-br": - "Observação: a pré-visualização pode estar desatualizada. Salve as alterações para atualizar a pré-visualização.", + 'uk-ua': + 'Примітка: попередній перегляд може бути застарілим. Збережіть зміни, щоб оновити попередній перегляд', + 'de-ch': + 'Hinweis: Die Vorschau ist möglicherweise veraltet. Speichern Sie die Änderungen, um die Vorschau zu aktualisieren.', + 'pt-br': + 'Observação: a pré-visualização pode estar desatualizada. Salve as alterações para atualizar a pré-visualização.', }, allUsers: { - "en-us": "All Users", - "ru-ru": "Все пользователи", - "es-es": "Todos los usuarios", - "fr-fr": "Tous les utilisateurs", - "uk-ua": "Усі користувачі", - "de-ch": "Alle Benutzer", - "pt-br": "Todos os usuários", + 'en-us': 'All Users', + 'ru-ru': 'Все пользователи', + 'es-es': 'Todos los usuarios', + 'fr-fr': 'Tous les utilisateurs', + 'uk-ua': 'Усі користувачі', + 'de-ch': 'Alle Benutzer', + 'pt-br': 'Todos os usuários', }, thisUser: { - "en-us": "This user", - "ru-ru": "Этот пользователь", - "es-es": "Este usuario", - "fr-fr": "Cet utilisateur", - "uk-ua": "Цей користувач", - "de-ch": "Dieser Benutzer", - "pt-br": "Este usuário", + 'en-us': 'This user', + 'ru-ru': 'Этот пользователь', + 'es-es': 'Este usuario', + 'fr-fr': 'Cet utilisateur', + 'uk-ua': 'Цей користувач', + 'de-ch': 'Dieser Benutzer', + 'pt-br': 'Este usuário', }, action: { - "en-us": "Action", - "ru-ru": "Действие", - "es-es": "Acción", - "fr-fr": "Action", - "uk-ua": "Дія", - "de-ch": "Aktion", - "pt-br": "Ação", + 'en-us': 'Action', + 'ru-ru': 'Действие', + 'es-es': 'Acción', + 'fr-fr': 'Action', + 'uk-ua': 'Дія', + 'de-ch': 'Aktion', + 'pt-br': 'Ação', }, resource: { - "en-us": "Resource", - "ru-ru": "Ресурс", - "es-es": "Recurso", - "fr-fr": "Ressource", - "uk-ua": "Ресурс", - "de-ch": "Ressource", - "pt-br": "Recurso", + 'en-us': 'Resource', + 'ru-ru': 'Ресурс', + 'es-es': 'Recurso', + 'fr-fr': 'Ressource', + 'uk-ua': 'Ресурс', + 'de-ch': 'Ressource', + 'pt-br': 'Recurso', }, allCollections: { - "en-us": "All Collections", - "ru-ru": "Все коллекции", - "es-es": "Todas las colecciones", - "fr-fr": "Toutes les collections", - "uk-ua": "Усі колекції", - "de-ch": "Alle Kollektionen", - "pt-br": "Todas as coleções", + 'en-us': 'All Collections', + 'ru-ru': 'Все коллекции', + 'es-es': 'Todas las colecciones', + 'fr-fr': 'Toutes les collections', + 'uk-ua': 'Усі колекції', + 'de-ch': 'Alle Kollektionen', + 'pt-br': 'Todas as coleções', }, thisCollection: { - "en-us": "This collection", - "ru-ru": "Эта коллекция", - "es-es": "Esta colección", - "fr-fr": "Cette collection", - "uk-ua": "Ця колекція", - "de-ch": "Diese Sammlung", - "pt-br": "Esta coleção", + 'en-us': 'This collection', + 'ru-ru': 'Эта коллекция', + 'es-es': 'Esta colección', + 'fr-fr': 'Cette collection', + 'uk-ua': 'Ця колекція', + 'de-ch': 'Diese Sammlung', + 'pt-br': 'Esta coleção', }, allActions: { - "en-us": "All Actions", - "ru-ru": "Все действия", - "es-es": "Todas las acciones", - "fr-fr": "Toutes les actions", - "uk-ua": "Усі дії", - "de-ch": "Alle Aktionen", - "pt-br": "Todas as ações", + 'en-us': 'All Actions', + 'ru-ru': 'Все действия', + 'es-es': 'Todas las acciones', + 'fr-fr': 'Toutes les actions', + 'uk-ua': 'Усі дії', + 'de-ch': 'Alle Aktionen', + 'pt-br': 'Todas as ações', }, collectionAccess: { - "en-us": "Enable Collection Access", - "ru-ru": "Включить доступ к коллекции", - "es-es": "Habilitar acceso a la colección", - "fr-fr": "Autoriser l'accès à la collection", - "uk-ua": "Увімкнути доступ до колекції", - "de-ch": "Sammlungszugriff aktivieren", - "pt-br": "Habilitar acesso à coleção", + 'en-us': 'Enable Collection Access', + 'ru-ru': 'Включить доступ к коллекции', + 'es-es': 'Habilitar acceso a la colección', + 'fr-fr': "Autoriser l'accès à la collection", + 'uk-ua': 'Увімкнути доступ до колекції', + 'de-ch': 'Sammlungszugriff aktivieren', + 'pt-br': 'Habilitar acesso à coleção', }, createRole: { - "en-us": "Create Role", - "ru-ru": "Создать роль", - "es-es": "Crear rol", - "fr-fr": "Créer un rôle", - "uk-ua": "Створити роль", - "de-ch": "Rolle erstellen", - "pt-br": "Criar função", + 'en-us': 'Create Role', + 'ru-ru': 'Создать роль', + 'es-es': 'Crear rol', + 'fr-fr': 'Créer un rôle', + 'uk-ua': 'Створити роль', + 'de-ch': 'Rolle erstellen', + 'pt-br': 'Criar função', }, newRole: { - "en-us": "New Role", - "ru-ru": "Новая роль", - "es-es": "Nuevo rol", - "fr-fr": "Nouveau rôle", - "uk-ua": "Нова роль", - "de-ch": "Neue Rolle", - "pt-br": "Nova função", + 'en-us': 'New Role', + 'ru-ru': 'Новая роль', + 'es-es': 'Nuevo rol', + 'fr-fr': 'Nouveau rôle', + 'uk-ua': 'Нова роль', + 'de-ch': 'Neue Rolle', + 'pt-br': 'Nova função', }, fromLibrary: { - "en-us": "From library:", - "ru-ru": "Из библиотеки:", - "es-es": "De la biblioteca:", - "fr-fr": "Depuis la bibliothèque :", - "uk-ua": "З бібліотеки:", - "de-ch": "Aus der Bibliothek:", - "pt-br": "Da biblioteca:", + 'en-us': 'From library:', + 'ru-ru': 'Из библиотеки:', + 'es-es': 'De la biblioteca:', + 'fr-fr': 'Depuis la bibliothèque :', + 'uk-ua': 'З бібліотеки:', + 'de-ch': 'Aus der Bibliothek:', + 'pt-br': 'Da biblioteca:', }, fromExistingRole: { - "en-us": "From an existing role:", - "ru-ru": "Из существующей роли:", - "es-es": "Desde un rol existente:", - "fr-fr": "À partir d'un rôle existant :", - "uk-ua": "З існуючої ролі:", - "de-ch": "Aus einer vorhandenen Rolle:", - "pt-br": "De uma função existente:", + 'en-us': 'From an existing role:', + 'ru-ru': 'Из существующей роли:', + 'es-es': 'Desde un rol existente:', + 'fr-fr': "À partir d'un rôle existant :", + 'uk-ua': 'З існуючої ролі:', + 'de-ch': 'Aus einer vorhandenen Rolle:', + 'pt-br': 'De uma função existente:', }, createNewRoles: { - "en-us": "Create new roles:", - "ru-ru": "Создать новые роли:", - "es-es": "Crear nuevos roles:", - "fr-fr": "Créer de nouveaux rôles :", - "uk-ua": "Створити нові ролі:", - "de-ch": "Neue Rollen erstellen:", - "pt-br": "Criar novas funções:", + 'en-us': 'Create new roles:', + 'ru-ru': 'Создать новые роли:', + 'es-es': 'Crear nuevos roles:', + 'fr-fr': 'Créer de nouveaux rôles :', + 'uk-ua': 'Створити нові ролі:', + 'de-ch': 'Neue Rollen erstellen:', + 'pt-br': 'Criar novas funções:', }, updateExistingRoles: { - "en-us": "Update existing roles:", - "ru-ru": "Обновить существующие роли:", - "es-es": "Actualizar roles existentes:", - "fr-fr": "Mettre à jour les rôles existants :", - "uk-ua": "Оновити існуючі ролі:", - "de-ch": "Vorhandene Rollen aktualisieren:", - "pt-br": "Atualizar funções existentes:", + 'en-us': 'Update existing roles:', + 'ru-ru': 'Обновить существующие роли:', + 'es-es': 'Actualizar roles existentes:', + 'fr-fr': 'Mettre à jour les rôles existants :', + 'uk-ua': 'Оновити існуючі ролі:', + 'de-ch': 'Vorhandene Rollen aktualisieren:', + 'pt-br': 'Atualizar funções existentes:', }, unchangedRoles: { - "en-us": "Unchanged roles:", - "ru-ru": "Неизменные роли:", - "es-es": "Roles sin cambios:", - "fr-fr": "Rôles inchangés :", - "uk-ua": "Незмінні ролі:", - "de-ch": "Unveränderte Rollen:", - "pt-br": "Funções inalteradas:", + 'en-us': 'Unchanged roles:', + 'ru-ru': 'Неизменные роли:', + 'es-es': 'Roles sin cambios:', + 'fr-fr': 'Rôles inchangés :', + 'uk-ua': 'Незмінні ролі:', + 'de-ch': 'Unveränderte Rollen:', + 'pt-br': 'Funções inalteradas:', }, institutionAdmin: { - "en-us": "Institution Admin", - "ru-ru": "Администратор учреждения", - "es-es": "Administrador de la institución", - "fr-fr": "Administrateur de l'établissement", - "uk-ua": "Адміністратор установи", - "de-ch": "Institutionsadministrator", - "pt-br": "Administrador da Instituição", + 'en-us': 'Institution Admin', + 'ru-ru': 'Администратор учреждения', + 'es-es': 'Administrador de la institución', + 'fr-fr': "Administrateur de l'établissement", + 'uk-ua': 'Адміністратор установи', + 'de-ch': 'Institutionsadministrator', + 'pt-br': 'Administrador da Instituição', }, createInviteLink: { - "en-us": "Create Invite Link", - "ru-ru": "Создать ссылку для приглашения", - "es-es": "Crear enlace de invitación", - "fr-fr": "Créer un lien d'invitation", - "uk-ua": "Створити посилання для запрошення", - "de-ch": "Einladungslink erstellen", - "pt-br": "Criar link de convite", + 'en-us': 'Create Invite Link', + 'ru-ru': 'Создать ссылку для приглашения', + 'es-es': 'Crear enlace de invitación', + 'fr-fr': "Créer un lien d'invitation", + 'uk-ua': 'Створити посилання для запрошення', + 'de-ch': 'Einladungslink erstellen', + 'pt-br': 'Criar link de convite', }, userInviteLink: { - "en-us": "User Invite Link", - "ru-ru": "Ссылка для приглашения пользователя", - "es-es": "Enlace de invitación de usuario", - "fr-fr": "Lien d'invitation utilisateur", - "uk-ua": "Посилання для запрошення користувача", - "de-ch": "Benutzereinladungslink", - "pt-br": "Link de convite do usuário", + 'en-us': 'User Invite Link', + 'ru-ru': 'Ссылка для приглашения пользователя', + 'es-es': 'Enlace de invitación de usuario', + 'fr-fr': "Lien d'invitation utilisateur", + 'uk-ua': 'Посилання для запрошення користувача', + 'de-ch': 'Benutzereinladungslink', + 'pt-br': 'Link de convite do usuário', }, userInviteLinkDescription: { - "en-us": - "Send the following link to {userName:string} to allow them to log in for the first time.", - "ru-ru": - "Отправьте следующую ссылку {userName:string}, чтобы разрешить ему войти в систему в первый раз.", - "es-es": - "Envíe el siguiente enlace a {userName:string} para permitirles iniciar sesión por primera vez.", - "fr-fr": - "Envoyez le lien suivant à {userName:string} pour leur permettre de se connecter pour la première fois.", - "uk-ua": - "Надішліть наступне посилання користувачу {userName:string}, щоб дозволити йому вперше увійти в систему.", - "de-ch": - "Senden Sie den folgenden Link an {userName:string}, um ihnen die erstmalige Anmeldung zu ermöglichen.", - "pt-br": - "Envie o seguinte link para {userName:string} para permitir que eles façam login pela primeira vez.", + 'en-us': + 'Send the following link to {userName:string} to allow them to log in for the first time.', + 'ru-ru': + 'Отправьте следующую ссылку {userName:string}, чтобы разрешить ему войти в систему в первый раз.', + 'es-es': + 'Envíe el siguiente enlace a {userName:string} para permitirles iniciar sesión por primera vez.', + 'fr-fr': + 'Envoyez le lien suivant à {userName:string} pour leur permettre de se connecter pour la première fois.', + 'uk-ua': + 'Надішліть наступне посилання користувачу {userName:string}, щоб дозволити йому вперше увійти в систему.', + 'de-ch': + 'Senden Sie den folgenden Link an {userName:string}, um ihnen die erstmalige Anmeldung zu ermöglichen.', + 'pt-br': + 'Envie o seguinte link para {userName:string} para permitir que eles façam login pela primeira vez.', }, noProvidersForUserInviteLink: { - "en-us": - "No external identity provider is configured. You can configure some in Specify 7 server settings", - "ru-ru": - "Внешний поставщик удостоверений не настроен. Вы можете настроить некоторые параметры в разделе «Укажите 7 параметров сервера»", - "es-es": - "No hay configurado ningún proveedor de identidad externo. Puede configurar algunos en configuraciones de servidor de Specify 7", - "fr-fr": + 'en-us': + 'No external identity provider is configured. You can configure some in Specify 7 server settings', + 'ru-ru': + 'Внешний поставщик удостоверений не настроен. Вы можете настроить некоторые параметры в разделе «Укажите 7 параметров сервера»', + 'es-es': + 'No hay configurado ningún proveedor de identidad externo. Puede configurar algunos en configuraciones de servidor de Specify 7', + 'fr-fr': "Aucun fournisseur d'identité externe n'est configuré. Vous pouvez en configurer certains dans les paramètres du serveur de Specify 7", - "uk-ua": - "Зовнішнього постачальника ідентифікаційних даних не налаштовано. Ви можете налаштувати деякі з них у розділі «Specify 7 параметрів сервера»", - "de-ch": - "Es ist kein externer Identitätsanbieter konfiguriert. Sie können einige in den Servereinstellungen festlegen.", - "pt-br": + 'uk-ua': + 'Зовнішнього постачальника ідентифікаційних даних не налаштовано. Ви можете налаштувати деякі з них у розділі «Specify 7 параметрів сервера»', + 'de-ch': + 'Es ist kein externer Identitätsanbieter konfiguriert. Sie können einige in den Servereinstellungen festlegen.', + 'pt-br': 'Nenhum provedor de identidade externo está configurado. Você pode configurar alguns em "Especificar 7 configurações do servidor".', }, legacyPermissions: { - "en-us": "Specify 6 Permissions", - "ru-ru": "Укажите 6 разрешений", - "es-es": "Permisos de Specify 6", - "fr-fr": "Autorisations de Specify 6", - "uk-ua": "Specify 6 дозволів", - "de-ch": "Geben Sie 6 Berechtigungen an", - "pt-br": "Especifique 6 permissões", + 'en-us': 'Specify 6 Permissions', + 'ru-ru': 'Укажите 6 разрешений', + 'es-es': 'Permisos de Specify 6', + 'fr-fr': 'Autorisations de Specify 6', + 'uk-ua': 'Specify 6 дозволів', + 'de-ch': 'Geben Sie 6 Berechtigungen an', + 'pt-br': 'Especifique 6 permissões', }, setPasswordBeforeSavePrompt: { - "en-us": + 'en-us': "Consider setting a password for this user. Users without a password won't be able to sign in", - "ru-ru": - "Рассмотрите возможность установки пароля для этого пользователя. Пользователи без пароля не смогут войти в систему", - "es-es": - "Considere establecer una contraseña para este usuario. Los usuarios sin contraseña no podrán iniciar sesión", - "fr-fr": - "Pensez à définir un mot de passe pour cet utilisateur. Les utilisateurs sans mot de passe ne pourront pas se connecter", - "uk-ua": - "Спробуйте встановити пароль для цього користувача. Користувачі без пароля не зможуть увійти", - "de-ch": - "Erwägen Sie, für diesen Benutzer ein Passwort festzulegen. Benutzer ohne Passwort können sich nicht anmelden.", - "pt-br": - "Considere definir uma senha para este usuário. Usuários sem senha não conseguirão fazer login.", + 'ru-ru': + 'Рассмотрите возможность установки пароля для этого пользователя. Пользователи без пароля не смогут войти в систему', + 'es-es': + 'Considere establecer una contraseña para este usuario. Los usuarios sin contraseña no podrán iniciar sesión', + 'fr-fr': + 'Pensez à définir un mot de passe pour cet utilisateur. Les utilisateurs sans mot de passe ne pourront pas se connecter', + 'uk-ua': + 'Спробуйте встановити пароль для цього користувача. Користувачі без пароля не зможуть увійти', + 'de-ch': + 'Erwägen Sie, für diesen Benutzer ein Passwort festzulegen. Benutzer ohne Passwort können sich nicht anmelden.', + 'pt-br': + 'Considere definir uma senha para este usuário. Usuários sem senha não conseguirão fazer login.', }, setCollections: { - "en-us": "Set Collections", - "ru-ru": "Набор Коллекций", - "es-es": "Establecer colecciones", - "fr-fr": "Collections d'ensembles", - "uk-ua": "Колекції наборів", - "de-ch": "Sammlungen festlegen", - "pt-br": "Conjuntos de coleções", + 'en-us': 'Set Collections', + 'ru-ru': 'Набор Коллекций', + 'es-es': 'Establecer colecciones', + 'fr-fr': "Collections d'ensembles", + 'uk-ua': 'Колекції наборів', + 'de-ch': 'Sammlungen festlegen', + 'pt-br': 'Conjuntos de coleções', }, agentInUse: { - "en-us": "This agent is already associated with a different user.", - "ru-ru": "Этот агент уже связан с другим пользователем.", - "es-es": "Este agente ya está asociado con un usuario diferente.", - "fr-fr": "Cet agent est déjà associé à un autre utilisateur.", - "uk-ua": "Цей агент вже пов'язаний з іншим користувачем.", - "de-ch": "Dieser Agent ist bereits einem anderen Benutzer zugeordnet.", - "pt-br": "Este agente já está associado a um usuário diferente.", + 'en-us': 'This agent is already associated with a different user.', + 'ru-ru': 'Этот агент уже связан с другим пользователем.', + 'es-es': 'Este agente ya está asociado con un usuario diferente.', + 'fr-fr': 'Cet agent est déjà associé à un autre utilisateur.', + 'uk-ua': "Цей агент вже пов'язаний з іншим користувачем.", + 'de-ch': 'Dieser Agent ist bereits einem anderen Benutzer zugeordnet.', + 'pt-br': 'Este agente já está associado a um usuário diferente.', }, setAgentsBeforeProceeding: { - "en-us": "Please set the following agents before proceeding:", - "ru-ru": "Прежде чем продолжить, установите следующие агенты:", - "es-es": "Configure los siguientes agentes antes de continuar:", - "uk-ua": "Будь ласка, налаштуйте наступних агентів, перш ніж продовжити:", - "de-ch": - "Bitte legen Sie die folgenden Agenten fest, bevor Sie fortfahren:", - "fr-fr": "Veuillez définir les agents suivants avant de continuer :", - "pt-br": "Defina os seguintes agentes antes de prosseguir:", + 'en-us': 'Please set the following agents before proceeding:', + 'ru-ru': 'Прежде чем продолжить, установите следующие агенты:', + 'es-es': 'Configure los siguientes agentes antes de continuar:', + 'uk-ua': 'Будь ласка, налаштуйте наступних агентів, перш ніж продовжити:', + 'de-ch': + 'Bitte legen Sie die folgenden Agenten fest, bevor Sie fortfahren:', + 'fr-fr': 'Veuillez définir les agents suivants avant de continuer :', + 'pt-br': 'Defina os seguintes agentes antes de prosseguir:', }, externalIdentityProviders: { - "en-us": "External identity providers:", - "es-es": "Proveedores de identidad externos:", - "fr-fr": "Fournisseurs d'identité externes :", - "de-ch": "Externe Identitätsanbieter:", - "ru-ru": "Внешние поставщики удостоверений:", - "uk-ua": "Зовнішні постачальники ідентифікаційних даних:", - "pt-br": "Provedores de identidade externos:", + 'en-us': 'External identity providers:', + 'es-es': 'Proveedores de identidad externos:', + 'fr-fr': "Fournisseurs d'identité externes :", + 'de-ch': 'Externe Identitätsanbieter:', + 'ru-ru': 'Внешние поставщики удостоверений:', + 'uk-ua': 'Зовнішні постачальники ідентифікаційних даних:', + 'pt-br': 'Provedores de identidade externos:', }, allTables: { - "en-us": "All tables", - "ru-ru": "Все таблицы", - "es-es": "Todas las tablas", - "fr-fr": "Tous les tableaux", - "uk-ua": "Усі столи", - "de-ch": "Alle Tabellen", - "pt-br": "Todas as tabelas", + 'en-us': 'All tables', + 'ru-ru': 'Все таблицы', + 'es-es': 'Todas las tablas', + 'fr-fr': 'Tous les tableaux', + 'uk-ua': 'Усі столи', + 'de-ch': 'Alle Tabellen', + 'pt-br': 'Todas as tabelas', }, loadingAdmins: { - "en-us": "Loading admins...", - "ru-ru": "Загрузка администраторов...", - "es-es": "Cargando administradores...", - "fr-fr": "Chargement des administrateurs…", - "uk-ua": "Завантаження адміністраторів...", - "de-ch": "Administratoren werden geladen …", - "pt-br": "Carregando administradores...", + 'en-us': 'Loading admins...', + 'ru-ru': 'Загрузка администраторов...', + 'es-es': 'Cargando administradores...', + 'fr-fr': 'Chargement des administrateurs…', + 'uk-ua': 'Завантаження адміністраторів...', + 'de-ch': 'Administratoren werden geladen …', + 'pt-br': 'Carregando administradores...', }, specifyAdmin: { - comment: "Shown next to user name for admin users", - "en-us": "(Specify 7 Admin)", - "ru-ru": "(Укажите 7 Администратор)", - "es-es": "(Administradores de Specify 7)", - "fr-fr": "(Spécifiez 7 Admin)", - "uk-ua": "(Specify 7 Адміністратор)", - "de-ch": "(Geben Sie 7 Admin an)", - "pt-br": "(Especifique 7 Admin)", + comment: 'Shown next to user name for admin users', + 'en-us': '(Specify 7 Admin)', + 'ru-ru': '(Укажите 7 Администратор)', + 'es-es': '(Administradores de Specify 7)', + 'fr-fr': '(Spécifiez 7 Admin)', + 'uk-ua': '(Specify 7 Адміністратор)', + 'de-ch': '(Geben Sie 7 Admin an)', + 'pt-br': '(Especifique 7 Admin)', }, legacyAdmin: { - comment: "Shown next to user name for admin users", - "en-us": "(Specify 6 Admin)", - "ru-ru": "(Укажите 6 Администратор)", - "es-es": "(Administradores de Specify 6)", - "fr-fr": "(Spécifiez 6 Admin)", - "uk-ua": "(Specify 6 Адміністратор)", - "de-ch": "(Geben Sie 6 Admin an)", - "pt-br": "(Especifique 6 Admin)", + comment: 'Shown next to user name for admin users', + 'en-us': '(Specify 6 Admin)', + 'ru-ru': '(Укажите 6 Администратор)', + 'es-es': '(Administradores de Specify 6)', + 'fr-fr': '(Spécifiez 6 Admin)', + 'uk-ua': '(Specify 6 Адміністратор)', + 'de-ch': '(Geben Sie 6 Admin an)', + 'pt-br': '(Especifique 6 Admin)', }, deleteRoleWithUsers: { - "en-us": "Delete role that has users?", - "ru-ru": "Удалить роль, в которой есть пользователи?", - "es-es": "¿Eliminar rol que tiene usuarios?", - "fr-fr": "Supprimer le rôle qui a des utilisateurs ?", - "uk-ua": "Видалити роль, яка має користувачів?", - "de-ch": "Rolle löschen, die Benutzer hat?", - "pt-br": "Excluir função que possui usuários?", + 'en-us': 'Delete role that has users?', + 'ru-ru': 'Удалить роль, в которой есть пользователи?', + 'es-es': '¿Eliminar rol que tiene usuarios?', + 'fr-fr': 'Supprimer le rôle qui a des utilisateurs ?', + 'uk-ua': 'Видалити роль, яка має користувачів?', + 'de-ch': 'Rolle löschen, die Benutzer hat?', + 'pt-br': 'Excluir função que possui usuários?', }, deleteRoleWithUsersDescription: { - "en-us": "Users will not be deleted, but they would lose this role.", - "ru-ru": "Пользователи не будут удалены, но они потеряют эту роль.", - "es-es": "Los usuarios no serán eliminados, pero perderán este rol.", - "fr-fr": - "Les utilisateurs ne seront pas supprimés, mais ils perdront ce rôle.", - "uk-ua": "Користувачів не буде видалено, але вони втратять цю роль.", - "de-ch": - "Benutzer werden nicht gelöscht, sie würden jedoch diese Rolle verlieren.", - "pt-br": "Os usuários não serão excluídos, mas perderão essa função.", + 'en-us': 'Users will not be deleted, but they would lose this role.', + 'ru-ru': 'Пользователи не будут удалены, но они потеряют эту роль.', + 'es-es': 'Los usuarios no serán eliminados, pero perderán este rol.', + 'fr-fr': + 'Les utilisateurs ne seront pas supprimés, mais ils perdront ce rôle.', + 'uk-ua': 'Користувачів не буде видалено, але вони втратять цю роль.', + 'de-ch': + 'Benutzer werden nicht gelöscht, sie würden jedoch diese Rolle verlieren.', + 'pt-br': 'Os usuários não serão excluídos, mas perderão essa função.', }, institutionPolicies: { - "en-us": - "Custom Institution-level Policies (applies to all assigned collections)", - "ru-ru": - "Пользовательские политики на уровне учреждения (применяются ко всем назначенным коллекциям)", - "es-es": - "Políticas personalizadas a nivel de Institución (se aplican a todas las colecciones asignadas)", - "fr-fr": + 'en-us': + 'Custom Institution-level Policies (applies to all assigned collections)', + 'ru-ru': + 'Пользовательские политики на уровне учреждения (применяются ко всем назначенным коллекциям)', + 'es-es': + 'Políticas personalizadas a nivel de Institución (se aplican a todas las colecciones asignadas)', + 'fr-fr': "Politiques personnalisées au niveau de l'institution (s'appliquent à toutes les collections attribuées)", - "uk-ua": - "Спеціальні правила на рівні установи (стосуються всіх призначених колекцій)", - "de-ch": - "Benutzerdefinierte Richtlinien auf Institutionsebene (gilt für alle zugewiesenen Sammlungen)", - "pt-br": - "Políticas personalizadas em nível de instituição (aplica-se a todas as coleções atribuídas)", + 'uk-ua': + 'Спеціальні правила на рівні установи (стосуються всіх призначених колекцій)', + 'de-ch': + 'Benutzerdefinierte Richtlinien auf Institutionsebene (gilt für alle zugewiesenen Sammlungen)', + 'pt-br': + 'Políticas personalizadas em nível de instituição (aplica-se a todas as coleções atribuídas)', }, cantRemoveLastAdmin: { - "en-us": "Can't remove Institution Admin status", - "ru-ru": "Невозможно удалить статус администратора учреждения", - "es-es": - "No se puede eliminar el estatus de Administrador de la Institución", - "fr-fr": + 'en-us': "Can't remove Institution Admin status", + 'ru-ru': 'Невозможно удалить статус администратора учреждения', + 'es-es': + 'No se puede eliminar el estatus de Administrador de la Institución', + 'fr-fr': "Impossible de supprimer le statut d'administrateur de l'établissement", - "uk-ua": "Не вдається видалити статус адміністратора установи", - "de-ch": - "Der Status „Institutionsadministrator“ kann nicht entfernt werden", - "pt-br": "Não é possível remover o status de administrador da instituição", + 'uk-ua': 'Не вдається видалити статус адміністратора установи', + 'de-ch': + 'Der Status „Institutionsadministrator“ kann nicht entfernt werden', + 'pt-br': 'Não é possível remover o status de administrador da instituição', }, cantRemoveLastAdminDescription: { - "en-us": "There must be at least one Institution Admin in institution", - "ru-ru": - "В учреждении должен быть как минимум один администратор учреждения.", - "es-es": - "En la Institución debe haber al menos un Administrador de la Institución", - "fr-fr": + 'en-us': 'There must be at least one Institution Admin in institution', + 'ru-ru': + 'В учреждении должен быть как минимум один администратор учреждения.', + 'es-es': + 'En la Institución debe haber al menos un Administrador de la Institución', + 'fr-fr': "Il doit y avoir au moins un administrateur d'établissement dans l'établissement", - "uk-ua": "У закладі має бути принаймні один адміністратор закладу", - "de-ch": - "Es muss mindestens einen Institutionsadministrator in der Institution geben", - "pt-br": - "Deve haver pelo menos um administrador da instituição na instituição", + 'uk-ua': 'У закладі має бути принаймні один адміністратор закладу', + 'de-ch': + 'Es muss mindestens einen Institutionsadministrator in der Institution geben', + 'pt-br': + 'Deve haver pelo menos um administrador da instituição na instituição', }, switchToHorizontalLayout: { - "en-us": "Switch to horizontal layout", - "ru-ru": "Переключиться на горизонтальную компоновку", - "es-es": "Cambiar a diseño horizontal", - "fr-fr": "Passer à l'affichage horizontal", - "uk-ua": "Перейти до горизонтального розташування", - "de-ch": "Zum horizontalen Layout wechseln", - "pt-br": "Mudar para layout horizontal", + 'en-us': 'Switch to horizontal layout', + 'ru-ru': 'Переключиться на горизонтальную компоновку', + 'es-es': 'Cambiar a diseño horizontal', + 'fr-fr': "Passer à l'affichage horizontal", + 'uk-ua': 'Перейти до горизонтального розташування', + 'de-ch': 'Zum horizontalen Layout wechseln', + 'pt-br': 'Mudar para layout horizontal', }, switchToVerticalLayout: { - "en-us": "Switch to vertical layout", - "ru-ru": "Переключиться на вертикальную компоновку", - "es-es": "Cambiar al diseño vertical", - "fr-fr": "Passer à l'affichage vertical", - "de-ch": "Zum vertikalen Layout wechseln", - "uk-ua": "Перейти до вертикального розташування", - "pt-br": "Mudar para layout vertical", + 'en-us': 'Switch to vertical layout', + 'ru-ru': 'Переключиться на вертикальную компоновку', + 'es-es': 'Cambiar al diseño vertical', + 'fr-fr': "Passer à l'affichage vertical", + 'de-ch': 'Zum vertikalen Layout wechseln', + 'uk-ua': 'Перейти до вертикального розташування', + 'pt-br': 'Mudar para layout vertical', }, advancedTables: { - "en-us": "Advanced tables", - "ru-ru": "Расширенные таблицы", - "es-es": "Tablas avanzadas", - "fr-fr": "Tableaux avancés", - "uk-ua": "Розширені таблиці", - "de-ch": "Erweiterte Tabellen", - "pt-br": "Tabelas avançadas", + 'en-us': 'Advanced tables', + 'ru-ru': 'Расширенные таблицы', + 'es-es': 'Tablas avanzadas', + 'fr-fr': 'Tableaux avancés', + 'uk-ua': 'Розширені таблиці', + 'de-ch': 'Erweiterte Tabellen', + 'pt-br': 'Tabelas avançadas', }, excludedInstitutionalPolicies: { - "en-us": "Excluded institutional policies:", - "ru-ru": "Исключенные институциональные политики:", - "es-es": "Políticas institucionales excluidas:", - "fr-fr": "Politiques institutionnelles exclues :", - "uk-ua": "Виключені інституційні політики:", - "de-ch": "Ausgeschlossene institutionelle Richtlinien:", - "pt-br": "Políticas institucionais excluídas:", + 'en-us': 'Excluded institutional policies:', + 'ru-ru': 'Исключенные институциональные политики:', + 'es-es': 'Políticas institucionales excluidas:', + 'fr-fr': 'Politiques institutionnelles exclues :', + 'uk-ua': 'Виключені інституційні політики:', + 'de-ch': 'Ausgeschlossene institutionelle Richtlinien:', + 'pt-br': 'Políticas institucionais excluídas:', }, excludedInstitutionalPoliciesDescription: { - "en-us": - "(Some policies that apply only at the institution-level are not present here at the collection-level.)", - "ru-ru": - "(Некоторые политики, которые применяются только на уровне учреждения, не представлены здесь на уровне сбора.)", - "es-es": - "(Algunas políticas que se aplican solo a nivel de institución no están presentes aquí, a nivel de colección)", - "fr-fr": - "(Certaines politiques qui s’appliquent uniquement au niveau de l’institution ne sont pas présentes ici au niveau de la collection.)", - "uk-ua": - "(Деякі політики, що застосовуються лише на рівні установи, відсутні тут на рівні колекції.)", - "de-ch": - "(Einige Richtlinien, die nur auf Institutionsebene gelten, sind hier auf Sammlungsebene nicht vorhanden.)", - "pt-br": - "(Algumas políticas que se aplicam apenas ao nível da instituição não estão presentes aqui no nível da coleção.)", + 'en-us': + '(Some policies that apply only at the institution-level are not present here at the collection-level.)', + 'ru-ru': + '(Некоторые политики, которые применяются только на уровне учреждения, не представлены здесь на уровне сбора.)', + 'es-es': + '(Algunas políticas que se aplican solo a nivel de institución no están presentes aquí, a nivel de colección)', + 'fr-fr': + '(Certaines politiques qui s’appliquent uniquement au niveau de l’institution ne sont pas présentes ici au niveau de la collection.)', + 'uk-ua': + '(Деякі політики, що застосовуються лише на рівні установи, відсутні тут на рівні колекції.)', + 'de-ch': + '(Einige Richtlinien, die nur auf Institutionsebene gelten, sind hier auf Sammlungsebene nicht vorhanden.)', + 'pt-br': + '(Algumas políticas que se aplicam apenas ao nível da instituição não estão presentes aqui no nível da coleção.)', }, accountSetupOptions: { - "en-us": "Account Setup Options", - "ru-ru": "Параметры настройки учетной записи", - "es-es": "Opciones de configuración de cuenta", - "fr-fr": "Options de configuration du compte", - "uk-ua": "Параметри налаштування облікового запису", - "de-ch": "Optionen zur Kontoeinrichtung", - "pt-br": "Opções de configuração de conta", + 'en-us': 'Account Setup Options', + 'ru-ru': 'Параметры настройки учетной записи', + 'es-es': 'Opciones de configuración de cuenta', + 'fr-fr': 'Options de configuration du compte', + 'uk-ua': 'Параметри налаштування облікового запису', + 'de-ch': 'Optionen zur Kontoeinrichtung', + 'pt-br': 'Opções de configuração de conta', }, currentUser: { - "en-us": "Current User", - "ru-ru": "Текущий пользователь", - "de-ch": "Aktueller Benutzer", - "es-es": "Usuario actual", - "fr-fr": "Utilisateur actuel", - "uk-ua": "Поточний користувач", - "pt-br": "Usuário atual", + 'en-us': 'Current User', + 'ru-ru': 'Текущий пользователь', + 'de-ch': 'Aktueller Benutzer', + 'es-es': 'Usuario actual', + 'fr-fr': 'Utilisateur actuel', + 'uk-ua': 'Поточний користувач', + 'pt-br': 'Usuário atual', }, addRole: { - "en-us": "Add Role", - "de-ch": "Rolle hinzufügen", - "es-es": "Agregar rol", - "fr-fr": "Ajouter un rôle", - "ru-ru": "Добавить роль", - "uk-ua": "Додати роль", - "pt-br": "Adicionar função", + 'en-us': 'Add Role', + 'de-ch': 'Rolle hinzufügen', + 'es-es': 'Agregar rol', + 'fr-fr': 'Ajouter un rôle', + 'ru-ru': 'Добавить роль', + 'uk-ua': 'Додати роль', + 'pt-br': 'Adicionar função', }, addUser: { - "en-us": "Add User", - "de-ch": "Benutzer hinzufügen", - "es-es": "Agregar usuario", - "fr-fr": "Ajouter un utilisateur", - "ru-ru": "Добавить пользователя", - "uk-ua": "Додати користувача", - "pt-br": "Adicionar usuário", + 'en-us': 'Add User', + 'de-ch': 'Benutzer hinzufügen', + 'es-es': 'Agregar usuario', + 'fr-fr': 'Ajouter un utilisateur', + 'ru-ru': 'Добавить пользователя', + 'uk-ua': 'Додати користувача', + 'pt-br': 'Adicionar usuário', }, } as const); diff --git a/specifyweb/frontend/js_src/lib/localization/wbPlan.ts b/specifyweb/frontend/js_src/lib/localization/wbPlan.ts index 23e71f403cc..77c62f9d195 100644 --- a/specifyweb/frontend/js_src/lib/localization/wbPlan.ts +++ b/specifyweb/frontend/js_src/lib/localization/wbPlan.ts @@ -4,682 +4,682 @@ * @module */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const wbPlanText = createDictionary({ dataMapper: { - "en-us": "Data Mapper", - "ru-ru": "Сопоставления", - "es-es": "Mapeador de Datos", - "fr-fr": "Cartographe de données", - "uk-ua": "Папки даних", - "de-ch": "Datenzuordnung", - "pt-br": "Mapeador de Dados", + 'en-us': 'Data Mapper', + 'ru-ru': 'Сопоставления', + 'es-es': 'Mapeador de Datos', + 'fr-fr': 'Cartographe de données', + 'uk-ua': 'Папки даних', + 'de-ch': 'Datenzuordnung', + 'pt-br': 'Mapeador de Dados', }, noUploadPlan: { - "en-us": "No Upload Plan is Defined", - "ru-ru": "План загрузки не определен", - "es-es": "No hay definido ningún plan de carga", - "fr-fr": "Aucun plan de téléchargement n'est défini", - "uk-ua": "План завантаження не визначено", - "de-ch": "Es wurde kein Uploadplan definiert", - "pt-br": "Nenhum plano de upload está definido", + 'en-us': 'No Upload Plan is Defined', + 'ru-ru': 'План загрузки не определен', + 'es-es': 'No hay definido ningún plan de carga', + 'fr-fr': "Aucun plan de téléchargement n'est défini", + 'uk-ua': 'План завантаження не визначено', + 'de-ch': 'Es wurde kein Uploadplan definiert', + 'pt-br': 'Nenhum plano de upload está definido', }, noUploadPlanDescription: { - "en-us": - "No Upload Plan has been defined for this Data Set. Create one now?", - "ru-ru": - "Для этого набора данных не определен план загрузки. Создать эго сейчас?", - "es-es": - "No se ha definido ningún plan de carga para este conjunto de datos. ¿Crear uno ahora?", - "fr-fr": + 'en-us': + 'No Upload Plan has been defined for this Data Set. Create one now?', + 'ru-ru': + 'Для этого набора данных не определен план загрузки. Создать эго сейчас?', + 'es-es': + 'No se ha definido ningún plan de carga para este conjunto de datos. ¿Crear uno ahora?', + 'fr-fr': "Aucun plan de téléchargement n'a été défini pour cet ensemble de données. Voulez-vous en créer un maintenant ?", - "uk-ua": - "Для цього набору даних не визначено план завантаження. Створити зараз?", - "de-ch": - "Für diesen Datensatz wurde noch kein Upload-Plan definiert. Jetzt einen erstellen?", - "pt-br": - "Nenhum Plano de Upload foi definido para este Conjunto de Dados. Criar um agora?", + 'uk-ua': + 'Для цього набору даних не визначено план завантаження. Створити зараз?', + 'de-ch': + 'Für diesen Datensatz wurde noch kein Upload-Plan definiert. Jetzt einen erstellen?', + 'pt-br': + 'Nenhum Plano de Upload foi definido para este Conjunto de Dados. Criar um agora?', }, unmappedColumn: { - "en-us": "Unmapped Column", - "ru-ru": "Несопоставленный столбец", - "es-es": "Columna no asignada", - "fr-fr": "Colonne non mappée", - "uk-ua": "Невідповідний стовпець", - "de-ch": "Nicht gemappte Spalte", - "pt-br": "Coluna não mapeada", + 'en-us': 'Unmapped Column', + 'ru-ru': 'Несопоставленный столбец', + 'es-es': 'Columna no asignada', + 'fr-fr': 'Colonne non mappée', + 'uk-ua': 'Невідповідний стовпець', + 'de-ch': 'Nicht gemappte Spalte', + 'pt-br': 'Coluna não mapeada', }, notSelected: { - comment: "Show in pick list in Data Mapper when column is not mapped", - "en-us": "NONE SELECTED", - "ru-ru": "НЕ ВЫБРАНО", - "es-es": "NO ASIGNADO/MAPEADO", - "fr-fr": "AUCUN SÉLECTIONNÉ", - "uk-ua": "НЕ ВИБРАНО", - "de-ch": "Nicht kartiert", - "pt-br": "NENHUM SELECIONADO", + comment: 'Show in pick list in Data Mapper when column is not mapped', + 'en-us': 'NONE SELECTED', + 'ru-ru': 'НЕ ВЫБРАНО', + 'es-es': 'NO ASIGNADO/MAPEADO', + 'fr-fr': 'AUCUN SÉLECTIONNÉ', + 'uk-ua': 'НЕ ВИБРАНО', + 'de-ch': 'Nicht kartiert', + 'pt-br': 'NENHUM SELECIONADO', }, unmapped: { - "en-us": "Unmapped", - "ru-ru": "Не сопоставлений", - "es-es": "sin mapear", - "fr-fr": "Non cartographié", - "uk-ua": "Не зіставлений", - "de-ch": "Zuordnung ist erforderlich", - "pt-br": "Não mapeado", + 'en-us': 'Unmapped', + 'ru-ru': 'Не сопоставлений', + 'es-es': 'sin mapear', + 'fr-fr': 'Non cartographié', + 'uk-ua': 'Не зіставлений', + 'de-ch': 'Zuordnung ist erforderlich', + 'pt-br': 'Não mapeado', }, mapped: { - "en-us": "Mapped", - "ru-ru": "Сопоставлений", - "es-es": "Mapeado", - "fr-fr": "Cartographié", - "uk-ua": "Нанесено на карту", - "de-ch": "Kartiert", - "pt-br": "Mapeado", + 'en-us': 'Mapped', + 'ru-ru': 'Сопоставлений', + 'es-es': 'Mapeado', + 'fr-fr': 'Cartographié', + 'uk-ua': 'Нанесено на карту', + 'de-ch': 'Kartiert', + 'pt-br': 'Mapeado', }, matchBehavior: { - "en-us": "Match Behavior:", - "ru-ru": "Поведение при совпадении:", - "es-es": "Coincidir en comportamiento:", - "fr-fr": "Comportement du match :", - "uk-ua": "Поведінка відповідності:", - "de-ch": "Übereinstimmungsverhalten:", - "pt-br": "Comportamento da partida:", + 'en-us': 'Match Behavior:', + 'ru-ru': 'Поведение при совпадении:', + 'es-es': 'Coincidir en comportamiento:', + 'fr-fr': 'Comportement du match :', + 'uk-ua': 'Поведінка відповідності:', + 'de-ch': 'Übereinstimmungsverhalten:', + 'pt-br': 'Comportamento da partida:', }, columnMapping: { - "en-us": "Column Mapping", - "ru-ru": "Сопоставление столбцов", - "es-es": "Asignación/Mapeo de columnas", - "fr-fr": "Mappage des colonnes", - "uk-ua": "Відображення стовпців", - "de-ch": "Spaltenzuordnung", - "pt-br": "Mapeamento de colunas", + 'en-us': 'Column Mapping', + 'ru-ru': 'Сопоставление столбцов', + 'es-es': 'Asignación/Mapeo de columnas', + 'fr-fr': 'Mappage des colonnes', + 'uk-ua': 'Відображення стовпців', + 'de-ch': 'Spaltenzuordnung', + 'pt-br': 'Mapeamento de colunas', }, suggestedMappings: { - "en-us": "Suggested Mappings:", - "ru-ru": "Предлагаемые сопоставления:", - "es-es": "Sugerencia de asignaciones/mapeos:", - "fr-fr": "Mappages suggérés :", - "uk-ua": "Пропоновані зіставлення:", - "de-ch": "Vorgeschlagene Zuordnungen:", - "pt-br": "Mapeamentos sugeridos:", + 'en-us': 'Suggested Mappings:', + 'ru-ru': 'Предлагаемые сопоставления:', + 'es-es': 'Sugerencia de asignaciones/mapeos:', + 'fr-fr': 'Mappages suggérés :', + 'uk-ua': 'Пропоновані зіставлення:', + 'de-ch': 'Vorgeschlagene Zuordnungen:', + 'pt-br': 'Mapeamentos sugeridos:', }, requiredFields: { - "en-us": "Required Fields", - "ru-ru": "Обязательные поля", - "es-es": "Campos requeridos", - "fr-fr": "Champs obligatoires", - "uk-ua": "Обов'язкові поля", - "de-ch": "Erforderliche Felder", - "pt-br": "Campos obrigatórios", + 'en-us': 'Required Fields', + 'ru-ru': 'Обязательные поля', + 'es-es': 'Campos requeridos', + 'fr-fr': 'Champs obligatoires', + 'uk-ua': "Обов'язкові поля", + 'de-ch': 'Erforderliche Felder', + 'pt-br': 'Campos obrigatórios', }, optionalFields: { - "en-us": "Optional Fields", - "ru-ru": "Необязательные поля", - "es-es": "Campos Opcionales", - "fr-fr": "Champs facultatifs", - "uk-ua": "Необов'язкові поля", - "de-ch": "Optionale Felder", - "pt-br": "Campos opcionais", + 'en-us': 'Optional Fields', + 'ru-ru': 'Необязательные поля', + 'es-es': 'Campos Opcionales', + 'fr-fr': 'Champs facultatifs', + 'uk-ua': "Необов'язкові поля", + 'de-ch': 'Optionale Felder', + 'pt-br': 'Campos opcionais', }, hiddenFields: { - "en-us": "Hidden Fields", - "ru-ru": "Скрытые поля", - "es-es": "Campos Ocultos", - "fr-fr": "Champs cachés", - "uk-ua": "Приховані поля", - "de-ch": "Versteckte Felder", - "pt-br": "Campos Ocultos", + 'en-us': 'Hidden Fields', + 'ru-ru': 'Скрытые поля', + 'es-es': 'Campos Ocultos', + 'fr-fr': 'Champs cachés', + 'uk-ua': 'Приховані поля', + 'de-ch': 'Versteckte Felder', + 'pt-br': 'Campos Ocultos', }, revealHiddenFormFields: { - "en-us": "Reveal Hidden Form Fields", - "ru-ru": "Показать скрытые поля формы", - "es-es": "Revelar Campos Ocultos del Formulario", - "de-ch": "Versteckte Formularfelder anzeigen", - "fr-fr": "Révéler les champs de formulaire cachés", - "uk-ua": "Відкрийте приховані поля форми", - "pt-br": "Revelar campos ocultos do formulário", + 'en-us': 'Reveal Hidden Form Fields', + 'ru-ru': 'Показать скрытые поля формы', + 'es-es': 'Revelar Campos Ocultos del Formulario', + 'de-ch': 'Versteckte Formularfelder anzeigen', + 'fr-fr': 'Révéler les champs de formulaire cachés', + 'uk-ua': 'Відкрийте приховані поля форми', + 'pt-br': 'Revelar campos ocultos do formulário', }, mappingOptions: { - "en-us": "Mapping Options", - "ru-ru": "Параметры сопоставления", - "es-es": "Opciones de asignaciones/mapeo", - "fr-fr": "Options de cartographie", - "uk-ua": "Параметри відображення", - "de-ch": "Zuordnungsoptionen", - "pt-br": "Opções de mapeamento", + 'en-us': 'Mapping Options', + 'ru-ru': 'Параметры сопоставления', + 'es-es': 'Opciones de asignaciones/mapeo', + 'fr-fr': 'Options de cartographie', + 'uk-ua': 'Параметри відображення', + 'de-ch': 'Zuordnungsoptionen', + 'pt-br': 'Opções de mapeamento', }, ignoreWhenBlank: { - "en-us": "Ignore when Blank", - "ru-ru": "Игнорировать, когда пусто", - "es-es": "Ignorar cuando en blanco", - "fr-fr": "Ignorer lorsque vide", - "uk-ua": "Ігнорувати, коли пусто", - "de-ch": "Bei leer ignorieren", - "pt-br": "Ignorar quando estiver em branco", + 'en-us': 'Ignore when Blank', + 'ru-ru': 'Игнорировать, когда пусто', + 'es-es': 'Ignorar cuando en blanco', + 'fr-fr': 'Ignorer lorsque vide', + 'uk-ua': 'Ігнорувати, коли пусто', + 'de-ch': 'Bei leer ignorieren', + 'pt-br': 'Ignorar quando estiver em branco', }, ignoreWhenBlankDescription: { - "en-us": + 'en-us': 'When set to "Ignore when Blank" blank values in this column will not be considered for matching purposes. Blank values are ignored when matching even if a default value is provided', - "ru-ru": - "Если задано значение «Игнорировать, когда пусто», пустые значения в этом столбце не будет рассматривается для целей сопоставления. Пустые значения игнорируются при сопоставлении даже если указано значение по умолчанию", - "es-es": + 'ru-ru': + 'Если задано значение «Игнорировать, когда пусто», пустые значения в этом столбце не будет рассматривается для целей сопоставления. Пустые значения игнорируются при сопоставлении даже если указано значение по умолчанию', + 'es-es': 'Cuando se establece en "Ignorar si está en blanco", los valores en blanco de esta columna no se tendrán en cuenta a efectos de comparación. Los valores en blanco se ignoran a la hora de establecer correspondencias, incluso si se proporciona un valor por defecto', - "fr-fr": + 'fr-fr': "Si l'option « Ignorer si vide » est sélectionnée, les valeurs vides de cette colonne ne seront pas prises en compte pour la correspondance. Elles sont ignorées lors de la correspondance, même si une valeur par défaut est fournie.", - "uk-ua": - "Якщо встановлено значення «Ignore when Blank», порожні значення в цьому стовпці не розглядатимуться для цілей зіставлення. Порожні значення ігноруються під час збігу, навіть якщо вказано значення за умовчанням", - "de-ch": + 'uk-ua': + 'Якщо встановлено значення «Ignore when Blank», порожні значення в цьому стовпці не розглядатимуться для цілей зіставлення. Порожні значення ігноруються під час збігу, навіть якщо вказано значення за умовчанням', + 'de-ch': 'Bei der Einstellung "Bei leer ignorieren" werden leere Werte in dieser Spalte beim Abgleich nicht berücksichtigt. Leere Werte werden beim Abgleich ignoriert, auch wenn ein Standardwert angegeben ist', - "pt-br": + 'pt-br': 'Quando definido como "Ignorar quando em branco", valores em branco nesta coluna não serão considerados para fins de correspondência. Valores em branco são ignorados durante a correspondência, mesmo que um valor padrão seja fornecido.', }, ignoreAlways: { - "en-us": "Always Ignore", - "ru-ru": "Всегда игнорировать", - "es-es": "Ignorar siempre", - "fr-fr": "Toujours ignorer", - "uk-ua": "Завжди ігнорувати", - "de-ch": "Immer ignorieren", - "pt-br": "Sempre ignorar", + 'en-us': 'Always Ignore', + 'ru-ru': 'Всегда игнорировать', + 'es-es': 'Ignorar siempre', + 'fr-fr': 'Toujours ignorer', + 'uk-ua': 'Завжди ігнорувати', + 'de-ch': 'Immer ignorieren', + 'pt-br': 'Sempre ignorar', }, ignoreAlwaysDescription: { - "en-us": + 'en-us': 'When set to "Ignore Always" the value in this column will never be considered for matching purposes, only for uploading.', - "ru-ru": - "Если задано значение «Всегда игнорировать», значение в этом столбце никогда не будет рассматривается для целей сопоставления, только для загрузки", - "es-es": + 'ru-ru': + 'Если задано значение «Всегда игнорировать», значение в этом столбце никогда не будет рассматривается для целей сопоставления, только для загрузки', + 'es-es': 'Cuando se establece "Ignorar siempre", el valor de esta columna nunca se tomará en cuenta a efectos de comparación; solo al cargar datos.', - "fr-fr": - "Lorsque cette option est définie sur « Toujours ignorer », la valeur de cette colonne ne sera jamais prise en compte à des fins de correspondance, mais uniquement pour le téléchargement.", - "uk-ua": - "Якщо встановлено значення «Ігнорувати завжди», значення в цьому стовпці ніколи не розглядатиметься для цілей зіставлення, лише для завантаження.", - "de-ch": + 'fr-fr': + 'Lorsque cette option est définie sur « Toujours ignorer », la valeur de cette colonne ne sera jamais prise en compte à des fins de correspondance, mais uniquement pour le téléchargement.', + 'uk-ua': + 'Якщо встановлено значення «Ігнорувати завжди», значення в цьому стовпці ніколи не розглядатиметься для цілей зіставлення, лише для завантаження.', + 'de-ch': 'Bei der Einstellung "Immer ignorieren" wird der Wert in dieser Spalte niemals für den Abgleich, sondern nur für das Hochladen berücksichtigt.', - "pt-br": + 'pt-br': 'Quando definido como "Ignorar sempre", o valor nesta coluna nunca será considerado para fins de correspondência, apenas para upload.', }, ignoreNever: { - "en-us": "Never Ignore", - "ru-ru": "Никогда не игнорировать", - "es-es": "Nunca Ignorar", - "de-ch": "Nie ignorieren", - "fr-fr": "Ne jamais ignorer", - "uk-ua": "Ніколи не ігноруйте", - "pt-br": "Nunca ignore", + 'en-us': 'Never Ignore', + 'ru-ru': 'Никогда не игнорировать', + 'es-es': 'Nunca Ignorar', + 'de-ch': 'Nie ignorieren', + 'fr-fr': 'Ne jamais ignorer', + 'uk-ua': 'Ніколи не ігноруйте', + 'pt-br': 'Nunca ignore', }, ignoreNeverDescription: { - "en-us": + 'en-us': "This column would always be considered for matching purposes, regardless of it's value", - "ru-ru": - "Этот столбец всегда будет учитываться для целей сопоставления, независимо от содержимое столбца", - "es-es": - "Siempre se considerará esta columna a efectos de comparación, independientemente de sus valores", - "fr-fr": - "Cette colonne sera toujours prise en compte à des fins de correspondance, quelle que soit sa valeur", - "uk-ua": - "Цей стовпець завжди розглядатиметься для цілей зіставлення, незалежно від його значення", - "de-ch": - "Diese Spalte wird immer für den Abgleich berücksichtigt, unabhängig von ihrem Wert", - "pt-br": - "Esta coluna sempre será considerada para fins de correspondência, independentemente do seu valor", + 'ru-ru': + 'Этот столбец всегда будет учитываться для целей сопоставления, независимо от содержимое столбца', + 'es-es': + 'Siempre se considerará esta columna a efectos de comparación, independientemente de sus valores', + 'fr-fr': + 'Cette colonne sera toujours prise en compte à des fins de correspondance, quelle que soit sa valeur', + 'uk-ua': + 'Цей стовпець завжди розглядатиметься для цілей зіставлення, незалежно від його значення', + 'de-ch': + 'Diese Spalte wird immer für den Abgleich berücksichtigt, unabhängig von ihrem Wert', + 'pt-br': + 'Esta coluna sempre será considerada para fins de correspondência, independentemente do seu valor', }, allowNullValues: { - "en-us": "Allow Null Values", - "ru-ru": "Разрешить нулевые значения", - "es-es": "Permitir valores nulos", - "fr-fr": "Autoriser les valeurs nulles", - "uk-ua": "Дозволити нульові значення", - "de-ch": "Nullwerte erlauben", - "pt-br": "Permitir valores nulos", + 'en-us': 'Allow Null Values', + 'ru-ru': 'Разрешить нулевые значения', + 'es-es': 'Permitir valores nulos', + 'fr-fr': 'Autoriser les valeurs nulles', + 'uk-ua': 'Дозволити нульові значення', + 'de-ch': 'Nullwerte erlauben', + 'pt-br': 'Permitir valores nulos', }, useDefaultValue: { - "en-us": "Use Default Value", - "ru-ru": "Использовать значение по умолчанию", - "es-es": "Usar valor predeterminado", - "fr-fr": "Utiliser la valeur par défaut", - "uk-ua": "Використовувати значення за умовчанням", - "de-ch": "Verwende den Standardwert", - "pt-br": "Usar valor padrão", + 'en-us': 'Use Default Value', + 'ru-ru': 'Использовать значение по умолчанию', + 'es-es': 'Usar valor predeterminado', + 'fr-fr': 'Utiliser la valeur par défaut', + 'uk-ua': 'Використовувати значення за умовчанням', + 'de-ch': 'Verwende den Standardwert', + 'pt-br': 'Usar valor padrão', }, defaultValue: { - "en-us": "Default Value", - "ru-ru": "Значение по умолчанию", - "es-es": "Valor predeterminado", - "fr-fr": "Valeur par défaut", - "uk-ua": "Значення за замовчуванням", - "de-ch": "Standardwert", - "pt-br": "Valor padrão", + 'en-us': 'Default Value', + 'ru-ru': 'Значение по умолчанию', + 'es-es': 'Valor predeterminado', + 'fr-fr': 'Valeur par défaut', + 'uk-ua': 'Значення за замовчуванням', + 'de-ch': 'Standardwert', + 'pt-br': 'Valor padrão', }, defaultValueDescription: { - "en-us": "This value would be used in place of empty cells", - "ru-ru": "Это значение будет использоваться вместо пустых ячеек", - "es-es": "Este valor se usaría en lugar de celdas vacías", - "fr-fr": "Cette valeur serait utilisée à la place des cellules vides", - "uk-ua": "Це значення використовуватиметься замість порожніх клітинок", - "de-ch": "Dieser Wert wird anstelle von leeren Zellen verwendet", - "pt-br": "Este valor seria usado no lugar de células vazias", + 'en-us': 'This value would be used in place of empty cells', + 'ru-ru': 'Это значение будет использоваться вместо пустых ячеек', + 'es-es': 'Este valor se usaría en lugar de celdas vacías', + 'fr-fr': 'Cette valeur serait utilisée à la place des cellules vides', + 'uk-ua': 'Це значення використовуватиметься замість порожніх клітинок', + 'de-ch': 'Dieser Wert wird anstelle von leeren Zellen verwendet', + 'pt-br': 'Este valor seria usado no lugar de células vazias', }, addNewColumn: { - "en-us": "Add New Column", - "ru-ru": "Добавить новую колонку", - "es-es": "Agregar una columna nueva", - "fr-fr": "Ajouter une nouvelle colonne", - "uk-ua": "Додати новий стовпець", - "de-ch": "Neue Spalte hinzufügen", - "pt-br": "Adicionar nova coluna", + 'en-us': 'Add New Column', + 'ru-ru': 'Добавить новую колонку', + 'es-es': 'Agregar una columna nueva', + 'fr-fr': 'Ajouter une nouvelle colonne', + 'uk-ua': 'Додати новий стовпець', + 'de-ch': 'Neue Spalte hinzufügen', + 'pt-br': 'Adicionar nova coluna', }, validationFailed: { - "en-us": "Validation found missing mappings:", - "ru-ru": "Проверка обнаружила недостающие сопоставления:", - "es-es": "La validación encontró asignaciones faltantes:", - "fr-fr": "La validation a trouvé des mappages manquants :", - "uk-ua": "Перевірка виявила відсутні зіставлення:", - "de-ch": "Die Validierung hat fehlende Zuordnungen gefunden:", - "pt-br": "A validação encontrou mapeamentos ausentes:", + 'en-us': 'Validation found missing mappings:', + 'ru-ru': 'Проверка обнаружила недостающие сопоставления:', + 'es-es': 'La validación encontró asignaciones faltantes:', + 'fr-fr': 'La validation a trouvé des mappages manquants :', + 'uk-ua': 'Перевірка виявила відсутні зіставлення:', + 'de-ch': 'Die Validierung hat fehlende Zuordnungen gefunden:', + 'pt-br': 'A validação encontrou mapeamentos ausentes:', }, validationFailedDescription: { - "en-us": - "This data mapping is missing one or more data fields required for uploading by your Specify configuration. Add the missing mappings shown or save this Upload Plan as unfinished.", - "ru-ru": - "В этом сопоставлении данные отсутствует в одном или нескольких полей данных, необходимых для загрузки по вашей Specify конфигурацию. Добавьте недостающие сопоставления или сохраните этот план загрузки как незавершенный.", - "es-es": - "A este mapeo de datos le faltan uno o más campos de datos requeridos para cargar por su configuración de Especificar. Agregue las asignaciones faltantes que se muestran o guarde este plan de carga como inacabado.", - "fr-fr": - "Il manque un ou plusieurs champs de données requis pour le téléchargement selon votre configuration de spécification. Ajoutez les mappages manquants ou enregistrez ce plan de téléchargement comme inachevé.", - "uk-ua": - "У цьому відображенні даних відсутнє одне або кілька полів даних, необхідні для завантаження вашою конфігурацією Specify. Додайте відсутні відображення або збережіть цей план завантаження як незавершений.", - "de-ch": - "In dieser Datenzuordnung fehlen ein oder mehrere Datenfelder, die für das Hochladen gemäss Ihrer Specify-Konfiguration erforderlich sind. Fügen Sie die fehlenden Mappings hinzu oder speichern Sie diesen Upload-Plan als unvollendet.", - "pt-br": + 'en-us': + 'This data mapping is missing one or more data fields required for uploading by your Specify configuration. Add the missing mappings shown or save this Upload Plan as unfinished.', + 'ru-ru': + 'В этом сопоставлении данные отсутствует в одном или нескольких полей данных, необходимых для загрузки по вашей Specify конфигурацию. Добавьте недостающие сопоставления или сохраните этот план загрузки как незавершенный.', + 'es-es': + 'A este mapeo de datos le faltan uno o más campos de datos requeridos para cargar por su configuración de Especificar. Agregue las asignaciones faltantes que se muestran o guarde este plan de carga como inacabado.', + 'fr-fr': + 'Il manque un ou plusieurs champs de données requis pour le téléchargement selon votre configuration de spécification. Ajoutez les mappages manquants ou enregistrez ce plan de téléchargement comme inachevé.', + 'uk-ua': + 'У цьому відображенні даних відсутнє одне або кілька полів даних, необхідні для завантаження вашою конфігурацією Specify. Додайте відсутні відображення або збережіть цей план завантаження як незавершений.', + 'de-ch': + 'In dieser Datenzuordnung fehlen ein oder mehrere Datenfelder, die für das Hochladen gemäss Ihrer Specify-Konfiguration erforderlich sind. Fügen Sie die fehlenden Mappings hinzu oder speichern Sie diesen Upload-Plan als unvollendet.', + 'pt-br': 'Este mapeamento de dados não possui um ou mais campos de dados necessários para o upload pela sua configuração "Especificar". Adicione os mapeamentos ausentes ou salve este Plano de Upload como inacabado.', }, mappingIsRequired: { - comment: "I.e, this field must be mapped before you can continue", - "en-us": "Mapping is required", - "ru-ru": "Необходимо сопоставление", - "es-es": "Se requiere asignación", - "fr-fr": "La cartographie est requise", - "uk-ua": "Потрібне відображення", - "de-ch": "Mapping ist erforderlich", - "pt-br": "O mapeamento é necessário", + comment: 'I.e, this field must be mapped before you can continue', + 'en-us': 'Mapping is required', + 'ru-ru': 'Необходимо сопоставление', + 'es-es': 'Se requiere asignación', + 'fr-fr': 'La cartographie est requise', + 'uk-ua': 'Потрібне відображення', + 'de-ch': 'Mapping ist erforderlich', + 'pt-br': 'O mapeamento é necessário', }, continueEditing: { - "en-us": "Continue Editing", - "ru-ru": "Продолжить редактирование", - "es-es": "Continuar con Edición", - "fr-fr": "Continuer l'édition", - "uk-ua": "Продовжити редагування", - "de-ch": "Bearbeitung fortsetzen", - "pt-br": "Continuar editando", + 'en-us': 'Continue Editing', + 'ru-ru': 'Продолжить редактирование', + 'es-es': 'Continuar con Edición', + 'fr-fr': "Continuer l'édition", + 'uk-ua': 'Продовжити редагування', + 'de-ch': 'Bearbeitung fortsetzen', + 'pt-br': 'Continuar editando', }, saveUnfinished: { - "en-us": "Save Unfinished", - "ru-ru": "Сохранить незаконченное", - "es-es": "Guardar sin terminar", - "fr-fr": "Enregistrer inachevé", - "uk-ua": "Зберегти незавершене", - "de-ch": "Unvollendet speichern", - "pt-br": "Salvar inacabado", + 'en-us': 'Save Unfinished', + 'ru-ru': 'Сохранить незаконченное', + 'es-es': 'Guardar sin terminar', + 'fr-fr': 'Enregistrer inachevé', + 'uk-ua': 'Зберегти незавершене', + 'de-ch': 'Unvollendet speichern', + 'pt-br': 'Salvar inacabado', }, map: { - "en-us": "Map", - "ru-ru": "Сопоставить", - "es-es": "Mapear", - "de-ch": "Datenzuordnung erstellen", - "fr-fr": "Carte", - "uk-ua": "Карта", - "pt-br": "Mapa", + 'en-us': 'Map', + 'ru-ru': 'Сопоставить', + 'es-es': 'Mapear', + 'de-ch': 'Datenzuordnung erstellen', + 'fr-fr': 'Carte', + 'uk-ua': 'Карта', + 'pt-br': 'Mapa', }, unmap: { - "en-us": "Unmap", - "ru-ru": "Отменить сопоставления", - "es-es": "Deshacer mapeo", - "fr-fr": "Démapper", - "uk-ua": "Відмінити карту", - "de-ch": "Datenzuordnung auflösen", - "pt-br": "Desmapear", + 'en-us': 'Unmap', + 'ru-ru': 'Отменить сопоставления', + 'es-es': 'Deshacer mapeo', + 'fr-fr': 'Démapper', + 'uk-ua': 'Відмінити карту', + 'de-ch': 'Datenzuordnung auflösen', + 'pt-br': 'Desmapear', }, mapButtonDescription: { - "en-us": "Map selected field to selected header", - "ru-ru": "Сопоставить выбранное поле с выбранным столбцом", - "es-es": "Asignar campo seleccionado al encabezamiento seleccionado", - "de-ch": "Ausgewähltes Feld der ausgewählten Feldüberschrift zuordnen", - "fr-fr": "Mapper le champ sélectionné à l'en-tête sélectionné", - "uk-ua": "Зіставити вибране поле з вибраним заголовком", - "pt-br": "Mapear campo selecionado para cabeçalho selecionado", + 'en-us': 'Map selected field to selected header', + 'ru-ru': 'Сопоставить выбранное поле с выбранным столбцом', + 'es-es': 'Asignar campo seleccionado al encabezamiento seleccionado', + 'de-ch': 'Ausgewähltes Feld der ausgewählten Feldüberschrift zuordnen', + 'fr-fr': "Mapper le champ sélectionné à l'en-tête sélectionné", + 'uk-ua': 'Зіставити вибране поле з вибраним заголовком', + 'pt-br': 'Mapear campo selecionado para cabeçalho selecionado', }, relationshipWithTable: { - "en-us": "Relationship to the {tableName:string} table", - "ru-ru": "Связь с таблицей {tableName:string}", - "es-es": "Relación con la tabla {tableName:string}", - "fr-fr": "Relation avec la table {tableName:string}", - "uk-ua": "Відношення до таблиці {tableName:string}", - "de-ch": "Beziehung zur Tabelle {tableName:string}", - "pt-br": "Relação com a tabela {tableName:string}", + 'en-us': 'Relationship to the {tableName:string} table', + 'ru-ru': 'Связь с таблицей {tableName:string}', + 'es-es': 'Relación con la tabla {tableName:string}', + 'fr-fr': 'Relation avec la table {tableName:string}', + 'uk-ua': 'Відношення до таблиці {tableName:string}', + 'de-ch': 'Beziehung zur Tabelle {tableName:string}', + 'pt-br': 'Relação com a tabela {tableName:string}', }, selectBaseTable: { - "en-us": "Select a Base Table", - "ru-ru": "Выберите базовую таблицу", - "es-es": "Seleccione una tabla base", - "fr-fr": "Sélectionnez une table de base", - "uk-ua": "Виберіть базову таблицю", - "de-ch": "Basistabelle auswählen", - "pt-br": "Selecione uma tabela base", + 'en-us': 'Select a Base Table', + 'ru-ru': 'Выберите базовую таблицу', + 'es-es': 'Seleccione una tabla base', + 'fr-fr': 'Sélectionnez une table de base', + 'uk-ua': 'Виберіть базову таблицю', + 'de-ch': 'Basistabelle auswählen', + 'pt-br': 'Selecione uma tabela base', }, chooseExistingPlan: { - "en-us": "Choose Existing Plan", - "ru-ru": "Выберите существующий план", - "es-es": "Elegir un Plan ya Existente", - "fr-fr": "Choisir un plan existant", - "uk-ua": "Виберіть існуючий план", - "de-ch": "Bestehenden Plan auswählen", - "pt-br": "Escolha o plano existente", + 'en-us': 'Choose Existing Plan', + 'ru-ru': 'Выберите существующий план', + 'es-es': 'Elegir un Plan ya Existente', + 'fr-fr': 'Choisir un plan existant', + 'uk-ua': 'Виберіть існуючий план', + 'de-ch': 'Bestehenden Plan auswählen', + 'pt-br': 'Escolha o plano existente', }, showAllTables: { - "en-us": "Show All Tables", - "ru-ru": "Показать дополнительные таблицы", - "es-es": "Mostrar Tablas Avanzadas", - "fr-fr": "Afficher tous les tableaux", - "uk-ua": "Показати всі таблиці", - "de-ch": "Erweiterte Tabellen anzeigen", - "pt-br": "Mostrar todas as tabelas", + 'en-us': 'Show All Tables', + 'ru-ru': 'Показать дополнительные таблицы', + 'es-es': 'Mostrar Tablas Avanzadas', + 'fr-fr': 'Afficher tous les tableaux', + 'uk-ua': 'Показати всі таблиці', + 'de-ch': 'Erweiterte Tabellen anzeigen', + 'pt-br': 'Mostrar todas as tabelas', }, dataSetUploaded: { - "en-us": "Data Set uploaded. This Upload Plan cannot be changed", - "ru-ru": "Набор данных загружен. Этот план загрузки нельзя изменить", - "es-es": - "Conjunto de Datos cargado. El Plan de Carga ya no puede modificarse", - "fr-fr": - "Ensemble de données téléchargé. Ce plan de téléchargement ne peut pas être modifié.", - "uk-ua": "Набір даних завантажено. Цей план завантаження не можна змінити", - "de-ch": - "Datensatz hochgeladen. Dieser Upload-Plan kann nicht geändert werden", - "pt-br": - "Conjunto de dados carregado. Este plano de upload não pode ser alterado.", + 'en-us': 'Data Set uploaded. This Upload Plan cannot be changed', + 'ru-ru': 'Набор данных загружен. Этот план загрузки нельзя изменить', + 'es-es': + 'Conjunto de Datos cargado. El Plan de Carga ya no puede modificarse', + 'fr-fr': + 'Ensemble de données téléchargé. Ce plan de téléchargement ne peut pas être modifié.', + 'uk-ua': 'Набір даних завантажено. Цей план завантаження не можна змінити', + 'de-ch': + 'Datensatz hochgeladen. Dieser Upload-Plan kann nicht geändert werden', + 'pt-br': + 'Conjunto de dados carregado. Este plano de upload não pode ser alterado.', }, dataSetUploadedDescription: { - "en-us": - "You are viewing the mappings for an uploaded dataset.\n\nTo edit the mappings, rollback the uploaded data or create a new dataset", - "ru-ru": - "Вы просматриваете сопоставления для загруженного набора данных.\n\nЧтобы изменить сопоставления, откатите загруженные данные или создайте новый набор данных", - "es-es": - "Está viendo las asignaciones de campos/mapeo para un conjunto de datos ya cargado.\n\nPara editar los mapeos, d´s marcha-atrás para los datos cargados o cree un nuevo conjunto de datos", - "fr-fr": + 'en-us': + 'You are viewing the mappings for an uploaded dataset.\n\nTo edit the mappings, rollback the uploaded data or create a new dataset', + 'ru-ru': + 'Вы просматриваете сопоставления для загруженного набора данных.\n\nЧтобы изменить сопоставления, откатите загруженные данные или создайте новый набор данных', + 'es-es': + 'Está viendo las asignaciones de campos/mapeo para un conjunto de datos ya cargado.\n\nPara editar los mapeos, d´s marcha-atrás para los datos cargados o cree un nuevo conjunto de datos', + 'fr-fr': "Vous consultez les mappages d'un jeu de données téléchargé.\n\nPour modifier les mappages, restaurez les données téléchargées ou créez un nouveau jeu de données.", - "uk-ua": - "Ви переглядаєте зіставлення для завантаженого набору даних.\n\nЩоб редагувати зіставлення, відкотіть завантажені дані або створіть новий набір даних", - "de-ch": - "Sie betrachten gerade die Datenzuordnungen für einen hochgeladenen Datensatz.\n\nUm die Zuordnungen zu bearbeiten, die hochgeladenen Daten zurückzusetzen oder einen neuen Datensatz erstellen", - "pt-br": - "Você está visualizando os mapeamentos de um conjunto de dados carregado.\n\nPara editar os mapeamentos, reverta os dados carregados ou crie um novo conjunto de dados.", + 'uk-ua': + 'Ви переглядаєте зіставлення для завантаженого набору даних.\n\nЩоб редагувати зіставлення, відкотіть завантажені дані або створіть новий набір даних', + 'de-ch': + 'Sie betrachten gerade die Datenzuordnungen für einen hochgeladenen Datensatz.\n\nUm die Zuordnungen zu bearbeiten, die hochgeladenen Daten zurückzusetzen oder einen neuen Datensatz erstellen', + 'pt-br': + 'Você está visualizando os mapeamentos de um conjunto de dados carregado.\n\nPara editar os mapeamentos, reverta os dados carregados ou crie um novo conjunto de dados.', }, baseTable: { - "en-us": "Base Table", - "ru-ru": "Базовая таблица", - "es-es": "Tabla Base", - "fr-fr": "Table de base", - "uk-ua": "Базовий стіл", - "de-ch": "Basistabelle", - "pt-br": "Mesa Base", + 'en-us': 'Base Table', + 'ru-ru': 'Базовая таблица', + 'es-es': 'Tabla Base', + 'fr-fr': 'Table de base', + 'uk-ua': 'Базовий стіл', + 'de-ch': 'Basistabelle', + 'pt-br': 'Mesa Base', }, goToBaseTable: { - "en-us": "Change the Base Table for Mapping Data Set Columns?", - "ru-ru": - "Изменить базовую таблицу для сопоставления столбцов набора данных?", - "es-es": - "¿Cambiar la tabla base para mapear columnas de conjuntos de datos?", - "fr-fr": + 'en-us': 'Change the Base Table for Mapping Data Set Columns?', + 'ru-ru': + 'Изменить базовую таблицу для сопоставления столбцов набора данных?', + 'es-es': + '¿Cambiar la tabla base para mapear columnas de conjuntos de datos?', + 'fr-fr': "Modifier la table de base pour mapper les colonnes de l'ensemble de données ?", - "uk-ua": "Змінити базову таблицю для зіставлення стовпців набору даних?", - "de-ch": "Die Basistabelle für die Zuordnung von Datensatzspalten ändern?", - "pt-br": "Alterar a tabela base para mapear colunas do conjunto de dados?", + 'uk-ua': 'Змінити базову таблицю для зіставлення стовпців набору даних?', + 'de-ch': 'Die Basistabelle für die Zuordnung von Datensatzspalten ändern?', + 'pt-br': 'Alterar a tabela base para mapear colunas do conjunto de dados?', }, goToBaseTableDescription: { - "en-us": - "Choosing a different Base Table for a Data Set Upload will make that table the new starting point for column-to-data field mappings and will erase existing mappings. The AutoMapper will attempt to map columns to the new Base Table fields.", - "ru-ru": - "Выбор другой базовой таблице для загрузки набора данных сделает ту таблицу новой отправной точкой для сопоставлений полей столбцов и данных и сотрет существующие сопоставления. AutoMapper попытается сопоставить столбцы в новые поля базовой таблицы.", - "es-es": - "Si elige una tabla base diferente para la carga de un conjunto de datos, esa tabla se convertirá en el nuevo punto de partida para las asignaciones de campo de columna a datos y borrará las asignaciones existentes. El AutoMapper intentará asignar columnas a los nuevos campos de la tabla base.", - "fr-fr": + 'en-us': + 'Choosing a different Base Table for a Data Set Upload will make that table the new starting point for column-to-data field mappings and will erase existing mappings. The AutoMapper will attempt to map columns to the new Base Table fields.', + 'ru-ru': + 'Выбор другой базовой таблице для загрузки набора данных сделает ту таблицу новой отправной точкой для сопоставлений полей столбцов и данных и сотрет существующие сопоставления. AutoMapper попытается сопоставить столбцы в новые поля базовой таблицы.', + 'es-es': + 'Si elige una tabla base diferente para la carga de un conjunto de datos, esa tabla se convertirá en el nuevo punto de partida para las asignaciones de campo de columna a datos y borrará las asignaciones existentes. El AutoMapper intentará asignar columnas a los nuevos campos de la tabla base.', + 'fr-fr': "Choisir une autre table de base pour le téléchargement d'un ensemble de données fera de cette table le nouveau point de départ des mappages colonnes-champs de données et effacera les mappages existants. L'AutoMapper tentera de mapper les colonnes aux nouveaux champs de la table de base.", - "uk-ua": - "Вибір іншої базової таблиці для завантаження набору даних зробить цю таблицю новою відправною точкою для зіставлення стовпців і полів даних і видалить існуючі зіставлення. AutoMapper спробує зіставити стовпці з новими полями базової таблиці.", - "de-ch": - "Durch Auswahl einer anderen Basistabelle für einen Datensatz-Upload wird diese Tabelle zum neuen Ausgangspunkt für die Zuordnung von Spalten zu Datenfeldern und die bestehenden Zuordnungen werden gelöscht. Der AutoMapper wird versuchen, die Spalten den neuen Basistabellenfeldern zuzuordnen.", - "pt-br": - "Escolher uma Tabela Base diferente para o upload de um Conjunto de Dados tornará essa tabela o novo ponto de partida para mapeamentos de campos de coluna para dados e apagará os mapeamentos existentes. O Mapeador Automático tentará mapear colunas para os novos campos da Tabela Base.", + 'uk-ua': + 'Вибір іншої базової таблиці для завантаження набору даних зробить цю таблицю новою відправною точкою для зіставлення стовпців і полів даних і видалить існуючі зіставлення. AutoMapper спробує зіставити стовпці з новими полями базової таблиці.', + 'de-ch': + 'Durch Auswahl einer anderen Basistabelle für einen Datensatz-Upload wird diese Tabelle zum neuen Ausgangspunkt für die Zuordnung von Spalten zu Datenfeldern und die bestehenden Zuordnungen werden gelöscht. Der AutoMapper wird versuchen, die Spalten den neuen Basistabellenfeldern zuzuordnen.', + 'pt-br': + 'Escolher uma Tabela Base diferente para o upload de um Conjunto de Dados tornará essa tabela o novo ponto de partida para mapeamentos de campos de coluna para dados e apagará os mapeamentos existentes. O Mapeador Automático tentará mapear colunas para os novos campos da Tabela Base.', }, clearMapping: { - "en-us": "Clear Mapping", - "ru-ru": "Очистить сопоставление", - "es-es": "Borrar Asignacione", - "fr-fr": "Cartographie claire", - "uk-ua": "Очистити відображення", - "de-ch": "Datenzuordnung zurücksetzen", - "pt-br": "Mapeamento claro", + 'en-us': 'Clear Mapping', + 'ru-ru': 'Очистить сопоставление', + 'es-es': 'Borrar Asignacione', + 'fr-fr': 'Cartographie claire', + 'uk-ua': 'Очистити відображення', + 'de-ch': 'Datenzuordnung zurücksetzen', + 'pt-br': 'Mapeamento claro', }, reRunAutoMapper: { - "en-us": "Rerun AutoMapper", - "ru-ru": "Перезапустить AutoMapper", - "es-es": "Volver a ejecutar AutoMapper", - "fr-fr": "Réexécuter AutoMapper", - "uk-ua": "Перезапустіть AutoMapper", - "de-ch": "AutoMapper erneut ausführen", - "pt-br": "Reexecutar AutoMapper", + 'en-us': 'Rerun AutoMapper', + 'ru-ru': 'Перезапустить AutoMapper', + 'es-es': 'Volver a ejecutar AutoMapper', + 'fr-fr': 'Réexécuter AutoMapper', + 'uk-ua': 'Перезапустіть AutoMapper', + 'de-ch': 'AutoMapper erneut ausführen', + 'pt-br': 'Reexecutar AutoMapper', }, autoMapper: { - "en-us": "AutoMapper", - "ru-ru": "AutoMapper", - "es-es": "Mapeador automático", - "fr-fr": "AutoMapper", - "uk-ua": "Auto Mapper", - "de-ch": "AutoMapper", - "pt-br": "Mapeador automático", + 'en-us': 'AutoMapper', + 'ru-ru': 'AutoMapper', + 'es-es': 'Mapeador automático', + 'fr-fr': 'AutoMapper', + 'uk-ua': 'Auto Mapper', + 'de-ch': 'AutoMapper', + 'pt-br': 'Mapeador automático', }, mappingEditor: { - "en-us": "Map Explorer", - "ru-ru": "Обзор сопоставлений", - "es-es": "Explorador de Asignaciones/Mapeos", - "fr-fr": "Explorateur de cartes", - "uk-ua": "Оглядач карти", - "de-ch": "Karten-Explorer", - "pt-br": "Explorador de mapas", + 'en-us': 'Map Explorer', + 'ru-ru': 'Обзор сопоставлений', + 'es-es': 'Explorador de Asignaciones/Mapeos', + 'fr-fr': 'Explorateur de cartes', + 'uk-ua': 'Оглядач карти', + 'de-ch': 'Karten-Explorer', + 'pt-br': 'Explorador de mapas', }, hideFieldMapper: { - "en-us": "Hide Field Mapper", - "ru-ru": "Спрятать обзор сопоставлений", - "es-es": "Ocultar asignador de campos", - "fr-fr": "Masquer le mappeur de champs", - "uk-ua": "Приховати Field Mapper", - "de-ch": "Field Mapper ausblenden", - "pt-br": "Ocultar Mapeador de Campo", + 'en-us': 'Hide Field Mapper', + 'ru-ru': 'Спрятать обзор сопоставлений', + 'es-es': 'Ocultar asignador de campos', + 'fr-fr': 'Masquer le mappeur de champs', + 'uk-ua': 'Приховати Field Mapper', + 'de-ch': 'Field Mapper ausblenden', + 'pt-br': 'Ocultar Mapeador de Campo', }, showFieldMapper: { - "en-us": "Show Field Mapper", - "ru-ru": "Показать обзор сопоставлений", - "es-es": "Mostrar asignador de campos", - "fr-fr": "Afficher le mappeur de champs", - "uk-ua": "Показати Field Mapper", - "de-ch": "Field Mapper einblenden", - "pt-br": "Mostrar Mapeador de Campo", + 'en-us': 'Show Field Mapper', + 'ru-ru': 'Показать обзор сопоставлений', + 'es-es': 'Mostrar asignador de campos', + 'fr-fr': 'Afficher le mappeur de champs', + 'uk-ua': 'Показати Field Mapper', + 'de-ch': 'Field Mapper einblenden', + 'pt-br': 'Mostrar Mapeador de Campo', }, mappings: { - "en-us": "Mappings", - "ru-ru": "Сопоставления", - "es-es": "Asignaciones/Mapeos", - "fr-fr": "Cartographies", - "uk-ua": "Відображення", - "de-ch": "Zuordnungen", - "pt-br": "Mapeamentos", + 'en-us': 'Mappings', + 'ru-ru': 'Сопоставления', + 'es-es': 'Asignaciones/Mapeos', + 'fr-fr': 'Cartographies', + 'uk-ua': 'Відображення', + 'de-ch': 'Zuordnungen', + 'pt-br': 'Mapeamentos', }, clearMappings: { - "en-us": "Clear Mappings", - "ru-ru": "Очистить сопоставления", - "es-es": "Borrar asignaciones", - "fr-fr": "Mappages clairs", - "uk-ua": "Очистити зіставлення", - "de-ch": "Zuordnungen zurückstellen", - "pt-br": "Mapeamentos claros", + 'en-us': 'Clear Mappings', + 'ru-ru': 'Очистить сопоставления', + 'es-es': 'Borrar asignaciones', + 'fr-fr': 'Mappages clairs', + 'uk-ua': 'Очистити зіставлення', + 'de-ch': 'Zuordnungen zurückstellen', + 'pt-br': 'Mapeamentos claros', }, emptyDataSet: { - "en-us": "Empty Data Set", - "ru-ru": "Пустой набор данных", - "es-es": "Conjunto de datos vacío", - "fr-fr": "Ensemble de données vide", - "uk-ua": "Порожній набір даних", - "de-ch": "Datenset leeren", - "pt-br": "Conjunto de dados vazio", + 'en-us': 'Empty Data Set', + 'ru-ru': 'Пустой набор данных', + 'es-es': 'Conjunto de datos vacío', + 'fr-fr': 'Ensemble de données vide', + 'uk-ua': 'Порожній набір даних', + 'de-ch': 'Datenset leeren', + 'pt-br': 'Conjunto de dados vazio', }, emptyDataSetDescription: { - "en-us": "This Data Set doesn't have any columns.", - "ru-ru": "В этом наборе данных нет столбцов.", - "es-es": "Este Conjunto de Datos carece de columnas.", - "fr-fr": "Cet ensemble de données ne comporte aucune colonne.", - "uk-ua": "Цей набір даних не має стовпців.", - "de-ch": "Dieser Datensatz hat keine Spalten.", - "pt-br": "Este conjunto de dados não possui nenhuma coluna.", + 'en-us': "This Data Set doesn't have any columns.", + 'ru-ru': 'В этом наборе данных нет столбцов.', + 'es-es': 'Este Conjunto de Datos carece de columnas.', + 'fr-fr': 'Cet ensemble de données ne comporte aucune colonne.', + 'uk-ua': 'Цей набір даних не має стовпців.', + 'de-ch': 'Dieser Datensatz hat keine Spalten.', + 'pt-br': 'Este conjunto de dados não possui nenhuma coluna.', }, emptyDataSetSecondDescription: { - "en-us": + 'en-us': 'Press the "Add New Column" button below the mapping lines to add new columns.', - "ru-ru": + 'ru-ru': 'Нажмите кнопку "Добавить новый столбец" под строками сопоставления, чтобы добавить новые столбцы.', - "es-es": + 'es-es': 'Presione el botón "Agregar nueva columna" debajo de las líneas de mapeo para agregar nuevas columnas.', - "fr-fr": - "Appuyez sur le bouton « Ajouter une nouvelle colonne » sous les lignes de mappage pour ajouter de nouvelles colonnes.", - "uk-ua": - "Натисніть кнопку «Додати новий стовпець» під лініями відображення, щоб додати нові стовпці.", - "de-ch": + 'fr-fr': + 'Appuyez sur le bouton « Ajouter une nouvelle colonne » sous les lignes de mappage pour ajouter de nouvelles colonnes.', + 'uk-ua': + 'Натисніть кнопку «Додати новий стовпець» під лініями відображення, щоб додати нові стовпці.', + 'de-ch': 'Klicken Sie auf die Schaltfläche "Neue Spalte hinzufügen" unterhalb der Zuordnungszeilen, um neue Spalten hinzuzufügen.', - "pt-br": + 'pt-br': 'Pressione o botão "Adicionar nova coluna" abaixo das linhas de mapeamento para adicionar novas colunas.', }, reRunAutoMapperConfirmation: { - "en-us": "Automap to start a new Upload Plan?", - "ru-ru": "Автоматически сопоставить?", - "es-es": "¿Automap para iniciar un nuevo plan de carga?", - "de-ch": "Automap, um einen neuen Upload-Plan zu starten?", - "fr-fr": "Automap pour démarrer un nouveau plan de téléchargement ?", - "uk-ua": "Автоматична карта, щоб почати новий план завантаження?", - "pt-br": "Mapear automaticamente para iniciar um novo Plano de Upload?", + 'en-us': 'Automap to start a new Upload Plan?', + 'ru-ru': 'Автоматически сопоставить?', + 'es-es': '¿Automap para iniciar un nuevo plan de carga?', + 'de-ch': 'Automap, um einen neuen Upload-Plan zu starten?', + 'fr-fr': 'Automap pour démarrer un nouveau plan de téléchargement ?', + 'uk-ua': 'Автоматична карта, щоб почати новий план завантаження?', + 'pt-br': 'Mapear automaticamente para iniciar um novo Plano de Upload?', }, reRunAutoMapperConfirmationDescription: { - "en-us": "This will erase existing data field mappings.", - "ru-ru": "Это сотрет существующие сопоставления.", - "es-es": "Esto borrará las asignaciones de campos de datos existentes.", - "fr-fr": "Cela effacera les mappages de champs de données existants.", - "uk-ua": "Це призведе до видалення наявних зіставлень полів даних.", - "de-ch": "Damit werden bestehende Zuordnungen von Datenfeldern gelöscht.", - "pt-br": "Isso apagará os mapeamentos de campos de dados existentes.", + 'en-us': 'This will erase existing data field mappings.', + 'ru-ru': 'Это сотрет существующие сопоставления.', + 'es-es': 'Esto borrará las asignaciones de campos de datos existentes.', + 'fr-fr': 'Cela effacera les mappages de champs de données existants.', + 'uk-ua': 'Це призведе до видалення наявних зіставлень полів даних.', + 'de-ch': 'Damit werden bestehende Zuordnungen von Datenfeldern gelöscht.', + 'pt-br': 'Isso apagará os mapeamentos de campos de dados existentes.', }, changeMatchingLogic: { - "en-us": "Change Matching Logic", - "ru-ru": "Изменить логику соответствия", - "es-es": "Cambiar la lógica de coincidencia", - "fr-fr": "Changer la logique de correspondance", - "uk-ua": "Змінити логіку відповідності", - "de-ch": "Abgleichslogik ändern", - "pt-br": "Alterar lógica de correspondência", + 'en-us': 'Change Matching Logic', + 'ru-ru': 'Изменить логику соответствия', + 'es-es': 'Cambiar la lógica de coincidencia', + 'fr-fr': 'Changer la logique de correspondance', + 'uk-ua': 'Змінити логіку відповідності', + 'de-ch': 'Abgleichslogik ändern', + 'pt-br': 'Alterar lógica de correspondência', }, matchingLogicDescription: { - "en-us": "Require Data to Match Existing Records", - "ru-ru": "Требовать сопоставления данных с существующими записями", - "es-es": "Requerir datos para que coincidan con los registros existentes", - "fr-fr": - "Exiger que les données correspondent aux enregistrements existants", - "uk-ua": "Вимагати відповідності даних існуючим записам", - "de-ch": "Benötigt Daten um vorhandene Datensätze vergleichen zu können", - "pt-br": "Exigir que os dados correspondam aos registros existentes", + 'en-us': 'Require Data to Match Existing Records', + 'ru-ru': 'Требовать сопоставления данных с существующими записями', + 'es-es': 'Requerir datos para que coincidan con los registros existentes', + 'fr-fr': + 'Exiger que les données correspondent aux enregistrements existants', + 'uk-ua': 'Вимагати відповідності даних існуючим записам', + 'de-ch': 'Benötigt Daten um vorhandene Datensätze vergleichen zu können', + 'pt-br': 'Exigir que os dados correspondam aos registros existentes', }, matchingLogicUnavailable: { - "en-us": "Matching logic is unavailable for current mappings", - "ru-ru": "Логика соответствия недоступна для текущих сопоставлений", - "es-es": - "La lógica de coincidencia no está disponible para las asignaciones actuales", - "fr-fr": + 'en-us': 'Matching logic is unavailable for current mappings', + 'ru-ru': 'Логика соответствия недоступна для текущих сопоставлений', + 'es-es': + 'La lógica de coincidencia no está disponible para las asignaciones actuales', + 'fr-fr': "La logique de correspondance n'est pas disponible pour les mappages actuels", - "uk-ua": "Логіка зіставлення недоступна для поточних зіставлень", - "de-ch": "Die Vergleichslogik ist für aktuelle Mappings nicht verfügbar", - "pt-br": - "A lógica de correspondência não está disponível para os mapeamentos atuais", + 'uk-ua': 'Логіка зіставлення недоступна для поточних зіставлень', + 'de-ch': 'Die Vergleichslogik ist für aktuelle Mappings nicht verfügbar', + 'pt-br': + 'A lógica de correspondência não está disponível para os mapeamentos atuais', }, mustMatch: { - "en-us": "Must Match", - "ru-ru": "Логика соответствия", - "es-es": "Debe coincidir", - "fr-fr": "Doit correspondre", - "uk-ua": "Має відповідати", - "de-ch": "Muss übereinstimmen", - "pt-br": "Deve corresponder", + 'en-us': 'Must Match', + 'ru-ru': 'Логика соответствия', + 'es-es': 'Debe coincidir', + 'fr-fr': 'Doit correspondre', + 'uk-ua': 'Має відповідати', + 'de-ch': 'Muss übereinstimmen', + 'pt-br': 'Deve corresponder', }, unloadProtectMessage: { - "en-us": "This mapping has not been saved.", - "ru-ru": "Это сопоставление не было сохранено.", - "es-es": "No se hna guardado estas asignaciones/mapeo.", - "fr-fr": "Ce mappage n'a pas été enregistré.", - "uk-ua": "Це відображення не збережено.", - "de-ch": "Dieses Mapping wurde nicht gespeichert.", - "pt-br": "Este mapeamento não foi salvo.", + 'en-us': 'This mapping has not been saved.', + 'ru-ru': 'Это сопоставление не было сохранено.', + 'es-es': 'No se hna guardado estas asignaciones/mapeo.', + 'fr-fr': "Ce mappage n'a pas été enregistré.", + 'uk-ua': 'Це відображення не збережено.', + 'de-ch': 'Dieses Mapping wurde nicht gespeichert.', + 'pt-br': 'Este mapeamento não foi salvo.', }, newHeaderName: { - "en-us": "New Column {index:number}", - "ru-ru": "Новый столбец {index:number}", - "es-es": "Nueva Columna {index:number}", - "fr-fr": "Nouvelle colonne {index:number}", - "uk-ua": "Нова колонка {index:number}", - "de-ch": "Neue Spalte {index:number}", - "pt-br": "Nova Coluna {index:number}", + 'en-us': 'New Column {index:number}', + 'ru-ru': 'Новый столбец {index:number}', + 'es-es': 'Nueva Columna {index:number}', + 'fr-fr': 'Nouvelle colonne {index:number}', + 'uk-ua': 'Нова колонка {index:number}', + 'de-ch': 'Neue Spalte {index:number}', + 'pt-br': 'Nova Coluna {index:number}', }, noHeader: { - "en-us": "(no header)", - "ru-ru": "(нет заголовка)", - "es-es": "(sin encabezado)", - "fr-fr": "(pas d'en-tête)", - "uk-ua": "(без заголовка)", - "de-ch": "(keine Kopfzeile)", - "pt-br": "(sem cabeçalho)", + 'en-us': '(no header)', + 'ru-ru': '(нет заголовка)', + 'es-es': '(sin encabezado)', + 'fr-fr': "(pas d'en-tête)", + 'uk-ua': '(без заголовка)', + 'de-ch': '(keine Kopfzeile)', + 'pt-br': '(sem cabeçalho)', }, copyPlan: { - "en-us": "Copy plan from existing Data Set", - "ru-ru": "Копировать план из существующего набора данных", - "es-es": "Copie el plan del conjunto de datos existente", - "fr-fr": "Copier le plan à partir d'un ensemble de données existant", - "uk-ua": "Скопіюйте план із наявного набору даних", - "de-ch": "Plan aus vorhandenem Datenset kopieren", - "pt-br": "Copiar plano do conjunto de dados existente", + 'en-us': 'Copy plan from existing Data Set', + 'ru-ru': 'Копировать план из существующего набора данных', + 'es-es': 'Copie el plan del conjunto de datos existente', + 'fr-fr': "Copier le plan à partir d'un ensemble de données existant", + 'uk-ua': 'Скопіюйте план із наявного набору даних', + 'de-ch': 'Plan aus vorhandenem Datenset kopieren', + 'pt-br': 'Copiar plano do conjunto de dados existente', }, noPlansToCopyFrom: { - "en-us": - "There are no plans available, please continue to create an upload plan.", - "ru-ru": "Нет доступных планов, продолжайте создавать план загрузки.", - "es-es": "No hay planes disponibles, continúe creando un plan de carga.", - "fr-fr": + 'en-us': + 'There are no plans available, please continue to create an upload plan.', + 'ru-ru': 'Нет доступных планов, продолжайте создавать план загрузки.', + 'es-es': 'No hay planes disponibles, continúe creando un plan de carga.', + 'fr-fr': "Il n'y a aucun plan disponible, veuillez continuer à créer un plan de téléchargement.", - "uk-ua": - "Немає доступних планів, продовжуйте створювати план завантаження.", - "de-ch": - "Es sind keine Pläne verfügbar, bitte erstellen Sie einen Upload-Plan.", - "pt-br": "Não há planos disponíveis, continue criando um plano de upload.", + 'uk-ua': + 'Немає доступних планів, продовжуйте створювати план завантаження.', + 'de-ch': + 'Es sind keine Pläne verfügbar, bitte erstellen Sie einen Upload-Plan.', + 'pt-br': 'Não há planos disponíveis, continue criando um plano de upload.', }, invalidTemplatePlan: { - "en-us": - "Selected Data Set has no upload plan. Please select a different one.", - "ru-ru": - "Выбранный набор данных не имеет плана загрузки. Выберите другой набор данных.", - "es-es": - "El conjunto de datos seleccionado no tiene un plan de carga. Seleccione uno diferente.", - "fr-fr": + 'en-us': + 'Selected Data Set has no upload plan. Please select a different one.', + 'ru-ru': + 'Выбранный набор данных не имеет плана загрузки. Выберите другой набор данных.', + 'es-es': + 'El conjunto de datos seleccionado no tiene un plan de carga. Seleccione uno diferente.', + 'fr-fr': "L'ensemble de données sélectionné n'a pas de plan de téléchargement. Veuillez en sélectionner un autre.", - "uk-ua": "Вибраний набір даних не має плану завантаження. Виберіть інший.", - "de-ch": - "Das ausgewählte Datenset hat keinen Upload-Plan. Bitte wählen Sie einen anderen Plan.", - "pt-br": - "O conjunto de dados selecionado não possui um plano de upload. Selecione um diferente.", + 'uk-ua': 'Вибраний набір даних не має плану завантаження. Виберіть інший.', + 'de-ch': + 'Das ausgewählte Datenset hat keinen Upload-Plan. Bitte wählen Sie einen anderen Plan.', + 'pt-br': + 'O conjunto de dados selecionado não possui um plano de upload. Selecione um diferente.', }, } as const); diff --git a/specifyweb/frontend/js_src/lib/localization/welcome.ts b/specifyweb/frontend/js_src/lib/localization/welcome.ts index 77e9a4fd84e..d0d0ba78261 100644 --- a/specifyweb/frontend/js_src/lib/localization/welcome.ts +++ b/specifyweb/frontend/js_src/lib/localization/welcome.ts @@ -4,209 +4,209 @@ * @module */ -import { createDictionary } from "./utils"; +import { createDictionary } from './utils'; // Refer to "Guidelines for Programmers" in ./README.md before editing this file export const welcomeText = createDictionary({ pageTitle: { - "en-us": "Welcome", - "ru-ru": "Добро пожаловать", - "es-es": "Bienvenida", - "fr-fr": "Accueillir", - "uk-ua": "Ласкаво просимо", - "de-ch": "Willkommen", - "pt-br": "Bem-vindo", + 'en-us': 'Welcome', + 'ru-ru': 'Добро пожаловать', + 'es-es': 'Bienvenida', + 'fr-fr': 'Accueillir', + 'uk-ua': 'Ласкаво просимо', + 'de-ch': 'Willkommen', + 'pt-br': 'Bem-vindo', }, aboutSpecify: { - "en-us": "About Specify 7", - "ru-ru": "О Specify 7", - "es-es": "Sobre Specify", - "fr-fr": "À propos de Spécifier 7", - "uk-ua": "Про Specify 7", - "de-ch": "Über Specify 7", - "pt-br": "Sobre o Specify 7", + 'en-us': 'About Specify 7', + 'ru-ru': 'О Specify 7', + 'es-es': 'Sobre Specify', + 'fr-fr': 'À propos de Spécifier 7', + 'uk-ua': 'Про Specify 7', + 'de-ch': 'Über Specify 7', + 'pt-br': 'Sobre o Specify 7', }, downloadInformation: { - "en-us": "Download Information", - "ru-ru": "Скачать информацию", - "es-es": "Descargar información", - "de-ch": "Download Information", - "fr-fr": "À propos de Spécifier 7", - "uk-ua": "Про Specify 7", - "pt-br": "Informações para download", + 'en-us': 'Download Information', + 'ru-ru': 'Скачать информацию', + 'es-es': 'Descargar información', + 'de-ch': 'Download Information', + 'fr-fr': 'À propos de Spécifier 7', + 'uk-ua': 'Про Specify 7', + 'pt-br': 'Informações para download', }, taxonTiles: { - "en-us": "Taxon Tiles", - "ru-ru": "Плитки таксонов", - "es-es": "Título Táxones", - "fr-fr": "Tuiles Taxons", - "uk-ua": "Taxon Tiles", - "de-ch": "Taxon-Kacheln", - "pt-br": "Telhas de táxons", + 'en-us': 'Taxon Tiles', + 'ru-ru': 'Плитки таксонов', + 'es-es': 'Título Táxones', + 'fr-fr': 'Tuiles Taxons', + 'uk-ua': 'Taxon Tiles', + 'de-ch': 'Taxon-Kacheln', + 'pt-br': 'Telhas de táxons', }, taxonTilesDescription: { - "en-us": - "Showing Taxa with {count:number|formatted} or more {collectionObjectTable:string} records", - "ru-ru": - "Показаны таксоны с {count:number|formatted} или более {collectionObjectTable:string} записями", - "es-es": - "Mostrando taxones con {count:number|formatted} o más {collectionObjectTable:string} registros", - "fr-fr": - "Affichage des taxons avec des enregistrements {count:number|formatted} ou plus {collectionObjectTable:string}", - "uk-ua": - "Показано таксони з {count:number|formatted} або більше {collectionObjectTable:string} записів", - "de-ch": - "Zeigt Taxa mit {count:number|formatted} oder mehr {collectionObjectTable:string} Datensätzen", - "pt-br": - "Exibindo Taxa com {count:number|formatted} ou mais {collectionObjectTable:string} registros", + 'en-us': + 'Showing Taxa with {count:number|formatted} or more {collectionObjectTable:string} records', + 'ru-ru': + 'Показаны таксоны с {count:number|formatted} или более {collectionObjectTable:string} записями', + 'es-es': + 'Mostrando taxones con {count:number|formatted} o más {collectionObjectTable:string} registros', + 'fr-fr': + 'Affichage des taxons avec des enregistrements {count:number|formatted} ou plus {collectionObjectTable:string}', + 'uk-ua': + 'Показано таксони з {count:number|formatted} або більше {collectionObjectTable:string} записів', + 'de-ch': + 'Zeigt Taxa mit {count:number|formatted} oder mehr {collectionObjectTable:string} Datensätzen', + 'pt-br': + 'Exibindo Taxa com {count:number|formatted} ou mais {collectionObjectTable:string} registros', }, fullAddress: { - "en-us": - "Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA", - "ru-ru": - "Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA", - "es-es": - "Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA", - "fr-fr": - "Préciser le consortium de collections
\n\nInstitut de la Biodiversité
\n\nUniversité du Kansas
\n\n1345, boulevard Jayhawk.
\n\nLawrence, KS 66045 États-Unis", - "uk-ua": - "Укажіть консорціум колекцій
\n\nІнститут біорізноманіття
\n\nУніверситет Канзасу
\n\n1345 Jayhawk Blvd.
\n\nЛоуренс, KS 66045 США", - "de-ch": - "Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA", - "pt-br": - "Consórcio de Coleções Específicas
\n\nInstituto de Biodiversidade
\n\nUniversidade do Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 EUA", + 'en-us': + 'Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA', + 'ru-ru': + 'Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA', + 'es-es': + 'Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA', + 'fr-fr': + 'Préciser le consortium de collections
\n\nInstitut de la Biodiversité
\n\nUniversité du Kansas
\n\n1345, boulevard Jayhawk.
\n\nLawrence, KS 66045 États-Unis', + 'uk-ua': + 'Укажіть консорціум колекцій
\n\nІнститут біорізноманіття
\n\nУніверситет Канзасу
\n\n1345 Jayhawk Blvd.
\n\nЛоуренс, KS 66045 США', + 'de-ch': + 'Specify Collections Consortium
\n\nBiodiversity Institute
\n\nUniversity of Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 USA', + 'pt-br': + 'Consórcio de Coleções Específicas
\n\nInstituto de Biodiversidade
\n\nUniversidade do Kansas
\n\n1345 Jayhawk Blvd.
\n\nLawrence, KS 66045 EUA', }, disclosure: { - "en-us": + 'en-us': "Specify software is a product of the Specify Collections Consortium that is governed and funded by its member institutions. Consortium Founding Members include: Commonwealth Scientific and Industrial Research Organisation (CSIRO), Consejo Superior de Investigaciones Científicas, Denmark Consortium of Museums, Muséum d'Histoire Naturelle Geneva, University of Florida, University of Kansas, and University of Michigan. The Consortium operates under the non-profit, 501(c)3, U.S. tax status of the University of Kansas Center for Research. Specify was supported from 1996 to 2018 by grants from the U.S. National Science Foundation.", - "ru-ru": + 'ru-ru': "Specify software является продуктом консорциума Specify Collections. который управляется и финансируется организациями-членами. Члены-учредители консорциума включают: Commonwealth Scientific and Industrial Research Organisation (CSIRO), Consejo Superior de Investigaciones Científicas, Denmark Consortium of Museums, Muséum d'Histoire Naturelle Geneva, University of Florida, University of Kansas, и University of Michigan. Консорциум действует под некоммерческой организацией, 501(c)3, налоговым статусом США университета University of Kansas. Specify поддерживался с 1996 по 2018 год грантами фонда U.S. National Science Foundation.", - "es-es": + 'es-es': "Specify Software es un producto de Specify Collections Consortium, financiado por sus instituciones miembro. Los Miembros Fundadores del Consorcio incluyen: Commonwealth Scientific and Industrial Research Organisation (CSIRO), Consejo Superior de Investigaciones Científicas (CSIC), Denmark Consortium of Museums, Muséum d'Histoire Naturelle Geneva, University of Florida, University of Kansas y University of Michigan. El Consorcio opera bajo las condiciones fiscales de 501(c)3 de EE.UU. como organización sin ánimo de lucro, University of Kansas Center for Research. Specify ha sido financiado entre 1996 y 2018 por múltiples ayudas de U.S. National Science Foundation.", - "fr-fr": + 'fr-fr': "Le logiciel Specify est un produit du Specify Collections Consortium qui est régi et financé par ses institutions membres. Les membres fondateurs du consortium comprennent : l'Organisation de recherche scientifique et industrielle du Commonwealth (CSIRO), le Consejo Superior de Investigaciones Científicas, le Consortium danois des musées, le Muséum d'Histoire Naturelle de Genève, l'Université de Floride, l'Université du Kansas et l'Université du Michigan. Le Consortium opère sous le statut fiscal américain à but non lucratif 501(c)3 du Centre de recherche de l'Université du Kansas. Specify a été soutenu de 1996 à 2018 par des subventions de la National Science Foundation des États-Unis.", - "uk-ua": + 'uk-ua': "Програмне забезпечення Specify є продуктом консорціуму Specify Collections Consortium, яким керують і фінансують установи-члени. Члени-засновники консорціуму включають: Науково-промислову дослідницьку організацію Співдружності (CSIRO), Consejo Superior de Investigaciones Sientíficas, Датський консорціум музеїв, Muséum d'Histoire Naturelle Geneva, Університет Флориди, Університет Канзасу та Університет Мічигану. Консорціум працює відповідно до некомерційного, 501(c)3, податкового статусу США дослідницького центру Канзаського університету. З 1996 по 2018 рік Specify підтримувався грантами Національного наукового фонду США.", - "de-ch": + 'de-ch': "Die Specify-Software ist ein Produkt des Specify Collections Consortiums, das von seinen Mitgliedsinstitutionen verwaltet und finanziert wird. Zu den Gründungsmitgliedern des Konsortiums gehören: Commonwealth Scientific and Industrial Research Organisation (CSIRO), Consejo Superior de Investigaciones Científicas, Denmark Consortium of Museums, Muséum d'Histoire Naturelle Geneva, University of Florida, University of Kansas, University of Michigan. Das Konsortium arbeitet unter dem gemeinnützigen, 501(c)3, U.S. Steuerstatus des University of Kansas Center for Research. Specify wurde von 1996 bis 2018 durch Zuschüsse der U.S. National Science Foundation unterstützt.", - "pt-br": + 'pt-br': "O software Specify é um produto do Consórcio de Coleções Specify, administrado e financiado por suas instituições associadas. Os membros fundadores do consórcio incluem: Organização de Pesquisa Científica e Industrial da Commonwealth (CSIRO), Consejo Superior de Investigaciones Científicas, Consórcio de Museus da Dinamarca, Muséum d'Histoire Naturelle Geneva, Universidade da Flórida, Universidade do Kansas e Universidade de Michigan. O consórcio opera sob o status tributário americano 501(c)3, sem fins lucrativos, do Centro de Pesquisa da Universidade do Kansas. O Specify foi apoiado de 1996 a 2018 por doações da Fundação Nacional de Ciências dos EUA.", }, licence: { - "en-us": - "Specify 7, Copyright 2025, University of Kansas Center for Research. Specify comes with ABSOLUTELY NO WARRANTY. This is free, open-source software licensed under GNU General Public License v2.", - "ru-ru": - "Specify 7, Авторские права 2025, University of Kansas для исследования. Specify поставляется с СОВЕРШЕННО ОТСУТСТВИЕМ ГАРАНТИИ. Это бесплатное программное обеспечение с открытым исходным кодом под лицензией GNU General Public License v2.", - "es-es": - "Specify 7 Copyright © 2025 University of Kansas Center for Research. Specify viene SIN NINGUNA GARANTÍA EN ABSOLUTO. Este es un programa libre, bajo licencia GNU General Public License 2 (GPL2).", - "fr-fr": + 'en-us': + 'Specify 7, Copyright 2025, University of Kansas Center for Research. Specify comes with ABSOLUTELY NO WARRANTY. This is free, open-source software licensed under GNU General Public License v2.', + 'ru-ru': + 'Specify 7, Авторские права 2025, University of Kansas для исследования. Specify поставляется с СОВЕРШЕННО ОТСУТСТВИЕМ ГАРАНТИИ. Это бесплатное программное обеспечение с открытым исходным кодом под лицензией GNU General Public License v2.', + 'es-es': + 'Specify 7 Copyright © 2025 University of Kansas Center for Research. Specify viene SIN NINGUNA GARANTÍA EN ABSOLUTO. Este es un programa libre, bajo licencia GNU General Public License 2 (GPL2).', + 'fr-fr': "Specify 7, Copyright 2025, Centre de recherche de l'Université du Kansas. Specify est fourni sans AUCUNE GARANTIE. Il s'agit d'un logiciel libre et open source, sous licence GNU General Public License v2.", - "uk-ua": - "Укажіть 7, авторське право 2025, Дослідницький центр Канзаського університету. Specify поставляється без АБСОЛЮТНОЇ ГАРАНТІЇ. Це безкоштовне програмне забезпечення з відкритим кодом, ліцензоване згідно з GNU General Public License v2.", - "de-ch": - "Specify 7, Copyright 2025, University of Kansas Center for Research. Specify kommt mit ABSOLUT KEINER GARANTIE. Dies ist freie, quelloffene Software, lizenziert unter GNU General Public License v2.", - "pt-br": - "Especifique 7, Copyright 2025, Centro de Pesquisa da Universidade do Kansas. Especifique NÃO OFERECE NENHUMA GARANTIA. Este é um software gratuito e de código aberto, licenciado sob a Licença Pública Geral GNU v2.", + 'uk-ua': + 'Укажіть 7, авторське право 2025, Дослідницький центр Канзаського університету. Specify поставляється без АБСОЛЮТНОЇ ГАРАНТІЇ. Це безкоштовне програмне забезпечення з відкритим кодом, ліцензоване згідно з GNU General Public License v2.', + 'de-ch': + 'Specify 7, Copyright 2025, University of Kansas Center for Research. Specify kommt mit ABSOLUT KEINER GARANTIE. Dies ist freie, quelloffene Software, lizenziert unter GNU General Public License v2.', + 'pt-br': + 'Especifique 7, Copyright 2025, Centro de Pesquisa da Universidade do Kansas. Especifique NÃO OFERECE NENHUMA GARANTIA. Este é um software gratuito e de código aberto, licenciado sob a Licença Pública Geral GNU v2.', }, systemInformation: { - "en-us": "System Information", - "ru-ru": "Системная информация", - "es-es": "Información del Sistema", - "fr-fr": "Informations système", - "uk-ua": "Інформація про систему", - "de-ch": "Systeminformationen", - "pt-br": "Informações do sistema", + 'en-us': 'System Information', + 'ru-ru': 'Системная информация', + 'es-es': 'Información del Sistema', + 'fr-fr': 'Informations système', + 'uk-ua': 'Інформація про систему', + 'de-ch': 'Systeminformationen', + 'pt-br': 'Informações do sistema', }, specifyVersion: { - "en-us": "Specify 7 Version:", - "ru-ru": "Specify 7 Версия:", - "es-es": "Especifique la versión 7:", - "fr-fr": "Spécifiez la version 7 :", - "uk-ua": "Вкажіть 7 версію:", - "de-ch": "Specify 7 Version:", - "pt-br": "Especifique 7 versões:", + 'en-us': 'Specify 7 Version:', + 'ru-ru': 'Specify 7 Версия:', + 'es-es': 'Especifique la versión 7:', + 'fr-fr': 'Spécifiez la version 7 :', + 'uk-ua': 'Вкажіть 7 версію:', + 'de-ch': 'Specify 7 Version:', + 'pt-br': 'Especifique 7 versões:', }, gitSha: { - "en-us": "Git SHA:", - "ru-ru": "Git SHA:", - "es-es": "Git SHA:", - "fr-fr": "Git SHA :", - "uk-ua": "Git SHA:", - "de-ch": "Git SHA:", - "pt-br": "Git SHA:", + 'en-us': 'Git SHA:', + 'ru-ru': 'Git SHA:', + 'es-es': 'Git SHA:', + 'fr-fr': 'Git SHA :', + 'uk-ua': 'Git SHA:', + 'de-ch': 'Git SHA:', + 'pt-br': 'Git SHA:', }, buildDate: { - "en-us": "Build Date:", - "ru-ru": "Дата сборки:", - "es-es": "La fecha de construcción:", - "fr-fr": "Date de construction :", - "uk-ua": "Дата збірки:", - "de-ch": "Datum des Builds:", - "pt-br": "Data de construção:", + 'en-us': 'Build Date:', + 'ru-ru': 'Дата сборки:', + 'es-es': 'La fecha de construcción:', + 'fr-fr': 'Date de construction :', + 'uk-ua': 'Дата збірки:', + 'de-ch': 'Datum des Builds:', + 'pt-br': 'Data de construção:', }, specifySixVersion: { - "en-us": "Specify 6 Version:", - "ru-ru": "Specify 6 Версия:", - "es-es": "Versión de Specify 6:", - "fr-fr": "Spécifiez la version 6 :", - "uk-ua": "Вкажіть 6 версію:", - "de-ch": "Specify 6 Version:", - "pt-br": "Especifique 6 versões:", + 'en-us': 'Specify 6 Version:', + 'ru-ru': 'Specify 6 Версия:', + 'es-es': 'Versión de Specify 6:', + 'fr-fr': 'Spécifiez la version 6 :', + 'uk-ua': 'Вкажіть 6 версію:', + 'de-ch': 'Specify 6 Version:', + 'pt-br': 'Especifique 6 versões:', }, databaseVersion: { - "en-us": "Database Version:", - "ru-ru": "Версия базы данных:", - "es-es": "Versión de la Base de Datos:", - "fr-fr": "Version de la base de données :", - "uk-ua": "Версія бази даних:", - "de-ch": "Datenbankversion:", - "pt-br": "Versão do banco de dados:", + 'en-us': 'Database Version:', + 'ru-ru': 'Версия базы данных:', + 'es-es': 'Versión de la Base de Datos:', + 'fr-fr': 'Version de la base de données :', + 'uk-ua': 'Версія бази даних:', + 'de-ch': 'Datenbankversion:', + 'pt-br': 'Versão do banco de dados:', }, schemaVersion: { - "en-us": "DB Schema Version", - "ru-ru": "Версия схемы базы данных", - "es-es": "Versión del Esquema de base de datos", - "fr-fr": "Version du schéma de la base de données", - "uk-ua": "Версія схеми БД", - "de-ch": "Datenbankschema-Version", - "pt-br": "Versão do esquema do banco de dados", + 'en-us': 'DB Schema Version', + 'ru-ru': 'Версия схемы базы данных', + 'es-es': 'Versión del Esquema de base de datos', + 'fr-fr': 'Version du schéma de la base de données', + 'uk-ua': 'Версія схеми БД', + 'de-ch': 'Datenbankschema-Version', + 'pt-br': 'Versão do esquema do banco de dados', }, databaseName: { - "en-us": "Database Name:", - "ru-ru": "Имя базы данных:", - "es-es": "Nombre de la Base de Datos:", - "fr-fr": "Nom de la base de données :", - "uk-ua": "Ім'я бази даних:", - "de-ch": "Datenbank-Name:", - "pt-br": "Nome do banco de dados:", + 'en-us': 'Database Name:', + 'ru-ru': 'Имя базы данных:', + 'es-es': 'Nombre de la Base de Datos:', + 'fr-fr': 'Nom de la base de données :', + 'uk-ua': "Ім'я бази даних:", + 'de-ch': 'Datenbank-Name:', + 'pt-br': 'Nome do banco de dados:', }, isaNumber: { - comment: "I believe ISA stands for Institution Service Agreement", - "en-us": "ISA Number:", - "ru-ru": "Номер ISA:", - "es-es": "Número ISA:", - "fr-fr": "Numéro ISA :", - "uk-ua": "Номер ISA:", - "de-ch": "ISA-Nummer:", - "pt-br": "Número ISA:", + comment: 'I believe ISA stands for Institution Service Agreement', + 'en-us': 'ISA Number:', + 'ru-ru': 'Номер ISA:', + 'es-es': 'Número ISA:', + 'fr-fr': 'Numéro ISA :', + 'uk-ua': 'Номер ISA:', + 'de-ch': 'ISA-Nummer:', + 'pt-br': 'Número ISA:', }, browser: { - "en-us": "Browser:", - "ru-ru": "Браузер:", - "es-es": "Navegador:", - "fr-fr": "Navigateur:", - "uk-ua": "Браузер:", - "de-ch": "Browser:", - "pt-br": "Navegador:", + 'en-us': 'Browser:', + 'ru-ru': 'Браузер:', + 'es-es': 'Navegador:', + 'fr-fr': 'Navigateur:', + 'uk-ua': 'Браузер:', + 'de-ch': 'Browser:', + 'pt-br': 'Navegador:', }, databaseCreationDate: { - "en-us": "DB Creation Date:", - "ru-ru": "Дата создания базы данных:", - "es-es": "Fecha de creación de la base de datos:", - "fr-fr": "Date de création de la base de données :", - "uk-ua": "Дата створення БД:", - "de-ch": "Datenbank Erstelldatum:", - "pt-br": "Data de criação do BD:", + 'en-us': 'DB Creation Date:', + 'ru-ru': 'Дата создания базы данных:', + 'es-es': 'Fecha de creación de la base de datos:', + 'fr-fr': 'Date de création de la base de données :', + 'uk-ua': 'Дата створення БД:', + 'de-ch': 'Datenbank Erstelldatum:', + 'pt-br': 'Data de criação do BD:', }, } as const); From 6dcc0f96d061aed2a79fd5e1a6dd36c67c3389dd Mon Sep 17 00:00:00 2001 From: Gitesh Sagvekar Date: Sun, 16 Nov 2025 00:38:19 -0500 Subject: [PATCH 24/29] Restrict tree rank preference options to the active definition --- .../lib/components/Preferences/Renderers.tsx | 49 ++++++++------ .../__tests__/ThresholdRank.test.tsx | 64 +++++++++++++++++++ 2 files changed, 93 insertions(+), 20 deletions(-) create mode 100644 specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx index 48fe82b7838..8266eb3d410 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/Renderers.tsx @@ -24,7 +24,7 @@ import type { RA } from '../../utils/types'; import { Input, Select, Textarea } from '../Atoms/Form'; import { iconClassName } from '../Atoms/Icons'; import { ReadOnlyContext } from '../Core/Contexts'; -import type { AnySchema } from '../DataModel/helperTypes'; +import type { AnySchema, AnyTree } from '../DataModel/helperTypes'; import type { SpecifyTable } from '../DataModel/specifyTable'; import { tables } from '../DataModel/tables'; import type { Collection } from '../DataModel/types'; @@ -33,6 +33,7 @@ import { useMenuItems, useUserTools } from '../Header/menuItemProcessing'; import { AttachmentPicker } from '../Molecules/AttachmentPicker'; import { AutoComplete } from '../Molecules/AutoComplete'; import { ListEdit } from '../Toolbar/ListEdit'; +import { getTreeDefinitions, treeRanksPromise } from '../InitialContext/treeRanks'; import type { PreferenceItem, PreferenceRendererProps } from './types'; import { userPreferences } from './userPreferences'; @@ -389,31 +390,39 @@ export function ThresholdRank({ value, onChange, tableName, -}: PreferenceRendererProps & { readonly tableName: string }): JSX.Element { +}: PreferenceRendererProps & { + readonly tableName: AnyTree['tableName']; +}): JSX.Element { const [items, setItems] = React.useState([]); + React.useEffect(() => { - fetch(`/api/specify/${tableName.toLowerCase()}treedefitem/`) - .then(async res => { - if (!res.ok) throw new Error('Failed to fetch ThresholdRank items'); - return res.json(); - }) - .then((data: { readonly objects?: readonly { readonly rankid: number; readonly name: string }[] }) => + let isMounted = true; + treeRanksPromise + .then(() => { + const definitions = getTreeDefinitions(tableName); + const activeDefinition = definitions[0]; + /** + * Only expose ranks from the treedef tied to the current discipline. + * Otherwise ranks from unrelated trees leak into the dropdown. + */ + const ranks = activeDefinition?.ranks ?? []; + if (!isMounted) return; setItems( - (data.objects ?? []) - .map( - // Map the results to the Rank type - (item: { readonly rankid: number; readonly name: string }): Rank => ({ - rankId: item.rankid, - name: item.name, - }) - ) // This sorts the ranks so they appear in ascending order in the dropdown - .sort((rankA, rankB) => rankA.rankId - rankB.rankId) - ) - ) + ranks + .map(({ rankId, name }) => ({ + rankId, + name, + })) + .sort((rankA, rankB) => rankA.rankId - rankB.rankId) + ); + }) .catch((error: unknown) => { console.error('Error fetching ThresholdRank items:', error); - setItems([]); + if (isMounted) setItems([]); }); + return () => { + isMounted = false; + }; }, [tableName]); return ( diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx new file mode 100644 index 00000000000..a1930c0e2ac --- /dev/null +++ b/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx @@ -0,0 +1,64 @@ +import { render, screen, waitFor } from '@testing-library/react'; +import React from 'react'; + +import { ThresholdRank } from '../Renderers'; +import { overrideAjax } from '../../../tests/ajax'; +import { requireContext } from '../../../tests/helpers'; +import * as treeRanks from '../../InitialContext/treeRanks'; +import { preferencesText } from '../../../localization/preferences'; +import type { PreferenceItem } from '../types'; + +overrideAjax('/context/schema_localization.json', {}); +requireContext(); + +const mockedGetTreeDefinitions = jest.spyOn( + treeRanks, + 'getTreeDefinitions' +); + +describe('ThresholdRank', () => { + beforeEach(() => { + mockedGetTreeDefinitions.mockReset(); + }); + + test('only renders ranks from the active tree definition', async () => { + mockedGetTreeDefinitions.mockReturnValue([ + { + definition: { id: 1 } as any, + ranks: [ + { rankId: 50, name: 'Active Rank B' }, + { rankId: 10, name: 'Active Rank A' }, + ] as any, + }, + { + definition: { id: 2 } as any, + ranks: [{ rankId: 5, name: 'Inactive Rank' }] as any, + }, + ]); + + const definition: PreferenceItem = { + title: preferencesText.rankThreshold, + requiresReload: false, + visible: true, + defaultValue: 0, + values: [], + }; + render( + + ); + + await waitFor(() => expect(screen.getAllByRole('option')).toHaveLength(3)); + + const labels = screen.getAllByRole('option').map((option) => option.textContent); + expect(labels).toEqual(['None', 'Active Rank A', 'Active Rank B']); + expect(screen.queryByText('Inactive Rank')).not.toBeInTheDocument(); + }); +}); From a995792daaafbefd0ae5f24c0dd60c84b8126ef9 Mon Sep 17 00:00:00 2001 From: Gitesh Sagvekar Date: Sun, 16 Nov 2025 00:58:18 -0500 Subject: [PATCH 25/29] installed ts-node devDependancy --- specifyweb/frontend/js_src/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/specifyweb/frontend/js_src/package.json b/specifyweb/frontend/js_src/package.json index feb02ced967..7ef2ba4f5e4 100644 --- a/specifyweb/frontend/js_src/package.json +++ b/specifyweb/frontend/js_src/package.json @@ -119,6 +119,7 @@ "regenerator-runtime": "^0.13.9", "style-loader": "^3.3.4", "tailwindcss": "^3.4.1", + "ts-node": "^10.9.2", "tsx": "^4.19.3", "typedoc": "^0.23.23", "typescript": "4.8.4", From b2391800fe38cad02a693d4307aae4e1885f5ce7 Mon Sep 17 00:00:00 2001 From: Gitesh Sagvekar Date: Sun, 16 Nov 2025 01:01:56 -0500 Subject: [PATCH 26/29] installed required dependancy --- specifyweb/frontend/js_src/package-lock.json | 116 +++++-------------- 1 file changed, 29 insertions(+), 87 deletions(-) diff --git a/specifyweb/frontend/js_src/package-lock.json b/specifyweb/frontend/js_src/package-lock.json index be8b446b31d..3b98dc4679c 100644 --- a/specifyweb/frontend/js_src/package-lock.json +++ b/specifyweb/frontend/js_src/package-lock.json @@ -27,7 +27,7 @@ "d3": "^7.6.1", "dayjs": "^1.10.7", "globals": "^13.19.0", - "handsontable": "^12.4.0", + "handsontable": "^12.1.0", "jquery": "~1.12.0", "leaflet": "^1.7.1", "leaflet-gesture-handling": "^1.2.2", @@ -99,6 +99,7 @@ "regenerator-runtime": "^0.13.9", "style-loader": "^3.3.4", "tailwindcss": "^3.4.1", + "ts-node": "^10.9.2", "tsx": "^4.19.3", "typedoc": "^0.23.23", "typescript": "4.8.4", @@ -1970,8 +1971,6 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -1984,8 +1983,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "optional": true, - "peer": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -3982,33 +3979,25 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/@types/aria-query": { "version": "4.2.2", @@ -6609,9 +6598,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/crelt": { "version": "1.0.5", @@ -7354,8 +7341,6 @@ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=0.3.1" } @@ -12035,9 +12020,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/makeerror": { "version": "1.0.12", @@ -16055,12 +16038,11 @@ "dev": true }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "optional": true, - "peer": true, + "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -16104,8 +16086,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", "dev": true, - "optional": true, - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -16118,8 +16098,6 @@ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=0.4.0" } @@ -16128,9 +16106,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/tsconfig-paths": { "version": "3.14.1", @@ -16596,9 +16572,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "node_modules/v8-to-istanbul": { "version": "9.0.1", @@ -17392,8 +17366,6 @@ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", "dev": true, - "optional": true, - "peer": true, "engines": { "node": ">=6" } @@ -18620,8 +18592,6 @@ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, - "optional": true, - "peer": true, "requires": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -18631,8 +18601,6 @@ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "dev": true, - "optional": true, - "peer": true, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -19891,33 +19859,25 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "@types/aria-query": { "version": "4.2.2", @@ -21871,9 +21831,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "crelt": { "version": "1.0.5" @@ -22356,9 +22314,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "diff-sequences": { "version": "28.1.1", @@ -25747,9 +25703,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "makeerror": { "version": "1.0.12", @@ -28399,12 +28353,10 @@ "dev": true }, "ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, - "optional": true, - "peer": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -28425,25 +28377,19 @@ "version": "8.8.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "acorn-walk": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "arg": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, - "optional": true, - "peer": true + "dev": true } } }, @@ -28767,9 +28713,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "v8-to-istanbul": { "version": "9.0.1", @@ -29302,9 +29246,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, - "optional": true, - "peer": true + "dev": true }, "yocto-queue": { "version": "0.1.0", From 9e574a6a35b2c41697544500eed98c23bfcd6452 Mon Sep 17 00:00:00 2001 From: Gitesh Sagvekar Date: Sun, 16 Nov 2025 01:10:21 -0500 Subject: [PATCH 27/29] Filter tree rank preference options --- .../lib/components/Preferences/__tests__/ThresholdRank.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx index a1930c0e2ac..31afb9a750f 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx @@ -37,7 +37,7 @@ describe('ThresholdRank', () => { ]); const definition: PreferenceItem = { - title: preferencesText.rankThreshold, + title: preferencesText.rankThreshold(), requiresReload: false, visible: true, defaultValue: 0, From f79c6c0ed2ee1fd0adb46a3c919c74567712c6bd Mon Sep 17 00:00:00 2001 From: Gitesh Sagvekar Date: Sun, 16 Nov 2025 06:14:10 +0000 Subject: [PATCH 28/29] Lint code with ESLint and Prettier Triggered by 9e574a6a35b2c41697544500eed98c23bfcd6452 on branch refs/heads/issue-6843 --- .../components/Preferences/__tests__/ThresholdRank.test.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx b/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx index 31afb9a750f..0ce4c624967 100644 --- a/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx +++ b/specifyweb/frontend/js_src/lib/components/Preferences/__tests__/ThresholdRank.test.tsx @@ -1,11 +1,11 @@ import { render, screen, waitFor } from '@testing-library/react'; import React from 'react'; -import { ThresholdRank } from '../Renderers'; +import { preferencesText } from '../../../localization/preferences'; import { overrideAjax } from '../../../tests/ajax'; import { requireContext } from '../../../tests/helpers'; import * as treeRanks from '../../InitialContext/treeRanks'; -import { preferencesText } from '../../../localization/preferences'; +import { ThresholdRank } from '../Renderers'; import type { PreferenceItem } from '../types'; overrideAjax('/context/schema_localization.json', {}); @@ -49,9 +49,9 @@ describe('ThresholdRank', () => { definition={definition} item="rankThreshold" subcategory="geography" - onChange={jest.fn()} tableName="Geography" value={50} + onChange={jest.fn()} /> ); From f454e18ada66041e24e7c7802830d07bce3f43ed Mon Sep 17 00:00:00 2001 From: Gitesh Sagvekar Date: Tue, 18 Nov 2025 17:23:44 +0000 Subject: [PATCH 29/29] Lint code with ESLint and Prettier Triggered by e908ed4dc76070661017838f247650eb0c5dd021 on branch refs/heads/issue-6843 --- .../Attachments/RecordSetAttachment.tsx | 48 +++++++++---------- .../js_src/lib/components/BatchEdit/index.tsx | 1 - .../lib/components/DataModel/businessRules.ts | 11 +++-- .../js_src/lib/components/TreeView/Tree.tsx | 8 ++-- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/specifyweb/frontend/js_src/lib/components/Attachments/RecordSetAttachment.tsx b/specifyweb/frontend/js_src/lib/components/Attachments/RecordSetAttachment.tsx index 597e4ed3665..c41f2c2da3e 100644 --- a/specifyweb/frontend/js_src/lib/components/Attachments/RecordSetAttachment.tsx +++ b/specifyweb/frontend/js_src/lib/components/Attachments/RecordSetAttachment.tsx @@ -109,7 +109,8 @@ export function RecordSetAttachments({ const isComplete = fetchedCount.current === recordCount; - const [showCreateRecordSetDialog, setShowCreateRecordSetDialog] = React.useState(false); + const [showCreateRecordSetDialog, setShowCreateRecordSetDialog] = + React.useState(false); return ( <> @@ -133,16 +134,17 @@ export function RecordSetAttachments({ - (recordSetId === undefined && !isComplete) ? - setShowCreateRecordSetDialog(true) - : - loading( - downloadAllAttachments( - (recordSetId !== undefined && !isComplete) ? [] : attachmentsRef.current?.attachments ?? [], - name, - recordSetId, - ) - ) + recordSetId === undefined && !isComplete + ? setShowCreateRecordSetDialog(true) + : loading( + downloadAllAttachments( + recordSetId !== undefined && !isComplete + ? [] + : (attachmentsRef.current?.attachments ?? []), + name, + recordSetId + ) + ) } > {attachmentsText.downloadAll()} @@ -157,15 +159,15 @@ export function RecordSetAttachments({ header={ attachmentsRef.current?.attachments === undefined ? attachmentsText.attachments() - : (isComplete ? - commonText.countLine({ - resource: attachmentsText.attachments(), - count: attachmentsRef.current.attachments.length - }) : - commonText.countLineOrMore({ - resource: attachmentsText.attachments(), - count: attachmentsRef.current.attachments.length - })) + : isComplete + ? commonText.countLine({ + resource: attachmentsText.attachments(), + count: attachmentsRef.current.attachments.length, + }) + : commonText.countLineOrMore({ + resource: attachmentsText.attachments(), + count: attachmentsRef.current.attachments.length, + }) } onClose={handleHideAttachments} > @@ -215,13 +217,11 @@ function CreateRecordSetDialog({ }): JSX.Element { return ( {commonText.close()} - } + buttons={{commonText.close()}} header={attachmentsText.downloadAll()} onClose={onClose} > {attachmentsText.createRecordSetToDownloadAll()} ); -} \ No newline at end of file +} diff --git a/specifyweb/frontend/js_src/lib/components/BatchEdit/index.tsx b/specifyweb/frontend/js_src/lib/components/BatchEdit/index.tsx index 31b410f3be4..59cb682763b 100644 --- a/specifyweb/frontend/js_src/lib/components/BatchEdit/index.tsx +++ b/specifyweb/frontend/js_src/lib/components/BatchEdit/index.tsx @@ -247,7 +247,6 @@ const containsSystemTables = (queryFieldSpec: QueryFieldSpec) => { return Boolean(baseIsBlocked || pathHasBlockedSystem); }; - const hasHierarchyBaseTable = (queryFieldSpec: QueryFieldSpec) => Object.keys(schema.domainLevelIds).includes( queryFieldSpec.baseTable.name.toLowerCase() as 'collection' diff --git a/specifyweb/frontend/js_src/lib/components/DataModel/businessRules.ts b/specifyweb/frontend/js_src/lib/components/DataModel/businessRules.ts index f7581eb2b30..868b11dac2a 100644 --- a/specifyweb/frontend/js_src/lib/components/DataModel/businessRules.ts +++ b/specifyweb/frontend/js_src/lib/components/DataModel/businessRules.ts @@ -7,7 +7,11 @@ import { softFail } from '../Errors/Crash'; import { isTreeResource } from '../InitialContext/treeRanks'; import type { BusinessRuleDefs } from './businessRuleDefs'; import { businessRuleDefs } from './businessRuleDefs'; -import { backboneFieldSeparator, backendFilter, djangoLookupSeparator } from './helpers'; +import { + backboneFieldSeparator, + backendFilter, + djangoLookupSeparator, +} from './helpers'; import type { AnySchema, AnyTree, @@ -316,10 +320,7 @@ export class BusinessRuleManager { ) ); - const stringValuesAreEqual = ( - left: string, - right: string - ): boolean => + const stringValuesAreEqual = (left: string, right: string): boolean => rule.isDatabaseConstraint ? left.localeCompare(right, undefined, { sensitivity: 'accent' }) === 0 : left === right; diff --git a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx index d81ed9e55a8..b343a725731 100644 --- a/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx +++ b/specifyweb/frontend/js_src/lib/components/TreeView/Tree.tsx @@ -98,11 +98,11 @@ export function Tree< ); const [statsThreshold] = userPreferences.use( - 'treeEditor', - treeToPref[tableName], - 'rankThreshold' + 'treeEditor', + treeToPref[tableName], + 'rankThreshold' ); - + const getStats = React.useCallback( async (nodeId: number | 'null', rankId: number): Promise => rankId >= statsThreshold