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

potiuk pushed a commit to branch v3-1-test
in repository https://gitbox.apache.org/repos/asf/airflow.git


The following commit(s) were added to refs/heads/v3-1-test by this push:
     new ec5854efcf2 Backport i18n UI Japanese translations for v3.1. Original 
PR#59313 (#59557)
ec5854efcf2 is described below

commit ec5854efcf205a2e84a183397463cdaa6c54ffa2
Author: rsanda <[email protected]>
AuthorDate: Wed Dec 17 20:37:40 2025 +0900

    Backport i18n UI Japanese translations for v3.1. Original PR#59313 (#59557)
---
 .github/CODEOWNERS                                 |   1 +
 .github/boring-cyborg.yml                          |   3 +
 .../airflow/ui/public/i18n/locales/ja/admin.json   | 172 +++++++++++
 .../airflow/ui/public/i18n/locales/ja/assets.json  |  32 ++
 .../airflow/ui/public/i18n/locales/ja/browse.json  |  22 ++
 .../airflow/ui/public/i18n/locales/ja/common.json  | 324 +++++++++++++++++++++
 .../ui/public/i18n/locales/ja/components.json      | 140 +++++++++
 .../src/airflow/ui/public/i18n/locales/ja/dag.json | 154 ++++++++++
 .../airflow/ui/public/i18n/locales/ja/dags.json    |  97 ++++++
 .../ui/public/i18n/locales/ja/dashboard.json       |  45 +++
 .../airflow/ui/public/i18n/locales/ja/hitl.json    |  34 +++
 .../airflow/ui/public/i18n/locales/ja/tasks.json   |  10 +
 airflow-core/src/airflow/ui/src/i18n/config.ts     |   1 +
 .../src/airflow_breeze/commands/ui_commands.py     |   1 +
 14 files changed, 1036 insertions(+)

diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index c11ca9751fe..878b3b23dda 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -48,6 +48,7 @@ airflow-core/src/airflow/ui/public/i18n/locales/he/ @eladkal 
@shahar1 @romsharon
 airflow-core/src/airflow/ui/public/i18n/locales/hi/ @vatsrahul1001
 airflow-core/src/airflow/ui/public/i18n/locales/hu/ @jscheffl @potiuk # 
+@majorosdonat
 airflow-core/src/airflow/ui/public/i18n/locales/it/ @bbovenzi # + @aoelvp94
+airflow-core/src/airflow/ui/public/i18n/locales/ja/  @uranusjr @sekikn # + 
@rsanda
 airflow-core/src/airflow/ui/public/i18n/locales/ko/ @jscheffl @potiuk # + 
@choo121600 @kgw7401 @0ne-stone
 airflow-core/src/airflow/ui/public/i18n/locales/nl/ @BasPH # + @DjVinnii
 airflow-core/src/airflow/ui/public/i18n/locales/pl/ @potiuk @mobuchowski # + 
