From dfd44cfedcd2ee4eea64899086062a858ea570c1 Mon Sep 17 00:00:00 2001 From: Shahar Epstein <60007259+shahar1@users.noreply.github.com> Date: Fri, 24 Jul 2026 15:12:37 +0300 Subject: [PATCH] Complete missing Arabic (ar) translations MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The Arabic locale had drifted to 90% coverage as new UI features landed, so Arabic-speaking users saw untranslated English fallbacks across the dashboard, keyboard-shortcuts help, preset filters and the new state stores. The asset and task state stores were previously called "asset store" and "task store". Their Arabic wording is carried over to the renamed keys so the existing translation is not lost, and the dead pre-rename keys — which only ever existed in this locale — are dropped. --- .../ui/public/i18n/locales/ar/admin.json | 1 + .../ui/public/i18n/locales/ar/assets.json | 20 ++--- .../ui/public/i18n/locales/ar/common.json | 76 ++++++++++++++++++- .../ui/public/i18n/locales/ar/components.json | 2 + .../ui/public/i18n/locales/ar/dag.json | 20 ++--- .../ui/public/i18n/locales/ar/dags.json | 11 +++ .../ui/public/i18n/locales/ar/dashboard.json | 22 ++++++ .../ui/public/i18n/locales/ar/hitl.json | 14 ++++ 8 files changed, 144 insertions(+), 22 deletions(-) diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json index 9038038e10ed2..59a5af4ebc01a 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/admin.json @@ -205,6 +205,7 @@ "title": "تخطي" } }, + "parsingFile": "جارٍ تحليل الملف...", "title": "استيراد المتغيرات", "upload": "تحميل ملف JSON", "uploadPlaceholder": "حمل ملف JSON يحتوي علي متغيرات (مثال: {\"key\": \"value\", ...})" diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/assets.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/assets.json index b92d0f6bf0974..8518405d8a40d 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/assets.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/assets.json @@ -6,21 +6,21 @@ "asset_other": "أصول", "asset_two": "أصلان", "asset_zero": "لا يوجد أي أصل", - "assetStore": { - "add": "إضافة مخزن الأصول", + "assetStateStore": { + "add": "إضافة مخزن حالة الأصل", "clearAll": { - "resource": "كل مخزن الأصول", - "title": "مسح كل مخزن الأصول", - "warning": "سيتم مسح كل مخزن الأصول. ستفقد المهام التي تستخدم هذا المخزن لتنسيق العمل ذاكرتها المحفوظة." + "resource": "كل مخزن حالة الأصل", + "title": "مسح كل مخزن حالة الأصل", + "warning": "سيتم مسح كل مخزن حالة الأصل. ستفقد المهام التي تستخدم هذا المخزن لتنسيق العمل ذاكرتها المحفوظة." }, - "delete": "حذف مخزن الأصول", - "deleteWarning": "سيفقد الأصل إدخال المخزن المحفوظ هذا.", - "edit": "تعديل مخزن الأصول", - "emptyState": "يخزّن مخزن الأصول قيماً مرتبطة بهوية الأصل، وتكون مشتركة عبر جميع تشغيلات Dag. يمكن للعمّال الكتابة إلى مخزن الأصول عبر Task SDK.", + "delete": "حذف مخزن حالة الأصل", + "deleteWarning": "سيفقد الأصل إدخال مخزن الحالة المحفوظ هذا.", + "edit": "تعديل مخزن حالة الأصل", + "emptyState": "يخزّن مخزن حالة الأصل قيماً مرتبطة بهوية الأصل، وتكون مشتركة عبر جميع تشغيلات Dag. يمكن للعمّال الكتابة إلى مخزن حالة الأصل عبر Task SDK.", "lastUpdatedBy": "آخر تحديث بواسطة", "lastUpdatedByApi": "API", "lastUpdatedByWatcher": "المراقب", - "title": "مخزن الأصول" + "title": "مخزن حالة الأصل" }, "consumingDags": "Dags المستهلكة", "consumingTasks": "المهام المستهلكة", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/common.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/common.json index c2ab855cbdfb3..9727da74c5dfb 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/common.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/common.json @@ -8,6 +8,7 @@ "Variables": "متغيرات" }, "allOperators": "جميع المُشغِّلات", + "allTeams": "جميع الفرق", "appearance": { "appearance": "المظهر", "darkMode": "الوضع الداكن", @@ -77,7 +78,8 @@ "owner": "المالك", "params": "معاملات", "schedule": "جدولة", - "tags": "وسوم" + "tags": "وسوم", + "team": "الفريق" }, "dagId": "معرف Dag", "dagRun": { @@ -92,6 +94,7 @@ "expectedDuration": "المدة المتوقعة", "lastSchedulingDecision": "آخر قرار جدولة", "mappedPartitionKey": "مفتاح التقسيم المعيَّن", + "partitionDate": "تاريخ التقسيم", "partitionKey": "مفتاح التقسيم", "queuedAt": "في الطابور في", "runAfter": "تشغيل بعد", @@ -169,6 +172,9 @@ "selectDateRange": "اختر نطاق التاريخ", "startTime": "وقت البدء" }, + "fullscreen": { + "tooltip": "اضغط {{hotkey}} لملء الشاشة" + }, "generateToken": "توليد رمز", "key": "المفتاح", "logicalDate": "التاريخ المنطقي", @@ -200,9 +206,12 @@ "note": { "add": "إضافة", "dagRun": "تشغيل Dag", + "edit": "تعديل الملاحظة", "label": "وسم", "placeholder": "أضف ملاحظة...", - "taskInstance": "مثيل المهمة" + "preview": "معاينة", + "taskInstance": "مثيل المهمة", + "write": "كتابة" }, "overallStatus": "الحالة العامة", "partitionedDagRun_few": "تشغيلات Dag مُجزأة", @@ -220,6 +229,23 @@ "pendingDagRun_other": "{{count}} تشغيل Dag مُعلّق", "pendingDagRun_two": "تشغيلا Dag مُعلّقان", "pendingDagRun_zero": "لا توجد تشغيلات Dag مُعلّقة", + "presetFilters": { + "deleteTitle": "حذف الفلتر المُعدّ مسبقاً", + "deleteWarning": "تُحفظ الفلاتر المُعدّة مسبقاً في هذا المتصفح فقط.", + "duplicate": "الفلتر المُعدّ مسبقاً \"{{name}}\" يحفظ هذا الإعداد نفسه بالفعل.", + "empty": "لا توجد فلاتر مُعدّة مسبقاً بعد", + "info": { + "default": "ثبّت فلتراً مُعدّاً مسبقاً كافتراضي ليُطبَّق تلقائياً عند فتح هذه الصفحة دون أي فلاتر.", + "save": "احفظ الفلاتر والترتيب الحالية كفلتر مُعدّ مسبقاً باسم، ثم عُد إليه في أي وقت.", + "storage": "تُحفظ الفلاتر المُعدّة مسبقاً في هذا المتصفح." + }, + "namePlaceholder": "اسم الفلتر المُعدّ مسبقاً", + "nothingToSave": "لا يوجد ما يُحفظ. طبّق فلاتر أو ترتيباً لحفظ فلتر مُعدّ مسبقاً.", + "save": "حفظ", + "setDefault": "تعيين كافتراضي", + "title": "الفلاتر المُعدّة مسبقاً", + "unsetDefault": "إلغاء التعيين كافتراضي" + }, "reset": "إعادة تعيين", "runId": "معرف التشغيل", "runTypes": { @@ -251,6 +277,47 @@ }, "selectLanguage": "اختيار اللغة", "selected": "محدد", + "shortcuts": { + "categories": { + "code": "الكود", + "dagView": "عرض Dag", + "filters": "الفلاتر", + "global": "عام", + "logs": "السجلات", + "navigation": "التنقل", + "runActions": "إجراءات التشغيل والمهام", + "search": "البحث" + }, + "descriptions": { + "clearRun": "مسح $t(dagRun_one)", + "clearTaskInstance": "مسح $t(taskInstance_one)", + "downloadLogs": "تنزيل السجلات", + "focusFilterSearch": "التركيز على بحث الفلاتر", + "focusLogSearch": "البحث في السجلات", + "focusSearch": "التركيز على البحث", + "markRunFailed": "تعليم $t(dagRun_one) كفاشل", + "markRunSuccess": "تعليم $t(dagRun_one) كناجح", + "markTaskFailed": "تعليم $t(task_one) كفاشلة", + "markTaskGroupFailed": "تعليم $t(taskGroup_one) كفاشلة", + "markTaskGroupSuccess": "تعليم $t(taskGroup_one) كناجحة", + "markTaskSuccess": "تعليم $t(task_one) كناجحة", + "navigateTasks": "التنقل بين $t(task_other)", + "openGraphFilters": "فتح فلاتر الرسم البياني", + "scrollBottom": "التمرير إلى الأسفل", + "scrollTop": "التمرير إلى الأعلى", + "searchDags": "البحث في $t(dag_other)", + "showHelp": "إظهار $t(shortcuts.title)", + "toggleExpand": "توسيع أو طي جميع المجموعات", + "toggleFullscreen": "تبديل ملء الشاشة", + "toggleGraphGrid": "التبديل بين عرض الرسم البياني والشبكة", + "toggleSource": "تبديل المصدر", + "toggleTaskGroup": "توسيع أو طي $t(taskGroup_one)", + "toggleTimestamp": "تبديل الأختام الزمنية", + "toggleWrap": "تبديل $t(wrap.wrap)" + }, + "empty": "لا تتوفر اختصارات لوحة مفاتيح في هذه الصفحة.", + "title": "اختصارات لوحة المفاتيح" + }, "showDetailsPanel": "إظهار لوحة التفاصيل", "signedInAs": "تم تسجيل الدخول باسم", "source": { @@ -299,6 +366,7 @@ "from": "من", "maxActiveRuns": "الحد الأقصى للتشغيلات النشطة", "noTagsFound": "لم يتم العثور على وسوم", + "noTeamsFound": "لم يتم العثور على فرق", "tagMode": { "all": "الكل", "any": "اي شيء" @@ -333,10 +401,12 @@ "taskGroup_zero": "لا توجد مجموعات مهام", "taskId": "معرف المهمة", "taskInstance": { + "additionalAttributes": "سمات إضافية لمثيل المهمة", "dagVersion": "إصدار الDag", "executor": "منفذ", "executorConfig": "تكوين المنفذ", "hostname": "اسم المضيف", + "id": "المعرف", "maxTries": "الحد الأقصى للمحاولات", "pid": "معرف العملية", "pool": "مجموعة الموارد", @@ -346,11 +416,13 @@ "queuedWhen": "في الطابور في", "renderedMapIndex": "فهرس الخريطة المعروض", "scheduledWhen": "مجدول في", + "trigger": "المُحفِّز", "triggerer": { "assigned": "مُطلِق مُخصص", "class": "فئة المُطلِق", "createdAt": "تاريخ إنشاء المُطلِق", "id": "معرف المُطلِق", + "job": "وظيفة المُطلِق", "latestHeartbeat": "آخر نبضة للمُطلِق", "title": "معلومات المُطلِق" }, diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json index f958e8798ded2..341396cfdc216 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/components.json @@ -81,6 +81,7 @@ "lastTaskInstance_other": "آخر {{count}} مثيل مهمة", "lastTaskInstance_two": "آخر مثيلين مهمة", "lastTaskInstance_zero": "لا يوجد أي مثيل مهمة", + "medianTotalDuration": "الإجمالي: {{duration}}", "queuedDuration": "مدة الانتظار في الطابور", "runAfter": "تشغيل بعد", "runDuration": "مدة التشغيل" @@ -169,6 +170,7 @@ "loading": "جارٍ تحميل معلومات Dag...", "loadingFailed": "فشل تحميل معلومات Dag. يرجى المحاولة مرة أخرى.", "manualRunDenied": "التشغيلات اليدوية غير مسموح بها لهذا الـDag", + "partitionKeyHelp": "اختياري - ينطبق فقط على Dags المُجزأة", "runIdHelp": "اختياري - سيتم توليده تلقائيًا إذا لم يتم توفيره.", "selectDescription": "تشغيل عملية واحدة من هذا Dag", "selectLabel": "تشغيلة واحدة", diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/dag.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/dag.json index 6253b5c4a3183..88e762693b63e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/dag.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/dag.json @@ -259,7 +259,7 @@ "runs": "تشغيلات", "storage": "التخزين", "taskInstances": "مثيلات المهام", - "taskStore": "مخزن المهام", + "taskStateStore": "مخزن حالة المهمة", "tasks": "المهام", "xcom": "XCom" }, @@ -267,17 +267,17 @@ "collapseAll": "طي جميع مجموعات المهام", "expandAll": "توسيع جميع مجموعات المهام" }, - "taskStore": { - "add": "إضافة مخزن المهام", + "taskStateStore": { + "add": "إضافة مخزن حالة المهمة", "clearAll": { - "resource": "كل مخزن المهام", - "title": "مسح كل مخزن المهام", - "warning": "سيتم مسح كل مخزن المهام. لن تتمكن المهام التي تستخدم هذا المخزن لتتبع العمل الخارجي من الاستئناف دون إعادة التشغيل من البداية." + "resource": "كل مخزن حالة المهمة", + "title": "مسح كل مخزن حالة المهمة", + "warning": "سيتم مسح كل مخزن حالة المهمة. لن تتمكن المهام التي تستخدم هذا المخزن لتتبع العمل الخارجي من الاستئناف دون إعادة التشغيل من البداية." }, - "delete": "حذف مخزن المهام", + "delete": "حذف مخزن حالة المهمة", "deleteWarning": "ستفقد المهمة هذه الذاكرة المحفوظة. إذا كانت المهمة تستخدم هذا المفتاح لتتبع عمل خارجي (مثل معرّف وظيفة خارجية)، فلن تتمكن من استئنافه.", - "edit": "تعديل مخزن المهام", - "emptyStore": "يخزّن مخزن المهام قيماً تستمر عبر إعادات المحاولة. يمكن للعمّال الكتابة إلى مخزن المهام عبر Task SDK.", + "edit": "تعديل مخزن حالة المهمة", + "emptyStore": "يخزّن مخزن حالة المهمة قيماً تستمر عبر إعادات المحاولة. يمكن للعمّال الكتابة إلى مخزن حالة المهمة عبر Task SDK.", "expiresAt": { "column": "تنتهي الصلاحية في", "custom": "مخصص", @@ -285,6 +285,6 @@ "label": "انتهاء الصلاحية", "never": "أبداً" }, - "title": "مخزن المهام" + "title": "مخزن حالة المهمة" } } diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/dags.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/dags.json index 7cdbce8613301..951e62adaeddc 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/dags.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/dags.json @@ -10,11 +10,13 @@ "filters": { "allRunTypes": "جميع أنواع التشغيلات", "allStates": "جميع الحالات", + "anyRunState": "أي تشغيل", "favorite": { "all": "الكل", "favorite": "تفضيل", "unfavorite": "إلغاء التفضيل" }, + "lastRunState": "آخر تشغيل", "paused": { "active": "مفعّل", "all": "الكل", @@ -76,6 +78,11 @@ "upstream": "المهام السابقة" } }, + "runStateCounts": { + "label": "حالات التشغيل", + "loading": "جارٍ تحميل أعداد حالات التشغيل", + "tooltip": "{{state}}: {{formattedCount}} — انقر لتصفية التشغيلات" + }, "search": { "advanced": "بحث متقدم", "clear": " مسح", @@ -88,6 +95,10 @@ "asc": "الترتيب حسب اسم العرض (A-Z)", "desc": "الترتيب حسب اسم العرض (Z-A)" }, + "lastRunAfter": { + "asc": "الترتيب حسب تشغيل بعد لآخر تشغيل (الأقدم-الأحدث)", + "desc": "الترتيب حسب تشغيل بعد لآخر تشغيل (الأحدث-الأقدم)" + }, "lastRunStartDate": { "asc": "الترتيب حسب تاريخ بداية آخر تشغيل (الأقدم-الأحدث)", "desc": "الترتيب حسب تاريخ بداية آخر تشغيل (الأحدث-الأقدم)" diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/dashboard.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/dashboard.json index 63004b63c69d6..d1d91e037804e 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/dashboard.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/dashboard.json @@ -1,4 +1,26 @@ { + "alerts": { + "seeLessContext": "عرض أقل", + "seeMoreContext": "عرض المزيد", + "showMoreAlerts_few": "+{{count}} تنبيهات إضافية", + "showMoreAlerts_many": "+{{count}} تنبيهاً إضافياً", + "showMoreAlerts_one": "+{{count}} تنبيه إضافي", + "showMoreAlerts_other": "+{{count}} تنبيه إضافي", + "showMoreAlerts_two": "+{{count}} تنبيهان إضافيان", + "showMoreAlerts_zero": "لا توجد تنبيهات إضافية" + }, + "deadlines": { + "pending": { + "empty": "لا توجد مواعيد نهائية قادمة", + "title": "القادمة" + }, + "recentlyMissed": { + "empty": "لا توجد مواعيد نهائية فائتة", + "title": "المواعيد النهائية الفائتة" + }, + "showMore": "عرض المزيد", + "title": "المواعيد النهائية" + }, "deferredSlotsNotCounted": "المؤجّلة غير محتسبة ضمن الحصص: {{count}}", "deferredSlotsNotCountedTooltip": "المهام المؤجّلة الظاهرة داخل الشريط تُحتسب ضمن حصص مجموعة الموارد. المهام المؤجّلة الظاهرة أسفل الشريط تأتي من مجموعات موارد لا تحتسب المهام المؤجّلة ضمن الحصص.", "favorite": { diff --git a/airflow-core/src/airflow/ui/public/i18n/locales/ar/hitl.json b/airflow-core/src/airflow/ui/public/i18n/locales/ar/hitl.json index 24127decf4ecf..fdee256421b01 100644 --- a/airflow-core/src/airflow/ui/public/i18n/locales/ar/hitl.json +++ b/airflow-core/src/airflow/ui/public/i18n/locales/ar/hitl.json @@ -32,6 +32,20 @@ "success": "تمت الاستجابة بنجاح ل{{taskId}}", "title": "مثيل مهمة يدوي - {{taskId}}" }, + "review": { + "detail": { + "selectRequiredAction": "اختر إجراءً مطلوباً لعرض التفاصيل" + }, + "list": { + "completedRequiredActions": "الإجراءات المطلوبة المكتملة ({{count}})", + "loadError": "تعذّر تحميل الإجراءات المطلوبة", + "loadingActions": "جارٍ تحميل الإجراءات المطلوبة...", + "pendingRequiredActions": "الإجراءات المطلوبة قيد الانتظار ({{count}})" + }, + "openReviewDrawer": "فتح لوحة المراجعة", + "pageLimitHint": "تُعرض هنا الإجراءات الأولى فقط. استخدم \"$t(review.viewAll)\" لعرضها جميعاً.", + "viewAll": "عرض جميع الإجراءات المطلوبة" + }, "state": { "approvalReceived": "تم استلام الموافقة", "approvalRequired": "تتطلب موافقة",