This is an automated email from the ASF dual-hosted git repository.

bbovenzi pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/main by this push:
     new 5a3257f7660 Move Dag, run and TI into common.json (#51622)
5a3257f7660 is described below

commit 5a3257f766086d79144680e90f714c043bfe4c70
Author: Brent Bovenzi <br...@astronomer.io>
AuthorDate: Thu Jun 12 09:33:11 2025 -0400

    Move Dag, run and TI into common.json (#51622)
    
    * Move Dag, run and TI into common.json
    
    * Update more translation refs
    
    * Consolidate a few more fields, fix german keys
    
    * Extra consolidation plus refactor keys for all other languages
    
    * Fix config
---
 .../components/ActionAccordion/ActionAccordion.tsx |  12 +--
 .../ui/src/components/ActionAccordion/columns.tsx  |   8 +-
 .../ui/src/components/Clear/Run/ClearRunDialog.tsx |  11 +--
 .../Clear/TaskInstance/ClearTaskInstanceDialog.tsx |  12 +--
 .../airflow/ui/src/components/DurationChart.tsx    |   6 +-
 .../src/components/MarkAs/Run/MarkRunAsDialog.tsx  |   4 +-
 .../TaskInstance/MarkTaskInstanceAsDialog.tsx      |  12 +--
 .../airflow/ui/src/components/SearchBar.test.tsx   |   2 +-
 .../src/airflow/ui/src/components/SearchBar.tsx    |  11 ++-
 .../ui/src/components/SearchDags/SearchDags.tsx    |   4 +-
 .../src/components/SearchDags/SearchDagsButton.tsx |   6 +-
 .../src/components/TriggerDag/TriggerDAGButton.tsx |   6 +-
 .../src/components/TriggerDag/TriggerDAGForm.tsx   |  14 +--
 .../src/airflow/ui/src/constants/stateOptions.ts   |   6 +-
 airflow-core/src/airflow/ui/src/i18n/config.ts     |   2 +
 .../src/airflow/ui/src/i18n/locales/de/common.json |  60 ++++++++++--
 .../airflow/ui/src/i18n/locales/de/components.json |  11 +--
 .../src/airflow/ui/src/i18n/locales/de/dag.json    |  40 --------
 .../src/airflow/ui/src/i18n/locales/de/dags.json   | 108 +++++----------------
 .../src/airflow/ui/src/i18n/locales/en/common.json |  73 ++++++++++++--
 .../airflow/ui/src/i18n/locales/en/components.json |  11 +--
 .../src/airflow/ui/src/i18n/locales/en/dag.json    |  40 --------
 .../src/airflow/ui/src/i18n/locales/en/dags.json   | 108 +++++----------------
 .../src/airflow/ui/src/i18n/locales/he/common.json |   2 +-
 .../src/airflow/ui/src/i18n/locales/ko/common.json |   2 +-
 .../src/airflow/ui/src/i18n/locales/nl/common.json |   2 +-
 .../src/airflow/ui/src/i18n/locales/pl/common.json |  55 +++++++++--
 .../airflow/ui/src/i18n/locales/pl/components.json |   9 --
 .../src/airflow/ui/src/i18n/locales/pl/dag.json    |  40 --------
 .../src/airflow/ui/src/i18n/locales/pl/dags.json   | 108 +++++----------------
 .../airflow/ui/src/i18n/locales/zh-TW/common.json  |  32 ++++--
 .../ui/src/i18n/locales/zh-TW/components.json      |   6 ++
 .../airflow/ui/src/i18n/locales/zh-TW/dags.json    | 106 +++++---------------
 .../ui/src/layouts/Details/Grid/DurationTick.tsx   |   2 +-
 .../src/airflow/ui/src/pages/Dag/Code/Code.tsx     |   3 +-
 .../src/airflow/ui/src/pages/Dag/Details.tsx       |  44 ++++-----
 .../src/airflow/ui/src/pages/Dag/Header.tsx        |  18 ++--
 .../airflow/ui/src/pages/Dag/Tasks/TaskCard.tsx    |   8 +-
 airflow-core/src/airflow/ui/src/pages/DagRuns.tsx  |  22 ++---
 .../src/airflow/ui/src/pages/DagsList/DagCard.tsx  |   8 +-
 .../airflow/ui/src/pages/DagsList/DagOwners.tsx    |   2 +-
 .../src/airflow/ui/src/pages/DagsList/DagsList.tsx |  18 ++--
 .../airflow/ui/src/pages/DagsList/RecentRuns.tsx   |  12 +--
 .../ui/src/pages/TaskInstances/TaskInstances.tsx   |  24 ++---
 .../pages/TaskInstances/TaskInstancesFilter.tsx    |   4 +-
 45 files changed, 434 insertions(+), 660 deletions(-)

diff --git 
a/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx
 
b/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx
index af251a402e3..f9c6c42e706 100644
--- 
a/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/ActionAccordion/ActionAccordion.tsx
@@ -50,7 +50,7 @@ const ActionAccordion = ({ affectedTasks, note, setNote }: 
Props) => {
         <Accordion.Item key="tasks" value="tasks">
           <Accordion.ItemTrigger>
             <Text fontWeight="bold">
-              
{translate("dags:runAndTaskActions.clear.dialog.affectedTasks.title", {
+              {translate("dags:runAndTaskActions.affectedTasks.title", {
                 count: affectedTasks.total_entries,
               })}
             </Text>
@@ -62,7 +62,7 @@ const ActionAccordion = ({ affectedTasks, note, setNote }: 
Props) => {
                 data={affectedTasks.task_instances}
                 displayMode="table"
                 modelName={translate("common:taskInstance_other")}
-                
noRowsMessage={translate("dags:runAndTaskActions.clear.dialog.affectedTasks.noItemsFound")}
+                
noRowsMessage={translate("dags:runAndTaskActions.affectedTasks.noItemsFound")}
                 total={affectedTasks.total_entries}
               />
             </Box>
@@ -71,7 +71,7 @@ const ActionAccordion = ({ affectedTasks, note, setNote }: 
Props) => {
       ) : undefined}
       <Accordion.Item key="note" value="note">
         <Accordion.ItemTrigger>
-          <Text 
fontWeight="bold">{translate("dags:runAndTaskActions.clear.dialog.note.title")}</Text>
+          <Text fontWeight="bold">{translate("note.label")}</Text>
         </Accordion.ItemTrigger>
         <Accordion.ItemContent>
           <Editable.Root
@@ -90,16 +90,14 @@ const ActionAccordion = ({ affectedTasks, note, setNote }: 
Props) => {
               {Boolean(note) ? (
                 <ReactMarkdown>{note}</ReactMarkdown>
               ) : (
-                <Text color="fg.subtle">
-                  
{translate("dags:runAndTaskActions.clear.dialog.note.placeholder")}
-                </Text>
+                <Text color="fg.subtle">{translate("note.placeholder")}</Text>
               )}
             </Editable.Preview>
             <Editable.Textarea
               data-testid="notes-input"
               height="200px"
               overflowY="auto"
-              
placeholder={translate("dags:runAndTaskActions.clear.dialog.note.placeholder")}
+              placeholder={translate("note.placeholder")}
               resize="none"
             />
           </Editable.Root>
diff --git 
a/airflow-core/src/airflow/ui/src/components/ActionAccordion/columns.tsx 
b/airflow-core/src/airflow/ui/src/components/ActionAccordion/columns.tsx
index f4faf32aff4..6eb55136a42 100644
--- a/airflow-core/src/airflow/ui/src/components/ActionAccordion/columns.tsx
+++ b/airflow-core/src/airflow/ui/src/components/ActionAccordion/columns.tsx
@@ -25,7 +25,7 @@ import { StateBadge } from "src/components/StateBadge";
 export const getColumns = (translate: TFunction): 
Array<MetaColumn<TaskInstanceResponse>> => [
   {
     accessorKey: "task_id",
-    header: 
translate("dags:runAndTaskActions.clear.dialog.affectedTasks.columns.taskId"),
+    header: translate("taskId"),
     size: 200,
   },
   {
@@ -35,14 +35,14 @@ export const getColumns = (translate: TFunction): 
Array<MetaColumn<TaskInstanceR
         original: { state },
       },
     }) => <StateBadge 
state={state}>{translate(`common:states.${state}`)}</StateBadge>,
-    header: 
translate("dags:runAndTaskActions.clear.dialog.affectedTasks.columns.state"),
+    header: translate("state"),
   },
   {
     accessorKey: "map_index",
-    header: translate("common:mapIndex"),
+    header: translate("mapIndex"),
   },
   {
     accessorKey: "run_id",
-    header: 
translate("dags:runAndTaskActions.clear.dialog.affectedTasks.columns.runId"),
+    header: translate("runId"),
   },
 ];
diff --git 
a/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx 
b/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
index d1f2ec552b5..0dda538103e 100644
--- a/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
+++ b/airflow-core/src/airflow/ui/src/components/Clear/Run/ClearRunDialog.tsx
@@ -68,8 +68,7 @@ const ClearRunDialog = ({ dagRun, onClose, open }: Props) => {
         <Dialog.Header>
           <VStack align="start" gap={4}>
             <Heading size="xl">
-              <strong>{translate("dags:runAndTaskActions.clear.dialog.title", 
{ type: "Run" })}: </strong>{" "}
-              {dagRunId}
+              <strong>{translate("dags:runAndTaskActions.clear.title", { type: 
"Run" })}: </strong> {dagRunId}
             </Heading>
           </VStack>
         </Dialog.Header>
@@ -83,16 +82,16 @@ const ClearRunDialog = ({ dagRun, onClose, open }: Props) 
=> {
               onChange={setSelectedOptions}
               options={[
                 {
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.existingTasks"),
+                  label: 
translate("dags:runAndTaskActions.options.existingTasks"),
                   value: "existingTasks",
                 },
                 {
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.onlyFailed"),
+                  label: 
translate("dags:runAndTaskActions.options.onlyFailed"),
                   value: "onlyFailed",
                 },
                 {
                   disabled: true,
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.queueNew"),
+                  label: translate("dags:runAndTaskActions.options.queueNew"),
                   value: "new_tasks",
                 },
               ]}
@@ -119,7 +118,7 @@ const ClearRunDialog = ({ dagRun, onClose, open }: Props) 
=> {
                 }
               }}
             >
-              <CgRedo /> 
{translate("dags:runAndTaskActions.clear.dialog.confirm")}
+              <CgRedo /> {translate("modal.confirm")}
             </Button>
           </Flex>
         </Dialog.Body>
diff --git 
a/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceDialog.tsx
 
b/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceDialog.tsx
index c64f3edfc96..6f53c07d647 100644
--- 
a/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceDialog.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/Clear/TaskInstance/ClearTaskInstanceDialog.tsx
@@ -112,24 +112,24 @@ const ClearTaskInstanceDialog = ({ onClose, open, 
taskInstance }: Props) => {
               options={[
                 {
                   disabled: taskInstance.logical_date === null,
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.past"),
+                  label: translate("dags:runAndTaskActions.options.past"),
                   value: "past",
                 },
                 {
                   disabled: taskInstance.logical_date === null,
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.future"),
+                  label: translate("dags:runAndTaskActions.options.future"),
                   value: "future",
                 },
                 {
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.upstream"),
+                  label: translate("dags:runAndTaskActions.options.upstream"),
                   value: "upstream",
                 },
                 {
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.downstream"),
+                  label: 
translate("dags:runAndTaskActions.options.downstream"),
                   value: "downstream",
                 },
                 {
-                  label: 
translate("dags:runAndTaskActions.clear.dialog.options.onlyFailed"),
+                  label: 
translate("dags:runAndTaskActions.options.onlyFailed"),
                   value: "onlyFailed",
                 },
               ]}
@@ -166,7 +166,7 @@ const ClearTaskInstanceDialog = ({ onClose, open, 
taskInstance }: Props) => {
                 }
               }}
             >
-              <CgRedo /> 
{translate("dags:runAndTaskActions.clear.dialog.confirm")}
+              <CgRedo /> {translate("modal.confirm")}
             </Button>
           </Flex>
         </Dialog.Body>
diff --git a/airflow-core/src/airflow/ui/src/components/DurationChart.tsx 
b/airflow-core/src/airflow/ui/src/components/DurationChart.tsx
index b2fa15100fe..bf8fb803db7 100644
--- a/airflow-core/src/airflow/ui/src/components/DurationChart.tsx
+++ b/airflow-core/src/airflow/ui/src/components/DurationChart.tsx
@@ -65,7 +65,7 @@ export const DurationChart = ({
   readonly entries: Array<RunResponse> | undefined;
   readonly kind: "Dag Run" | "Task Instance";
 }) => {
-  const { t: translate } = useTranslation("components");
+  const { t: translate } = useTranslation(["components", "common"]);
   const navigate = useNavigate();
 
   if (!entries) {
@@ -193,10 +193,10 @@ export const DurationChart = ({
               ticks: {
                 maxTicksLimit: 3,
               },
-              title: { align: "end", display: true, text: 
translate("durationChart.runAfter") },
+              title: { align: "end", display: true, text: 
translate("dagRun.runAfter") },
             },
             y: {
-              title: { align: "end", display: true, text: 
translate("durationChart.duration") },
+              title: { align: "end", display: true, text: 
translate("duration") },
             },
           },
         }}
diff --git 
a/airflow-core/src/airflow/ui/src/components/MarkAs/Run/MarkRunAsDialog.tsx 
b/airflow-core/src/airflow/ui/src/components/MarkAs/Run/MarkRunAsDialog.tsx
index 3abd8174a5b..48c4ac64fd7 100644
--- a/airflow-core/src/airflow/ui/src/components/MarkAs/Run/MarkRunAsDialog.tsx
+++ b/airflow-core/src/airflow/ui/src/components/MarkAs/Run/MarkRunAsDialog.tsx
@@ -47,7 +47,7 @@ const MarkRunAsDialog = ({ dagRun, onClose, open, state }: 
Props) => {
         <Dialog.Header>
           <VStack align="start" gap={4}>
             <Heading size="xl">
-              {translate("dags:runAndTaskActions.markAs.dialog.title", { 
state, type: "Run" })}: {dagRunId}{" "}
+              {translate("dags:runAndTaskActions.markAs.title", { state, type: 
"Run" })}: {dagRunId}{" "}
               <StateBadge state={state} />
             </Heading>
           </VStack>
@@ -69,7 +69,7 @@ const MarkRunAsDialog = ({ dagRun, onClose, open, state }: 
Props) => {
                 });
               }}
             >
-              {translate("dags:runAndTaskActions.markAs.dialog.confirm")}
+              {translate("modal.confirm")}
             </Button>
           </Flex>
         </Dialog.Body>
diff --git 
a/airflow-core/src/airflow/ui/src/components/MarkAs/TaskInstance/MarkTaskInstanceAsDialog.tsx
 
b/airflow-core/src/airflow/ui/src/components/MarkAs/TaskInstance/MarkTaskInstanceAsDialog.tsx
index 8f079331e17..21ebb1d12a6 100644
--- 
a/airflow-core/src/airflow/ui/src/components/MarkAs/TaskInstance/MarkTaskInstanceAsDialog.tsx
+++ 
b/airflow-core/src/airflow/ui/src/components/MarkAs/TaskInstance/MarkTaskInstanceAsDialog.tsx
@@ -90,7 +90,7 @@ const MarkTaskInstanceAsDialog = ({ onClose, open, state, 
taskInstance }: Props)
           <VStack align="start" gap={4}>
             <Heading size="xl">
               <strong>
-                {translate("dags:runAndTaskActions.markAs.dialog.title", { 
state, type: "Task Instance" })}:
+                {translate("dags:runAndTaskActions.markAs.title", { state, 
type: "Task Instance" })}:
               </strong>{" "}
               {taskInstance.task_display_name} <Time 
datetime={taskInstance.start_date} />{" "}
               <StateBadge state={state} />
@@ -108,20 +108,20 @@ const MarkTaskInstanceAsDialog = ({ onClose, open, state, 
taskInstance }: Props)
               options={[
                 {
                   disabled: taskInstance.logical_date === null,
-                  label: 
translate("dags:runAndTaskActions.markAs.dialog.options.past"),
+                  label: translate("dags:runAndTaskActions.options.past"),
                   value: "past",
                 },
                 {
                   disabled: taskInstance.logical_date === null,
-                  label: 
translate("dags:runAndTaskActions.markAs.dialog.options.future"),
+                  label: translate("dags:runAndTaskActions.options.future"),
                   value: "future",
                 },
                 {
-                  label: 
translate("dags:runAndTaskActions.markAs.dialog.options.upstream"),
+                  label: translate("dags:runAndTaskActions.options.upstream"),
                   value: "upstream",
                 },
                 {
-                  label: 
translate("dags:runAndTaskActions.markAs.dialog.options.downstream"),
+                  label: 
translate("dags:runAndTaskActions.options.downstream"),
                   value: "downstream",
                 },
               ]}
@@ -149,7 +149,7 @@ const MarkTaskInstanceAsDialog = ({ onClose, open, state, 
taskInstance }: Props)
                 });
               }}
             >
