diff --git a/.betterer.results b/.betterer.results index 8631b85dee9..c7f5454900f 100644 --- a/.betterer.results +++ b/.betterer.results @@ -1,5 +1,5 @@ // BETTERER RESULTS V2. -// +// // If this file contains merge conflicts, use `betterer merge` to automatically resolve them: // https://phenomnomnominal.github.io/betterer/docs/results-file/#merge // @@ -462,7 +462,8 @@ 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, "Do not use any type assertions.", "2"], - [0, 0, 0, "Unexpected any. Specify a different type.", "3"] + [0, 0, 0, "Unexpected any. Specify a different type.", "3"], + [0, 0, 0, "Unexpected any. Specify a different type.", "4"] ], "packages/grafana-runtime/src/services/AngularLoader.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"], @@ -1147,17 +1148,8 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"] ], - "public/app/features/actions/ActionEditor.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] - ], "public/app/features/actions/ParamsEditor.tsx:5381": [ - [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"] + [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/admin/AdminFeatureTogglesTable.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], @@ -2488,17 +2480,9 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "2"], [0, 0, 0, "Unexpected any. Specify a different type.", "3"] ], - "public/app/features/annotations/components/AnnotationResultMapper.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], "public/app/features/annotations/components/StandardAnnotationQueryEditor.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/annotations/events_processing.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"] @@ -2635,12 +2619,7 @@ exports[`better eslint`] = { ], "public/app/features/correlations/Forms/ConfigureCorrelationTargetForm.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "Do not use any type assertions.", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] - ], - "public/app/features/correlations/components/EmptyCorrelationsCTA.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "Do not use any type assertions.", "1"] ], "public/app/features/correlations/components/Wizard/index.ts:5381": [ [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"], @@ -2660,6 +2639,13 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "6"], [0, 0, 0, "No untranslated strings. Wrap text with ", "7"] ], + "public/app/features/dashboard-scene/edit-pane/DashboardAddPane.tsx:5381": [ + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + ], + "public/app/features/dashboard-scene/edit-pane/DashboardEditPane.tsx:5381": [ + [0, 0, 0, "Do not use any type assertions.", "0"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + ], "public/app/features/dashboard-scene/embedding/EmbeddedDashboardTestPage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], @@ -3663,47 +3649,18 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use export all (\`export * from ...\`)", "1"] ], "public/app/features/datasources/components/BasicSettings.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/datasources/components/ButtonRow.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/datasources/components/CloudInfoBox.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], - "public/app/features/datasources/components/DashboardsTable.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], - "public/app/features/datasources/components/DataSourceCategories.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], - "public/app/features/datasources/components/DataSourceLoadError.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], - "public/app/features/datasources/components/DataSourceMissingRightsMessage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/datasources/components/DataSourcePluginConfigPage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/datasources/components/DataSourcePluginState.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], - "public/app/features/datasources/components/DataSourceReadOnlyMessage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/datasources/components/DataSourceTestingStatus.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], @@ -3713,22 +3670,6 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "1"] ], - "public/app/features/datasources/components/DataSourcesListCard.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], - "public/app/features/datasources/components/EditDataSourceActions.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], - "public/app/features/datasources/components/NewDataSource.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], - "public/app/features/datasources/components/picker/DataSourcePicker.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], "public/app/features/datasources/state/actions.test.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "1"] @@ -3757,89 +3698,33 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"] ], - "public/app/features/dimensions/editors/FileUploader.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], "public/app/features/dimensions/editors/FolderPickerTab.tsx:5381": [ - [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] + [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/dimensions/editors/ResourceDimensionEditor.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/dimensions/editors/ResourcePicker.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], - "public/app/features/dimensions/editors/ResourcePickerPopover.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] - ], - "public/app/features/dimensions/editors/ScalarDimensionEditor.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] - ], - "public/app/features/dimensions/editors/ScaleDimensionEditor.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/dimensions/editors/TextDimensionEditor.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] ], "public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] - ], - "public/app/features/dimensions/editors/URLPickerTab.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx:5381": [ - [0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "8"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "9"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "10"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "11"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "12"] + [0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"] ], "public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx:5381": [ [0, 0, 0, "\'VerticalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"] - ], - "public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditorModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/dimensions/editors/index.ts:5381": [ [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"], @@ -3973,10 +3858,7 @@ exports[`better eslint`] = { "public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] ], "public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFilters.tsx:5381": [ [0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], @@ -4115,12 +3997,6 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"] ], - "public/app/features/expressions/ExpressionQueryEditor.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/expressions/components/ClassicConditions.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/expressions/components/Condition.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], @@ -4140,24 +4016,7 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "10"], [0, 0, 0, "No untranslated strings. Wrap text with ", "11"], [0, 0, 0, "No untranslated strings. Wrap text with ", "12"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "13"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "14"] - ], - "public/app/features/expressions/components/Reduce.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"] - ], - "public/app/features/expressions/components/Resample.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"] - ], - "public/app/features/expressions/components/Threshold.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "13"] ], "public/app/features/expressions/guards.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] @@ -4177,16 +4036,8 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"] ], - "public/app/features/gops/configuration-tracker/components/ConfigCard.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/gops/configuration-tracker/components/ConfigureIRM.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], "public/app/features/gops/configuration-tracker/components/Essentials.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/gops/configuration-tracker/components/ProgressBar.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -4198,8 +4049,7 @@ exports[`better eslint`] = { ], "public/app/features/inspector/InspectDataTab.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"] + [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "1"] ], "public/app/features/inspector/InspectErrorTab.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], @@ -4212,42 +4062,22 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use the t() function outside of a component or function", "2"], [0, 0, 0, "Do not use the t() function outside of a component or function", "3"], [0, 0, 0, "Do not use the t() function outside of a component or function", "4"], - [0, 0, 0, "Do not use the t() function outside of a component or function", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "7"] + [0, 0, 0, "Do not use the t() function outside of a component or function", "5"] ], "public/app/features/inspector/InspectStatsTab.tsx:5381": [ [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"] ], "public/app/features/inspector/QueryInspector.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "Unexpected any. Specify a different type.", "5"], - [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "6"], - [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "7"] - ], - "public/app/features/invites/InviteeRow.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/invites/InviteesTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "Unexpected any. Specify a different type.", "3"], + [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "4"], + [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "5"] ], "public/app/features/invites/SignupInvited.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "8"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "9"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "10"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/library-panels/components/LibraryPanelInfo/LibraryPanelInfo.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -4261,9 +4091,6 @@ exports[`better eslint`] = { "public/app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/live/LiveConnectionWarning.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/live/centrifuge/LiveDataStream.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], @@ -4274,89 +4101,26 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/live/dashboard/DashboardChangedModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] - ], - "public/app/features/logs/components/InfiniteScroll.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/logs/components/LogDetails.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"] - ], - "public/app/features/logs/components/LogDetailsBody.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] - ], "public/app/features/logs/components/LogDetailsRow.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/logs/components/LogLabelStats.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/logs/components/LogRowMenuCell.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "8"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "9"] - ], - "public/app/features/logs/components/log-context/LogContextButtons.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], - "public/app/features/logs/components/log-context/LogRowContextModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] - ], "public/app/features/logs/utils.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], - "public/app/features/manage-dashboards/DashboardImportPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], "public/app/features/manage-dashboards/components/ImportDashboardForm.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "8"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "9"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "10"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] ], "public/app/features/manage-dashboards/components/ImportDashboardLibraryPanelsList.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], - "public/app/features/manage-dashboards/components/SnapshotListTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/manage-dashboards/state/actions.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], @@ -4381,12 +4145,10 @@ exports[`better eslint`] = { ], "public/app/features/migrate-to-cloud/onprem/NameCell.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/notifications/StoredNotifications.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/org/NewOrgPage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -4406,32 +4168,17 @@ exports[`better eslint`] = { "public/app/features/org/state/reducers.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], - "public/app/features/panel/components/PanelDataErrorView.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], "public/app/features/panel/components/PanelPluginError.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/panel/components/PanelRenderer.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] - ], - "public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"] - ], - "public/app/features/panel/components/VizTypePicker/VisualizationSuggestions.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], - "public/app/features/panel/components/VizTypePicker/VizTypePicker.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] + "public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx:5381": [ + [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"] ], "public/app/features/panel/panellinks/linkSuppliers.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"] @@ -4457,34 +4204,9 @@ exports[`better eslint`] = { [0, 0, 0, "Do not re-export imported variable (\`./remotePlugin.mock\`)", "1"], [0, 0, 0, "Do not use export all (\`export * from ...\`)", "2"] ], - "public/app/features/plugins/admin/components/AppConfigWrapper.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], "public/app/features/plugins/admin/components/Badges/PluginAngularBadge.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] - ], - "public/app/features/plugins/admin/components/Badges/PluginDeprecatedBadge.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] - ], - "public/app/features/plugins/admin/components/Badges/PluginDisabledBadge.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], - "public/app/features/plugins/admin/components/Badges/PluginEnterpriseBadge.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"] - ], - "public/app/features/plugins/admin/components/Badges/PluginInstallBadge.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], "public/app/features/plugins/admin/components/Badges/index.ts:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./PluginAngularBadge\`)", "0"], [0, 0, 0, "Do not re-export imported variable (\`./PluginDeprecatedBadge\`)", "1"], @@ -4493,13 +4215,8 @@ exports[`better eslint`] = { [0, 0, 0, "Do not re-export imported variable (\`./PluginInstallBadge\`)", "4"], [0, 0, 0, "Do not re-export imported variable (\`./PluginUpdateAvailableBadge\`)", "5"] ], - "public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], "public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithDataSource.tsx:5381": [ - [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/plugins/admin/components/GetStartedWithPlugin/index.ts:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./GetStartedWithPlugin\`)", "0"] @@ -4511,86 +4228,46 @@ exports[`better eslint`] = { [0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "7"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] ], "public/app/features/plugins/admin/components/InstallControls/index.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./InstallControlsButton\`)", "0"], [0, 0, 0, "Do not re-export imported variable (\`./InstallControlsWarning\`)", "1"] ], - "public/app/features/plugins/admin/components/PluginActions.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], - "public/app/features/plugins/admin/components/PluginDashboards.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] - ], "public/app/features/plugins/admin/components/PluginDetailsBody.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/plugins/admin/components/PluginDetailsDeprecatedWarning.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/plugins/admin/components/PluginDetailsHeaderDependencies.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/plugins/admin/components/PluginDetailsPage.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], - "public/app/features/plugins/admin/components/PluginDetailsPanel.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/plugins/admin/components/PluginDetailsSignature.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/plugins/admin/components/PluginListItem.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], - "public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], "public/app/features/plugins/admin/components/PluginUsage.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] - ], - "public/app/features/plugins/admin/components/SearchField.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/plugins/admin/components/VersionInstallButton.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/plugins/admin/components/VersionList.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/plugins/admin/pages/Browse.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Do not use any type assertions.", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "7"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "8"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "9"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/plugins/admin/state/actions.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] @@ -4599,24 +4276,10 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], "public/app/features/plugins/angularDeprecation/AngularDeprecationNotice.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], - "public/app/features/plugins/angularDeprecation/AngularDeprecationPluginNotice.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/plugins/angularDeprecation/AngularMigrationNotice.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], - "public/app/features/plugins/components/AppRootPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/plugins/components/PluginsErrorsInfo.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], @@ -4632,11 +4295,6 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "5"], [0, 0, 0, "Unexpected any. Specify a different type.", "6"] ], - "public/app/features/plugins/extensions/logs/LogViewFilters.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] - ], "public/app/features/plugins/extensions/usePluginComponents.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], @@ -4668,21 +4326,8 @@ exports[`better eslint`] = { "public/app/features/profile/FeatureTogglePage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/profile/UserOrganizations.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/profile/UserSessions.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], - "public/app/features/profile/UserTeams.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/provisioning/Config/ConfigForm.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], @@ -4963,53 +4608,31 @@ exports[`better eslint`] = { [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "4"] ], "public/app/features/query/components/QueryEditorRowHeader.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "3"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], + [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "1"] ], "public/app/features/query/components/QueryErrorAlert.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/query/components/QueryGroup.tsx:5381": [ [0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "7"], - [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "8"], - [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "9"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], + [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "2"], + [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "3"] ], "public/app/features/query/components/QueryGroupOptions.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"], [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "3"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "4"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "5"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "6"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "6"], [0, 0, 0, "No untranslated strings. Wrap text with ", "7"], [0, 0, 0, "No untranslated strings. Wrap text with ", "8"], [0, 0, 0, "No untranslated strings. Wrap text with ", "9"], [0, 0, 0, "No untranslated strings. Wrap text with ", "10"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "11"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "12"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "13"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "14"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "15"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "16"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "17"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "18"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "19"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "20"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "21"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "22"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "23"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "24"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "25"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "11"] ], "public/app/features/query/state/DashboardQueryRunner/AnnotationsQueryRunner.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] @@ -5049,21 +4672,11 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "7"], [0, 0, 0, "Unexpected any. Specify a different type.", "8"] ], - "public/app/features/sandbox/TestStuffPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] - ], "public/app/features/search/page/components/ActionRow.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/search/page/components/SearchResultsTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/search/page/components/columns.tsx:5381": [ - [0, 0, 0, "Do not use any type assertions.", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] + [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/search/service/bluge.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], @@ -5118,18 +4731,10 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/support-bundles/SupportBundles.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "3"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "6"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/support-bundles/SupportBundlesCreate.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/teams/CreateTeam.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], @@ -5216,9 +4821,6 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], - "public/app/features/trails/RelatedLogs/RelatedLogsScene.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/trails/TrailStore/utils.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], @@ -5422,9 +5024,8 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], "public/app/features/users/TokenRevokedModal.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/variables/adapters.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"], diff --git a/public/app/features/actions/ActionEditor.tsx b/public/app/features/actions/ActionEditor.tsx index c2ca0a02701..626156f87a5 100644 --- a/public/app/features/actions/ActionEditor.tsx +++ b/public/app/features/actions/ActionEditor.tsx @@ -161,12 +161,12 @@ export const ActionEditor = memo(({ index, value, onChange, suggestions, showOne - + @@ -178,7 +178,7 @@ export const ActionEditor = memo(({ index, value, onChange, suggestions, showOne - + - addParam()} disabled={isAddParamsDisabled} /> + addParam()} + disabled={isAddParamsDisabled} + /> @@ -96,7 +102,11 @@ export const ParamsEditor = ({ value, onChange, suggestions, contentTypeHeader = - + ))} diff --git a/public/app/features/annotations/components/AnnotationResultMapper.tsx b/public/app/features/annotations/components/AnnotationResultMapper.tsx index 973a4071044..1010436118f 100644 --- a/public/app/features/annotations/components/AnnotationResultMapper.tsx +++ b/public/app/features/annotations/components/AnnotationResultMapper.tsx @@ -11,6 +11,7 @@ import { getValueFormat, } from '@grafana/data'; import { Select, Tooltip, Icon } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { annotationEventNames, AnnotationFieldInfo } from '../standardAnnotationSupport'; import { AnnotationQueryResponse } from '../types'; @@ -188,9 +189,15 @@ export class AnnotationFieldMapper extends PureComponent { - - - + + + diff --git a/public/app/features/annotations/components/StandardAnnotationQueryEditor.tsx b/public/app/features/annotations/components/StandardAnnotationQueryEditor.tsx index b584023eda0..bbb12454b7d 100644 --- a/public/app/features/annotations/components/StandardAnnotationQueryEditor.tsx +++ b/public/app/features/annotations/components/StandardAnnotationQueryEditor.tsx @@ -12,6 +12,7 @@ import { } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { Alert, AlertVariant, Button, Space, Spinner } from '@grafana/ui'; +import { Trans, t } from 'app/core/internationalization'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; import { getTimeSrv } from 'app/features/dashboard/services/TimeSrv'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; @@ -147,7 +148,11 @@ export default class StandardAnnotationQueryEditor extends PureComponentNo events found

