diff --git a/.github/workflows/build_and_test_workflow.yml b/.github/workflows/build_and_test_workflow.yml index da7b5950dd97..751f8e83ef91 100644 --- a/.github/workflows/build_and_test_workflow.yml +++ b/.github/workflows/build_and_test_workflow.yml @@ -34,7 +34,7 @@ env: NODE_OPTIONS: "--max-old-space-size=6144 --dns-result-order=ipv4first" jobs: - build-lint-test: + build-test: name: Build and Verify on ${{ matrix.name }} (ciGroup${{ matrix.group }}) strategy: fail-fast: false @@ -104,18 +104,6 @@ jobs: if: matrix.os == 'windows-latest' run: yarn osd bootstrap || yarn osd bootstrap - - name: Run linter - # ciGroup 1 of unit-tests is shorter and Linux is faster - if: matrix.group == 1 && matrix.os == 'ubuntu-latest' - id: linter - run: yarn lint - - - name: Validate NOTICE file - # ciGroup 1 of unit-tests is shorter and Linux is faster - if: matrix.group == 1 && matrix.os == 'ubuntu-latest' - id: notice-validate - run: yarn notice:validate - - name: Run unit tests group ${{ matrix.group }} with coverage id: unit-tests run: yarn test:jest:ci:coverage --ci-group=${{ matrix.group }} @@ -140,6 +128,51 @@ jobs: id: integration-tests run: yarn test:jest_integration:ci + lint-and-validate: + name: Lint and validate + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + + - name: Setup Node + uses: actions/setup-node@v3 + with: + node-version-file: '.nvmrc' + registry-url: 'https://registry.npmjs.org' + + - name: Setup Yarn + run: | + npm uninstall -g yarn + npm i -g yarn@1.22.10 + yarn config set network-timeout 1000000 -g + + - name: Configure Yarn Cache + run: echo "YARN_CACHE_LOCATION=$(yarn cache dir)" >> $GITHUB_ENV + + - name: Initialize Yarn Cache + uses: actions/cache@v3 + with: + path: ${{ env.YARN_CACHE_LOCATION }} + key: yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + yarn- + + - name: Run bootstrap + run: yarn osd bootstrap + + - name: Run linter + id: linter + run: yarn lint + + - name: Validate NOTICE file + id: notice-validate + run: yarn notice:validate + + - name: Check i18n + id: i18n-check + run: yarn i18n:check + functional-tests: name: Run functional tests on ${{ matrix.name }} (ciGroup${{ matrix.group }}) strategy: diff --git a/changelogs/fragments/8411.yml b/changelogs/fragments/8411.yml new file mode 100644 index 000000000000..56940f03c677 --- /dev/null +++ b/changelogs/fragments/8411.yml @@ -0,0 +1,9 @@ +infra: +- Add i18n checks to PR workflows ([#8411](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8411)) + +feat: +- Ignore missing `formats` while checking locale files ([#8411](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8411)) +- Add help text and description to `i18n-check` ([#8411](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8411)) + +fix: +- Fix malformed translations ([#8411](https://github.com/opensearch-project/OpenSearch-Dashboards/pull/8411)) \ No newline at end of file diff --git a/package.json b/package.json index bd3bcc0a5fdd..713878567195 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,8 @@ "lint": "yarn run lint:es && yarn run lint:style", "lint:es": "scripts/use_node scripts/eslint", "lint:style": "scripts/use_node scripts/stylelint", + "i18n:check": "scripts/use_node scripts/i18n_check --ignore-missing --ignore-unused", + "i18n:extract": "scripts/use_node scripts/i18n_extract.js", "makelogs": "scripts/use_node scripts/makelogs", "uiFramework:compileCss": "cd packages/osd-ui-framework && yarn compileCss", "osd:watch": "scripts/use_node scripts/opensearch_dashboards --dev --logging.json=false", diff --git a/src/dev/i18n/integrate_locale_files.ts b/src/dev/i18n/integrate_locale_files.ts index 0f3a74a82faa..55b09fcc2985 100644 --- a/src/dev/i18n/integrate_locale_files.ts +++ b/src/dev/i18n/integrate_locale_files.ts @@ -56,6 +56,7 @@ export interface IntegrateOptions { ignoreIncompatible: boolean; ignoreUnused: boolean; ignoreMissing: boolean; + ignoreMissingFormats?: boolean; config: I18nConfig; log: ToolingLog; } @@ -211,7 +212,11 @@ export async function integrateLocaleFiles( ) { const localizedMessages = JSON.parse((await readFileAsync(options.sourceFileName)).toString()); if (!localizedMessages.formats) { - throw createFailError(`Locale file should contain formats object.`); + if (options.ignoreMissingFormats) { + options.log.warning('Missing formats object ignored'); + } else { + throw createFailError(`Locale file should contain formats object.`); + } } const localizedMessagesMap: LocalizedMessageMap = new Map( diff --git a/src/dev/i18n/tasks/check_compatibility.ts b/src/dev/i18n/tasks/check_compatibility.ts index 7af9ef5604a9..eb6ceb5ffc79 100644 --- a/src/dev/i18n/tasks/check_compatibility.ts +++ b/src/dev/i18n/tasks/check_compatibility.ts @@ -37,6 +37,7 @@ export interface I18nFlags { ignoreIncompatible: boolean; ignoreUnused: boolean; ignoreMissing: boolean; + ignoreMissingFormats: boolean; } export function checkCompatibility( @@ -47,16 +48,24 @@ export function checkCompatibility( if (!config) { throw new Error('Config is missing'); } - const { fix, ignoreIncompatible, ignoreUnused, ignoreMalformed, ignoreMissing } = flags; + const { + fix, + ignoreIncompatible, + ignoreUnused, + ignoreMalformed, + ignoreMissing, + ignoreMissingFormats, + } = flags; return config.translations.map((translationsPath) => ({ task: async ({ messages }: { messages: Map }) => { - // If `fix` is set we should try apply all possible fixes and override translations file. + // If `fix` is set we should try to apply all possible fixes and override translations file. await integrateLocaleFiles(messages, { dryRun: !fix, ignoreIncompatible: fix || ignoreIncompatible, ignoreUnused: fix || ignoreUnused, ignoreMissing: fix || ignoreMissing, ignoreMalformed: fix || ignoreMalformed, + ignoreMissingFormats, sourceFileName: translationsPath, targetFileName: fix ? translationsPath : undefined, config, diff --git a/src/dev/run_i18n_check.ts b/src/dev/run_i18n_check.ts index 08ff3a6f09b1..2dc9a6530068 100644 --- a/src/dev/run_i18n_check.ts +++ b/src/dev/run_i18n_check.ts @@ -45,6 +45,7 @@ import { DEFAULT_DIRS_WITH_RC_FILES } from './i18n/constants'; const skipOnNoTranslations = (context: ListrContext) => !context.config?.translations?.length && 'No translations found.'; + run( async ({ flags: { @@ -54,6 +55,7 @@ run( 'ignore-unused': ignoreUnused, 'include-config': includeConfig, 'ignore-untracked': ignoreUntracked, + 'ignore-missing-formats': ignoreMissingFormats, fix = false, path, }, @@ -121,11 +123,13 @@ run( ignoreIncompatible: !!ignoreIncompatible, ignoreUnused: !!ignoreUnused, ignoreMissing: !!ignoreMissing, + // By default ignore missing formats + ignoreMissingFormats: ignoreMissingFormats !== false, fix, }, log ), - { exitOnError: true } + { exitOnError: false } ); }, }, @@ -154,6 +158,16 @@ run( flags: { allowUnexpected: true, guessTypesForUnexpectedFlags: true, + help: ` + --ignore-incompatible Ignore mismatched keys in values and tokens in translations + --ignore-malformed Ignore malformed ICU format usages + --ignore-missing Ignore missing translations in locale files + --ignore-unused Ignore unused translations in locale files + --ignore-untracked Ignore untracked files with i18n labels + --ignore-missing-formats Ignore missing 'formats' key in locale files + (default: true, use --ignore-missing-formats=false to disable) + `, }, + description: 'Checks i18n usage in code and validates translation files', } ); diff --git a/src/translations/de-DE.json b/src/translations/de-DE.json new file mode 100644 index 000000000000..8b79b35cf288 --- /dev/null +++ b/src/translations/de-DE.json @@ -0,0 +1,267 @@ +{ + "formats": { + "number": { + "currency": { + "style": "currency" + }, + "percent": { + "style": "percent" + } + }, + "date": { + "short": { + "month": "numeric", + "day": "numeric", + "year": "2-digit" + }, + "medium": { + "month": "short", + "day": "numeric", + "year": "numeric" + }, + "long": { + "month": "long", + "day": "numeric", + "year": "numeric" + }, + "full": { + "weekday": "long", + "month": "long", + "day": "numeric", + "year": "numeric" + } + }, + "time": { + "short": { + "hour": "numeric", + "minute": "numeric" + }, + "medium": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric" + }, + "long": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + }, + "full": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + } + }, + "relative": { + "years": { + "units": "year" + }, + "months": { + "units": "month" + }, + "days": { + "units": "day" + }, + "hours": { + "units": "hour" + }, + "minutes": { + "units": "minute" + }, + "seconds": { + "units": "second" + } + } + }, + "messages": { + "data.filter.applyFilterActionTitle": "Filter auf aktuelle Ansicht anwenden", + "data.filter.applyFilters.popupHeader": "Anzuwendenden Filter auswählen", + "data.filter.applyFiltersPopup.cancelButtonLabel": "Abbrechen", + "data.filter.applyFiltersPopup.saveButtonLabel": "Wenden Sie", + "data.filter.filterBar.addFilterButtonLabel": "Filter hinzufügen", + "data.filter.filterBar.deleteFilterButtonLabel": "Löschen", + "data.filter.filterBar.disabledFilterPrefix": "Deaktiviert", + "data.filter.filterBar.disableFilterButtonLabel": "Vorübergehend deaktivieren", + "data.filter.filterBar.editFilterButtonLabel": "Filter bearbeiten", + "data.filter.filterBar.enableFilterButtonLabel": "Erneut aktivieren", + "data.filter.filterBar.excludeFilterButtonLabel": "Ergebnisse ausschließen", + "data.filter.filterBar.fieldNotFound": "Feld {key} im Indexmuster {indexPattern} nicht gefunden", + "data.filter.filterBar.filterItemBadgeAriaLabel": "Aktionen filtern", + "data.filter.filterBar.filterItemBadgeIconAriaLabel": "Löschen", + "data.filter.filterBar.includeFilterButtonLabel": "Ergebnisse einbeziehen", + "data.filter.filterBar.indexPatternSelectPlaceholder": "Ein Indexmuster auswählen", + "data.filter.filterBar.labelErrorInfo": "Indexmuster {indexPattern} nicht gefunden", + "data.filter.filterBar.labelErrorText": "Fehler", + "data.filter.filterBar.labelWarningInfo": "Feld {fieldName} in der aktuellen Ansicht nicht vorhanden", + "data.filter.filterBar.labelWarningText": "WARNUNG", + "data.filter.filterBar.moreFilterActionsMessage": "Filter: {innerText}. Diese Option für weitere Filteraktionen wählen.", + "data.filter.filterBar.negatedFilterPrefix": "NICHT ", + "data.filter.filterBar.pinFilterButtonLabel": "In allen Apps anheften", + "data.filter.filterBar.pinnedFilterPrefix": "Angeheftet", + "data.filter.filterBar.unpinFilterButtonLabel": "Lösen", + "data.filter.filterEditor.cancelButtonLabel": "Abbrechen", + "data.filter.filterEditor.createCustomLabelInputLabel": "Benutzerdefinierte Kennzeichnung", + "data.filter.filterEditor.createCustomLabelSwitchLabel": "Benutzerdefinierte Kennzeichnung erstellen?", + "data.filter.filterEditor.doesNotExistOperatorOptionLabel": "existiert nicht", + "data.filter.filterEditor.editFilterPopupTitle": "Filter bearbeiten", + "data.filter.filterEditor.editFilterValuesButtonLabel": "Filterwerte bearbeiten", + "data.filter.filterEditor.editQueryDslButtonLabel": "Als Query DSL bearbeiten", + "data.filter.filterEditor.existsOperatorOptionLabel": "existiert", + "data.filter.filterEditor.falseOptionLabel": "false ", + "data.filter.filterEditor.fieldSelectLabel": "Feld", + "data.filter.filterEditor.fieldSelectPlaceholder": "Zuerst ein Feld auswählen", + "data.filter.filterEditor.indexPatternSelectLabel": "Indexmuster", + "data.filter.filterEditor.isBetweenOperatorOptionLabel": "ist zwischen", + "data.filter.filterEditor.isNotBetweenOperatorOptionLabel": "ist nicht zwischen", + "data.filter.filterEditor.isNotOneOfOperatorOptionLabel": "ist keines von", + "data.filter.filterEditor.isNotOperatorOptionLabel": "ist nicht", + "data.filter.filterEditor.isOneOfOperatorOptionLabel": "ist eines von", + "data.filter.filterEditor.isOperatorOptionLabel": "ist", + "data.filter.filterEditor.operatorSelectLabel": "Operator", + "data.filter.filterEditor.operatorSelectPlaceholderSelect": "Auswählen", + "data.filter.filterEditor.operatorSelectPlaceholderWaiting": "Wartend", + "data.filter.filterEditor.queryDslLabel": "OpenSearch Query DSL", + "data.filter.filterEditor.rangeEndInputPlaceholder": "Ende des Bereichs", + "data.filter.filterEditor.rangeInputLabel": "Bereich", + "data.filter.filterEditor.rangeStartInputPlaceholder": "Beginn des Bereichs", + "data.filter.filterEditor.saveButtonLabel": "Speichern", + "data.filter.filterEditor.trueOptionLabel": "Richtig ", + "data.filter.filterEditor.valueInputLabel": "Wert", + "data.filter.filterEditor.valueInputPlaceholder": "Einen Wert eingeben", + "data.filter.filterEditor.valueSelectPlaceholder": "Einen Wert auswählen", + "data.filter.filterEditor.valuesSelectLabel": "Werte", + "data.filter.filterEditor.valuesSelectPlaceholder": "Werte auswählen", + "data.filter.options.addFiltersButtonLabel": "Filter hinzufügen", + "data.filter.options.changeAllFiltersButtonLabel": "Alle Filter ändern", + "data.filter.options.deleteAllFiltersButtonLabel": "Alle entfernen", + "data.filter.options.disableAllFiltersButtonLabel": "Alle deaktivieren", + "data.filter.options.enableAllFiltersButtonLabel": "Alle aktivieren", + "data.filter.options.invertDisabledFiltersButtonLabel": "Invertieren aktiviert/deaktiviert", + "data.filter.options.invertNegatedFiltersButtonLabel": "Inklusion umkehren", + "data.filter.options.pinAllFiltersButtonLabel": "Alles anheften", + "data.filter.options.unpinAllFiltersButtonLabel": "Alles lösen", + "dashboard.actions.toggleExpandPanelMenuItem.expandedDisplayName": "minimieren", + "dashboard.actions.toggleExpandPanelMenuItem.notExpandedDisplayName": "Bereich maximieren", + "dashboard.addExistingVisualizationLinkText": "Ein vorhandenes oder", + "dashboard.addNewVisualizationText": "neues Objekt zu diesem Dashboard hinzufügen", + "dashboard.addPanel.noMatchingObjectsMessage": "Keine passenden Objekte gefunden.", + "dashboard.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "{savedObjectName} wurde hinzugefügt", + "dashboard.addVisualizationLinkAriaLabel": "Eine vorhandene Visualisierung hinzufügen", + "dashboard.attributeService.saveToLibraryError": "Beim Speichern ist ein Fehler aufgetreten. Fehler: {errorMessage}", + "dashboard.changeViewModeConfirmModal.cancelButtonLabel": "Bearbeitung fortsetzen", + "dashboard.changeViewModeConfirmModal.confirmButtonLabel": "Änderungen verwerfen", + "dashboard.changeViewModeConfirmModal.discardChangesDescription": "Sobald Sie Ihre Änderungen verworfen haben, können Sie sie nicht mehr wiederherstellen.", + "dashboard.changeViewModeConfirmModal.discardChangesTitle": "Änderungen am Dashboard verwerfen?", + "dashboard.cloneModal.cloneDashboardTitleAriaLabel": "Titel des geklonten Dashboards", + "dashboard.createDashboard.failedToLoadErrorMessage": "Dashboard konnte nicht geladen werden", + "dashboard.createNewVisualizationButton": "Neu erstellen", + "dashboard.createNewVisualizationButtonAriaLabel": "Neue Visualisierungsschaltfläche erstellen", + "dashboard.dashboardAppBreadcrumbsTitle": "Dashboards", + "dashboard.dashboardBreadcrumbsTitle": "Dashboards", + "dashboard.dashboardGrid.toast.unableToLoadDashboardDangerMessage": "Das Dashboard konnte nicht geladen werden.", + "dashboard.dashboardListingDeleteErrorTitle": "Fehler beim Löschen des Dashboards", + "dashboard.dashboardPageTitle": "Dashboards", + "dashboard.dashboardWasNotSavedDangerMessage": "Das Dashboard '{dashTitle}' wurde nicht gespeichert. Fehler: {errorMessage}", + "dashboard.dashboardWasSavedSuccessMessage": "Dashboard '{dashTitle}' gespeichert", + "dashboard.embedUrlParamExtension.filterBar": "Filterleiste", + "dashboard.embedUrlParamExtension.include": "Einschließen", + "dashboard.embedUrlParamExtension.query": "Abfrage", + "dashboard.embedUrlParamExtension.timeFilter": "Zeitfilter", + "dashboard.embedUrlParamExtension.topMenu": "Hauptmenü", + "dashboard.emptyDashboardAdditionalPrivilege": "Sie benötigen zusätzliche Rechte, um dieses Dashboard zu bearbeiten.", + "dashboard.emptyDashboardTitle": "Dieses Dashboard ist leer.", + "dashboard.factory.displayName": "Dashboard", + "dashboard.featureCatalogue.dashboardDescription": "Eine Sammlung von Visualisierungen und gespeicherten Suchanfragen anzeigen und teilen.", + "dashboard.featureCatalogue.dashboardSubtitle": "Daten in Dashboards analysieren.", + "dashboard.featureCatalogue.dashboardTitle": "Dashboard", + "dashboard.fillDashboardTitle": "Dieses Dashboard ist leer. Füllen wir es!", + "dashboard.helpMenu.appName": "Dashboards", + "dashboard.howToStartWorkingOnNewDashboardDescription1": "Klicken", + "dashboard.howToStartWorkingOnNewDashboardDescription2": "Sie in der Menüleiste oben, um mit dem Hinzufügen von Bereichen zu beginnen.", + "dashboard.howToStartWorkingOnNewDashboardEditLinkAriaLabel": "Dashboard bearbeiten", + "dashboard.howToStartWorkingOnNewDashboardEditLinkText": "Bearbeiten", + "dashboard.listing. savedObjectWarning": "Nach Titel kann nicht gefiltert werden", + "dashboard.listing.createButtonText": "Erstellen Sie", + "dashboard.listing.createNewDashboard.combineDataViewFromOpenSearchDashboardsAppDescription": "Sie können Datenansichten aus jeder OpenSearch-Dashboards-App in einem Dashboard kombinieren und alles an einem Ort sehen.", + "dashboard.listing.createNewDashboard.createButtonLabel": "Neues Dashboard erstellen", + "dashboard.listing.createNewDashboard.newToOpenSearchDashboardsDescription": "Neu bei OpenSearch Dashboards? Öffnen Sie {sampleDataInstallLink} für einen Test.", + "dashboard.listing.createNewDashboard.sampleDataInstallLinkText": "Installieren Sie einige Beispieldaten", + "dashboard.listing.createNewDashboard.title": "Erstellen Sie Ihr erstes Dashboard", + "dashboard.listing.dashboardsTitle": "Dashboards", + "dashboard.listing.noItemsMessage": "Sieht aus, als hätten Sie keine Dashboards.", + "dashboard.listing.table.columnUpdatedAtDescription": "Letzte Aktualisierung des gespeicherten Objekts", + "dashboard.listing.table.columnUpdatedAtName": "Letzte Aktualisierung", + "dashboard.listing.table.descriptionColumnName": "Beschreibung", + "dashboard.listing.table.entityName": "Dashboard", + "dashboard.listing.table.entityNamePlural": "Dashboards,", + "dashboard.listing.table.titleColumnName": "Position", + "dashboard.listing.table.typeColumnName": "Typ", + "dashboard.panel.AddToLibrary": "Zur Bibliothek hinzufügen", + "dashboard.panel.clonedToast": "Geklonter Bereich", + "dashboard.panel.clonePanel": "Bereich Klonen", + "dashboard.panel.invalidData": "Ungültige Daten in der URL", + "dashboard.panel.LibraryNotification": "Bibliothek", + "dashboard.panel.libraryNotification.toolTip": "Dieses Fenster ist mit einem Bibliothekselement verknüpft. Die Bearbeitung des Bereichs kann sich auf andere Dashboards auswirken.", + "dashboard.panel.removePanel.replacePanel": "Bereich austauschen", + "dashboard.panel.title.clonedTag": "Text", + "dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "Bereichsdaten können nicht migriert werden, um die Abwärtskompatibilität von „6.1.0“ zu gewährleisten. Der Bereich enthält keine erwarteten Spalten- und/oder Zeilenfelder", + "dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "Die Bereichsdaten können nicht für die Abwärtskompatibilität von „6.3.0\" migriert werden. Der Bereich enthält nicht das erwartete Feld: {key}", + "dashboard.panel.unlinkFromLibrary": "Verknüpfung mit Bibliothekselement aufheben", + "dashboard.placeholder.factory.displayName": "Platzhalter", + "dashboard.savedDashboard.newDashboardTitle": "Neues Dashboard", + "dashboard.strings.dashboardEditTitle": "{title} wird bearbeitet", + "dashboard.strings.dashboardUnsavedEditTitle": "{title} wird bearbeitet (nicht gespeichert)", + "dashboard.strings.existingDashboardEditTitle": "{title} wird bearbeitet", + "dashboard.strings.existingDashboardEditTitleUnsaved": "{title} wird bearbeitet (nicht gespeichert)", + "dashboard.strings.existingDashboardViewTitle": "{title}", + "dashboard.strings.newDashboardEditTitle": "Neues Dashboard bearbeiten", + "dashboard.strings.newDashboardEditTitleUnsaved": "Neues Dashboard bearbeiten (nicht gespeichert)", + "dashboard.strings.newDashboardViewTitle": "Neues Dashboard", + "dashboard.tableListView.listing.createNewItemButtonLabel": "{entityName}", + "dashboard.topNav.addButtonAriaLabel": "Dem Dashboard einen Bereich hinzufügen", + "dashboard.topNav.addButtonTooltip": "Hinzufügen", + "dashboard.topNav.cloneButtonAriaLabel": "Erstellen Sie eine Kopie Ihres Dashboards", + "dashboard.topNav.cloneButtonTooltip": "Klonen", + "dashboard.topNav.cloneModal.cancelButtonLabel": "Abbrechen", + "dashboard.topNav.cloneModal.cloneDashboardModalHeaderTitle": "Dashboard klonen", + "dashboard.topNav.cloneModal.confirmButtonLabel": "Klonen bestätigen", + "dashboard.topNav.cloneModal.confirmCloneDescription": "Klonen bestätigen", + "dashboard.topNav.cloneModal.dashboardExistsDescription": "Klicken Sie auf {confirmClone}, um das Dashboard mit dem doppelten Titel zu klonen.", + "dashboard.topNav.cloneModal.dashboardExistsTitle": "Ein Dashboard mit dem Titel {newDashboardName} ist bereits vorhanden.", + "dashboard.topNav.cloneModal.enterNewNameForDashboardDescription": "Bitte geben Sie einen neuen Namen für Ihr Dashboard ein.", + "dashboard.topNav.editSwitchLabel": "Bearbeiten", + "dashboard.topNav.options.hideAllPanelTitlesSwitchLabel": "Bereichstitel anzeigen", + "dashboard.topNav.options.useMarginsBetweenPanelsSwitchLabel": "Ränder zwischen den Bereichen verwenden", + "dashboard.topNav.optionsButtonAriaLabel": "optionen", + "dashboard.topNav.optionsButtonTooltip": "optionen", + "dashboard.topNav.saveButtonAriaLabel": "Dashboard speichern", + "dashboard.topNav.saveButtonTooltip": "Speichern", + "dashboard.topNav.saveModal.descriptionFormRowLabel": "Beschreibung", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowHelpText": "Dadurch wird der Zeitfilter bei jedem Laden dieses Dashboards auf die aktuell ausgewählte Uhrzeit geändert.", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowLabel": "Zeit mit Dashboard speichern", + "dashboard.topNav.shareButtonAriaLabel": "Dashboard teilen", + "dashboard.topNav.shareButtonTooltip": "Teilen", + "dashboard.topNav.showCloneModal.dashboardCopyTitle": "{title} kopieren", + "dashboard.topNave.addButtonAriaLabel": "Hinzufügen", + "dashboard.topNave.addConfigDescription": "Dem Dashboard einen Bereich hinzufügen", + "dashboard.topNave.addNewButtonAriaLabel": "Neu erstellen", + "dashboard.topNave.addNewConfigDescription": "Einen neuen Bereich auf diesem Dashboard erstellen", + "dashboard.topNave.cancelButtonAriaLabel": "Abbrechen", + "dashboard.topNave.cloneButtonAriaLabel": "Klonen", + "dashboard.topNave.cloneConfigDescription": "Erstellen Sie eine Kopie Ihres Dashboards", + "dashboard.topNave.editButtonAriaLabel": "Bearbeiten", + "dashboard.topNave.editConfigDescription": "In den Bearbeitungsmodus wechseln", + "dashboard.topNave.fullScreenButtonAriaLabel": "Vollbild", + "dashboard.topNave.fullScreenConfigDescription": "Vollbildmodus", + "dashboard.topNave.optionsButtonAriaLabel": "optionen", + "dashboard.topNave.optionsConfigDescription": "optionen", + "dashboard.topNave.saveButtonAriaLabel": "Speichern", + "dashboard.topNave.saveConfigDescription": "Dashboard speichern", + "dashboard.topNave.shareButtonAriaLabel": "Teilen", + "dashboard.topNave.shareConfigDescription": "Dashboard teilen", + "dashboard.topNave.viewConfigDescription": "Bearbeitung abbrechen und in den Nur-Lese-Modus wechseln", + "dashboard.urlWasRemovedInSixZeroWarningMessage": "Die URL „dashboard/create“ wurde in 6.0 entfernt. Bitte aktualisieren Sie Ihre Bookmarks." + } +} diff --git a/src/translations/es-ES.json b/src/translations/es-ES.json new file mode 100644 index 000000000000..e2c40d7f13c4 --- /dev/null +++ b/src/translations/es-ES.json @@ -0,0 +1,267 @@ +{ + "formats": { + "number": { + "currency": { + "style": "currency" + }, + "percent": { + "style": "percent" + } + }, + "date": { + "short": { + "month": "numeric", + "day": "numeric", + "year": "2-digit" + }, + "medium": { + "month": "short", + "day": "numeric", + "year": "numeric" + }, + "long": { + "month": "long", + "day": "numeric", + "year": "numeric" + }, + "full": { + "weekday": "long", + "month": "long", + "day": "numeric", + "year": "numeric" + } + }, + "time": { + "short": { + "hour": "numeric", + "minute": "numeric" + }, + "medium": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric" + }, + "long": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + }, + "full": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + } + }, + "relative": { + "years": { + "units": "year" + }, + "months": { + "units": "month" + }, + "days": { + "units": "day" + }, + "hours": { + "units": "hour" + }, + "minutes": { + "units": "minute" + }, + "seconds": { + "units": "second" + } + } + }, + "messages": { + "data.filter.applyFilterActionTitle": "Aplicar filtro a la vista actual", + "data.filter.applyFilters.popupHeader": "Seleccione los filtros que desea aplicar", + "data.filter.applyFiltersPopup.cancelButtonLabel": "Cancelar", + "data.filter.applyFiltersPopup.saveButtonLabel": "Utilice", + "data.filter.filterBar.addFilterButtonLabel": "Añadir filtro", + "data.filter.filterBar.deleteFilterButtonLabel": "Eliminar", + "data.filter.filterBar.disabledFilterPrefix": "Desactivado", + "data.filter.filterBar.disableFilterButtonLabel": "Desactivar temporalmente", + "data.filter.filterBar.editFilterButtonLabel": "Editar filtro", + "data.filter.filterBar.enableFilterButtonLabel": "Volver a activar", + "data.filter.filterBar.excludeFilterButtonLabel": "Excluir resultados", + "data.filter.filterBar.fieldNotFound": "El campo {key} no se encuentra en el patrón de índices {indexPattern}", + "data.filter.filterBar.filterItemBadgeAriaLabel": "Acciones de filtrado", + "data.filter.filterBar.filterItemBadgeIconAriaLabel": "Eliminar", + "data.filter.filterBar.includeFilterButtonLabel": "Incluir resultados", + "data.filter.filterBar.indexPatternSelectPlaceholder": "Seleccione un patrón de índices", + "data.filter.filterBar.labelErrorInfo": "No se encontró el patrón de índices {indexPattern}", + "data.filter.filterBar.labelErrorText": "Error", + "data.filter.filterBar.labelWarningInfo": "El campo {fieldName} no existe en la vista actual", + "data.filter.filterBar.labelWarningText": "Advertencia", + "data.filter.filterBar.moreFilterActionsMessage": "Filtro: {innerText}. Seleccione para ver más acciones de filtrado.", + "data.filter.filterBar.negatedFilterPrefix": "NOT ", + "data.filter.filterBar.pinFilterButtonLabel": "Anclar en todas las aplicaciones", + "data.filter.filterBar.pinnedFilterPrefix": "Anclado", + "data.filter.filterBar.unpinFilterButtonLabel": "Desanclar", + "data.filter.filterEditor.cancelButtonLabel": "Cancelar", + "data.filter.filterEditor.createCustomLabelInputLabel": "Etiqueta personalizada", + "data.filter.filterEditor.createCustomLabelSwitchLabel": "¿Crear una etiqueta personalizada?", + "data.filter.filterEditor.doesNotExistOperatorOptionLabel": "no existe", + "data.filter.filterEditor.editFilterPopupTitle": "Editar filtro", + "data.filter.filterEditor.editFilterValuesButtonLabel": "Editar valores de filtro", + "data.filter.filterEditor.editQueryDslButtonLabel": "Editar como Query DSL", + "data.filter.filterEditor.existsOperatorOptionLabel": "existe", + "data.filter.filterEditor.falseOptionLabel": "false ", + "data.filter.filterEditor.fieldSelectLabel": "Campo", + "data.filter.filterEditor.fieldSelectPlaceholder": "Primero seleccione un campo", + "data.filter.filterEditor.indexPatternSelectLabel": "Patrón de índices", + "data.filter.filterEditor.isBetweenOperatorOptionLabel": "está entre", + "data.filter.filterEditor.isNotBetweenOperatorOptionLabel": "no está entre", + "data.filter.filterEditor.isNotOneOfOperatorOptionLabel": "no es uno de", + "data.filter.filterEditor.isNotOperatorOptionLabel": "no es", + "data.filter.filterEditor.isOneOfOperatorOptionLabel": "es uno de", + "data.filter.filterEditor.isOperatorOptionLabel": "is", + "data.filter.filterEditor.operatorSelectLabel": "Operador", + "data.filter.filterEditor.operatorSelectPlaceholderSelect": "Seleccionar", + "data.filter.filterEditor.operatorSelectPlaceholderWaiting": "Esperando", + "data.filter.filterEditor.queryDslLabel": "Query DSL de OpenSearch", + "data.filter.filterEditor.rangeEndInputPlaceholder": "Final del intervalo", + "data.filter.filterEditor.rangeInputLabel": "Intervalo", + "data.filter.filterEditor.rangeStartInputPlaceholder": "Inicio del intervalo", + "data.filter.filterEditor.saveButtonLabel": "Ahorre", + "data.filter.filterEditor.trueOptionLabel": "true ", + "data.filter.filterEditor.valueInputLabel": "Valor", + "data.filter.filterEditor.valueInputPlaceholder": "Introduzca un valor", + "data.filter.filterEditor.valueSelectPlaceholder": "Seleccione un valor", + "data.filter.filterEditor.valuesSelectLabel": "Valores", + "data.filter.filterEditor.valuesSelectPlaceholder": "Seleccionar valores", + "data.filter.options.addFiltersButtonLabel": "Añadir filtros", + "data.filter.options.changeAllFiltersButtonLabel": "Cambiar todos los filtros", + "data.filter.options.deleteAllFiltersButtonLabel": "Eliminar todo", + "data.filter.options.disableAllFiltersButtonLabel": "Desactivar todo", + "data.filter.options.enableAllFiltersButtonLabel": "Activar todo", + "data.filter.options.invertDisabledFiltersButtonLabel": "Invertir activado/desactivado", + "data.filter.options.invertNegatedFiltersButtonLabel": "Invertir la inclusión", + "data.filter.options.pinAllFiltersButtonLabel": "Anclar todo", + "data.filter.options.unpinAllFiltersButtonLabel": "Desanclar todo", + "dashboard.actions.toggleExpandPanelMenuItem.expandedDisplayName": "Minimizar", + "dashboard.actions.toggleExpandPanelMenuItem.notExpandedDisplayName": "Maximizar el panel", + "dashboard.addExistingVisualizationLinkText": "Añadir un objeto existente", + "dashboard.addNewVisualizationText": "o nuevo a este panel", + "dashboard.addPanel.noMatchingObjectsMessage": "No se encontró ningún objeto que coincida.", + "dashboard.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "Se añadió {savedObjectName}", + "dashboard.addVisualizationLinkAriaLabel": "Añadir una visualización existente", + "dashboard.attributeService.saveToLibraryError": "Se produjo un error al guardar. Error: {errorMessage}", + "dashboard.changeViewModeConfirmModal.cancelButtonLabel": "Continuar editando", + "dashboard.changeViewModeConfirmModal.confirmButtonLabel": "Descartar cambios", + "dashboard.changeViewModeConfirmModal.discardChangesDescription": "Una descartados, los cambios no se podrán recuperar.", + "dashboard.changeViewModeConfirmModal.discardChangesTitle": "¿Descartar los cambios del panel?", + "dashboard.cloneModal.cloneDashboardTitleAriaLabel": "Título del panel clonado", + "dashboard.createDashboard.failedToLoadErrorMessage": "No se pudo cargar el panel", + "dashboard.createNewVisualizationButton": "Crear", + "dashboard.createNewVisualizationButtonAriaLabel": "Crear botón de visualización", + "dashboard.dashboardAppBreadcrumbsTitle": "Paneles", + "dashboard.dashboardBreadcrumbsTitle": "Paneles", + "dashboard.dashboardGrid.toast.unableToLoadDashboardDangerMessage": "No se puede cargar el panel.", + "dashboard.dashboardListingDeleteErrorTitle": "Error al eliminar el panel", + "dashboard.dashboardPageTitle": "Paneles", + "dashboard.dashboardWasNotSavedDangerMessage": "El panel \"{dashTitle}\" no se guardó. Error: {errorMessage}", + "dashboard.dashboardWasSavedSuccessMessage": "Se guardó el panel \"{dashTitle}\".", + "dashboard.embedUrlParamExtension.filterBar": "Barra de filtro", + "dashboard.embedUrlParamExtension.include": "Incluye", + "dashboard.embedUrlParamExtension.query": "Consulta", + "dashboard.embedUrlParamExtension.timeFilter": "Filtro de tiempo", + "dashboard.embedUrlParamExtension.topMenu": "Menú superior", + "dashboard.emptyDashboardAdditionalPrivilege": "Se requieren privilegios adicionales para editar este panel.", + "dashboard.emptyDashboardTitle": "Este panel está vacío.", + "dashboard.factory.displayName": "panel", + "dashboard.featureCatalogue.dashboardDescription": "Muestre y comparta una colección de visualizaciones y búsquedas guardadas.", + "dashboard.featureCatalogue.dashboardSubtitle": "Analice los datos de los paneles.", + "dashboard.featureCatalogue.dashboardTitle": "Panel", + "dashboard.fillDashboardTitle": "Este panel está vacío. ¡Vamos a llenarlo!", + "dashboard.helpMenu.appName": "Paneles", + "dashboard.howToStartWorkingOnNewDashboardDescription1": "Haga clic.", + "dashboard.howToStartWorkingOnNewDashboardDescription2": "en la barra de menús de arriba para empezar a añadir paneles.", + "dashboard.howToStartWorkingOnNewDashboardEditLinkAriaLabel": "Editar panel", + "dashboard.howToStartWorkingOnNewDashboardEditLinkText": "Edit (Editar)", + "dashboard.listing. savedObjectWarning": "No se puede filtrar por título", + "dashboard.listing.createButtonText": "Cree", + "dashboard.listing.createNewDashboard.combineDataViewFromOpenSearchDashboardsAppDescription": "Puede combinar las vistas de datos de cualquier aplicación de OpenSearch Dashboards en un solo panel y ver todo en un mismo lugar.", + "dashboard.listing.createNewDashboard.createButtonLabel": "Crear un panel", + "dashboard.listing.createNewDashboard.newToOpenSearchDashboardsDescription": "¿Es la primera vez que usa OpenSearch Dashboards? {sampleDataInstallLink} para probarlo.", + "dashboard.listing.createNewDashboard.sampleDataInstallLinkText": "Instale algunos datos de muestra", + "dashboard.listing.createNewDashboard.title": "Cree su primer panel", + "dashboard.listing.dashboardsTitle": "Paneles", + "dashboard.listing.noItemsMessage": "Parece que no tiene ningún panel.", + "dashboard.listing.table.columnUpdatedAtDescription": "Última actualización del objeto guardado", + "dashboard.listing.table.columnUpdatedAtName": "Última actualización", + "dashboard.listing.table.descriptionColumnName": "Descripción", + "dashboard.listing.table.entityName": "panel", + "dashboard.listing.table.entityNamePlural": "paneles", + "dashboard.listing.table.titleColumnName": "Título", + "dashboard.listing.table.typeColumnName": "Tipo", + "dashboard.panel.AddToLibrary": "Añadir a la biblioteca", + "dashboard.panel.clonedToast": "Panel clonado", + "dashboard.panel.clonePanel": "Clonar panel", + "dashboard.panel.invalidData": "Datos no válidos en la URL", + "dashboard.panel.LibraryNotification": "Biblioteca", + "dashboard.panel.libraryNotification.toolTip": "Este panel está vinculado a un elemento de la biblioteca. Editar el panel puede afectar a otros paneles.", + "dashboard.panel.removePanel.replacePanel": "Sustituir panel", + "dashboard.panel.title.clonedTag": "copiar", + "dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "No se pueden migrar los datos del panel para que sean compatibles con versiones anteriores a la \"6.1.0\"; el panel no contiene los campos de columna y/o fila esperados.", + "dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "No se pueden migrar los datos del panel para que sean compatibles con versiones anteriores a la \"6.3.0\", el panel no contiene el campo esperado: {key}.", + "dashboard.panel.unlinkFromLibrary": "Desvincular del elemento de la biblioteca", + "dashboard.placeholder.factory.displayName": "marcador de posición", + "dashboard.savedDashboard.newDashboardTitle": "Nuevo panel", + "dashboard.strings.dashboardEditTitle": "Se está editando {title}", + "dashboard.strings.dashboardUnsavedEditTitle": "Se está editando {title} (sin guardar)", + "dashboard.strings.existingDashboardEditTitle": "Se está editando {title}", + "dashboard.strings.existingDashboardEditTitleUnsaved": "Se está editando {title} (sin guardar)", + "dashboard.strings.existingDashboardViewTitle": "{title}", + "dashboard.strings.newDashboardEditTitle": "Se está editando un panel nuevo", + "dashboard.strings.newDashboardEditTitleUnsaved": "Se está editando un nuevo panel (sin guardar)", + "dashboard.strings.newDashboardViewTitle": "Nuevo panel", + "dashboard.tableListView.listing.createNewItemButtonLabel": "{entityName}", + "dashboard.topNav.addButtonAriaLabel": "Añade un panel al panel global", + "dashboard.topNav.addButtonTooltip": "Agregar", + "dashboard.topNav.cloneButtonAriaLabel": "Crea una copia del panel", + "dashboard.topNav.cloneButtonTooltip": "Clonar", + "dashboard.topNav.cloneModal.cancelButtonLabel": "Cancelar", + "dashboard.topNav.cloneModal.cloneDashboardModalHeaderTitle": "Clonar panel", + "dashboard.topNav.cloneModal.confirmButtonLabel": "Confirmar clonación", + "dashboard.topNav.cloneModal.confirmCloneDescription": "Confirmar clonación", + "dashboard.topNav.cloneModal.dashboardExistsDescription": "Haga clic en {confirmClone} para clonar el panel con el título duplicado.", + "dashboard.topNav.cloneModal.dashboardExistsTitle": "Ya existe un panel con el título {newDashboardName}.", + "dashboard.topNav.cloneModal.enterNewNameForDashboardDescription": "Escriba otro nombre para el panel.", + "dashboard.topNav.editSwitchLabel": "Edit (Editar)", + "dashboard.topNav.options.hideAllPanelTitlesSwitchLabel": "Mostrar los títulos de los paneles", + "dashboard.topNav.options.useMarginsBetweenPanelsSwitchLabel": "Usar márgenes entre los paneles", + "dashboard.topNav.optionsButtonAriaLabel": "gestión logística", + "dashboard.topNav.optionsButtonTooltip": "gestión logística", + "dashboard.topNav.saveButtonAriaLabel": "Guarda el panel", + "dashboard.topNav.saveButtonTooltip": "Ahorre", + "dashboard.topNav.saveModal.descriptionFormRowLabel": "Descripción", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowHelpText": "Cambia el filtro de tiempo con la hora seleccionada cada vez que se carga este panel.", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowLabel": "Guardar la hora con el panel", + "dashboard.topNav.shareButtonAriaLabel": "Permite compartir el panel", + "dashboard.topNav.shareButtonTooltip": "Compartir", + "dashboard.topNav.showCloneModal.dashboardCopyTitle": "Copiar {title}", + "dashboard.topNave.addButtonAriaLabel": "añadir", + "dashboard.topNave.addConfigDescription": "Añade un panel al panel global", + "dashboard.topNave.addNewButtonAriaLabel": "Crear", + "dashboard.topNave.addNewConfigDescription": "Crea un panel nuevo en este panel global", + "dashboard.topNave.cancelButtonAriaLabel": "cancelar", + "dashboard.topNave.cloneButtonAriaLabel": "clonar", + "dashboard.topNave.cloneConfigDescription": "Crea una copia del panel", + "dashboard.topNave.editButtonAriaLabel": "editar", + "dashboard.topNave.editConfigDescription": "Cambia al modo de edición", + "dashboard.topNave.fullScreenButtonAriaLabel": "pantalla completa", + "dashboard.topNave.fullScreenConfigDescription": "Modo de pantalla completa", + "dashboard.topNave.optionsButtonAriaLabel": "de configuración", + "dashboard.topNave.optionsConfigDescription": "gestión logística", + "dashboard.topNave.saveButtonAriaLabel": "guardar", + "dashboard.topNave.saveConfigDescription": "Guarda el panel", + "dashboard.topNave.shareButtonAriaLabel": "compartir", + "dashboard.topNave.shareConfigDescription": "Permite compartir el panel", + "dashboard.topNave.viewConfigDescription": "Cancela la edición y cambiar al modo de solo lectura", + "dashboard.urlWasRemovedInSixZeroWarningMessage": "La URL \"dashboard/create\" se eliminó en la versión 6.0. Actualice los marcadores." + } +} diff --git a/src/translations/fr-FR.json b/src/translations/fr-FR.json new file mode 100644 index 000000000000..60fc652eedb7 --- /dev/null +++ b/src/translations/fr-FR.json @@ -0,0 +1,267 @@ +{ + "formats": { + "number": { + "currency": { + "style": "currency" + }, + "percent": { + "style": "percent" + } + }, + "date": { + "short": { + "month": "numeric", + "day": "numeric", + "year": "2-digit" + }, + "medium": { + "month": "short", + "day": "numeric", + "year": "numeric" + }, + "long": { + "month": "long", + "day": "numeric", + "year": "numeric" + }, + "full": { + "weekday": "long", + "month": "long", + "day": "numeric", + "year": "numeric" + } + }, + "time": { + "short": { + "hour": "numeric", + "minute": "numeric" + }, + "medium": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric" + }, + "long": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + }, + "full": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + } + }, + "relative": { + "years": { + "units": "year" + }, + "months": { + "units": "month" + }, + "days": { + "units": "day" + }, + "hours": { + "units": "hour" + }, + "minutes": { + "units": "minute" + }, + "seconds": { + "units": "second" + } + } + }, + "messages": { + "data.filter.applyFilterActionTitle": "Appliquer le filtre à la vue actuelle", + "data.filter.applyFilters.popupHeader": "Sélectionner les filtres à appliquer", + "data.filter.applyFiltersPopup.cancelButtonLabel": "Annuler", + "data.filter.applyFiltersPopup.saveButtonLabel": "Appliquer", + "data.filter.filterBar.addFilterButtonLabel": "Ajouter un filtre", + "data.filter.filterBar.deleteFilterButtonLabel": "Supprimer", + "data.filter.filterBar.disabledFilterPrefix": "Désactivé", + "data.filter.filterBar.disableFilterButtonLabel": "Désactiver temporairement", + "data.filter.filterBar.editFilterButtonLabel": "Modifier le filtre", + "data.filter.filterBar.enableFilterButtonLabel": "Réactiver", + "data.filter.filterBar.excludeFilterButtonLabel": "Exclure les résultats", + "data.filter.filterBar.fieldNotFound": "Le champ {key} est introuvable dans le modèle d’index {indexPattern}", + "data.filter.filterBar.filterItemBadgeAriaLabel": "Actions de filtrage", + "data.filter.filterBar.filterItemBadgeIconAriaLabel": "Supprimer", + "data.filter.filterBar.includeFilterButtonLabel": "Inclure les résultats", + "data.filter.filterBar.indexPatternSelectPlaceholder": "Sélectionner un modèle d’index", + "data.filter.filterBar.labelErrorInfo": "Modèle d’index {indexPattern} introuvable", + "data.filter.filterBar.labelErrorText": "Erreur", + "data.filter.filterBar.labelWarningInfo": "Le champ {fieldName} n’existe pas dans la vue actuelle", + "data.filter.filterBar.labelWarningText": "Avertissement", + "data.filter.filterBar.moreFilterActionsMessage": "Filtre : {innerText}. Sélectionner pour plus d’actions de filtrage.", + "data.filter.filterBar.negatedFilterPrefix": "NE PAS ", + "data.filter.filterBar.pinFilterButtonLabel": "Épingler dans toutes les applications", + "data.filter.filterBar.pinnedFilterPrefix": "Épinglé", + "data.filter.filterBar.unpinFilterButtonLabel": "Désépingler", + "data.filter.filterEditor.cancelButtonLabel": "Annuler", + "data.filter.filterEditor.createCustomLabelInputLabel": "Étiquette personnalisée", + "data.filter.filterEditor.createCustomLabelSwitchLabel": "Créer une étiquette personnalisée ?", + "data.filter.filterEditor.doesNotExistOperatorOptionLabel": "n’existe pas", + "data.filter.filterEditor.editFilterPopupTitle": "Modifier le filtre", + "data.filter.filterEditor.editFilterValuesButtonLabel": "Modifier les valeurs des filtres", + "data.filter.filterEditor.editQueryDslButtonLabel": "Modifier en tant que requête DSL", + "data.filter.filterEditor.existsOperatorOptionLabel": "existe", + "data.filter.filterEditor.falseOptionLabel": "false ", + "data.filter.filterEditor.fieldSelectLabel": "Champ", + "data.filter.filterEditor.fieldSelectPlaceholder": "Sélectionner d’abord un champ", + "data.filter.filterEditor.indexPatternSelectLabel": "Modèle d’index", + "data.filter.filterEditor.isBetweenOperatorOptionLabel": "se situe entre", + "data.filter.filterEditor.isNotBetweenOperatorOptionLabel": "ne se situe pas entre", + "data.filter.filterEditor.isNotOneOfOperatorOptionLabel": "n’est pas l’un des", + "data.filter.filterEditor.isNotOperatorOptionLabel": "n’est pas", + "data.filter.filterEditor.isOneOfOperatorOptionLabel": "est l’un des", + "data.filter.filterEditor.isOperatorOptionLabel": "is", + "data.filter.filterEditor.operatorSelectLabel": "Operator (Opérateur)", + "data.filter.filterEditor.operatorSelectPlaceholderSelect": "Sélectionner", + "data.filter.filterEditor.operatorSelectPlaceholderWaiting": "En attente", + "data.filter.filterEditor.queryDslLabel": "Requête OpenSearch DSL", + "data.filter.filterEditor.rangeEndInputPlaceholder": "Fin de plage", + "data.filter.filterEditor.rangeInputLabel": "Fourchette", + "data.filter.filterEditor.rangeStartInputPlaceholder": "Début de plage", + "data.filter.filterEditor.saveButtonLabel": "Enregistrer", + "data.filter.filterEditor.trueOptionLabel": "vrai ", + "data.filter.filterEditor.valueInputLabel": "Valeur", + "data.filter.filterEditor.valueInputPlaceholder": "Entrer une valeur", + "data.filter.filterEditor.valueSelectPlaceholder": "Sélectionner une valeur", + "data.filter.filterEditor.valuesSelectLabel": "Valeurs", + "data.filter.filterEditor.valuesSelectPlaceholder": "Sélectionner des valeurs", + "data.filter.options.addFiltersButtonLabel": "Ajouter des filtres", + "data.filter.options.changeAllFiltersButtonLabel": "Modifier tous les filtres", + "data.filter.options.deleteAllFiltersButtonLabel": "Supprimer tout", + "data.filter.options.disableAllFiltersButtonLabel": "Désactiver tout", + "data.filter.options.enableAllFiltersButtonLabel": "Tout activer", + "data.filter.options.invertDisabledFiltersButtonLabel": "Inverser activé/désactivé", + "data.filter.options.invertNegatedFiltersButtonLabel": "Inverser l’inclusion", + "data.filter.options.pinAllFiltersButtonLabel": "Tout épingler", + "data.filter.options.unpinAllFiltersButtonLabel": "Dépingler tout", + "dashboard.actions.toggleExpandPanelMenuItem.expandedDisplayName": "Réduire", + "dashboard.actions.toggleExpandPanelMenuItem.notExpandedDisplayName": "Maximiser le panneau", + "dashboard.addExistingVisualizationLinkText": "Ajouter un existant", + "dashboard.addNewVisualizationText": "ou nouvel objet sur ce tableau de bord", + "dashboard.addPanel.noMatchingObjectsMessage": "Aucun objet correspondant n’a été trouvé.", + "dashboard.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "{savedObjectName} a été ajouté", + "dashboard.addVisualizationLinkAriaLabel": "Ajouter une visualisation existante", + "dashboard.attributeService.saveToLibraryError": "Une erreur s’est produite lors de l’enregistrement. Erreur : {errorMessage}", + "dashboard.changeViewModeConfirmModal.cancelButtonLabel": "Poursuivre l’édition", + "dashboard.changeViewModeConfirmModal.confirmButtonLabel": "Annuler les modifications", + "dashboard.changeViewModeConfirmModal.discardChangesDescription": "Une fois que vous avez ignoré vos modifications, il n’est plus possible de les récupérer.", + "dashboard.changeViewModeConfirmModal.discardChangesTitle": "Ignorer les modifications apportées au tableau de bord ?", + "dashboard.cloneModal.cloneDashboardTitleAriaLabel": "Titre du tableau de bord cloné", + "dashboard.createDashboard.failedToLoadErrorMessage": "Impossible de charger le tableau de bord", + "dashboard.createNewVisualizationButton": "Créer un nouveau", + "dashboard.createNewVisualizationButtonAriaLabel": "Créer un nouveau bouton de visualisation", + "dashboard.dashboardAppBreadcrumbsTitle": "Tableaux de bord", + "dashboard.dashboardBreadcrumbsTitle": "Tableaux de bord", + "dashboard.dashboardGrid.toast.unableToLoadDashboardDangerMessage": "Impossible de charger le tableau de bord.", + "dashboard.dashboardListingDeleteErrorTitle": "Erreur de suppression du tableau de bord", + "dashboard.dashboardPageTitle": "Tableaux de bord", + "dashboard.dashboardWasNotSavedDangerMessage": "Le tableau de bord « {dashTitle} » n’a pas été enregistré. Erreur : {errorMessage}", + "dashboard.dashboardWasSavedSuccessMessage": "Le tableau de bord « {dashTitle} » a été enregistré", + "dashboard.embedUrlParamExtension.filterBar": "Barre de filtrage", + "dashboard.embedUrlParamExtension.include": "Inclure", + "dashboard.embedUrlParamExtension.query": "Requête", + "dashboard.embedUrlParamExtension.timeFilter": "Filtre temporel", + "dashboard.embedUrlParamExtension.topMenu": "Menu supérieur", + "dashboard.emptyDashboardAdditionalPrivilege": "Vous avez besoin de privilèges supplémentaires pour modifier ce tableau de bord.", + "dashboard.emptyDashboardTitle": "Ce tableau de bord est vide.", + "dashboard.factory.displayName": "tableau de bord", + "dashboard.featureCatalogue.dashboardDescription": "Afficher et partager une collection de visualisations et de recherches enregistrées.", + "dashboard.featureCatalogue.dashboardSubtitle": "Analyser les données dans des tableaux de bord.", + "dashboard.featureCatalogue.dashboardTitle": "Dashboard (Tableau de bord)", + "dashboard.fillDashboardTitle": "Ce tableau de bord est vide. Remplissons-le !", + "dashboard.helpMenu.appName": "Tableaux de bord", + "dashboard.howToStartWorkingOnNewDashboardDescription1": "Cliquer", + "dashboard.howToStartWorkingOnNewDashboardDescription2": "sur la barre de menu ci-dessus pour commencer à ajouter des panneaux.", + "dashboard.howToStartWorkingOnNewDashboardEditLinkAriaLabel": "Modifier le tableau de bord", + "dashboard.howToStartWorkingOnNewDashboardEditLinkText": "Modifier", + "dashboard.listing. savedObjectWarning": "Impossible de filtrer par titre", + "dashboard.listing.createButtonText": "Créez", + "dashboard.listing.createNewDashboard.combineDataViewFromOpenSearchDashboardsAppDescription": "Vous pouvez combiner les vues de données de n’importe quelle application OpenSearch Dashboards dans un seul tableau de bord et tout voir au même endroit.", + "dashboard.listing.createNewDashboard.createButtonLabel": "Créer un nouveau tableau de bord", + "dashboard.listing.createNewDashboard.newToOpenSearchDashboardsDescription": "Vous êtes nouveau sur OpenSearch Dashboards ? {sampleDataInstallLink} pour faire un essai routier.", + "dashboard.listing.createNewDashboard.sampleDataInstallLinkText": "Installer quelques exemples de données", + "dashboard.listing.createNewDashboard.title": "Créez votre premier tableau de bord", + "dashboard.listing.dashboardsTitle": "Tableaux de bord", + "dashboard.listing.noItemsMessage": "Il semblerait que vous n’ayez aucun tableau de bord.", + "dashboard.listing.table.columnUpdatedAtDescription": "Dernière mise à jour de l’objet enregistré", + "dashboard.listing.table.columnUpdatedAtName": "Date de la dernière mise à jour", + "dashboard.listing.table.descriptionColumnName": "Description", + "dashboard.listing.table.entityName": "tableau de bord", + "dashboard.listing.table.entityNamePlural": "des tableaux de bord", + "dashboard.listing.table.titleColumnName": "Titre", + "dashboard.listing.table.typeColumnName": "Type", + "dashboard.panel.AddToLibrary": "Ajouter à la bibliothèque", + "dashboard.panel.clonedToast": "Panneau cloné", + "dashboard.panel.clonePanel": "Panneau de clonage", + "dashboard.panel.invalidData": "Données non valides dans l’URL", + "dashboard.panel.LibraryNotification": "Bibliothèque", + "dashboard.panel.libraryNotification.toolTip": "Ce panneau est lié à un élément de la bibliothèque. La modification du panneau peut affecter les autres tableaux de bord.", + "dashboard.panel.removePanel.replacePanel": "Remplacer le panneau", + "dashboard.panel.title.clonedTag": "copier", + "dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "Impossible de migrer les données du panneau pour assurer la rétrocompatibilité « 6.1.0 », le panneau ne contient pas les champs de colonne et/ou de ligne attendus", + "dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "Impossible de migrer les données du panneau pour assurer la rétrocompatibilité « 6.3.0 », le panneau ne contient pas le champ attendu : {key}", + "dashboard.panel.unlinkFromLibrary": "Supprimer le lien avec un élément de bibliothèque", + "dashboard.placeholder.factory.displayName": "emplacement réservé", + "dashboard.savedDashboard.newDashboardTitle": "Nouveau tableau de bord", + "dashboard.strings.dashboardEditTitle": "Éditer le {title}", + "dashboard.strings.dashboardUnsavedEditTitle": "Modification du {title} (non enregistré)", + "dashboard.strings.existingDashboardEditTitle": "Éditer le {title}", + "dashboard.strings.existingDashboardEditTitleUnsaved": "Modification du {title} (non enregistré)", + "dashboard.strings.existingDashboardViewTitle": "{title}", + "dashboard.strings.newDashboardEditTitle": "Modifier un nouveau tableau de bord", + "dashboard.strings.newDashboardEditTitleUnsaved": "Modifier un nouveau tableau de bord (non enregistré)", + "dashboard.strings.newDashboardViewTitle": "Nouveau tableau de bord", + "dashboard.tableListView.listing.createNewItemButtonLabel": "{entityName}", + "dashboard.topNav.addButtonAriaLabel": "Ajouter un panneau au tableau de bord", + "dashboard.topNav.addButtonTooltip": "Ajouter", + "dashboard.topNav.cloneButtonAriaLabel": "Créez une copie de votre tableau de bord", + "dashboard.topNav.cloneButtonTooltip": "Clonez", + "dashboard.topNav.cloneModal.cancelButtonLabel": "Annuler", + "dashboard.topNav.cloneModal.cloneDashboardModalHeaderTitle": "Tableau de bord cloné", + "dashboard.topNav.cloneModal.confirmButtonLabel": "Confirmer le clone", + "dashboard.topNav.cloneModal.confirmCloneDescription": "Confirmer le clone", + "dashboard.topNav.cloneModal.dashboardExistsDescription": "Cliquer sur {confirmClone} pour cloner le tableau de bord avec le titre dupliqué.", + "dashboard.topNav.cloneModal.dashboardExistsTitle": "Un tableau de bord intitulé {newDashboardName} existe déjà.", + "dashboard.topNav.cloneModal.enterNewNameForDashboardDescription": "Entrez un nouveau nom pour votre tableau de bord.", + "dashboard.topNav.editSwitchLabel": "Modifier", + "dashboard.topNav.options.hideAllPanelTitlesSwitchLabel": "Afficher les titres des panneaux", + "dashboard.topNav.options.useMarginsBetweenPanelsSwitchLabel": "Utiliser les marges entre les panneaux", + "dashboard.topNav.optionsButtonAriaLabel": "Options", + "dashboard.topNav.optionsButtonTooltip": "Options", + "dashboard.topNav.saveButtonAriaLabel": "Enregistrez votre tableau de bord", + "dashboard.topNav.saveButtonTooltip": "Enregistrer", + "dashboard.topNav.saveModal.descriptionFormRowLabel": "Description", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowHelpText": "Cela change le filtre temporel en fonction de l’heure actuellement sélectionnée chaque fois que ce tableau de bord est chargé.", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowLabel": "Enregistrez votre temps grâce au tableau de bord", + "dashboard.topNav.shareButtonAriaLabel": "Partager le tableau de bord", + "dashboard.topNav.shareButtonTooltip": "Partage", + "dashboard.topNav.showCloneModal.dashboardCopyTitle": "{title} Copier", + "dashboard.topNave.addButtonAriaLabel": "ajouter", + "dashboard.topNave.addConfigDescription": "Ajouter un panneau au tableau de bord", + "dashboard.topNave.addNewButtonAriaLabel": "Créer un nouveau", + "dashboard.topNave.addNewConfigDescription": "Créer un nouveau panneau sur ce tableau de bord", + "dashboard.topNave.cancelButtonAriaLabel": "annuler", + "dashboard.topNave.cloneButtonAriaLabel": "cloner", + "dashboard.topNave.cloneConfigDescription": "Créez une copie de votre tableau de bord", + "dashboard.topNave.editButtonAriaLabel": "modifier", + "dashboard.topNave.editConfigDescription": "Passer en mode édition", + "dashboard.topNave.fullScreenButtonAriaLabel": "plein écran", + "dashboard.topNave.fullScreenConfigDescription": "Mode plein écran", + "dashboard.topNave.optionsButtonAriaLabel": "options", + "dashboard.topNave.optionsConfigDescription": "Options", + "dashboard.topNave.saveButtonAriaLabel": "enregistrer", + "dashboard.topNave.saveConfigDescription": "Enregistrez votre tableau de bord", + "dashboard.topNave.shareButtonAriaLabel": "partager", + "dashboard.topNave.shareConfigDescription": "Partager le tableau de bord", + "dashboard.topNave.viewConfigDescription": "Annuler l’édition et passer en mode lecture seule", + "dashboard.urlWasRemovedInSixZeroWarningMessage": "L’URL « dashboard/create » a été supprimée dans la version 6.0. Veuillez mettre à jour vos favoris." + } +} diff --git a/src/translations/ko-KR.json b/src/translations/ko-KR.json new file mode 100644 index 000000000000..23c236429209 --- /dev/null +++ b/src/translations/ko-KR.json @@ -0,0 +1,267 @@ +{ + "formats": { + "number": { + "currency": { + "style": "currency" + }, + "percent": { + "style": "percent" + } + }, + "date": { + "short": { + "month": "numeric", + "day": "numeric", + "year": "2-digit" + }, + "medium": { + "month": "short", + "day": "numeric", + "year": "numeric" + }, + "long": { + "month": "long", + "day": "numeric", + "year": "numeric" + }, + "full": { + "weekday": "long", + "month": "long", + "day": "numeric", + "year": "numeric" + } + }, + "time": { + "short": { + "hour": "numeric", + "minute": "numeric" + }, + "medium": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric" + }, + "long": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + }, + "full": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + } + }, + "relative": { + "years": { + "units": "year" + }, + "months": { + "units": "month" + }, + "days": { + "units": "day" + }, + "hours": { + "units": "hour" + }, + "minutes": { + "units": "minute" + }, + "seconds": { + "units": "second" + } + } + }, + "messages": { + "data.filter.applyFilterActionTitle": "현재 보기에 필터 적용", + "data.filter.applyFilters.popupHeader": "적용할 필터 선택", + "data.filter.applyFiltersPopup.cancelButtonLabel": "취소", + "data.filter.applyFiltersPopup.saveButtonLabel": "신청", + "data.filter.filterBar.addFilterButtonLabel": "필터 추가", + "data.filter.filterBar.deleteFilterButtonLabel": "삭제", + "data.filter.filterBar.disabledFilterPrefix": "장애인", + "data.filter.filterBar.disableFilterButtonLabel": "일시적으로 비활성화", + "data.filter.filterBar.editFilterButtonLabel": "필터 편집", + "data.filter.filterBar.enableFilterButtonLabel": "다시 활성화", + "data.filter.filterBar.excludeFilterButtonLabel": "결과 제외", + "data.filter.filterBar.fieldNotFound": "{indexPattern} 인덱스 패턴에서 {key} 필드를 찾을 수 없음", + "data.filter.filterBar.filterItemBadgeAriaLabel": "필터 작업", + "data.filter.filterBar.filterItemBadgeIconAriaLabel": "삭제", + "data.filter.filterBar.includeFilterButtonLabel": "결과 포함", + "data.filter.filterBar.indexPatternSelectPlaceholder": "인덱스 패턴 선택", + "data.filter.filterBar.labelErrorInfo": "{indexPattern} 인덱스 패턴을 찾을 수 없음", + "data.filter.filterBar.labelErrorText": "오류", + "data.filter.filterBar.labelWarningInfo": "{fieldName} 필드가 현재 보기에 없음", + "data.filter.filterBar.labelWarningText": "경고", + "data.filter.filterBar.moreFilterActionsMessage": "필터: {innerText}. 더 많은 필터 작업을 보려면 선택하세요.", + "data.filter.filterBar.negatedFilterPrefix": "NOT ", + "data.filter.filterBar.pinFilterButtonLabel": "모든 앱에 고정", + "data.filter.filterBar.pinnedFilterPrefix": "고정됨", + "data.filter.filterBar.unpinFilterButtonLabel": "고정 해제", + "data.filter.filterEditor.cancelButtonLabel": "취소", + "data.filter.filterEditor.createCustomLabelInputLabel": "사용자 지정 레이블", + "data.filter.filterEditor.createCustomLabelSwitchLabel": "사용자 지정 레이블을 만드시겠습니까?", + "data.filter.filterEditor.doesNotExistOperatorOptionLabel": "존재하지 않음", + "data.filter.filterEditor.editFilterPopupTitle": "필터 편집", + "data.filter.filterEditor.editFilterValuesButtonLabel": "필터 값 편집", + "data.filter.filterEditor.editQueryDslButtonLabel": "쿼리 DSL로 편집", + "data.filter.filterEditor.existsOperatorOptionLabel": "존재함", + "data.filter.filterEditor.falseOptionLabel": "false ", + "data.filter.filterEditor.fieldSelectLabel": "필드", + "data.filter.filterEditor.fieldSelectPlaceholder": "먼저 필드 선택", + "data.filter.filterEditor.indexPatternSelectLabel": "인덱스 패턴", + "data.filter.filterEditor.isBetweenOperatorOptionLabel": "사이에 있음", + "data.filter.filterEditor.isNotBetweenOperatorOptionLabel": "사이에 있지 않음", + "data.filter.filterEditor.isNotOneOfOperatorOptionLabel": "다음 중 하나가 아님", + "data.filter.filterEditor.isNotOperatorOptionLabel": "아님", + "data.filter.filterEditor.isOneOfOperatorOptionLabel": "다음 중 하나임", + "data.filter.filterEditor.isOperatorOptionLabel": "is", + "data.filter.filterEditor.operatorSelectLabel": "운영자", + "data.filter.filterEditor.operatorSelectPlaceholderSelect": "하이퍼파라미터", + "data.filter.filterEditor.operatorSelectPlaceholderWaiting": "대기 중", + "data.filter.filterEditor.queryDslLabel": "OpenSearch 쿼리 DSL", + "data.filter.filterEditor.rangeEndInputPlaceholder": "범위의 끝", + "data.filter.filterEditor.rangeInputLabel": "범위", + "data.filter.filterEditor.rangeStartInputPlaceholder": "범위의 시작", + "data.filter.filterEditor.saveButtonLabel": "절감 비용", + "data.filter.filterEditor.trueOptionLabel": "참 ", + "data.filter.filterEditor.valueInputLabel": "값", + "data.filter.filterEditor.valueInputPlaceholder": "값 입력", + "data.filter.filterEditor.valueSelectPlaceholder": "값 선택", + "data.filter.filterEditor.valuesSelectLabel": "값", + "data.filter.filterEditor.valuesSelectPlaceholder": "값 선택", + "data.filter.options.addFiltersButtonLabel": "필터 추가", + "data.filter.options.changeAllFiltersButtonLabel": "모든 필터 변경", + "data.filter.options.deleteAllFiltersButtonLabel": "모두 제거", + "data.filter.options.disableAllFiltersButtonLabel": "모두 비활성화", + "data.filter.options.enableAllFiltersButtonLabel": "모두 활성화", + "data.filter.options.invertDisabledFiltersButtonLabel": "반전 활성화/비활성화", + "data.filter.options.invertNegatedFiltersButtonLabel": "반전 포함", + "data.filter.options.pinAllFiltersButtonLabel": "모두 고정", + "data.filter.options.unpinAllFiltersButtonLabel": "모두 고정 해제", + "dashboard.actions.toggleExpandPanelMenuItem.expandedDisplayName": "최소화", + "dashboard.actions.toggleExpandPanelMenuItem.notExpandedDisplayName": "패널 최대화", + "dashboard.addExistingVisualizationLinkText": "기존 개체 추가", + "dashboard.addNewVisualizationText": "또는 이 대시보드에 새 객체 추가", + "dashboard.addPanel.noMatchingObjectsMessage": "일치하는 객체를 찾을 수 없습니다.", + "dashboard.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "{savedObjectName}이(가) 추가됨", + "dashboard.addVisualizationLinkAriaLabel": "기존 시각화 추가", + "dashboard.attributeService.saveToLibraryError": "저장하는 동안 오류가 발생했습니다. 오류: {errorMessage}", + "dashboard.changeViewModeConfirmModal.cancelButtonLabel": "편집 계속 진행", + "dashboard.changeViewModeConfirmModal.confirmButtonLabel": "변경 취소", + "dashboard.changeViewModeConfirmModal.discardChangesDescription": "변경을 한 번 취소하면 되돌릴 수 없습니다.", + "dashboard.changeViewModeConfirmModal.discardChangesTitle": "대시보드 변경을 취소하시겠습니까?", + "dashboard.cloneModal.cloneDashboardTitleAriaLabel": "복제된 대시보드 제목", + "dashboard.createDashboard.failedToLoadErrorMessage": "대시보드를 로드하지 못함", + "dashboard.createNewVisualizationButton": "새로 생성", + "dashboard.createNewVisualizationButtonAriaLabel": "새 시각화 버튼 생성", + "dashboard.dashboardAppBreadcrumbsTitle": "대시보드", + "dashboard.dashboardBreadcrumbsTitle": "대시보드", + "dashboard.dashboardGrid.toast.unableToLoadDashboardDangerMessage": "대시보드를 로드할 수 없습니다.", + "dashboard.dashboardListingDeleteErrorTitle": "대시보드 삭제 중 오류 발생", + "dashboard.dashboardPageTitle": "대시보드", + "dashboard.dashboardWasNotSavedDangerMessage": "'{dashTitle}' 대시보드가 저장되지 않았습니다. 오류: {errorMessage}", + "dashboard.dashboardWasSavedSuccessMessage": "'{dashTitle}'대시보드가 저장됨", + "dashboard.embedUrlParamExtension.filterBar": "필터 모음", + "dashboard.embedUrlParamExtension.include": "포함", + "dashboard.embedUrlParamExtension.query": "쿼리", + "dashboard.embedUrlParamExtension.timeFilter": "시간 필터", + "dashboard.embedUrlParamExtension.topMenu": "상단 메뉴", + "dashboard.emptyDashboardAdditionalPrivilege": "이 대시보드를 편집하려면 추가 권한이 필요합니다.", + "dashboard.emptyDashboardTitle": "이 대시보드는 비어 있습니다.", + "dashboard.factory.displayName": "대시보드", + "dashboard.featureCatalogue.dashboardDescription": "시각화 및 저장된 검색 모음을 표시하고 공유합니다.", + "dashboard.featureCatalogue.dashboardSubtitle": "대시보드에서 데이터를 분석합니다.", + "dashboard.featureCatalogue.dashboardTitle": "대시보드", + "dashboard.fillDashboardTitle": "이 대시보드는 비어 있습니다. 채워 보세요!", + "dashboard.helpMenu.appName": "대시보드", + "dashboard.howToStartWorkingOnNewDashboardDescription1": "클릭하기", + "dashboard.howToStartWorkingOnNewDashboardDescription2": "위의 메뉴 모음에서 패널 추가를 시작합니다.", + "dashboard.howToStartWorkingOnNewDashboardEditLinkAriaLabel": "대시보드 편집", + "dashboard.howToStartWorkingOnNewDashboardEditLinkText": "편집", + "dashboard.listing. savedObjectWarning": "제목별로 필터링할 수 없음", + "dashboard.listing.createButtonText": "그리고", + "dashboard.listing.createNewDashboard.combineDataViewFromOpenSearchDashboardsAppDescription": "모든 OpenSearch 대시보드 앱의 데이터 보기를 하나의 대시보드로 결합하여 모두 한곳에서 볼 수 있습니다.", + "dashboard.listing.createNewDashboard.createButtonLabel": "새 대시보드 생성", + "dashboard.listing.createNewDashboard.newToOpenSearchDashboardsDescription": "OpenSearch 대시보드를 처음 사용하시나요? {sampleDataInstallLink} 링크를 통해 테스트 드라이브를 해보세요.", + "dashboard.listing.createNewDashboard.sampleDataInstallLinkText": "일부 샘플 데이터 설치", + "dashboard.listing.createNewDashboard.title": "첫 대시보드 생성", + "dashboard.listing.dashboardsTitle": "대시보드", + "dashboard.listing.noItemsMessage": "대시보드가 없는 것 같습니다.", + "dashboard.listing.table.columnUpdatedAtDescription": "저장된 객체의 최종 업데이트", + "dashboard.listing.table.columnUpdatedAtName": "Last updated", + "dashboard.listing.table.descriptionColumnName": "설명", + "dashboard.listing.table.entityName": "대시보드", + "dashboard.listing.table.entityNamePlural": "지표를", + "dashboard.listing.table.titleColumnName": "제목", + "dashboard.listing.table.typeColumnName": "유형", + "dashboard.panel.AddToLibrary": "라이브러리에 추가", + "dashboard.panel.clonedToast": "복제된 패널", + "dashboard.panel.clonePanel": "패널 복제", + "dashboard.panel.invalidData": "URL에 잘못된 데이터가 있음", + "dashboard.panel.LibraryNotification": "라이브러리", + "dashboard.panel.libraryNotification.toolTip": "이 패널은 라이브러리 항목에 연결되어 있습니다. 패널을 편집하면 다른 대시보드에 영향을 줄 수 있습니다.", + "dashboard.panel.removePanel.replacePanel": "패널 교체", + "dashboard.panel.title.clonedTag": "복사", + "dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "“6.1.0\" 이전 버전과의 호환성을 위해 패널 데이터를 마이그레이션할 수 없음, 패널에 예상되는 열 및/또는 행 필드가 포함되어 있지 않음", + "dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "“6.3.0\" 이전 버전과의 호환성을 위해 패널 데이터를 마이그레이션할 수 없음, 패널에 예상되는 {key} 필드가 포함되어 있지 않음", + "dashboard.panel.unlinkFromLibrary": "라이브러리 항목과의 연결 해제", + "dashboard.placeholder.factory.displayName": "자리 표시자", + "dashboard.savedDashboard.newDashboardTitle": "새 대시보드", + "dashboard.strings.dashboardEditTitle": "{title} 편집", + "dashboard.strings.dashboardUnsavedEditTitle": "{title} 편집(저장되지 않음)", + "dashboard.strings.existingDashboardEditTitle": "{title} 편집", + "dashboard.strings.existingDashboardEditTitleUnsaved": "{title} 편집(저장되지 않음)", + "dashboard.strings.existingDashboardViewTitle": "{title}", + "dashboard.strings.newDashboardEditTitle": "새 대시보드 편집", + "dashboard.strings.newDashboardEditTitleUnsaved": "새 대시보드 편집(저장되지 않음)", + "dashboard.strings.newDashboardViewTitle": "새 대시보드", + "dashboard.tableListView.listing.createNewItemButtonLabel": "{entityName}", + "dashboard.topNav.addButtonAriaLabel": "대시보드에 패널 추가", + "dashboard.topNav.addButtonTooltip": "추가", + "dashboard.topNav.cloneButtonAriaLabel": "대시보드 사본 생성", + "dashboard.topNav.cloneButtonTooltip": "복제", + "dashboard.topNav.cloneModal.cancelButtonLabel": "취소", + "dashboard.topNav.cloneModal.cloneDashboardModalHeaderTitle": "대시보드 복제", + "dashboard.topNav.cloneModal.confirmButtonLabel": "복제 확인", + "dashboard.topNav.cloneModal.confirmCloneDescription": "복제 확인", + "dashboard.topNav.cloneModal.dashboardExistsDescription": "{confirmClone}을 클릭하여 복제된 제목의 대시보드를 복제합니다.", + "dashboard.topNav.cloneModal.dashboardExistsTitle": "{newDashboardName} 제목의 대시보드가 이미 있습니다.", + "dashboard.topNav.cloneModal.enterNewNameForDashboardDescription": "대시보드의 새 이름을 입력하세요.", + "dashboard.topNav.editSwitchLabel": "편집", + "dashboard.topNav.options.hideAllPanelTitlesSwitchLabel": "패널 제목 표시", + "dashboard.topNav.options.useMarginsBetweenPanelsSwitchLabel": "패널 간 여백 사용", + "dashboard.topNav.optionsButtonAriaLabel": "옵션", + "dashboard.topNav.optionsButtonTooltip": "옵션", + "dashboard.topNav.saveButtonAriaLabel": "대시보드 저장", + "dashboard.topNav.saveButtonTooltip": "절감 비용", + "dashboard.topNav.saveModal.descriptionFormRowLabel": "설명", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowHelpText": "이 대시보드가 로드될 때마다 시간 필터가 현재 선택한 시간으로 변경됩니다.", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowLabel": "대시보드에 시간 저장", + "dashboard.topNav.shareButtonAriaLabel": "대시보드 공유", + "dashboard.topNav.shareButtonTooltip": "공유", + "dashboard.topNav.showCloneModal.dashboardCopyTitle": "{title} 복사", + "dashboard.topNave.addButtonAriaLabel": "추가", + "dashboard.topNave.addConfigDescription": "대시보드에 패널 추가", + "dashboard.topNave.addNewButtonAriaLabel": "새로 생성", + "dashboard.topNave.addNewConfigDescription": "이 대시보드에 새 패널 생성", + "dashboard.topNave.cancelButtonAriaLabel": "취소", + "dashboard.topNave.cloneButtonAriaLabel": "복제", + "dashboard.topNave.cloneConfigDescription": "대시보드 사본 생성", + "dashboard.topNave.editButtonAriaLabel": "편집", + "dashboard.topNave.editConfigDescription": "편집 모드로 전환", + "dashboard.topNave.fullScreenButtonAriaLabel": "전체 화면", + "dashboard.topNave.fullScreenConfigDescription": "전체 화면 모드", + "dashboard.topNave.optionsButtonAriaLabel": "옵션", + "dashboard.topNave.optionsConfigDescription": "옵션", + "dashboard.topNave.saveButtonAriaLabel": "저장", + "dashboard.topNave.saveConfigDescription": "대시보드 저장", + "dashboard.topNave.shareButtonAriaLabel": "공유", + "dashboard.topNave.shareConfigDescription": "대시보드 공유", + "dashboard.topNave.viewConfigDescription": "편집 취소 및 보기 전용 모드로 전환", + "dashboard.urlWasRemovedInSixZeroWarningMessage": "“대시보드/생성” URL은 6.0에서 제거되었습니다. 북마크를 업데이트하세요." + } +} diff --git a/src/translations/tr-TR.json b/src/translations/tr-TR.json new file mode 100644 index 000000000000..bf507e037edf --- /dev/null +++ b/src/translations/tr-TR.json @@ -0,0 +1,267 @@ +{ + "formats": { + "number": { + "currency": { + "style": "currency" + }, + "percent": { + "style": "percent" + } + }, + "date": { + "short": { + "month": "numeric", + "day": "numeric", + "year": "2-digit" + }, + "medium": { + "month": "short", + "day": "numeric", + "year": "numeric" + }, + "long": { + "month": "long", + "day": "numeric", + "year": "numeric" + }, + "full": { + "weekday": "long", + "month": "long", + "day": "numeric", + "year": "numeric" + } + }, + "time": { + "short": { + "hour": "numeric", + "minute": "numeric" + }, + "medium": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric" + }, + "long": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + }, + "full": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + } + }, + "relative": { + "years": { + "units": "year" + }, + "months": { + "units": "month" + }, + "days": { + "units": "day" + }, + "hours": { + "units": "hour" + }, + "minutes": { + "units": "minute" + }, + "seconds": { + "units": "second" + } + } + }, + "messages": { + "data.filter.applyFilterActionTitle": "Geçerli görünüme filtre uygula", + "data.filter.applyFilters.popupHeader": "Uygulanacak filtreleri seçin", + "data.filter.applyFiltersPopup.cancelButtonLabel": "İptal et", + "data.filter.applyFiltersPopup.saveButtonLabel": "Başvur", + "data.filter.filterBar.addFilterButtonLabel": "Filtre ekle", + "data.filter.filterBar.deleteFilterButtonLabel": "Sil", + "data.filter.filterBar.disabledFilterPrefix": "Devre dışı", + "data.filter.filterBar.disableFilterButtonLabel": "Geçici olarak devre dışı bırak", + "data.filter.filterBar.editFilterButtonLabel": "Filtreyi düzenle", + "data.filter.filterBar.enableFilterButtonLabel": "Yeniden etkinleştir", + "data.filter.filterBar.excludeFilterButtonLabel": "Sonuçları hariç tut", + "data.filter.filterBar.fieldNotFound": "{key} alanı, {indexPattern} dizin kalıbında bulunamadı", + "data.filter.filterBar.filterItemBadgeAriaLabel": "Filtre eylemleri", + "data.filter.filterBar.filterItemBadgeIconAriaLabel": "Sil", + "data.filter.filterBar.includeFilterButtonLabel": "Sonuçları dahil et", + "data.filter.filterBar.indexPatternSelectPlaceholder": "Bir dizin kalıbı seçin", + "data.filter.filterBar.labelErrorInfo": "{indexPattern} dizin kalıbı bulunamadı", + "data.filter.filterBar.labelErrorText": "Hata", + "data.filter.filterBar.labelWarningInfo": "{fieldName} alanı, geçerli görünümde mevcut değil", + "data.filter.filterBar.labelWarningText": "Uyarı", + "data.filter.filterBar.moreFilterActionsMessage": "Filtre: {innerText}. Daha fazla filtre eylemi için seçin.", + "data.filter.filterBar.negatedFilterPrefix": "DEĞİL ", + "data.filter.filterBar.pinFilterButtonLabel": "Tüm uygulamalara sabitle", + "data.filter.filterBar.pinnedFilterPrefix": "Sabitlendi", + "data.filter.filterBar.unpinFilterButtonLabel": "Sabitlemeyi kaldır", + "data.filter.filterEditor.cancelButtonLabel": "İptal et", + "data.filter.filterEditor.createCustomLabelInputLabel": "Özel etiket", + "data.filter.filterEditor.createCustomLabelSwitchLabel": "Özel etiket oluşturulsun mu?", + "data.filter.filterEditor.doesNotExistOperatorOptionLabel": "mevcut değil", + "data.filter.filterEditor.editFilterPopupTitle": "Filtreyi düzenle", + "data.filter.filterEditor.editFilterValuesButtonLabel": "Filtre değerlerini düzenle", + "data.filter.filterEditor.editQueryDslButtonLabel": "Sorgu DSL'si olarak düzenle", + "data.filter.filterEditor.existsOperatorOptionLabel": "mevcut", + "data.filter.filterEditor.falseOptionLabel": "yanlış ", + "data.filter.filterEditor.fieldSelectLabel": "Alan", + "data.filter.filterEditor.fieldSelectPlaceholder": "Önce bir alan seçin", + "data.filter.filterEditor.indexPatternSelectLabel": "Dizin Kalıbı", + "data.filter.filterEditor.isBetweenOperatorOptionLabel": "arasında", + "data.filter.filterEditor.isNotBetweenOperatorOptionLabel": "arasında değil", + "data.filter.filterEditor.isNotOneOfOperatorOptionLabel": "şunlardan biri değil", + "data.filter.filterEditor.isNotOperatorOptionLabel": "değil", + "data.filter.filterEditor.isOneOfOperatorOptionLabel": "şunlardan biri", + "data.filter.filterEditor.isOperatorOptionLabel": "eşittir", + "data.filter.filterEditor.operatorSelectLabel": "Operatör", + "data.filter.filterEditor.operatorSelectPlaceholderSelect": "Hiper", + "data.filter.filterEditor.operatorSelectPlaceholderWaiting": "Bekliyor", + "data.filter.filterEditor.queryDslLabel": "OpenSearch Sorgu DSL'si", + "data.filter.filterEditor.rangeEndInputPlaceholder": "Aralığın sonu", + "data.filter.filterEditor.rangeInputLabel": "Aralık", + "data.filter.filterEditor.rangeStartInputPlaceholder": "Aralığın başlangıcı", + "data.filter.filterEditor.saveButtonLabel": "Kaydet", + "data.filter.filterEditor.trueOptionLabel": "doğru ", + "data.filter.filterEditor.valueInputLabel": "Değer", + "data.filter.filterEditor.valueInputPlaceholder": "Bir değer girin", + "data.filter.filterEditor.valueSelectPlaceholder": "Bir değer seçin", + "data.filter.filterEditor.valuesSelectLabel": "Değerler", + "data.filter.filterEditor.valuesSelectPlaceholder": "Değer seç", + "data.filter.options.addFiltersButtonLabel": "Filtre ekle", + "data.filter.options.changeAllFiltersButtonLabel": "Tüm filtreleri değiştir", + "data.filter.options.deleteAllFiltersButtonLabel": "Tümünü kaldır", + "data.filter.options.disableAllFiltersButtonLabel": "Tümünü devre dışı bırak", + "data.filter.options.enableAllFiltersButtonLabel": "Tümünü etkinleştir", + "data.filter.options.invertDisabledFiltersButtonLabel": "Ters çevirme etkinleştirildi/devre dışı bırakıldı", + "data.filter.options.invertNegatedFiltersButtonLabel": "Dahil etmeyi ters çevir", + "data.filter.options.pinAllFiltersButtonLabel": "Tümünü sabitle", + "data.filter.options.unpinAllFiltersButtonLabel": "Tümünün sabitlemesini kaldır", + "dashboard.actions.toggleExpandPanelMenuItem.expandedDisplayName": "Küçült", + "dashboard.actions.toggleExpandPanelMenuItem.notExpandedDisplayName": "Paneli büyüt", + "dashboard.addExistingVisualizationLinkText": "Bu panoya", + "dashboard.addNewVisualizationText": "mevcut veya yeni bir nesne ekleyin", + "dashboard.addPanel.noMatchingObjectsMessage": "Eşleşen nesne bulunamadı.", + "dashboard.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "{savedObjectName} eklendi", + "dashboard.addVisualizationLinkAriaLabel": "Mevcut bir görselleştirme ekleyin", + "dashboard.attributeService.saveToLibraryError": "Kaydetme sırasında bir hata oluştu. Hata: {errorMessage}", + "dashboard.changeViewModeConfirmModal.cancelButtonLabel": "Düzenlemeye devam et", + "dashboard.changeViewModeConfirmModal.confirmButtonLabel": "Değişikliklerden vazgeç", + "dashboard.changeViewModeConfirmModal.discardChangesDescription": "İptal ettiğiniz değişiklikleri geri alamazsınız.", + "dashboard.changeViewModeConfirmModal.discardChangesTitle": "Panodaki değişiklikler iptal edilsin mi?", + "dashboard.cloneModal.cloneDashboardTitleAriaLabel": "Pano Başlığı kopyalandı", + "dashboard.createDashboard.failedToLoadErrorMessage": "Pano yüklenemedi", + "dashboard.createNewVisualizationButton": "Yeni gelir", + "dashboard.createNewVisualizationButtonAriaLabel": "Yeni görselleştirme oluştur düğmesi", + "dashboard.dashboardAppBreadcrumbsTitle": "Panolar", + "dashboard.dashboardBreadcrumbsTitle": "Panolar", + "dashboard.dashboardGrid.toast.unableToLoadDashboardDangerMessage": "Pano yüklenemiyor.", + "dashboard.dashboardListingDeleteErrorTitle": "Pano silinirken hata oluştu", + "dashboard.dashboardPageTitle": "Panolar", + "dashboard.dashboardWasNotSavedDangerMessage": "\"{dashTitle}\" panosu kaydedilmedi Hata: {errorMessage}", + "dashboard.dashboardWasSavedSuccessMessage": "\"{dashTitle}\" panosu kaydedildi", + "dashboard.embedUrlParamExtension.filterBar": "Filtre çubuğu", + "dashboard.embedUrlParamExtension.include": "Dahil et", + "dashboard.embedUrlParamExtension.query": "Sorgu", + "dashboard.embedUrlParamExtension.timeFilter": "Zaman filtresi", + "dashboard.embedUrlParamExtension.topMenu": "Üst menü", + "dashboard.emptyDashboardAdditionalPrivilege": "Bu panoyu düzenlemek için ek ayrıcalıklara ihtiyacınız var.", + "dashboard.emptyDashboardTitle": "Bu pano boş.", + "dashboard.factory.displayName": "pano", + "dashboard.featureCatalogue.dashboardDescription": "Görselleştirmeler ve kaydedilmiş aramalar koleksiyonunu görüntüleyin ve paylaşın.", + "dashboard.featureCatalogue.dashboardSubtitle": "Panodaki verileri analiz edin.", + "dashboard.featureCatalogue.dashboardTitle": "Dashboard (Pano)", + "dashboard.fillDashboardTitle": "Bu pano boş. Beraber dolduralım!", + "dashboard.helpMenu.appName": "Panolar", + "dashboard.howToStartWorkingOnNewDashboardDescription1": "Yukarıdaki", + "dashboard.howToStartWorkingOnNewDashboardDescription2": "menü çubuğuna tıklayarak panel eklemeye başlayın.", + "dashboard.howToStartWorkingOnNewDashboardEditLinkAriaLabel": "Panoyu düzenle", + "dashboard.howToStartWorkingOnNewDashboardEditLinkText": "Düzenle", + "dashboard.listing. savedObjectWarning": "Başlığa göre filtrelenemiyor", + "dashboard.listing.createButtonText": "Oluştur", + "dashboard.listing.createNewDashboard.combineDataViewFromOpenSearchDashboardsAppDescription": "Herhangi bir OpenSearch Dashboards uygulamasındaki veri görünümlerini tek bir panoda birleştirebilir ve her şeyi tek bir yerde görebilirsiniz.", + "dashboard.listing.createNewDashboard.createButtonLabel": "Yeni pano oluştur", + "dashboard.listing.createNewDashboard.newToOpenSearchDashboardsDescription": "OpenSearch Dashboards'da yeni misiniz? Deneme yapmak için {sampleDataInstallLink} bağlantısına tıklayın.", + "dashboard.listing.createNewDashboard.sampleDataInstallLinkText": "Bazı örnek verileri yükleyin", + "dashboard.listing.createNewDashboard.title": "İlk panonuzu oluşturun", + "dashboard.listing.dashboardsTitle": "Panolar", + "dashboard.listing.noItemsMessage": "Panonuz yok.", + "dashboard.listing.table.columnUpdatedAtDescription": "Kaydedilen nesnenin son güncellemesi", + "dashboard.listing.table.columnUpdatedAtName": "Son güncelleme", + "dashboard.listing.table.descriptionColumnName": "Açıklama", + "dashboard.listing.table.entityName": "pano", + "dashboard.listing.table.entityNamePlural": "panolar", + "dashboard.listing.table.titleColumnName": "Unvan", + "dashboard.listing.table.typeColumnName": "Tür", + "dashboard.panel.AddToLibrary": "Kitaplığa ekle", + "dashboard.panel.clonedToast": "Panel kopyalandı", + "dashboard.panel.clonePanel": "Paneli kopyala", + "dashboard.panel.invalidData": "URL'de geçersiz veriler", + "dashboard.panel.LibraryNotification": "Kitaplık", + "dashboard.panel.libraryNotification.toolTip": "Bu panel, bir Kitaplık öğesine bağlı. Panelin düzenlenmesi, diğer panoları etkileyebilir.", + "dashboard.panel.removePanel.replacePanel": "Paneli değiştir", + "dashboard.panel.title.clonedTag": "metin", + "dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "\"6.1.0\" geriye dönük uyumluluk için panel verileri taşınamıyor, panel beklenen sütun ve/veya satır alanlarını içermiyor", + "dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "\"6.3.0\" geriye dönük uyumluluk için panel verileri taşınamıyor, panel beklenen alanı içermiyor: {key}", + "dashboard.panel.unlinkFromLibrary": "Kitaplık öğesinden bağlantıyı kaldır", + "dashboard.placeholder.factory.displayName": "yer tutucu", + "dashboard.savedDashboard.newDashboardTitle": "Yeni Pano", + "dashboard.strings.dashboardEditTitle": "{title} düzenleniyor", + "dashboard.strings.dashboardUnsavedEditTitle": "{title} düzenleniyor (kaydedilmedi)", + "dashboard.strings.existingDashboardEditTitle": "{title} düzenleniyor", + "dashboard.strings.existingDashboardEditTitleUnsaved": "{title} düzenleniyor (kaydedilmedi)", + "dashboard.strings.existingDashboardViewTitle": "{title}", + "dashboard.strings.newDashboardEditTitle": "Yeni Pano düzenleniyor", + "dashboard.strings.newDashboardEditTitleUnsaved": "Yeni Pano düzenleniyor (kaydedilmedi)", + "dashboard.strings.newDashboardViewTitle": "Yeni Pano", + "dashboard.tableListView.listing.createNewItemButtonLabel": "{entityName}", + "dashboard.topNav.addButtonAriaLabel": "Panoya yeni panel ekle", + "dashboard.topNav.addButtonTooltip": "Ekle", + "dashboard.topNav.cloneButtonAriaLabel": "Panonuzun bir kopyasını oluşturun", + "dashboard.topNav.cloneButtonTooltip": "Kopyala", + "dashboard.topNav.cloneModal.cancelButtonLabel": "İptal et", + "dashboard.topNav.cloneModal.cloneDashboardModalHeaderTitle": "Panoyu kopyala", + "dashboard.topNav.cloneModal.confirmButtonLabel": "Kopyalamayı onayla", + "dashboard.topNav.cloneModal.confirmCloneDescription": "Kopyalamayı onayla", + "dashboard.topNav.cloneModal.dashboardExistsDescription": "Yinelenen başlıklı panoyu kopyalamak için {confirmClone} öğesine tıklayın.", + "dashboard.topNav.cloneModal.dashboardExistsTitle": "{newDashboardName} başlıklı bir pano zaten var.", + "dashboard.topNav.cloneModal.enterNewNameForDashboardDescription": "Lütfen panonuz için yeni bir ad girin.", + "dashboard.topNav.editSwitchLabel": "Düzenle", + "dashboard.topNav.options.hideAllPanelTitlesSwitchLabel": "Panel başlıklarını göster", + "dashboard.topNav.options.useMarginsBetweenPanelsSwitchLabel": "Paneller arasındaki kenar boşluklarını kullan", + "dashboard.topNav.optionsButtonAriaLabel": "Seçenekler", + "dashboard.topNav.optionsButtonTooltip": "Seçenekler", + "dashboard.topNav.saveButtonAriaLabel": "Panonuzu kaydedin", + "dashboard.topNav.saveButtonTooltip": "Kaydet", + "dashboard.topNav.saveModal.descriptionFormRowLabel": "Açıklama", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowHelpText": "Bu işlem, zaman filtresini bu pano her yüklendiğinde seçili olan zamana dönüştürür.", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowLabel": "Panoda uygulanan saklama zamanı", + "dashboard.topNav.shareButtonAriaLabel": "Panoyu paylaş", + "dashboard.topNav.shareButtonTooltip": "Paylaşın", + "dashboard.topNav.showCloneModal.dashboardCopyTitle": "{title} öğesini kopyala", + "dashboard.topNave.addButtonAriaLabel": "ekle", + "dashboard.topNave.addConfigDescription": "Panoya yeni panel ekle", + "dashboard.topNave.addNewButtonAriaLabel": "Yeni gelir", + "dashboard.topNave.addNewConfigDescription": "Bu panoda yeni bir panel oluşturun", + "dashboard.topNave.cancelButtonAriaLabel": "iptal et", + "dashboard.topNave.cloneButtonAriaLabel": "kopyala", + "dashboard.topNave.cloneConfigDescription": "Panonuzun bir kopyasını oluşturun", + "dashboard.topNave.editButtonAriaLabel": "düzenle", + "dashboard.topNave.editConfigDescription": "Düzenleme moduna geç", + "dashboard.topNave.fullScreenButtonAriaLabel": "tam ekran", + "dashboard.topNave.fullScreenConfigDescription": "Tam Ekran Modu", + "dashboard.topNave.optionsButtonAriaLabel": "seçenekler", + "dashboard.topNave.optionsConfigDescription": "Seçenekler", + "dashboard.topNave.saveButtonAriaLabel": "kaydet", + "dashboard.topNave.saveConfigDescription": "Panonuzu kaydedin", + "dashboard.topNave.shareButtonAriaLabel": "paylaş", + "dashboard.topNave.shareConfigDescription": "Panoyu paylaş", + "dashboard.topNave.viewConfigDescription": "Düzenlemeyi iptal et ve salt görüntüleme moduna geç", + "dashboard.urlWasRemovedInSixZeroWarningMessage": "\"Dashboard/create\" URL'si 6.0'da kaldırıldı. Lütfen yer imlerinizi güncelleyin." + } +} diff --git a/src/translations/zh-CN.json b/src/translations/zh-CN.json new file mode 100644 index 000000000000..df63527d3299 --- /dev/null +++ b/src/translations/zh-CN.json @@ -0,0 +1,267 @@ +{ + "formats": { + "number": { + "currency": { + "style": "currency" + }, + "percent": { + "style": "percent" + } + }, + "date": { + "short": { + "month": "numeric", + "day": "numeric", + "year": "2-digit" + }, + "medium": { + "month": "short", + "day": "numeric", + "year": "numeric" + }, + "long": { + "month": "long", + "day": "numeric", + "year": "numeric" + }, + "full": { + "weekday": "long", + "month": "long", + "day": "numeric", + "year": "numeric" + } + }, + "time": { + "short": { + "hour": "numeric", + "minute": "numeric" + }, + "medium": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric" + }, + "long": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + }, + "full": { + "hour": "numeric", + "minute": "numeric", + "second": "numeric", + "timeZoneName": "short" + } + }, + "relative": { + "years": { + "units": "year" + }, + "months": { + "units": "month" + }, + "days": { + "units": "day" + }, + "hours": { + "units": "hour" + }, + "minutes": { + "units": "minute" + }, + "seconds": { + "units": "second" + } + } + }, + "messages": { + "data.filter.applyFilterActionTitle": "对当前视图应用筛选条件", + "data.filter.applyFilters.popupHeader": "选择要应用的筛选条件", + "data.filter.applyFiltersPopup.cancelButtonLabel": "取消", + "data.filter.applyFiltersPopup.saveButtonLabel": "应用", + "data.filter.filterBar.addFilterButtonLabel": "添加筛选条件", + "data.filter.filterBar.deleteFilterButtonLabel": "删除", + "data.filter.filterBar.disabledFilterPrefix": "已禁用", + "data.filter.filterBar.disableFilterButtonLabel": "暂时禁用", + "data.filter.filterBar.editFilterButtonLabel": "编辑筛选条件", + "data.filter.filterBar.enableFilterButtonLabel": "重新启用", + "data.filter.filterBar.excludeFilterButtonLabel": "排除结果", + "data.filter.filterBar.fieldNotFound": "在索引模式 {indexPattern} 中找不到字段 {key}", + "data.filter.filterBar.filterItemBadgeAriaLabel": "筛选操作", + "data.filter.filterBar.filterItemBadgeIconAriaLabel": "删除", + "data.filter.filterBar.includeFilterButtonLabel": "包括结果", + "data.filter.filterBar.indexPatternSelectPlaceholder": "选择索引模式", + "data.filter.filterBar.labelErrorInfo": "未找到索引模式 {indexPattern}", + "data.filter.filterBar.labelErrorText": "错误", + "data.filter.filterBar.labelWarningInfo": "当前视图中不存在字段 {fieldName}", + "data.filter.filterBar.labelWarningText": "警告", + "data.filter.filterBar.moreFilterActionsMessage": "筛选条件: {innerText}。选择以获取更多筛选操作。", + "data.filter.filterBar.negatedFilterPrefix": "禁止 ", + "data.filter.filterBar.pinFilterButtonLabel": "在所有应用程序中固定", + "data.filter.filterBar.pinnedFilterPrefix": "已固定", + "data.filter.filterBar.unpinFilterButtonLabel": "取消固定", + "data.filter.filterEditor.cancelButtonLabel": "取消", + "data.filter.filterEditor.createCustomLabelInputLabel": "自定义标签", + "data.filter.filterEditor.createCustomLabelSwitchLabel": "是否创建自定义标签?", + "data.filter.filterEditor.doesNotExistOperatorOptionLabel": "不存在", + "data.filter.filterEditor.editFilterPopupTitle": "编辑筛选条件", + "data.filter.filterEditor.editFilterValuesButtonLabel": "编辑筛选值", + "data.filter.filterEditor.editQueryDslButtonLabel": "编辑为查询 DSL", + "data.filter.filterEditor.existsOperatorOptionLabel": "存在", + "data.filter.filterEditor.falseOptionLabel": "false ", + "data.filter.filterEditor.fieldSelectLabel": "字段", + "data.filter.filterEditor.fieldSelectPlaceholder": "先选择一个字段", + "data.filter.filterEditor.indexPatternSelectLabel": "索引模式", + "data.filter.filterEditor.isBetweenOperatorOptionLabel": "介于", + "data.filter.filterEditor.isNotBetweenOperatorOptionLabel": "并非介于", + "data.filter.filterEditor.isNotOneOfOperatorOptionLabel": "不属于以下项之一", + "data.filter.filterEditor.isNotOperatorOptionLabel": "不是", + "data.filter.filterEditor.isOneOfOperatorOptionLabel": "属于以下项之一", + "data.filter.filterEditor.isOperatorOptionLabel": "是", + "data.filter.filterEditor.operatorSelectLabel": "运算符", + "data.filter.filterEditor.operatorSelectPlaceholderSelect": "选择", + "data.filter.filterEditor.operatorSelectPlaceholderWaiting": "等待", + "data.filter.filterEditor.queryDslLabel": "OpenSearch 查询 DSL", + "data.filter.filterEditor.rangeEndInputPlaceholder": "终止范围", + "data.filter.filterEditor.rangeInputLabel": "范围", + "data.filter.filterEditor.rangeStartInputPlaceholder": "起始范围", + "data.filter.filterEditor.saveButtonLabel": "保存", + "data.filter.filterEditor.trueOptionLabel": "true ", + "data.filter.filterEditor.valueInputLabel": "值", + "data.filter.filterEditor.valueInputPlaceholder": "输入一个值", + "data.filter.filterEditor.valueSelectPlaceholder": "选择一个值", + "data.filter.filterEditor.valuesSelectLabel": "值", + "data.filter.filterEditor.valuesSelectPlaceholder": "选择值", + "data.filter.options.addFiltersButtonLabel": "添加筛选条件", + "data.filter.options.changeAllFiltersButtonLabel": "更改所有筛选条件", + "data.filter.options.deleteAllFiltersButtonLabel": "全部删除", + "data.filter.options.disableAllFiltersButtonLabel": "全部禁用", + "data.filter.options.enableAllFiltersButtonLabel": "全部启用", + "data.filter.options.invertDisabledFiltersButtonLabel": "反转启用/禁用", + "data.filter.options.invertNegatedFiltersButtonLabel": "反转包含", + "data.filter.options.pinAllFiltersButtonLabel": "全部固定", + "data.filter.options.unpinAllFiltersButtonLabel": "全部取消固定", + "dashboard.actions.toggleExpandPanelMenuItem.expandedDisplayName": "最小化", + "dashboard.actions.toggleExpandPanelMenuItem.notExpandedDisplayName": "最大化面板", + "dashboard.addExistingVisualizationLinkText": "添加现有", + "dashboard.addNewVisualizationText": "或新对象到此控制面板", + "dashboard.addPanel.noMatchingObjectsMessage": "未找到匹配的对象。", + "dashboard.addPanel.savedObjectAddedToContainerSuccessMessageTitle": "已添加 {savedObjectName}", + "dashboard.addVisualizationLinkAriaLabel": "添加现有可视化效果", + "dashboard.attributeService.saveToLibraryError": "保存时出错。错误: {errorMessage}", + "dashboard.changeViewModeConfirmModal.cancelButtonLabel": "继续编辑", + "dashboard.changeViewModeConfirmModal.confirmButtonLabel": "放弃更改", + "dashboard.changeViewModeConfirmModal.discardChangesDescription": "放弃更改后将无法恢复。", + "dashboard.changeViewModeConfirmModal.discardChangesTitle": "是否放弃对控制面板的更改?", + "dashboard.cloneModal.cloneDashboardTitleAriaLabel": "克隆的控制面板标题", + "dashboard.createDashboard.failedToLoadErrorMessage": "加载控制面板失败", + "dashboard.createNewVisualizationButton": "新建", + "dashboard.createNewVisualizationButtonAriaLabel": "“新建可视化效果”按钮", + "dashboard.dashboardAppBreadcrumbsTitle": "控制面板", + "dashboard.dashboardBreadcrumbsTitle": "控制面板", + "dashboard.dashboardGrid.toast.unableToLoadDashboardDangerMessage": "无法加载控制面板。", + "dashboard.dashboardListingDeleteErrorTitle": "删除控制面板时出错", + "dashboard.dashboardPageTitle": "控制面板", + "dashboard.dashboardWasNotSavedDangerMessage": "控制面板“{dashTitle}”未保存。错误: {errorMessage}", + "dashboard.dashboardWasSavedSuccessMessage": "控制面板“{dashTitle}”已保存", + "dashboard.embedUrlParamExtension.filterBar": "筛选栏", + "dashboard.embedUrlParamExtension.include": "包括", + "dashboard.embedUrlParamExtension.query": "查询", + "dashboard.embedUrlParamExtension.timeFilter": "时间筛选条件", + "dashboard.embedUrlParamExtension.topMenu": "顶部菜单", + "dashboard.emptyDashboardAdditionalPrivilege": "您需要额外的权限才能编辑此控制面板。", + "dashboard.emptyDashboardTitle": "此控制面板为空。", + "dashboard.factory.displayName": "控制面板", + "dashboard.featureCatalogue.dashboardDescription": "显示和共享一系列可视化效果和已保存的搜索。", + "dashboard.featureCatalogue.dashboardSubtitle": "分析控制面板中的数据。", + "dashboard.featureCatalogue.dashboardTitle": "控制面板", + "dashboard.fillDashboardTitle": "此控制面板为空。让我们填充一下!", + "dashboard.helpMenu.appName": "控制面板", + "dashboard.howToStartWorkingOnNewDashboardDescription1": "单击", + "dashboard.howToStartWorkingOnNewDashboardDescription2": "上面的菜单栏中开始添加面板。", + "dashboard.howToStartWorkingOnNewDashboardEditLinkAriaLabel": "编辑控制面板", + "dashboard.howToStartWorkingOnNewDashboardEditLinkText": "编辑", + "dashboard.listing. savedObjectWarning": "无法按标题筛选", + "dashboard.listing.createButtonText": "创建", + "dashboard.listing.createNewDashboard.combineDataViewFromOpenSearchDashboardsAppDescription": "您可以将任何 OpenSearch Dashboards 应用程序中的数据视图合并到一个控制面板中,并在单个位置查看所有内容。", + "dashboard.listing.createNewDashboard.createButtonLabel": "新建控制面板", + "dashboard.listing.createNewDashboard.newToOpenSearchDashboardsDescription": "还未使用过 OpenSearch Dashboards? 进入 {sampleDataInstallLink} 来试试。", + "dashboard.listing.createNewDashboard.sampleDataInstallLinkText": "安装一些示例数据", + "dashboard.listing.createNewDashboard.title": "创建第一个控制面板", + "dashboard.listing.dashboardsTitle": "控制面板", + "dashboard.listing.noItemsMessage": "显示您尚未创建任何控制面板。", + "dashboard.listing.table.columnUpdatedAtDescription": "已保存对象的上次更新", + "dashboard.listing.table.columnUpdatedAtName": "上次更新时间", + "dashboard.listing.table.descriptionColumnName": "描述", + "dashboard.listing.table.entityName": "控制面板", + "dashboard.listing.table.entityNamePlural": "控制面板", + "dashboard.listing.table.titleColumnName": "标题", + "dashboard.listing.table.typeColumnName": "类型", + "dashboard.panel.AddToLibrary": "添加到库", + "dashboard.panel.clonedToast": "克隆的面板", + "dashboard.panel.clonePanel": "克隆面板", + "dashboard.panel.invalidData": "URL 中的数据无效", + "dashboard.panel.LibraryNotification": "库", + "dashboard.panel.libraryNotification.toolTip": "此面板已与库项目关联。编辑面板可能会影响其它控制面板。", + "dashboard.panel.removePanel.replacePanel": "替换面板", + "dashboard.panel.title.clonedTag": "复制", + "dashboard.panel.unableToMigratePanelDataForSixOneZeroErrorMessage": "无法迁移面板数据来实现“6.1.0”向后兼容,面板不包含预期的列和/或行字段", + "dashboard.panel.unableToMigratePanelDataForSixThreeZeroErrorMessage": "无法迁移面板数据来实现“6.3.0”向后兼容,面板不包含预期字段: {key}", + "dashboard.panel.unlinkFromLibrary": "取消与库项目的关联", + "dashboard.placeholder.factory.displayName": "占位符", + "dashboard.savedDashboard.newDashboardTitle": "新控制面板", + "dashboard.strings.dashboardEditTitle": "编辑 {title}", + "dashboard.strings.dashboardUnsavedEditTitle": "编辑 {title} (未保存)", + "dashboard.strings.existingDashboardEditTitle": "编辑 {title}", + "dashboard.strings.existingDashboardEditTitleUnsaved": "编辑 {title} (未保存)", + "dashboard.strings.existingDashboardViewTitle": "{title}", + "dashboard.strings.newDashboardEditTitle": "编辑新控制面板", + "dashboard.strings.newDashboardEditTitleUnsaved": "编辑新控制面板 (未保存)", + "dashboard.strings.newDashboardViewTitle": "新控制面板", + "dashboard.tableListView.listing.createNewItemButtonLabel": "{entityName}", + "dashboard.topNav.addButtonAriaLabel": "向控制面板添加面板", + "dashboard.topNav.addButtonTooltip": "添加", + "dashboard.topNav.cloneButtonAriaLabel": "创建控制面板的副本", + "dashboard.topNav.cloneButtonTooltip": "克隆", + "dashboard.topNav.cloneModal.cancelButtonLabel": "取消", + "dashboard.topNav.cloneModal.cloneDashboardModalHeaderTitle": "克隆控制面板", + "dashboard.topNav.cloneModal.confirmButtonLabel": "确认克隆", + "dashboard.topNav.cloneModal.confirmCloneDescription": "确认克隆", + "dashboard.topNav.cloneModal.dashboardExistsDescription": "单击 {confirmClone},克隆使用重复标题的控制面板。", + "dashboard.topNav.cloneModal.dashboardExistsTitle": "标题为 {newDashboardName} 的控制面板已存在。", + "dashboard.topNav.cloneModal.enterNewNameForDashboardDescription": "请为您的控制面板输入一个新名称。", + "dashboard.topNav.editSwitchLabel": "编辑", + "dashboard.topNav.options.hideAllPanelTitlesSwitchLabel": "显示面板标题", + "dashboard.topNav.options.useMarginsBetweenPanelsSwitchLabel": "在面板之间使用边距", + "dashboard.topNav.optionsButtonAriaLabel": "选项", + "dashboard.topNav.optionsButtonTooltip": "选项", + "dashboard.topNav.saveButtonAriaLabel": "保存您的控制面板", + "dashboard.topNav.saveButtonTooltip": "保存", + "dashboard.topNav.saveModal.descriptionFormRowLabel": "描述", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowHelpText": "每次加载此控制面板时,都会将时间筛选条件更改为当前选定的时间。", + "dashboard.topNav.saveModal.storeTimeWithDashboardFormRowLabel": "通过控制面板存储时间", + "dashboard.topNav.shareButtonAriaLabel": "共享控制面板", + "dashboard.topNav.shareButtonTooltip": "共享", + "dashboard.topNav.showCloneModal.dashboardCopyTitle": "{title} 复制", + "dashboard.topNave.addButtonAriaLabel": "添加", + "dashboard.topNave.addConfigDescription": "向控制面板添加面板", + "dashboard.topNave.addNewButtonAriaLabel": "新建", + "dashboard.topNave.addNewConfigDescription": "在此控制面板上新建面板", + "dashboard.topNave.cancelButtonAriaLabel": "取消", + "dashboard.topNave.cloneButtonAriaLabel": "克隆", + "dashboard.topNave.cloneConfigDescription": "创建控制面板的副本", + "dashboard.topNave.editButtonAriaLabel": "编辑", + "dashboard.topNave.editConfigDescription": "切换到编辑模式", + "dashboard.topNave.fullScreenButtonAriaLabel": "全屏", + "dashboard.topNave.fullScreenConfigDescription": "全屏模式", + "dashboard.topNave.optionsButtonAriaLabel": "选项", + "dashboard.topNave.optionsConfigDescription": "选项", + "dashboard.topNave.saveButtonAriaLabel": "保存", + "dashboard.topNave.saveConfigDescription": "保存您的控制面板", + "dashboard.topNave.shareButtonAriaLabel": "共享", + "dashboard.topNave.shareConfigDescription": "共享控制面板", + "dashboard.topNave.viewConfigDescription": "取消编辑并切换到“仅限查看”模式", + "dashboard.urlWasRemovedInSixZeroWarningMessage": "6.0 版本中删除了“控制面板/创建”URL。请更新您的书签。" + } +}