Localize the admin all-applications page.

Move the final dashboard page (admin all-apps) onto a
dashboard.adminApps dictionary: status-count cards, search, table/cards,
lifecycle & migration statuses, plan/expiry, and the migrate modal —
completing full fa-IR/en-US coverage across the entire app.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
keyhan
2026-06-12 01:06:33 +03:30
parent e43274e9a2
commit d31d93f6b8
4 changed files with 170 additions and 110 deletions
+33
View File
@@ -1016,6 +1016,39 @@ const fa = {
insufficientRenew: 'موجودی کیف‌پول کافی نیست. کیف‌پول را شارژ کن یا از طریق فاکتور پرداخت کن.',
cycles: { hourly: 'ساعتی', monthly: 'ماهانه', yearly: 'سالانه' },
},
adminApps: {
title: 'همهٔ اپلیکیشن‌ها',
count: '{n} اپلیکیشن',
matching: ' مطابق با «{q}»',
lifecycle: { active: 'فعال', suspended: 'معلق — پرداخت‌نشده', pending_deletion: 'در انتظار حذف', deleted: 'حذف‌شده' },
cycles: { hourly: 'ساعتی', monthly: 'ماهانه', yearly: 'سالانه' },
expired: 'منقضی‌شده', dayShort: 'روز', hourShort: 'ساعت', minShort: 'دقیقه',
countRunning: 'در حال اجرا', countDeploying: 'در حال انتشار', countPending: 'در انتظار',
countStopped: 'متوقف', countFailed: 'ناموفق', countSuspended: 'معلق', countPendingDel: 'در انتظار حذف',
searchPlaceholder: 'جستجو بر اساس نام اپ، نام کاربر، ایمیل یا شناسهٔ کاربر…',
noAppsFound: 'اپلیکیشنی پیدا نشد', noResultsFor: 'نتیجه‌ای برای «{q}» نیست. جستجوی دیگری امتحان کن.',
noAppsYet: 'هنوز اپلیکیشنی نیست', noAppsByUser: 'هیچ کاربری اپلیکیشنی نساخته است.',
colApplication: 'اپلیکیشن', colOwner: 'مالک', colStatus: 'وضعیت', colService: 'سرویس', colCluster: 'کلاستر',
colMigration: 'مهاجرت', colPlanExpiry: 'پلن / انقضا', colActions: 'عملیات',
unknownCluster: 'کلاستر نامشخص', notAssigned: 'تخصیص نیافته', noPlan: 'بدون پلن', deletePrefix: 'حذف: {date}',
cluster: 'کلاستر', plan: 'پلن', unknown: 'نامشخص', na: 'نامشخص',
view: 'مشاهده', migrate: 'مهاجرت', notAssignedTooltip: 'اپلیکیشن به کلاستری تخصیص نیافته است',
deleteAppTitle: 'حذف اپلیکیشن', deleteAppConfirm: 'مطمئنی می‌خواهی «{name}» را حذف کنی؟',
replicas: '{n} رپلیکا',
migrateApplication: 'مهاجرت اپلیکیشن',
moveTo: 'انتقال {name} به یک کلاستر مقصدِ سالم با لاگ، تلاش مجدد و بازگردانی.',
targetCluster: 'کلاستر مقصد', currentCluster: 'کلاستر فعلی',
unknownClusterShort: 'کلاستر نامشخص ({id})',
selectHealthyCluster: 'یک کلاستر سالم انتخاب کن',
currentExcludedNote: 'کلاستر فعلی حذف شده است. مهاجرت برای کلاسترهای ناسالم، غیرفعال یا در حال تعمیر مسدود است.',
noOtherCluster: 'هیچ کلاستر دیگری به‌عنوان مقصد مهاجرت در دسترس نیست.',
latestMigration: 'آخرین مهاجرت', queued: 'در صف', attempts: 'تلاش‌ها',
noEvents: 'هنوز رویدادی نیست.', retryMigration: 'تلاش مجدد مهاجرت',
startMigration: 'شروع مهاجرت', queueing: 'در حال صف‌بندی…',
appDeleted: 'اپلیکیشن حذف شد', migrationQueued: 'وظیفهٔ مهاجرت در صف قرار گرفت', migrationQueueFailed: 'صف‌بندی مهاجرت ناموفق بود',
migrationRetryQueued: 'تلاش مجدد مهاجرت در صف قرار گرفت', migrationRetryFailed: 'تلاش مجدد مهاجرت ناموفق بود',
migrationStatus: { completed: 'کامل', failed: 'ناموفق', rolled_back: 'بازگردانده‌شده', running: 'در حال اجرا', rolling_back: 'در حال بازگردانی', queued: 'در صف' },
},
appDetail: {
productTypeApp: 'اپلیکیشن',
cycles: { hourly: 'ساعتی', monthly: 'ماهانه', yearly: 'سالانه' },