diff --git a/.betterer.results b/.betterer.results index 7b7375fa9b9..8b1dd94235d 100644 --- a/.betterer.results +++ b/.betterer.results @@ -938,14 +938,6 @@ exports[`better eslint`] = { "public/app/features/actions/ParamsEditor.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], - "public/app/features/admin/UpgradePage.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. Wrap text with ", "4"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "5"] - ], "public/app/features/alerting/routes.tsx:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"] ], @@ -979,9 +971,6 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], - "public/app/features/alerting/unified/AlertsFolderView.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/GrafanaRuleQueryViewer.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] @@ -990,12 +979,8 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/alerting/unified/RedirectToRuleViewer.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/alerting/unified/components/AlertLabelDropdown.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"] ], "public/app/features/alerting/unified/components/AlertLabels.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -1007,9 +992,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/alerting/unified/components/DynamicTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/components/GrafanaAlertmanagerDeliveryWarning.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] @@ -1025,10 +1007,6 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], - "public/app/features/alerting/unified/components/Provisioning.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/alerting/unified/components/alert-groups/AlertDetails.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], @@ -1058,16 +1036,9 @@ exports[`better eslint`] = { "public/app/features/alerting/unified/components/alert-groups/MatcherFilter.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/alerting/unified/components/contact-points/ContactPointHeader.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/alerting/unified/components/contact-points/components/GlobalConfigAlert.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/alerting/unified/components/contact-points/components/UnusedBadge.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/components/export/FileExportPreview.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], @@ -1076,39 +1047,12 @@ exports[`better eslint`] = { "public/app/features/alerting/unified/components/export/GrafanaModifyExport.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/alerting/unified/components/export/GrafanaRuleFolderExporter.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/alerting/unified/components/export/GrafanaRuleGroupExporter.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/components/expressions/Expression.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/alerting/unified/components/mute-timings/MuteTimingTimeInterval.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/alerting/unified/components/mute-timings/MuteTimingTimeRange.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/alerting/unified/components/notification-policies/AlertGroupsSummary.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/alerting/unified/components/notification-policies/EditDefaultPolicyForm.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/alerting/unified/components/notification-policies/EditNotificationPolicyForm.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 ", "0"] ], "public/app/features/alerting/unified/components/notification-policies/Policy.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] @@ -1135,15 +1079,9 @@ 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/alerting/unified/components/receivers/form/ChannelSubForm.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/components/receivers/form/CloudReceiverForm.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/alerting/unified/components/receivers/form/GrafanaCommonChannelSettings.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/components/receivers/form/GrafanaReceiverForm.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], @@ -1174,26 +1112,12 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "1"] ], - "public/app/features/alerting/unified/components/receivers/form/fields/TemplateSelector.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/alerting/unified/components/rule-editor/AlertRuleNameInput.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/alerting/unified/components/rule-editor/AnnotationKeyInput.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], "public/app/features/alerting/unified/components/rule-editor/CloudAlertPreview.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], - "public/app/features/alerting/unified/components/rule-editor/CloudEvaluationBehavior.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/components/rule-editor/DashboardAnnotationField.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] @@ -1206,10 +1130,6 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], - "public/app/features/alerting/unified/components/rule-editor/GrafanaEvaluationBehavior.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/alerting/unified/components/rule-editor/NotificationsStep.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], @@ -1234,9 +1154,8 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/alerting/unified/components/rule-editor/QueryWrapper.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/alerting/unified/components/rule-editor/RecordingRuleEditor.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -1249,13 +1168,9 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], - "public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/route-settings/MuteTimingFields.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/route-settings/RouteSettings.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/alerting/unified/components/rule-editor/notificaton-preview/NotificationRoute.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -1344,27 +1259,12 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/alerting/unified/components/silences/SilencesEditor.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, "Do not use any type assertions.", "0"] ], "public/app/features/alerting/unified/components/silences/SilencesFilter.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/alerting/unified/components/silences/SilencesTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], - "public/app/features/alerting/unified/home/GettingStarted.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 ", "7"] - ], "public/app/features/alerting/unified/home/Insights.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] @@ -1638,11 +1538,9 @@ exports[`better eslint`] = { ], "public/app/features/dashboard-scene/v2schema/ImportDashboardFormV2.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, "Unexpected any. Specify a different type.", "4"], - [0, 0, 0, "Unexpected any. Specify a different type.", "5"] + [0, 0, 0, "Unexpected any. Specify a different type.", "1"], + [0, 0, 0, "Unexpected any. Specify a different type.", "2"], + [0, 0, 0, "Unexpected any. Specify a different type.", "3"] ], "public/app/features/dashboard-scene/v2schema/ImportDashboardOverviewV2.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], @@ -1678,13 +1576,11 @@ exports[`better eslint`] = { [0, 0, 0, "Do not re-export imported variable (\`./AddLibraryPanelWidget\`)", "0"] ], "public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.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, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"] ], "public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.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/dashboard/components/AnnotationSettings/index.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./AnnotationSettingsEdit\`)", "0"], @@ -1756,11 +1652,7 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/dashboard/components/HelpWizard/HelpWizard.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 in text props. Wrap text with or use t()", "0"] ], "public/app/features/dashboard/components/Inspector/PanelInspector.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] @@ -1784,8 +1676,7 @@ exports[`better eslint`] = { ], "public/app/features/dashboard/components/PanelEditor/PanelEditor.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, "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, "Do not use any type assertions.", "1"] ], "public/app/features/dashboard/components/PanelEditor/VisualizationSelectPane.tsx:5381": [ [0, 0, 0, "Use data-testid for E2E selectors instead of aria-label", "0"] @@ -1847,8 +1738,7 @@ exports[`better eslint`] = { [0, 0, 0, "Unexpected any. Specify a different type.", "2"] ], "public/app/features/dashboard/components/TransformationsEditor/TransformationOperationRow.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()", "0"] ], "public/app/features/dashboard/components/TransformationsEditor/TransformationPicker.tsx:5381": [ [0, 0, 0, "\'VerticalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"], @@ -1866,9 +1756,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/dashboard/components/VersionHistory/VersionHistoryTable.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/dashboard/components/VersionHistory/useDashboardRestore.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "1"] @@ -1889,9 +1776,6 @@ exports[`better eslint`] = { "public/app/features/dashboard/containers/PublicDashboardPage.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], - "public/app/features/dashboard/containers/SoloPanelPage.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/dashboard/dashgrid/SeriesVisibilityConfigFactory.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], @@ -2038,9 +1922,6 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use export all (\`export * from ...\`)", "0"], [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"] - ], "public/app/features/datasources/components/ButtonRow.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], @@ -2051,11 +1932,6 @@ exports[`better eslint`] = { "public/app/features/datasources/components/DataSourcePluginConfigPage.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "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"], - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "2"] - ], "public/app/features/datasources/components/DataSourceTypeCard.tsx:5381": [ [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"] @@ -2143,12 +2019,8 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "3"] ], "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. 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 ", "0"], + [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "public/app/features/explore/ExploreRunQueryButton.tsx:5381": [ [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] @@ -2159,10 +2031,6 @@ exports[`better eslint`] = { "public/app/features/explore/Logs/LiveLogs.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "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"] - ], "public/app/features/explore/Logs/LogsSamplePanel.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], @@ -2176,13 +2044,10 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "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"] + [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] ], "public/app/features/explore/PrometheusListView/RawListContainer.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/RichHistory/RichHistorySettingsTab.tsx:5381": [ [0, 0, 0, "Do not use the t() function outside of a component or function", "0"], @@ -2198,23 +2063,14 @@ exports[`better eslint`] = { [0, 0, 0, "Do not use any type assertions.", "1"] ], "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"], - [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 ", "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/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"] ], "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"], - [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 ", "1"] ], "public/app/features/explore/TraceView/components/TracePageHeader/TracePageHeader.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"] @@ -2274,10 +2130,6 @@ exports[`better eslint`] = { "public/app/features/explore/TraceView/components/model/transform-trace-data.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], - "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"] - ], "public/app/features/explore/TraceView/components/types/index.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`../settings/SpanBarSettings\`)", "0"], [0, 0, 0, "Do not re-export imported variable (\`./TNil\`)", "1"], @@ -2334,20 +2186,10 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] ], "public/app/features/expressions/components/Math.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. 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 ", "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/expressions/guards.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] @@ -2438,10 +2280,6 @@ exports[`better eslint`] = { "public/app/features/logs/utils.ts:5381": [ [0, 0, 0, "Do not use any type assertions.", "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"] - ], "public/app/features/manage-dashboards/components/ImportDashboardLibraryPanelsList.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], @@ -2483,9 +2321,6 @@ exports[`better eslint`] = { "public/app/features/migrate-to-cloud/onprem/useNotifyOnSuccess.tsx:5381": [ [0, 0, 0, "Do not use any type assertions.", "0"] ], - "public/app/features/notifications/StoredNotifications.tsx:5381": [ - [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"] ], @@ -2547,14 +2382,8 @@ exports[`better eslint`] = { "public/app/features/plugins/admin/components/GetStartedWithPlugin/index.ts:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./GetStartedWithPlugin\`)", "0"] ], - "public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx:5381": [ - [0, 0, 0, "No untranslated strings in text props. Wrap text with or use t()", "0"] - ], "public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.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. Wrap text with ", "3"] + [0, 0, 0, "\'HorizontalGroup\' import from \'@grafana/ui\' is restricted from being used by a pattern. Use Stack component instead.", "0"] ], "public/app/features/plugins/admin/components/InstallControls/index.tsx:5381": [ [0, 0, 0, "Do not re-export imported variable (\`./InstallControlsButton\`)", "0"], @@ -2581,9 +2410,8 @@ exports[`better eslint`] = { [0, 0, 0, "No untranslated strings. Wrap text with ", "1"] ], "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. 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/plugins/admin/components/VersionList.tsx:5381": [ [0, 0, 0, "No untranslated strings. Wrap text with ", "0"], @@ -2599,11 +2427,6 @@ exports[`better eslint`] = { "public/app/features/plugins/admin/types.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "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"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "1"], - [0, 0, 0, "No untranslated strings. Wrap text with ", "2"] - ], "public/app/features/plugins/datasource_srv.test.ts:5381": [ [0, 0, 0, "Unexpected any. Specify a different type.", "0"], [0, 0, 0, "Unexpected any. Specify a different type.", "1"], diff --git a/public/app/features/admin/UpgradePage.tsx b/public/app/features/admin/UpgradePage.tsx index d9873f2ed0d..6dd6e38b867 100644 --- a/public/app/features/admin/UpgradePage.tsx +++ b/public/app/features/admin/UpgradePage.tsx @@ -122,16 +122,20 @@ const ServiceInfo = () => { title={t('admin.service-info.title-unlimited-expert-support', 'Unlimited Expert Support')} image="public/img/licensing/customer_support.svg" > - 24 x 7 x 365 support via + 24 × 7 × 365 support via - - - + + + - - in the upgrade process - +
diff --git a/public/app/features/alerting/unified/AlertsFolderView.tsx b/public/app/features/alerting/unified/AlertsFolderView.tsx index 1537a9345e7..0de3924d42a 100644 --- a/public/app/features/alerting/unified/AlertsFolderView.tsx +++ b/public/app/features/alerting/unified/AlertsFolderView.tsx @@ -80,7 +80,7 @@ export const AlertsFolderView = ({ folder }: Props) => { options={sortOptions} width={25} aria-label={t('alerting.alerts-folder-view.aria-label-sort', 'Sort')} - placeholder={`Sort (Default A-Z)`} + placeholder={t('alerting.alerts-folder-view.placeholder-sort-default-az', 'Sort (Default A-Z)')} prefix={} /> - + {isFetchError(error) && (
{error.message} diff --git a/public/app/features/alerting/unified/components/AlertLabelDropdown.tsx b/public/app/features/alerting/unified/components/AlertLabelDropdown.tsx index 69d67bd36d9..57db0633d9b 100644 --- a/public/app/features/alerting/unified/components/AlertLabelDropdown.tsx +++ b/public/app/features/alerting/unified/components/AlertLabelDropdown.tsx @@ -5,6 +5,8 @@ import { GroupBase, OptionsOrGroups, createFilter } from 'react-select'; import { SelectableValue } from '@grafana/data'; import { Field, Select, useStyles2 } from '@grafana/ui'; +import { t } from '../../../../core/internationalization'; + export interface AlertLabelDropdownProps { onChange: (newValue: SelectableValue) => void; onOpenMenu?: () => void; @@ -42,7 +44,7 @@ const AlertLabelDropdown: FC = forwardRef - placeholder={`Choose ${type}`} + placeholder={t('alerting.alert-label-dropdown.placeholder-select', 'Choose {{type}}', { type })} width={29} className="ds-picker select-container" backspaceRemovesValue={false} diff --git a/public/app/features/alerting/unified/components/DynamicTable.tsx b/public/app/features/alerting/unified/components/DynamicTable.tsx index f10b5ecc7a4..6d8ebc0e34d 100644 --- a/public/app/features/alerting/unified/components/DynamicTable.tsx +++ b/public/app/features/alerting/unified/components/DynamicTable.tsx @@ -6,6 +6,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { IconButton, Pagination, useStyles2 } from '@grafana/ui'; +import { t } from '../../../../core/internationalization'; import { usePagination } from '../hooks/usePagination'; import { getPaginationStyles } from '../styles/pagination'; @@ -127,7 +128,11 @@ export const DynamicTable = ({ {isExpandable && (
toggleExpanded(item)} diff --git a/public/app/features/alerting/unified/components/Provisioning.tsx b/public/app/features/alerting/unified/components/Provisioning.tsx index 8745ae7c950..6e6558ab9af 100644 --- a/public/app/features/alerting/unified/components/Provisioning.tsx +++ b/public/app/features/alerting/unified/components/Provisioning.tsx @@ -20,9 +20,17 @@ interface ProvisioningAlertProps extends ExtraAlertProps { export const ProvisioningAlert = ({ resource, ...rest }: ProvisioningAlertProps) => { return ( - - This {resource} has been provisioned, that means it was created by config. Please contact your server admin to - update this {resource}. + + + This {{ resource }} has been provisioned, that means it was created by config. Please contact your server admin + to update this {{ resource }}. + ); }; diff --git a/public/app/features/alerting/unified/components/contact-points/ContactPointHeader.tsx b/public/app/features/alerting/unified/components/contact-points/ContactPointHeader.tsx index 795f984e99c..45050e0f9e5 100644 --- a/public/app/features/alerting/unified/components/contact-points/ContactPointHeader.tsx +++ b/public/app/features/alerting/unified/components/contact-points/ContactPointHeader.tsx @@ -221,7 +221,6 @@ export const ContactPointHeader = ({ contactPoint, onDelete }: ContactPointHeade size="sm" icon={canEdit ? 'pen' : 'eye'} type="button" - aria-label={`${canEdit ? 'edit' : 'view'}-action`} data-testid={`${canEdit ? 'edit' : 'view'}-action`} href={`/alerting/notifications/receivers/${encodeURIComponent(urlId)}/edit`} > @@ -229,7 +228,13 @@ export const ContactPointHeader = ({ contactPoint, onDelete }: ContactPointHeade {menuActions.length > 0 && ( {menuActions}}> - + )} diff --git a/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx b/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx index 33e94e32f9d..e3e4cc49391 100644 --- a/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx +++ b/public/app/features/alerting/unified/components/contact-points/ContactPoints.test.tsx @@ -184,11 +184,11 @@ describe('contact points', () => { const unusedBadge = screen.getAllByLabelText('unused'); expect(unusedBadge).toHaveLength(4); - const viewProvisioned = screen.getByRole('link', { name: 'view-action' }); + const viewProvisioned = screen.getByTestId('view-action'); expect(viewProvisioned).toBeInTheDocument(); expect(viewProvisioned).toBeEnabled(); - const editButtons = screen.getAllByRole('link', { name: 'edit-action' }); + const editButtons = screen.getAllByTestId('edit-action'); expect(editButtons).toHaveLength(4); editButtons.forEach((button) => { expect(button).toBeEnabled(); @@ -213,11 +213,11 @@ describe('contact points', () => { expect(screen.getByRole('link', { name: 'add contact point' })).toHaveAttribute('aria-disabled', 'true'); // edit permission is based on API response - we should have 3 buttons - const editButtons = await screen.findAllByRole('link', { name: 'edit-action' }); + const editButtons = await screen.findAllByTestId('edit-action'); expect(editButtons).toHaveLength(3); // there should be view buttons though - one for provisioned, and one for the un-editable contact point - const viewButtons = screen.getAllByRole('link', { name: 'view-action' }); + const viewButtons = screen.getAllByTestId('view-action'); expect(viewButtons).toHaveLength(2); // check buttons in Notification Templates @@ -373,7 +373,7 @@ describe('contact points', () => { const unusedBadge = screen.getAllByLabelText('unused'); expect(unusedBadge).toHaveLength(1); - const editButtons = screen.getAllByRole('link', { name: 'edit-action' }); + const editButtons = screen.getAllByTestId('edit-action'); expect(editButtons).toHaveLength(2); editButtons.forEach((button) => { expect(button).toBeEnabled(); @@ -417,7 +417,7 @@ describe('contact points', () => { expect(screen.queryByRole('link', { name: 'add contact point' })).not.toBeInTheDocument(); - const viewProvisioned = screen.getByRole('link', { name: 'view-action' }); + const viewProvisioned = screen.getByTestId('view-action'); expect(viewProvisioned).toBeInTheDocument(); expect(viewProvisioned).toBeEnabled(); diff --git a/public/app/features/alerting/unified/components/contact-points/components/UnusedBadge.tsx b/public/app/features/alerting/unified/components/contact-points/components/UnusedBadge.tsx index 4983ee57ae2..216b1dfab22 100644 --- a/public/app/features/alerting/unified/components/contact-points/components/UnusedBadge.tsx +++ b/public/app/features/alerting/unified/components/contact-points/components/UnusedBadge.tsx @@ -7,6 +7,9 @@ export const UnusedContactPointBadge = () => ( aria-label={t('alerting.unused-contact-point-badge.aria-label-unused', 'unused')} color="orange" icon="exclamation-triangle" - tooltip="This contact point is not used in any notification policy or alert rule" + tooltip={t( + 'alerting.unused-contact-point-badge.tooltip-unused', + 'This contact point is not used in any notification policy or alert rule' + )} /> ); diff --git a/public/app/features/alerting/unified/components/export/GrafanaRuleFolderExporter.tsx b/public/app/features/alerting/unified/components/export/GrafanaRuleFolderExporter.tsx index 9b56c0ab1e8..d0922715232 100644 --- a/public/app/features/alerting/unified/components/export/GrafanaRuleFolderExporter.tsx +++ b/public/app/features/alerting/unified/components/export/GrafanaRuleFolderExporter.tsx @@ -20,7 +20,9 @@ export function GrafanaRuleFolderExporter({ folder, onClose }: GrafanaRuleFolder return ( = ({ variant="secondary" className={styles.mutedIcon} onClick={onRemoveExpression} - tooltip={`Remove expression "${refId}"`} + tooltip={t('alerting.header.tooltip-remove', 'Remove expression "{{refId}}"', { refId })} /> diff --git a/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeInterval.tsx b/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeInterval.tsx index c1178a87042..b915e6dbd51 100644 --- a/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeInterval.tsx +++ b/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeInterval.tsx @@ -73,7 +73,10 @@ export const MuteTimingTimeInterval = () => { @@ -93,7 +96,10 @@ export const MuteTimingTimeInterval = () => { diff --git a/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeRange.tsx b/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeRange.tsx index ddc4b4a4e10..164710fb1a2 100644 --- a/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeRange.tsx +++ b/public/app/features/alerting/unified/components/mute-timings/MuteTimingTimeRange.tsx @@ -37,7 +37,10 @@ export const MuteTimingTimeRange = ({ intervalIndex }: Props) => { <> diff --git a/public/app/features/alerting/unified/components/notification-policies/AlertGroupsSummary.tsx b/public/app/features/alerting/unified/components/notification-policies/AlertGroupsSummary.tsx index bdc6641f252..d8dddc2fede 100644 --- a/public/app/features/alerting/unified/components/notification-policies/AlertGroupsSummary.tsx +++ b/public/app/features/alerting/unified/components/notification-policies/AlertGroupsSummary.tsx @@ -4,6 +4,8 @@ import * as React from 'react'; import { Badge, Stack } from '@grafana/ui'; +import { t } from '../../../../../core/internationalization'; + interface Props { active?: number; suppressed?: number; @@ -15,15 +17,33 @@ export const AlertGroupsSummary = ({ active = 0, suppressed = 0, unprocessed = 0 const total = active + suppressed + unprocessed; if (active) { - statsComponents.push(); + statsComponents.push( + + ); } if (suppressed) { - statsComponents.push(); + statsComponents.push( + + ); } if (unprocessed) { - statsComponents.push(); + statsComponents.push( + + ); } // if we only have one category it's not really necessary to repeat the total diff --git a/public/app/features/alerting/unified/components/notification-policies/EditDefaultPolicyForm.tsx b/public/app/features/alerting/unified/components/notification-policies/EditDefaultPolicyForm.tsx index 7e66a5e82be..264ad1b15d9 100644 --- a/public/app/features/alerting/unified/components/notification-policies/EditDefaultPolicyForm.tsx +++ b/public/app/features/alerting/unified/components/notification-policies/EditDefaultPolicyForm.tsx @@ -85,7 +85,10 @@ export const AmRootRouteForm = ({ actionButtons, alertManagerSourceName, onSubmi )} {fields.length > 0 && ( @@ -197,7 +200,10 @@ export const AmRoutesExpandedForm = ({ actionButtons, route, onSubmit, defaults {watch().overrideGrouping && ( ({ customValidators={customValidators} /> {!!(mandatoryOptions?.length && optionalOptions?.length) && ( - + {notifier.dto.info !== '' && ( {notifier.dto.info} diff --git a/public/app/features/alerting/unified/components/receivers/form/GrafanaCommonChannelSettings.tsx b/public/app/features/alerting/unified/components/receivers/form/GrafanaCommonChannelSettings.tsx index db1beee1805..6aac6af2acf 100644 --- a/public/app/features/alerting/unified/components/receivers/form/GrafanaCommonChannelSettings.tsx +++ b/public/app/features/alerting/unified/components/receivers/form/GrafanaCommonChannelSettings.tsx @@ -20,7 +20,10 @@ export const GrafanaCommonChannelSettings = ({ 'alerting.grafana-common-channel-settings.label-disable-resolved-message', 'Disable resolved message' )} - description="Disable the resolve message [OK] that is sent when alerting state returns to false" + description={t( + 'alerting.grafana-common-channel-settings.description-disable-resolved-message', + 'Disable the resolve message [OK] that is sent when alerting state returns to false' + )} disabled={readOnly} /> diff --git a/public/app/features/alerting/unified/components/receivers/form/fields/TemplateSelector.tsx b/public/app/features/alerting/unified/components/receivers/form/fields/TemplateSelector.tsx index 5260695f6c1..f0f5ac2a228 100644 --- a/public/app/features/alerting/unified/components/receivers/form/fields/TemplateSelector.tsx +++ b/public/app/features/alerting/unified/components/receivers/form/fields/TemplateSelector.tsx @@ -54,16 +54,24 @@ export function TemplatesPicker({ onSelect, option, valueInForm }: TemplatesPick <> {showTemplates && ( - + )} @@ -219,7 +227,10 @@ function TemplateSelector({ onSelect, onClose, option, valueInForm }: TemplateSe defaultValue={defaultTemplateValue} /> copyToClipboard(template?.value?.content ?? defaultTemplateValue?.value?.content ?? '')} name="copy" /> diff --git a/public/app/features/alerting/unified/components/rule-editor/AlertRuleNameInput.tsx b/public/app/features/alerting/unified/components/rule-editor/AlertRuleNameInput.tsx index 77337cde435..aa5e197cbd4 100644 --- a/public/app/features/alerting/unified/components/rule-editor/AlertRuleNameInput.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/AlertRuleNameInput.tsx @@ -4,7 +4,7 @@ import { DataSourceInstanceSettings } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { config } from '@grafana/runtime'; import { Field, Input, Stack, Text } from '@grafana/ui'; -import { t } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; import { DataSourcePicker } from 'app/features/datasources/components/picker/DataSourcePicker'; import { RuleFormType, RuleFormValues } from '../../types/rule-form'; @@ -46,10 +46,12 @@ export const AlertRuleNameAndMetric = () => { return ( - Enter a name to identify your {entityName}. + + Enter a name to identify your {{ entityName }}. + } > @@ -70,7 +72,11 @@ export const AlertRuleNameAndMetric = () => { : undefined, })} aria-label={t('alerting.alert-rule-name-and-metric.aria-label-name', 'name')} - placeholder={`Give your ${namePlaceholder} a name`} + placeholder={t( + 'alerting.alert-rule-name-and-metric.placeholder-name', + 'Give your {{namePlaceholder}} a name', + { namePlaceholder } + )} /> {isGrafanaRecordingRule && ( @@ -87,7 +93,10 @@ export const AlertRuleNameAndMetric = () => { pattern: recordingRuleNameValidationPattern(RuleFormType.grafanaRecording), })} aria-label={t('alerting.alert-rule-name-and-metric.metric-aria-label-metric', 'metric')} - placeholder={`Give the name of the new recorded metric`} + placeholder={t( + 'alerting.alert-rule-name-and-metric.metric-placeholder-recorded-metric', + 'Give the name of the new recorded metric' + )} /> )} diff --git a/public/app/features/alerting/unified/components/rule-editor/CloudEvaluationBehavior.tsx b/public/app/features/alerting/unified/components/rule-editor/CloudEvaluationBehavior.tsx index 5571215760c..65e7c2d74d7 100644 --- a/public/app/features/alerting/unified/components/rule-editor/CloudEvaluationBehavior.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/CloudEvaluationBehavior.tsx @@ -31,7 +31,10 @@ export const CloudEvaluationBehavior = () => { >
diff --git a/public/app/features/alerting/unified/components/rule-editor/GrafanaEvaluationBehavior.tsx b/public/app/features/alerting/unified/components/rule-editor/GrafanaEvaluationBehavior.tsx index 1b06e4509e1..d7a1adacbb6 100644 --- a/public/app/features/alerting/unified/components/rule-editor/GrafanaEvaluationBehavior.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/GrafanaEvaluationBehavior.tsx @@ -459,7 +459,10 @@ function EvaluationGroupCreationModal({ label={ @@ -546,7 +549,10 @@ export function ForInput({ evaluateEvery }: { evaluateEvery: string }) { label={ diff --git a/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx b/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx index c5b1642cb1c..be6de4326b3 100644 --- a/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/QueryWrapper.tsx @@ -256,7 +256,10 @@ export function MaxDataPointsOption({ diff --git a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/route-settings/RouteSettings.tsx b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/route-settings/RouteSettings.tsx index 1e07b76c9d8..cdcab94f1af 100644 --- a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/route-settings/RouteSettings.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/simplifiedRouting/route-settings/RouteSettings.tsx @@ -73,7 +73,10 @@ export const RoutingSettings = ({ alertManager }: RoutingSettingsProps) => { {overrideGrouping && ( { isFetchError(errorGettingExistingSilence) && errorGettingExistingSilence.status === 404; if (existingSilenceNotFound) { - return ; + return ( + + ); } const canEditSilence = isGrafanaAlertManager ? silence?.accessControl?.write : true; if (!canEditSilence) { - return ; + return ( + + ); } return ( diff --git a/public/app/features/alerting/unified/components/silences/SilencesTable.tsx b/public/app/features/alerting/unified/components/silences/SilencesTable.tsx index 01d62d9a4c0..1c4cfb0219a 100644 --- a/public/app/features/alerting/unified/components/silences/SilencesTable.tsx +++ b/public/app/features/alerting/unified/components/silences/SilencesTable.tsx @@ -163,7 +163,12 @@ const SilencesTable = () => { dataTestId="not-expired-table" /> {itemsExpired.length > 0 && ( - +
diff --git a/public/app/features/alerting/unified/home/GettingStarted.tsx b/public/app/features/alerting/unified/home/GettingStarted.tsx index 9ec30a92d9e..9fd1facd306 100644 --- a/public/app/features/alerting/unified/home/GettingStarted.tsx +++ b/public/app/features/alerting/unified/home/GettingStarted.tsx @@ -19,15 +19,25 @@ export default function GettingStarted() {
  • - Grafana alerting periodically queries data sources and evaluates the condition defined in the alert rule + + Grafana alerting periodically queries data sources and evaluates the condition defined in the alert rule +
  • If the condition is breached, an alert instance fires
  • -
  • Firing instances are routed to notification policies based on matching labels
  • -
  • Notifications are sent out to the contact points specified in the notification policy
  • +
  • + + Firing instances are routed to notification policies based on matching labels + +
  • +
  • + + Notifications are sent out to the contact points specified in the notification policy + +
@@ -47,27 +57,30 @@ export default function GettingStarted() {
  • - Create an alert rule to query a data source and evaluate the condition defined - in the alert rule + + Create an alert rule to query a data source and evaluate the condition + defined in the alert rule +
  • - Route alert notifications either directly to a contact point or through - notification policies for more flexibility + + Route alert notifications either directly to a contact point or through + notification policies for more flexibility +
  • - Monitor your alert rules using dashboards and visualizations + + Monitor your alert rules using dashboards and visualizations +

- For a hands-on introduction, refer to our{' '} - - tutorial to get started with Grafana Alerting - + + For a hands-on introduction, refer to our{' '} + + tutorial to get started with Grafana Alerting + +

@@ -112,7 +125,10 @@ export function WelcomeHeader({ className }: { className?: string }) { diff --git a/public/app/features/dashboard-scene/v2schema/ImportDashboardFormV2.tsx b/public/app/features/dashboard-scene/v2schema/ImportDashboardFormV2.tsx index 4df6d8faf52..95f17068442 100644 --- a/public/app/features/dashboard-scene/v2schema/ImportDashboardFormV2.tsx +++ b/public/app/features/dashboard-scene/v2schema/ImportDashboardFormV2.tsx @@ -72,7 +72,7 @@ export const ImportDashboardFormV2 = ({ data-testid={selectors.components.ImportDashboardForm.name} /> - + render={({ field: { ref, value, onChange, ...field } }) => ( diff --git a/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx b/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx index feb05067f3a..aa052a7e0cc 100644 --- a/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx +++ b/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsEdit.tsx @@ -217,7 +217,10 @@ export const AnnotationSettingsEdit = ({ editIdx, dashboard }: Props) => { diff --git a/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.tsx b/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.tsx index 8ff5ba97e96..9a0e5ea9dad 100644 --- a/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.tsx +++ b/public/app/features/dashboard/components/AnnotationSettings/AnnotationSettingsList.tsx @@ -111,7 +111,11 @@ export const AnnotationSettingsList = ({ dashboard, onNew, onEdit }: Props) => { onDelete(idx)} - aria-label={`Delete query with title "${annotation.name}"`} + aria-label={t( + 'dashboard.annotation-settings-list.aria-label-delete', + 'Delete query with title "{{title}}"', + { title: annotation.name } + )} /> )} diff --git a/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx b/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx index 906c1120559..62bb8f2020c 100644 --- a/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx +++ b/public/app/features/dashboard/components/HelpWizard/HelpWizard.tsx @@ -17,8 +17,8 @@ import { Alert, Select, ClipboardButton, - Icon, Stack, + TextLink, } from '@grafana/ui'; import { Trans, t } from 'app/core/internationalization'; import { contextSrv } from 'app/core/services/context_srv'; @@ -69,20 +69,15 @@ export function HelpWizard({ panel, plugin, onClose }: Props) { return ( - - Troubleshooting docs - + + Troubleshooting docs + @@ -129,7 +124,7 @@ export function HelpWizard({ panel, plugin, onClose }: Props) { ) : ( )}
@@ -153,7 +148,10 @@ export function HelpWizard({ panel, plugin, onClose }: Props) { <> { isOpen: true, }); }} - title="Disconnects this panel from the library panel so that you can edit it regularly." + title={t( + 'dashboard.panel-editor-unconnected.title-unlink', + 'Disconnects this panel from the library panel so that you can edit it regularly.' + )} key="unlink" > Unlink diff --git a/public/app/features/dashboard/components/TransformationsEditor/TransformationOperationRow.tsx b/public/app/features/dashboard/components/TransformationsEditor/TransformationOperationRow.tsx index 5dacca5edfe..d56e2fbcf73 100644 --- a/public/app/features/dashboard/components/TransformationsEditor/TransformationOperationRow.tsx +++ b/public/app/features/dashboard/components/TransformationsEditor/TransformationOperationRow.tsx @@ -194,7 +194,9 @@ export const TransformationOperationRow = ({ {config.featureToggles.transformationsRedesign && ( { diff --git a/public/app/features/dashboard/components/VersionHistory/VersionHistoryTable.tsx b/public/app/features/dashboard/components/VersionHistory/VersionHistoryTable.tsx index f9e270d686c..ccc9742fdef 100644 --- a/public/app/features/dashboard/components/VersionHistory/VersionHistoryTable.tsx +++ b/public/app/features/dashboard/components/VersionHistory/VersionHistoryTable.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Checkbox, Button, Tag, ModalsController, useStyles2 } from '@grafana/ui'; -import { Trans } from 'app/core/internationalization'; +import { t, Trans } from 'app/core/internationalization'; import { DecoratedRevisionModel } from '../DashboardSettings/VersionsSettings'; @@ -44,7 +44,11 @@ export const VersionHistoryTable = ({ versions, canCompare, onCheck }: VersionsT { const styles = useStyles2(getStyles); if (notFound) { - return ; + return ( + + ); } if (!panel || !dashboard) { diff --git a/public/app/features/datasources/components/BasicSettings.tsx b/public/app/features/datasources/components/BasicSettings.tsx index b316d3e2600..8d80c13cd3c 100644 --- a/public/app/features/datasources/components/BasicSettings.tsx +++ b/public/app/features/datasources/components/BasicSettings.tsx @@ -29,8 +29,10 @@ export function BasicSettings({ dataSourceName, isDefault, onDefaultChange, onNa
Next, you can start to visualize data by{' '} , or by querying data in the{' '} { Click{' '} diff --git a/public/app/features/explore/CorrelationUnsavedChangesModal.tsx b/public/app/features/explore/CorrelationUnsavedChangesModal.tsx index ca55adea465..4200d12c99c 100644 --- a/public/app/features/explore/CorrelationUnsavedChangesModal.tsx +++ b/public/app/features/explore/CorrelationUnsavedChangesModal.tsx @@ -1,7 +1,7 @@ import { css } from '@emotion/css'; import { Button, Modal } from '@grafana/ui'; -import { Trans } from 'app/core/internationalization'; +import { Trans, t } from 'app/core/internationalization'; interface UnsavedChangesModalProps { message: string; @@ -14,7 +14,10 @@ export const CorrelationUnsavedChangesModal = ({ onSave, onDiscard, onCancel, me return ( - - Give feedback - + + Give feedback + ); } - -function getStyles(theme: GrafanaTheme2) { - return { - link: css({ - color: theme.colors.text.secondary, - fontSize: theme.typography.bodySmall.fontSize, - ':hover': { - color: theme.colors.text.link, - }, - }), - }; -} diff --git a/public/app/features/explore/NodeGraph/NodeGraphContainer.tsx b/public/app/features/explore/NodeGraph/NodeGraphContainer.tsx index 1c3c12a1794..947acb7e5bc 100644 --- a/public/app/features/explore/NodeGraph/NodeGraphContainer.tsx +++ b/public/app/features/explore/NodeGraph/NodeGraphContainer.tsx @@ -6,6 +6,7 @@ import { useToggle, useWindowSize } from 'react-use'; import { applyFieldOverrides, DataFrame, GrafanaTheme2, SplitOpen } from '@grafana/data'; import { config, reportInteraction } from '@grafana/runtime'; import { useStyles2, useTheme2, PanelChrome } from '@grafana/ui'; +import { t } from 'app/core/internationalization'; import { layeredLayoutThreshold } from 'app/plugins/panel/nodeGraph/NodeGraph'; import { NodeGraph } from '../../../plugins/panel/nodeGraph'; @@ -91,7 +92,7 @@ export function UnconnectedNodeGraphContainer(props: Props) { return ( { return (
- +
- +
diff --git a/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx b/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx index a20fa5d2bb6..8147b3c92d6 100644 --- a/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx +++ b/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/NextPrevResult.tsx @@ -21,7 +21,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { config, reportInteraction } from '@grafana/runtime'; import { Icon, PopoverContent, Tooltip, useTheme2 } from '@grafana/ui'; import { getButtonStyles } from '@grafana/ui/internal'; -import { Trans } from 'app/core/internationalization'; +import { t, Trans } from 'app/core/internationalization'; import { Trace } from '../../types'; @@ -198,7 +198,7 @@ export default memo(function NextPrevResult(props: NextPrevResultProps) { {getMatchesMetadata(depth, services)}
prevResult(event, buttonEnabled)} onKeyDown={(event) => prevResultOnKeyDown(event, buttonEnabled)} @@ -208,7 +208,7 @@ export default memo(function NextPrevResult(props: NextPrevResultProps) { Prev
nextResult(event, buttonEnabled)} onKeyDown={(event) => nextResultOnKeyDown(event, buttonEnabled)} 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 6590e40feda..5b86f9c0721 100644 --- a/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx +++ b/public/app/features/explore/TraceView/components/TracePageHeader/SearchBar/TracePageSearchBar.tsx @@ -18,7 +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 { t, Trans } from 'app/core/internationalization'; import { SearchProps } from '../../../useSearch'; import { Trace } from '../../types'; @@ -81,7 +81,7 @@ export default memo(function TracePageSearchBar(props: TracePageSearchBarProps) disabled={!clearEnabled} type="button" fill="outline" - aria-label="Clear filters button" + aria-label={t('explore.trace-page-search-bar.aria-label-clear-filters', 'Clear filters button')} onClick={clear} > Clear @@ -90,7 +90,7 @@ export default memo(function TracePageSearchBar(props: TracePageSearchBarProps) setShowSpanFilterMatchesOnly(value.currentTarget.checked ?? false)} - label="Show matches only switch" + label={t('explore.trace-page-search-bar.label-show-matches', 'Show matches only switch')} disabled={!spanFilterMatches?.size} />
@@ -102,14 +132,12 @@ export const Math = ({ labelWidth, onChange, query, onRunQuery }: Props) => { footer={
See our additional documentation on{' '} - - Math expressions - + Math expressions + .
} @@ -159,9 +187,6 @@ const getStyles = (theme: GrafanaTheme2) => ({ fontSize: theme.typography.h5.fontSize, fontWeight: theme.typography.h5.fontWeight, }), - documentationLink: css({ - color: theme.colors.text.link, - }), documentationContainer: css({ display: 'flex', flex: 1, diff --git a/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx b/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx index 643e4860175..cffa3dbd28e 100644 --- a/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx +++ b/public/app/features/manage-dashboards/components/ImportDashboardForm.tsx @@ -86,9 +86,10 @@ export const ImportDashboardForm = ({ @@ -168,7 +169,10 @@ export const ImportDashboardForm = ({ diff --git a/public/app/features/notifications/StoredNotifications.tsx b/public/app/features/notifications/StoredNotifications.tsx index 95d08fe16bc..982ab346c4b 100644 --- a/public/app/features/notifications/StoredNotifications.tsx +++ b/public/app/features/notifications/StoredNotifications.tsx @@ -67,7 +67,10 @@ export function StoredNotifications() {
); @@ -79,11 +82,13 @@ export const InstallControlsWarning = ({ plugin, pluginStatus, latestCompatibleV return (
- This plugin is not published to{' '} - - grafana.com/plugins - {' '} - and can't be managed via the catalog. + + This plugin is not published to{' '} + + grafana.com/plugins + {' '} + and can't be managed via the catalog. +
); @@ -106,7 +111,10 @@ export const InstallControlsWarning = ({ plugin, pluginStatus, latestCompatibleV return ( ); diff --git a/public/app/features/plugins/admin/components/PluginUsage.tsx b/public/app/features/plugins/admin/components/PluginUsage.tsx index 0a81fa71443..33dad230689 100644 --- a/public/app/features/plugins/admin/components/PluginUsage.tsx +++ b/public/app/features/plugins/admin/components/PluginUsage.tsx @@ -85,7 +85,9 @@ export function PluginUsage({ plugin }: Props) { return ( -

The following plugins are disabled and not shown in the list below:

+

+ + The following plugins are disabled and not shown in the list below: + +

)} /> - - Read more about plugin signing - + + Read more about plugin signing + +
); } @@ -79,7 +89,6 @@ function getStyles(theme: GrafanaTheme2) { }), docsLink: css({ display: 'inline-block', - color: theme.colors.text.link, marginTop: theme.spacing(2), }), }; diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json index 4f85ba74b40..bc861a6c32b 100644 --- a/public/locales/en-US/grafana.json +++ b/public/locales/en-US/grafana.json @@ -194,8 +194,13 @@ }, "service-info": { "title-critical-sla-hours": "Critical SLA: 2 hours", + "title-email": "Email", "title-enterprise-plugins": "Enterprise Plugins", - "title-unlimited-expert-support": "Unlimited Expert Support" + "title-handinhand-support-in-the-upgrade-process": "Hand-in-hand support in the upgrade process", + "title-phone": "Phone", + "title-private-slack-channel": "Private Slack channel", + "title-unlimited-expert-support": "Unlimited Expert Support", + "year-round-support": "24 × 7 × 365 support via" }, "settings": { "info-description": "These system settings are defined in grafana.ini or custom.ini (or overridden in ENV variables). To change these you currently need to restart Grafana." @@ -332,6 +337,14 @@ "title-error-loading-notifications": "Error loading notifications", "title-grafana-alerts-delivered-alertmanager": "Grafana alerts are not delivered to Grafana Alertmanager" }, + "alert-groups-summary": { + "text-firing_one": "{{count}} firing", + "text-firing_other": "{{count}} firing", + "text-suppressed_one": "{{count}} suppressed", + "text-suppressed_other": "{{count}} suppressed", + "text-unprocessed_one": "{{count}} unprocessed", + "text-unprocessed_other": "{{count}} unprocessed" + }, "alert-instance-details": { "label-value": "Value" }, @@ -352,6 +365,9 @@ "alert-label": { "tooltip-remove-label": "Remove label" }, + "alert-label-dropdown": { + "placeholder-select": "Choose {{type}}" + }, "alert-labels": { "aria-label-labels": "Labels" }, @@ -382,9 +398,13 @@ }, "alert-rule-name-and-metric": { "aria-label-name": "name", + "description-section": "Enter a name to identify your {{entityName}}.", "label-metric": "Metric", "label-name": "Name", - "metric-aria-label-metric": "metric" + "metric-aria-label-metric": "metric", + "metric-placeholder-recorded-metric": "Give the name of the new recorded metric", + "placeholder-name": "Give your {{namePlaceholder}} a name", + "title-section": "Enter {{entityName}} name" }, "alert-rules": { "firing-for": "Firing for", @@ -451,7 +471,8 @@ "aria-label-sort": "Sort", "label-filter-placeholder-search-alerts-by-labels": "Search alerts by labels", "name-filter-placeholder-search-alert-rules-by-name": "Search alert rules by name", - "no-alert-rules-found": "No alert rules found" + "no-alert-rules-found": "No alert rules found", + "placeholder-sort-default-az": "Sort (Default A-Z)" }, "alertVersionHistory": { "alerting": "Alerting", @@ -496,9 +517,13 @@ "warning-restore-manually-title": "Restoring rule manually" }, "am-root-route-form": { + "am-group-description-label": "The waiting time before sending the first notification for a new group of alerts. Default 30 seconds.", + "am-group-interval-description": "The wait time before sending a notification about changes in the alert group after the first notification has been sent. Default is 5 minutes.", "am-group-interval-label-group-interval": "Group interval", + "am-group-select-description-group-by": "Combine multiple alerts into a single notification by grouping them by the same label values.", "am-group-select-label-group-by": "Group by", "am-group-wait-label-group-wait": "Group wait", + "am-repeat-interval-description": "The wait time before resending a notification that has already been sent successfully. Default is 4 hours. Should be a multiple of Group interval.", "am-repeat-interval-label-repeat-interval": "Repeat interval", "aria-label-group-by": "Group by", "aria-label-group-interval": "Group interval", @@ -515,6 +540,8 @@ "am-mute-timing-select-label-mute-timings": "Mute timings", "aria-label-group-by": "Group by", "aria-label-operator": "Operator", + "badge-no-matchers": "If no matchers are specified, this notification policy will handle all alert instances.", + "description-group-by": "Combine multiple alerts into a single notification by grouping them by the same label values. If empty, it is inherited from the parent policy.", "label-contact-point": "Contact point", "label-continue-matching-subsequent-sibling-nodes": "Continue matching subsequent sibling nodes", "label-group-by": "Group by", @@ -589,6 +616,7 @@ "duplicate": "Duplicate", "label-integration": "Integration", "label-notification-settings": "Notification settings", + "label-section": "Optional {{name}} settings", "test": "Test" }, "classic-condition-viewer": { @@ -613,6 +641,7 @@ "label-send-resolved": "Send resolved" }, "cloud-evaluation-behavior": { + "description-pending-period": "Period during which the threshold condition must be met to trigger an alert. Selecting \"None\" triggers the alert immediately once the condition is met.", "label-pending-period": "Pending period", "title-set-evaluation-behavior": "Set evaluation behavior" }, @@ -638,6 +667,7 @@ "return": "Return" }, "contact-point-header": { + "aria-label-more-actions": "More actions for contact point \"{{contactPointName}}\"", "export-label-export": "Export", "label-delete": "Delete", "label-manage-permissions": "Manage permissions" @@ -803,6 +833,10 @@ "text-loading-notification-template": "Loading notification template", "title-error-loading-notification-template": "Error loading notification template" }, + "dynamic-table": { + "tooltip-collapse-row": "Collapse row", + "tooltip-expand-row": "Expand row" + }, "edit-contact-point": { "text-loading": "Loading...", "title-failed-to-fetch-contact-point": "Failed to fetch contact point", @@ -834,6 +868,7 @@ "text-provisioned": "Provisioned" }, "evaluation-group-creation-modal": { + "description-group-name": "A group evaluates all its rules over the same evaluation interval.", "description-often-rules-group-evaluated": "How often all rules in the group are evaluated.", "placeholder-enter-a-name": "Enter a name", "title-new-evaluation-group": "New evaluation group" @@ -853,7 +888,9 @@ "title-rule-not-found": "Rule not found" }, "existing-silence-editor": { - "text-loading-existing-silence-information": "Loading existing silence information..." + "text-loading-existing-silence-information": "Loading existing silence information...", + "title-permission-editrecreate-silence": "You do not have permission to edit/recreate this silence", + "title-silence-not-found": "Existing silence \"{{silenceId}}\" not found" }, "export": { "subtitle": { @@ -905,6 +942,9 @@ } } }, + "for-input": { + "description-pending": "Period during which the threshold condition must be met to trigger an alert. Selecting \"None\" triggers the alert immediately once the condition is met." + }, "generate-alert-data-modal": { "add-alert-data": "Add alert data", "add-alert-data-to-payload": "Add alert data to payload", @@ -914,10 +954,19 @@ "get-preview-results": { "title-error": "Error" }, + "getting-stared": { + "learn-more": "For a hands-on introduction, refer to our <2>tutorial to get started with Grafana Alerting" + }, "getting-started": { "condition-breached-alert-instance-fires": "If the condition is breached, an alert instance fires", + "create-alert-rule": "<0>Create an alert rule to query a data source and evaluate the condition defined in the alert rule", + "firing-instances-routed-notification-policies": "Firing instances are routed to notification policies based on matching labels", "get-started": "Get started", - "how-it-works": "How it works" + "how-it-works": "How it works", + "monitor-alert-rules": "<0>Monitor your alert rules using dashboards and visualizations", + "notification-policies-contact-points": "Notifications are sent out to the contact points specified in the notification policy", + "periodically-queries-data-sources": "Grafana alerting periodically queries data sources and evaluates the condition defined in the alert rule", + "route-alert-notifications": "<0>Route alert notifications either directly to a contact point or through notification policies for more flexibility" }, "global-config": { "title-failed-to-fetch-notification-template": "Failed to fetch notification template" @@ -935,6 +984,7 @@ "title-you-have-additional-alertmanagers-to-configure": "You have additional Alertmanagers to configure" }, "grafana-common-channel-settings": { + "description-disable-resolved-message": "Disable the resolve message [OK] that is sent when alerting state returns to false", "label-disable-resolved-message": "Disable resolved message" }, "grafana-evaluation-behavior-step": { @@ -981,9 +1031,15 @@ "grafana-rule-folder-export-preview": { "text-loading": "Loading...." }, + "grafana-rule-folder-exporter": { + "title-drawer": "Export {{folderName}} rules" + }, "grafana-rule-group-export-preview": { "text-loading": "Loading...." }, + "grafana-rule-group-exporter": { + "title-drawer": "Export {{groupName}} rules" + }, "grafana-rules": { "export-all-grafana-rules-aria-label-export-all-grafana-rules": "export all grafana rules", "export-all-grafana-rules-tooltip-export-all-grafanamanaged-rules": "Export all Grafana-managed rules", @@ -1052,6 +1108,9 @@ "group-loader": { "group-load-failed": "Failed to load rules from group {{ groupName }} in {{ namespaceName }}" }, + "header": { + "tooltip-remove": "Remove expression \"{{refId}}\"" + }, "home": { "label-get-started": "Get started", "label-insights": "Insights", @@ -1234,7 +1293,8 @@ "input": "Input" }, "max-data-points-option": { - "label-max-data-points": "Max data points" + "label-max-data-points": "Max data points", + "tooltip-max-data-points": "The maximum data points per series. Used directly by some data sources and used in calculation of auto interval. With streaming data this value is used for the rolling buffer." }, "migrate-to-gmabutton": { "aria-label-new": "new" @@ -1258,6 +1318,7 @@ "title-delete-mute-timing": "Delete mute timing" }, "mute-timing-fields": { + "am-mute-timing-select-description-mute-timings": "Select a mute timing to define when not to send notifications for this alert rule", "am-mute-timing-select-label-mute-timings": "Mute timings" }, "mute-timing-form": { @@ -1268,6 +1329,8 @@ }, "mute-timing-time-interval": { "add-another-time-interval": "Add another time interval", + "description-dats-of-the-month": "The days of the month, 1:31, of a month. Negative values can be used to represent days which begin at the end of the month", + "description-months": "The months of the year in either numerical or the full calendar month", "label-days-of-the-month": "Days of the month", "label-days-of-the-week": "Days of the week", "label-disable": "Disable", @@ -1282,6 +1345,7 @@ }, "mute-timing-time-range": { "add-another-time-range": "Add another time range", + "description-time-range": "The time inclusive of the start and exclusive of the end time (in UTC if no location has been selected, otherwise local time)", "label-end-time": "End time", "label-start-time": "Start time", "label-time-range": "Time range", @@ -1507,7 +1571,9 @@ }, "provisioning": { "badge-tooltip-provenance": "This resource has been provisioned via {{provenance}} and cannot be edited through the UI", - "badge-tooltip-standard": "This resource has been provisioned and cannot be edited through the UI" + "badge-tooltip-standard": "This resource has been provisioned and cannot be edited through the UI", + "body-provisioned": "This {{resource}} has been provisioned, that means it was created by config. Please contact your server admin to update this {{resource}}.", + "title-provisioned": "This {{resource}} cannot be edited through the UI" }, "provisioning-badge": { "badge": { @@ -1562,7 +1628,8 @@ }, "redirect-to-rule-viewer": { "text-loading-rule": "Loading rule...", - "title-could-not-view-rule": "Could not view rule" + "title-could-not-view-rule": "Could not view rule", + "title-failed-to-load": "Failed to load rules from {{sourceName}}" }, "reduce-condition-viewer": { "function": "Function", @@ -1583,6 +1650,7 @@ }, "routing-settings": { "aria-label-group-by": "Group by", + "description-group-by": "Combine multiple alerts into a single notification by grouping them by the same label values. If empty, it is inherited from the default notification policy.", "label-group-by": "Group by", "label-override-grouping": "Override grouping", "label-override-timings": "Override timings" @@ -1934,6 +2002,7 @@ "search-query-input-placeholder-search": "Search" }, "silences-table": { + "label-section-expired": "Expired silences ({{numExpired}})", "text-loading-silences": "Loading silences...", "title-error-loading-silences": "Error loading silences", "title-the-selected-alertmanager-has-no-configuration": "The selected Alertmanager has no configuration" @@ -2001,7 +2070,8 @@ "error-loading-templates": "Error loading templates", "existing-templates-selector-aria-label-choose-notification-template": "Choose notification template", "existing-templates-selector-placeholder-choose-notification-template": "Choose notification template", - "loading": "Loading..." + "loading": "Loading...", + "tooltip-copy": "Copy selected notification template to clipboard. You can use it in the custom tab." }, "templates": { "editor": { @@ -2016,6 +2086,11 @@ "misconfigured-warning": "This template is misconfigured.", "misconfigured-warning-details": "Templates must be defined in both the <1> and <4> sections of your alertmanager configuration." }, + "templates-picker": { + "button-edit": "Edit {{name}}", + "title-drawer": "Edit {{name}}", + "tooltip-edit": "Edit {{name}} using existing notification templates." + }, "templates-table": { "actions": "Actions", "no-templates-defined": "No templates defined.", @@ -2051,7 +2126,8 @@ }, "unused-contact-point-badge": { "aria-label-unused": "unused", - "text-unused": "Unused" + "text-unused": "Unused", + "tooltip-unused": "This contact point is not used in any notification policy or alert rule" }, "use-add-policy-modal": { "modal-element": { @@ -2103,6 +2179,7 @@ "table": "Table" }, "welcome-header": { + "description-alert-rules": "Define the condition that must be met before an alert rule fires", "description-configure-firing-alert-instances-routed-contact": "Configure how firing alert instances are routed to contact points", "description-configure-receives-notifications": "Configure who receives notifications and how they are sent", "title-alert-rules": "Alert rules", @@ -2615,6 +2692,7 @@ "delete": "Delete", "description-color-annotation-event-markers": "Color to use for the annotation event markers", "description-enabled-annotation-query-issued-every-dashboard": "When enabled the annotation query is issued every dashboard refresh", + "description-hidden": "Annotation queries can be toggled on or off at the top of the dashboard. With this option checked this toggle will be hidden.", "label-color": "Color", "label-data-source": "Data source", "label-enabled": "Enabled", @@ -2627,6 +2705,7 @@ "title-annotation-support-source": "No annotation support for this data source" }, "annotation-settings-list": { + "aria-label-delete": "Delete query with title \"{{title}}\"", "data-source": "Data source", "new-query": "New query", "query-name": "Query name", @@ -2899,13 +2978,17 @@ }, "help-wizard": { "copy-to-clipboard": "Copy to clipboard", + "description-obfuscate-data": "Modify the original data to hide sensitve information. Note the lengths will stay the same, and duplicate values will be equal.", + "download-snapshot": "Download ({{snapshotSize}})", "label-obfuscate-data": "Obfuscate data", "label-support-snapshot": "Support snapshot", "label-template": "Template", "randomize-field-names-label-field-names": "Field names", "randomize-labels-label-labels": "Labels", "randomize-string-values-label-string-values": "String values", - "title-complete-git-hub-comment-clipboard": "Copy a complete GitHub comment to the clipboard" + "title-complete-git-hub-comment-clipboard": "Copy a complete GitHub comment to the clipboard", + "title-get-help-with-this-panel": "Get help with this panel", + "troubleshooting-docs": "Troubleshooting docs" }, "inspect": { "data-tab": "Data", @@ -3029,6 +3112,7 @@ "title-undo-all-changes": "Undo all changes" }, "table-view-label-table-view": "Table view", + "title-unlink": "Disconnects this panel from the library panel so that you can edit it regularly.", "unlink": "Unlink" }, "panel-links": { @@ -3133,7 +3217,8 @@ "save-json-to-file": "Save JSON to file" }, "solo-panel": { - "loading-initializing-dashboard": "Loading & initializing dashboard" + "loading-initializing-dashboard": "Loading & initializing dashboard", + "title-not-found": "Panel with id {{panelId}} not found" }, "sub-menu-un-connected": { "aria-label-template-variables": "Template variables" @@ -3304,7 +3389,8 @@ "title-filter": "Filter", "title-remove": "Remove", "title-show-transform-help": "Show transform help" - } + }, + "title-delete": "Delete {{name}}?" }, "transformation-picker": { "placeholder-search-for-transformation": "Search for transformation", @@ -3345,6 +3431,7 @@ "label-view-json-diff": "View JSON diff" }, "version-history-table": { + "aria-label-toggle-selection": "Toggle selection of version {{version}}", "date": "Date", "notes": "Notes", "restore": "Restore", @@ -3533,6 +3620,10 @@ "troubleshooting-docs": "Troubleshooting docs", "troubleshooting-request-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." }, + "import-dashboard-form-v2": { + "cancel": "Cancel", + "label-folder": "Folder" + }, "inspect-data-tab": { "no-data-found": "No data found" }, @@ -3920,10 +4011,17 @@ } }, "datasources": { + "alert-success-message": { + "aria-label-create-a-dashboard": "Create a dashboard", + "aria-label-explore-data": "Explore data" + }, "alerting-enabled": { "text-alerting-not-supported": "Alerting not supported", "text-alerting-supported": "Alerting supported" }, + "basic-serttings": { + "tooltip-name": "The name is used when you select the data source in panels. The default data source is preselected in new panels." + }, "basic-settings": { "aria-label-datasource-settings-page-basic": "Datasource settings page basic settings", "basic-settings-name-placeholder-name": "Name", @@ -3968,6 +4066,9 @@ "build-a-dashboard": "Build a dashboard", "explore-data": "Explore data" }, + "error-details-link": { + "aria-label-more-details-about-the-error": "More details about the error" + }, "footer": { "add-csv-or-spreadsheet": "Add csv or spreadsheet" }, @@ -4113,12 +4214,15 @@ "label-expression": "Expression", "label-field": "Field", "label-type": "Type", - "label-variable-name": "Variable name" + "label-variable-name": "Variable name", + "title-add": "Add transformation", + "title-edit": "Edit transformation" }, "correlation-unsaved-changes-modal": { "cancel": "Cancel", "continue-without-saving": "Continue without saving", - "save-correlation": "Save correlation" + "save-correlation": "Save correlation", + "title-unsaved-changes-to-correlation": "Unsaved changes to correlation" }, "draggable-manager-demo": { "click-horizontally-somewhere-colored-below": "Click and drag horizontally somewhere in the colored area, below.", @@ -4189,6 +4293,9 @@ "logs-container": { "label-logs": "Logs" }, + "logs-feedback": { + "give-feedback": "Give feedback" + }, "logs-meta-row": { "download": "Download", "show-original-line": "Show original line" @@ -4228,6 +4335,10 @@ "aria-label-query": "query" }, "next": "Next", + "next-prev-result": { + "aria-label-next": "Next result button", + "aria-label-prev": "Prev result button" + }, "no-data-source-call-to-action": { "cta-element": { "add-data-source": "Add data source" @@ -4241,6 +4352,9 @@ "queryless-apps-extensions": { "aria-label-go-queryless": "Go queryless" }, + "raw-list-container": { + "label-expand-results": "Expand results" + }, "raw-list-item": { "tooltip-copy-to-clipboard": "Copy to clipboard" }, @@ -4371,6 +4485,7 @@ "show-critical-path-only": "Show critical path only", "show-matches-only": "Show matches only", "span-bar-section": { + "description-link": "Add additional info next to the service and operation on a span bar row in the trace view.", "title-span-bar": "Span bar" }, "span-bar-settings": { @@ -4379,7 +4494,8 @@ "label-tag-key": "Tag key", "placeholder-duration": "Duration", "placeholder-enter-tag-key": "Enter tag key", - "tooltip-default-duration": "Default: duration" + "tooltip-default-duration": "Default: duration", + "tooltip-tag-key": "Tag key which will be used to get the tag value. A span's attributes and resources will be searched for the tag key" }, "span-detail": { "label-resource-attributes": "Resource attributes", @@ -4399,7 +4515,9 @@ "label-span-name": "Span name", "label-tags": "Tags", "placeholder-all-service-names": "All service names", - "placeholder-all-span-names": "All span names" + "placeholder-all-span-names": "All span names", + "tooltip-duration": "Filter by duration. Accepted units are {{units}}", + "tooltip-tags": "Filter by tags, process tags or log fields in your spans." }, "span-filters-tags": { "aria-label-add-tag": "Add tag", @@ -4460,12 +4578,20 @@ "trace-page-header": { "text-partial-trace": "Partial trace" }, + "trace-page-search-bar": { + "aria-label-clear-filters": "Clear filters button", + "label-show-matches": "Show matches only switch", + "label-show-paths": "Show critical path only switch" + }, "trace-view": { "no-data": "No data" }, "trace-view-container": { "title-trace": "Trace" }, + "unconnected-node-graph-container": { + "title-node-graph": "Node graph" + }, "unthemed-logs": { "label-deduplication": "Deduplication", "label-display-results": "Display results", @@ -4499,6 +4625,20 @@ "export-as-json-tooltip": "Export" } }, + "expression": { + "math": { + "description-abs": "Returns the absolute value of its argument which can be a number or a series", + "description-ceil": "Rounds the number up to the nearest integer value. It's able to operate on series or escalar values.", + "description-floor": "Rounds the number down to the nearest integer value. It's able to operate on series or escalar values.", + "description-inf-nan-null": "The inf for infinity positive, infn for infinity negative, nan, and null functions all return a single scalar value that matches its name.", + "description-is-inf": "Returns 1 for Inf values (negative or positive) and 0 for other values. It's able to operate on series or scalar values.", + "description-is-nan": "Returns 1 for NaN values and 0 for other values. It's able to operate on series or scalar values.", + "description-is-null": "Returns 1 for null values and 0 for other values. It's able to operate on series or scalar values.", + "description-is-number": "Returns 1 for all real number values and 0 for non-number. It's able to operate on series or scalar values.", + "description-log": "Returns the natural logarithm of its argument, which can be a number or a series", + "description-round": "Returns a rounded integer value. It's able to operate on series or escalar values." + } + }, "expressions": { "classic-conditions": { "label-conditions": "Conditions" @@ -4943,7 +5083,7 @@ "title": "Shortcuts" }, "help-wizard": { - "download-snapshot": "Download snapshot", + "download-snapshot": "Download snapshot ({{snapshotSize}})", "github-comment": "Copy Github comment", "support-bundle": "You can also retrieve a support bundle containing information concerning your Grafana instance and configured datasources in the <1>support bundles section.", "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." @@ -5405,11 +5545,17 @@ "tooltip-hide-adhoc-statistics": "Hide ad-hoc statistics" } }, + "manage-dashbaords": { + "import-dashboard-form": { + "description-existing-library-panels": "List of existing library panels. These panels are not affected by the import." + } + }, "manage-dashboards": { "import-dashboard-form": { "cancel": "Cancel", "change-uid": "Change uid", "description-library-panels-imported": "List of new library panels that will get imported.", + "description-unique-identifier-uid": "The unique identifier (UID) of a dashboard can be used for uniquely identify a dashboard between multiple Grafana installs. The UID allows having consistent URLs for accessing dashboards so changing the title of a dashboard will not break any bookmarked links to that dashboard.", "label-existing-library-panels": "Existing library panels", "label-folder": "Folder", "label-name": "Name", @@ -6080,7 +6226,8 @@ }, "starred-dashboard": "Dashboard starred", "stored-notifications": { - "dismiss-notifications": "Dismiss notifications" + "dismiss-notifications": "Dismiss notifications", + "title-alert": "This page displays past errors and warnings. Once dismissed, they cannot be retrieved." }, "unstarred-dashboard": "Dashboard unstarred" }, @@ -6350,10 +6497,16 @@ "get-started-with-data-source": { "add-new-data-source": "Add new data source" }, + "install-controls-button": { + "title-uninstall-modal": "Uninstall {{plugin}}" + }, "install-controls-warning": { + "body-not-published": "This plugin is not published to <2>grafana.com/plugins and can't be managed via the catalog.", "learn-more": "Learn more", "no-valid-grafana-enterprise-license-detected": "No valid Grafana Enterprise license detected.", + "title-dev-alert": "This is a development build of the plugin and can't be uninstalled.", "title-plugin-doesnt-support-version-grafana": "This plugin doesn't support your version of Grafana.", + "title-remote-plugins-unavailable": "The install controls have been disabled because the Grafana server cannot access grafana.com.", "title-renderer-plugins-cannot-managed-plugin-catalog": "Renderer plugins cannot be managed by the Plugin Catalog." }, "log-view-filters": { @@ -6408,7 +6561,13 @@ "update-available": "Update available!" }, "plugin-usage": { - "title-missing-feature-toggle-panel-title-search": "Missing feature toggle: {{toggle}}" + "title-missing-feature-toggle-panel-title-search": "Missing feature toggle: {{toggle}}", + "title-not-used-yet": "{{pluginName}} is not used in any dashboards yet" + }, + "plugins-errors-info": { + "disabled-list": "The following plugins are disabled and not shown in the list below:", + "read-more-about-plugin-signing": "Read more about plugin signing", + "title-unsigned-plugins": "Unsigned plugins were found during plugin initialization. Grafana Labs cannot guarantee the integrity of these plugins. We recommend only using signed plugins." }, "search-field": { "placeholder-search-grafana-plugins": "Search Grafana plugins"