@kacpermuda
diff --git a/.github/boring-cyborg.yml b/.github/boring-cyborg.yml
index d21efe82960..07016c3524f 100644
--- a/.github/boring-cyborg.yml
+++ b/.github/boring-cyborg.yml
@@ -402,6 +402,9 @@ labelPRBasedOnFilePath:
   translation:it:
     - airflow-core/src/airflow/ui/public/i18n/locales/it/*
 
+  translation:ja:
+    - airflow-core/src/airflow/ui/public/i18n/locales/ja/*
+
   translation:ko:
     - airflow-core/src/airflow/ui/public/i18n/locales/ko/*
 
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/admin.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/admin.json
new file mode 100644
index 00000000000..3e80a926781
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/admin.json
@@ -0,0 +1,172 @@
+{
+  "columns": {
+    "description": "説明",
+    "key": "キー",
+    "name": "名前",
+    "value": "値"
+  },
+  "config": {
+    "columns": {
+      "section": "セクション"
+    },
+    "title": "Airflow 設定"
+  },
+  "connections": {
+    "add": "接続を追加",
+    "columns": {
+      "connectionId": "接続 ID",
+      "connectionType": "接続タイプ",
+      "host": "ホスト",
+      "port": "ポート"
+    },
+    "connection_one": "接続",
+    "connection_other": "接続",
+    "delete": {
+      "deleteConnection_one": "1 件の接続を削除",
+      "deleteConnection_other": "{{count}} 件の接続を削除",
+      "firstConfirmMessage_one": "以下の接続を削除します",
+      "firstConfirmMessage_other": "以下の接続を削除します",
+      "title": "接続を削除"
+    },
+    "edit": "接続を編集",
+    "form": {
+      "connectionIdRequired": "接続 ID は必須です",
+      "connectionIdRequirement": "空白文字だけの接続 ID は認められません",
+      "connectionTypeRequired": "接続タイプは必須です",
+      "extraFields": "追加項目",
+      "extraFieldsJson": "追加項目 (JSON 形式)",
+      "helperText": "接続タイプが見つかりませんか?対応する Airflow Providers 
パッケージがインストールされていることを確認してください",
+      "helperTextForRedactedFields": "非表示の項目 ('***') は、編集しなければ以前の値がそのまま使われます",
+      "selectConnectionType": "接続タイプを選ぶ",
+      "standardFields": "標準項目"
+    },
+    "nothingFound": {
+      "description": "環境変数やシークレットマネージャによって定義された接続は表示されません",
+      "documentationLink": "Airflow のドキュメントで詳細を確認する",
+      "learnMore": "これらは実行時に解決され、UI からは確認できません",
+      "title": "接続が見つかりません"
+    },
+    "searchPlaceholder": "接続を検索",
+    "test": "接続をテストする",
+    "testDisabled": "接続をテストする機能は無効化されています。有効化するには管理者に問い合わせてください",
+    "testError": {
+      "title": "接続テストに失敗しました"
+    },
+    "testSuccess": {
+      "title": "接続テストに成功しました"
+    },
+    "typeMeta": {
+      "error": "接続タイプの取得に失敗しました",
+      "standardFields": {
+        "description": "説明",
+        "host": "ホスト",
+        "login": "ログイン名",
+        "password": "パスワード",
+        "port": "ポート",
+        "url_schema": "スキーマ"
+      }
+    }
+  },
+  "deleteActions": {
+    "button": "削除",
+    "modal": {
+      "confirmButton": "はい、削除します",
+      "secondConfirmMessage": "このアクションは永続的で取り消せません",
+      "thirdConfirmMessage": "本当に実行しますか?"
+    },
+    "selected": "選択済み",
+    "tooltip": "選択された接続を削除"
+  },
+  "formActions": {
+    "save": "保存"
+  },
+  "plugins": {
+    "columns": {
+      "source": "ソース"
+    },
+    "importError_one": "プラグインのインポートエラー",
+    "importError_other": "プラグインのインポートエラー",
+    "searchPlaceholder": "ファイルで検索"
+  },
+  "pools": {
+    "add": "プールを追加",
+    "deferredSlotsIncluded": "遅延スロットも含める",
+    "delete": {
+      "title": "プールを削除",
+      "warning": "プールに関連するすべてのメタデータを削除します。プールを使用中のタスクに影響する可能性があります"
+    },
+    "edit": "プールを編集",
+    "form": {
+      "checkbox": "空きスロットの計算に遅延タスクも含める",
+      "description": "説明",
+      "includeDeferred": "遅延も含める",
+      "nameMaxLength": "名前の最大長は 256 文字です",
+      "nameRequired": "名前は必須です",
+      "slots": "スロット"
+    },
+    "noPoolsFound": "プールが見つかりません",
+    "pool_one": "プール",
+    "pool_other": "プール",
+    "searchPlaceholder": "プールを検索",
+    "sort": {
+      "asc": "名前 (A-Z)",
+      "desc": "名前 (Z-A)",
+      "placeholder": "以下のキーで並べ替え"
+    }
+  },
+  "providers": {
+    "columns": {
+      "packageName": "パッケージ名",
+      "version": "バージョン"
+    }
+  },
+  "variables": {
+    "add": "変数を追加",
+    "columns": {
+      "isEncrypted": "暗号化"
+    },
+    "delete": {
+      "deleteVariable_one": "1 件の変数を削除",
+      "deleteVariable_other": "{{count}} 件の変数を削除",
+      "firstConfirmMessage_one": "以下の変数を削除します",
+      "firstConfirmMessage_other": "以下の変数を削除します",
+      "title": "変数を削除",
+      "tooltip": "選択された変数を削除"
+    },
+    "edit": "変数を編集",
+    "export": "エキスポート",
+    "exportTooltip": "選択した変数をエキスポート",
+    "form": {
+      "invalidJson": "不正な形式の JSON",
+      "keyMaxLength": "キーの最大長は 250 文字です",
+      "keyRequired": "キーは必須です",
+      "valueRequired": "値は必須です"
+    },
+    "import": {
+      "button": "インポート",
+      "conflictResolution": "変数名が衝突した場合の解決方法",
+      "errorParsingJsonFile": "JSON ファイルの解析に失敗しました。変数を含む JSON 
ファイルをアップロードしてください (例: {\"key\": \"value\", ...})",
+      "options": {
+        "fail": {
+          "description": "同名の変数が存在した場合はインポートに失敗します",
+          "title": "失敗"
+        },
+        "overwrite": {
+          "description": "同名の変数が存在した場合は上書きします",
+          "title": "上書き"
+        },
+        "skip": {
+          "description": "同名の変数が存在した場合はスキップします",
+          "title": "スキップ"
+        }
+      },
+      "title": "変数をインポート",
+      "upload": "JSON ファイルをアップロード",
+      "uploadPlaceholder": "変数を含む JSON ファイルをアップロード (例: {\"key\": \"value\", 
...})"
+    },
+    "noRowsMessage": "変数が見つかりません",
+    "searchPlaceholder": "キーを検索",
+    "variable_one": "変数",
+    "variable_other": "変数"
+  }
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/assets.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/assets.json
new file mode 100644
index 00000000000..a5ef07f7109
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/assets.json
@@ -0,0 +1,32 @@
+{
+  "consumingDags": "Consuming Dags",
+  "consumingTasks": "Consuming Tasks",
+  "createEvent": {
+    "button": "イベントを作成",
+    "manual": {
+      "description": "アセットイベントを手動で作成",
+      "extra": "アセットイベントの追加情報",
+      "label": "手動"
+    },
+    "materialize": {
+      "description": "このアセットの上流 Dag をトリガー",
+      "descriptionWithDag": "このアセットの上流 Dag をトリガー: {{dagName}}",
+      "label": "実体化",
+      "unpauseDag": "トリガー時に {{dagName}} の停止を解除"
+    },
+    "success": {
+      "manualDescription": "アセットイベントの手動作成に成功しました",
+      "manualTitle": "アセットイベントを作成しました",
+      "materializeDescription": "上流の Dag {{dagId}} は正常にトリガーされました",
+      "materializeTitle": "アセットを実体化"
+    },
+    "title": "{{name}} 用のアセットイベントを作成"
+  },
+  "extra": "追加情報",
+  "group": "グループ",
+  "lastAssetEvent": "最終アセットイベント",
+  "name": "名前",
+  "producingTasks": "タスクを生成",
+  "scheduledDags": "スケジュール済 Dag",
+  "searchPlaceholder": "アセットを検索"
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/browse.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/browse.json
new file mode 100644
index 00000000000..86b6d705a31
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/browse.json
@@ -0,0 +1,22 @@
+{
+  "auditLog": {
+    "columns": {
+      "event": "イベント",
+      "extra": "追加情報",
+      "user": "ユーザ",
+      "when": "日時"
+    },
+    "filters": {
+      "eventType": "イベントタイプ"
+    },
+    "title": "監査ログ"
+  },
+  "xcom": {
+    "columns": {
+      "dag": "Dag",
+      "key": "キー",
+      "value": "値"
+    },
+    "title": "XCom"
+  }
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/common.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/common.json
new file mode 100644
index 00000000000..412ba70bfe0
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/common.json
@@ -0,0 +1,324 @@
+{
+  "admin": {
+    "Config": "設定",
+    "Connections": "接続",
+    "Plugins": "プラグイン",
+    "Pools": "プール",
+    "Providers": "Providers",
+    "Variables": "変数"
+  },
+  "allOperators": "全オペレータ",
+  "appearance": {
+    "appearance": "外観モード",
+    "darkMode": "ダークモード",
+    "lightMode": "ライトモード",
+    "systemMode": "OS 設定に合わせる"
+  },
+  "asset_one": "アセット",
+  "asset_other": "アセット",
+  "assetEvent_one": "アセットのイベント",
+  "assetEvent_other": "アセットのイベント",
+  "backfill_one": "過去分の再実行",
+  "backfill_other": "過去分の再実行",
+  "browse": {
+    "auditLog": "監査ログ",
+    "requiredActions": "要対応項目",
+    "xcoms": "XComs"
+  },
+  "collapseAllExtra": "追加情報の JSON を閉じる",
+  "collapseDetailsPanel": "詳細パネルを閉じる",
+  "createdAssetEvent_one": "作成したアセットイベント",
+  "createdAssetEvent_other": "作成したアセットイベント",
+  "dag_one": "Dag",
+  "dag_other": "Dags",
+  "dagDetails": {
+    "catchup": "遅延分の追跡実行",
+    "dagRunTimeout": "Dag 実行タイムアウト",
+    "defaultArgs": "デフォルトパラメータ",
+    "description": "説明",
+    "documentation": "Dag ドキュメント",
+    "fileLocation": "保存先",
+    "hasTaskConcurrencyLimits": "タスク同時実行制限",
+    "lastExpired": "最終期限切れ日時",
+    "lastParseDuration": "最終パース時間",
+    "lastParsed": "最終パース日時",
+    "latestDagVersion": "最新の Dag バージョン",
+    "latestRun": "最終実行日時",
+    "maxActiveRuns": "最大アクティブ実行数",
+    "maxActiveTasks": "最大アクティブタスク数",
+    "maxConsecutiveFailedDagRuns": "連続失敗 Dag 実行の最大回数",
+    "nextRun": "次の実行",
+    "owner": "オーナー",
+    "params": "パラメータ",
+    "schedule": "スケジュール",
+    "tags": "タグ"
+  },
+  "dagId": "Dag ID",
+  "dagRun": {
+    "conf": "設定",
+    "dagVersions": "Dag バージョン",
+    "dataIntervalEnd": "データ期間の終了",
+    "dataIntervalStart": "データ期間の開始",
+    "lastSchedulingDecision": "最終スケジューリング決定時刻",
+    "queuedAt": "キュー登録時刻",
+    "runAfter": "最早実行可能時間",
+    "runType": "実行タイプ",
+    "sourceAssetEvent": "元アセットのイベント",
+    "triggeredBy": "実行トリガー",
+    "triggeringUser": "トリガーユーザ"
+  },
+  "dagRun_one": "Dag 実行",
+  "dagRun_other": "Dag 実行",
+  "dagRunId": "Dag 実行 ID",
+  "dagWarnings": "Dag 実行警告/エラー",
+  "defaultToGraphView": "グラフ表示を既定にします",
+  "defaultToGridView": "グリッド表示を既定にします",
+  "direction": "方向",
+  "docs": {
+    "documentation": "ドキュメント",
+    "githubRepo": "GitHub リポジトリ",
+    "restApiReference": "REST API 仕様書"
+  },
+  "download": {
+    "download": "ダウンロード",
+    "hotkey": "d",
+    "tooltip": "ログをダウンロードするには {{hotkey}} キーを押してください"
+  },
+  "duration": "実行時間",
+  "endDate": "終了日",
+  "error": {
+    "back": "戻る",
+    "defaultMessage": "予期せぬエラーが発生しました",
+    "home": "ホーム",
+    "invalidUrl": "ページが見つかりません。URLを確認して再度お試しください",
+    "notFound": "ページが見つかりません",
+    "title": "エラー"
+  },
+  "expand": {
+    "collapse": "閉じる",
+    "expand": "展開する",
+    "hotkey": "e",
+    "tooltip": "切り替えるには {{hotkey}} を押してください"
+  },
+  "expandAllExtra": "追加情報の JSON を展開",
+  "expression": {
+    "all": "すべて",
+    "and": "かつ",
+    "any": "いずれか",
+    "or": "または"
+  },
+  "filter": "フィルタ",
+  "filters": {
+    "logicalDateFrom": "論理開始日",
+    "logicalDateTo": "論理終了日",
+    "runAfterFrom": "実行開始日時の指定",
+    "runAfterTo": "実行終了日時の指定"
+  },
+  "logicalDate": "論理日付",
+  "logout": "ログアウト",
+  "logoutConfirmation": "ログアウトしてもよろしいですか",
+  "mapIndex": "Map Index",
+  "modal": {
+    "cancel": "キャンセル",
+    "confirm": "確認",
+    "delete": {
+      "button": "削除",
+      "confirmation": "{{resourceName}} を削除してもよろしいですか。この操作は元に戻せません"
+    }
+  },
+  "nav": {
+    "admin": "管理",
+    "assets": "アセット",
+    "browse": "閲覧",
+    "dags": "Dags",
+    "docs": "ヘルプ",
+    "home": "ホーム",
+    "legacyFabViews": "旧式ビュー",
+    "plugins": "プラグイン",
+    "security": "セキュリティ"
+  },
+  "noItemsFound": "{{modelName}} が見つかりません",
+  "note": {
+    "add": "ノートの追加",
+    "dagRun": "Dag 実行ノート",
+    "label": "ノート",
+    "placeholder": "ノートの追加...",
+    "taskInstance": "タスクインスタンスノート"
+  },
+  "pools": {
+    "deferred": "延期済",
+    "open": "開く",
+    "pools_one": "プール",
+    "pools_other": "プール",
+    "queued": "待機中",
+    "running": "実行中",
+    "scheduled": "スケジュール済"
+  },
+  "reset": "リセット",
+  "runId": "実行 ID",
+  "runTypes": {
+    "asset_triggered": "トリガー済アセット",
+    "backfill": "過去分の再実行",
+    "manual": "手動",
+    "scheduled": "スケジュール済"
+  },
+  "scroll": {
+    "direction": {
+      "bottom": "下",
+      "top": "上"
+    },
+    "tooltip": "{{direction}} に動かすには {{hotkey}} を押してください"
+  },
+  "security": {
+    "actions": "アクション",
+    "permissions": "権限",
+    "resources": "リソース",
+    "roles": "ロール",
+    "users": "ユーザ"
+  },
+  "selectLanguage": "言語を選択",
+  "showDetailsPanel": "詳細パネル表示",
+  "source": {
+    "hide": "ソースを隠す",
+    "hotkey": "s",
+    "show": "ソースを表示"
+  },
+  "sourceAssetEvent_one": "元のアセットイベント",
+  "sourceAssetEvent_other": "元のアセットイベント",
+  "startDate": "開始日",
+  "state": "状態",
+  "states": {
+    "deferred": "延期済",
+    "failed": "失敗した",
+    "no_status": "ステータスなし",
+    "none": "ステータスなし",
+    "planned": "計画済",
+    "queued": "待機中",
+    "removed": "削除済",
+    "restarting": "再起動中",
+    "running": "実行中",
+    "scheduled": "スケジュール済",
+    "skipped": "スキップ済",
+    "success": "成功",
+    "up_for_reschedule": "リスケジュール待ち",
+    "up_for_retry": "再試行待ち",
+    "upstream_failed": "上流が失敗しました"
+  },
+  "table": {
+    "completedAt": "完了時刻",
+    "createdAt": "作成時刻",
+    "filterByTag": "タグでフィルタします",
+    "filterColumns": "テーブルの列をフィルタします",
+    "filterReset_one": "フィルタのリセット",
+    "filterReset_other": "フィルタのリセット",
+    "from": "開始時間",
+    "maxActiveRuns": "最大アクティブ実行",
+    "noTagsFound": "タグが見つかりません",
+    "tagMode": {
+      "all": "すべて",
+      "any": "いずれか"
+    },
+    "tagPlaceholder": "タグでフィルタします",
+    "to": "終了時間"
+  },
+  "task": {
+    "documentation": "タスクドキュメント",
+    "lastInstance": "最終インスタンス",
+    "operator": "オペレータ",
+    "triggerRule": "トリガールール"
+  },
+  "task_one": "タスク",
+  "task_other": "タスク",
+  "taskGroup": "タスクグループ",
+  "taskId": "タスク ID",
+  "taskInstance": {
+    "dagVersion": "Dag バージョン",
+    "executor": "エクゼキュータ",
+    "executorConfig": "エクゼキュータ設定",
+    "hostname": "ホスト名",
+    "maxTries": "最大試行回数",
+    "pid": "PID",
+    "pool": "プール",
+    "poolSlots": "プールスロット",
+    "priorityWeight": "優先度",
+    "queue": "キュー",
+    "queuedWhen": "キューイング時刻",
+    "scheduledWhen": "スケジュールされた時刻",
+    "triggerer": {
+      "assigned": "割り当てられたTriggerer",
+      "class": "トリガーカテゴリ",
+      "createdAt": "トリガー作成時刻",
+      "id": "トリガー ID",
+      "latestHeartbeat": "最新のTriggererハートビート",
+      "title": "Triggerer情報"
+    },
+    "unixname": "Unix 名"
+  },
+  "taskInstance_one": "タスクインスタンス",
+  "taskInstance_other": "タスクインスタンス",
+  "timeRange": {
+    "last12Hours": "直近12時間",
+    "last24Hours": "直近24時間",
+    "lastHour": "直近の1時間",
+    "pastWeek": "先週"
+  },
+  "timestamp": {
+    "hide": "タイムスタンプを非表示にします",
+    "hotkey": "t",
+    "show": "タイムスタンプを表示します"
+  },
+  "timezone": "タイムゾーン",
+  "timezoneModal": {
+    "current-timezone": "現在のタイムゾーン",
+    "placeholder": "タイムゾーンを選択",
+    "title": "タイムゾーンを選択",
+    "utc": "UTC"
+  },
+  "toaster": {
+    "bulkDelete": {
+      "error": "{{resourceName}} の一括削除が失敗しました",
+      "success": {
+        "description": "{{count}} {{resourceName}} が削除済。 キー: {{keys}}",
+        "title": "{{resourceName}} 一括削除リクエストが送信済"
+      }
+    },
+    "create": {
+      "error": "{{resourceName}} の作成リクエストが失敗しました",
+      "success": {
+        "description": "{{resourceName}} 作成が完了しました",
+        "title": "{{resourceName}} 作成リクエスト送信済み"
+      }
+    },
+    "delete": {
+      "error": "{{resourceName}} 削除リクエストが失敗しました",
+      "success": {
+        "description": "{{resourceName}} が削除済",
+        "title": "{{resourceName}} の削除リクエスト送信済み"
+      }
+    },
+    "import": {
+      "error": "{{resourceName}} のインポートに失敗しました",
+      "success": {
+        "description": "{{count}} {{resourceName}} のインポートが成功しました",
+        "title": "{{resourceName}} インポートリクエスト送信済み"
+      }
+    },
+    "update": {
+      "error": "{{resourceName}} の更新処理が失敗しました",
+      "success": {
+        "description": "{{resourceName}} の更新が成功しました",
+        "title": "{{resourceName}} の更新リクエスト送信済み"
+      }
+    }
+  },
+  "total": "合計 {{state}}",
+  "triggered": "トリガー済",
+  "tryNumber": "試行回数",
+  "user": "ユーザ",
+  "wrap": {
+    "hotkey": "w",
+    "tooltip": "折り返し表示を切替えるには {{hotkey}} を押してください",
+    "unwrap": "改行なし",
+    "wrap": "改行"
+  }
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/components.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/components.json
new file mode 100644
index 00000000000..97c9e66ef07
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/components.json
@@ -0,0 +1,140 @@
+{
+  "backfill": {
+    "affected_one": "1 回の実行をトリガーします",
+    "affected_other": "{{count}} 回の実行をトリガーします",
+    "affectedNone": "選択した条件に一致する実行はありません",
+    "allRuns": "すべての実行",
+    "backwards": "逆実行",
+    "dateRange": "日付範囲",
+    "errorStartDateBeforeEndDate": "開始日が終了日より前にする必要があります",
+    "maxRuns": "最大アクティブ実行数",
+    "missingAndErroredRuns": "欠落およびエラー発生した実行",
+    "missingRuns": "欠落実行",
+    "reprocessBehavior": "再処理動作",
+    "run": "過去分再実行の実行",
+    "selectDescription": "この Dag を指定した日付範囲で実行します",
+    "selectLabel": "過去分再実行",
+    "title": "過去分再実行",
+    "toaster": {
+      "success": {
+        "description": "過去分再実行ジョブが正常にトリガーされました",
+        "title": "過去分再実行処理を生成しました"
+      }
+    },
+    "tooltip": "過去分再実行処理には Dag にスケジューリングが必要です",
+    "unpause": "{{dag_display_name}} がトリガーされると一時停止を解除します",
+    "validation": {
+      "datesRequired": "データ範囲の開始日と終了日は必須です",
+      "startBeforeEnd": "データ範囲の開始日は終了日以前である必要があります"
+    }
+  },
+  "banner": {
+    "backfillInProgress": "過去分再実行中",
+    "cancel": "過去分再実行をキャンセルします",
+    "pause": "過去分再実行を一時停止します",
+    "unpause": "過去分再実行の停止を解除します"
+  },
+  "clipboard": {
+    "copy": "コピー"
+  },
+  "close": "閉じる",
+  "configForm": {
+    "advancedOptions": "詳細設定",
+    "configJson": "JSON の設定",
+    "invalidJson": "無効な JSON 形式: {{errorMessage}}"
+  },
+  "dagWarnings": {
+    "error_one": "1 件のエラー",
+    "errorAndWarning": "1 件のエラーと {{warningText}}",
+    "warning_one": "1 件の警告",
+    "warning_other": "{{count}} 件の警告"
+  },
+  "durationChart": {
+    "duration": "期間(秒)",
+    "lastDagRun_one": "最新の Dag 実行",
+    "lastDagRun_other": "直近の {{count}} 回の Dag 実行",
+    "lastTaskInstance_one": "最新のタスクインスタンス",
+    "lastTaskInstance_other": "直近の {{count}} 個のタスクインスタンス",
+    "queuedDuration": "キューイングされた時間",
+    "runAfter": "最も早い実行可能時間",
+    "runDuration": "実行期間"
+  },
+  "fileUpload": {
+    "files_other": "{{count}} 個のファイル"
+  },
+  "flexibleForm": {
+    "placeholder": "値を選択してください",
+    "placeholderArray": "各文字列を新しい行に入力してください",
+    "placeholderExamples": "入力を開始するとオプションが表示されます",
+    "placeholderMulti": "1 つまたは複数の値を選択してください",
+    "validationErrorArrayNotArray": "値は配列でなければなりません",
+    "validationErrorArrayNotNumbers": "配列内のすべての要素が数値でなければなりません",
+    "validationErrorArrayNotObject": "配列内のすべての要素がオブジェクトでなければなりません",
+    "validationErrorRequired": "この項目は必須です"
+  },
+  "graph": {
+    "directionDown": "上から下へ",
+    "directionLeft": "右から左へ",
+    "directionRight": "左から右へ",
+    "directionUp": "下から上へ",
+    "downloadImage": "グラフ画像のダウンロード",
+    "downloadImageError": "グラフ画像のダウンロードに失敗しました",
+    "downloadImageErrorTitle": "ダウンロードに失敗しました",
+    "otherDagRuns": "+その他の Dag 実行",
+    "taskCount_one": "{{count}} 個のタスク",
+    "taskCount_other": "{{count}} 個のタスク",
+    "taskGroup": "タスクグループ"
+  },
+  "limitedList": "その他 +{{count}} 件",
+  "limitedList.allItems": "全 {{count}} 件:",
+  "limitedList.allTags_one": "すべてのタグ (1)",
+  "limitedList.allTags_other": "すべてのタグ ({{count}})",
+  "limitedList.clickToInteract": "タグをクリックして Dag をフィルタリング",
+  "limitedList.clickToOpenFull": "\"+{{count}} もっと見る\" をクリックして全体を表示",
+  "limitedList.copyPasteText": "上記のテキストをコピーして貼り付けることが可能",
+  "limitedList.showingItems_one": "1 件表示",
+  "limitedList.showingItems_other": "{{count}} 件の表示",
+  "logs": {
+    "file": "ファイル",
+    "location": "{{name}} の {{line}} 行目"
+  },
+  "reparseDag": "Dag の再パース",
+  "sortedAscending": "昇順ソート",
+  "sortedDescending": "降順でソート",
+  "sortedUnsorted": "未ソート",
+  "taskTries": "タスクの試行",
+  "toggleCardView": "カードビューを表示",
+  "toggleTableView": "テーブルビューを表示",
+  "triggerDag": {
+    "button": "トリガー",
+    "loading": "Dag 情報を読込中...",
+    "loadingFailed": "情報読込に失敗しました。もう一度試してください",
+    "runIdHelp": "オプション- 指定しない場合自動的に生成されます",
+    "selectDescription": "この Dag の単体での実行をトリガーします",
+    "selectLabel": "単体での実行",
+    "title": "Dag のトリガー",
+    "toaster": {
+      "success": {
+        "description": "Dag の実行が正常にトリガーされました",
+        "title": "Dag の実行がトリガーされました"
+      }
+    },
+    "unpause": "{{dagDisplayName}} トリガーで停止を解除します"
+  },
+  "trimText": {
+    "details": "詳細",
+    "empty": "空",
+    "noContent": "利用可能なコンテンツがありません"
+  },
+  "versionDetails": {
+    "bundleLink": "バンドルのリンク",
+    "bundleName": "バンドル名",
+    "bundleVersion": "バンドルバージョン",
+    "createdAt": "作成時刻",
+    "versionId": "バージョン ID"
+  },
+  "versionSelect": {
+    "dagVersion": "Dag バージョン",
+    "versionCode": "v{{versionCode}}"
+  }
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/dag.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/dag.json
new file mode 100644
index 00000000000..d25ff587cea
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/dag.json
@@ -0,0 +1,154 @@
+{
+  "allRuns": "すべての実行",
+  "blockingDeps": {
+    "dependency": "依存関係",
+    "reason": "理由",
+    "title": "スケジュール済タスクをブロック中の依存関係"
+  },
+  "calendar": {
+    "daily": "日単位",
+    "hourly": "時間単位",
+    "legend": {
+      "less": "Less",
+      "mixed": "Mixed",
+      "more": "More"
+    },
+    "navigation": {
+      "nextMonth": "次月",
+      "nextYear": "次年",
+      "previousMonth": "前月",
+      "previousYear": "前年"
+    },
+    "noData": "データが利用できません",
+    "noFailedRuns": "失敗した実行はありません",
+    "noRuns": "実行はありません",
+    "totalRuns": "すべての実行",
+    "week": "{{weekNumber}} 週",
+    "weekdays": {
+      "friday": "金",
+      "monday": "月",
+      "saturday": "土",
+      "sunday": "日",
+      "thursday": "木",
+      "tuesday": "火",
+      "wednesday": "水"
+    }
+  },
+  "code": {
+    "bundleUrl": "バンドル URL",
+    "noCode": "コードが見つかりません",
+    "parseDuration": "パース時間:",
+    "parsedAt": "パース日時:"
+  },
+  "extraLinks": "追加リンク",
+  "grid": {
+    "buttons": {
+      "resetToLatest": "Reset to latest",
+      "toggleGroup": "グループを切り替え"
+    }
+  },
+  "header": {
+    "buttons": {
+      "advanced": "Advanced",
+      "dagDocs": "Dag ドキュメント"
+    }
+  },
+  "logs": {
+    "allLevels": "全ログレベル",
+    "allSources": "全ソース",
+    "critical": "CRITICAL",
+    "debug": "DEBUG",
+    "error": "ERROR",
+    "fullscreen": {
+      "button": "全画面",
+      "tooltip": "全画面で表示するには {{hotkey}} を押してください"
+    },
+    "info": "INFO",
+    "noTryNumber": "試行回数なし",
+    "settings": "ログ設定",
+    "viewInExternal": "{{name}} でログを見る ({{attempt}} 試行目)",
+    "warning": "WARNING"
+  },
+  "navigation": {
+    "navigation": "Navigation: Shift+{{arrow}}",
+    "toggleGroup": "Toggle group: Space"
+  },
+  "overview": {
+    "buttons": {
+      "failedRun_one": "失敗した実行",
+      "failedRun_other": "失敗した実行",
+      "failedTask_one": "失敗したタスク",
+      "failedTask_other": "失敗したタスク",
+      "failedTaskInstance_one": "失敗したタスクインスタンス",
+      "failedTaskInstance_other": "失敗したタスクインスタンス"
+    },
+    "charts": {
+      "assetEvent_one": "作成されたアセットイベント",
+      "assetEvent_other": "作成されたアセットイベント"
+    },
+    "failedLogs": {
+      "hideLogs": "ログを隠す",
+      "showLogs": "ログを表示",
+      "title": "最近失敗したタスクのログ",
+      "viewFullLogs": "すべてのログを表示"
+    }
+  },
+  "panel": {
+    "buttons": {
+      "options": "オプション",
+      "showGantt": "ガントチャート表示",
+      "showGraphShortcut": "グラフ表示 (g を押す)",
+      "showGridShortcut": "グリッド表示 (g を押す)"
+    },
+    "dagRuns": {
+      "label": "Dag 実行数"
+    },
+    "dependencies": {
+      "label": "依存関係",
+      "options": {
+        "allDagDependencies": "すべての Dag 依存関係",
+        "externalConditions": "外部条件",
+        "onlyTasks": "タスクのみ"
+      },
+      "placeholder": "依存関係"
+    },
+    "graphDirection": {
+      "label": "グラフの向き"
+    }
+  },
+  "paramsFailed": "パラメータのロードに失敗しました",
+  "parse": {
+    "toaster": {
+      "error": {
+        "description": "Dag のパースリクエストが失敗しました。未完了のパースリクエストが存在する可能性があります",
+        "title": "Dag の再パースに失敗"
+      },
+      "success": {
+        "description": "Dag はまもなく再パースされます",
+        "title": "再パースが正常にリクエストされました"
+      }
+    }
+  },
+  "tabs": {
+    "assetEvents": "アセットイベント",
+    "auditLog": "監査ログ",
+    "backfills": "過去分実行",
+    "calendar": "カレンダー",
+    "code": "コード",
+    "details": "詳細",
+    "logs": "ログ",
+    "mappedTaskInstances_one": "タスクインスタンス [{{count}}]",
+    "mappedTaskInstances_other": "タスクインスタンス [{{count}}]",
+    "overview": "概要",
+    "renderedTemplates": "生成されたテンプレート",
+    "requiredActions": "要対応項目",
+    "runs": "実行",
+    "taskInstances": "タスクインスタンス",
+    "tasks": "タスク",
+    "xcom": "XCom"
+  },
+  "taskGroups": {
+    "collapseAll": "タスクグループをすべて閉じる",
+    "expandAll": "タスクグループをすべて展開"
+  }
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/dags.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/dags.json
new file mode 100644
index 00000000000..d01127c952c
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/dags.json
@@ -0,0 +1,97 @@
+{
+  "assetSchedule": "{{total}} 件中 {{count}} 件のアセットが更新されました",
+  "dagActions": {
+    "delete": {
+      "button": "Dag を削除",
+      "warning": "実行履歴やタスクを含め、Dag に関連するメタデータはすべて削除されます"
+    }
+  },
+  "favoriteDag": "お気に入りの Dag",
+  "filters": {
+    "allRunTypes": "すべての実行タイプ",
+    "allStates": "すべての状態",
+    "favorite": {
+      "all": "すべて",
+      "favorite": "お気に入り",
+      "unfavorite": "お気に入り以外"
+    },
+    "paused": {
+      "active": "アクティブ",
+      "all": "すべて",
+      "paused": "停止済"
+    },
+    "runIdPatternFilter": "Dag 実行を検索",
+    "triggeringUserNameFilter": "トリガーユーザで検索"
+  },
+  "ownerLink": "Owner link for {{owner}}",
+  "runAndTaskActions": {
+    "affectedTasks": {
+      "noItemsFound": "タスクが見つかりません",
+      "title": "影響を受けたタスク: {{count}} 件"
+    },
+    "clear": {
+      "button": "{{type}} を消去",
+      "buttonTooltip": "消去するには shift+c を押してください",
+      "error": "{{type}} の消去に失敗しました",
+      "title": "{{type}} を消去"
+    },
+    "delete": {
+      "button": "{{type}} を削除",
+      "dialog": {
+        "resourceName": "{{type}} {{id}}",
+        "title": "{{type}} を削除",
+        "warning": "{{type}} に関連するすべてのメタデータを削除します"
+      },
+      "error": "{{type}} 削除エラー",
+      "success": {
+        "description": "{{type}} の削除に成功しました",
+        "title": "{{type}} の削除に成功しました"
+      }
+    },
+    "markAs": {
+      "button": "{{type}} をマーク",
+      "buttonTooltip": {
+        "failed": "失敗とマークするには shift+f を押してください",
+        "success": "成功とマークするには shift+s を押してください"
+      },
+      "title": "{{type}} を {{state}} とマーク"
+    },
+    "options": {
+      "downstream": "下流",
+      "existingTasks": "存在するタスクを消去",
+      "future": "未来",
+      "onlyFailed": "失敗したタスクのみを消去",
+      "past": "過去",
+      "queueNew": "新しいタスクを準備",
+      "runOnLatestVersion": "最新のバンドルバージョンで実行",
+      "upstream": "上流"
+    }
+  },
+  "search": {
+    "advanced": "高度な検索",
+    "clear": "検索条件を消去",
+    "dags": "Dag を検索",
+    "hotkey": "+K",
+    "tasks": "タスクを検索"
+  },
+  "sort": {
+    "displayName": {
+      "asc": "表示名で並び替え (A-Z)",
+      "desc": "表示名で並び替え (Z-A)"
+    },
+    "lastRunStartDate": {
+      "asc": "最新の実行開始日時で並び替え (旧-新)",
+      "desc": "最新の実行開始日時で並び替え (新-旧)"
+    },
+    "lastRunState": {
+      "asc": "最新の実行状態で並び替え (A-Z)",
+      "desc": "最新の実行状態で並び替え (Z-A)"
+    },
+    "nextDagRun": {
+      "asc": "次の Dag 実行で並び替え (旧-新)",
+      "desc": "次の Dag 実行で並び替え (新-旧)"
+    },
+    "placeholder": "以下で並び替え"
+  },
+  "unfavoriteDag": "お気に入り以外の Dag"
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/dashboard.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/dashboard.json
new file mode 100644
index 00000000000..60e665af9e5
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/dashboard.json
@@ -0,0 +1,45 @@
+{
+  "favorite": {
+    "favoriteDags_one": "先頭 {{count}} 件のお気に入り Dag",
+    "favoriteDags_other": "先頭 {{count}} 件のお気に入り Dag",
+    "noDagRuns": "この Dag はまだ実行されていません",
+    "noFavoriteDags": "まだお気に入りがありません。お気に入りに追加するには、Dag の隣にある星型のアイコンをクリックしてください"
+  },
+  "group": "グループ",
+  "health": {
+    "dagProcessor": "Dag プロセッサ",
+    "health": "健康状態",
+    "healthy": "正常",
+    "lastHeartbeat": "最終ハートビート",
+    "metaDatabase": "メタデータベース",
+    "scheduler": "スケジューラ",
+    "status": "状態",
+    "triggerer": "Triggerer",
+    "unhealthy": "異常"
+  },
+  "history": "履歴",
+  "importErrors": {
+    "dagImportError_one": "Dag 取り込みエラー",
+    "dagImportError_other": "Dag 取り込みエラー",
+    "searchByFile": "ファイルで検索",
+    "timestamp": "タイムスタンプ"
+  },
+  "managePools": "プールの管理",
+  "noAssetEvents": "アセットイベントが見つかりません",
+  "poolSlots": "プールスロット",
+  "sortBy": {
+    "newestFirst": "新しい順",
+    "oldestFirst": "古い順"
+  },
+  "source": "ソース",
+  "stats": {
+    "activeDags": "アクティブな Dag",
+    "failedDags": "失敗した Dag",
+    "queuedDags": "待機中の Dag",
+    "requiredActions": "必要なアクション",
+    "runningDags": "実行中の Dag",
+    "stats": "統計"
+  },
+  "uri": "Uri",
+  "welcome": "ようこそ"
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/hitl.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/hitl.json
new file mode 100644
index 00000000000..e05c054feac
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/hitl.json
@@ -0,0 +1,34 @@
+{
+  "filters": {
+    "response": {
+      "all": "すべての",
+      "pending": "保留中",
+      "received": "レビュー済"
+    }
+  },
+  "requiredAction_one": "要対応項目",
+  "requiredAction_other": "要対応項目",
+  "requiredActionCount_one": "要対応項目 ({{count}} 件)",
+  "requiredActionCount_other": "要対応項目 ({{count}} 件)",
+  "requiredActionState": "要対応状態",
+  "response": {
+    "error": "応答に失敗しました",
+    "optionsDescription": "このタスクインスタンスに対する選択肢を選んでください",
+    "optionsLabel": "選択肢",
+    "received": "以下の日時に応答を受信しました",
+    "respond": "応答する",
+    "success": "{{taskId}} の応答に成功しました",
+    "title": "ヒューマンタスクインスタンス - {{taskId}}"
+  },
+  "state": {
+    "approvalReceived": "承認済",
+    "approvalRequired": "要承認",
+    "choiceReceived": "選択済",
+    "choiceRequired": "要選択",
+    "noResponseReceived": "未応答",
+    "rejectionReceived": "却下済",
+    "responseReceived": "応答済",
+    "responseRequired": "要応答"
+  },
+  "subject": "件名"
+}
diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ja/tasks.json 
b/airflow-core/src/airflow/ui/public/i18n/locales/ja/tasks.json
new file mode 100644
index 00000000000..1fc0200cc1f
--- /dev/null
+++ b/airflow-core/src/airflow/ui/public/i18n/locales/ja/tasks.json
@@ -0,0 +1,10 @@
+{
+  "mapped": "Mapped",
+  "notMapped": "Not mapped",
+  "retries": "再試行",
+  "searchTasks": "タスクを選択",
+  "selectMapped": "Select mapped",
+  "selectOperator": "オペレータを選択",
+  "selectRetryValues": "再試行数を選択",
+  "selectTriggerRules": "トリガールールを選択"
+}
diff --git a/airflow-core/src/airflow/ui/src/i18n/config.ts 
b/airflow-core/src/airflow/ui/src/i18n/config.ts
index 96dc38413fd..da506ddcff9 100644
--- a/airflow-core/src/airflow/ui/src/i18n/config.ts
+++ b/airflow-core/src/airflow/ui/src/i18n/config.ts
@@ -33,6 +33,7 @@ export const supportedLanguages = [
   { code: "hi", name: "हिन्दी" },
   { code: "hu", name: "Magyar" },
   { code: "it", name: "Italiano" },
+  { code: "ja", name: "日本語" },
   { code: "ko", name: "한국어" },
   { code: "nl", name: "Nederlands" },
   { code: "pl", name: "Polski" },
diff --git a/dev/breeze/src/airflow_breeze/commands/ui_commands.py 
b/dev/breeze/src/airflow_breeze/commands/ui_commands.py
index f6f75002604..6faf576a484 100644
--- a/dev/breeze/src/airflow_breeze/commands/ui_commands.py
+++ b/dev/breeze/src/airflow_breeze/commands/ui_commands.py
@@ -82,6 +82,7 @@ PLURAL_SUFFIXES = {
     "hi": MOST_COMMON_PLURAL_SUFFIXES,
     "hu": MOST_COMMON_PLURAL_SUFFIXES,
     "it": ["_zero", "_one", "_many", "_other"],
+    "ja": ["_other"],
     "ko": ["_other"],
     "nl": MOST_COMMON_PLURAL_SUFFIXES,
     "pl": ["_one", "_few", "_many", "_other"],


Reply via email to