diff --git a/public/app/core/components/QueryOperationRow/QueryOperationRowHeader.tsx b/public/app/core/components/QueryOperationRow/QueryOperationRowHeader.tsx
index 97cd26f64a0..0525cc9ca7f 100644
--- a/public/app/core/components/QueryOperationRow/QueryOperationRowHeader.tsx
+++ b/public/app/core/components/QueryOperationRow/QueryOperationRowHeader.tsx
@@ -4,6 +4,7 @@ import { DraggableProvided } from 'react-beautiful-dnd';
import { GrafanaTheme2 } from '@grafana/data';
import { Icon, IconButton, useStyles2, Stack } from '@grafana/ui';
+import { t } from 'app/core/internationalization';
export interface QueryOperationRowHeaderProps {
actionsElement?: React.ReactNode;
@@ -41,13 +42,17 @@ export const QueryOperationRowHeader = ({
}: QueryOperationRowHeaderProps) => {
const styles = useStyles2(getStyles);
- let tooltipMessage = isContentVisible ? 'Collapse query row' : 'Expand query row';
+ let tooltipMessage = isContentVisible
+ ? t('query-operation.header.collapse-row', 'Collapse query row')
+ : t('query-operation.header.expand-row', 'Expand query row');
if (expanderMessages !== undefined && isContentVisible) {
tooltipMessage = expanderMessages.close;
} else if (expanderMessages !== undefined) {
tooltipMessage = expanderMessages?.open;
}
+ const dragAndDropLabel = t('query-operation.header.drag-and-drop', 'Drag and drop to reorder');
+
return (
@@ -76,7 +81,7 @@ export const QueryOperationRowHeader = ({
{actionsElement}
{draggable && (
-
+
)}
diff --git a/public/app/features/query/components/QueryEditorRow.tsx b/public/app/features/query/components/QueryEditorRow.tsx
index 28456e6b4f8..8a7c5877e4e 100644
--- a/public/app/features/query/components/QueryEditorRow.tsx
+++ b/public/app/features/query/components/QueryEditorRow.tsx
@@ -33,6 +33,7 @@ import {
QueryOperationRow,
QueryOperationRowRenderProps,
} from 'app/core/components/QueryOperationRow/QueryOperationRow';
+import { t, Trans } from 'app/core/internationalization';
import { getTimeSrv } from 'app/features/dashboard/services/TimeSrv';
import { DashboardModel } from 'app/features/dashboard/state/DashboardModel';
import { PanelModel } from 'app/features/dashboard/state/PanelModel';
@@ -301,7 +302,13 @@ export class QueryEditorRow
extends PureComponentData source plugin does not export any Query Editor component;
+ return (
+
+
+ Data source plugin does not export any Query Editor component
+
+
+ );
};
onToggleEditMode = (e: React.MouseEvent, props: QueryOperationRowRenderProps) => {
@@ -442,7 +449,7 @@ export class QueryEditorRow
extends PureComponent
{hasEditorHelp && (
extends PureComponent {
this.onToggleEditMode(e, props);
@@ -458,16 +465,24 @@ export class QueryEditorRow extends PureComponent
)}
{this.renderExtraActions()}
-
+
{!hideDisableQuery ? (
) : null}
-
+
>
);
};
diff --git a/public/locales/de-DE/grafana.json b/public/locales/de-DE/grafana.json
index 9c4e49fd6e1..bb887599753 100644
--- a/public/locales/de-DE/grafana.json
+++ b/public/locales/de-DE/grafana.json
@@ -961,6 +961,19 @@
"passwords-must-match": ""
}
},
+ "query-operation": {
+ "header": {
+ "collapse-row": "",
+ "datasource-help": "",
+ "disable-query": "",
+ "drag-and-drop": "",
+ "duplicate-query": "",
+ "expand-row": "",
+ "remove-query": "",
+ "toggle-edit-mode": ""
+ },
+ "query-editor-not-exported": ""
+ },
"refresh-picker": {
"aria-label": {
"choose-interval": "Automatische Aktualisierung ausgeschaltet. Aktualisierungszeitintervall auswählen",
diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json
index 251e2f4d964..d6e486306e8 100644
--- a/public/locales/en-US/grafana.json
+++ b/public/locales/en-US/grafana.json
@@ -961,6 +961,19 @@
"passwords-must-match": "Passwords must match"
}
},
+ "query-operation": {
+ "header": {
+ "collapse-row": "Collapse query row",
+ "datasource-help": "Show data source help",
+ "disable-query": "Disable query",
+ "drag-and-drop": "Drag and drop to reorder",
+ "duplicate-query": "Duplicate query",
+ "expand-row": "Expand query row",
+ "remove-query": "Remove query",
+ "toggle-edit-mode": "Toggle text edit mode"
+ },
+ "query-editor-not-exported": "Data source plugin does not export any Query Editor component"
+ },
"refresh-picker": {
"aria-label": {
"choose-interval": "Auto refresh turned off. Choose refresh time interval",
diff --git a/public/locales/es-ES/grafana.json b/public/locales/es-ES/grafana.json
index 82b14a0e51f..4162e86aa97 100644
--- a/public/locales/es-ES/grafana.json
+++ b/public/locales/es-ES/grafana.json
@@ -967,6 +967,19 @@
"passwords-must-match": ""
}
},
+ "query-operation": {
+ "header": {
+ "collapse-row": "",
+ "datasource-help": "",
+ "disable-query": "",
+ "drag-and-drop": "",
+ "duplicate-query": "",
+ "expand-row": "",
+ "remove-query": "",
+ "toggle-edit-mode": ""
+ },
+ "query-editor-not-exported": ""
+ },
"refresh-picker": {
"aria-label": {
"choose-interval": "Actualización automática desactivada. Elija un intervalo de tiempo de actualización",
diff --git a/public/locales/fr-FR/grafana.json b/public/locales/fr-FR/grafana.json
index 4ca33b4053b..1511701299d 100644
--- a/public/locales/fr-FR/grafana.json
+++ b/public/locales/fr-FR/grafana.json
@@ -967,6 +967,19 @@
"passwords-must-match": ""
}
},
+ "query-operation": {
+ "header": {
+ "collapse-row": "",
+ "datasource-help": "",
+ "disable-query": "",
+ "drag-and-drop": "",
+ "duplicate-query": "",
+ "expand-row": "",
+ "remove-query": "",
+ "toggle-edit-mode": ""
+ },
+ "query-editor-not-exported": ""
+ },
"refresh-picker": {
"aria-label": {
"choose-interval": "Actualisation automatique désactivée. Choisir un intervalle de temps d'actualisation",
diff --git a/public/locales/pseudo-LOCALE/grafana.json b/public/locales/pseudo-LOCALE/grafana.json
index b818b37cf15..db3f41cc478 100644
--- a/public/locales/pseudo-LOCALE/grafana.json
+++ b/public/locales/pseudo-LOCALE/grafana.json
@@ -961,6 +961,19 @@
"passwords-must-match": "Päşşŵőřđş mūşŧ mäŧčĥ"
}
},
+ "query-operation": {
+ "header": {
+ "collapse-row": "Cőľľäpşę qūęřy řőŵ",
+ "datasource-help": "Ŝĥőŵ đäŧä şőūřčę ĥęľp",
+ "disable-query": "Đįşäþľę qūęřy",
+ "drag-and-drop": "Đřäģ äʼnđ đřőp ŧő řęőřđęř",
+ "duplicate-query": "Đūpľįčäŧę qūęřy",
+ "expand-row": "Ēχpäʼnđ qūęřy řőŵ",
+ "remove-query": "Ŗęmővę qūęřy",
+ "toggle-edit-mode": "Ŧőģģľę ŧęχŧ ęđįŧ mőđę"
+ },
+ "query-editor-not-exported": "Đäŧä şőūřčę pľūģįʼn đőęş ʼnőŧ ęχpőřŧ äʼny Qūęřy Ēđįŧőř čőmpőʼnęʼnŧ"
+ },
"refresh-picker": {
"aria-label": {
"choose-interval": "Åūŧő řęƒřęşĥ ŧūřʼnęđ őƒƒ. Cĥőőşę řęƒřęşĥ ŧįmę įʼnŧęřväľ",
diff --git a/public/locales/zh-Hans/grafana.json b/public/locales/zh-Hans/grafana.json
index b68bc1e5179..1b8bf21dcd4 100644
--- a/public/locales/zh-Hans/grafana.json
+++ b/public/locales/zh-Hans/grafana.json
@@ -955,6 +955,19 @@
"passwords-must-match": ""
}
},
+ "query-operation": {
+ "header": {
+ "collapse-row": "",
+ "datasource-help": "",
+ "disable-query": "",
+ "drag-and-drop": "",
+ "duplicate-query": "",
+ "expand-row": "",
+ "remove-query": "",
+ "toggle-edit-mode": ""
+ },
+ "query-editor-not-exported": ""
+ },
"refresh-picker": {
"aria-label": {
"choose-interval": "自动刷新已关闭。选择刷新时间间隔",