-              {translate("dags:runAndTaskActions.markAs.dialog.confirm")}
+              {translate("modal.confirm")}
             </Button>
           </Flex>
         </Dialog.Body>
diff --git a/airflow-core/src/airflow/ui/src/components/SearchBar.test.tsx 
b/airflow-core/src/airflow/ui/src/components/SearchBar.test.tsx
index 138421ae65d..629400ad6ee 100644
--- a/airflow-core/src/airflow/ui/src/components/SearchBar.test.tsx
+++ b/airflow-core/src/airflow/ui/src/components/SearchBar.test.tsx
@@ -31,7 +31,7 @@ describe("Test SearchBar", () => {
 
     const input = screen.getByTestId("search-dags");
 
-    expect(screen.getByText("list.advancedSearch")).toBeDefined();
+    expect(screen.getByText("search.advanced")).toBeDefined();
     expect(screen.queryByTestId("clear-search")).toBeNull();
 
     fireEvent.change(input, { target: { value: "search" } });
diff --git a/airflow-core/src/airflow/ui/src/components/SearchBar.tsx 
b/airflow-core/src/airflow/ui/src/components/SearchBar.tsx
index 5ab1ab3144e..ca3d0b552cd 100644
--- a/airflow-core/src/airflow/ui/src/components/SearchBar.tsx
+++ b/airflow-core/src/airflow/ui/src/components/SearchBar.tsx
@@ -74,7 +74,7 @@ export const SearchBar = ({
         <>
           {Boolean(value) ? (
             <CloseButton
-              aria-label={translate("list.clearSearch")}
+              aria-label={translate("search.clear")}
               colorPalette="gray"
               data-testid="clear-search"
               onClick={() => {
@@ -86,10 +86,15 @@ export const SearchBar = ({
           ) : undefined}
           {Boolean(hideAdvanced) ? undefined : (
             <Button fontWeight="normal" height="1.75rem" variant="ghost" 
width={140} {...buttonProps}>
-              {translate("list.advancedSearch")}
+              {translate("search.advanced")}
             </Button>
           )}
-          {!hotkeyDisabled && <Kbd size="sm">{metaKey}+K</Kbd>}
+          {!hotkeyDisabled && (
+            <Kbd size="sm">
+              {metaKey}
+              {translate("search.hotkey")}
+            </Kbd>
+          )}
         </>
       }
       startElement={<FiSearch />}
diff --git 
a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx 
b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
index 025c9490aaf..bb0e0f37659 100644
--- a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
+++ b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDags.tsx
@@ -37,7 +37,7 @@ export const SearchDags = ({
 }: {
   readonly setIsOpen: React.Dispatch<React.SetStateAction<boolean>>;
 }) => {
-  const { t: translate } = useTranslation("components");
+  const { t: translate } = useTranslation("dags");
   const queryClient = useQueryClient();
   const navigate = useNavigate();
   const SEARCH_LIMIT = 10;
@@ -86,7 +86,7 @@ export const SearchDags = ({
         loadOptions={searchDagDebounced}
         menuIsOpen
         onChange={onSelect}
-        placeholder={translate("searchDags.placeholder")}
+        placeholder={translate("search.dags")}
         // eslint-disable-next-line unicorn/no-null
         value={null} // null is required 
https://github.com/JedWatson/react-select/issues/3066
       />
diff --git 
a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDagsButton.tsx 
b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDagsButton.tsx
index dd0d4df6b69..71ba1c35e7b 100644
--- a/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDagsButton.tsx
+++ b/airflow-core/src/airflow/ui/src/components/SearchDags/SearchDagsButton.tsx
@@ -28,7 +28,7 @@ import { getMetaKey } from "src/utils";
 import { SearchDags } from "./SearchDags";
 
 export const SearchDagsButton = () => {
-  const { t: translate } = useTranslation("components");
+  const { t: translate } = useTranslation("dags");
   const [isOpen, setIsOpen] = useState(false);
   const metaKey = getMetaKey();
 
@@ -48,10 +48,10 @@ export const SearchDagsButton = () => {
   return (
     <Box>
       <Button justifyContent="flex-start" onClick={() => setIsOpen(true)} 
variant="subtle" w={200}>
-        <MdSearch /> {translate("searchDags.button")}{" "}
+        <MdSearch /> {translate("search.dags")}{" "}
         <Kbd size="sm">
           {metaKey}
-          {translate("searchDags.hotkey")}
+          {translate("search.hotkey")}
         </Kbd>
       </Button>
       <Dialog.Root onOpenChange={onOpenChange} open={isOpen} size="sm">
diff --git 
a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGButton.tsx 
b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGButton.tsx
index 11b7db1c00f..bef75fe2336 100644
--- a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGButton.tsx
+++ b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGButton.tsx
@@ -33,16 +33,16 @@ type Props = {
 
 const TriggerDAGButton: React.FC<Props> = ({ dag, withText = true }) => {
   const { onClose, onOpen, open } = useDisclosure();
-  const { t: translate } = useTranslation("dags");
+  const { t: translate } = useTranslation("components");
 
   return (
     <Box>
       <ActionButton
-        actionName={translate("dagActions.trigger.triggerDag")}
+        actionName={translate("triggerDag.title")}
         colorPalette="blue"
         icon={<FiPlay />}
         onClick={onOpen}
-        text={translate("dagActions.trigger.button")}
+        text={translate("triggerDag.button")}
         variant="solid"
         withText={withText}
       />
diff --git 
a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx 
b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
index 7ca866d5d69..9abc7bffe0c 100644
--- a/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
+++ b/airflow-core/src/airflow/ui/src/components/TriggerDag/TriggerDAGForm.tsx
@@ -50,7 +50,7 @@ export type DagRunTriggerParams = {
 };
 
 const TriggerDAGForm = ({ dagDisplayName, dagId, isPaused, onClose, open }: 
TriggerDAGFormProps) => {
-  const { t: translate } = useTranslation("components");
+  const { t: translate } = useTranslation(["common", "components"]);
   const [errors, setErrors] = useState<{ conf?: string; date?: unknown }>({});
   const [formError, setFormError] = useState(false);
   const initialParamsDict = useDagParams(dagId, open);
@@ -112,7 +112,7 @@ const TriggerDAGForm = ({ dagDisplayName, dagId, isPaused, 
onClose, open }: Trig
             <Field.Root invalid={Boolean(errors.date)} 
orientation="horizontal">
               <Stack>
                 <Field.Label fontSize="md" style={{ flexBasis: "30%" }}>
-                  {translate("triggerDag.logicalDate")}
+                  {translate("logicalDate")}
                 </Field.Label>
               </Stack>
               <Stack css={{ flexBasis: "70%" }}>
@@ -129,12 +129,12 @@ const TriggerDAGForm = ({ dagDisplayName, dagId, 
isPaused, onClose, open }: Trig
             <Field.Root mt={6} orientation="horizontal">
               <Stack>
                 <Field.Label fontSize="md" style={{ flexBasis: "30%" }}>
-                  {translate("triggerDag.runId")}
+                  {translate("runId")}
                 </Field.Label>
               </Stack>
               <Stack css={{ flexBasis: "70%" }}>
                 <Input {...field} size="sm" />
-                
<Field.HelperText>{translate("triggerDag.runIdHelp")}</Field.HelperText>
+                
<Field.HelperText>{translate("components:triggerDag.runIdHelp")}</Field.HelperText>
               </Stack>
             </Field.Root>
           )}
@@ -144,8 +144,8 @@ const TriggerDAGForm = ({ dagDisplayName, dagId, isPaused, 
onClose, open }: Trig
           name="note"
           render={({ field }) => (
             <Field.Root mt={6}>
-              <Field.Label 
fontSize="md">{translate("triggerDag.notes")}</Field.Label>
-              <EditableMarkdown field={field} 
placeholder={translate("triggerDag.notesPlaceholder")} />
+              <Field.Label 
fontSize="md">{translate("note.dagRun")}</Field.Label>
+              <EditableMarkdown field={field} 
placeholder={translate("note.placeholder")} />
             </Field.Root>
           )}
         />
@@ -169,7 +169,7 @@ const TriggerDAGForm = ({ dagDisplayName, dagId, isPaused, 
onClose, open }: Trig
             disabled={Boolean(errors.conf) || Boolean(errors.date) || 
formError || isPending}
             onClick={() => void handleSubmit(onSubmit)()}
           >
-            <FiPlay /> {translate("triggerDag.trigger")}
+            <FiPlay /> {translate("components:triggerDag.button")}
           </Button>
         </HStack>
       </Box>
diff --git a/airflow-core/src/airflow/ui/src/constants/stateOptions.ts 
b/airflow-core/src/airflow/ui/src/constants/stateOptions.ts
index d66418bcfd1..eccb2be11be 100644
--- a/airflow-core/src/airflow/ui/src/constants/stateOptions.ts
+++ b/airflow-core/src/airflow/ui/src/constants/stateOptions.ts
@@ -25,7 +25,7 @@ export const taskInstanceStateOptions = createListCollection<{
   value: TaskInstanceState | "all" | "none";
 }>({
   items: [
-    { label: "dags:taskInstances.allStates", value: "all" },
+    { label: "dags:filters.allStates", value: "all" },
     { label: "common:states.scheduled", value: "scheduled" },
     { label: "common:states.queued", value: "queued" },
     { label: "common:states.running", value: "running" },
@@ -44,7 +44,7 @@ export const taskInstanceStateOptions = createListCollection<{
 
 export const dagRunStateOptions = createListCollection({
   items: [
-    { label: "dags:runs.allStates", value: "all" },
+    { label: "dags:filters.allStates", value: "all" },
     { label: "common:states.queued", value: "queued" },
     { label: "common:states.running", value: "running" },
     { label: "common:states.failed", value: "failed" },
@@ -54,7 +54,7 @@ export const dagRunStateOptions = createListCollection({
 
 export const dagRunTypeOptions = createListCollection({
   items: [
-    { label: "dags:runs.allRunTypes", value: "all" },
+    { label: "dags:filters.allRunTypes", value: "all" },
     { label: "common:runTypes.backfill", value: "backfill" },
     { label: "common:runTypes.manual", value: "manual" },
     { label: "common:runTypes.scheduled", value: "scheduled" },
diff --git a/airflow-core/src/airflow/ui/src/i18n/config.ts 
b/airflow-core/src/airflow/ui/src/i18n/config.ts
index a8c93554d8a..0a89a7dd74f 100644
--- a/airflow-core/src/airflow/ui/src/i18n/config.ts
+++ b/airflow-core/src/airflow/ui/src/i18n/config.ts
@@ -50,6 +50,7 @@ import zhTWAdmin from "./locales/zh-TW/admin.json";
 import zhTWAssets from "./locales/zh-TW/assets.json";
 import zhTWBrowse from "./locales/zh-TW/browse.json";
 import zhTWCommon from "./locales/zh-TW/common.json";
+import zhTWComponents from "./locales/zh-TW/components.json";
 import zhTWDags from "./locales/zh-TW/dags.json";
 import zhTWDashboard from "./locales/zh-TW/dashboard.json";
 
@@ -113,6 +114,7 @@ const resources = {
     assets: zhTWAssets,
     browse: zhTWBrowse,
     common: zhTWCommon,
+    components: zhTWComponents,
     dags: zhTWDags,
     dashboard: zhTWDashboard,
   },
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/de/common.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/de/common.json
index 82039404270..4ca9b4228d0 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/de/common.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/de/common.json
@@ -17,6 +17,39 @@
   },
   "dag_one": "Dag",
   "dag_other": "Dags",
+  "dagDetails": {
+    "catchup": "Nachgeholt",
+    "concurrency": "Parallelität",
+    "dagRunTimeout": "Dag Lauf Zeitüberschreitung",
+    "defaultArgs": "Standard-Parameter",
+    "description": "Beschreibung",
+    "fileLocation": "Ablagepfad",
+    "hasTaskConcurrencyLimits": "Hat der Task Limitierungen zur Parallelität",
+    "lastExpired": "Letztmaliger Ablauf",
+    "lastParsed": "Letztmalig Eingelesen",
+    "latestDagVersion": "Letzte Dag Version",
+    "latestRun": "Letzter Lauf",
+    "maxActiveRuns": "Maximal aktive Läufe",
+    "maxActiveTasks": "Maximal aktive Tasks",
+    "maxConsecutiveFailedDagRuns": "Maximal fortlaufende fehlerhafte Dag 
Läufe",
+    "nextRun": "Nächster Lauf",
+    "owner": "Eigentümer",
+    "params": "Parameter",
+    "schedule": "Zeitplan",
+    "tags": "Markierungen"
+  },
+  "dagId": "Dag ID",
+  "dagRun": {
+    "conf": "Konfiguration",
+    "dagVersions": "Dag Versionen",
+    "dataIntervalEnd": "Datenintervall Ende",
+    "dataIntervalStart": "Datenintervall Start",
+    "lastSchedulingDecision": "Letzte Planungsentscheidung",
+    "queuedAt": "Wartend seit",
+    "runAfter": "Gelaufen ab",
+    "runType": "Typ des Laufs",
+    "triggeredBy": "Angestoßen von"
+  },
   "dagRun_one": "Dag Lauf",
   "dagRun_other": "Dag Läufe",
   "dagWarnings": "Dag Warnungen und Fehler",
@@ -28,10 +61,7 @@
     "githubRepo": "GitHub Ablage",
     "restApiReference": "REST API Referenz"
   },
-  "duration": {
-    "label": "Laufzeit",
-    "seconds": "{{count}}s"
-  },
+  "duration": "Laufzeit",
   "endDate": "Enddatum",
   "expression": {
     "all": "Alle",
@@ -62,7 +92,13 @@
     "security": "Sicherheit"
   },
   "noItemsFound": "Kein Element vom Typ {{modelName}} gefunden",
-  "operator": "Operator",
+  "note": {
+    "add": "Eine Notiz hinzufügen",
+    "dagRun": "Notizen zum Dag Lauf",
+    "label": "Notiz",
+    "placeholder": "Eine Notiz hinzufügen...",
+    "taskInstance": "Notizen zu Task Instanzen"
+  },
   "pools": {
     "deferred": "Delegiert",
     "open": "Frei",
@@ -79,6 +115,7 @@
     "manual": "Manuell",
     "scheduled": "Geplant"
   },
+  "seconds": "{{count}}s",
   "security": {
     "actions": "Aktionen",
     "permissions": "Berechtigungen",
@@ -110,7 +147,6 @@
   "table": {
     "completedAt": "Abgeschlossen um",
     "createdAt": "Erstellt um",
-    "duration": "Laufzeit",
     "filterByTag": "Dags nach Markierung filtern",
     "filterColumns": "Tabellenspalten filtern",
     "filterReset_one": "Filter zurücksetzen",
@@ -126,8 +162,19 @@
     "tagPlaceholder": "Dags nach Markierung filtern",
     "to": "Zu"
   },
+  "task": {
+    "lastInstance": "Letzte Task Instanz",
+    "operator": "Operator",
+    "triggerRule": "Auslöse-Regel"
+  },
   "task_one": "Task",
   "task_other": "Tasks",
+  "taskInstance": {
+    "dagVersion": "Dag Version",
+    "pid": "PID",
+    "pool": "Pool",
+    "queuedAt": "Wartend seit"
+  },
   "taskInstance_one": "Task Instanz",
   "taskInstance_other": "Task Instanzen",
   "timeRange": {
@@ -145,7 +192,6 @@
     "utc": "UTC (Koordinierte Weltzeit)"
   },
   "triggered": "Angestoßen",
-  "triggerRule": "Auslöse-Regel",
   "tryNumber": "Versuch Nummer",
   "user": "Benutzer",
   "wrap": {
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/de/components.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/de/components.json
index 8e47944b9b0..57f2717f4b6 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/de/components.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/de/components.json
@@ -80,11 +80,6 @@
     "line": "Zeile"
   },
   "reparseDag": "Dag neu parsen",
-  "searchDags": {
-    "button": "Dags suchen",
-    "hotkey": "+K",
-    "placeholder": "Dags suchen"
-  },
   "sortedAscending": "aufsteigend sortier",
   "sortedDescending": "absteigend sortier",
   "sortedUnsorted": "unsortiert",
@@ -92,17 +87,13 @@
   "toggleCardView": "Kachelansicht anzeigen",
   "toggleTableView": "Tabellenansicht anzeigen",
   "triggerDag": {
+    "button": "Auslösen",
     "loading": "Lade DAG Information...",
     "loadingFailed": "Das Laden der DAG Information fehlgeschlagen. Bitt 
versuchen Sie es noch einmal.",
-    "logicalDate": "Logisches Datum",
-    "notes": "Notizen zum Dag Lauf",
-    "notesPlaceholder": "Klicken Sie hier um eine Notiz hinzuzufügen",
-    "runId": "ID des Laufes (Run Id)",
     "runIdHelp": "Optional - wird automatisch erzeugt wenn nicht angegeben",
     "selectDescription": "Einen einzelnen Lauf dieses Dag auslösen",
     "selectLabel": "Einzelner Lauf",
     "title": "Dag Auslösen",
-    "trigger": "Auslösen",
     "unpause": "Dag {{dagDisplayName}} beim Auslösen des Laufes aktiv schalten"
   },
   "versionDetails": {
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/de/dag.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/de/dag.json
index 7334afe09e1..9d1cc90f077 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/de/dag.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/de/dag.json
@@ -2,33 +2,9 @@
   "allRuns": "Alle Läufe",
   "code": {
     "bundleUrl": "Bündel Url",
-    "bundleVersion": "Bündel Version:",
     "noCode": "Kein Programmcode gefunden",
     "parsedAt": "Eingelesen um:"
   },
-  "details": {
-    "fields": {
-      "bundleVersion": "Bündel Version",
-      "catchup": "Nachgeholt",
-      "concurrency": "Parallelität",
-      "dagId": "Dag ID",
-      "dagRunTimeout": "Dag Lauf Zeitüberschreitung",
-      "defaultArgs": "Standard-Parameter",
-      "description": "Beschreibung",
-      "endDate": "Enddatum",
-      "fileLocation": "Ablagepfad",
-      "hasTaskConcurrencyLimits": "Hat der Task Limitierungen zur 
Parallelität",
-      "lastExpired": "Letztmaliger Ablauf",
-      "lastParsed": "Letztmalig Eingelesen",
-      "latestDagVersion": "Latzte Dag Version",
-      "maxActiveRuns": "Maximal aktive Läufe",
-      "maxActiveTasks": "Maximal aktive Tasks",
-      "maxConsecutiveFailedDagRuns": "Maximal fortlaufende fehlerhafte Dag 
Läufe",
-      "params": "Parameter",
-      "startDate": "Startdatum",
-      "timezone": "Zeitzone"
-    }
-  },
   "grid": {
     "buttons": {
       "resetToLatest": "Auf Letzten zurücksetzen",
@@ -38,17 +14,6 @@
   "header": {
     "buttons": {
       "dagDocs": "Dag Dokumentation"
-    },
-    "modals": {
-      "docTitle": "Dag Dokumentation"
-    },
-    "stats": {
-      "latestDagVersion": "Letzte Dag Version",
-      "latestRun": "Letzter Lauf",
-      "nextRun": "Nächster Lauf",
-      "owner": "Eigentümer",
-      "schedule": "Zeitplan",
-      "tags": "Markierungen"
     }
   },
   "overview": {
@@ -97,11 +62,6 @@
     "runs": "Läufe",
     "tasks": "Tasks"
   },
-  "task": {
-    "card": {
-      "lastInstance": "Letzte Task Instanz"
-    }
-  },
   "taskGroups": {
     "collapseAll": "Alle Task-Gruppen einklappen",
     "expandAll": "Alle Task-Gruppen aufklappen"
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/de/dags.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/de/dags.json
index 5eb4d8b1056..7519b880357 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/de/dags.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/de/dags.json
@@ -4,62 +4,27 @@
     "delete": {
       "button": "Dag löschen",
       "warning": "Diese Aktion löscht alle Metadaten zu diesem Dag mit allen 
Läufen und Task Instanzen."
-    },
-    "trigger": {
-      "button": "Auslösen",
-      "triggerDag": "Dag auslösen"
     }
   },
   "filters": {
+    "allRunTypes": "Alle Arten von Läufen",
+    "allStates": "Alle Stati",
     "paused": {
       "active": "Aktiv",
       "all": "Alle",
       "paused": "Pausiert"
     }
   },
-  "list": {
-    "advancedSearch": "Erweiterte Suche",
-    "clearSearch": "Suche zurücksetzen",
-    "columns": {
-      "dagId": "Dag ID",
-      "lastDagRun": "Letzter Dag Lauf",
-      "nextDagRun": "Nächster Dag Lauf",
-      "schedule": "Zeitplan",
-      "tags": "Markierungen"
-    },
-    "ownerLink": "Besitzer Verlinkungen zu {{owner}}",
-    "searchPlaceholder": "Dags suchen"
-  },
+  "ownerLink": "Besitzer Verlinkungen zu {{owner}}",
   "runAndTaskActions": {
+    "affectedTasks": {
+      "noItemsFound": "Keine Tasks gefunden.",
+      "title": "Betroffene Tasks: {{count}}"
+    },
     "clear": {
       "button": "{{type}} zurücksetzen",
       "buttonTooltip": "STRG+C zum Zurücksetzen tippen",
-      "dialog": {
-        "affectedTasks": {
-          "columns": {
-            "runId": "Lauf ID",
-            "state": "Status",
-            "taskId": "Task ID"
-          },
-          "noItemsFound": "Keine Tasks gefunden.",
-          "title": "Betroffene Tasks: {{count}}"
-        },
-        "confirm": "Bestätigen",
-        "note": {
-          "placeholder": "Eine Notiz hinzufügen...",
-          "title": "Notiz"
-        },
-        "options": {
-          "downstream": "Nachfolgende",
-          "existingTasks": "Bestehende Tasks bereinigen",
-          "future": "Zukünftige",
-          "onlyFailed": "Nur fehlgeschlagene Tasks bereinigen",
-          "past": "Vergangene",
-          "queueNew": "Neue Tasks einplanen",
-          "upstream": "Vorangegangene"
-        },
-        "title": "{{type}} bereinigen und neu planen"
-      }
+      "title": "{{type}} bereinigen und neu planen"
     },
     "delete": {
       "button": "{{type}} löschen",
@@ -80,32 +45,24 @@
         "failed": "STRG+F tippen um als fehlgeschlagen zu markieren",
         "success": "STRG+S tippen um als erfolgreich zu markieren"
       },
-      "dialog": {
-        "confirm": "Bestätigen",
-        "options": {
-          "downstream": "Nachfolgende",
-          "future": "Zukünftige",
-          "past": "Vergangene",
-          "upstream": "Vorangegangene"
-        },
-        "title": "{{type}} auf den Status {{state}} setzen"
-      }
+      "title": "{{type}} auf den Status {{state}} setzen"
+    },
+    "options": {
+      "downstream": "Nachfolgende",
+      "existingTasks": "Bestehende Tasks bereinigen",
+      "future": "Zukünftige",
+      "onlyFailed": "Nur fehlgeschlagene Tasks bereinigen",
+      "past": "Vergangene",
+      "queueNew": "Neue Tasks einplanen",
+      "upstream": "Vorangegangene"
     }
   },
-  "runs": {
-    "allRunTypes": "Alle Arten von Läufen",
-    "allStates": "Alle Stati",
-    "columns": {
-      "conf": "Dag Konfiguration",
-      "dagId": "Dag ID",
-      "dagVersions": "Dag Version",
-      "duration": "Laufzeit",
-      "endDate": "Enddatum",
-      "runAfter": "Gelaufen ab",
-      "runType": "Typ des Laufs",
-      "startDate": "Startdatum",
-      "state": "Status"
-    }
+  "search": {
+    "advanced": "Erweiterte Suche",
+    "clear": "Suche zurücksetzen",
+    "dags": "Dags suchen",
+    "hotkey": "+K",
+    "tasks": "Tasks suchen"
   },
   "sort": {
     "displayName": {
@@ -125,22 +82,5 @@
       "desc": "Sortiert nach nächstem Laufdatum (Letzter-Erster)"
     },
     "placeholder": "Sortieren nach"
-  },
-  "taskInstances": {
-    "allStates": "Alle Stati",
-    "columns": {
-      "dagId": "Dag ID",
-      "dagRun": "Dag Lauf",
-      "dagVersion": "Dag Version",
-      "duration": "Laufzeit",
-      "endDate": "Enddatum",
-      "operator": "Operator-Klasse",
-      "pool": "Pool",
-      "startDate": "Startdatum",
-      "state": "Status",
-      "taskId": "Task ID",
-      "tryNumber": "Versuch Nummer"
-    },
-    "searchPlaceholder": "Tasks suchen"
   }
 }
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/en/common.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/en/common.json
index 31ca56d587e..cc6cd97fe12 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/en/common.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/en/common.json
@@ -19,7 +19,40 @@
   },
   "dag_one": "Dag",
   "dag_other": "Dags",
+  "dagDetails": {
+    "catchup": "Catchup",
+    "concurrency": "Concurrency",
+    "dagRunTimeout": "Dag Run Timeout",
+    "defaultArgs": "Default Args",
+    "description": "Description",
+    "documentation": "Dag Documentation",
+    "fileLocation": "File Location",
+    "hasTaskConcurrencyLimits": "Has Task Concurrency Limits",
+    "lastExpired": "Last Expired",
+    "lastParsed": "Last Parsed",
+    "latestDagVersion": "Latest Dag Version",
+    "latestRun": "Latest Run",
+    "maxActiveRuns": "Max Active Runs",
+    "maxActiveTasks": "Max Active Tasks",
+    "maxConsecutiveFailedDagRuns": "Max Consecutive Failed Dag Runs",
+    "nextRun": "Next Run",
+    "owner": "Owner",
+    "params": "Params",
+    "schedule": "Schedule",
+    "tags": "Tags"
+  },
   "dagId": "Dag ID",
+  "dagRun": {
+    "conf": "Conf",
+    "dagVersions": "Dag Version(s)",
+    "dataIntervalEnd": "Data Interval End",
+    "dataIntervalStart": "Data Interval Start",
+    "lastSchedulingDecision": "Last Scheduling Decision",
+    "queuedAt": "Queued At",
+    "runAfter": "Run After",
+    "runType": "Run Type",
+    "triggeredBy": "Triggered By"
+  },
   "dagRun_one": "Dag Run",
   "dagRun_other": "Dag Runs",
   "dagWarnings": "Dag warnings/errors",
@@ -31,10 +64,7 @@
     "githubRepo": "GitHub Repo",
     "restApiReference": "REST API Reference"
   },
-  "duration": {
-    "label": "Duration",
-    "seconds": "{{count}}s"
-  },
+  "duration": "Duration",
   "endDate": "End Date",
   "expression": {
     "all": "All",
@@ -65,7 +95,13 @@
     "security": "Security"
   },
   "noItemsFound": "No {{modelName}} found",
-  "operator": "Operator",
+  "note": {
+    "add": "Add a note",
+    "dagRun": "Dag Run Note",
+    "label": "Note",
+    "placeholder": "Add a note...",
+    "taskInstance": "Task Instance Note"
+  },
   "pools": {
     "deferred": "Deferred",
     "open": "Open",
@@ -82,6 +118,7 @@
     "manual": "Manual",
     "scheduled": "Scheduled"
   },
+  "seconds": "{{count}}s",
   "security": {
     "actions": "Actions",
     "permissions": "Permissions",
@@ -113,7 +150,6 @@
   "table": {
     "completedAt": "Completed at",
     "createdAt": "Created at",
-    "duration": "Duration",
     "filterByTag": "Filter Dags by tag",
     "filterColumns": "Filter table columns",
     "filterReset_one": "Reset filter",
@@ -121,7 +157,6 @@
     "from": "From",
     "maxActiveRuns": "Max Active Runs",
     "noTagsFound": "No tags found",
-    "reprocessBehavior": "Reprocess Behavior",
     "tagMode": {
       "all": "All",
       "any": "Any"
@@ -129,19 +164,38 @@
     "tagPlaceholder": "Filter by tag",
     "to": "To"
   },
+  "task": {
+    "lastInstance": "Last Instance",
+    "operator": "Operator",
+    "triggerRule": "Trigger Rule"
+  },
   "task_one": "Task",
   "task_other": "Tasks",
   "taskId": "Task ID",
+  "taskInstance": {
+    "dagVersion": "Dag Version",
+    "executor": "Executor",
+    "executorConfig": "Executor Config",
+    "hostname": "Hostname",
+    "maxTries": "Max Tries",
+    "pid": "PID",
+    "pool": "Pool",
+    "poolSlots": "Pool Slots",
+    "priorityWeight": "Priority Weight",
+    "queue": "Queue",
+    "queuedWhen": "Queued At",
+    "scheduledWhen": "Scheduled At",
+    "unixname": "Unix Name"
+  },
   "taskInstance_one": "Task Instance",
   "taskInstance_other": "Task Instances",
   "timeRange": {
-    "duration": "Duration",
     "last12Hours": "Last 12 Hours",
     "last24Hours": "Last 24 Hours",
     "lastHour": "Last Hour",
     "pastWeek": "Past Week"
   },
-  "timezone": "timezone",
+  "timezone": "Timezone",
   "timezoneModal": {
     "current-timezone": "Current time in",
     "placeholder": "Select a timezone",
@@ -149,7 +203,6 @@
     "utc": "UTC (Coordinated Universal Time)"
   },
   "triggered": "Triggered",
-  "triggerRule": "Trigger Rule",
   "tryNumber": "Try Number",
   "user": "User",
   "wrap": {
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/en/components.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/en/components.json
index d8fbb20f482..5e1b1abd9d7 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/en/components.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/en/components.json
@@ -80,11 +80,6 @@
     "line": "line"
   },
   "reparseDag": "Reparse Dag",
-  "searchDags": {
-    "button": "Search Dags",
-    "hotkey": "+K",
-    "placeholder": "Search Dags"
-  },
   "sortedAscending": "sorted ascending",
   "sortedDescending": "sorted descending",
   "sortedUnsorted": "unsorted",
@@ -92,17 +87,13 @@
   "toggleCardView": "Show card view",
   "toggleTableView": "Show table view",
   "triggerDag": {
+    "button": "Trigger",
     "loading": "Loading DAG information...",
     "loadingFailed": "Failed to load DAG information. Please try again.",
-    "logicalDate": "Logical Date",
-    "notes": "Dag Run Notes",
-    "notesPlaceholder": "Click to add note",
-    "runId": "Run ID",
     "runIdHelp": "Optional - will be generated if not provided",
     "selectDescription": "Trigger a single run of this Dag",
     "selectLabel": "Single Run",
     "title": "Trigger Dag",
-    "trigger": "Trigger",
     "unpause": "Unpause {{dagDisplayName}} on trigger"
   },
   "versionDetails": {
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/en/dag.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/en/dag.json
index 2433357772b..0c840d245cd 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/en/dag.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/en/dag.json
@@ -2,33 +2,9 @@
   "allRuns": "All Runs",
   "code": {
     "bundleUrl": "Bundle Url",
-    "bundleVersion": "Bundle Version:",
     "noCode": "No Code Found",
     "parsedAt": "Parsed at:"
   },
-  "details": {
-    "fields": {
-      "bundleVersion": "Bundle Version",
-      "catchup": "Catchup",
-      "concurrency": "Concurrency",
-      "dagId": "Dag ID",
-      "dagRunTimeout": "Dag Run Timeout",
-      "defaultArgs": "Default Args",
-      "description": "Description",
-      "endDate": "End Date",
-      "fileLocation": "File Location",
-      "hasTaskConcurrencyLimits": "Has Task Concurrency Limits",
-      "lastExpired": "Last Expired",
-      "lastParsed": "Last Parsed",
-      "latestDagVersion": "Latest Dag Version",
-      "maxActiveRuns": "Max Active Runs",
-      "maxActiveTasks": "Max Active Tasks",
-      "maxConsecutiveFailedDagRuns": "Max Consecutive Failed Dag Runs",
-      "params": "Params",
-      "startDate": "Start Date",
-      "timezone": "Timezone"
-    }
-  },
   "grid": {
     "buttons": {
       "resetToLatest": "Reset to latest",
@@ -38,17 +14,6 @@
   "header": {
     "buttons": {
       "dagDocs": "Dag Docs"
-    },
-    "modals": {
-      "docTitle": "Dag Documentation"
-    },
-    "stats": {
-      "latestDagVersion": "Latest Dag Version",
-      "latestRun": "Latest Run",
-      "nextRun": "Next Run",
-      "owner": "Owner",
-      "schedule": "Schedule",
-      "tags": "Tags"
     }
   },
   "overview": {
@@ -98,11 +63,6 @@
     "runs": "Runs",
     "tasks": "Tasks"
   },
-  "task": {
-    "card": {
-      "lastInstance": "Last Instance"
-    }
-  },
   "taskGroups": {
     "collapseAll": "Collapse all task groups",
     "expandAll": "Expand all task groups"
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/en/dags.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/en/dags.json
index f2ae3f7812c..75dc4d692b8 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/en/dags.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/en/dags.json
@@ -4,62 +4,27 @@
     "delete": {
       "button": "Delete Dag",
       "warning": "This will remove all metadata related to the Dag, including 
Runs and Tasks."
-    },
-    "trigger": {
-      "button": "Trigger",
-      "triggerDag": "Trigger Dag"
     }
   },
   "filters": {
+    "allRunTypes": "All Run Types",
+    "allStates": "All States",
     "paused": {
       "active": "Active",
       "all": "All",
       "paused": "Paused"
     }
   },
-  "list": {
-    "advancedSearch": "Advanced Search",
-    "clearSearch": "Clear search",
-    "columns": {
-      "dagId": "Dag ID",
-      "lastDagRun": "Last Dag Run",
-      "nextDagRun": "Next Dag Run",
-      "schedule": "Schedule",
-      "tags": "Tags"
-    },
-    "ownerLink": "Owner link for {{owner}}",
-    "searchPlaceholder": "Search Dags"
-  },
+  "ownerLink": "Owner link for {{owner}}",
   "runAndTaskActions": {
+    "affectedTasks": {
+      "noItemsFound": "No tasks found.",
+      "title": "Affected Tasks: {{count}}"
+    },
     "clear": {
       "button": "Clear {{type}}",
       "buttonTooltip": "Press shift+c to clear",
-      "dialog": {
-        "affectedTasks": {
-          "columns": {
-            "runId": "Run ID",
-            "state": "State",
-            "taskId": "Task ID"
-          },
-          "noItemsFound": "No tasks found.",
-          "title": "Affected Tasks: {{count}}"
-        },
-        "confirm": "Confirm",
-        "note": {
-          "placeholder": "Add a note...",
-          "title": "Note"
-        },
-        "options": {
-          "downstream": "Downstream",
-          "existingTasks": "Clear existing tasks",
-          "future": "Future",
-          "onlyFailed": "Clear only failed tasks",
-          "past": "Past",
-          "queueNew": "Queue up new tasks",
-          "upstream": "Upstream"
-        },
-        "title": "Clear {{type}}"
-      }
+      "title": "Clear {{type}}"
     },
     "delete": {
       "button": "Delete {{type}}",
@@ -80,32 +45,24 @@
         "failed": "Press shift+f to mark as failed",
         "success": "Press shift+s to mark as success"
       },
-      "dialog": {
-        "confirm": "Confirm",
-        "options": {
-          "downstream": "Downstream",
-          "future": "Future",
-          "past": "Past",
-          "upstream": "Upstream"
-        },
-        "title": "Mark {{type}} as {{state}}"
-      }
+      "title": "Mark {{type}} as {{state}}"
+    },
+    "options": {
+      "downstream": "Downstream",
+      "existingTasks": "Clear existing tasks",
+      "future": "Future",
+      "onlyFailed": "Clear only failed tasks",
+      "past": "Past",
+      "queueNew": "Queue up new tasks",
+      "upstream": "Upstream"
     }
   },
-  "runs": {
-    "allRunTypes": "All Run Types",
-    "allStates": "All States",
-    "columns": {
-      "conf": "Conf",
-      "dagId": "Dag ID",
-      "dagVersions": "Dag Versions",
-      "duration": "Duration",
-      "endDate": "End Date",
-      "runAfter": "Run After",
-      "runType": "Run Type",
-      "startDate": "Start Date",
-      "state": "State"
-    }
+  "search": {
+    "advanced": "Advanced Search",
+    "clear": "Clear search",
+    "dags": "Search Dags",
+    "hotkey": "+K",
+    "tasks": "Search Tasks"
   },
   "sort": {
     "displayName": {
@@ -125,22 +82,5 @@
       "desc": "Sort by Next Dag Run (Latest-Earliest)"
     },
     "placeholder": "Sort by"
-  },
-  "taskInstances": {
-    "allStates": "All States",
-    "columns": {
-      "dagId": "Dag ID",
-      "dagRun": "Dag Run",
-      "dagVersion": "Dag Version",
-      "duration": "Duration",
-      "endDate": "End Date",
-      "operator": "Operator",
-      "pool": "Pool",
-      "startDate": "Start Date",
-      "state": "State",
-      "taskId": "Task ID",
-      "tryNumber": "Try Number"
-    },
-    "searchPlaceholder": "Search Tasks"
   }
 }
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/he/common.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/he/common.json
index a95ef0664ea..af11c8c48d3 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/he/common.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/he/common.json
@@ -22,6 +22,7 @@
     "githubRepo": "GitHub Repo",
     "restApiReference": "REST API תיעוד"
   },
+  "duration": "משך זמן",
   "language": {
     "chinese": "סינית מסורתית",
     "english": "אנגלית",
@@ -67,7 +68,6 @@
   "taskInstance_one": "משימה בודדת",
   "taskInstance_other": "משימה אחרת",
   "timeRange": {
-    "duration": "משך זמן",
     "last12Hours": "12 השעות האחרונות",
     "last24Hours": "24 השעות האחרונות",
     "lastHour": "השעה האחרונה",
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/ko/common.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/ko/common.json
index 4189a350acc..dc4217be1eb 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/ko/common.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/ko/common.json
@@ -22,6 +22,7 @@
     "githubRepo": "GitHub 저장소",
     "restApiReference": "REST API 참조"
   },
+  "duration": "지속 시간",
   "logout": "로그아웃",
   "nav": {
     "admin": "관리자",
@@ -62,7 +63,6 @@
   "taskInstance_one": "작업 인스턴스",
   "taskInstance_other": "작업 인스턴스들",
   "timeRange": {
-    "duration": "지속 시간",
     "last12Hours": "지난 12 시간",
     "last24Hours": "지난 24 시간",
     "lastHour": "지난 1시간",
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/nl/common.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/nl/common.json
index a68a472f207..6562f9c686a 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/nl/common.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/nl/common.json
@@ -22,6 +22,7 @@
     "githubRepo": "GitHub Repo",
     "restApiReference": "REST API referentie"
   },
+  "duration": "Duur",
   "logout": "Uitloggen",
   "nav": {
     "admin": "Beheer",
@@ -61,7 +62,6 @@
   "taskInstance_one": "Task Instance",
   "taskInstance_other": "Task Instances",
   "timeRange": {
-    "duration": "Duur",
     "last12Hours": "Laatste 12 uur",
     "last24Hours": "Laatste 24 uur",
     "lastHour": "Laatste uur",
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/pl/common.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/pl/common.json
index 04c9c047dbf..463a276c9f4 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/pl/common.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/pl/common.json
@@ -17,6 +17,35 @@
   },
   "dag_one": "Dag",
   "dag_other": "Dagi",
+  "dagDetails": {
+    "catchup": "Nadrabianie zaległości",
+    "concurrency": "Współbieżność",
+    "dagRunTimeout": "Limit czasu wykonania Daga",
+    "defaultArgs": "Domyślne argumenty",
+    "description": "Opis",
+    "documentation": "Dokumentacja Daga",
+    "fileLocation": "Lokalizacja pliku",
+    "hasTaskConcurrencyLimits": "Posiada ograniczenia współbieżności zadań",
+    "lastExpired": "Ostatnio wygasły",
+    "lastParsed": "Ostatnia analiza",
+    "latestDagVersion": "Najnowsza wersja Daga",
+    "latestRun": "Ostatnie wykonanie",
+    "maxActiveRuns": "Maksymalna liczba aktywnych wykonań",
+    "maxActiveTasks": "Maksymalna liczba aktywnych zadań",
+    "maxConsecutiveFailedDagRuns": "Maksymalna liczba kolejnych nieudanych 
wykonań Daga",
+    "nextRun": "Następne Wykonanie Daga",
+    "owner": "Właściciel",
+    "params": "Parametry",
+    "schedule": "Harmonogram",
+    "tags": "Etykiety"
+  },
+  "dagId": "Identyfikator Daga",
+  "dagRun": {
+    "conf": "Konfiguracja",
+    "dagVersions": "Wersje Daga",
+    "runAfter": "Wykonaj po",
+    "runType": "Typ wykonania"
+  },
   "dagRun_one": "Wykonanie Daga",
   "dagRun_other": "Wykonania Dagów",
   "dagWarnings": "Ostrzeżenia/Błędy Daga",
@@ -28,10 +57,7 @@
     "githubRepo": "Repozytorium GitHub",
     "restApiReference": "Dokuentacja REST API"
   },
-  "duration": {
-    "label": "Czas trwania",
-    "seconds": "{{count}}s"
-  },
+  "duration": "Czas trwania",
   "endDate": "Data zakończenia",
   "expression": {
     "all": "Wszystkie",
@@ -62,7 +88,12 @@
     "security": "Bezpieczeństwo"
   },
   "noItemsFound": "Nie znaleziono modelu {{modelName}}",
-  "operator": "Operator",
+  "note": {
+    "add": "Dodać notatkę",
+    "dagRun": "Notatki wykonania Daga",
+    "label": "Notatka",
+    "placeholder": "Dodaj notatkę..."
+  },
   "pools": {
     "deferred": "Odłożone",
     "open": "Otwarte",
@@ -79,6 +110,7 @@
     "manual": "Ręcznie",
     "scheduled": "Według harmonogramu"
   },
+  "seconds": "{{count}}s",
   "security": {
     "actions": "Akcje",
     "permissions": "Uprawnienia",
@@ -110,7 +142,6 @@
   "table": {
     "completedAt": "Zakończono o",
     "createdAt": "Utworzono o",
-    "duration": "Czas trwania",
     "filterByTag": "Filtruj Dagi według tagu",
     "filterColumns": "Filtruj kolumny tabeli",
     "filterReset_one": "Resetuj filtr",
@@ -126,12 +157,21 @@
     "tagPlaceholder": "Filtruj według etykiety",
     "to": "Do"
   },
+  "task": {
+    "lastInstance": "Ostatnia instancja",
+    "operator": "Operator",
+    "triggerRule": "Reguła wywołania"
+  },
   "task_one": "Zadanie",
   "task_other": "Zadania",
+  "taskId": "Identifikator Zadania",
+  "taskInstance": {
+    "dagVersion": "Wersja Daga",
+    "pool": "Pula"
+  },
   "taskInstance_one": "Instancja Zadania",
   "taskInstance_other": "Instancje Zadań",
   "timeRange": {
-    "duration": "Czas trwania",
     "last12Hours": "Ostatnie 12 godzin",
     "last24Hours": "Ostatnie 24 godziny",
     "lastHour": "Ostatnia godzina",
@@ -145,7 +185,6 @@
     "utc": "UTC (Uniwersalny Czas Koordynowany)"
   },
   "triggered": "Wywołany",
-  "triggerRule": "Reguła wywołania",
   "tryNumber": "Numer próby",
   "user": "Użytkownik",
   "wrap": {
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/pl/components.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/pl/components.json
index ae52b8d5d41..25526c053ae 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/pl/components.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/pl/components.json
@@ -80,11 +80,6 @@
     "line": "linia"
   },
   "reparseDag": "Ponowne parsowanie Daga",
-  "searchDags": {
-    "button": "Szukaj Daga",
-    "hotkey": "+K",
-    "placeholder": "Szukaj Daga"
-  },
   "sortedAscending": "posortowane rosnąco",
   "sortedDescending": "posortowane malejąco",
   "sortedUnsorted": "nieposortowane",
@@ -94,10 +89,6 @@
   "triggerDag": {
     "loading": "Ładowanie informacji o Dagach...",
     "loadingFailed": "Nie udało się załadować informacji o Dagach. Spróbuj 
ponownie.",
-    "logicalDate": "Data logiczna",
-    "notes": "Notatki wykonania Daga",
-    "notesPlaceholder": "Kliknij, aby dodać notatkę",
-    "runId": "Identyfikator wykonania",
     "runIdHelp": "Opcjonalne - zostanie wygenerowane, jeśli nie podano",
     "selectDescription": "Wyzwól pojedyncze wykonanie tego Daga",
     "selectLabel": "Pojedyncze wykonanie",
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/pl/dag.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/pl/dag.json
index b28a96eb7d1..c82f60de1e9 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/pl/dag.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/pl/dag.json
@@ -2,33 +2,9 @@
   "allRuns": "Wszystkie wykonania",
   "code": {
     "bundleUrl": "Adres URL paczki Dagów",
-    "bundleVersion": "Wersja paczki Dagów:",
     "noCode": "Nie znaleziono kodu",
     "parsedAt": "Przeanalizowano o:"
   },
-  "details": {
-    "fields": {
-      "bundleVersion": "Wersja paczki Dagów",
-      "catchup": "Nadrabianie zaległości",
-      "concurrency": "Współbieżność",
-      "dagId": "Identyfikator Daga",
-      "dagRunTimeout": "Limit czasu wykonania Daga",
-      "defaultArgs": "Domyślne argumenty",
-      "description": "Opis",
-      "endDate": "Data zakończenia",
-      "fileLocation": "Lokalizacja pliku",
-      "hasTaskConcurrencyLimits": "Posiada ograniczenia współbieżności zadań",
-      "lastExpired": "Ostatnio wygasły",
-      "lastParsed": "Ostatnia analiza",
-      "latestDagVersion": "Najnowsza wersja Daga",
-      "maxActiveRuns": "Maksymalna liczba aktywnych wykonań",
-      "maxActiveTasks": "Maksymalna liczba aktywnych zadań",
-      "maxConsecutiveFailedDagRuns": "Maksymalna liczba kolejnych nieudanych 
wykonań Daga",
-      "params": "Parametry",
-      "startDate": "Data rozpoczęcia",
-      "timezone": "Strefa czasowa"
-    }
-  },
   "grid": {
     "buttons": {
       "resetToLatest": "Przywróć do najnowszego",
@@ -38,17 +14,6 @@
   "header": {
     "buttons": {
       "dagDocs": "Dokumentacja Daga"
-    },
-    "modals": {
-      "docTitle": "Dokumentacja Daga"
-    },
-    "stats": {
-      "latestDagVersion": "Najnowsza wersja Daga",
-      "latestRun": "Ostatnie wykonanie",
-      "nextRun": "Następne wykonanie",
-      "owner": "Właściciel",
-      "schedule": "Harmonogram",
-      "tags": "Etykiety"
     }
   },
   "overview": {
@@ -97,11 +62,6 @@
     "runs": "Uruchomienia",
     "tasks": "Zadania"
   },
-  "task": {
-    "card": {
-      "lastInstance": "Ostatnia instancja"
-    }
-  },
   "taskGroups": {
     "collapseAll": "Zwiń wszystkie grupy zadań",
     "expandAll": "Rozwiń wszystkie grupy zadań"
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/pl/dags.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/pl/dags.json
index 60386fc0ae4..b86a82bbb94 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/pl/dags.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/pl/dags.json
@@ -4,62 +4,27 @@
     "delete": {
       "button": "Usuń Daga",
       "warning": "Wszystkie metadane, włączając metadane Dagów, wykonań i 
zadań zostaną usunięte."
-    },
-    "trigger": {
-      "button": "Uruchom",
-      "triggerDag": "Uruchom Daga"
     }
   },
   "filters": {
+    "allRunTypes": "Wszystkie Typy Wykonań",
+    "allStates": "Wszystkie Stany",
     "paused": {
       "active": "Aktywne",
       "all": "Wszystkie",
       "paused": "Wstrzymane"
     }
   },
-  "list": {
-    "advancedSearch": "Wyszukiwanie zaawansowane",
-    "clearSearch": "Wyczyść wyszukiwanie",
-    "columns": {
-      "dagId": "Identyfikator Daga",
-      "lastDagRun": "Ostatnie Wykonanie Daga",
-      "nextDagRun": "Następne Wykonanie Daga",
-      "schedule": "Harmonogram",
-      "tags": "Etykiety"
-    },
-    "ownerLink": "Link do właściciela {{owner}}",
-    "searchPlaceholder": "Szukaj Dagów"
-  },
+  "ownerLink": "Link do właściciela {{owner}}",
   "runAndTaskActions": {
+    "affectedTasks": {
+      "noItemsFound": "Nie znaleziono zadań.",
+      "title": "Liczba wybranych zadań: {{count}}"
+    },
     "clear": {
       "button": "Wyczyść {{type}}",
       "buttonTooltip": "Użyj shift+c żeby wyczyścić",
-      "dialog": {
-        "affectedTasks": {
-          "columns": {
-            "runId": "Identifikator Wykonania",
-            "state": "Stan",
-            "taskId": "Identifikator Zadania"
-          },
-          "noItemsFound": "Nie znaleziono zadań.",
-          "title": "Liczba wybranych zadań: {{count}}"
-        },
-        "confirm": "Potwierdź",
-        "note": {
-          "placeholder": "Dodaj notatkę..",
-          "title": "Notatka"
-        },
-        "options": {
-          "downstream": "Taski podrzędne",
-          "existingTasks": "Wyczyść istniejące zadania",
-          "future": "Przyszłe zadania",
-          "onlyFailed": "Wyczyść tylko nieudane zadania",
-          "past": "Przeszłe zadania",
-          "queueNew": "Kolejkuj nowe zadania",
-          "upstream": "Taski nadrzędne"
-        },
-        "title": "Wyczyść {{type}}"
-      }
+      "title": "Wyczyść {{type}}"
     },
     "delete": {
       "button": "Usuń {{type}}",
@@ -80,32 +45,24 @@
         "failed": "Użyj shift+f aby oznaczyć jako nieudane",
         "success": "Użyj shift+s aby oznaczyć jako udane"
       },
-      "dialog": {
-        "confirm": "Potwierdź",
-        "options": {
-          "downstream": "Podrzędne",
-          "future": "Przyszłe",
-          "past": "Przeszłe",
-          "upstream": "Nadrzędne"
-        },
-        "title": "Ustaw {{type}} jako {{state}}"
-      }
+      "title": "Ustaw {{type}} jako {{state}}"
+    },
+    "options": {
+      "downstream": "Taski podrzędne",
+      "existingTasks": "Wyczyść istniejące zadania",
+      "future": "Przyszłe zadania",
+      "onlyFailed": "Wyczyść tylko nieudane zadania",
+      "past": "Przeszłe zadania",
+      "queueNew": "Kolejkuj nowe zadania",
+      "upstream": "Taski nadrzędne"
     }
   },
-  "runs": {
-    "allRunTypes": "Wszystkie Typy Wykonań",
-    "allStates": "Wszystkie Stany",
-    "columns": {
-      "conf": "Konfiguracja",
-      "dagId": "Identyfikator Daga",
-      "dagVersions": "Wersje Daga",
-      "duration": "Czas trwania",
-      "endDate": "Data zakończenia",
-      "runAfter": "Wykonaj po",
-      "runType": "Typ wykonania",
-      "startDate": "Data rozpoczęcia",
-      "state": "Stan"
-    }
+  "search": {
+    "advanced": "Wyszukiwanie zaawansowane",
+    "clear": "Wyczyść wyszukiwanie",
+    "dags": "Szukaj Dagów",
+    "hotkey": "+K",
+    "tasks": "Szukaj instancji zadań"
   },
   "sort": {
     "displayName": {
@@ -125,22 +82,5 @@
       "desc": "Sortuj według Następnego Wykonania Daga 
(Najnowsze-Najwcześniejsze)"
     },
     "placeholder": "Sortuj według"
-  },
-  "taskInstances": {
-    "allStates": "Wszystkie Stany",
-    "columns": {
-      "dagId": "Identyfikator Daga",
-      "dagRun": "Identifikator Wykonania Daga",
-      "dagVersion": "Wersja Daga",
-      "duration": "Czas trwania",
-      "endDate": "Data zakończenia",
-      "operator": "Operator",
-      "pool": "Pula",
-      "startDate": "Data rozpoczęcia",
-      "state": "Stan",
-      "taskId": "Identifikator Zadania",
-      "tryNumber": "Numer próby"
-    },
-    "searchPlaceholder": "Szukaj instancji zadań"
   }
 }
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/common.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/common.json
index 18c11dfbc02..612422256c5 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/common.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/common.json
@@ -19,7 +19,18 @@
   },
   "dag_one": "Dag",
   "dag_other": "Dags",
+  "dagDetails": {
+    "latestRun": "上次 Dag 執行",
+    "nextRun": "下次 Dag 執行",
+    "schedule": "排程",
+    "tags": "標籤"
+  },
   "dagId": "Dag ID",
+  "dagRun": {
+    "dagVersions": "Dag 版本",
+    "runAfter": "最早可執行時間",
+    "runType": "執行類型"
+  },
   "dagRun_one": "Dag 執行",
   "dagRun_other": "Dag 執行",
   "dagWarnings": "Dag 警告 / 錯誤",
@@ -31,10 +42,7 @@
     "githubRepo": "GitHub 倉庫",
     "restApiReference": "REST API 參考"
   },
-  "duration": {
-    "label": "持續時間",
-    "seconds": "{{count}} 秒"
-  },
+  "duration": "時間範圍",
   "endDate": "結束日期",
   "expression": {
     "all": "全部",
@@ -65,7 +73,10 @@
     "security": "安全"
   },
   "noItemsFound": "找不到 {{modelName}}",
-  "operator": "運算子",
+  "note": {
+    "label": "備註",
+    "placeholder": "新增備註..."
+  },
   "pools": {
     "deferred": "已延後",
     "open": "開放",
@@ -82,6 +93,7 @@
     "manual": "手動觸發",
     "scheduled": "已排程"
   },
+  "seconds": "{{count}} 秒",
   "security": {
     "actions": "操作",
     "permissions": "權限",
@@ -129,13 +141,20 @@
     "tagPlaceholder": "依標籤篩選",
     "to": "到"
   },
+  "task": {
+    "operator": "運算子",
+    "triggerRule": "觸發規則"
+  },
   "task_one": "任務",
   "task_other": "任務",
   "taskId": "任務 ID",
+  "taskInstance": {
+    "dagVersion": "Dag 版本",
+    "pool": "資源池"
+  },
   "taskInstance_one": "任務實例",
   "taskInstance_other": "任務實例",
   "timeRange": {
-    "duration": "時間範圍",
     "last12Hours": "最近 12 小時",
     "last24Hours": "最近 24 小時",
     "lastHour": "最近 1 小時",
@@ -149,7 +168,6 @@
     "utc": "UTC"
   },
   "triggered": "已觸發",
-  "triggerRule": "觸發規則",
   "tryNumber": "嘗試次數",
   "user": "使用者",
   "wrap": {
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/components.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/components.json
new file mode 100644
index 00000000000..3d0112b1cab
--- /dev/null
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/components.json
@@ -0,0 +1,6 @@
+{
+  "triggerDag": {
+    "button": "觸發",
+    "title": "觸發 Dag"
+  }
+}
diff --git a/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/dags.json 
b/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/dags.json
index a11dc98fee8..2712c6d3aa3 100644
--- a/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/dags.json
+++ b/airflow-core/src/airflow/ui/src/i18n/locales/zh-TW/dags.json
@@ -4,62 +4,27 @@
     "delete": {
       "button": "刪除 Dag",
       "warning": "這將會刪除所有與此 Dag 相關的系統資料,包括 Dag 執行與任務。"
-    },
-    "trigger": {
-      "button": "觸發",
-      "triggerDag": "觸發 Dag"
     }
   },
   "filters": {
+    "allRunTypes": "全部執行類型",
+    "allStates": "全部狀態",
     "paused": {
       "active": "啟用中",
       "all": "全部",
       "paused": "暫停"
     }
   },
-  "list": {
-    "advancedSearch": "進階搜尋",
-    "clearSearch": "清除搜尋",
-    "columns": {
-      "dagId": "Dag ID",
-      "lastDagRun": "上次 Dag 執行",
-      "nextDagRun": "下次 Dag 執行",
-      "schedule": "排程",
-      "tags": "標籤"
-    },
-    "ownerLink": "擁有者 {{owner}} 的連結",
-    "searchPlaceholder": "搜尋 Dags"
-  },
+  "ownerLink": "擁有者 {{owner}} 的連結",
   "runAndTaskActions": {
+    "affectedTasks": {
+      "noItemsFound": "找不到任務。",
+      "title": "受影響的任務: {{count}}"
+    },
     "clear": {
       "button": "清除 {{type}}",
       "buttonTooltip": "按下 shift+c 清除",
-      "dialog": {
-        "affectedTasks": {
-          "columns": {
-            "runId": "執行 ID",
-            "state": "狀態",
-            "taskId": "任務 ID"
-          },
-          "noItemsFound": "找不到任務。",
-          "title": "受影響的任務: {{count}}"
-        },
-        "confirm": "確認",
-        "note": {
-          "placeholder": "新增備註...",
-          "title": "備註"
-        },
-        "options": {
-          "downstream": "下游",
-          "existingTasks": "清除現有任務",
-          "future": "未來",
-          "onlyFailed": "清除失敗任務",
-          "past": "過去",
-          "queueNew": "排隊新任務",
-          "upstream": "上游"
-        },
-        "title": "清除{{type}}"
-      }
+      "title": "清除{{type}}"
     },
     "delete": {
       "button": "刪除{{type}}",
@@ -80,31 +45,23 @@
         "failed": "按下 shift+f 標記為失敗",
         "success": "按下 shift+s 標記為成功"
       },
-      "dialog": {
-        "confirm": "確認",
-        "options": {
-          "downstream": "下游",
-          "future": "未來",
-          "past": "過去",
-          "upstream": "上游"
-        },
-        "title": "標記為{{type}}為{{state}}"
-      }
+      "title": "標記為{{type}}為{{state}}"
+    },
+    "options": {
+      "downstream": "下游",
+      "existingTasks": "清除現有任務",
+      "future": "未來",
+      "onlyFailed": "清除失敗任務",
+      "past": "過去",
+      "queueNew": "排隊新任務",
+      "upstream": "上游"
     }
   },
-  "runs": {
-    "allRunTypes": "全部執行類型",
-    "allStates": "全部狀態",
-    "columns": {
-      "dagId": "Dag ID",
-      "dagVersions": "Dag 版本",
-      "duration": "持續時間",
-      "endDate": "結束日期",
-      "runAfter": "最早可執行時間",
-      "runType": "執行類型",
-      "startDate": "開始日期",
-      "state": "狀態"
-    }
+  "search": {
+    "advanced": "進階搜尋",
+    "clear": "清除搜尋",
+    "dags": "搜尋 Dags",
+    "tasks": "搜尋任務"
   },
   "sort": {
     "displayName": {
@@ -124,22 +81,5 @@
       "desc": "依下次執行時間排序 (由遠而近)"
     },
     "placeholder": "排序方式"
-  },
-  "taskInstances": {
-    "allStates": "全部狀態",
-    "columns": {
-      "dagId": "Dag ID",
-      "dagRun": "Dag 執行",
-      "dagVersion": "Dag 版本",
-      "duration": "持續時間",
-      "endDate": "結束日期",
-      "operator": "運算子",
-      "pool": "資源池",
-      "startDate": "開始日期",
-      "state": "狀態",
-      "taskId": "任務 ID",
-      "tryNumber": "嘗試次數"
-    },
-    "searchPlaceholder": "搜尋任務"
   }
 }
diff --git 
a/airflow-core/src/airflow/ui/src/layouts/Details/Grid/DurationTick.tsx 
b/airflow-core/src/airflow/ui/src/layouts/Details/Grid/DurationTick.tsx
index 24958b706aa..199dc185d07 100644
--- a/airflow-core/src/airflow/ui/src/layouts/Details/Grid/DurationTick.tsx
+++ b/airflow-core/src/airflow/ui/src/layouts/Details/Grid/DurationTick.tsx
@@ -28,7 +28,7 @@ export const DurationTick = ({ duration, ...rest }: Props) => 
{
 
   return (
     <Text color="border.emphasized" fontSize="xs" position="absolute" 
right={1} whiteSpace="nowrap" {...rest}>
-      {translate("duration.seconds", { count: Math.floor(duration) })}
+      {translate("seconds", { count: Math.floor(duration) })}
     </Text>
   );
 };
diff --git a/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx
index 287609d416b..47ce1ad8629 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/Code/Code.tsx
@@ -105,7 +105,8 @@ export const Code = () => {
             // eslint-disable-next-line 
@typescript-eslint/prefer-optional-chain
             dagVersion !== undefined && dagVersion.bundle_version !== null ? (
               <Heading as="h4" fontSize="14px" size="md" 
wordBreak="break-word">
-                {translate("code.bundleVersion")}{" "}
+                {translate("dagDetails.bundleVersion")}
+                {": "}
                 {dagVersion.bundle_url === null ? (
                   dagVersion.bundle_version
                 ) : (
diff --git a/airflow-core/src/airflow/ui/src/pages/Dag/Details.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/Details.tsx
index bc89371a675..a618568ed4c 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/Details.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/Details.tsx
@@ -27,7 +27,7 @@ import Time from "src/components/Time";
 import { ClipboardRoot, ClipboardIconButton } from "src/components/ui";
 
 export const Details = () => {
-  const { t: translate } = useTranslation("dag");
+  const { t: translate } = useTranslation(["common", "dag"]);
   const { dagId = "" } = useParams();
 
   const { data: dag } = useDagServiceGetDagDetails({
@@ -42,7 +42,7 @@ export const Details = () => {
         <Table.Root striped>
           <Table.Body>
             <Table.Row>
-              <Table.Cell>{translate("details.fields.dagId")}</Table.Cell>
+              <Table.Cell>{translate("dagId")}</Table.Cell>
               <Table.Cell>
                 <HStack>
                   {dag.dag_id}
@@ -53,86 +53,80 @@ export const Details = () => {
               </Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.description")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.description")}</Table.Cell>
               <Table.Cell>{dag.description}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              <Table.Cell>{translate("details.fields.timezone")}</Table.Cell>
+              <Table.Cell>{translate("common:timezone")}</Table.Cell>
               <Table.Cell>{dag.timezone}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.fileLocation")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.fileLocation")}</Table.Cell>
               <Table.Cell>
                 <Code>{dag.fileloc}</Code>
               </Table.Cell>
             </Table.Row>
             <Table.Row>
-              <Table.Cell>{translate("details.fields.lastParsed")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.lastParsed")}</Table.Cell>
               <Table.Cell>
                 <Time datetime={dag.last_parsed} />
               </Table.Cell>
             </Table.Row>
-            {dag.bundle_version !== null && (
-              <Table.Row>
-                
<Table.Cell>{translate("details.fields.bundleVersion")}</Table.Cell>
-                <Table.Cell>{dag.bundle_version}</Table.Cell>
-              </Table.Row>
-            )}
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.latestDagVersion")}</Table.Cell>
+              
<Table.Cell>{translate("dagDetails.latestDagVersion")}</Table.Cell>
               <Table.Cell>
                 <DagVersionDetails dagVersion={dag.latest_dag_version} />
               </Table.Cell>
             </Table.Row>
             <Table.Row>
-              <Table.Cell>{translate("details.fields.startDate")}</Table.Cell>
+              <Table.Cell>{translate("startDate")}</Table.Cell>
               <Table.Cell>
                 <Time datetime={dag.start_date} />
               </Table.Cell>
             </Table.Row>
             <Table.Row>
-              <Table.Cell>{translate("details.fields.endDate")}</Table.Cell>
+              <Table.Cell>{translate("endDate")}</Table.Cell>
               <Table.Cell>
                 <Time datetime={dag.end_date} />
               </Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.lastExpired")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.lastExpired")}</Table.Cell>
               <Table.Cell>
                 <Time datetime={dag.last_expired} />
               </Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.concurrency")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.concurrency")}</Table.Cell>
               <Table.Cell>{dag.concurrency}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.hasTaskConcurrencyLimits")}</Table.Cell>
+              
<Table.Cell>{translate("dagDetails.hasTaskConcurrencyLimits")}</Table.Cell>
               
<Table.Cell>{dag.has_task_concurrency_limits.toString()}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.dagRunTimeout")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.dagRunTimeout")}</Table.Cell>
               <Table.Cell>{dag.dag_run_timeout}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.maxActiveRuns")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.maxActiveRuns")}</Table.Cell>
               <Table.Cell>{dag.max_active_runs}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.maxActiveTasks")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.maxActiveTasks")}</Table.Cell>
               <Table.Cell>{dag.max_active_tasks}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              
<Table.Cell>{translate("details.fields.maxConsecutiveFailedDagRuns")}</Table.Cell>
+              
<Table.Cell>{translate("dagDetails.maxConsecutiveFailedDagRuns")}</Table.Cell>
               <Table.Cell>{dag.max_consecutive_failed_dag_runs}</Table.Cell>
             </Table.Row>
             <Table.Row>
-              <Table.Cell>{translate("details.fields.catchup")}</Table.Cell>
+              <Table.Cell>{translate("dagDetails.catchup")}</Table.Cell>
               <Table.Cell>{dag.catchup.toString()}</Table.Cell>
             </Table.Row>
             {dag.default_args === null ? undefined : (
               <Table.Row>
-                
<Table.Cell>{translate("details.fields.defaultArgs")}</Table.Cell>
+                <Table.Cell>{translate("dagDetails.defaultArgs")}</Table.Cell>
                 <Table.Cell>
                   <RenderedJsonField content={dag.default_args} />
                 </Table.Cell>
@@ -140,7 +134,7 @@ export const Details = () => {
             )}
             {dag.params === null ? undefined : (
               <Table.Row>
-                <Table.Cell>{translate("details.fields.params")}</Table.Cell>
+                <Table.Cell>{translate("dagDetails.params")}</Table.Cell>
                 <Table.Cell>
                   <RenderedJsonField content={dag.params} />
                 </Table.Cell>
diff --git a/airflow-core/src/airflow/ui/src/pages/Dag/Header.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/Header.tsx
index 74f5b06ac07..8f4c0c86cec 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/Header.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/Header.tsx
@@ -43,18 +43,18 @@ export const Header = ({
   readonly dagWithRuns?: DAGWithLatestDagRunsResponse;
   readonly isRefreshing?: boolean;
 }) => {
-  const { t: translate } = useTranslation("dag");
+  const { t: translate } = useTranslation(["common", "dag"]);
   // We would still like to show the dagId even if the dag object hasn't 
loaded yet
   const { dagId } = useParams();
   const latestRun = dagWithRuns?.latest_dag_runs ? 
dagWithRuns.latest_dag_runs[0] : undefined;
 
   const stats = [
     {
-      label: translate("header.stats.schedule"),
+      label: translate("dagDetails.schedule"),
       value: dagWithRuns === undefined ? undefined : <Schedule 
dag={dagWithRuns} />,
     },
     {
-      label: translate("header.stats.latestRun"),
+      label: translate("dagDetails.latestRun"),
       value:
         Boolean(latestRun) && latestRun !== undefined ? (
           <Link asChild color="fg.info">
@@ -71,7 +71,7 @@ export const Header = ({
         ) : undefined,
     },
     {
-      label: translate("header.stats.nextRun"),
+      label: translate("dagDetails.nextRun"),
       value: Boolean(dagWithRuns?.next_dagrun_run_after) ? (
         <DagRunInfo
           logicalDate={dagWithRuns?.next_dagrun_logical_date}
@@ -80,15 +80,15 @@ export const Header = ({
       ) : undefined,
     },
     {
-      label: translate("header.stats.owner"),
+      label: translate("dagDetails.owner"),
       value: <DagOwners ownerLinks={dag?.owner_links ?? undefined} 
owners={dag?.owners} />,
     },
     {
-      label: translate("header.stats.tags"),
+      label: translate("dagDetails.tags"),
       value: <DagTags tags={dag?.tags ?? []} />,
     },
     {
-      label: translate("header.stats.latestDagVersion"),
+      label: translate("dagDetails.latestDagVersion"),
       value: <DagVersion version={dag?.latest_dag_version} />,
     },
   ];
@@ -100,10 +100,10 @@ export const Header = ({
           <>
             {dag.doc_md === null ? undefined : (
               <DisplayMarkdownButton
-                header={translate("header.modals.docTitle")}
+                header={translate("dagDetails.documentation")}
                 icon={<FiBookOpen />}
                 mdContent={dag.doc_md}
-                text={translate("header.buttons.dagDocs")}
+                text={translate("dag:header.buttons.dagDocs")}
               />
             )}
             <ParseDag dagId={dag.dag_id} fileToken={dag.file_token} />
diff --git a/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskCard.tsx 
b/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskCard.tsx
index 3877105ea72..09f7de15f6e 100644
--- a/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskCard.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/Dag/Tasks/TaskCard.tsx
@@ -36,7 +36,7 @@ type Props = {
 };
 
 export const TaskCard = ({ dagId, task }: Props) => {
-  const { t: translate } = useTranslation(["dag", "common"]);
+  const { t: translate } = useTranslation();
   const refetchInterval = useAutoRefresh({ dagId });
 
   const { data } = useTaskInstanceServiceGetTaskInstances(
@@ -66,19 +66,19 @@ export const TaskCard = ({ dagId, task }: Props) => {
       <SimpleGrid columns={4} gap={4} height={20}>
         <VStack align="flex-start" gap={1}>
           <Heading color="fg.muted" fontSize="xs">
-            {translate("common:operator")}
+            {translate("task.operator")}
           </Heading>
           <Text fontSize="sm">{task.operator_name}</Text>
         </VStack>
         <VStack align="flex-start" gap={1}>
           <Heading color="fg.muted" fontSize="xs">
-            {translate("common:triggerRule")}
+            {translate("task.triggerRule")}
           </Heading>
           <Text fontSize="sm">{task.trigger_rule}</Text>
         </VStack>
         <VStack align="flex-start" gap={1}>
           <Heading color="fg.muted" fontSize="xs">
-            {translate("task.card.lastInstance")}
+            {translate("task.lastInstance")}
           </Heading>
           {data?.task_instances[0] ? (
             <TaskInstanceTooltip taskInstance={data.task_instances[0]}>
diff --git a/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx
index 99e2a89855c..5bb722ecbd1 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagRuns.tsx
@@ -59,7 +59,7 @@ const runColumns = (translate: TFunction, dagId?: string): 
Array<ColumnDef<DAGRu
         {
           accessorKey: "dag_display_name",
           enableSorting: false,
-          header: translate("dags:runs.columns.dagId"),
+          header: translate("dagId"),
         },
       ]),
   {
@@ -71,7 +71,7 @@ const runColumns = (translate: TFunction, dagId?: string): 
Array<ColumnDef<DAGRu
         </RouterLink>
       </Link>
     ),
-    header: translate("dags:runs.columns.runAfter"),
+    header: translate("dagRun.runAfter"),
   },
   {
     accessorKey: "state",
@@ -80,7 +80,7 @@ const runColumns = (translate: TFunction, dagId?: string): 
Array<ColumnDef<DAGRu
         original: { state },
       },
     }) => <StateBadge state={state}>{state}</StateBadge>,
-    header: () => translate("dags:runs.columns.state"),
+    header: () => translate("state"),
   },
   {
     accessorKey: "run_type",
@@ -91,22 +91,22 @@ const runColumns = (translate: TFunction, dagId?: string): 
Array<ColumnDef<DAGRu
       </HStack>
     ),
     enableSorting: false,
-    header: translate("dags:runs.columns.runType"),
+    header: translate("dagRun.runType"),
   },
   {
     accessorKey: "start_date",
     cell: ({ row: { original } }) => <Time datetime={original.start_date} />,
-    header: translate("dags:runs.columns.startDate"),
+    header: translate("startDate"),
   },
   {
     accessorKey: "end_date",
     cell: ({ row: { original } }) => <Time datetime={original.end_date} />,
-    header: translate("dags:runs.columns.endDate"),
+    header: translate("endDate"),
   },
   {
     accessorKey: "duration",
     cell: ({ row: { original } }) => renderDuration(original.duration),
-    header: translate("dags:runs.columns.duration"),
+    header: translate("duration"),
   },
   {
     accessorKey: "dag_versions",
@@ -119,7 +119,7 @@ const runColumns = (translate: TFunction, dagId?: string): 
Array<ColumnDef<DAGRu
       />
     ),
     enableSorting: false,
-    header: translate("dags:runs.columns.dagVersions"),
+    header: translate("dagRun.dagVersions"),
   },
   {
     accessorKey: "conf",
@@ -127,7 +127,7 @@ const runColumns = (translate: TFunction, dagId?: string): 
Array<ColumnDef<DAGRu
       original.conf && Object.keys(original.conf).length > 0 ? (
         <RenderedJsonField content={original.conf} jsonProps={{ collapsed: 
true }} />
       ) : undefined,
-    header: translate("dags:runs.columns.conf"),
+    header: translate("dagRun.conf"),
   },
   {
     accessorKey: "actions",
@@ -231,7 +231,7 @@ export const DagRuns = () => {
             <Select.ValueText width="auto">
               {() =>
                 filteredState === null ? (
-                  translate("dags:runs.allStates")
+                  translate("dags:filters.allStates")
                 ) : (
                   <StateBadge state={filteredState as DagRunState}>
                     {translate(`common:states.${filteredState}`)}
@@ -262,7 +262,7 @@ export const DagRuns = () => {
             <Select.ValueText width="auto">
               {() =>
                 filteredType === null ? (
-                  translate("dags:runs.allRunTypes")
+                  translate("dags:filters.allRunTypes")
                 ) : (
                   <Flex alignItems="center" gap={1}>
                     <RunTypeIcon runType={filteredType as DagRunType} />
diff --git a/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.tsx
index 46a9b362a72..35990017ec8 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/DagCard.tsx
@@ -38,7 +38,7 @@ type Props = {
 };
 
 export const DagCard = ({ dag }: Props) => {
-  const { t: translate } = useTranslation(["dags", "common"]);
+  const { t: translate } = useTranslation(["common", "dag"]);
   const [latestRun] = dag.latest_dag_runs;
 
   const refetchInterval = useAutoRefresh({ isPaused: dag.is_paused });
@@ -66,10 +66,10 @@ export const DagCard = ({ dag }: Props) => {
         </HStack>
       </Flex>
       <SimpleGrid columns={4} gap={1} height={20} px={3} py={1}>
-        <Stat label={translate("list.columns.schedule")}>
+        <Stat label={translate("dagDetails.schedule")}>
           <Schedule dag={dag} />
         </Stat>
-        <Stat label={translate("list.columns.lastDagRun")}>
+        <Stat label={translate("dagDetails.latestRun")}>
           {latestRun ? (
             <Link asChild color="fg.info">
               <RouterLink 
to={`/dags/${latestRun.dag_id}/runs/${latestRun.dag_run_id}`}>
@@ -85,7 +85,7 @@ export const DagCard = ({ dag }: Props) => {
             </Link>
           ) : undefined}
         </Stat>
-        <Stat label={translate("list.columns.nextDagRun")}>
+        <Stat label={translate("dagDetails.nextRun")}>
           {Boolean(dag.next_dagrun_run_after) ? (
             <DagRunInfo
               logicalDate={dag.next_dagrun_logical_date}
diff --git a/airflow-core/src/airflow/ui/src/pages/DagsList/DagOwners.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagOwners.tsx
index 70fb6195c0a..303827cbcea 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/DagOwners.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/DagOwners.tsx
@@ -38,7 +38,7 @@ export const DagOwners = ({
 
     return hasOwnerLink ? (
       <Link
-        aria-label={translate("list.ownerLink", { owner })}
+        aria-label={translate("ownerLink", { owner })}
         asChild
         color="fg.info"
         href={link}
diff --git a/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
index 4b711e9abad..046fe5d14ae 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/DagsList.tsx
@@ -79,13 +79,13 @@ const createColumns = (
         <RouterLink 
to={`/dags/${original.dag_id}`}>{original.dag_display_name}</RouterLink>
       </Link>
     ),
-    header: () => translate("list.columns.dagId"),
+    header: () => translate("dagId"),
   },
   {
     accessorKey: "timetable_description",
     cell: ({ row: { original } }) => <Schedule dag={original} />,
     enableSorting: false,
-    header: () => translate("list.columns.schedule"),
+    header: () => translate("dagDetails.schedule"),
   },
   {
     accessorKey: "next_dagrun",
@@ -96,7 +96,7 @@ const createColumns = (
           runAfter={original.next_dagrun_run_after as string}
         />
       ) : undefined,
-    header: () => translate("list.columns.nextDagRun"),
+    header: () => translate("dagDetails.nextRun"),
   },
   {
     accessorKey: "last_run_start_date",
@@ -114,7 +114,7 @@ const createColumns = (
           </RouterLink>
         </Link>
       ) : undefined,
-    header: () => translate("list.columns.lastDagRun"),
+    header: () => translate("dagDetails.latestRun"),
   },
   {
     accessorKey: "tags",
@@ -124,7 +124,7 @@ const createColumns = (
       },
     }) => <DagTags hideIcon tags={tags} />,
     enableSorting: false,
-    header: () => translate("list.columns.tags"),
+    header: () => translate("dagDetails.tags"),
   },
   {
     accessorKey: "trigger",
@@ -160,7 +160,7 @@ const cardDef: CardDef<DAGWithLatestDagRunsResponse> = {
 const DAGS_LIST_DISPLAY = "dags_list_display";
 
 export const DagsList = () => {
-  const { t: translate } = useTranslation(["dags", "common"]);
+  const { t: translate } = useTranslation();
   const [searchParams, setSearchParams] = useSearchParams();
   const [display, setDisplay] = useLocalStorage<"card" | 
"table">(DAGS_LIST_DISPLAY, "card");
   const dagRunsLimit = display === "card" ? 14 : 1;
@@ -242,13 +242,13 @@ export const DagsList = () => {
           buttonProps={{ disabled: true }}
           defaultValue={dagDisplayNamePattern ?? ""}
           onChange={handleSearchChange}
-          placeHolder={translate("list.searchPlaceholder")}
+          placeHolder={translate("dags:search.dags")}
         />
         <DagsFilters />
         <HStack justifyContent="space-between">
           <HStack>
             <Heading py={3} size="md">
-              {`${data?.total_entries ?? 0} ${(data?.total_entries ?? 0) === 1 
? translate("common:dag_one") : translate("common:dag_other")}`}
+              {`${data?.total_entries ?? 0} ${(data?.total_entries ?? 0) === 1 
? translate("dag_one") : translate("dag_other")}`}
             </Heading>
             <DAGImportErrors iconOnly />
           </HStack>
@@ -267,7 +267,7 @@ export const DagsList = () => {
           errorMessage={<ErrorAlert error={error} />}
           initialState={tableURLState}
           isLoading={isLoading}
-          modelName="Dag"
+          modelName={translate("dag_one")}
           onStateChange={setTableURLState}
           skeletonCount={display === "card" ? 5 : undefined}
           total={data?.total_entries ?? 0}
diff --git a/airflow-core/src/airflow/ui/src/pages/DagsList/RecentRuns.tsx 
b/airflow-core/src/airflow/ui/src/pages/DagsList/RecentRuns.tsx
index d4c11ab88ea..c53edaea44a 100644
--- a/airflow-core/src/airflow/ui/src/pages/DagsList/RecentRuns.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/DagsList/RecentRuns.tsx
@@ -36,7 +36,7 @@ export const RecentRuns = ({
 }: {
   readonly latestRuns: DAGWithLatestDagRunsResponse["latest_dag_runs"];
 }) => {
-  const { t: translate } = useTranslation(["dags", "common"]);
+  const { t: translate } = useTranslation();
 
   // Because of the styling (`row-reverse`), we need to reverse the runs so 
that the most recent run is on the right.
   const reversedRuns = [...latestRuns].reverse();
@@ -62,23 +62,23 @@ export const RecentRuns = ({
           content={
             <Box>
               <Text>
-                {translate("list.runs.state")}: 
{translate(`common:states.${run.state}`)}
+                {translate("state")}: {translate(`common:states.${run.state}`)}
               </Text>
               <Text>
-                {translate("list.runs.runAfter")}: <Time 
datetime={run.run_after} />
+                {translate("dagRun.runAfter")}: <Time datetime={run.run_after} 
/>
               </Text>
               {run.start_date === null ? undefined : (
                 <Text>
-                  {translate("list.runs.startDate")}: <Time 
datetime={run.start_date} />
+                  {translate("startDate")}: <Time datetime={run.start_date} />
                 </Text>
               )}
               {run.end_date === null ? undefined : (
                 <Text>
-                  {translate("list.runs.endDate")}: <Time 
datetime={run.end_date} />
+                  {translate("endDate")}: <Time datetime={run.end_date} />
                 </Text>
               )}
               <Text>
-                {translate("list.runs.duration")}: 
{getDuration(run.start_date, run.end_date)}
+                {translate("duration")}: {getDuration(run.start_date, 
run.end_date)}
               </Text>
             </Box>
           }
diff --git 
a/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx 
b/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
index e0a427cac64..13d084a5c74 100644
--- a/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
+++ b/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstances.tsx
@@ -68,7 +68,7 @@ const taskInstanceColumns = ({
         {
           accessorKey: "dag_display_name",
           enableSorting: false,
-          header: translate("dags:taskInstances.columns.dagId"),
+          header: translate("dagId"),
         },
       ]),
   ...(Boolean(runId)
@@ -87,7 +87,7 @@ const taskInstanceColumns = ({
             ) : (
               <Time datetime={original.run_after} />
             ),
-          header: translate("dags:taskInstances.columns.dagRun"),
+          header: translate("dagRun_one"),
         },
       ]),
   ...(Boolean(taskId)
@@ -103,12 +103,12 @@ const taskInstanceColumns = ({
             </Link>
           ),
           enableSorting: false,
-          header: translate("dags:taskInstances.columns.taskId"),
+          header: translate("taskId"),
         },
       ]),
   {
     accessorKey: "rendered_map_index",
-    header: translate("common:mapIndex"),
+    header: translate("mapIndex"),
   },
   {
     accessorKey: "state",
@@ -117,7 +117,7 @@ const taskInstanceColumns = ({
         original: { state },
       },
     }) => <StateBadge 
state={state}>{translate(`common:states.${state}`)}</StateBadge>,
-    header: () => translate("dags:taskInstances.columns.state"),
+    header: () => translate("state"),
   },
   {
     accessorKey: "start_date",
@@ -131,38 +131,38 @@ const taskInstanceColumns = ({
       ) : (
         <Time datetime={original.start_date} />
       ),
-    header: translate("dags:taskInstances.columns.startDate"),
+    header: translate("startDate"),
   },
   {
     accessorKey: "end_date",
     cell: ({ row: { original } }) => <Time datetime={original.end_date} />,
-    header: translate("dags:taskInstances.columns.endDate"),
+    header: translate("endDate"),
   },
   {
     accessorKey: "try_number",
     enableSorting: false,
-    header: translate("dags:taskInstances.columns.tryNumber"),
+    header: translate("tryNumber"),
   },
   {
     accessorKey: "pool",
     enableSorting: false,
-    header: translate("dags:taskInstances.columns.pool"),
+    header: translate("taskInstance.pool"),
   },
   {
     accessorKey: "operator",
     enableSorting: false,
-    header: translate("dags:taskInstances.columns.operator"),
+    header: translate("task.operator"),
   },
   {
     cell: ({ row: { original } }) =>
       Boolean(original.start_date) ? getDuration(original.start_date, 
original.end_date) : "",
-    header: translate("dags:taskInstances.columns.duration"),
+    header: translate("duration"),
   },
   {
     accessorKey: "dag_version",
     cell: ({ row: { original } }) => <DagVersion 
version={original.dag_version} />,
     enableSorting: false,
-    header: translate("dags:taskInstances.columns.dagVersion"),
+    header: translate("taskInstance.dagVersion"),
   },
   {
     accessorKey: "actions",
diff --git 
a/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstancesFilter.tsx 
b/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstancesFilter.tsx
index 170486e4b65..4038df24fd9 100644
--- 
a/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstancesFilter.tsx
+++ 
b/airflow-core/src/airflow/ui/src/pages/TaskInstances/TaskInstancesFilter.tsx
@@ -88,7 +88,7 @@ export const TaskInstancesFilter = ({
         hideAdvanced
         hotkeyDisabled={Boolean(runId)}
         onChange={handleSearchChange}
-        placeHolder={translate("dags:taskInstances.searchPlaceholder")}
+        placeHolder={translate("dags:search.tasks")}
       />
       <Select.Root
         collection={taskInstanceStateOptions}
@@ -113,7 +113,7 @@ export const TaskInstancesFilter = ({
                   ))}
                 </HStack>
               ) : (
-                translate("dags:taskInstances.allStates")
+                translate("dags:filters.allStates")
               )
             }
           </Select.ValueText>

Reply via email to