From 0bedd578123c384c8a0a7cb684ff43dea0a3900c Mon Sep 17 00:00:00 2001 From: Ashley Harrison Date: Mon, 24 Mar 2025 11:41:45 +0000 Subject: [PATCH] Chore: Auto mark up some more areas for translations (#102479) * markup api-keys * markup auth-config * auto markup connections * markup explore * translation extractions * fix unit tests --- .betterer.results | 304 +++--------------- .../features/api-keys/ApiKeysActionBar.tsx | 7 +- public/app/features/api-keys/ApiKeysPage.tsx | 20 +- public/app/features/api-keys/ApiKeysTable.tsx | 23 +- .../api-keys/MigrateToServiceAccountsCard.tsx | 30 +- .../app/features/auth-config/AuthDrawer.tsx | 20 +- .../auth-config/AuthProvidersListPage.tsx | 3 +- .../auth-config/ProviderConfigForm.tsx | 22 +- .../components/ConfigureAuthCTA.tsx | 13 +- .../components/ServerDiscoveryModal.tsx | 16 +- .../ConnectionsRedirectNotice.tsx | 13 +- .../NoAccessModal/NoAccessModal.tsx | 11 +- .../tabs/ConnectData/Search/Search.tsx | 2 +- .../ContentOutlineItemButton.tsx | 6 +- .../explore/CorrelationEditorModeBar.tsx | 5 +- .../features/explore/CorrelationHelper.tsx | 16 +- .../CorrelationTransformationAddModal.tsx | 23 +- .../CorrelationUnsavedChangesModal.tsx | 9 +- public/app/features/explore/Explore.tsx | 45 ++- .../explore/ExploreRunQueryButton.tsx | 9 +- .../app/features/explore/ExploreToolbar.tsx | 4 +- .../app/features/explore/LiveTailButton.tsx | 24 +- public/app/features/explore/Logs/LiveLogs.tsx | 5 +- public/app/features/explore/Logs/Logs.tsx | 38 ++- .../features/explore/Logs/LogsContainer.tsx | 3 +- .../app/features/explore/Logs/LogsMetaRow.tsx | 8 +- .../features/explore/Logs/LogsSamplePanel.tsx | 22 +- .../explore/Logs/LogsTableEmptyFields.tsx | 7 +- .../explore/Logs/LogsTableMultiSelect.tsx | 5 +- .../explore/Logs/LogsTableNavField.tsx | 5 +- .../features/explore/Logs/LogsTableWrap.tsx | 8 +- .../explore/Logs/LogsVolumePanelList.tsx | 32 +- .../explore/NoDataSourceCallToAction.tsx | 12 +- .../PrometheusListView/RawListItem.tsx | 3 +- .../explore/SupplementaryResultError.tsx | 3 +- .../explore/TraceView/TraceView.test.tsx | 8 +- .../features/explore/TraceView/TraceView.tsx | 5 +- .../TraceView/TraceViewContainer.test.tsx | 4 +- .../explore/TraceView/TraceViewContainer.tsx | 3 +- .../Actions/TracePageActions.tsx | 8 +- .../SearchBar/NextPrevResult.tsx | 9 +- .../SpanFilters/SpanFilters.tsx | 32 +- .../SpanFilters/SpanFiltersTags.tsx | 23 +- .../SpanGraph/ViewingLayer.tsx | 3 +- .../SpanDetail/AccordianReferences.tsx | 5 +- .../SpanDetail/SpanFlameGraph.tsx | 5 +- .../SpanDetail/index.test.tsx | 4 +- .../TraceTimelineViewer/SpanDetail/index.tsx | 13 +- .../TimelineCollapser.test.tsx | 4 +- .../TimelineHeaderRow/TimelineCollapser.tsx | 21 +- .../TimelineHeaderRow.test.tsx | 4 +- .../VirtualizedTraceView.tsx | 3 +- .../TraceTimelineViewer/index.test.tsx | 4 +- .../components/common/SearchBarInput.tsx | 13 +- .../components/settings/SpanBarSettings.tsx | 16 +- .../demo/DraggableManagerDemo.tsx | 20 +- .../explore/TraceView/createSpanLink.tsx | 28 +- .../extensions/ConfirmNavigationModal.tsx | 7 +- .../extensions/toolbar/BasicExtensions.tsx | 8 +- .../toolbar/QuerylessAppsExtensions.tsx | 3 +- .../features/explore/spec/helper/setup.tsx | 3 +- public/locales/en-US/grafana.json | 299 +++++++++++++++++ 62 files changed, 884 insertions(+), 447 deletions(-) diff --git a/.betterer.results b/.betterer.results index 053ef6bfd02..b93947f59dd 100644 --- a/.betterer.results +++ b/.betterer.results @@ -2521,74 +2521,33 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "1"], [0, 0, 0, "Unexpected any. Specify a different type.", "2"] ], - "public/app/features/api-keys/ApiKeysActionBar.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/api-keys/ApiKeysPage.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 ", "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"] - ], - "public/app/features/api-keys/ApiKeysTable.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, "No untranslated strings. Wrap text with ", "5"] - ], - "public/app/features/api-keys/MigrateToServiceAccountsCard.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. Wrap text with ", "6"], [0, 0, 0, "No untranslated strings. Wrap text with ", "7"] ], + "public/app/features/api-keys/MigrateToServiceAccountsCard.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/auth-config/AuthDrawer.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 ", "6"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/auth-config/AuthProvidersListPage.tsx:5381": [ [0, 0, 0, "\'@grafana/data/src/types/config\' import is restricted from being used by a pattern. Import from the public export instead.", "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/auth-config/ProviderConfigForm.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. Wrap text with ", "6"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "7"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "8"] - ], - "public/app/features/auth-config/components/ConfigureAuthCTA.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/auth-config/components/ServerDiscoveryModal.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 ", "1"] ], "public/app/features/auth-config/fields.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], @@ -2631,9 +2590,7 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.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/connections/components/ConnectionsRedirectNotice/index.ts:5381": [ [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"] @@ -2661,16 +2618,13 @@ exports[`better eslint`] = { "public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.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 ", "2"] ], "public/app/features/connections/tabs/ConnectData/NoAccessModal/index.tsx:5381": [ [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"] ], "public/app/features/connections/tabs/ConnectData/Search/Search.tsx:5381": [ - [0, 0, 0, "Do not use the t() function outside of a component or function", "0"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "1"] + [0, 0, 0, "Do not use the t() function outside of a component or function", "0"] ], "public/app/features/connections/tabs/ConnectData/Search/index.tsx:5381": [ [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"] @@ -3926,98 +3880,41 @@ exports[`better eslint`] = { "public/app/features/dimensions/utils.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], - "public/app/features/explore/ContentOutline/ContentOutlineItemButton.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/explore/CorrelationEditorModeBar.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/explore/CorrelationHelper.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. 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 ", "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"] ], "public/app/features/explore/CorrelationTransformationAddModal.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 ", "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 ", "1"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/explore/CorrelationUnsavedChangesModal.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/explore/Explore.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()", "0"] ], "public/app/features/explore/ExploreRunQueryButton.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/explore/ExploreToolbar.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/explore/FeatureTogglePage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/explore/LiveTailButton.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/explore/Logs/LiveLogs.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/explore/Logs/Logs.test.tsx:5381": [ [0, 0, 0, "\'@grafana/data/src/transformations/transformers/organize\' import is restricted from being used by a pattern. Import from the public export instead.", "0"] ], "public/app/features/explore/Logs/Logs.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. Wrap text with ", "9"], - [0, 0, 0, "Unexpected any. Specify a different type.", "10"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], + [0, 0, 0, "Unexpected any. Specify a different type.", "2"] ], "public/app/features/explore/Logs/LogsColumnSearch.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], - "public/app/features/explore/Logs/LogsContainer.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/explore/Logs/LogsFeedback.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"] @@ -4025,19 +3922,8 @@ exports[`better eslint`] = { "public/app/features/explore/Logs/LogsMetaRow.test.tsx:5381": [ [0, 0, 0, "\'@grafana/data/src/transformations/transformers/organize\' import is restricted from being used by a pattern. Import from the public export instead.", "0"] ], - "public/app/features/explore/Logs/LogsMetaRow.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"] - ], "public/app/features/explore/Logs/LogsSamplePanel.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"] ], "public/app/features/explore/Logs/LogsTable.test.tsx:5381": [ [0, 0, 0, "\'@grafana/data/src/transformations/transformers/organize\' import is restricted from being used by a pattern. Import from the public export instead.", "0"] @@ -4045,43 +3931,24 @@ exports[`better eslint`] = { "public/app/features/explore/Logs/LogsTableAvailableFields.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] ], - "public/app/features/explore/Logs/LogsTableEmptyFields.tsx:5381": [ + "public/app/features/explore/Logs/LogsTableMultiSelect.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/explore/Logs/LogsTableMultiSelect.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/explore/Logs/LogsTableNavField.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 ", "0"] ], "public/app/features/explore/Logs/LogsTableWrap.test.tsx:5381": [ [0, 0, 0, "\'@grafana/data/src/transformations/transformers/organize\' import is restricted from being used by a pattern. Import from the public export instead.", "0"] ], "public/app/features/explore/Logs/LogsTableWrap.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/explore/Logs/LogsVolumePanelList.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. 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/explore/MetaInfoText.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/explore/NoDataSourceCallToAction.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/explore/NodeGraph/NodeGraphContainer.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"] @@ -4092,8 +3959,7 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/explore/PrometheusListView/RawListItem.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/explore/PrometheusListView/RawListItemAttributes.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], @@ -4113,21 +3979,12 @@ exports[`better eslint`] = { "public/app/features/explore/ShortLinkButtonMenu.tsx:5381": [ [0, 0, 0, "Do not use the t() function outside of a component or function", "0"] ], - "public/app/features/explore/SupplementaryResultError.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], "public/app/features/explore/TraceView/TraceView.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. Wrap text with ", "2"] - ], - "public/app/features/explore/TraceView/TraceViewContainer.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] + [0, 0, 0, "Do not use any type assertions.", "1"] ], "public/app/features/explore/TraceView/components/TracePageHeader/Actions/TracePageActions.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 in text props. Wrap text with or use t()", "0"] ], "public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], @@ -4135,10 +3992,7 @@ exports[`better eslint`] = { [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 ", "7"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "8"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] ], "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"], @@ -4154,35 +4008,7 @@ exports[`better eslint`] = { [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 in text props. Wrap text with or use t()", "12"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "13"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "14"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "15"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "16"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "17"] - ], - "public/app/features/explore/TraceView/components/TracePageHeader/SpanFilters/SpanFiltersTags.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"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "10"] - ], - "public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] ], "public/app/features/explore/TraceView/components/TracePageHeader/TracePageHeader.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"], @@ -4206,43 +4032,20 @@ exports[`better eslint`] = { "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianReferences.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 ", "2"] ], "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/AccordianText.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/SpanFlameGraph.tsx:5381": [ - [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] - ], - "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.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"] - ], - "public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.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/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineHeaderRow.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/index.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./TimelineHeaderRow\`)", "0"] ], - "public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/explore/TraceView/components/TraceTimelineViewer/utils.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`../utils/date\`)", "0"] ], - "public/app/features/explore/TraceView/components/common/SearchBarInput.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/explore/TraceView/components/demo/trace-generators.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], @@ -4280,13 +4083,7 @@ exports[`better eslint`] = { "public/app/features/explore/TraceView/components/settings/SpanBarSettings.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()", "2"] ], "public/app/features/explore/TraceView/components/types/index.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`../settings/SpanBarSettings\`)", "0"], @@ -4298,11 +4095,7 @@ exports[`better eslint`] = { "public/app/features/explore/TraceView/components/utils/DraggableManager/demo/DraggableManagerDemo.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 ", "6"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/explore/TraceView/components/utils/DraggableManager/demo/index.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./DraggableManagerDemo\`)", "0"] @@ -4314,31 +4107,18 @@ exports[`better eslint`] = { ], "public/app/features/explore/TraceView/createSpanLink.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, "Do not use any type assertions.", "1"] ], "public/app/features/explore/extensions/ConfirmNavigationModal.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/explore/extensions/toolbar/BasicExtensions.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/explore/extensions/toolbar/QuerylessAppsExtensions.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/explore/hooks/useStateSync/index.ts:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./external.utils\`)", "0"] ], "public/app/features/explore/spec/helper/setup.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"], - [0, 0, 0, "Unexpected any. Specify a different type.", "3"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], + [0, 0, 0, "Unexpected any. Specify a different type.", "2"] ], "public/app/features/explore/state/main.test.ts:5381": [ [0, 0, 0, "\'@grafana/data/src/utils/url\' import is restricted from being used by a pattern. Import from the public export instead.", "0"] diff --git a/public/app/features/api-keys/ApiKeysActionBar.tsx b/public/app/features/api-keys/ApiKeysActionBar.tsx index e5edff671ac..ffae1b7cbc7 100644 --- a/public/app/features/api-keys/ApiKeysActionBar.tsx +++ b/public/app/features/api-keys/ApiKeysActionBar.tsx @@ -1,4 +1,5 @@ import { FilterInput, InlineField } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; interface Props { searchQuery: string; @@ -10,7 +11,11 @@ export const ApiKeysActionBar = ({ searchQuery, disabled, onSearchChange }: Prop return (
- +
); diff --git a/public/app/features/api-keys/ApiKeysPage.tsx b/public/app/features/api-keys/ApiKeysPage.tsx index 1f3e769e86b..28cc53bca23 100644 --- a/public/app/features/api-keys/ApiKeysPage.tsx +++ b/public/app/features/api-keys/ApiKeysPage.tsx @@ -6,7 +6,7 @@ import { connect, ConnectedProps } from 'react-redux'; import { InlineField, InlineSwitch, Modal, Button, EmptyState } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { contextSrv } from 'app/core/core'; -import { t } from 'app/core/internationalization'; +import { t, Trans } from 'app/core/internationalization'; import { getTimeZone } from 'app/features/profile/state/selectors'; import { AccessControlAction, ApiKey, ApikeyMigrationResult, StoreState } from 'app/types'; @@ -127,7 +127,10 @@ export class ApiKeysPageUnconnected extends PureComponent { onSearchChange={this.onSearchQueryChange} /> ) : null} - + {apiKeys.length > 0 ? ( @@ -175,10 +178,17 @@ const styles: { [key: string]: React.CSSProperties } = { export const MigrationSummary: React.FC = ({ visible, data, onDismiss }) => { return ( - + {data.failedApikeyIDs.length === 0 && (
-

Migration Successful!

+

+ Migration Successful! +

Total: {data.total} @@ -220,7 +230,7 @@ export const MigrationSummary: React.FC = ({ visible, dat )} diff --git a/public/app/features/api-keys/ApiKeysTable.tsx b/public/app/features/api-keys/ApiKeysTable.tsx index f695fe5d4e1..983903d9c15 100644 --- a/public/app/features/api-keys/ApiKeysTable.tsx +++ b/public/app/features/api-keys/ApiKeysTable.tsx @@ -3,6 +3,7 @@ import { css } from '@emotion/css'; import { dateTimeFormat, GrafanaTheme2, TimeZone } from '@grafana/data'; import { Button, DeleteButton, Icon, Stack, Tooltip, useTheme2 } from '@grafana/ui'; import { contextSrv } from 'app/core/core'; +import { Trans, t } from 'app/core/internationalization'; import { AccessControlAction } from 'app/types'; import { ApiKey } from '../../types'; @@ -22,10 +23,18 @@ export const ApiKeysTable = ({ apiKeys, timeZone, onDelete, onMigrate }: Props) - - - - + + + + @@ -51,10 +60,12 @@ export const ApiKeysTable = ({ apiKeys, timeZone, onDelete, onMigrate }: Props)
NameRoleExpiresLast used at + Name + + Role + + Expires + + Last used at +
onDelete(key)} disabled={!contextSrv.hasPermissionInMetadata(AccessControlAction.ActionAPIKeysDelete, key)} diff --git a/public/app/features/api-keys/MigrateToServiceAccountsCard.tsx b/public/app/features/api-keys/MigrateToServiceAccountsCard.tsx index 87ff5e72ed4..aa9f20fa292 100644 --- a/public/app/features/api-keys/MigrateToServiceAccountsCard.tsx +++ b/public/app/features/api-keys/MigrateToServiceAccountsCard.tsx @@ -3,6 +3,7 @@ import { useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Alert, Button, ConfirmModal, useStyles2 } from '@grafana/ui'; +import { Trans, t } from 'app/core/internationalization'; interface Props { onMigrate: () => void; @@ -21,15 +22,29 @@ export const MigrateToServiceAccountsCard = ({ onMigrate, apikeysCount, disabled target="_blank" rel="noopener noreferrer" > - Find out more about the migration here. + + Find out more about the migration here. + ); - const migrationBoxDesc = Migrating all API keys will hide the API keys tab.; + const migrationBoxDesc = ( + + + Migrating all API keys will hide the API keys tab. + + + ); return ( <> {apikeysCount > 0 && ( - +
API keys are deprecated and will be removed from Grafana on Jan 31, 2025. Each API key will be migrated into a service account with a token and will continue to work as they were. We encourage you to migrate your API @@ -37,7 +52,9 @@ export const MigrateToServiceAccountsCard = ({ onMigrate, apikeysCount, disabled
- +
No API keys were found. If you reload the browser, this page will not be available anymore.
diff --git a/public/app/features/auth-config/AuthDrawer.tsx b/public/app/features/auth-config/AuthDrawer.tsx index a9530e92d9f..b98e59855dd 100644 --- a/public/app/features/auth-config/AuthDrawer.tsx +++ b/public/app/features/auth-config/AuthDrawer.tsx @@ -5,6 +5,7 @@ import { connect, ConnectedProps } from 'react-redux'; import { GrafanaTheme2 } from '@grafana/data'; import { Button, Drawer, Text, TextLink, Switch, useStyles2 } from '@grafana/ui'; import { useAppNotification } from 'app/core/copy/appNotification'; +import { t, Trans } from 'app/core/internationalization'; import { StoreState } from 'app/types'; import { loadSettings, saveSettings } from './state/actions'; @@ -84,10 +85,21 @@ export const AuthDrawerUnconnected = ({ const styles = useStyles2(getStyles); return ( - +
- Advanced Auth - Enable insecure email lookup + + Advanced Auth + + + + Enable insecure email lookup + + Allow users to use the same email address to log into Grafana with different identity providers. @@ -100,7 +112,7 @@ export const AuthDrawerUnconnected = ({ onClick={resetButtonOnClick} tooltip="This action will disregard any saved changes and load the configuration from the configuration file." > - Reset + Reset ); diff --git a/public/app/features/auth-config/AuthProvidersListPage.tsx b/public/app/features/auth-config/AuthProvidersListPage.tsx index 717906f0f3a..46909ed9397 100644 --- a/public/app/features/auth-config/AuthProvidersListPage.tsx +++ b/public/app/features/auth-config/AuthProvidersListPage.tsx @@ -6,6 +6,7 @@ import { reportInteraction } from '@grafana/runtime'; import { Grid, TextLink, ToolbarButton } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import { config } from 'app/core/config'; +import { Trans } from 'app/core/internationalization'; import { StoreState } from 'app/types'; import AuthDrawer from './AuthDrawer'; @@ -95,7 +96,7 @@ export const AuthConfigPageUnconnected = ({ actions={ config.buildInfo.edition !== GrafanaEdition.OpenSource && ( setShowDrawer(true)}> - Auth settings + Auth settings ) } diff --git a/public/app/features/auth-config/ProviderConfigForm.tsx b/public/app/features/auth-config/ProviderConfigForm.tsx index 0fb3567a16b..cc6372500b8 100644 --- a/public/app/features/auth-config/ProviderConfigForm.tsx +++ b/public/app/features/auth-config/ProviderConfigForm.tsx @@ -16,6 +16,7 @@ import { Stack, Switch, } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { FormPrompt } from '../../core/components/FormPrompt/FormPrompt'; import { Page } from '../../core/components/Page/Page'; @@ -54,7 +55,10 @@ export const ProviderConfigForm = ({ config, provider, isLoading }: ProviderConf const additionalActionsMenu = ( { setResetConfig(true); @@ -163,7 +167,7 @@ export const ProviderConfigForm = ({ config, provider, isLoading }: ProviderConf reset(); }} /> -
diff --git a/public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.tsx b/public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.tsx index 2fc70dea167..3eec720cc67 100644 --- a/public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.tsx +++ b/public/app/features/connections/tabs/ConnectData/NoAccessModal/NoAccessModal.tsx @@ -2,6 +2,7 @@ import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2, Modal, Icon, Button } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { type CardGridItem } from '../CardGrid'; @@ -92,11 +93,17 @@ export function NoAccessModal({ item, isOpen, onDismiss }: NoAccessModalProps) { Editors cannot add new connections. You may check to see if it is already configured in{' '} Data sources.

-

To add a new connection, contact your Grafana admin.

+

+ + To add a new connection, contact your Grafana admin. + +

- +
diff --git a/public/app/features/connections/tabs/ConnectData/Search/Search.tsx b/public/app/features/connections/tabs/ConnectData/Search/Search.tsx index ce5f25a538f..448abbc70dc 100644 --- a/public/app/features/connections/tabs/ConnectData/Search/Search.tsx +++ b/public/app/features/connections/tabs/ConnectData/Search/Search.tsx @@ -37,7 +37,7 @@ export const Search = ({ onChange, value }: Props) => { onChange={onChange} prefix={} placeholder={placeholder} - aria-label="Search all" + aria-label={t('connections.search.aria-label-search-all', 'Search all')} /> ); diff --git a/public/app/features/explore/ContentOutline/ContentOutlineItemButton.tsx b/public/app/features/explore/ContentOutline/ContentOutlineItemButton.tsx index 1610ff0152d..ad39f27c077 100644 --- a/public/app/features/explore/ContentOutline/ContentOutlineItemButton.tsx +++ b/public/app/features/explore/ContentOutline/ContentOutlineItemButton.tsx @@ -5,6 +5,7 @@ import * as React from 'react'; import { IconName, isIconName, GrafanaTheme2 } from '@grafana/data'; import { Button, Icon, Tooltip, useTheme2 } from '@grafana/ui'; import { TooltipPlacement } from '@grafana/ui/internal'; +import { t } from 'app/core/internationalization'; type CommonProps = { contentOutlineExpanded?: boolean; @@ -64,7 +65,10 @@ export function ContentOutlineItemButton({
diff --git a/public/app/features/explore/CorrelationHelper.tsx b/public/app/features/explore/CorrelationHelper.tsx index 14bcd722857..b71aa6b3e18 100644 --- a/public/app/features/explore/CorrelationHelper.tsx +++ b/public/app/features/explore/CorrelationHelper.tsx @@ -18,6 +18,7 @@ import { Icon, Stack, } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { useDispatch, useSelector } from 'app/types'; import { getTransformationVars } from '../correlations/transformations'; @@ -156,7 +157,7 @@ export const CorrelationHelper = ({ exploreId, correlations }: Props) => { } /> )} - + The correlation link will appear by the {correlations.resultField} field. You can use the following variables to set up your correlations:
@@ -179,7 +180,7 @@ export const CorrelationHelper = ({ exploreId, correlations }: Props) => {
             
           }
         >
-          
+          
              {
               }}
             />
           
-          
+          
             
           
         
@@ -217,7 +218,7 @@ export const CorrelationHelper = ({ exploreId, correlations }: Props) => {
             }}
             className={styles.transformationAction}
           >
-            Add transformation
+            Add transformation
           
           {transformations.map((transformation, i) => {
             const { type, field, expression, mapValue } = transformation;
@@ -241,14 +242,17 @@ export const CorrelationHelper = ({ exploreId, correlations }: Props) => {
                    {
                       setTransformationIdxToEdit(i);
                       setShowTransformationAddModal(true);
                     }}
                   />
                    setTransformations(transformations.filter((_, idx) => i !== idx))}
                     closeOnConfirm
                   />
diff --git a/public/app/features/explore/CorrelationTransformationAddModal.tsx b/public/app/features/explore/CorrelationTransformationAddModal.tsx
index fe555e26274..ab70ddb9743 100644
--- a/public/app/features/explore/CorrelationTransformationAddModal.tsx
+++ b/public/app/features/explore/CorrelationTransformationAddModal.tsx
@@ -5,6 +5,7 @@ import { useForm, Controller } from 'react-hook-form';
 
 import { DataLinkTransformationConfig, ScopedVars } from '@grafana/data';
 import { Button, Field, Icon, Input, Label, Modal, Select, Tooltip, Stack } from '@grafana/ui';
+import { t, Trans } from 'app/core/internationalization';
 
 import {
   getSupportedTransTypeDetails,
@@ -137,7 +138,7 @@ export const CorrelationTransformationAddModal = ({
         A transformation extracts variables out of a single field. These variables will be available along with your
         field variables.
       

- + ( @@ -152,7 +153,7 @@ export const CorrelationTransformationAddModal = ({ options={Object.entries(fieldList).map((entry) => { return { label: entry[0], value: entry[0] }; })} - aria-label="field" + aria-label={t('explore.correlation-transformation-add-modal.aria-label-field', 'Field')} /> )} name={`field` as const} @@ -168,7 +169,7 @@ export const CorrelationTransformationAddModal = ({ autoEscape={false} />
- + ( @@ -183,7 +184,7 @@ export const CorrelationTransformationAddModal = ({ }); }} options={getTransformOptions()} - aria-label="type" + aria-label={t('explore.correlation-transformation-add-modal.aria-label-type', 'Type')} /> )} name={`type` as const} @@ -193,7 +194,10 @@ export const CorrelationTransformationAddModal = ({ + ) : ( 'Expression' ) @@ -208,9 +212,12 @@ export const CorrelationTransformationAddModal = ({ + ) : ( - 'Variable Name' + 'Variable name' ) } htmlFor={`${id}-mapValue`} @@ -232,7 +239,7 @@ export const CorrelationTransformationAddModal = ({ )} diff --git a/public/app/features/explore/Explore.tsx b/public/app/features/explore/Explore.tsx index 206b006c66b..f1148f3c735 100644 --- a/public/app/features/explore/Explore.tsx +++ b/public/app/features/explore/Explore.tsx @@ -31,6 +31,7 @@ import { } from '@grafana/ui'; import { FILTER_FOR_OPERATOR, FILTER_OUT_OPERATOR } from '@grafana/ui/internal'; import { supportedFeatures } from 'app/core/history/richHistoryStorageProvider'; +import { t } from 'app/core/internationalization'; import { MIXED_DATASOURCE_NAME } from 'app/plugins/datasource/mixed/MixedDataSource'; import { StoreState } from 'app/types'; @@ -371,7 +372,7 @@ export class Explore extends PureComponent { const { graphResult, timeZone, queryResponse, showFlameGraph } = this.props; return ( - + { renderTablePanel(width: number) { const { exploreId, timeZone } = this.props; return ( - + { renderRawPrometheus(width: number) { const { exploreId, datasourceInstance, timeZone } = this.props; return ( - + { gap: theme.spacing(1), }); return ( - + { const { logsSample, timeZone, setSupplementaryQueryEnabled, exploreId, datasourceInstance, queries } = this.props; return ( - + { const datasourceType = datasourceInstance ? datasourceInstance?.type : 'unknown'; return ( - + { renderFlameGraphPanel() { const { queryResponse } = this.props; return ( - + ); @@ -508,7 +530,7 @@ export class Explore extends PureComponent { return ( // If there is no data (like 404) we show a separate error so no need to show anything here dataFrames.length && ( - + {
{datasourceInstance ? ( <> - + {correlationsBox} diff --git a/public/app/features/explore/ExploreRunQueryButton.tsx b/public/app/features/explore/ExploreRunQueryButton.tsx index 48c7831c9d2..20f6fa3272b 100644 --- a/public/app/features/explore/ExploreRunQueryButton.tsx +++ b/public/app/features/explore/ExploreRunQueryButton.tsx @@ -118,7 +118,14 @@ export function ExploreRunQueryButton({ return ( setOpenRunQueryButton(state)} placement="bottom-start" overlay={menu}> - + {t('explore.run-query.run-query-button', 'Run query')} diff --git a/public/app/features/explore/ExploreToolbar.tsx b/public/app/features/explore/ExploreToolbar.tsx index 85166280a89..afc59393b6c 100644 --- a/public/app/features/explore/ExploreToolbar.tsx +++ b/public/app/features/explore/ExploreToolbar.tsx @@ -227,7 +227,7 @@ export function ExploreToolbar({ exploreId, onChangeTime, onContentOutlineToogle - Outline + Outline , Pause the live stream : <>Start live stream your logs} + content={ + isLive && !isPaused ? ( + <> + Pause the live stream + + ) : ( + <> + Start live stream your logs + + ) + } placement="bottom" > - Stop and exit the live stream} placement="bottom"> + + + Stop and exit the live stream + + + } + placement="bottom" + > diff --git a/public/app/features/explore/Logs/LiveLogs.tsx b/public/app/features/explore/Logs/LiveLogs.tsx index 07c33ce6a0c..596d956887a 100644 --- a/public/app/features/explore/Logs/LiveLogs.tsx +++ b/public/app/features/explore/Logs/LiveLogs.tsx @@ -6,6 +6,7 @@ import tinycolor from 'tinycolor2'; import { LogRowModel, dateTimeFormat, GrafanaTheme2, LogsSortOrder } from '@grafana/data'; import { TimeZone } from '@grafana/schema'; import { Button, Themeable2, withTheme2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { LogMessageAnsi } from '../../logs/components/LogMessageAnsi'; import { getLogRowStyles } from '../../logs/components/getLogRowStyles'; @@ -172,10 +173,10 @@ class LiveLogs extends PureComponent { {isPaused ? 'Resume' : 'Pause'} {isPaused || (this.rowsToRender().length > 0 && ( diff --git a/public/app/features/explore/Logs/Logs.tsx b/public/app/features/explore/Logs/Logs.tsx index 5bf10d2dac2..1934a768a6e 100644 --- a/public/app/features/explore/Logs/Logs.tsx +++ b/public/app/features/explore/Logs/Logs.tsx @@ -49,7 +49,7 @@ import { withTheme2, } from '@grafana/ui'; import { mapMouseEventToMode } from '@grafana/ui/internal'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import store from 'app/core/store'; import { createAndCopyShortLink, getLogsPermalinkRange } from 'app/core/utils/shortLinks'; import { InfiniteScroll } from 'app/features/logs/components/InfiniteScroll'; @@ -804,7 +804,7 @@ const UnthemedLogs: React.FunctionComponent = (props: Props) => { /> )} = (props: Props) => { titleItems={[ config.featureToggles.logsExploreTableVisualisation ? ( visualisationType === 'logs' ? null : ( - + ) @@ -868,7 +868,11 @@ const UnthemedLogs: React.FunctionComponent = (props: Props) => { {visualisationType !== 'table' && (
- + = (props: Props) => { id={`show-time_${exploreId}`} /> - + = (props: Props) => { id={`unique-labels_${exploreId}`} /> - + = (props: Props) => { id={`wrap-lines_${exploreId}`} /> - + = (props: Props) => { id={`prettify_${exploreId}`} /> - + ({ label: capitalize(dedupType), @@ -920,7 +940,7 @@ const UnthemedLogs: React.FunctionComponent = (props: Props) => {
- + {(controls) => ( - Show original line + Show original line ), } @@ -165,8 +166,11 @@ export const LogsMetaRow = memo( } const downloadMenu = ( + {/* eslint-disable-next-line @grafana/no-untranslated-strings */} downloadLogs(DownloadFormat.Text)} /> + {/* eslint-disable-next-line @grafana/no-untranslated-strings */} downloadLogs(DownloadFormat.Json)} /> + {/* eslint-disable-next-line @grafana/no-untranslated-strings */} downloadLogs(DownloadFormat.CSV)} /> ); @@ -185,7 +189,7 @@ export const LogsMetaRow = memo( {!config.exploreHideLogsDownload && ( - Download + Download )} diff --git a/public/app/features/explore/Logs/LogsSamplePanel.tsx b/public/app/features/explore/Logs/LogsSamplePanel.tsx index 63ec5219b06..4af65d19ef8 100644 --- a/public/app/features/explore/Logs/LogsSamplePanel.tsx +++ b/public/app/features/explore/Logs/LogsSamplePanel.tsx @@ -13,6 +13,7 @@ import { import { reportInteraction } from '@grafana/runtime'; import { DataQuery, TimeZone } from '@grafana/schema'; import { Button, Collapse, Icon, Tooltip, useStyles2 } from '@grafana/ui'; +import { Trans, t } from 'app/core/internationalization'; import store from 'app/core/store'; import { LogRows } from '../../logs/components/LogRows'; @@ -69,7 +70,9 @@ export function LogsSamplePanel(props: Props) { return ( ); }; @@ -80,12 +83,23 @@ export function LogsSamplePanel(props: Props) { LogsSamplePanelContent = null; } else if (queryResponse.error !== undefined) { LogsSamplePanelContent = ( - + ); } else if (queryResponse.state === LoadingState.Loading) { - LogsSamplePanelContent = Logs sample is loading...; + LogsSamplePanelContent = ( + + Logs sample is loading... + + ); } else if (queryResponse.data.length === 0 || queryResponse.data.every((frame) => frame.length === 0)) { - LogsSamplePanelContent = No logs sample data.; + LogsSamplePanelContent = ( + + No logs sample data. + + ); } else { const logs = dataFrameToLogsModel(queryResponse.data); LogsSamplePanelContent = ( diff --git a/public/app/features/explore/Logs/LogsTableEmptyFields.tsx b/public/app/features/explore/Logs/LogsTableEmptyFields.tsx index 1704050a461..0b68ae8fef7 100644 --- a/public/app/features/explore/Logs/LogsTableEmptyFields.tsx +++ b/public/app/features/explore/Logs/LogsTableEmptyFields.tsx @@ -2,6 +2,7 @@ import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { useTheme2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; function getStyles(theme: GrafanaTheme2) { return { @@ -16,5 +17,9 @@ function getStyles(theme: GrafanaTheme2) { export function LogsTableEmptyFields() { const theme = useTheme2(); const styles = getStyles(theme); - return
No fields
; + return ( +
+ No fields +
+ ); } diff --git a/public/app/features/explore/Logs/LogsTableMultiSelect.tsx b/public/app/features/explore/Logs/LogsTableMultiSelect.tsx index 10308e761a7..ad0b2dec903 100644 --- a/public/app/features/explore/Logs/LogsTableMultiSelect.tsx +++ b/public/app/features/explore/Logs/LogsTableMultiSelect.tsx @@ -2,6 +2,7 @@ import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data/src'; import { useTheme2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { LogsTableActiveFields } from './LogsTableActiveFields'; import { LogsTableAvailableFields } from './LogsTableAvailableFields'; @@ -71,7 +72,9 @@ export const LogsTableMultiSelect = (props: { id={'selected-fields'} /> -
Fields
+
+ Fields +
{props.draggable && ( 1 && (
setSpanFiltersSearch({ ...search, serviceNameOperator: v.value! })} options={[toOption('='), toOption('!=')]} value={search.serviceNameOperator} /> setSpanFiltersSearch({ ...search, spanNameOperator: v.value! })} options={[toOption('='), toOption('!=')]} value={search.spanNameOperator} /> setSpanFiltersSearch({ ...search, fromOperator: v.value! })} options={[toOption('>'), toOption('>=')]} value={search.fromOperator} @@ -212,7 +216,7 @@ export const SpanFilters = memo((props: SpanFilterProps) => { />
onTagChange(tag, v)} onOpenMenu={getTagKeys} options={tagKeys || (tag.key ? [tag.key].map(toOption) : [])} - placeholder="Select tag" + placeholder={t('explore.span-filters-tags.placeholder-select-tag', 'Select tag')} value={tag.key || null} />
{ @@ -143,13 +144,13 @@ export const SpanFiltersTags = ({ search, trace, setSearch, tagKeys, setTagKeys, }); }} options={tagValues[tag.id] ? tagValues[tag.id] : tag.value ? [tag.value].map(toOption) : []} - placeholder="Select value" + placeholder={t('explore.span-filters-tags.placeholder-select-value', 'Select value')} value={tag.value} /> )} {(tag.operator === '=~' || tag.operator === '!~') && ( { setSearch({ ...search, @@ -158,7 +159,7 @@ export const SpanFiltersTags = ({ search, trace, setSearch, tagKeys, setTagKeys, }), }); }} - placeholder="Tag value" + placeholder={t('explore.span-filters-tags.placeholder-tag-value', 'Tag value')} width={18} value={tag.value || ''} /> @@ -166,21 +167,21 @@ export const SpanFiltersTags = ({ search, trace, setSearch, tagKeys, setTagKeys, {(tag.key || tag.value || search.tags.length > 1) && ( removeTag(tag.id)} - tooltip="Remove tag" + tooltip={t('explore.span-filters-tags.tooltip-remove-tag', 'Remove tag')} /> )} {(tag.key || tag.value) && i === search.tags.length - 1 && ( )} diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx index e899b3faab9..f3d878d981b 100644 --- a/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx +++ b/public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx @@ -18,6 +18,7 @@ import * as React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { withTheme2, stylesFactory, Button } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { autoColor } from '../../Theme'; import { TUpdateViewRangeTimeFunction, ViewRange, ViewRangeTimeUpdate, TNil } from '../../index'; @@ -354,7 +355,7 @@ export class UnthemedViewingLayer extends React.PureComponent - Reset Selection + Reset selection )} {arrow} - References + + References + {' '} ({data.length}) diff --git a/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/SpanFlameGraph.tsx b/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/SpanFlameGraph.tsx index ccf70c02b05..5694657462a 100644 --- a/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/SpanFlameGraph.tsx +++ b/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/SpanFlameGraph.tsx @@ -16,6 +16,7 @@ import { FlameGraph } from '@grafana/flamegraph'; import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend'; import { config, DataSourceWithBackend, getTemplateSrv } from '@grafana/runtime'; import { useStyles2 } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; import { Query } from 'app/plugins/datasource/grafana-pyroscope-datasource/types'; @@ -174,7 +175,9 @@ export default function SpanFlameGraph(props: SpanFlameGraphProps) { return (
-
Flame graph
+
+ Flame graph +
config.theme2} diff --git a/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.test.tsx b/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.test.tsx index 1ad71c04cbd..b326a7aee79 100644 --- a/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.test.tsx +++ b/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.test.tsx @@ -216,13 +216,13 @@ describe('', () => { it('renders the span tags', async () => { render(); - await userEvent.click(screen.getByRole('switch', { name: /Span Attributes/ })); + await userEvent.click(screen.getByRole('switch', { name: /Span attributes/ })); expect(props.tagsToggle).toHaveBeenLastCalledWith(span.spanID); }); it('renders the process tags', async () => { render(); - await userEvent.click(screen.getByRole('switch', { name: /Resource Attributes/ })); + await userEvent.click(screen.getByRole('switch', { name: /Resource attributes/ })); expect(props.processToggle).toHaveBeenLastCalledWith(span.spanID); }); diff --git a/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.tsx b/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.tsx index 7a6ec6dbc17..239fa28b844 100644 --- a/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.tsx +++ b/public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/index.tsx @@ -29,6 +29,7 @@ import { import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend'; import { TimeZone } from '@grafana/schema'; import { Divider, Icon, TextArea, useStyles2 } from '@grafana/ui'; +import { t, Trans } from 'app/core/internationalization'; import { pyroscopeProfileIdTagKey } from '../../../createSpanLink'; import { autoColor } from '../../Theme'; @@ -321,7 +322,7 @@ export default function SpanDetail(props: SpanDetailProps) {
tagsToggle(spanID)} @@ -330,7 +331,7 @@ export default function SpanDetail(props: SpanDetailProps) { processToggle(spanID)} @@ -352,7 +353,11 @@ export default function SpanDetail(props: SpanDetailProps) { Warnings} + label={ + + Warnings + + } data={warnings} isOpen={isWarningsOpen} onToggle={() => warningsToggle(spanID)} @@ -360,7 +365,7 @@ export default function SpanDetail(props: SpanDetailProps) { )} {stackTraces?.length ? ( { diff --git a/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.test.tsx b/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.test.tsx index 19cde0e0e96..251c2923b26 100644 --- a/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.test.tsx +++ b/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.test.tsx @@ -35,8 +35,8 @@ describe('TimelineCollapser test', () => { setup(); expect(screen.getByTestId('TimelineCollapser')).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Expand All' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Collapse All' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'Expand all' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'Collapse all' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Expand +1' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Collapse +1' })).toBeInTheDocument(); }); diff --git a/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.tsx b/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.tsx index 457c54f1feb..9811f618b36 100644 --- a/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.tsx +++ b/public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineCollapser.tsx @@ -15,6 +15,7 @@ import { css } from '@emotion/css'; import { IconButton, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; const getStyles = () => ({ TimelineCollapser: css({ @@ -38,17 +39,29 @@ export function TimelineCollapser(props: CollapserProps) { const styles = useStyles2(getStyles); return (
- - + + { it('renders the collapser controls', () => { setup(); - expect(screen.getByRole('button', { name: 'Expand All' })).toBeInTheDocument(); - expect(screen.getByRole('button', { name: 'Collapse All' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'Expand all' })).toBeInTheDocument(); + expect(screen.getByRole('button', { name: 'Collapse all' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Expand +1' })).toBeInTheDocument(); expect(screen.getByRole('button', { name: 'Collapse +1' })).toBeInTheDocument(); }); diff --git a/public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx b/public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx index d84d9e984c5..6a8127b8cb1 100644 --- a/public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx +++ b/public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx @@ -23,6 +23,7 @@ import { TraceToProfilesOptions } from '@grafana/o11y-ds-frontend'; import { config, reportInteraction } from '@grafana/runtime'; import { TimeZone } from '@grafana/schema'; import { stylesFactory, withTheme2, ToolbarButton } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { PEER_SERVICE } from '../constants/tag-keys'; import { CriticalPathSection, SpanBarOptions, SpanLinkFunc, TNil } from '../types'; @@ -655,7 +656,7 @@ export class UnthemedVirtualizedTraceView extends React.Component )} diff --git a/public/app/features/explore/TraceView/components/TraceTimelineViewer/index.test.tsx b/public/app/features/explore/TraceView/components/TraceTimelineViewer/index.test.tsx index 7ac1261dc05..b95d544dd11 100644 --- a/public/app/features/explore/TraceView/components/TraceTimelineViewer/index.test.tsx +++ b/public/app/features/explore/TraceView/components/TraceTimelineViewer/index.test.tsx @@ -67,8 +67,8 @@ describe('', () => { const expandOne = screen.getByRole('button', { name: 'Expand +1' }); const collapseOne = screen.getByRole('button', { name: 'Collapse +1' }); - const expandAll = screen.getByRole('button', { name: 'Expand All' }); - const collapseAll = screen.getByRole('button', { name: 'Collapse All' }); + const expandAll = screen.getByRole('button', { name: 'Expand all' }); + const collapseAll = screen.getByRole('button', { name: 'Collapse all' }); expect(expandOne).toBeInTheDocument(); expect(collapseOne).toBeInTheDocument(); diff --git a/public/app/features/explore/TraceView/components/common/SearchBarInput.tsx b/public/app/features/explore/TraceView/components/common/SearchBarInput.tsx index 664e1e6e2b3..3b4c7bae65a 100644 --- a/public/app/features/explore/TraceView/components/common/SearchBarInput.tsx +++ b/public/app/features/explore/TraceView/components/common/SearchBarInput.tsx @@ -15,6 +15,7 @@ import * as React from 'react'; import { IconButton, Input } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; type Props = { value: string | undefined; @@ -34,13 +35,21 @@ export default class SearchBarInput extends React.PureComponent { const { value } = this.props; const suffix = ( - <>{value && value.length && } + <> + {value && value.length && ( + + )} + ); return (
this.props.onChange(e.currentTarget.value)} suffix={suffix} value={value} diff --git a/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx b/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx index 11710cef528..0a5df0cec61 100644 --- a/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx +++ b/public/app/features/explore/TraceView/components/settings/SpanBarSettings.tsx @@ -9,6 +9,7 @@ import { } from '@grafana/data'; import { ConfigDescriptionLink, ConfigSubSection } from '@grafana/plugin-ui'; import { InlineField, InlineFieldRow, Input, Select, useStyles2 } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; export interface SpanBarOptions { type?: string; @@ -32,7 +33,12 @@ export default function SpanBarSettings({ options, onOptionsChange }: Props) { return (
- + updateDatasourcePluginJsonDataOption({ onOptionsChange, options }, 'spanBar', { ...options.jsonData.spanBar, @@ -82,7 +88,7 @@ export const SpanBarSection = ({ options, onOptionsChange }: DataSourcePluginOpt return ( -

DraggableManager demo

+

+ DraggableManager demo +

-

Dragging a Divider

+

+ Dragging a divider +

Click and drag the gray divider in the colored area, below.

Value: {dividerPosition.toFixed(3)}

@@ -57,8 +63,14 @@ export default class DraggableManagerDemo extends PureComponent<{}, DraggableMan
-

Dragging a Sub-Region

-

Click and drag horizontally somewhere in the colored area, below.

+

+ Dragging a sub-region +

+

+ + Click and drag horizontally somewhere in the colored area, below. + +

Value: {regionDragging && regionDragging.map((n) => n.toFixed(3)).join(', ')}

diff --git a/public/app/features/explore/TraceView/createSpanLink.tsx b/public/app/features/explore/TraceView/createSpanLink.tsx index 662876c3b21..098e7292bb0 100644 --- a/public/app/features/explore/TraceView/createSpanLink.tsx +++ b/public/app/features/explore/TraceView/createSpanLink.tsx @@ -22,6 +22,7 @@ import { PromQuery } from '@grafana/prometheus'; import { getTemplateSrv } from '@grafana/runtime'; import { DataQuery } from '@grafana/schema'; import { Icon } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; import { LokiQuery } from '../../../plugins/datasource/loki/types'; @@ -247,7 +248,15 @@ function legacyCreateSpanLinkFactory( href: link.href, title: 'Related logs', onClick: link.onClick, - content: , + content: ( + + ), field, type: SpanLinkType.Logs, }); @@ -308,7 +317,15 @@ function legacyCreateSpanLinkFactory( title: query?.name, href: link.href, onClick: link.onClick, - content: , + content: ( + + ), field, type: SpanLinkType.Metrics, }); @@ -359,7 +376,12 @@ function legacyCreateSpanLinkFactory( links.push({ title: 'Session for this span', href: feO11yLink, - content: , + content: ( + + ), field, type: SpanLinkType.Session, }); diff --git a/public/app/features/explore/extensions/ConfirmNavigationModal.tsx b/public/app/features/explore/extensions/ConfirmNavigationModal.tsx index 1d5c35302ca..8f93a1336fa 100644 --- a/public/app/features/explore/extensions/ConfirmNavigationModal.tsx +++ b/public/app/features/explore/extensions/ConfirmNavigationModal.tsx @@ -3,6 +3,7 @@ import { ReactElement } from 'react'; import { locationUtil } from '@grafana/data'; import { locationService } from '@grafana/runtime'; import { Button, Modal, Stack } from '@grafana/ui'; +import { Trans } from 'app/core/internationalization'; type Props = { onDismiss: () => void; @@ -25,13 +26,13 @@ export function ConfirmNavigationModal(props: Props): ReactElement { diff --git a/public/app/features/explore/extensions/toolbar/BasicExtensions.tsx b/public/app/features/explore/extensions/toolbar/BasicExtensions.tsx index 5332ac6bfd6..9b3fab23ed4 100644 --- a/public/app/features/explore/extensions/toolbar/BasicExtensions.tsx +++ b/public/app/features/explore/extensions/toolbar/BasicExtensions.tsx @@ -1,6 +1,7 @@ import { lazy, Suspense } from 'react'; import { Dropdown, ToolbarButton } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; @@ -38,7 +39,12 @@ export function BasicExtensions(props: ExtensionDropdownProps) { return ( <> - + Add diff --git a/public/app/features/explore/extensions/toolbar/QuerylessAppsExtensions.tsx b/public/app/features/explore/extensions/toolbar/QuerylessAppsExtensions.tsx index 7433c74393c..23e566358b7 100644 --- a/public/app/features/explore/extensions/toolbar/QuerylessAppsExtensions.tsx +++ b/public/app/features/explore/extensions/toolbar/QuerylessAppsExtensions.tsx @@ -1,6 +1,7 @@ import { first } from 'lodash'; import { Dropdown, ToolbarButton } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { Trans } from '../../../../core/internationalization'; import { ToolbarExtensionPointMenu } from '../ToolbarExtensionPointMenu'; @@ -29,7 +30,7 @@ export function QuerylessAppsExtensions(props: ExtensionDropdownProps) { <> { props.onChange({ ...props.query, expr: event.target.value }); diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json index 1d1e1740791..774dba60d03 100644 --- a/public/locales/en-US/grafana.json +++ b/public/locales/en-US/grafana.json @@ -878,8 +878,38 @@ } }, "api-keys": { + "api-keys-action-bar": { + "placeholder-search-keys": "Search keys" + }, + "api-keys-page-unconnected": { + "label-include-expired-keys": "Include expired keys" + }, + "api-keys-table": { + "aria-label-delete-api-key": "Delete API key", + "expires": "Expires", + "last-used-at": "Last used at", + "migrate-to-service-account": "Migrate to service account", + "name": "Name", + "role": "Role" + }, "empty-state": { "message": "No API keys found" + }, + "migrate-to-service-accounts-card": { + "docs-link": { + "about-migration": "Find out more about the migration here." + }, + "migrate-all-service-accounts": "Migrate all service accounts", + "migration-box-desc": { + "migrating": "Migrating all API keys will hide the API keys tab." + }, + "title-no-api-keys-found": "No API keys found", + "title-switch-service-accounts": "Switch from API keys to service accounts" + }, + "migration-summary": { + "close": "Close", + "migration-successful": "Migration Successful!", + "title-migration-summary": "Migration summary" } }, "app-chrome": { @@ -893,6 +923,37 @@ "trace-id": "Trace ID: {{traceId}}" } }, + "auth-config": { + "auth-config-page-unconnected": { + "auth-settings": "Auth settings" + }, + "auth-drawer-unconnected": { + "advanced-auth": "Advanced Auth", + "enable-insecure-email-lookup": "Enable insecure email lookup", + "reset": "Reset", + "title-auth-settings": "Auth settings" + }, + "configure-auth-cta": { + "authentication-configuration-created-moment": "You have no authentication configuration created at the moment.", + "configuration-required": "Configuration required", + "refer-documentation-configure-authentication": "Refer to the documentation on how to configure authentication" + }, + "provider-config-form": { + "additional-actions-menu": { + "label-reset-to-default-values": "Reset to default values" + }, + "discard": "Discard", + "label-enabled": "Enabled", + "reset-configuration": "Are you sure you want to reset this configuration?", + "title-more-actions": "More actions", + "title-reset": "Reset", + "tooltip-more-actions": "More actions" + }, + "server-discovery-modal": { + "label-the-wellknownopenidconfiguration-endpoint-for-your-id-p": "The .well-known/openid-configuration endpoint for your IdP", + "title-open-id-connect-discovery-url": "OpenID Connect Discovery URL" + } + }, "bookmarks-page": { "empty": { "message": "It looks like you haven’t created any bookmarks yet", @@ -1069,7 +1130,16 @@ "request-data-source": "Request a new data source", "roadmap": "View roadmap" }, + "connections-redirect-notice": { + "aria-label-link-to-connections": "Link to Connections", + "go-to-connections": "Go to connections" + }, + "no-access-modal": { + "connection-contact-grafana-admin": "To add a new connection, contact your Grafana admin.", + "okay": "Okay" + }, "search": { + "aria-label-search-all": "Search all", "placeholder": "Search all" } }, @@ -1880,12 +1950,97 @@ } }, "explore": { + "accordian-references": { + "references": "References" + }, "add-to-dashboard": "Add to dashboard", + "basic-extensions": { + "aria-label-add": "Add" + }, + "confirm-navigation-modal": { + "cancel": "Cancel", + "open": "Open", + "open-in-new-tab": "Open in new tab" + }, + "content-outline-item-button": { + "body": { + "aria-label-content-outline-item-collapse-button": "Content outline item collapse button" + } + }, + "correlation-editor-mode-bar": { + "exit-correlation-editor": "Exit correlation editor", + "save": "Save" + }, + "correlation-helper": { + "add-transformation": "Add transformation", + "aria-label-delete-transformation": "Delete transformation", + "aria-label-edit-transformation": "Edit transformation", + "label-description": "Description", + "label-label": "Label", + "title-correlation-details": "Correlation details" + }, + "correlation-transformation-add-modal": { + "aria-label-field": "Field", + "aria-label-type": "Type", + "cancel": "Cancel", + "label-expression": "Expression", + "label-field": "Field", + "label-type": "Type", + "label-variable-name": "Variable name" + }, + "correlation-unsaved-changes-modal": { + "cancel": "Cancel", + "continue-without-saving": "Continue without saving", + "save-correlation": "Save correlation" + }, + "draggable-manager-demo": { + "click-horizontally-somewhere-colored-below": "Click and drag horizontally somewhere in the colored area, below.", + "draggable-manager-demo": "DraggableManager demo", + "dragging-a-divider": "Dragging a divider", + "dragging-a-sub-region": "Dragging a sub-region" + }, "drilldownInfo": { "action": "Go to Grafana Drilldown", "description": "Looking for the Grafana Explore apps? They are now called the Grafana Drilldown apps and can be found under <1>Menu > Drilldown", "title": "Explore Metrics, Logs, Traces and Profiles have moved!" }, + "explore": { + "title-flame-graph": "Flame graph", + "title-graph": "Graph", + "title-logs": "Logs", + "title-logs-sample": "Logs sample", + "title-node-graph": "Node graph", + "title-queries": "Queries", + "title-raw-prometheus": "Raw Prometheus", + "title-table": "Table", + "title-traces": "Traces" + }, + "explore-run-query-button": { + "run-button": { + "aria-label-run-query-options": "Run query options" + } + }, + "explore-toolbar": { + "outline": "Outline", + "tooltip-content-outline": "Content outline" + }, + "get-matches-metadata": { + "matches": "0 matches" + }, + "legacy-create-span-link-factory": { + "title-explore-metrics-for-this-span": "Explore metrics for this span", + "title-explore-split": "Explore the logs for this in split view", + "title-session-for-this-span": "Session for this span" + }, + "live-logs": { + "clear-logs": "Clear logs", + "exit-live-mode": "Exit live mode" + }, + "live-tail-button": { + "pause-the-live-stream": "Pause the live stream", + "start-live-stream-your-logs": "Start live stream your logs", + "stop-and-exit-the-live-stream": "Stop and exit the live stream" + }, "logs": { "logs-volume": { "add-filters": "Add more labels to your query to narrow down your search.", @@ -1897,6 +2052,63 @@ "scan-for-older-logs": "Scan for older logs", "stop-scan": "Stop scan" }, + "logs-container": { + "label-logs": "Logs" + }, + "logs-meta-row": { + "download": "Download", + "show-original-line": "Show original line" + }, + "logs-sample-panel": { + "logs-sample-is-loading": "Logs sample is loading...", + "no-logs-sample-data": "No logs sample data.", + "open-in-split-view-button": { + "open-logs-in-split-view": "Open logs in split view" + }, + "title-failed-sample-query": "Failed to load logs sample for this query" + }, + "logs-table-empty-fields": { + "no-fields": "No fields" + }, + "logs-table-multi-select": { + "fields": "Fields" + }, + "logs-table-nav-field": { + "aria-label-drag-and-drop-icon": "Drag and drop icon", + "title-drag-and-drop-to-reorder": "Drag and drop to reorder" + }, + "logs-table-wrap": { + "label-select-query": "Select query", + "tooltip-select-query-visualize-table": "Select a query to visualize in the table" + }, + "logs-volume-panel-list": { + "label-reload-log-volume": "Reload log volume", + "loading": "Loading...", + "title-failed-volume-query": "Failed to load log volume for this query", + "title-no-logs-volume-available": "No logs volume available", + "title-showing-partial-data": "Showing partial data", + "title-unable-to-show-log-volume": "Unable to show log volume" + }, + "make-datasource-setup": { + "aria-label-query": "query" + }, + "next": "Next", + "no-data-source-call-to-action": { + "cta-element": { + "add-data-source": "Add data source" + }, + "footer": { + "learn-more": "Learn more", + "pro-tip-define-sources-through-configuration-files": " ProTip: You can also define data sources through configuration files. " + } + }, + "prev": "Prev", + "queryless-apps-extensions": { + "aria-label-go-queryless": "Go queryless" + }, + "raw-list-item": { + "tooltip-copy-to-clipboard": "Copy to clipboard" + }, "rich-history": { "close-tooltip": "Close query history", "datasource-a-z": "Data source A-Z", @@ -2003,6 +2215,12 @@ "run-query-button": "Run query", "switch-datasource-button": "Switch data source and run query" }, + "search-bar-input": { + "placeholder-find": "Find...", + "suffix": { + "tooltip-clear-input": "Clear input" + } + }, "secondary-actions": { "add-from-query-library": "Add query from library", "query-add-button": "Add query", @@ -2012,11 +2230,66 @@ "query-inspector-button": "Query inspector", "query-inspector-button-aria-label": "Query inspector" }, + "span-bar-section": { + "title-span-bar": "Span bar" + }, + "span-bar-settings": { + "label-label": "Label", + "label-tag-key": "Tag key", + "placeholder-duration": "Duration", + "placeholder-enter-tag-key": "Enter tag key", + "tooltip-default-duration": "Default: duration" + }, + "span-detail": { + "label-resource-attributes": "Resource attributes", + "label-span-attributes": "Span attributes", + "label-stack-trace": "Stack trace", + "warnings": "Warnings" + }, + "span-filters": { + "aria-label-select-max-span-operator": "Select max span operator", + "aria-label-select-min-span-operator": "Select min span operator", + "aria-label-select-service-name": "Select service name", + "aria-label-select-service-name-operator": "Select service name operator", + "aria-label-select-span-name": "Select span name", + "aria-label-select-span-name-operator": "Select span name operator", + "label-duration": "Duration", + "label-service-name": "Service name", + "label-span-name": "Span name", + "label-tags": "Tags", + "placeholder-all-service-names": "All service names", + "placeholder-all-span-names": "All span names" + }, + "span-filters-tags": { + "aria-label-add-tag": "Add tag", + "aria-label-input-tag-value": "Input tag value", + "aria-label-remove-tag": "Remove tag", + "aria-label-select-tag-key": "Select tag key", + "aria-label-select-tag-operator": "Select tag operator", + "aria-label-select-tag-value": "Select tag value", + "placeholder-select-tag": "Select tag", + "placeholder-select-value": "Select value", + "placeholder-tag-value": "Tag value", + "tooltip-add-tag": "Add tag", + "tooltip-remove-tag": "Remove tag" + }, + "span-flame-graph": { + "flame-graph": "Flame graph" + }, + "supplementary-result-error": { + "show-details": "Show details" + }, "table": { "no-data": "0 series returned", "title": "Table", "title-with-name": "Table - {{name}}" }, + "timeline-collapser": { + "tooltip-collapse": "Collapse +1", + "tooltip-collapse-all": "Collapse all", + "tooltip-expand": "Expand +1", + "tooltip-expand-all": "Expand all" + }, "toolbar": { "add-to-extensions": "Add", "add-to-queryless-extensions": "Go queryless", @@ -2037,6 +2310,32 @@ "split-title": "Split", "split-tooltip": "Split the pane", "split-widen": "Widen pane" + }, + "trace-page-actions": { + "give-feedback": "Give feedback", + "title-share-thoughts-about-tracing-grafana": "Share your thoughts about tracing in Grafana." + }, + "trace-view": { + "no-data": "No data" + }, + "trace-view-container": { + "title-trace": "Trace" + }, + "unthemed-logs": { + "label-deduplication": "Deduplication", + "label-display-results": "Display results", + "label-prettify-json": "Prettify JSON", + "label-time": "Time", + "label-unique-labels": "Unique labels", + "label-wrap-lines": "Wrap lines", + "title-feedback": "Feedback", + "title-logs-volume": "Logs volume" + }, + "unthemed-viewing-layer": { + "reset-selection": "Reset selection" + }, + "unthemed-virtualized-trace-view": { + "title-scroll-to-top": "Scroll to top" } }, "explore-metrics": {