diff --git a/.betterer.results b/.betterer.results index 672443274c3..ebad01992cc 100644 --- a/.betterer.results +++ b/.betterer.results @@ -4086,9 +4086,7 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"], [0, 0, 0, "Unexpected any. Specify a different type.", "2"], - [0, 0, 0, "Do not use any type assertions.", "3"], - [0, 0, 0, "Unexpected any. Specify a different type.", "4"], - [0, 0, 0, "Do not use any type assertions.", "5"] + [0, 0, 0, "Do not use any type assertions.", "3"] ], "public/app/features/search/service/bluge.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], diff --git a/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx b/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx index 1026aafc961..99e485027a3 100644 --- a/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx +++ b/packages/grafana-ui/src/components/Segment/SegmentAsync.tsx @@ -7,6 +7,7 @@ import { AsyncState } from 'react-use/lib/useAsync'; import { SelectableValue } from '@grafana/data'; import { useStyles2 } from '../../themes'; +import { t } from '../../utils/i18n'; import { InlineLabel } from '../Forms/InlineLabel'; import { SegmentSelect } from './SegmentSelect'; @@ -101,15 +102,15 @@ export function SegmentAsync({ function mapStateToNoOptionsMessage(state: AsyncState>>): string { if (state.loading) { - return 'Loading options...'; + return t('grafana-ui.segment-async.loading', 'Loading options...'); } if (state.error) { - return 'Failed to load options'; + return t('grafana-ui.segment-async.error', 'Failed to load options'); } if (!Array.isArray(state.value) || state.value.length === 0) { - return 'No options found'; + return t('grafana-ui.segment-async.no-options', 'No options found'); } return ''; diff --git a/public/app/core/components/AppChrome/NavToolbar.tsx b/public/app/core/components/AppChrome/NavToolbar.tsx index 9fe8ef5a13e..9a63160c6a0 100644 --- a/public/app/core/components/AppChrome/NavToolbar.tsx +++ b/public/app/core/components/AppChrome/NavToolbar.tsx @@ -4,6 +4,7 @@ import React from 'react'; import { GrafanaTheme2, NavModelItem } from '@grafana/data'; import { Components } from '@grafana/e2e-selectors'; import { Icon, IconButton, ToolbarButton, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { HOME_NAV_ID } from 'app/core/reducers/navModel'; import { useSelector } from 'app/types'; @@ -39,16 +40,31 @@ export function NavToolbar({ return (
- +
{actions} {actions && } {searchBarHidden && ( - + )} - +
diff --git a/public/app/core/components/NavBar/navBarItem-translations.ts b/public/app/core/components/NavBar/navBarItem-translations.ts index 3ee3af1ef6b..4452debe52a 100644 --- a/public/app/core/components/NavBar/navBarItem-translations.ts +++ b/public/app/core/components/NavBar/navBarItem-translations.ts @@ -148,6 +148,8 @@ export function getNavSubTitle(navId: string | undefined) { return config.featureToggles.topnav ? t('nav.dashboards.subtitle', 'Create and manage dashboards to visualize your data') : undefined; + case 'manage-folder': + return t('nav.manage-folder.subtitle', 'Manage folder dashboards and permissions'); case 'dashboards/playlists': return t('nav.playlists.subtitle', 'Groups of dashboards that are displayed in a sequence'); case 'dashboards/snapshots': diff --git a/public/app/core/components/TagFilter/TagFilter.tsx b/public/app/core/components/TagFilter/TagFilter.tsx index 5c53c96375b..e64d807e170 100644 --- a/public/app/core/components/TagFilter/TagFilter.tsx +++ b/public/app/core/components/TagFilter/TagFilter.tsx @@ -4,6 +4,7 @@ import { components } from 'react-select'; import { escapeStringForRegex, GrafanaTheme2 } from '@grafana/data'; import { Icon, MultiSelect, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { TagBadge } from './TagBadge'; import { TagOption } from './TagOption'; @@ -45,7 +46,7 @@ export const TagFilter = ({ inputId, isClearable, onChange, - placeholder = 'Filter by tag', + placeholder, tagOptions, tags, width, @@ -134,10 +135,10 @@ export const TagFilter = ({ getOptionValue: (i: any) => i.value, inputId, isMulti: true, - loadingMessage: 'Loading...', - noOptionsMessage: 'No tags found', onChange: onTagChange, - placeholder, + loadingMessage: t('tag-filter.loading', 'Loading...'), + noOptionsMessage: t('tag-filter.no-tags', 'No tags found'), + placeholder: placeholder || t('tag-filter.placeholder', 'Filter by tag'), value: currentlySelectedTags, width, components: { diff --git a/public/app/features/search/components/ManageDashboardsNew.tsx b/public/app/features/search/components/ManageDashboardsNew.tsx index 74b4a26723c..353320d693d 100644 --- a/public/app/features/search/components/ManageDashboardsNew.tsx +++ b/public/app/features/search/components/ManageDashboardsNew.tsx @@ -3,6 +3,7 @@ import React, { useEffect } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Input, useStyles2, Spinner } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { contextSrv } from 'app/core/services/context_srv'; import { FolderDTO, AccessControlAction } from 'app/types'; @@ -49,7 +50,11 @@ export const ManageDashboardsNew = React.memo(({ folder }: Props) => { // eslint-disable-next-line jsx-a11y/no-autofocus autoFocus spellCheck={false} - placeholder={state.includePanels ? 'Search for dashboards and panels' : 'Search for dashboards'} + placeholder={ + state.includePanels + ? t('search.search-input.include-panels-placeholder', 'Search for dashboards and panels') + : t('search.search-input.placeholder', 'Search for dashboards') + } className={styles.searchInput} suffix={false ? : null} /> diff --git a/public/app/features/search/page/components/ActionRow.tsx b/public/app/features/search/page/components/ActionRow.tsx index ced058db3fa..d42d1a01e4c 100644 --- a/public/app/features/search/page/components/ActionRow.tsx +++ b/public/app/features/search/page/components/ActionRow.tsx @@ -6,16 +6,25 @@ import { config } from '@grafana/runtime'; import { HorizontalGroup, RadioButtonGroup, useStyles2, Checkbox, Button } from '@grafana/ui'; import { SortPicker } from 'app/core/components/Select/SortPicker'; import { TagFilter, TermCount } from 'app/core/components/TagFilter/TagFilter'; +import { t, Trans } from 'app/core/internationalization'; import { SearchLayout, SearchState } from '../../types'; -export const layoutOptions = [ - { value: SearchLayout.Folders, icon: 'folder', ariaLabel: 'View by folders' }, - { value: SearchLayout.List, icon: 'list-ul', ariaLabel: 'View as list' }, -]; +function getLayoutOptions() { + const layoutOptions = [ + { value: SearchLayout.Folders, icon: 'folder', ariaLabel: t('search.actions.view-as-folders', 'View by folders') }, + { value: SearchLayout.List, icon: 'list-ul', ariaLabel: t('search.actions.view-as-list', 'View as list') }, + ]; -if (config.featureToggles.dashboardPreviews) { - layoutOptions.push({ value: SearchLayout.Grid, icon: 'apps', ariaLabel: 'Grid view' }); + if (config.featureToggles.dashboardPreviews) { + layoutOptions.push({ + value: SearchLayout.Grid, + icon: 'apps', + ariaLabel: t('search.actions.view-as-grid', 'Grid view'), + }); + } + + return layoutOptions; } interface Props { @@ -80,26 +89,33 @@ export const ActionRow: FC = ({ disabled={layout === SearchLayout.Folders} value={state.includePanels} onChange={() => onSetIncludePanels(!state.includePanels)} - label="Include panels" + label={t('search.actions.include-panels', 'Include panels')} /> )} {showStarredFilter && (
- +
)} {state.datasource && ( )} +
{!hideLayout && ( = ({ onChange={(change) => onSortChange(change?.value)} value={state.sort} getSortOptions={getSortOptions} - placeholder={sortPlaceholder || 'Sort'} + placeholder={sortPlaceholder || t('search.actions.sort-placeholder', 'Sort')} isClearable /> diff --git a/public/app/features/search/page/components/FolderSection.tsx b/public/app/features/search/page/components/FolderSection.tsx index d67ce5186c1..fce4dc6b022 100644 --- a/public/app/features/search/page/components/FolderSection.tsx +++ b/public/app/features/search/page/components/FolderSection.tsx @@ -5,6 +5,7 @@ import { useAsync, useLocalStorage } from 'react-use'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { Card, Checkbox, CollapsableSection, Icon, IconName, Spinner, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { getSectionStorageKey } from 'app/features/search/utils'; import { useUniqueId } from 'app/plugins/datasource/influxdb/components/useUniqueId'; @@ -174,7 +175,10 @@ export const FolderSection = ({ <> {selectionToggle && selection && (
- +
)} @@ -186,7 +190,8 @@ export const FolderSection = ({ {section.title} {section.url && section.uid !== 'general' && ( - | Go to folder + | {' '} + {t('search.folder-view.go-to-folder', 'Go to folder')} )}
diff --git a/public/app/features/search/page/components/columns.tsx b/public/app/features/search/page/components/columns.tsx index b1c0ab6f79c..f9a709057e1 100644 --- a/public/app/features/search/page/components/columns.tsx +++ b/public/app/features/search/page/components/columns.tsx @@ -12,6 +12,7 @@ import { import { config, getDataSourceSrv } from '@grafana/runtime'; import { Checkbox, Icon, IconButton, IconName, TagList } from '@grafana/ui'; import appEvents from 'app/core/app_events'; +import { t } from 'app/core/internationalization'; import { PluginIconName } from 'app/features/plugins/admin/types'; import { ShowModalReactEvent } from 'app/types/events'; @@ -63,7 +64,7 @@ export const generateColumns = ( if (selection('*', '*')) { return (
- +
); } @@ -132,9 +133,7 @@ export const generateColumns = ( }, id: `column-name`, field: access.name!, - Header: () => { - return
Name
; - }, + Header: () =>
{t('search.results-table.name-header', 'Name')}
, width, }); availableWidth -= width; @@ -184,7 +183,7 @@ export const generateColumns = ( }, id: `column-location`, field: access.location ?? access.url, - Header: 'Location', + Header: () => t('search.results-table.location-header', 'Location'), width, }); } @@ -281,7 +280,7 @@ function makeDataSourceColumn( return { id: `column-datasource`, field, - Header: 'Data source', + Header: () => t('search.results-table.datasource-header', 'Data source'), Cell: (p) => { const dslist = field.values.get(p.row.index); if (!dslist?.length) { @@ -329,7 +328,7 @@ function makeTypeColumn( return { id: `column-type`, field: kindField ?? typeField, - Header: 'Type', + Header: () => t('search.results-table.type-header', 'Type'), Cell: (p) => { const i = p.row.index; const kind = kindField?.values.get(i) ?? 'dashboard'; @@ -339,12 +338,12 @@ function makeTypeColumn( txt = kind; switch (txt) { case 'dashboard': - txt = 'Dashboard'; + txt = t('search.results-table.type-dashboard', 'Dashboard'); break; case 'folder': icon = 'folder'; - txt = 'Folder'; + txt = t('search.results-table.type-folder', 'Folder'); break; case 'panel': @@ -400,7 +399,7 @@ function makeTagsColumn( }, id: `column-tags`, field: field, - Header: 'Tags', + Header: () => t('search.results-table.tags-header', 'Tags'), width, }; } diff --git a/public/app/features/variables/adhoc/picker/AdHocFilter.test.tsx b/public/app/features/variables/adhoc/picker/AdHocFilter.test.tsx index fbbccbd6fe7..f42e230c661 100644 --- a/public/app/features/variables/adhoc/picker/AdHocFilter.test.tsx +++ b/public/app/features/variables/adhoc/picker/AdHocFilter.test.tsx @@ -29,7 +29,7 @@ describe('AdHocFilter', () => { await selectEvent.select(selectEl, 'key3', { container: document.body }); // Select value - await userEvent.click(screen.getByText('select value')); + await userEvent.click(screen.getByText('Select value')); // There are already some filters rendered const selectEl2 = screen.getAllByTestId('AdHocFilterValue-value-wrapper')[2]; await selectEvent.select(selectEl2, 'val3', { container: document.body }); diff --git a/public/app/features/variables/adhoc/picker/AdHocFilterBuilder.tsx b/public/app/features/variables/adhoc/picker/AdHocFilterBuilder.tsx index d8b3e822bd5..69da8f2afba 100644 --- a/public/app/features/variables/adhoc/picker/AdHocFilterBuilder.tsx +++ b/public/app/features/variables/adhoc/picker/AdHocFilterBuilder.tsx @@ -1,6 +1,7 @@ import React, { FC, useCallback, useState } from 'react'; import { DataSourceRef, SelectableValue } from '@grafana/data'; +import { t } from 'app/core/internationalization'; import { AdHocVariableFilter } from 'app/features/variables/types'; import { AdHocFilterKey, REMOVE_FILTER_KEY } from './AdHocFilterKey'; @@ -64,7 +65,7 @@ export const AdHocFilterBuilder: FC = ({ datasource, appendBefore, onComp { value={value ?? ''} onChange={this.onChange} onKeyDown={this.onKeyDown} - placeholder={t('variable.picker.input', 'Enter variable value')} + placeholder={t('variable.dropdown.placeholder', 'Enter variable value')} /> ); } diff --git a/public/app/features/variables/textbox/TextBoxVariablePicker.tsx b/public/app/features/variables/textbox/TextBoxVariablePicker.tsx index dface5d9259..f6597b2a683 100644 --- a/public/app/features/variables/textbox/TextBoxVariablePicker.tsx +++ b/public/app/features/variables/textbox/TextBoxVariablePicker.tsx @@ -1,6 +1,7 @@ import React, { ChangeEvent, FocusEvent, KeyboardEvent, ReactElement, useCallback, useEffect, useState } from 'react'; import { Input } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { useDispatch } from 'app/types'; import { variableAdapters } from '../adapters'; @@ -70,7 +71,7 @@ export function TextBoxVariablePicker({ variable, onVariableChange, readOnly }: onBlur={onBlur} disabled={readOnly} onKeyDown={onKeyDown} - placeholder="Enter variable value" + placeholder={t('variable.textbox.placeholder', 'Enter variable value')} id={`var-${variable.id}`} /> ); diff --git a/public/locales/de-DE/grafana.json b/public/locales/de-DE/grafana.json index 63ae38fc535..82ce8b0468d 100644 --- a/public/locales/de-DE/grafana.json +++ b/public/locales/de-DE/grafana.json @@ -18,6 +18,7 @@ "section": { "actions": "", "dashboard-search-results": "", + "folder-search-results": "", "pages": "", "preferences": "", "recent-dashboards": "" @@ -110,6 +111,13 @@ "folder-picker": { "loading": "Ordner werden geladen …" }, + "grafana-ui": { + "segment-async": { + "error": "", + "loading": "", + "no-options": "" + } + }, "library-panel": { "add-modal": { "cancel": "Abbrechen", @@ -251,6 +259,9 @@ "manage-dashboards": { "title": "Durchsuchen" }, + "manage-folder": { + "subtitle": "" + }, "monitoring": { "subtitle": "Überwachungs- und Infrastruktur-Apps", "title": "Überwachung" @@ -345,6 +356,11 @@ "navigation": { "kiosk": { "tv-alert": "Drücke ESC, um den Kiosk-Modus zu verlassen" + }, + "toolbar": { + "enable-kiosk": "", + "toggle-menu": "", + "toggle-search-bar": "" } }, "news": { @@ -393,11 +409,37 @@ } }, "search": { + "actions": { + "include-panels": "", + "remove-datasource-filter": "", + "sort-placeholder": "", + "starred": "", + "view-as-folders": "", + "view-as-grid": "", + "view-as-list": "" + }, "dashboard-actions": { "import": "", "new": "", "new-dashboard": "", "new-folder": "" + }, + "folder-view": { + "go-to-folder": "", + "select-folder": "" + }, + "results-table": { + "datasource-header": "", + "location-header": "", + "name-header": "", + "tags-header": "", + "type-dashboard": "", + "type-folder": "", + "type-header": "" + }, + "search-input": { + "include-panels-placeholder": "", + "placeholder": "" } }, "share-modal": { @@ -497,6 +539,11 @@ }, "title": "Einstellungen" }, + "tag-filter": { + "loading": "", + "no-tags": "", + "placeholder": "" + }, "time-picker": { "absolute": { "recent-title": "Kürzlich verwendete absolute Bereiche", @@ -572,12 +619,20 @@ "loading": "Sitzungen werden geladen …" }, "variable": { + "adhoc": { + "placeholder": "" + }, + "dropdown": { + "placeholder": "" + }, "picker": { - "input": "Variablenwert eingeben", "link-all": "Alle", "option-all": "Alle", "option-selected-values": "Ausgewählt", "option-tooltip": "Auswahl löschen" + }, + "textbox": { + "placeholder": "" } } } diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json index 719ab734af0..77978f893c5 100644 --- a/public/locales/en-US/grafana.json +++ b/public/locales/en-US/grafana.json @@ -18,6 +18,7 @@ "section": { "actions": "Actions", "dashboard-search-results": "Dashboards", + "folder-search-results": "Folders", "pages": "Pages", "preferences": "Preferences", "recent-dashboards": "Recent dashboards" @@ -110,6 +111,13 @@ "folder-picker": { "loading": "Loading folders..." }, + "grafana-ui": { + "segment-async": { + "error": "Failed to load options", + "loading": "Loading options...", + "no-options": "No options found" + } + }, "library-panel": { "add-modal": { "cancel": "Cancel", @@ -251,6 +259,9 @@ "manage-dashboards": { "title": "Browse" }, + "manage-folder": { + "subtitle": "Manage folder dashboards and permissions" + }, "monitoring": { "subtitle": "Monitoring and infrastructure apps", "title": "Monitoring" @@ -345,6 +356,11 @@ "navigation": { "kiosk": { "tv-alert": "Press ESC to exit kiosk mode" + }, + "toolbar": { + "enable-kiosk": "Enable kiosk mode", + "toggle-menu": "Toggle menu", + "toggle-search-bar": "Toggle top search bar" } }, "news": { @@ -393,11 +409,37 @@ } }, "search": { + "actions": { + "include-panels": "Include panels", + "remove-datasource-filter": "Datasource: {{datasource}}", + "sort-placeholder": "Sort", + "starred": "Starred", + "view-as-folders": "View by folders", + "view-as-grid": "Grid view", + "view-as-list": "View as list" + }, "dashboard-actions": { "import": "Import", "new": "New", "new-dashboard": "New Dashboard", "new-folder": "New Folder" + }, + "folder-view": { + "go-to-folder": "Go to folder", + "select-folder": "Select folder" + }, + "results-table": { + "datasource-header": "Data source", + "location-header": "Location", + "name-header": "Name", + "tags-header": "Tags", + "type-dashboard": "Dashboard", + "type-folder": "Folder", + "type-header": "Type" + }, + "search-input": { + "include-panels-placeholder": "Search for dashboards and panels", + "placeholder": "Search for dashboards" } }, "share-modal": { @@ -497,6 +539,11 @@ }, "title": "Preferences" }, + "tag-filter": { + "loading": "Loading...", + "no-tags": "No tags found", + "placeholder": "Filter by tag" + }, "time-picker": { "absolute": { "recent-title": "Recently used absolute ranges", @@ -572,12 +619,20 @@ "loading": "Loading sessions..." }, "variable": { + "adhoc": { + "placeholder": "Select value" + }, + "dropdown": { + "placeholder": "Enter variable value" + }, "picker": { - "input": "Enter variable value", "link-all": "All", "option-all": "All", "option-selected-values": "Selected", "option-tooltip": "Clear selections" + }, + "textbox": { + "placeholder": "Enter variable value" } } } diff --git a/public/locales/es-ES/grafana.json b/public/locales/es-ES/grafana.json index 10d633316f6..4030d4aaf87 100644 --- a/public/locales/es-ES/grafana.json +++ b/public/locales/es-ES/grafana.json @@ -18,6 +18,7 @@ "section": { "actions": "", "dashboard-search-results": "", + "folder-search-results": "", "pages": "", "preferences": "", "recent-dashboards": "" @@ -110,6 +111,13 @@ "folder-picker": { "loading": "Cargando carpetas..." }, + "grafana-ui": { + "segment-async": { + "error": "", + "loading": "", + "no-options": "" + } + }, "library-panel": { "add-modal": { "cancel": "Cancelar", @@ -251,6 +259,9 @@ "manage-dashboards": { "title": "Navegar" }, + "manage-folder": { + "subtitle": "" + }, "monitoring": { "subtitle": "Aplicaciones de supervisión e infraestructura", "title": "Seguimiento" @@ -345,6 +356,11 @@ "navigation": { "kiosk": { "tv-alert": "Pulse ESC para salir del modo de quiosco" + }, + "toolbar": { + "enable-kiosk": "", + "toggle-menu": "", + "toggle-search-bar": "" } }, "news": { @@ -393,11 +409,37 @@ } }, "search": { + "actions": { + "include-panels": "", + "remove-datasource-filter": "", + "sort-placeholder": "", + "starred": "", + "view-as-folders": "", + "view-as-grid": "", + "view-as-list": "" + }, "dashboard-actions": { "import": "", "new": "", "new-dashboard": "", "new-folder": "" + }, + "folder-view": { + "go-to-folder": "", + "select-folder": "" + }, + "results-table": { + "datasource-header": "", + "location-header": "", + "name-header": "", + "tags-header": "", + "type-dashboard": "", + "type-folder": "", + "type-header": "" + }, + "search-input": { + "include-panels-placeholder": "", + "placeholder": "" } }, "share-modal": { @@ -497,6 +539,11 @@ }, "title": "Preferencias" }, + "tag-filter": { + "loading": "", + "no-tags": "", + "placeholder": "" + }, "time-picker": { "absolute": { "recent-title": "Intervalos absolutos utilizados recientemente", @@ -572,12 +619,20 @@ "loading": "Cargando sesiones..." }, "variable": { + "adhoc": { + "placeholder": "" + }, + "dropdown": { + "placeholder": "" + }, "picker": { - "input": "Introducir el valor de la variable", "link-all": "Todo", "option-all": "Todo", "option-selected-values": "Seleccionados", "option-tooltip": "Eliminar selecciones" + }, + "textbox": { + "placeholder": "" } } } diff --git a/public/locales/fr-FR/grafana.json b/public/locales/fr-FR/grafana.json index 419493a9ce8..e684abfd899 100644 --- a/public/locales/fr-FR/grafana.json +++ b/public/locales/fr-FR/grafana.json @@ -18,6 +18,7 @@ "section": { "actions": "", "dashboard-search-results": "", + "folder-search-results": "", "pages": "", "preferences": "", "recent-dashboards": "" @@ -110,6 +111,13 @@ "folder-picker": { "loading": "Chargement des dossiers..." }, + "grafana-ui": { + "segment-async": { + "error": "", + "loading": "", + "no-options": "" + } + }, "library-panel": { "add-modal": { "cancel": "Annuler", @@ -251,6 +259,9 @@ "manage-dashboards": { "title": "Parcourir" }, + "manage-folder": { + "subtitle": "" + }, "monitoring": { "subtitle": "Applications de suivi et d'infrastructure", "title": "Suivi" @@ -345,6 +356,11 @@ "navigation": { "kiosk": { "tv-alert": "Appuyez sur ESC pour quitter le mode kiosque" + }, + "toolbar": { + "enable-kiosk": "", + "toggle-menu": "", + "toggle-search-bar": "" } }, "news": { @@ -393,11 +409,37 @@ } }, "search": { + "actions": { + "include-panels": "", + "remove-datasource-filter": "", + "sort-placeholder": "", + "starred": "", + "view-as-folders": "", + "view-as-grid": "", + "view-as-list": "" + }, "dashboard-actions": { "import": "", "new": "", "new-dashboard": "", "new-folder": "" + }, + "folder-view": { + "go-to-folder": "", + "select-folder": "" + }, + "results-table": { + "datasource-header": "", + "location-header": "", + "name-header": "", + "tags-header": "", + "type-dashboard": "", + "type-folder": "", + "type-header": "" + }, + "search-input": { + "include-panels-placeholder": "", + "placeholder": "" } }, "share-modal": { @@ -497,6 +539,11 @@ }, "title": "Préférences" }, + "tag-filter": { + "loading": "", + "no-tags": "", + "placeholder": "" + }, "time-picker": { "absolute": { "recent-title": "Périodes absolues récemment utilisées", @@ -572,12 +619,20 @@ "loading": "Chargement des sessions..." }, "variable": { + "adhoc": { + "placeholder": "" + }, + "dropdown": { + "placeholder": "" + }, "picker": { - "input": "Entrer la valeur de la variable", "link-all": "Tout", "option-all": "Tout", "option-selected-values": "Sélection", "option-tooltip": "Effacer les sélections" + }, + "textbox": { + "placeholder": "" } } } diff --git a/public/locales/pseudo-LOCALE/grafana.json b/public/locales/pseudo-LOCALE/grafana.json index 14c6f1cc369..3a9dd97dc82 100644 --- a/public/locales/pseudo-LOCALE/grafana.json +++ b/public/locales/pseudo-LOCALE/grafana.json @@ -18,6 +18,7 @@ "section": { "actions": "Åčŧįőʼnş", "dashboard-search-results": "Đäşĥþőäřđş", + "folder-search-results": "Főľđęřş", "pages": "Päģęş", "preferences": "Přęƒęřęʼnčęş", "recent-dashboards": "Ŗęčęʼnŧ đäşĥþőäřđş" @@ -110,6 +111,13 @@ "folder-picker": { "loading": "Ŀőäđįʼnģ ƒőľđęřş..." }, + "grafana-ui": { + "segment-async": { + "error": "Fäįľęđ ŧő ľőäđ őpŧįőʼnş", + "loading": "Ŀőäđįʼnģ őpŧįőʼnş...", + "no-options": "Ńő őpŧįőʼnş ƒőūʼnđ" + } + }, "library-panel": { "add-modal": { "cancel": "Cäʼnčęľ", @@ -251,6 +259,9 @@ "manage-dashboards": { "title": "ßřőŵşę" }, + "manage-folder": { + "subtitle": "Mäʼnäģę ƒőľđęř đäşĥþőäřđş äʼnđ pęřmįşşįőʼnş" + }, "monitoring": { "subtitle": "Mőʼnįŧőřįʼnģ äʼnđ įʼnƒřäşŧřūčŧūřę äppş", "title": "Mőʼnįŧőřįʼnģ" @@ -345,6 +356,11 @@ "navigation": { "kiosk": { "tv-alert": "Přęşş ĒŜC ŧő ęχįŧ ĸįőşĸ mőđę" + }, + "toolbar": { + "enable-kiosk": "Ēʼnäþľę ĸįőşĸ mőđę", + "toggle-menu": "Ŧőģģľę męʼnū", + "toggle-search-bar": "Ŧőģģľę ŧőp şęäřčĥ þäř" } }, "news": { @@ -393,11 +409,37 @@ } }, "search": { + "actions": { + "include-panels": "Ĩʼnčľūđę päʼnęľş", + "remove-datasource-filter": "Đäŧäşőūřčę: {{datasource}}", + "sort-placeholder": "Ŝőřŧ", + "starred": "Ŝŧäřřęđ", + "view-as-folders": "Vįęŵ þy ƒőľđęřş", + "view-as-grid": "Ğřįđ vįęŵ", + "view-as-list": "Vįęŵ äş ľįşŧ" + }, "dashboard-actions": { "import": "Ĩmpőřŧ", "new": "Ńęŵ", "new-dashboard": "Ńęŵ Đäşĥþőäřđ", "new-folder": "Ńęŵ Főľđęř" + }, + "folder-view": { + "go-to-folder": "Ğő ŧő ƒőľđęř", + "select-folder": "Ŝęľęčŧ ƒőľđęř" + }, + "results-table": { + "datasource-header": "Đäŧä şőūřčę", + "location-header": "Ŀőčäŧįőʼn", + "name-header": "Ńämę", + "tags-header": "Ŧäģş", + "type-dashboard": "Đäşĥþőäřđ", + "type-folder": "Főľđęř", + "type-header": "Ŧypę" + }, + "search-input": { + "include-panels-placeholder": "Ŝęäřčĥ ƒőř đäşĥþőäřđş äʼnđ päʼnęľş", + "placeholder": "Ŝęäřčĥ ƒőř đäşĥþőäřđş" } }, "share-modal": { @@ -497,6 +539,11 @@ }, "title": "Přęƒęřęʼnčęş" }, + "tag-filter": { + "loading": "Ŀőäđįʼnģ...", + "no-tags": "Ńő ŧäģş ƒőūʼnđ", + "placeholder": "Fįľŧęř þy ŧäģ" + }, "time-picker": { "absolute": { "recent-title": "Ŗęčęʼnŧľy ūşęđ äþşőľūŧę řäʼnģęş", @@ -572,12 +619,20 @@ "loading": "Ŀőäđįʼnģ şęşşįőʼnş..." }, "variable": { + "adhoc": { + "placeholder": "Ŝęľęčŧ väľūę" + }, + "dropdown": { + "placeholder": "Ēʼnŧęř väřįäþľę väľūę" + }, "picker": { - "input": "Ēʼnŧęř väřįäþľę väľūę", "link-all": "Åľľ", "option-all": "Åľľ", "option-selected-values": "Ŝęľęčŧęđ", "option-tooltip": "Cľęäř şęľęčŧįőʼnş" + }, + "textbox": { + "placeholder": "Ēʼnŧęř väřįäþľę väľūę" } } } diff --git a/public/locales/zh-Hans/grafana.json b/public/locales/zh-Hans/grafana.json index 30b70a7c70d..907485f55ca 100644 --- a/public/locales/zh-Hans/grafana.json +++ b/public/locales/zh-Hans/grafana.json @@ -18,6 +18,7 @@ "section": { "actions": "", "dashboard-search-results": "", + "folder-search-results": "", "pages": "", "preferences": "", "recent-dashboards": "" @@ -110,6 +111,13 @@ "folder-picker": { "loading": "正在加载文件夹..." }, + "grafana-ui": { + "segment-async": { + "error": "", + "loading": "", + "no-options": "" + } + }, "library-panel": { "add-modal": { "cancel": "取消", @@ -251,6 +259,9 @@ "manage-dashboards": { "title": "浏览" }, + "manage-folder": { + "subtitle": "" + }, "monitoring": { "subtitle": "监控和基础设施应用", "title": "正在监控" @@ -345,6 +356,11 @@ "navigation": { "kiosk": { "tv-alert": "按 ESC 退出 kiosk 模式" + }, + "toolbar": { + "enable-kiosk": "", + "toggle-menu": "", + "toggle-search-bar": "" } }, "news": { @@ -393,11 +409,37 @@ } }, "search": { + "actions": { + "include-panels": "", + "remove-datasource-filter": "", + "sort-placeholder": "", + "starred": "", + "view-as-folders": "", + "view-as-grid": "", + "view-as-list": "" + }, "dashboard-actions": { "import": "", "new": "", "new-dashboard": "", "new-folder": "" + }, + "folder-view": { + "go-to-folder": "", + "select-folder": "" + }, + "results-table": { + "datasource-header": "", + "location-header": "", + "name-header": "", + "tags-header": "", + "type-dashboard": "", + "type-folder": "", + "type-header": "" + }, + "search-input": { + "include-panels-placeholder": "", + "placeholder": "" } }, "share-modal": { @@ -497,6 +539,11 @@ }, "title": "首选项" }, + "tag-filter": { + "loading": "", + "no-tags": "", + "placeholder": "" + }, "time-picker": { "absolute": { "recent-title": "最近使用的绝对范围", @@ -572,12 +619,20 @@ "loading": "正在加载会话..." }, "variable": { + "adhoc": { + "placeholder": "" + }, + "dropdown": { + "placeholder": "" + }, "picker": { - "input": "", "link-all": "", "option-all": "", "option-selected-values": "", "option-tooltip": "" + }, + "textbox": { + "placeholder": "" } } }