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"],