Skip to content

Commit 8d5ef34

Browse files
committed
Migrate more run and task text to translation files
1 parent 847e8c2 commit 8d5ef34

File tree

16 files changed

+177
-142
lines changed

16 files changed

+177
-142
lines changed

airflow-core/src/airflow/ui/src/components/DagVersion.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,20 +17,23 @@
1717
* under the License.
1818
*/
1919
import { Text } from "@chakra-ui/react";
20+
import { useTranslation } from "react-i18next";
2021

2122
import type { DagVersionResponse } from "openapi/requests/types.gen";
2223

2324
import Time from "./Time";
2425
import { Tooltip } from "./ui";
2526

2627
export const DagVersion = ({ version }: { readonly version: DagVersionResponse | null | undefined }) => {
28+
const { t: translate } = useTranslation("components");
29+
2730
if (version === null || version === undefined) {
2831
return undefined;
2932
}
3033

3134
return (
3235
<Tooltip content={<Time datetime={version.created_at} />}>
33-
<Text as="span">v{version.version_number}</Text>
36+
<Text as="span">{translate("versionSelect.versionCode", { versionCode: version.version_number })}</Text>
3437
</Tooltip>
3538
);
3639
};

airflow-core/src/airflow/ui/src/components/DurationChart.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,10 +102,10 @@ export const DurationChart = ({
102102
{entries.length > 1
103103
? kind === "Dag Run"
104104
? translate("durationChart.lastDagRun_other", { count: entries.length })
105-
: translate("durationChart.lasttaskInstance_other", { count: entries.length })
105+
: translate("durationChart.lastTaskInstance_other", { count: entries.length })
106106
: kind === "Dag Run"
107107
? translate("durationChart.lastDagRun_one")
108-
: translate("durationChart.lasttaskInstance_one")}
108+
: translate("durationChart.lastTaskInstance_one")}
109109
</Heading>
110110
<Bar
111111
data={{

airflow-core/src/airflow/ui/src/i18n/locales/de/components.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
"duration": "Laufzeit (Sekunden)",
4242
"lastDagRun_one": "Letzter Dag Lauf",
4343
"lastDagRun_other": "Letzte {{count}} Dag Läufe",
44-
"lasttaskInstance_one": "Letzte Task Instanz",
45-
"lasttaskInstance_other": "Letzte {{count}} Task Instanzen",
44+
"lastTaskInstance_one": "Letzte Task Instanz",
45+
"lastTaskInstance_other": "Letzte {{count}} Task Instanzen",
4646
"queuedDuration": "Zeit in der Warteschlange",
4747
"runAfter": "Lauf ab",
4848
"runDuration": "Laufzeit"

airflow-core/src/airflow/ui/src/i18n/locales/en/common.json

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
"queuedAt": "Queued At",
5252
"runAfter": "Run After",
5353
"runType": "Run Type",
54+
"sourceAssetEvent": "Source Asset Event",
5455
"triggeredBy": "Triggered By"
5556
},
5657
"dagRun_one": "Dag Run",
@@ -165,6 +166,7 @@
165166
"to": "To"
166167
},
167168
"task": {
169+
"documentation": "Task Documentation",
168170
"lastInstance": "Last Instance",
169171
"operator": "Operator",
170172
"triggerRule": "Trigger Rule"
@@ -185,6 +187,14 @@
185187
"queue": "Queue",
186188
"queuedWhen": "Queued At",
187189
"scheduledWhen": "Scheduled At",
190+
"triggerer": {
191+
"assigned": "Assigned triggerer",
192+
"class": "Trigger class",
193+
"createdAt": "Trigger creation time",
194+
"id": "Trigger ID",
195+
"latestHeartbeat": "Latest triggerer heartbeat",
196+
"title": "Triggerer Info"
197+
},
188198
"unixname": "Unix Name"
189199
},
190200
"taskInstance_one": "Task Instance",

airflow-core/src/airflow/ui/src/i18n/locales/en/components.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
"duration": "Duration (seconds)",
4242
"lastDagRun_one": "Last Dag Run",
4343
"lastDagRun_other": "Last {{count}} Dag Runs",
44-
"lasttaskInstance_one": "Last Task Instance",
45-
"lasttaskInstance_other": "Last {{count}} Task Instances",
44+
"lastTaskInstance_one": "Last Task Instance",
45+
"lastTaskInstance_other": "Last {{count}} Task Instances",
4646
"queuedDuration": "Queued Duration",
4747
"runAfter": "Run After",
4848
"runDuration": "Run Duration"

airflow-core/src/airflow/ui/src/i18n/locales/en/dag.json

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,16 @@
11
{
22
"allRuns": "All Runs",
3+
"blockingDeps": {
4+
"dependency": "Dependency",
5+
"reason": "Reason",
6+
"title": "Dependencies Blocking Task From Getting Scheduled"
7+
},
38
"code": {
49
"bundleUrl": "Bundle Url",
510
"noCode": "No Code Found",
611
"parsedAt": "Parsed at:"
712
},
13+
"extraLinks": "Extra Links",
814
"grid": {
915
"buttons": {
1016
"resetToLatest": "Reset to latest",
@@ -21,7 +27,9 @@
2127
"failedRun_one": "Failed Run",
2228
"failedRun_other": "Failed Runs",
2329
"failedTask_one": "Failed Task",
24-
"failedTask_other": "Failed Tasks"
30+
"failedTask_other": "Failed Tasks",
31+
"failedTaskInstance_one": "Failed Task Instance",
32+
"failedTaskInstance_other": "Failed Task Instances"
2533
},
2634
"charts": {
2735
"assetEvent": "Created Asset Event"

airflow-core/src/airflow/ui/src/i18n/locales/pl/components.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@
4141
"duration": "Czas trwania (sekundy)",
4242
"lastDagRun_one": "Ostatnie wykonanie Daga",
4343
"lastDagRun_other": "Ostatnie {{count}} wykonania Daga",
44-
"lasttaskInstance_one": "Ostatnia instancja zadania",
45-
"lasttaskInstance_other": "Ostatnie {{count}} instancje zadania",
44+
"lastTaskInstance_one": "Ostatnia instancja zadania",
45+
"lastTaskInstance_other": "Ostatnie {{count}} instancje zadania",
4646
"queuedDuration": "Czas oczekiwania",
4747
"runAfter": "Uruchom po",
4848
"runDuration": "Czas trwania wykonania"

airflow-core/src/airflow/ui/src/pages/Run/Details.tsx

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
* under the License.
1818
*/
1919
import { Box, Flex, HStack, StackSeparator, Table, Text, VStack } from "@chakra-ui/react";
20+
import { useTranslation } from "react-i18next";
2021
import { useParams } from "react-router-dom";
2122

2223
import { useDagRunServiceGetDagRun, useDagRunServiceGetUpstreamAssetEvents } from "openapi/queries";
@@ -30,6 +31,7 @@ import { ClipboardRoot, ClipboardIconButton } from "src/components/ui";
3031
import { getDuration, isStatePending, useAutoRefresh } from "src/utils";
3132

3233
export const Details = () => {
34+
const { t: translate } = useTranslation(["common", "components"]);
3335
const { dagId = "", runId = "" } = useParams();
3436

3537
const refetchInterval = useAutoRefresh({ dagId });
@@ -48,19 +50,18 @@ export const Details = () => {
4850
refetchInterval: () => (isStatePending(dagRun?.state) ? refetchInterval : false),
4951
});
5052

51-
// TODO : Render DagRun configuration object
5253
return (
5354
<Box p={2}>
5455
{data === undefined || dagRun?.run_type !== "asset_triggered" ? undefined : (
55-
<AssetEvents data={data} isLoading={isLoading} title="Source Asset Event" />
56+
<AssetEvents data={data} isLoading={isLoading} title={translate("dagRun.sourceAssetEvent")} />
5657
)}
5758
{dagRun === undefined ? (
5859
<div />
5960
) : (
6061
<Table.Root striped>
6162
<Table.Body>
6263
<Table.Row>
63-
<Table.Cell>State</Table.Cell>
64+
<Table.Cell>{translate("state")}</Table.Cell>
6465
<Table.Cell>
6566
<Flex gap={1}>
6667
<StateBadge state={dagRun.state} />
@@ -69,7 +70,7 @@ export const Details = () => {
6970
</Table.Cell>
7071
</Table.Row>
7172
<Table.Row>
72-
<Table.Cell>Run ID</Table.Cell>
73+
<Table.Cell>{translate("runId")}</Table.Cell>
7374
<Table.Cell>
7475
<HStack>
7576
{dagRun.dag_run_id}
@@ -80,7 +81,7 @@ export const Details = () => {
8081
</Table.Cell>
8182
</Table.Row>
8283
<Table.Row>
83-
<Table.Cell>Run Type</Table.Cell>
84+
<Table.Cell>{translate("dagRun.runType")}</Table.Cell>
8485
<Table.Cell>
8586
<HStack>
8687
<RunTypeIcon runType={dagRun.run_type} />
@@ -89,57 +90,57 @@ export const Details = () => {
8990
</Table.Cell>
9091
</Table.Row>
9192
<Table.Row>
92-
<Table.Cell>Run Duration</Table.Cell>
93+
<Table.Cell>{translate("duration")}</Table.Cell>
9394
<Table.Cell>{getDuration(dagRun.start_date, dagRun.end_date)}</Table.Cell>
9495
</Table.Row>
9596
<Table.Row>
96-
<Table.Cell>Last Scheduling Decision</Table.Cell>
97+
<Table.Cell>{translate("dagRun.lastSchedulingDecision")}</Table.Cell>
9798
<Table.Cell>
9899
<Time datetime={dagRun.last_scheduling_decision} />
99100
</Table.Cell>
100101
</Table.Row>
101102
<Table.Row>
102-
<Table.Cell>Queued at</Table.Cell>
103+
<Table.Cell>{translate("dagRun.queuedAt")}</Table.Cell>
103104
<Table.Cell>
104105
<Time datetime={dagRun.queued_at} />
105106
</Table.Cell>
106107
</Table.Row>
107108
<Table.Row>
108-
<Table.Cell>Start Date</Table.Cell>
109+
<Table.Cell>{translate("startDate")}</Table.Cell>
109110
<Table.Cell>
110111
<Time datetime={dagRun.start_date} />
111112
</Table.Cell>
112113
</Table.Row>
113114
<Table.Row>
114-
<Table.Cell>End Date</Table.Cell>
115+
<Table.Cell>{translate("endDate")}</Table.Cell>
115116
<Table.Cell>
116117
<Time datetime={dagRun.end_date} />
117118
</Table.Cell>
118119
</Table.Row>
119120
<Table.Row>
120-
<Table.Cell>Data Interval Start</Table.Cell>
121+
<Table.Cell>{translate("dagRun.dataIntervalStart")}</Table.Cell>
121122
<Table.Cell>
122123
<Time datetime={dagRun.data_interval_start} />
123124
</Table.Cell>
124125
</Table.Row>
125126
<Table.Row>
126-
<Table.Cell>Data Interval End</Table.Cell>
127+
<Table.Cell>{translate("dagRun.dataIntervalEnd")}</Table.Cell>
127128
<Table.Cell>
128129
<Time datetime={dagRun.data_interval_end} />
129130
</Table.Cell>
130131
</Table.Row>
131132
<Table.Row>
132-
<Table.Cell>Trigger Source</Table.Cell>
133+
<Table.Cell>{translate("dagRun.triggeredBy")}</Table.Cell>
133134
<Table.Cell>{dagRun.triggered_by}</Table.Cell>
134135
</Table.Row>
135136
{dagRun.bundle_version !== null && (
136137
<Table.Row>
137-
<Table.Cell>Bundle Version</Table.Cell>
138+
<Table.Cell>{translate("components:versionDetails.bundleVersion")}</Table.Cell>
138139
<Table.Cell>{dagRun.bundle_version}</Table.Cell>
139140
</Table.Row>
140141
)}
141142
<Table.Row>
142-
<Table.Cell>Dag Version(s)</Table.Cell>
143+
<Table.Cell>{translate("dagRun.dagVersions")}</Table.Cell>
143144
<Table.Cell>
144145
<VStack separator={<StackSeparator />}>
145146
{dagRun.dag_versions.map((dagVersion) => (
@@ -149,7 +150,7 @@ export const Details = () => {
149150
</Table.Cell>
150151
</Table.Row>
151152
<Table.Row>
152-
<Table.Cell>Run Config</Table.Cell>
153+
<Table.Cell>{translate("dagRun.conf")}</Table.Cell>
153154
<Table.Cell>
154155
<RenderedJsonField content={dagRun.conf ?? {}} />
155156
</Table.Cell>

airflow-core/src/airflow/ui/src/pages/Run/Header.tsx

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
*/
1919
import { HStack, Text, Box } from "@chakra-ui/react";
2020
import { useCallback, useState, useRef } from "react";
21+
import { useTranslation } from "react-i18next";
2122
import { FiBarChart, FiMessageSquare } from "react-icons/fi";
2223

2324
import type { DAGRunResponse } from "openapi/requests/types.gen";
@@ -39,6 +40,7 @@ export const Header = ({
3940
readonly dagRun: DAGRunResponse;
4041
readonly isRefreshing?: boolean;
4142
}) => {
43+
const { t: translate } = useTranslation();
4244
const [note, setNote] = useState<string | null>(dagRun.note);
4345

4446
const dagId = dagRun.dag_id;
@@ -67,14 +69,14 @@ export const Header = ({
6769
actions={
6870
<>
6971
<EditableMarkdownButton
70-
header="Dag Run Note"
72+
header={translate("note.dagRun")}
7173
icon={<FiMessageSquare />}
7274
isPending={isPending}
7375
mdContent={note}
7476
onConfirm={onConfirm}
75-
placeholder="Add a note..."
77+
placeholder={translate("note.placeholder")}
7678
setMdContent={setNote}
77-
text={Boolean(dagRun.note) ? "Note" : "Add a note"}
79+
text={Boolean(dagRun.note) ? translate("note.label") : translate("note.add")}
7880
withText={containerWidth > 700}
7981
/>
8082
<ClearRunButton dagRun={dagRun} isHotkeyEnabled withText={containerWidth > 700} />
@@ -89,24 +91,24 @@ export const Header = ({
8991
? []
9092
: [
9193
{
92-
label: "Logical Date",
94+
label: translate("logicalDate"),
9395
value: <Time datetime={dagRun.logical_date} />,
9496
},
9597
]),
9698
{
97-
label: "Run Type",
99+
label: translate("dagRun.runType"),
98100
value: (
99101
<HStack>
100102
<RunTypeIcon runType={dagRun.run_type} />
101103
<Text>{dagRun.run_type}</Text>
102104
</HStack>
103105
),
104106
},
105-
{ label: "Start", value: <Time datetime={dagRun.start_date} /> },
106-
{ label: "End", value: <Time datetime={dagRun.end_date} /> },
107-
{ label: "Duration", value: getDuration(dagRun.start_date, dagRun.end_date) },
107+
{ label: translate("startDate"), value: <Time datetime={dagRun.start_date} /> },
108+
{ label: translate("endDate"), value: <Time datetime={dagRun.end_date} /> },
109+
{ label: translate("duration"), value: getDuration(dagRun.start_date, dagRun.end_date) },
108110
{
109-
label: "Dag Version(s)",
111+
label: translate("dagRun.dagVersions"),
110112
value: (
111113
<LimitedItemsList
112114
items={dagRun.dag_versions.map((version) => (

airflow-core/src/airflow/ui/src/pages/Task/Header.tsx

Lines changed: 25 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -16,30 +16,35 @@
1616
* specific language governing permissions and limitations
1717
* under the License.
1818
*/
19+
import { useTranslation } from "react-i18next";
1920
import { FiBookOpen } from "react-icons/fi";
2021

2122
import type { TaskResponse } from "openapi/requests/types.gen";
2223
import { TaskIcon } from "src/assets/TaskIcon";
2324
import DisplayMarkdownButton from "src/components/DisplayMarkdownButton";
2425
import { HeaderCard } from "src/components/HeaderCard";
2526

26-
export const Header = ({ task }: { readonly task: TaskResponse }) => (
27-
<HeaderCard
28-
actions={
29-
task.doc_md === null ? undefined : (
30-
<DisplayMarkdownButton
31-
header="Task Documentation"
32-
icon={<FiBookOpen />}
33-
mdContent={task.doc_md}
34-
text="Task Docs"
35-
/>
36-
)
37-
}
38-
icon={<TaskIcon />}
39-
stats={[
40-
{ label: "Operator", value: task.operator_name },
41-
{ label: "Trigger Rule", value: task.trigger_rule },
42-
]}
43-
title={`${task.task_display_name}${task.is_mapped ? " [ ]" : ""}`}
44-
/>
45-
);
27+
export const Header = ({ task }: { readonly task: TaskResponse }) => {
28+
const { t: translate } = useTranslation();
29+
30+
return (
31+
<HeaderCard
32+
actions={
33+
task.doc_md === null ? undefined : (
34+
<DisplayMarkdownButton
35+
header={translate("task.documentation")}
36+
icon={<FiBookOpen />}
37+
mdContent={task.doc_md}
38+
text={translate("docs.documentation")}
39+
/>
40+
)
41+
}
42+
icon={<TaskIcon />}
43+
stats={[
44+
{ label: translate("task.operator"), value: task.operator_name },
45+
{ label: translate("task.triggerRule"), value: task.trigger_rule },
46+
]}
47+
title={`${task.task_display_name}${task.is_mapped ? " [ ]" : ""}`}
48+
/>
49+
);
50+
};

0 commit comments

Comments
 (0)