; + return ( +

+ No events found +

+ ); } const frame = panelData?.series?.[0] ?? panelData?.annotations?.[0]; @@ -178,7 +183,9 @@ export default class StandardAnnotationQueryEditor extends PureComponent - Test annotation query + + Test annotation query + )} @@ -186,7 +193,7 @@ export default class StandardAnnotationQueryEditor extends PureComponent {this.renderStatusText(response, running)} diff --git a/public/app/features/correlations/Forms/ConfigureCorrelationTargetForm.tsx b/public/app/features/correlations/Forms/ConfigureCorrelationTargetForm.tsx index 2818bebb4b8..d94ba0ba942 100644 --- a/public/app/features/correlations/Forms/ConfigureCorrelationTargetForm.tsx +++ b/public/app/features/correlations/Forms/ConfigureCorrelationTargetForm.tsx @@ -77,7 +77,10 @@ export const ConfigureCorrelationTargetForm = () => { value={correlationType} onChange={(value) => onChange(value.value)} options={Object.values(CORR_TYPES_SELECT)} - aria-label="correlation type" + aria-label={t( + 'correlations.configure-correlation-target-form.aria-label-correlation-type', + 'Correlation type' + )} /> )} diff --git a/public/app/features/correlations/components/EmptyCorrelationsCTA.tsx b/public/app/features/correlations/components/EmptyCorrelationsCTA.tsx index 64f61b32ca1..10dc354e034 100644 --- a/public/app/features/correlations/components/EmptyCorrelationsCTA.tsx +++ b/public/app/features/correlations/components/EmptyCorrelationsCTA.tsx @@ -24,8 +24,16 @@ export const EmptyCorrelationsCTA = ({ onClick, canWriteCorrelations }: Props) = ) : ( - There are no correlations configured yet. - Please contact your administrator to create new correlations. + + + There are no correlations configured yet. + + + + + Please contact your administrator to create new correlations. + + ); }; diff --git a/public/app/features/datasources/components/BasicSettings.tsx b/public/app/features/datasources/components/BasicSettings.tsx index 83cf383db9a..b316d3e2600 100644 --- a/public/app/features/datasources/components/BasicSettings.tsx +++ b/public/app/features/datasources/components/BasicSettings.tsx @@ -4,6 +4,7 @@ import * as React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { InlineField, InlineSwitch, Input, Badge, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; export interface Props { dataSourceName: string; @@ -16,12 +17,18 @@ export interface Props { export function BasicSettings({ dataSourceName, isDefault, onDefaultChange, onNameChange, disabled }: Props) { return ( <> -
+
{/* Name */}
onNameChange(event.currentTarget.value)} required data-testid={selectors.pages.DataSource.name} @@ -41,7 +48,11 @@ export function BasicSettings({ dataSourceName, isDefault, onDefaultChange, onNa
{/* Is Default */} - + {enabled ? ( - + ) : ( - + )}
); diff --git a/public/app/features/datasources/components/ButtonRow.tsx b/public/app/features/datasources/components/ButtonRow.tsx index 117b69aa436..8b828241937 100644 --- a/public/app/features/datasources/components/ButtonRow.tsx +++ b/public/app/features/datasources/components/ButtonRow.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import { selectors } from '@grafana/e2e-selectors'; import { Button } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; export interface Props { canSave: boolean; @@ -21,7 +22,7 @@ export function ButtonRow({ canSave, canDelete, onDelete, onSubmit, onTest }: Pr onClick={onDelete} data-testid={selectors.pages.DataSource.delete} > - Delete + Delete {canSave && ( )}
diff --git a/public/app/features/datasources/components/CloudInfoBox.tsx b/public/app/features/datasources/components/CloudInfoBox.tsx index 17e6b6d26b8..a1f41686129 100644 --- a/public/app/features/datasources/components/CloudInfoBox.tsx +++ b/public/app/features/datasources/components/CloudInfoBox.tsx @@ -3,6 +3,7 @@ import { GrafanaEdition } from '@grafana/data/internal'; import { Alert } from '@grafana/ui'; import { LocalStorageValueProvider } from 'app/core/components/LocalStorageValueProvider'; import { config } from 'app/core/config'; +import { t } from 'app/core/internationalization'; const LOCAL_STORAGE_KEY = 'datasources.settings.cloudInfoBox.isDismissed'; @@ -59,7 +60,10 @@ export function CloudInfoBox({ dataSource }: Props) { href={`https://grafana.com/signup/cloud/connect-account?src=grafana-oss&cnt=${dataSource.type}-settings`} target="_blank" rel="noreferrer" - title="The free plan includes 10k active metrics and 50gb storage." + title={t( + 'datasources.cloud-info-box.title-includes-active-metrics-storage', + 'The free plan includes 10k active metrics and 50gb storage.' + )} > free-forever Grafana Cloud plan diff --git a/public/app/features/datasources/components/DashboardsTable.tsx b/public/app/features/datasources/components/DashboardsTable.tsx index 5ac4705ec88..1ec2b840b7a 100644 --- a/public/app/features/datasources/components/DashboardsTable.tsx +++ b/public/app/features/datasources/components/DashboardsTable.tsx @@ -1,4 +1,5 @@ import { Button, Icon } from '@grafana/ui'; +import { Trans, t } from 'app/core/internationalization'; import { PluginDashboard } from 'app/types'; export interface Props { @@ -34,7 +35,7 @@ export function DashboardsTable({ dashboards, onImport, onRemove }: Props) {
@@ -213,15 +248,21 @@ export function ValueMappingEditRow({ mapping, index, onChange, onRemove, onDupl name="copy" onClick={() => onDuplicate(index)} data-testid="duplicate-value-mapping" - aria-label="Duplicate value mapping" - tooltip="Duplicate" + aria-label={t( + 'dimensions.value-mapping-edit-row.duplicate-value-mapping-aria-label-duplicate-value-mapping', + 'Duplicate value mapping' + )} + tooltip={t('dimensions.value-mapping-edit-row.duplicate-value-mapping-tooltip-duplicate', 'Duplicate')} /> onRemove(index)} data-testid="remove-value-mapping" - aria-label="Delete value mapping" - tooltip="Delete" + aria-label={t( + 'dimensions.value-mapping-edit-row.remove-value-mapping-aria-label-delete-value-mapping', + 'Delete value mapping' + )} + tooltip={t('dimensions.value-mapping-edit-row.remove-value-mapping-tooltip-delete', 'Delete')} /> diff --git a/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx b/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx index 3bbeff8882a..c66facc9eb4 100644 --- a/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx +++ b/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingsEditor.tsx @@ -3,6 +3,7 @@ import { memo, useCallback, useMemo, useState } from 'react'; import { GrafanaTheme2, MappingType, StandardEditorProps, ValueMapping } from '@grafana/data'; import { useStyles2, VerticalGroup, Icon, ColorPicker, Button, Modal } from '@grafana/ui'; +import { Trans, t } from 'app/core/internationalization'; import { MediaType, ResourceFolderName, ResourcePickerSize } from '../../types'; import { ResourcePicker } from '../ResourcePicker'; @@ -88,12 +89,20 @@ export const ValueMappingsEditor = memo((props: Props) => {
AnnotationFromFirst Value + Annotation + + From + + First value +
{!dashboard.imported ? ( ) : ( )} diff --git a/public/app/features/datasources/components/DataSourceMissingRightsMessage.tsx b/public/app/features/datasources/components/DataSourceMissingRightsMessage.tsx index 1086367d45b..c7c5cf0471d 100644 --- a/public/app/features/datasources/components/DataSourceMissingRightsMessage.tsx +++ b/public/app/features/datasources/components/DataSourceMissingRightsMessage.tsx @@ -1,11 +1,15 @@ import { Alert } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; export const missingRightsMessage = 'You are not allowed to modify this data source. Please contact your server admin to update this data source.'; export function DataSourceMissingRightsMessage() { return ( - + {missingRightsMessage} ); diff --git a/public/app/features/datasources/components/DataSourcePluginState.tsx b/public/app/features/datasources/components/DataSourcePluginState.tsx index 88b53def03c..0c4a723fbe1 100644 --- a/public/app/features/datasources/components/DataSourcePluginState.tsx +++ b/public/app/features/datasources/components/DataSourcePluginState.tsx @@ -1,4 +1,5 @@ import { PluginState } from '@grafana/data'; +import { Trans } from 'app/core/internationalization'; import { PluginStateInfo } from 'app/features/plugins/components/PluginStateInfo'; export type Props = { @@ -8,7 +9,9 @@ export type Props = { export function DataSourcePluginState({ state }: Props) { return (
-
Plugin state
+
+ Plugin state +
diff --git a/public/app/features/datasources/components/DataSourceReadOnlyMessage.tsx b/public/app/features/datasources/components/DataSourceReadOnlyMessage.tsx index de0a437834d..7d72266a39e 100644 --- a/public/app/features/datasources/components/DataSourceReadOnlyMessage.tsx +++ b/public/app/features/datasources/components/DataSourceReadOnlyMessage.tsx @@ -1,12 +1,17 @@ import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Alert } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; export const readOnlyMessage = 'This data source was added by config and cannot be modified using the UI. Please contact your server admin to update this data source.'; export function DataSourceReadOnlyMessage() { return ( - + {readOnlyMessage} ); diff --git a/public/app/features/datasources/components/DataSourcesListCard.tsx b/public/app/features/datasources/components/DataSourcesListCard.tsx index 0c77ea501aa..11a431ccfa2 100644 --- a/public/app/features/datasources/components/DataSourcesListCard.tsx +++ b/public/app/features/datasources/components/DataSourcesListCard.tsx @@ -4,6 +4,7 @@ import Skeleton from 'react-loading-skeleton'; import { DataSourceSettings, GrafanaTheme2 } from '@grafana/data'; import { config } from '@grafana/runtime'; import { Card, LinkButton, Stack, Tag, useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { ROUTES } from '../../connections/constants'; import { trackCreateDashboardClicked, trackExploreClicked } from '../tracking'; @@ -48,7 +49,7 @@ export function DataSourcesListCard({ dataSource, hasWriteRights, hasExploreRigh }); }} > - Build a dashboard + Build a dashboard {/* Explore */} @@ -68,7 +69,7 @@ export function DataSourcesListCard({ dataSource, hasWriteRights, hasExploreRigh }); }} > - Explore + Explore )} diff --git a/public/app/features/datasources/components/EditDataSourceActions.tsx b/public/app/features/datasources/components/EditDataSourceActions.tsx index 566ba35355e..707006ee0ac 100644 --- a/public/app/features/datasources/components/EditDataSourceActions.tsx +++ b/public/app/features/datasources/components/EditDataSourceActions.tsx @@ -1,6 +1,7 @@ import { config } from '@grafana/runtime'; import { LinkButton } from '@grafana/ui'; import { contextSrv } from 'app/core/core'; +import { Trans } from 'app/core/internationalization'; import { useDataSource } from '../state'; import { trackCreateDashboardClicked, trackDsConfigClicked, trackExploreClicked } from '../tracking'; @@ -31,7 +32,7 @@ export function EditDataSourceActions({ uid }: Props) { }); }} > - Explore data + Explore data )} - Build a dashboard + Build a dashboard ); diff --git a/public/app/features/datasources/components/NewDataSource.tsx b/public/app/features/datasources/components/NewDataSource.tsx index e24ab0953fa..ddc7cde5cfe 100644 --- a/public/app/features/datasources/components/NewDataSource.tsx +++ b/public/app/features/datasources/components/NewDataSource.tsx @@ -3,6 +3,7 @@ import { Action } from 'redux'; import { DataSourcePluginMeta, PluginType } from '@grafana/data'; import { LinkButton, FilterInput } from '@grafana/ui'; import PageLoader from 'app/core/components/PageLoader/PageLoader'; +import { t, Trans } from 'app/core/internationalization'; import { PluginsErrorsInfo } from 'app/features/plugins/components/PluginsErrorsInfo'; import { DataSourcePluginCategory, StoreState, useDispatch, useSelector } from 'app/types'; @@ -64,10 +65,17 @@ export function NewDataSourceView({ <> {/* Search */}
- +
- Cancel + Cancel
diff --git a/public/app/features/datasources/components/picker/DataSourcePicker.tsx b/public/app/features/datasources/components/picker/DataSourcePicker.tsx index 88aebfbafe3..04a90a76768 100644 --- a/public/app/features/datasources/components/picker/DataSourcePicker.tsx +++ b/public/app/features/datasources/components/picker/DataSourcePicker.tsx @@ -14,7 +14,7 @@ import { reportInteraction } from '@grafana/runtime'; import { DataQuery, DataSourceRef } from '@grafana/schema'; import { Button, Icon, Input, ModalsController, Portal, ScrollContainer, useStyles2 } from '@grafana/ui'; import config from 'app/core/config'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { useKeyNavigationListener } from 'app/features/search/hooks/useSearchKeyboardSelection'; import { defaultFileUploadQuery, GrafanaQuery } from 'app/plugins/datasource/grafana/types'; @@ -242,7 +242,7 @@ export function DataSourcePicker(props: DataSourcePickerProps) { id={inputId || 'data-source-picker'} className={inputHasFocus ? undefined : styles.input} data-testid={selectors.components.DataSourcePicker.inputV2} - aria-label="Select a data source" + aria-label={t('datasources.data-source-picker.aria-label-select-a-data-source', 'Select a data source')} autoComplete="off" prefix={currentValue ? prefixIcon : undefined} suffix={} @@ -463,7 +463,7 @@ function Footer({ onClose, onChange, onClickAddCSV, ...props }: FooterProps) { {isUploadFileEnabled && ( )}
diff --git a/public/app/features/dimensions/editors/FileUploader.tsx b/public/app/features/dimensions/editors/FileUploader.tsx index 053930bca53..7f5887f6bf9 100644 --- a/public/app/features/dimensions/editors/FileUploader.tsx +++ b/public/app/features/dimensions/editors/FileUploader.tsx @@ -4,6 +4,7 @@ import { Dispatch, SetStateAction, useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { FileDropzone, useStyles2, Button, DropzoneFile, Field } from '@grafana/ui'; import { SanitizedSVG } from 'app/core/components/SVG/SanitizedSVG'; +import { Trans, t } from 'app/core/internationalization'; import { MediaType } from '../types'; @@ -24,7 +25,7 @@ export function FileDropzoneCustomChildren({ secondaryText = 'Drag and drop here
{secondaryText}
); @@ -35,7 +36,7 @@ export const FileUploader = ({ mediaType, setFormData, setUpload, error }: Props const [file, setFile] = useState(''); const Preview = () => ( - +
{mediaType === MediaType.Icon && } {mediaType === MediaType.Image && Preview of the uploaded file} diff --git a/public/app/features/dimensions/editors/FolderPickerTab.tsx b/public/app/features/dimensions/editors/FolderPickerTab.tsx index 6071a90f228..7395d184704 100644 --- a/public/app/features/dimensions/editors/FolderPickerTab.tsx +++ b/public/app/features/dimensions/editors/FolderPickerTab.tsx @@ -3,6 +3,7 @@ import { Dispatch, SetStateAction, useEffect, useState } from 'react'; import { GrafanaTheme2, SelectableValue } from '@grafana/data'; import { Field, FilterInput, Select, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; import { FileElement, GrafanaDatasource } from 'app/plugins/datasource/grafana/datasource'; @@ -106,7 +107,7 @@ export const FolderPickerTab = (props: Props) => { { onChangeSearch(v); setSearchQuery(v); diff --git a/public/app/features/dimensions/editors/ResourceDimensionEditor.tsx b/public/app/features/dimensions/editors/ResourceDimensionEditor.tsx index 527195062f8..40294d34a1f 100644 --- a/public/app/features/dimensions/editors/ResourceDimensionEditor.tsx +++ b/public/app/features/dimensions/editors/ResourceDimensionEditor.tsx @@ -5,6 +5,7 @@ import { FieldNamePickerConfigSettings, StandardEditorProps, StandardEditorsRegi import { ResourceDimensionConfig, ResourceDimensionMode } from '@grafana/schema'; import { InlineField, InlineFieldRow, RadioButtonGroup } from '@grafana/ui'; import { FieldNamePicker } from '@grafana/ui/internal'; +import { t } from 'app/core/internationalization'; import { getPublicOrAbsoluteUrl, ResourceFolderName } from '..'; import { MediaType, ResourceDimensionOptions, ResourcePickerSize } from '../types'; @@ -80,14 +81,22 @@ export const ResourceDimensionEditor = ( <> {showSourceRadio && ( - + )} {mode !== ResourceDimensionMode.Fixed && ( - + { } else { return ( - Set icon + Set icon ); } diff --git a/public/app/features/dimensions/editors/ResourcePickerPopover.tsx b/public/app/features/dimensions/editors/ResourcePickerPopover.tsx index c56aae069c5..fe2bc7fd3f8 100644 --- a/public/app/features/dimensions/editors/ResourcePickerPopover.tsx +++ b/public/app/features/dimensions/editors/ResourcePickerPopover.tsx @@ -8,6 +8,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { getBackendSrv } from '@grafana/runtime'; import { Button, useStyles2 } from '@grafana/ui'; import { config } from 'app/core/config'; +import { Trans } from 'app/core/internationalization'; import { MediaType, PickerTabType, ResourceFolderName } from '../types'; @@ -94,17 +95,17 @@ export const ResourcePickerPopover = (props: Props) => { className={getTabClassName(PickerTabType.Folder)} onClick={() => setActivePicker(PickerTabType.Folder)} > - Folder + Folder
{renderPicker()}
diff --git a/public/app/features/dimensions/editors/ScalarDimensionEditor.tsx b/public/app/features/dimensions/editors/ScalarDimensionEditor.tsx index 70cefcd4982..d3af5d8f273 100644 --- a/public/app/features/dimensions/editors/ScalarDimensionEditor.tsx +++ b/public/app/features/dimensions/editors/ScalarDimensionEditor.tsx @@ -6,6 +6,7 @@ import { ScalarDimensionMode, ScalarDimensionConfig } from '@grafana/schema'; import { InlineField, InlineFieldRow, RadioButtonGroup, Select, useStyles2 } from '@grafana/ui'; import { useFieldDisplayNames, useSelectOptions } from '@grafana/ui/internal'; import { NumberInput } from 'app/core/components/OptionsUI/NumberInput'; +import { t } from 'app/core/internationalization'; import { ScalarDimensionOptions } from '../types'; @@ -81,7 +82,7 @@ export const ScalarDimensionEditor = ({ value, context, onChange, item }: Props) <>
- + @@ -95,7 +96,11 @@ export const ScalarDimensionEditor = ({ value, context, onChange, item }: Props)
{isFixed && ( - + {isFixed && ( - + @@ -114,12 +115,12 @@ export const ScaleDimensionEditor = (props: StandardEditorProps - + - + diff --git a/public/app/features/dimensions/editors/TextDimensionEditor.tsx b/public/app/features/dimensions/editors/TextDimensionEditor.tsx index e9c8a89d005..0409ac2336a 100644 --- a/public/app/features/dimensions/editors/TextDimensionEditor.tsx +++ b/public/app/features/dimensions/editors/TextDimensionEditor.tsx @@ -10,6 +10,7 @@ import { TextDimensionConfig, TextDimensionMode } from '@grafana/schema'; import { Button, InlineField, InlineFieldRow, RadioButtonGroup } from '@grafana/ui'; import { FieldNamePicker } from '@grafana/ui/internal'; import { StringValueEditor } from 'app/core/components/OptionsUI/string'; +import { t } from 'app/core/internationalization'; import { TextDimensionOptions } from '../types'; @@ -70,13 +71,21 @@ export const TextDimensionEditor = ({ value, context, onChange }: Props) => { return ( <> - + {mode !== TextDimensionMode.Fixed && ( - + { )} {mode === TextDimensionMode.Template && ( - + > = [ { value: ThresholdsMode.Absolute, label: 'Absolute', description: 'Pick thresholds based on the absolute values' }, @@ -219,7 +220,7 @@ export class ThresholdsEditor extends PureComponent { className={styles.addButton} fullWidth > - Add threshold + Add threshold
{steps @@ -233,7 +234,14 @@ export class ThresholdsEditor extends PureComponent {
- +
diff --git a/public/app/features/dimensions/editors/URLPickerTab.tsx b/public/app/features/dimensions/editors/URLPickerTab.tsx index 1fb3e693b02..c715cfd4e41 100644 --- a/public/app/features/dimensions/editors/URLPickerTab.tsx +++ b/public/app/features/dimensions/editors/URLPickerTab.tsx @@ -4,6 +4,7 @@ import { Dispatch, SetStateAction } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Field, Input, Label, useStyles2 } from '@grafana/ui'; import { SanitizedSVG } from 'app/core/components/SVG/SanitizedSVG'; +import { t } from 'app/core/internationalization'; import { getPublicOrAbsoluteUrl } from '../resource'; import { MediaType } from '../types'; @@ -31,7 +32,7 @@ export const URLPickerTab = (props: Props) => { setNewValue(e.currentTarget.value)} value={newValue} />
- +
{mediaType === MediaType.Icon && } {mediaType === MediaType.Image && newValue && ( diff --git a/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx b/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx index bb8215ffbe6..45f949dd945 100644 --- a/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx +++ b/public/app/features/dimensions/editors/ValueMappingsEditor/ValueMappingEditRow.tsx @@ -5,6 +5,7 @@ import * as React from 'react'; import { GrafanaTheme2, MappingType, SpecialValueMatch, SelectableValue, ValueMappingResult } from '@grafana/data'; import { useStyles2, Icon, Select, HorizontalGroup, ColorPicker, IconButton, Input, Button } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { ResourcePickerSize, ResourceFolderName, MediaType } from '../../types'; import { ResourcePicker } from '../ResourcePicker'; @@ -144,20 +145,36 @@ export function ValueMappingEditRow({ mapping, index, onChange, onRemove, onDupl type="text" value={key ?? ''} onChange={onUpdateMatchValue} - placeholder="Exact value to match" + placeholder={t( + 'dimensions.value-mapping-edit-row.placeholder-exact-value-to-match', + 'Exact value to match' + )} /> )} {mapping.type === MappingType.RangeToText && (
- - + +
)} {mapping.type === MappingType.RegexToText && ( )} @@ -170,20 +187,33 @@ export function ValueMappingEditRow({ mapping, index, onChange, onRemove, onDupl )}
- + {result.color && ( - + )} {!result.color && ( {(props) => ( )} @@ -202,7 +232,12 @@ export function ValueMappingEditRow({ mapping, index, onChange, onRemove, onDupl color={result.color} /> {result.icon && ( - + )}
- Condition + Condition - Display text - Color - {showIconPicker && Icon} + + Display text + + + Color + + {showIconPicker && ( + + Icon + + )} @@ -125,7 +134,7 @@ export function ValueMappingsEditorModal({ value, onChange, onClose, showIconPic diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx index ef2fb3bbff6..6590e40feda 100644 --- a/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx +++ b/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx @@ -18,6 +18,7 @@ import { memo, Dispatch, SetStateAction, useMemo } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Button, Switch, useStyles2 } from '@grafana/ui'; import { getButtonStyles } from '@grafana/ui/internal'; +import { Trans } from 'app/core/internationalization'; import { SearchProps } from '../../../useSearch'; import { Trace } from '../../types'; @@ -83,7 +84,7 @@ export default memo(function TracePageSearchBar(props: TracePageSearchBarProps) aria-label="Clear filters button" onClick={clear} > - Clear + Clear
- Show matches only + Show matches only
@@ -114,7 +115,7 @@ export default memo(function TracePageSearchBar(props: TracePageSearchBarProps) variant="secondary" fill="text" > - Show critical path only + Show critical path only
diff --git a/public/app/features/expressions/ExpressionQueryEditor.tsx b/public/app/features/expressions/ExpressionQueryEditor.tsx index fdb6c9b7343..f2c29c0eef0 100644 --- a/public/app/features/expressions/ExpressionQueryEditor.tsx +++ b/public/app/features/expressions/ExpressionQueryEditor.tsx @@ -2,6 +2,7 @@ import { useCallback, useEffect, useRef } from 'react'; import { DataSourceApi, QueryEditorProps, SelectableValue } from '@grafana/data'; import { InlineField, Select } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { ClassicConditions } from './components/ClassicConditions'; import { Math } from './components/Math'; @@ -103,7 +104,10 @@ export function ExpressionQueryEditor(props: Props) { return (
- + ); @@ -97,15 +100,15 @@ export const Reduce = ({ labelWidth = 'auto', onChange, app, refIds, query }: Pr <> {strictModeNotification()} - + - + - + - + diff --git a/public/app/features/expressions/components/Threshold.tsx b/public/app/features/expressions/components/Threshold.tsx index 6d0d43eb7e9..8f4782241dc 100644 --- a/public/app/features/expressions/components/Threshold.tsx +++ b/public/app/features/expressions/components/Threshold.tsx @@ -93,7 +93,7 @@ export const Threshold = ({ labelWidth, onChange, refIds, query, onError, useHys return ( <> - + { })} /> - - + + - - + + - + - + )} diff --git a/public/app/features/live/LiveConnectionWarning.tsx b/public/app/features/live/LiveConnectionWarning.tsx index fcc9f4f7511..bd03a990f55 100644 --- a/public/app/features/live/LiveConnectionWarning.tsx +++ b/public/app/features/live/LiveConnectionWarning.tsx @@ -5,6 +5,7 @@ import { Unsubscribable } from 'rxjs'; import { GrafanaTheme2, OrgRole } from '@grafana/data'; import { config, getGrafanaLiveSrv } from '@grafana/runtime'; import { Alert, stylesFactory } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { contextSrv } from 'app/core/services/context_srv'; export interface Props {} @@ -52,7 +53,14 @@ export class LiveConnectionWarning extends PureComponent { return (
- +
); } diff --git a/public/app/features/live/dashboard/DashboardChangedModal.tsx b/public/app/features/live/dashboard/DashboardChangedModal.tsx index 9be8bb1af63..3689efe482d 100644 --- a/public/app/features/live/dashboard/DashboardChangedModal.tsx +++ b/public/app/features/live/dashboard/DashboardChangedModal.tsx @@ -3,6 +3,7 @@ import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { locationService } from '@grafana/runtime'; import { Button, Modal, useStyles2 } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { dashboardWatcher } from './dashboardWatcher'; import { DashboardEvent, DashboardEventAction } from './types'; @@ -28,7 +29,7 @@ export function DashboardChangedModal({ onDismiss, event }: Props) { return ( {}} @@ -40,10 +41,10 @@ export function DashboardChangedModal({ onDismiss, event }: Props) {
diff --git a/public/app/features/logs/components/InfiniteScroll.tsx b/public/app/features/logs/components/InfiniteScroll.tsx index d75327e0a2e..e31eea0b149 100644 --- a/public/app/features/logs/components/InfiniteScroll.tsx +++ b/public/app/features/logs/components/InfiniteScroll.tsx @@ -211,7 +211,7 @@ const styles = { const outOfRangeMessage = (
- End of the selected time range. + End of the selected time range.
); diff --git a/public/app/features/logs/components/LogDetails.tsx b/public/app/features/logs/components/LogDetails.tsx index 807320d5829..a2582b184be 100644 --- a/public/app/features/logs/components/LogDetails.tsx +++ b/public/app/features/logs/components/LogDetails.tsx @@ -3,7 +3,7 @@ import { PureComponent } from 'react'; import { CoreApp, DataFrame, DataFrameType, Field, LinkModel, LogRowModel } from '@grafana/data'; import { PopoverContent, Themeable2, withTheme2 } from '@grafana/ui'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { calculateLogsLabelStats, calculateStats } from '../utils'; @@ -83,7 +83,7 @@ class UnThemedLogDetails extends PureComponent { return ( {showDuplicates && } - +
@@ -91,7 +91,11 @@ class UnThemedLogDetails extends PureComponent { {displayedFields && displayedFields.length > 0 && ( <> - @@ -108,7 +112,11 @@ class UnThemedLogDetails extends PureComponent { )} {(labelsAvailable || fieldsAvailable) && ( - @@ -161,7 +169,11 @@ class UnThemedLogDetails extends PureComponent { {fieldsWithLinksAvailable && ( - @@ -211,7 +223,7 @@ class UnThemedLogDetails extends PureComponent { {!fieldsAvailable && !labelsAvailable && !fieldsWithLinksAvailable && ( - diff --git a/public/app/features/logs/components/LogDetailsBody.tsx b/public/app/features/logs/components/LogDetailsBody.tsx index 0cc844e246d..19a69bf7d90 100644 --- a/public/app/features/logs/components/LogDetailsBody.tsx +++ b/public/app/features/logs/components/LogDetailsBody.tsx @@ -4,6 +4,7 @@ import memoizeOne from 'memoize-one'; import { CoreApp, GrafanaTheme2, LogRowModel } from '@grafana/data'; import { reportInteraction } from '@grafana/runtime'; import { IconButton, Themeable2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { getLogRowStyles } from './getLogRowStyles'; @@ -65,9 +66,18 @@ export const LogDetailsBody = (props: Props) => { const toggleFieldButton = displayedFields != null && displayedFields.includes(LOG_LINE_BODY_FIELD_NAME) ? ( - + ) : ( - + ); return ( diff --git a/public/app/features/logs/components/LogDetailsRow.tsx b/public/app/features/logs/components/LogDetailsRow.tsx index 39a7795483e..9e4b39a4202 100644 --- a/public/app/features/logs/components/LogDetailsRow.tsx +++ b/public/app/features/logs/components/LogDetailsRow.tsx @@ -24,6 +24,7 @@ import { Tooltip, withTheme2, } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { logRowToSingleRowDataFrame } from '../logsModel'; import { getLabelTypeFromRow } from '../utils'; @@ -244,7 +245,7 @@ class UnThemedLogDetailsRow extends PureComponent {
val} - title="Copy value to clipboard" + title={t('logs.un-themed-log-details-row.title-copy-value-to-clipboard', 'Copy value to clipboard')} fill="text" variant="secondary" icon="copy" @@ -304,9 +305,21 @@ class UnThemedLogDetailsRow extends PureComponent { const toggleFieldButton = displayedFields && parsedKeys != null && displayedFields.includes(parsedKeys[0]) ? ( - + ) : ( - + ); return ( @@ -335,7 +348,7 @@ class UnThemedLogDetailsRow extends PureComponent { { diff --git a/public/app/features/logs/components/LogRowMenuCell.tsx b/public/app/features/logs/components/LogRowMenuCell.tsx index 7a5527b7032..7e3e45372ba 100644 --- a/public/app/features/logs/components/LogRowMenuCell.tsx +++ b/public/app/features/logs/components/LogRowMenuCell.tsx @@ -13,6 +13,7 @@ import { import { LogRowContextOptions, LogRowModel } from '@grafana/data'; import { DataQuery } from '@grafana/schema'; import { ClipboardButton, IconButton, PopoverContent } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { handleOpenLogsContextClick } from '../utils'; @@ -110,9 +111,9 @@ export const LogRowMenuCell = memo( size="md" name="gf-pin" onClick={() => onUnpinLine && onUnpinLine(row)} - tooltip="Unpin line" + tooltip={t('logs.log-row-menu-cell.tooltip-unpin-line', 'Unpin line')} tooltipPlacement="top" - aria-label="Unpin line" + aria-label={t('logs.log-row-menu-cell.aria-label-unpin-line', 'Unpin line')} tabIndex={0} /> )} @@ -124,9 +125,9 @@ export const LogRowMenuCell = memo( size="md" name="gf-show-context" onClick={onShowContextClick} - tooltip="Show context" + tooltip={t('logs.log-row-menu-cell.tooltip-show-context', 'Show context')} tooltipPlacement="top" - aria-label="Show context" + aria-label={t('logs.log-row-menu-cell.aria-label-show-context', 'Show context')} tabIndex={0} /> )} @@ -137,7 +138,7 @@ export const LogRowMenuCell = memo( fill="text" size="md" getText={getLogText} - tooltip="Copy to clipboard" + tooltip={t('logs.log-row-menu-cell.tooltip-copy-to-clipboard', 'Copy to clipboard')} tooltipPlacement="top" tabIndex={0} /> @@ -147,9 +148,9 @@ export const LogRowMenuCell = memo( size="md" name="gf-pin" onClick={() => onUnpinLine && onUnpinLine(row)} - tooltip="Unpin line" + tooltip={t('logs.log-row-menu-cell.tooltip-unpin-line', 'Unpin line')} tooltipPlacement="top" - aria-label="Unpin line" + aria-label={t('logs.log-row-menu-cell.aria-label-unpin-line', 'Unpin line')} tabIndex={0} /> )} @@ -161,14 +162,14 @@ export const LogRowMenuCell = memo( onClick={() => onPinLine && onPinLine(row)} tooltip={pinLineButtonTooltipTitle ?? 'Pin line'} tooltipPlacement="top" - aria-label="Pin line" + aria-label={t('logs.log-row-menu-cell.aria-label-pin-line', 'Pin line')} tabIndex={0} /> )} {onPermalinkClick && row.rowId !== undefined && row.uid && ( { return (
- +
); diff --git a/public/app/features/logs/components/log-context/LogRowContextModal.tsx b/public/app/features/logs/components/log-context/LogRowContextModal.tsx index 60cb0d6a092..6e62f0e5bea 100644 --- a/public/app/features/logs/components/log-context/LogRowContextModal.tsx +++ b/public/app/features/logs/components/log-context/LogRowContextModal.tsx @@ -20,6 +20,7 @@ import { import { config, reportInteraction } from '@grafana/runtime'; import { DataQuery, TimeZone } from '@grafana/schema'; import { Button, Modal, useTheme2 } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import store from 'app/core/store'; import { SETTINGS_KEYS } from 'app/features/explore/Logs/utils/logs'; import { splitOpen } from 'app/features/explore/state/main'; @@ -495,7 +496,7 @@ export const LogRowContextModal: React.FunctionComponent
)} - {loadingStateAbove === LoadingState.Error &&
Error loading log more logs.
} - {loadingStateAbove === LoadingState.Done &&
No more logs available.
} + {loadingStateAbove === LoadingState.Error && ( +
+ + Error loading more logs. + +
+ )} + {loadingStateAbove === LoadingState.Done && ( +
+ No more logs available. +
+ )}
@@ -594,8 +605,18 @@ export const LogRowContextModal: React.FunctionComponent )} - {loadingStateBelow === LoadingState.Error &&
Error loading log more logs.
} - {loadingStateBelow === LoadingState.Done &&
No more logs available.
} + {loadingStateBelow === LoadingState.Error && ( +
+ + Error loading more logs. + +
+ )} + {loadingStateBelow === LoadingState.Done && ( +
+ No more logs available. +
+ )}
@@ -632,7 +653,7 @@ export const LogRowContextModal: React.FunctionComponent - Open in split view + Open in split view )} diff --git a/public/app/features/manage-dashboards/DashboardImportPage.tsx b/public/app/features/manage-dashboards/DashboardImportPage.tsx index fa5a4285804..bfebb0cec81 100644 --- a/public/app/features/manage-dashboards/DashboardImportPage.tsx +++ b/public/app/features/manage-dashboards/DashboardImportPage.tsx @@ -127,6 +127,7 @@ class UnthemedDashboardImport extends PureComponent { const styles = importStyles(this.props.theme); const GcomDashboardsLink = () => ( + // eslint-disable-next-line @grafana/no-untranslated-strings grafana.com/dashboards diff --git a/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx b/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx index 975bc755543..643e4860175 100644 --- a/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx +++ b/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx @@ -5,6 +5,7 @@ import { selectors } from '@grafana/e2e-selectors'; import { ExpressionDatasourceRef } from '@grafana/runtime/internal'; import { Button, Field, FormFieldErrors, FormsOnSubmit, Stack, Input, Legend } from '@grafana/ui'; import { FolderPicker } from 'app/core/components/Select/FolderPicker'; +import { Trans, t } from 'app/core/internationalization'; import { DataSourcePicker } from 'app/features/datasources/components/picker/DataSourcePicker'; import { @@ -57,8 +58,14 @@ export const ImportDashboardForm = ({ return ( <> - Options - + + Options + + - + ( onChange({ uid, title })} value={value.uid} /> @@ -78,7 +85,7 @@ export const ImportDashboardForm = ({ /> await validateUid(v) })} - addonAfter={!uidReset && } + addonAfter={ + !uidReset && ( + + ) + } /> ) : ( await validateUid(v) })} /> @@ -145,13 +158,16 @@ export const ImportDashboardForm = ({ })} @@ -167,7 +183,7 @@ export const ImportDashboardForm = ({ {getButtonText(errors)} diff --git a/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx b/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx index f00e1c4ce55..1bb3c08025a 100644 --- a/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx +++ b/public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx @@ -5,6 +5,7 @@ import { dateTimeFormat } from '@grafana/data'; import { locationService, reportInteraction } from '@grafana/runtime'; import { Box, Legend } from '@grafana/ui'; import { Form } from 'app/core/components/Form/Form'; +import { Trans } from 'app/core/internationalization'; import { StoreState } from 'app/types'; import { clearLoadedDashboard, importDashboard } from '../state/actions'; @@ -82,11 +83,19 @@ class ImportDashboardOverviewUnConnected extends PureComponent {
+ Log line
+ Fields
+ Links
+ No details available
- + - + diff --git a/public/app/features/manage-dashboards/components/SnapshotListTable.tsx b/public/app/features/manage-dashboards/components/SnapshotListTable.tsx index 10554a440f0..5485357cffd 100644 --- a/public/app/features/manage-dashboards/components/SnapshotListTable.tsx +++ b/public/app/features/manage-dashboards/components/SnapshotListTable.tsx @@ -103,7 +103,7 @@ export const SnapshotListTable = () => { setRemoveSnapshot(undefined)} diff --git a/public/app/features/migrate-to-cloud/onprem/NameCell.tsx b/public/app/features/migrate-to-cloud/onprem/NameCell.tsx index d0ec49a770b..8858c2f611c 100644 --- a/public/app/features/migrate-to-cloud/onprem/NameCell.tsx +++ b/public/app/features/migrate-to-cloud/onprem/NameCell.tsx @@ -126,7 +126,9 @@ function FolderInfo({ data }: { data: ResourceTableItem }) { if (isError) { return ( <> - Unable to load folder + + Unable to load folder + Folder {data.refId} ); diff --git a/public/app/features/notifications/StoredNotifications.tsx b/public/app/features/notifications/StoredNotifications.tsx index be0e504a3bf..95d08fe16bc 100644 --- a/public/app/features/notifications/StoredNotifications.tsx +++ b/public/app/features/notifications/StoredNotifications.tsx @@ -75,7 +75,7 @@ export function StoredNotifications() { onChange={(event: React.ChangeEvent) => handleAllCheckboxToggle(event.target.checked)} />
    diff --git a/public/app/features/panel/components/PanelDataErrorView.tsx b/public/app/features/panel/components/PanelDataErrorView.tsx index c8aed627344..03af23156b8 100644 --- a/public/app/features/panel/components/PanelDataErrorView.tsx +++ b/public/app/features/panel/components/PanelDataErrorView.tsx @@ -12,6 +12,7 @@ import { PanelDataErrorViewProps, locationService } from '@grafana/runtime'; import { usePanelContext, useStyles2 } from '@grafana/ui'; import { CardButton } from 'app/core/components/CardButton'; import { LS_VISUALIZATION_SELECT_TAB_KEY } from 'app/core/constants'; +import { Trans } from 'app/core/internationalization'; import store from 'app/core/store'; import { toggleVizPicker } from 'app/features/dashboard/components/PanelEditor/state/reducers'; import { VisualizationSelectPaneTab } from 'app/features/dashboard/components/PanelEditor/types'; @@ -81,10 +82,12 @@ export function PanelDataErrorView(props: PanelDataErrorViewProps) { )} - Switch to table + Switch to table - Open visualization suggestions + + Open visualization suggestions + )} diff --git a/public/app/features/panel/components/PanelRenderer.tsx b/public/app/features/panel/components/PanelRenderer.tsx index bfffdd6ecfb..5c7c52ba771 100644 --- a/public/app/features/panel/components/PanelRenderer.tsx +++ b/public/app/features/panel/components/PanelRenderer.tsx @@ -12,6 +12,7 @@ import { import { getTemplateSrv, PanelRendererProps } from '@grafana/runtime'; import { ErrorBoundaryAlert, usePanelContext, useTheme2 } from '@grafana/ui'; import { appEvents } from 'app/core/core'; +import { Trans } from 'app/core/internationalization'; import { importPanelPlugin, syncGetPanelPlugin } from '../../plugins/importPanelPlugin'; @@ -68,7 +69,11 @@ export function PanelRenderer

    (prop } if (!plugin || !plugin.hasPluginId(pluginId)) { - return

    Loading plugin panel...
    ; + return ( +
    + Loading plugin panel... +
    + ); } if (!plugin.panel) { @@ -76,7 +81,11 @@ export function PanelRenderer

    (prop } if (!dataWithOverrides) { - return

    No panel data
    ; + return ( +
    + No panel data +
    + ); } const PanelComponent = plugin.panel; diff --git a/public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx b/public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx index a3ab2e950ed..d071937140b 100644 --- a/public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx +++ b/public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx @@ -7,6 +7,7 @@ import { GrafanaTheme2, isUnsignedPluginSignature, PanelPluginMeta, PluginState import { selectors } from '@grafana/e2e-selectors'; import { IconButton, PluginSignatureBadge, useStyles2 } from '@grafana/ui'; import { SkeletonComponent, attachSkeleton } from '@grafana/ui/unstable'; +import { t } from 'app/core/internationalization'; import { PluginStateInfo } from 'app/features/plugins/components/PluginStateInfo'; interface Props { @@ -71,8 +72,11 @@ const PanelTypeCardComponent = ({ onDelete(); }} className={styles.deleteButton} - aria-label="Delete button on panel type card" - tooltip="Delete" + aria-label={t( + 'panel.panel-type-card.aria-label-delete-button-on-panel-type-card', + 'Delete button on panel type card' + )} + tooltip={t('panel.panel-type-card.tooltip-delete', 'Delete')} /> )} diff --git a/public/app/features/panel/components/VizTypePicker/VisualizationSuggestions.tsx b/public/app/features/panel/components/VizTypePicker/VisualizationSuggestions.tsx index 212e97d24c8..7a9628e807f 100644 --- a/public/app/features/panel/components/VizTypePicker/VisualizationSuggestions.tsx +++ b/public/app/features/panel/components/VizTypePicker/VisualizationSuggestions.tsx @@ -5,6 +5,7 @@ import AutoSizer from 'react-virtualized-auto-sizer'; import { GrafanaTheme2, PanelData, PanelModel, VisualizationSuggestion } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { getAllSuggestions } from '../../state/getAllSuggestions'; @@ -47,7 +48,9 @@ export function VisualizationSuggestions({ searchQuery, onChange, data, panel, t return (
    -
    Based on current data
    +
    + Based on current data +
    {filteredSuggestions.map((suggestion, index) => ( @@ -60,7 +63,11 @@ export function VisualizationSuggestions({ searchQuery, onChange, data, panel, t /> ))} {searchQuery && filteredSuggestions.length === 0 && ( -
    No results matched your query
    +
    + + No results matched your query + +
    )}
    diff --git a/public/app/features/panel/components/VizTypePicker/VizTypePicker.tsx b/public/app/features/panel/components/VizTypePicker/VizTypePicker.tsx index 302126277c7..a30702dd1cd 100644 --- a/public/app/features/panel/components/VizTypePicker/VizTypePicker.tsx +++ b/public/app/features/panel/components/VizTypePicker/VizTypePicker.tsx @@ -3,6 +3,7 @@ import { useMemo } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { EmptySearchResult, useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { filterPluginList, getAllPanelPluginMeta } from '../../state/util'; @@ -29,7 +30,13 @@ export function VizTypePicker({ pluginId, searchQuery, onChange, trackSearch }: }, [pluginsList, searchQuery, pluginId, trackSearch]); if (filteredPluginTypes.length === 0) { - return Could not find anything matching your query; + return ( + + + Could not find anything matching your query + + + ); } return ( diff --git a/public/app/features/plugins/admin/components/AppConfigWrapper.tsx b/public/app/features/plugins/admin/components/AppConfigWrapper.tsx index 0bc8bcc5562..07ae94fae11 100644 --- a/public/app/features/plugins/admin/components/AppConfigWrapper.tsx +++ b/public/app/features/plugins/admin/components/AppConfigWrapper.tsx @@ -6,6 +6,7 @@ import { PureComponent } from 'react'; import { PluginMeta, AppPlugin, deprecationWarning } from '@grafana/data'; import { AngularComponent, getAngularLoader, getBackendSrv } from '@grafana/runtime'; import { Button } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; interface Props { app: AppPlugin; @@ -74,17 +75,17 @@ export class AppConfigCtrlWrapper extends PureComponent {
    {!model.enabled && ( )} {model.enabled && ( )} {model.enabled && ( )}
    diff --git a/public/app/features/plugins/admin/components/Badges/PluginAngularBadge.tsx b/public/app/features/plugins/admin/components/Badges/PluginAngularBadge.tsx index 47244f2e64b..95762117f94 100644 --- a/public/app/features/plugins/admin/components/Badges/PluginAngularBadge.tsx +++ b/public/app/features/plugins/admin/components/Badges/PluginAngularBadge.tsx @@ -6,6 +6,7 @@ export function PluginAngularBadge(): React.ReactElement { return ( ); } diff --git a/public/app/features/plugins/admin/components/Badges/PluginDisabledBadge.tsx b/public/app/features/plugins/admin/components/Badges/PluginDisabledBadge.tsx index 70c30c148e3..f9c27841bef 100644 --- a/public/app/features/plugins/admin/components/Badges/PluginDisabledBadge.tsx +++ b/public/app/features/plugins/admin/components/Badges/PluginDisabledBadge.tsx @@ -2,12 +2,20 @@ import * as React from 'react'; import { PluginErrorCode } from '@grafana/data'; import { Badge } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; type Props = { error?: PluginErrorCode }; export function PluginDisabledBadge({ error }: Props): React.ReactElement { const tooltip = errorCodeToTooltip(error); - return ; + return ( + + ); } function errorCodeToTooltip(error?: PluginErrorCode): string | undefined { diff --git a/public/app/features/plugins/admin/components/Badges/PluginEnterpriseBadge.tsx b/public/app/features/plugins/admin/components/Badges/PluginEnterpriseBadge.tsx index 29f78ca9688..1a0fbf4dab6 100644 --- a/public/app/features/plugins/admin/components/Badges/PluginEnterpriseBadge.tsx +++ b/public/app/features/plugins/admin/components/Badges/PluginEnterpriseBadge.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import { featureEnabled } from '@grafana/runtime'; import { Badge, PluginSignatureBadge, Stack, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { CatalogPlugin } from '../../types'; @@ -13,7 +14,7 @@ export function PluginEnterpriseBadge({ plugin }: Props): React.ReactElement { const customBadgeStyles = useStyles2(getBadgeColor); if (featureEnabled('enterprise.plugins')) { - return ; + return ; } return ( @@ -22,11 +23,14 @@ export function PluginEnterpriseBadge({ plugin }: Props): React.ReactElement { ); diff --git a/public/app/features/plugins/admin/components/Badges/PluginInstallBadge.tsx b/public/app/features/plugins/admin/components/Badges/PluginInstallBadge.tsx index 2b59203fda6..bcaf0b15d54 100644 --- a/public/app/features/plugins/admin/components/Badges/PluginInstallBadge.tsx +++ b/public/app/features/plugins/admin/components/Badges/PluginInstallBadge.tsx @@ -1,10 +1,17 @@ import * as React from 'react'; import { Badge, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { getBadgeColor } from './sharedStyles'; export function PluginInstalledBadge(): React.ReactElement { const customBadgeStyles = useStyles2(getBadgeColor); - return ; + return ( + + ); } diff --git a/public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx b/public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx index 1dfb63e38bb..4a782d9b106 100644 --- a/public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx +++ b/public/app/features/plugins/admin/components/Badges/PluginUpdateAvailableBadge.tsx @@ -3,6 +3,7 @@ import * as React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { CatalogPlugin } from '../../types'; @@ -12,7 +13,11 @@ type Props = { export function PluginUpdateAvailableBadge({ plugin }: Props): React.ReactElement | null { const styles = useStyles2(getStyles); - return

    Update available!

    ; + return ( +

    + Update available! +

    + ); } export const getStyles = (theme: GrafanaTheme2) => { diff --git a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx index 4ca6080d7c7..6624a17b4e2 100644 --- a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx +++ b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx @@ -4,6 +4,7 @@ import { PluginMeta } from '@grafana/data'; import { reportInteraction } from '@grafana/runtime'; import { Button } from '@grafana/ui'; import { contextSrv } from 'app/core/core'; +import { Trans } from 'app/core/internationalization'; import { AccessControlAction } from 'app/types'; import { updatePluginSettings } from '../../api'; @@ -59,13 +60,13 @@ export function GetStartedWithApp({ plugin }: Props): React.ReactElement | null <> {!enabled && ( )} {enabled && !autoEnabled && ( )} diff --git a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithDataSource.tsx b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithDataSource.tsx index 640560d62f5..1aa3a12d410 100644 --- a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithDataSource.tsx +++ b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithDataSource.tsx @@ -4,6 +4,7 @@ import * as React from 'react'; import { DataSourcePluginMeta } from '@grafana/data'; import { config } from '@grafana/runtime'; import { Button } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { ROUTES } from 'app/features/connections/constants'; import { addDataSource } from 'app/features/datasources/state'; import { useDispatch } from 'app/types'; @@ -41,7 +42,7 @@ export function GetStartedWithDataSource({ plugin }: Props): React.ReactElement disabledButton ? "The plugin isn't usable yet, it may take some time to complete the installation." : undefined } > - Add new data source + Add new data source ); } diff --git a/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx b/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx index 8690a4f4a5f..fb6dea40d6d 100644 --- a/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx +++ b/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx @@ -4,6 +4,7 @@ import { GrafanaTheme2, PluginType } from '@grafana/data'; import { config, featureEnabled } from '@grafana/runtime'; import { HorizontalGroup, LinkButton, useStyles2, Alert } from '@grafana/ui'; import { contextSrv } from 'app/core/core'; +import { t, Trans } from 'app/core/internationalization'; import { AccessControlAction } from 'app/types'; import { getExternalManageLink } from '../../helpers'; @@ -27,7 +28,10 @@ export const InstallControlsWarning = ({ plugin, pluginStatus, latestCompatibleV return ( ); @@ -37,7 +41,11 @@ export const InstallControlsWarning = ({ plugin, pluginStatus, latestCompatibleV return ( - No valid Grafana Enterprise license detected. + + + No valid Grafana Enterprise license detected. + + - Learn more + Learn more @@ -85,7 +93,10 @@ export const InstallControlsWarning = ({ plugin, pluginStatus, latestCompatibleV return ( ); diff --git a/public/app/features/plugins/admin/components/PluginActions.tsx b/public/app/features/plugins/admin/components/PluginActions.tsx index 3403071f42a..8741929bd7d 100644 --- a/public/app/features/plugins/admin/components/PluginActions.tsx +++ b/public/app/features/plugins/admin/components/PluginActions.tsx @@ -3,6 +3,7 @@ import { useState } from 'react'; import { GrafanaTheme2, PluginErrorCode } from '@grafana/data'; import { Icon, Stack, useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { GetStartedWithPlugin } from '../components/GetStartedWithPlugin'; import { InstallControlsButton } from '../components/InstallControls'; @@ -51,7 +52,9 @@ export const PluginActions = ({ plugin }: Props) => { {needReload && ( - Refresh the page to see the changes + + Refresh the page to see the changes + )} diff --git a/public/app/features/plugins/admin/components/PluginDashboards.tsx b/public/app/features/plugins/admin/components/PluginDashboards.tsx index 8b222d11f0f..37fd46cd3bb 100644 --- a/public/app/features/plugins/admin/components/PluginDashboards.tsx +++ b/public/app/features/plugins/admin/components/PluginDashboards.tsx @@ -4,6 +4,7 @@ import { PureComponent } from 'react'; import { AppEvents, PluginMeta, DataSourceApi } from '@grafana/data'; import { getBackendSrv } from '@grafana/runtime'; import { appEvents } from 'app/core/core'; +import { Trans } from 'app/core/internationalization'; import DashboardsTable from 'app/features/datasources/components/DashboardsTable'; import { PluginDashboard } from 'app/types'; @@ -96,10 +97,20 @@ export class PluginDashboards extends PureComponent { render() { const { loading, dashboards } = this.state; if (loading) { - return
    loading...
    ; + return ( +
    + Loading... +
    + ); } if (!dashboards || !dashboards.length) { - return
    No dashboards are included with this plugin
    ; + return ( +
    + + No dashboards are included with this plugin + +
    + ); } return ; diff --git a/public/app/features/plugins/admin/components/PluginDetailsBody.tsx b/public/app/features/plugins/admin/components/PluginDetailsBody.tsx index bd2999a6a0b..cc5c58f8bd7 100644 --- a/public/app/features/plugins/admin/components/PluginDetailsBody.tsx +++ b/public/app/features/plugins/admin/components/PluginDetailsBody.tsx @@ -5,6 +5,7 @@ import { AppPlugin, GrafanaTheme2, PluginContextProvider, UrlQueryMap, PluginTyp import { config } from '@grafana/runtime'; import { PageInfoItem } from '@grafana/runtime/internal'; import { CellProps, Column, InteractiveTable, Stack, useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { Changelog } from '../components/Changelog'; import { PluginDetailsPanel } from '../components/PluginDetailsPanel'; @@ -160,7 +161,9 @@ export function PluginDetailsBody({ plugin, queryParams, pageId, info, showDetai return (
    -

    Page not found.

    +

    + Page not found. +

    ); } diff --git a/public/app/features/plugins/admin/components/PluginDetailsDeprecatedWarning.tsx b/public/app/features/plugins/admin/components/PluginDetailsDeprecatedWarning.tsx index 3a268e31abb..b94645f994e 100644 --- a/public/app/features/plugins/admin/components/PluginDetailsDeprecatedWarning.tsx +++ b/public/app/features/plugins/admin/components/PluginDetailsDeprecatedWarning.tsx @@ -3,6 +3,7 @@ import * as React from 'react'; import { renderMarkdown } from '@grafana/data'; import { Alert } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { CatalogPlugin } from '../types'; @@ -17,7 +18,12 @@ export function PluginDetailsDeprecatedWarning(props: Props): React.ReactElement const isWarningVisible = plugin.isDeprecated && !dismissed; return isWarningVisible ? ( - setDismissed(true)}> + setDismissed(true)} + >

    This {plugin.type} plugin is{' '} - + That plugin cannot be found. Please check the url is correct or
    go to the
    plugin catalog. diff --git a/public/app/features/plugins/admin/components/PluginDetailsPanel.tsx b/public/app/features/plugins/admin/components/PluginDetailsPanel.tsx index da3cc58ddaf..e8989a1b92e 100644 --- a/public/app/features/plugins/admin/components/PluginDetailsPanel.tsx +++ b/public/app/features/plugins/admin/components/PluginDetailsPanel.tsx @@ -229,6 +229,7 @@ export function PluginDetailsPanel(props: Props): React.ReactElement | null { This feature is for reporting malicious or harmful behaviour within plugins. For plugin concerns, email us at:{' '} + {/* eslint-disable-next-line @grafana/no-untranslated-strings */} integrations@grafana.com diff --git a/public/app/features/plugins/admin/components/PluginDetailsSignature.tsx b/public/app/features/plugins/admin/components/PluginDetailsSignature.tsx index 92add56cc6d..f0d738d46bc 100644 --- a/public/app/features/plugins/admin/components/PluginDetailsSignature.tsx +++ b/public/app/features/plugins/admin/components/PluginDetailsSignature.tsx @@ -3,6 +3,7 @@ import * as React from 'react'; import { PluginErrorCode, PluginSignatureStatus } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { Alert } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { CatalogPlugin } from '../types'; @@ -25,7 +26,7 @@ export function PluginDetailsSignature({ className, plugin }: Props): React.Reac return ( @@ -41,7 +42,9 @@ export function PluginDetailsSignature({ className, plugin }: Props): React.Reac target="_blank" rel="noreferrer" > - Read more about plugins signing. + + Read more about plugins signing. + ); diff --git a/public/app/features/plugins/admin/components/PluginListItemBadges.test.tsx b/public/app/features/plugins/admin/components/PluginListItemBadges.test.tsx index b6afda55066..f03fc3a4d46 100644 --- a/public/app/features/plugins/admin/components/PluginListItemBadges.test.tsx +++ b/public/app/features/plugins/admin/components/PluginListItemBadges.test.tsx @@ -65,7 +65,7 @@ describe('PluginListItemBadges', () => { config.licenseInfo.enabledFeatures = {}; render(); expect(screen.getByText(/enterprise/i)).toBeVisible(); - expect(screen.getByLabelText(/lock icon/i)).toBeInTheDocument(); + expect(screen.getByLabelText(/enterprise/i)).toBeInTheDocument(); }); it('renders a error badge (when plugin has an error)', () => { diff --git a/public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx b/public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx index 945d6c2ee41..4aa83461df9 100644 --- a/public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx +++ b/public/app/features/plugins/admin/components/PluginSignatureDetailsBadge.tsx @@ -4,6 +4,7 @@ import * as React from 'react'; import { GrafanaTheme2, PluginSignatureType } from '@grafana/data'; import { useStyles2, Icon, Badge, IconName } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; const SIGNATURE_ICONS: Record = { [PluginSignatureType.grafana]: 'grafana', @@ -40,7 +41,11 @@ export function PluginSignatureDetailsBadge({ signatureType, signatureOrg = '' } - Signed by: {signatureOrg} + + + Signed by: {{ signatureOrg }} + + ); diff --git a/public/app/features/plugins/admin/components/PluginUsage.tsx b/public/app/features/plugins/admin/components/PluginUsage.tsx index 559a9a18ea7..0a81fa71443 100644 --- a/public/app/features/plugins/admin/components/PluginUsage.tsx +++ b/public/app/features/plugins/admin/components/PluginUsage.tsx @@ -8,6 +8,7 @@ import { GrafanaTheme2, PluginMeta, PluginType } from '@grafana/data'; import { config } from '@grafana/runtime'; import { Alert, Spinner, useStyles2 } from '@grafana/ui'; import EmptyListCTA from 'app/core/components/EmptyListCTA/EmptyListCTA'; +import { t } from 'app/core/internationalization'; import { SearchResultsTable } from 'app/features/search/page/components/SearchResultsTable'; import { getGrafanaSearcher } from 'app/features/search/service/searcher'; import { SearchQuery } from 'app/features/search/service/types'; @@ -69,7 +70,14 @@ export function PluginUsage({ plugin }: Props) { if (!config.featureToggles.panelTitleSearch) { return ( - + Plugin usage requires the new search index to find usage across dashboards ); diff --git a/public/app/features/plugins/admin/components/SearchField.tsx b/public/app/features/plugins/admin/components/SearchField.tsx index f8e42fe3c84..f0861aeddb6 100644 --- a/public/app/features/plugins/admin/components/SearchField.tsx +++ b/public/app/features/plugins/admin/components/SearchField.tsx @@ -3,6 +3,7 @@ import * as React from 'react'; import { useDebounce } from 'react-use'; import { FilterInput } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; interface Props { value?: string; @@ -41,7 +42,7 @@ export const SearchField = ({ value, onSearch }: Props) => { onSearch(e.currentTarget.value); } }} - placeholder="Search Grafana plugins" + placeholder={t('plugins.search-field.placeholder-search-grafana-plugins', 'Search Grafana plugins')} onChange={(value) => { setQuery(value); }} diff --git a/public/app/features/plugins/admin/components/VersionInstallButton.tsx b/public/app/features/plugins/admin/components/VersionInstallButton.tsx index 7792ffc06a8..ba25cd73a12 100644 --- a/public/app/features/plugins/admin/components/VersionInstallButton.tsx +++ b/public/app/features/plugins/admin/components/VersionInstallButton.tsx @@ -47,7 +47,14 @@ export const VersionInstallButton = ({ }, [installedVersion, version.version]); if (version.version === installedVersion) { - return ; + return ( + + ); } const performInstallation = () => { diff --git a/public/app/features/plugins/admin/components/VersionList.tsx b/public/app/features/plugins/admin/components/VersionList.tsx index 2e79b0d43c1..3e12c7d2441 100644 --- a/public/app/features/plugins/admin/components/VersionList.tsx +++ b/public/app/features/plugins/admin/components/VersionList.tsx @@ -4,6 +4,7 @@ import { useEffect, useState } from 'react'; import { dateTimeFormatTimeAgo, GrafanaTheme2 } from '@grafana/data'; import { config } from '@grafana/runtime'; import { useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { getLatestCompatibleVersion } from '../helpers'; import { Version } from '../types'; @@ -28,7 +29,11 @@ export const VersionList = ({ pluginId, versions = [], installedVersion, disable }, [installedVersion]); if (versions.length === 0) { - return

    No version history was found.

    ; + return ( +

    + No version history was found. +

    + ); } const onInstallClick = () => { @@ -39,10 +44,16 @@ export const VersionList = ({ pluginId, versions = [], installedVersion, disable
Published by + + Published by + + {meta.orgName}
Updated on + + Updated on + + {dateTimeFormat(meta.updatedAt)}
- + - - + + diff --git a/public/app/features/plugins/admin/pages/Browse.tsx b/public/app/features/plugins/admin/pages/Browse.tsx index cf8668a86d5..c6afd06ad5c 100644 --- a/public/app/features/plugins/admin/pages/Browse.tsx +++ b/public/app/features/plugins/admin/pages/Browse.tsx @@ -6,6 +6,7 @@ import { SelectableValue, GrafanaTheme2, PluginType } from '@grafana/data'; import { locationSearchToObject } from '@grafana/runtime'; import { Select, RadioButtonGroup, useStyles2, Tooltip, Field } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; +import { t } from 'app/core/internationalization'; import { getNavModel } from 'app/core/selectors/navModel'; import { ROUTES as CONNECTIONS_ROUTES } from 'app/features/connections/constants'; import { useSelector } from 'app/types'; @@ -95,14 +96,14 @@ export default function Browse() { - + {/* Filter by type */} - +
Version + Version + Last updatedGrafana Dependency + Last updated + + Grafana dependency +
@@ -54,7 +56,13 @@ class UserSessions extends PureComponent { {sessions.map((session: UserSession, index) => ( - {session.isActive ? : } + {session.isActive ? ( + + ) : ( + + )}
Now{session.seenAt} + Now + {session.seenAt}{formatDate(session.createdAt, { dateStyle: 'long' })} {session.clientIp} diff --git a/public/app/features/profile/UserTeams.tsx b/public/app/features/profile/UserTeams.tsx index f95bf1c24e5..9f3010045e1 100644 --- a/public/app/features/profile/UserTeams.tsx +++ b/public/app/features/profile/UserTeams.tsx @@ -1,6 +1,7 @@ import { PureComponent } from 'react'; import { LoadingPlaceholder } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { Team } from 'app/types'; export interface Props { @@ -13,7 +14,7 @@ export class UserTeams extends PureComponent { const { isLoading, teams } = this.props; if (isLoading) { - return ; + return ; } if (teams.length === 0) { @@ -22,14 +23,25 @@ export class UserTeams extends PureComponent { return (
-

Teams

- +

+ Teams +

+
- - + + + diff --git a/public/app/features/query/components/QueryEditorRowHeader.tsx b/public/app/features/query/components/QueryEditorRowHeader.tsx index e37ed72e568..1e129f99805 100644 --- a/public/app/features/query/components/QueryEditorRowHeader.tsx +++ b/public/app/features/query/components/QueryEditorRowHeader.tsx @@ -5,6 +5,7 @@ import { ReactNode, useState } from 'react'; import { DataQuery, DataSourceInstanceSettings, GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { FieldValidationMessage, Icon, Input, useStyles2 } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { DataSourcePicker } from 'app/features/datasources/components/picker/DataSourcePicker'; export interface Props { @@ -90,7 +91,7 @@ export const QueryEditorRowHeader = (props: Props(props: Props{renderExtras()}} - {hidden && Hidden} + {hidden && ( + + Hidden + + )} {collapsedText &&
{collapsedText}
} diff --git a/public/app/features/query/components/QueryGroup.tsx b/public/app/features/query/components/QueryGroup.tsx index 278b05ffb8f..9463937cbe5 100644 --- a/public/app/features/query/components/QueryGroup.tsx +++ b/public/app/features/query/components/QueryGroup.tsx @@ -19,6 +19,7 @@ import { DataQuery } from '@grafana/schema'; import { Button, HorizontalGroup, InlineFormLabel, Modal, ScrollContainer, stylesFactory } from '@grafana/ui'; import { PluginHelp } from 'app/core/components/PluginHelp/PluginHelp'; import config from 'app/core/config'; +import { Trans, t } from 'app/core/internationalization'; import { backendSrv } from 'app/core/services/backend_srv'; import { addQuery, queryIsEmpty } from 'app/core/utils/query'; import { DataSourceModal } from 'app/features/datasources/components/picker/DataSourceModal'; @@ -303,7 +304,7 @@ export class QueryGroup extends PureComponent { variant="secondary" data-testid={selectors.components.QueryTab.addQuery} > - Add query + Add query )} {config.expressionsEnabled && this.isExpressionsSupported(dsSettings) && ( @@ -339,7 +340,11 @@ export class QueryGroup extends PureComponent {
{this.renderQueries(dsSettings)}
{this.renderAddQueryRow(dsSettings, styles)} {isHelpOpen && ( - + )} @@ -409,7 +414,7 @@ export function QueryGroupTopSection({
- Data source + Data source
setIsHelpOpen(true)} data-testid="query-tab-help-button" /> @@ -448,7 +456,7 @@ export function QueryGroupTopSection({ onClick={onOpenQueryInspector} aria-label={selectors.components.QueryTab.queryInspectorButton} > - Query inspector + Query inspector
)} @@ -466,7 +474,11 @@ export function QueryGroupTopSection({ )}
{isHelpOpen && ( - setIsHelpOpen(false)}> + setIsHelpOpen(false)} + > )} diff --git a/public/app/features/query/components/QueryGroupOptions.tsx b/public/app/features/query/components/QueryGroupOptions.tsx index c949e1767b2..3a13aa60ef4 100644 --- a/public/app/features/query/components/QueryGroupOptions.tsx +++ b/public/app/features/query/components/QueryGroupOptions.tsx @@ -4,6 +4,7 @@ import React, { useState, ChangeEvent, FocusEvent, useCallback } from 'react'; import { rangeUtil, PanelData, DataSourceApi, GrafanaTheme2 } from '@grafana/data'; import { Input, InlineSwitch, useStyles2, InlineLabel } from '@grafana/ui'; import { QueryOperationRow } from 'app/core/components/QueryOperationRow/QueryOperationRow'; +import { Trans, t } from 'app/core/internationalization'; import { QueryGroupOptions } from 'app/types'; interface Props { @@ -159,11 +160,14 @@ export const QueryGroupOptionsEditor = React.memo(({ options, dataSource, data, return ( <> - Cache timeout + + Cache timeout + - Cache TTL + + Cache TTL + } > - Max data points + + Max data points + = - Width of panel + + + Width of panel + + )} @@ -246,7 +258,7 @@ export const QueryGroupOptionsEditor = React.memo(({ options, dataSource, data, } htmlFor="min-interval-input" > - Min interval + Min interval } > - Interval + Interval {realInterval} = - Time range / max data points + + + Time range / max data points + + ); }; @@ -299,7 +315,7 @@ export const QueryGroupOptionsEditor = React.memo(({ options, dataSource, data, } > - Relative time + Relative time } > - Time shift + Time shift - Hide time info + Hide time info { const node: NavModelItem = { @@ -18,22 +19,26 @@ export const TestStuffPage = () => { return ( - Application notifications (toasts) testing + + + Application notifications (toasts) testing + + diff --git a/public/app/features/search/page/components/SearchResultsTable.tsx b/public/app/features/search/page/components/SearchResultsTable.tsx index cd6b0564436..6ffd0e76b70 100644 --- a/public/app/features/search/page/components/SearchResultsTable.tsx +++ b/public/app/features/search/page/components/SearchResultsTable.tsx @@ -10,7 +10,7 @@ import { Field, GrafanaTheme2 } from '@grafana/data'; import { TableCellHeight } from '@grafana/schema'; import { useStyles2, useTheme2 } from '@grafana/ui'; import { useTableStyles, TableCell } from '@grafana/ui/internal'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { useCustomFlexLayout } from 'app/features/browse-dashboards/components/customFlexTableLayout'; import { useSearchKeyboardNavigation } from '../../hooks/useSearchKeyboardSelection'; @@ -171,13 +171,17 @@ export const SearchResultsTable = React.memo( if (!rows.length) { return (
- No values + No values
); } return ( -
+
{headerGroups.map((headerGroup) => { const { key, ...headerGroupProps } = headerGroup.getHeaderGroupProps({ style: { width }, diff --git a/public/app/features/search/page/components/columns.tsx b/public/app/features/search/page/components/columns.tsx index 3f982658dd0..6edcbe90745 100644 --- a/public/app/features/search/page/components/columns.tsx +++ b/public/app/features/search/page/components/columns.tsx @@ -13,7 +13,7 @@ import { import { config, getDataSourceSrv } from '@grafana/runtime'; import { Checkbox, Icon, IconName, TagList, Text, Tooltip } from '@grafana/ui'; import appEvents from 'app/core/app_events'; -import { t } from 'app/core/internationalization'; +import { t, Trans } from 'app/core/internationalization'; import { formatDate, formatDuration } from 'app/core/internationalization/dates'; import { PluginIconName } from 'app/features/plugins/admin/types'; import { ShowModalReactEvent } from 'app/types/events'; @@ -280,7 +280,11 @@ export const generateColumns = ( }; columns.push({ - Header: () =>
Score
, + Header: () => ( +
+ Score +
+ ), Cell: (p) => { const { key, ...cellProps } = p.cellProps; return ( diff --git a/public/app/features/support-bundles/SupportBundles.tsx b/public/app/features/support-bundles/SupportBundles.tsx index be9cb8d6c63..d7c02d1d9b6 100644 --- a/public/app/features/support-bundles/SupportBundles.tsx +++ b/public/app/features/support-bundles/SupportBundles.tsx @@ -5,6 +5,7 @@ import { dateTimeFormat } from '@grafana/data'; import { LinkButton, Spinner, IconButton } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { contextSrv } from 'app/core/core'; +import { Trans, t } from 'app/core/internationalization'; import { AccessControlAction, StoreState } from 'app/types'; import { loadBundles, removeBundle, checkBundles } from './state/actions'; @@ -18,7 +19,7 @@ const subTitle = ( const NewBundleButton = ( - New support bundle + New support bundle ); @@ -63,9 +64,15 @@ const SupportBundlesUnconnected = ({ supportBundles, isLoading, loadBundles, rem
- NameEmailMembers + Name + + Email + + Members +
- - - + + + diff --git a/public/app/features/support-bundles/SupportBundlesCreate.tsx b/public/app/features/support-bundles/SupportBundlesCreate.tsx index c26992e8780..002f4554d15 100644 --- a/public/app/features/support-bundles/SupportBundlesCreate.tsx +++ b/public/app/features/support-bundles/SupportBundlesCreate.tsx @@ -4,6 +4,7 @@ import { connect, ConnectedProps } from 'react-redux'; import { Button, Field, Checkbox, LinkButton, Stack, Alert } from '@grafana/ui'; import { Form } from 'app/core/components/Form/Form'; import { Page } from 'app/core/components/Page/Page'; +import { Trans } from 'app/core/internationalization'; import { StoreState } from 'app/types'; import { loadSupportBundleCollectors, createSupportBundle } from './state/actions'; @@ -81,9 +82,11 @@ export const SupportBundlesCreateUnconnected = ({ ); })} - + - Cancel + Cancel diff --git a/public/app/features/trails/RelatedLogs/RelatedLogsScene.tsx b/public/app/features/trails/RelatedLogs/RelatedLogsScene.tsx index e5f28ae9d5f..8ccd6460571 100644 --- a/public/app/features/trails/RelatedLogs/RelatedLogsScene.tsx +++ b/public/app/features/trails/RelatedLogs/RelatedLogsScene.tsx @@ -17,7 +17,7 @@ import { type SceneVariable, } from '@grafana/scenes'; import { Stack, LinkButton } from '@grafana/ui'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { MetricsLogsConnector } from '../Integrations/logs/base'; import { createLabelsCrossReferenceConnector } from '../Integrations/logs/labelsCrossReference'; @@ -170,7 +170,10 @@ export class RelatedLogsScene extends SceneObjectBase { reportExploreMetrics('related_logs_action_clicked', { action: 'open_explore_logs' })} diff --git a/public/app/features/users/TokenRevokedModal.tsx b/public/app/features/users/TokenRevokedModal.tsx index b7c6fdc2c12..a645e4e72a4 100644 --- a/public/app/features/users/TokenRevokedModal.tsx +++ b/public/app/features/users/TokenRevokedModal.tsx @@ -3,7 +3,7 @@ import { css, cx } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { Button, InfoBox, Portal, useStyles2, useTheme2 } from '@grafana/ui'; import { getModalStyles } from '@grafana/ui/internal'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; interface Props { maxConcurrentSessions?: number; @@ -23,7 +23,14 @@ export const TokenRevokedModal = (props: Props) => { return (
- +

Your session token was automatically revoked because you have reached diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json index c265f3d9e97..a3c825b2124 100644 --- a/public/locales/en-US/grafana.json +++ b/public/locales/en-US/grafana.json @@ -34,6 +34,19 @@ "save-button": "Save" } }, + "actions": { + "action-editor": { + "label-headers": "Headers", + "label-url": "URL", + "placeholder-url": "URL" + }, + "params-editor": { + "aria-label-add": "Add", + "aria-label-delete": "Delete", + "placeholder-key": "Key", + "placeholder-value": "Value" + } + }, "admin": { "add-to-org-modal": { "label-organization": "Organization", @@ -870,11 +883,21 @@ } }, "annotations": { + "annotation-field-mapper": { + "annotation": "Annotation", + "first-value": "First value", + "from": "From" + }, "empty-state": { "button-title": "Add annotation query", "info-box-content": "<0>Annotations provide a way to integrate event data into your graphs. They are visualized as vertical lines and icons on all graph panels. When you hover over an annotation icon you can get event text & tags for the event. You can add annotation events directly from grafana by holding CTRL or CMD + click on graph (or drag region). These will be stored in Grafana's annotation database.", "info-box-content-2": "Checkout the <2>Annotations documentation for more information.", "title": "There are no custom annotation queries added yet" + }, + "standard-annotation-query-editor": { + "no-events-found": "No events found", + "test-annotation-query": "Test annotation query", + "title-query-result": "Query result" } }, "api-keys": { @@ -1178,6 +1201,13 @@ "sub-text": "<0>Define text that will describe the correlation.", "title": "Define correlation label (Step 1 of 3)" }, + "configure-correlation-target-form": { + "aria-label-correlation-type": "Correlation type" + }, + "empty-correlations-cta": { + "please-contact-administrator-create-correlations": "Please contact your administrator to create new correlations.", + "there-are-no-correlations-configured-yet": "There are no correlations configured yet." + }, "empty-state": { "button-title": "Add correlation", "pro-tip": "You can also define correlations via datasource provisioning", @@ -1935,6 +1965,141 @@ "message": "No data sources found" } }, + "datasources": { + "alerting-enabled": { + "text-alerting-not-supported": "Alerting not supported", + "text-alerting-supported": "Alerting supported" + }, + "basic-settings": { + "aria-label-datasource-settings-page-basic": "Datasource settings page basic settings", + "basic-settings-name-placeholder-name": "Name", + "label-default": "Default", + "label-name": "Name" + }, + "button-row": { + "delete": "Delete", + "test": "Test" + }, + "cloud-info-box": { + "title-includes-active-metrics-storage": "The free plan includes 10k active metrics and 50gb storage." + }, + "dashboards-table": { + "aria-label-delete-dashboard": "Delete dashboard", + "import": "Import" + }, + "data-source-categories": { + "find-more-data-source-plugins": "Find more data source plugins" + }, + "data-source-load-error": { + "back": "Back", + "delete": "Delete" + }, + "data-source-missing-rights-message": { + "title-missing-rights": "Missing rights" + }, + "data-source-picker": { + "aria-label-select-a-data-source": "Select a data source" + }, + "data-source-plugin-state": { + "plugin-state": "Plugin state" + }, + "data-source-read-only-message": { + "title-provisioned-data-source": "Provisioned data source" + }, + "data-sources-list-card": { + "build-a-dashboard": "Build a dashboard", + "explore": "Explore" + }, + "edit-data-source-actions": { + "build-a-dashboard": "Build a dashboard", + "explore-data": "Explore data" + }, + "footer": { + "add-csv-or-spreadsheet": "Add csv or spreadsheet" + }, + "new-data-source-view": { + "cancel": "Cancel", + "placeholder-filter-by-name-or-type": "Filter by name or type" + } + }, + "dimensions": { + "file-dropzone-custom-children": { + "upload": "Upload" + }, + "file-uploader": { + "preview": { + "label-preview": "Preview" + } + }, + "folder-picker-tab": { + "placeholder-search": "Search" + }, + "resource-dimension-editor": { + "label-field": "Field", + "label-source": "Source" + }, + "resource-picker": { + "render-small-resource-picker": { + "set-icon": "Set icon" + } + }, + "resource-picker-popover": { + "cancel": "Cancel", + "folder": "Folder", + "select": "Select", + "url": "URL" + }, + "scalar-dimension-editor": { + "label-limit": "Limit", + "label-value": "Value" + }, + "scale-dimension-editor": { + "label-max": "Max", + "label-min": "Min", + "label-value": "Value" + }, + "text-dimension-editor": { + "label-field": "Field", + "label-source": "Source", + "label-template": "Template" + }, + "thresholds-editor": { + "add-threshold": "Add threshold", + "description-percentage-means-thresholds-relative": "Percentage means thresholds relative to min & max", + "thresholds-mode": "Thresholds mode" + }, + "urlpicker-tab": { + "label-preview": "Preview" + }, + "value-mapping-edit-row": { + "duplicate-value-mapping-aria-label-duplicate-value-mapping": "Duplicate value mapping", + "duplicate-value-mapping-tooltip-duplicate": "Duplicate", + "placeholder-exact-value-to-match": "Exact value to match", + "placeholder-from": "From", + "placeholder-optional-display-text": "Optional display text", + "placeholder-regular-expression": "Regular expression", + "placeholder-to": "To", + "remove-value-mapping-aria-label-delete-value-mapping": "Delete value mapping", + "remove-value-mapping-tooltip-delete": "Delete", + "set-color": "Set color", + "tooltip-remove-color": "Remove color", + "tooltip-remove-icon": "Remove icon" + }, + "value-mappings-editor": { + "add-value-mappings": "Add value mappings", + "edit-value-mappings": "Edit value mappings", + "title-value-mappings": "Value mappings" + }, + "value-mappings-editor-modal": { + "cancel": "Cancel", + "color": "Color", + "condition": "Condition", + "display-text": "Display text", + "icon": "Icon", + "label-add-a-new-mapping": "Add a new mapping", + "update": "Update" + } + }, "embed": { "share": { "time-range-description": "Change the current relative time range to an absolute time range", @@ -1962,6 +2127,7 @@ "basic-extensions": { "aria-label-add": "Add" }, + "clear": "Clear", "confirm-navigation-modal": { "cancel": "Cancel", "open": "Open", @@ -2235,6 +2401,8 @@ "query-inspector-button": "Query inspector", "query-inspector-button-aria-label": "Query inspector" }, + "show-critical-path-only": "Show critical path only", + "show-matches-only": "Show matches only", "span-bar-section": { "title-span-bar": "Span bar" }, @@ -2374,6 +2542,35 @@ "export-as-json-tooltip": "Export" } }, + "expressions": { + "classic-conditions": { + "label-conditions": "Conditions" + }, + "expression-query-editor": { + "label-operation": "Operation" + }, + "math": { + "available-math-functions": "Available math functions" + }, + "reduce": { + "label-function": "Function", + "label-input": "Input", + "label-mode": "Mode", + "replace-with-number": { + "label-replace-with": "Replace with" + } + }, + "resample": { + "label-downsample": "Downsample", + "label-input": "Input", + "label-resample-to": "Resample to", + "label-upsample": "Upsample", + "tooltip-s-m-h": "10s, 1m, 30m, 1h" + }, + "threshold": { + "label-input": "Input" + } + }, "folder-filter": { "clear-folder-button": "Clear folders" }, @@ -2409,6 +2606,18 @@ "requires-license": "Requires a Grafana Enterprise license", "title": "Enterprise" }, + "gops": { + "config-card": { + "text-loading-configuration": "Loading configuration...." + }, + "configure-irm": { + "configure": "Configure", + "irm-apps": "IRM apps" + }, + "essentials": { + "title-essentials": "Essentials" + } + }, "grafana": { "dashboard": { "edit-pane": { @@ -2767,6 +2976,13 @@ "troubleshooting-help": "To request troubleshooting help, send a snapshot of this panel to Grafana Labs Technical Support. The snapshot contains query response data and panel settings." }, "inspector": { + "inspect-data-tab": { + "no-data": "No data" + }, + "inspect-jsontab": { + "apply": "Apply", + "support": "Support" + }, "query": { "collapse-all": "Collapse all", "copy-to-clipboard": "Copy to clipboard", @@ -2774,6 +2990,29 @@ "expand-all": "Expand all", "no-data": "No request and response collected yet. Hit refresh button", "refresh": "Refresh" + }, + "query-inspector": { + "query-inspector": "Query inspector", + "text-loading-query-inspector": "Loading query inspector..." + } + }, + "invites": { + "invitee-row": { + "aria-label-revoke-invite": "Revoke invite" + }, + "invitees-table": { + "email": "Email", + "name": "Name" + }, + "signup-invited-page": { + "label-email": "Email", + "label-name": "Name", + "label-password": "Password", + "label-username": "Username", + "placeholder-name-optional": "Name (optional)", + "placeholder-password": "Password", + "placeholder-username": "Username", + "sign-up": "Sign up" } }, "ldap-drawer": { @@ -3005,6 +3244,16 @@ "render-image-error-description": "An error occurred when generating the image" } }, + "live": { + "dashboard-changed-modal": { + "continue-editing": "Continue editing", + "discard-local-changes": "Discard local changes", + "title-dashboard-changed": "Dashboard changed" + }, + "live-connection-warning": { + "title-connection-to-server-is-lost": "Connection to server is lost..." + } + }, "lock-icon": "lock icon", "login": { "divider": { @@ -3056,12 +3305,22 @@ "load-older": "Loading older logs...", "older-logs": "Older logs" }, + "log-context-buttons": { + "center-matched-line": "Center matched line", + "label-wrap-lines": "Wrap lines" + }, "log-details": { "fields": "Fields", "links": "Links", "log-line": "Log line", "no-details": "No details available" }, + "log-details-body": { + "toggle-field-button": { + "tooltip-hide-log-line": "Hide log line", + "tooltip-show-log-line": "Show log line" + } + }, "log-line-menu": { "copy-link": "Copy link to log line", "copy-log": "Copy log line", @@ -3070,6 +3329,22 @@ "show-context": "Show context", "unpin-from-outline": "Unpin log" }, + "log-row-context-modal": { + "error-loading-log-more-logs": "Error loading more logs.", + "no-more-logs-available": "No more logs available.", + "open-in-split-view": "Open in split view", + "title-log-context": "Log context" + }, + "log-row-menu-cell": { + "aria-label-copy-shortlink": "Copy shortlink", + "aria-label-pin-line": "Pin line", + "aria-label-show-context": "Show context", + "aria-label-unpin-line": "Unpin line", + "tooltip-copy-shortlink": "Copy shortlink", + "tooltip-copy-to-clipboard": "Copy to clipboard", + "tooltip-show-context": "Show context", + "tooltip-unpin-line": "Unpin line" + }, "log-row-message": { "ellipsis": "… ", "more": "more", @@ -3092,11 +3367,49 @@ "scroll-top": "Scroll to top", "start-of-range": "Start of range" }, + "out-of-range-message": { + "end-of-the-selected-time-range": "End of the selected time range." + }, "popover-menu": { "copy": "Copy selection", "disable-menu": "Disable menu", "line-contains": "Add as line contains filter", "line-contains-not": "Add as line does not contain filter" + }, + "un-themed-log-details": { + "aria-label-data-links": "Data links", + "aria-label-fields": "Fields", + "aria-label-log-level": "Log level", + "aria-label-no-details": "No details" + }, + "un-themed-log-details-row": { + "title-copy-value-to-clipboard": "Copy value to clipboard", + "toggle-field-button": { + "tooltip-field-instead-message": "Show this field instead of the message", + "tooltip-hide-this-field": "Hide this field" + }, + "tooltip-adhoc-statistics": "Ad-hoc statistics", + "tooltip-hide-adhoc-statistics": "Hide ad-hoc statistics" + } + }, + "manage-dashboards": { + "import-dashboard-form": { + "cancel": "Cancel", + "change-uid": "Change uid", + "description-library-panels-imported": "List of new library panels that will get imported.", + "label-existing-library-panels": "Existing library panels", + "label-folder": "Folder", + "label-name": "Name", + "label-new-library-panels": "New library panels", + "label-unique-identifier-uid": "Unique identifier (UID)", + "options": "Options" + }, + "import-dashboard-overview-un-connected": { + "published-by": "Published by", + "updated-on": "Updated on" + }, + "snapshot-list-table": { + "title-delete": "Delete" } }, "migrate-to-cloud": { @@ -3159,6 +3472,9 @@ "error": "There was an error disconnecting", "title": "Disconnect from cloud stack" }, + "folder-info": { + "unable-to-load-folder": "Unable to load folder" + }, "get-started": { "body": "The migration process must be started from your self-managed Grafana instance.", "configure-pdc-link": "Configure PDC for this stack", @@ -3712,6 +4028,9 @@ "title": "You're all caught up!" }, "starred-dashboard": "Dashboard starred", + "stored-notifications": { + "dismiss-notifications": "Dismiss notifications" + }, "unstarred-dashboard": "Dashboard unstarred" }, "oauth": { @@ -3767,6 +4086,25 @@ "show-legend": "Show legend", "unlink-library-panel": "Unlink library panel", "view": "View" + }, + "panel-data-error-view": { + "open-visualization-suggestions": "Open visualization suggestions", + "switch-to-table": "Switch to table" + }, + "panel-renderer": { + "loading-plugin-panel": "Loading plugin panel...", + "no-panel-data": "No panel data" + }, + "panel-type-card": { + "aria-label-delete-button-on-panel-type-card": "Delete button on panel type card", + "tooltip-delete": "Delete" + }, + "visualization-suggestions": { + "based-on-current-data": "Based on current data", + "no-results-matched-your-query": "No results matched your query" + }, + "viz-type-picker": { + "could-anything-matching-query": "Could not find anything matching your query" } }, "panel-search": { @@ -3838,6 +4176,37 @@ } }, "plugins": { + "angular-deprecation-notice": { + "deprecation-notice-migration-advice": "Read our deprecation notice and migration advice.", + "try-migration": "Try migration" + }, + "angular-deprecation-plugin-notice": { + "deprecation-notice-migration-advice": "Read our deprecation notice and migration advice.", + "title-angular-plugin": "Angular plugin", + "view-plugin-details": "View plugin details" + }, + "angular-migration-notice": { + "report-issue": "Report issue", + "revert-migration": "Revert migration" + }, + "app-config-ctrl-wrapper": { + "disable": "Disable", + "enable": "Enable", + "update": "Update" + }, + "app-root-page": { + "access-denied": { + "permission": "You do not have permission to see this page.", + "title-access-denied": "Access denied" + }, + "no-root-app-page-component-found": "No root app page component found" + }, + "browse": { + "aria-label-plugin-type-filter": "Plugin type filter", + "label-search": "Search", + "label-state": "State", + "label-type": "Type" + }, "catalog": { "no-updates-available": "No updates available", "update-all": { @@ -3918,9 +4287,83 @@ "sort-list": "Sort Plugins List", "state": "State" }, + "get-started-with-app": { + "disable": "Disable", + "enable": "Enable" + }, + "get-started-with-data-source": { + "add-new-data-source": "Add new data source" + }, + "install-controls-warning": { + "learn-more": "Learn more", + "no-valid-grafana-enterprise-license-detected": "No valid Grafana Enterprise license detected.", + "title-plugin-doesnt-support-version-grafana": "This plugin doesn't support your version of Grafana.", + "title-renderer-plugins-cannot-managed-plugin-catalog": "Renderer plugins cannot be managed by the Plugin Catalog." + }, + "log-view-filters": { + "label-extension": "Extension", + "label-plugin-id": "Plugin Id", + "label-severity": "Severity" + }, + "not-found-plugin": { + "title-plugin-not-found": "Plugin not found" + }, + "plugin-actions": { + "refresh-changes": "Refresh the page to see the changes" + }, + "plugin-dashboards": { + "dashboards-included-plugin": "No dashboards are included with this plugin", + "loading": "Loading..." + }, + "plugin-deprecated-badge": { + "text-deprecated": "Deprecated", + "tooltip-plugin-deprecated-longer-receives-updates": "This plugin is deprecated and no longer receives updates." + }, + "plugin-details-body": { + "page-not-found": "Page not found." + }, + "plugin-details-deprecated-warning": { + "title-deprecated": "Deprecated" + }, + "plugin-details-signature": { + "read-more-about-plugins-signing": "Read more about plugins signing.", + "title-invalid-plugin-signature": "Invalid plugin signature" + }, + "plugin-disabled-badge": { + "text-disabled": "Disabled" + }, + "plugin-enterprise-badge": { + "aria-label-enterprise": "Enterprise", + "text-enterprise": "Enterprise", + "title-requires-a-grafana-enterprise-license": "Requires a Grafana Enterprise license" + }, "plugin-help": { "error": "An error occurred when loading help.", "not-found": "No query help could be found." + }, + "plugin-installed-badge": { + "text-installed": "Installed" + }, + "plugin-signature-details-badge": { + "signed-by": "Signed by: {{signatureOrg}}" + }, + "plugin-update-available-badge": { + "update-available": "Update available!" + }, + "plugin-usage": { + "title-missing-feature-toggle-panel-title-search": "Missing feature toggle: {{toggle}}" + }, + "search-field": { + "placeholder-search-grafana-plugins": "Search Grafana plugins" + }, + "version-install-button": { + "text-installed": "Installed" + }, + "version-list": { + "grafana-dependency": "Grafana dependency", + "last-updated": "Last updated", + "no-version-history-was-found": "No version history was found.", + "version": "Version" } }, "profile": { @@ -3939,7 +4382,22 @@ "passwords-must-match": "Passwords must match", "strong-password-validation-register": "Password does not comply with the strong password policy" }, - "change-theme": "Change theme" + "change-theme": "Change theme", + "user-organizations": { + "text-loading-organizations": "Loading organizations..." + }, + "user-sessions": { + "now": "Now", + "sessions": "Sessions" + }, + "user-teams": { + "aria-label-user-teams-table": "User teams table", + "email": "Email", + "members": "Members", + "name": "Name", + "teams": "Teams", + "text-loading-teams": "Loading teams..." + } }, "public-dashboard": { "acknowledgment-checkboxes": { @@ -4128,6 +4586,43 @@ "role-label": "Role" } }, + "query": { + "query-editor-row-header": { + "hidden": "Hidden", + "query-name-div-title-edit-query-name": "Edit query name" + }, + "query-group": { + "add-query": "Add query", + "title-data-source-help": "Data source help" + }, + "query-group-options-editor": { + "hide-time-info": "Hide time info", + "Query options-title-query-options": "Query options", + "relative-time": "Relative time", + "render-cache-timeout-option": { + "cache-timeout": "Cache timeout" + }, + "render-interval-option": { + "interval": "Interval", + "min-interval": "Min interval", + "time-range-max-data-points": "Time range / max data points" + }, + "render-max-data-points-option": { + "max-data-points": "Max data points", + "width-of-panel": "Width of panel" + }, + "render-query-caching-ttloption": { + "cache-ttl": "Cache TTL" + }, + "time-shift": "Time shift" + }, + "query-group-top-section": { + "data-source": "Data source", + "query-inspector": "Query inspector", + "query-tab-help-button-title-open-data-source-help": "Open data source help", + "title-data-source-help": "Data source help" + } + }, "query-operation": { "header": { "collapse-row": "Collapse query row", @@ -4237,6 +4732,14 @@ "reload-button": "Reload", "title": "Unable to find application file" }, + "sandbox": { + "test-stuff-page": { + "application-notifications-toasts-testing": "Application notifications (toasts) testing", + "error": "Error", + "success": "Success", + "warning": "Warning" + } + }, "save-dashboards": { "message-length": { "info": "The message is {{messageLength}} characters, which exceeds the maximum length of 500 characters. Please shorten it before saving.", @@ -4299,6 +4802,9 @@ "new-dashboard": "New dashboard", "new-folder": "New folder" }, + "generate-columns": { + "score": "Score" + }, "results-table": { "datasource-header": "Data source", "deleted-less-than-1-min": "< 1 min", @@ -4313,6 +4819,10 @@ "search-input": { "include-panels-placeholder": "Search for dashboards, folders, and panels", "placeholder": "Search for dashboards and folders" + }, + "search-results-table": { + "aria-label-search-results-table": "Search results table", + "no-data": "No values" } }, "select": { @@ -4663,6 +5173,22 @@ "url-column-header": "Snapshot url", "view-button": "View" }, + "support-bundles": { + "new-bundle-button": { + "new-support-bundle": "New support bundle" + }, + "support-bundles-create-unconnected": { + "cancel": "Cancel", + "create": "Create" + }, + "support-bundles-unconnected": { + "created-on": "Created on", + "download": "Download", + "expires": "Expires", + "requested-by": "Requested by", + "tooltip-remove-bundle": "Remove bundle" + } + }, "table": { "container": { "content": "Showing too many columns in a single table may impact performance and make data harder to read. Consider refining your queries.", @@ -4868,6 +5394,9 @@ "recent-metrics": { "or-view-a-recent-exploration": "Or view a recent exploration" }, + "related-logs-scene": { + "tooltip-navigate-to-the-explore-logs-app": "Navigate to the Explore Logs app" + }, "settings": { "always-keep-selected-metric-graph-in-view": "Always keep selected metric graph in-view", "show-previews-of-metric-graphs": "Show previews of metric graphs" @@ -5155,7 +5684,8 @@ "message": "No users found" }, "token-revoked-modal": { - "sign-in": "Sign in" + "sign-in": "Sign in", + "title-you-have-been-automatically-signed-out": "You have been automatically signed out" }, "users-action-bar-unconnected": { "invite": "Invite",

Created onRequested byExpires + Created on + + Requested by + + Expires + @@ -85,7 +92,7 @@ const SupportBundlesUnconnected = ({ supportBundles, isLoading, loadBundles, rem target={'_self'} href={`/api/support-bundles/${bundle.uid}`} > - Download + Download @@ -94,7 +101,7 @@ const SupportBundlesUnconnected = ({ supportBundles, isLoading, loadBundles, rem onClick={() => removeBundle(bundle.uid)} name="trash-alt" variant="destructive" - tooltip="Remove bundle" + tooltip={t('support-bundles.support-bundles-unconnected.tooltip-remove-bundle', 'Remove bundle')} /> )}