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:
@@ -1017,6 +1017,39 @@ const en: Dictionary = {
|
||||
insufficientRenew: 'Insufficient wallet balance. Top up your wallet or pay via invoice.',
|
||||
cycles: { hourly: 'Hourly', monthly: 'Monthly', yearly: 'Yearly' },
|
||||
},
|
||||
adminApps: {
|
||||
title: 'All Applications',
|
||||
count: '{n} application(s)',
|
||||
matching: ' matching "{q}"',
|
||||
lifecycle: { active: 'Active', suspended: 'Suspended — Unpaid', pending_deletion: 'Pending Deletion', deleted: 'Deleted' },
|
||||
cycles: { hourly: 'Hourly', monthly: 'Monthly', yearly: 'Yearly' },
|
||||
expired: 'Expired', dayShort: 'd', hourShort: 'h', minShort: 'm',
|
||||
countRunning: 'Running', countDeploying: 'Deploying', countPending: 'Pending',
|
||||
countStopped: 'Stopped', countFailed: 'Failed', countSuspended: 'Suspended', countPendingDel: 'Pending Del.',
|
||||
searchPlaceholder: 'Search by app name, user name, email, or user ID…',
|
||||
noAppsFound: 'No applications found', noResultsFor: 'No results for "{q}". Try a different search.',
|
||||
noAppsYet: 'No applications yet', noAppsByUser: 'No applications have been created by any user.',
|
||||
colApplication: 'Application', colOwner: 'Owner', colStatus: 'Status', colService: 'Service', colCluster: 'Cluster',
|
||||
colMigration: 'Migration', colPlanExpiry: 'Plan / Expiry', colActions: 'Actions',
|
||||
unknownCluster: 'Unknown cluster', notAssigned: 'Not assigned', noPlan: 'No plan', deletePrefix: 'Delete: {date}',
|
||||
cluster: 'Cluster', plan: 'Plan', unknown: 'Unknown', na: 'N/A',
|
||||
view: 'View', migrate: 'Migrate', notAssignedTooltip: 'Application is not assigned to a cluster',
|
||||
deleteAppTitle: 'Delete Application', deleteAppConfirm: 'Are you sure you want to delete "{name}"?',
|
||||
replicas: '{n} replica(s)',
|
||||
migrateApplication: 'Migrate Application',
|
||||
moveTo: 'Move {name} to a healthy target cluster with logs, retry, and rollback.',
|
||||
targetCluster: 'Target Cluster', currentCluster: 'Current cluster',
|
||||
unknownClusterShort: 'Unknown cluster ({id})',
|
||||
selectHealthyCluster: 'Select healthy cluster',
|
||||
currentExcludedNote: 'The current cluster is excluded. Migration is blocked for unhealthy, inactive, or maintenance clusters.',
|
||||
noOtherCluster: 'No other cluster is available as a migration target.',
|
||||
latestMigration: 'Latest migration', queued: 'queued', attempts: 'attempts',
|
||||
noEvents: 'No events yet.', retryMigration: 'Retry migration',
|
||||
startMigration: 'Start Migration', queueing: 'Queueing...',
|
||||
appDeleted: 'Application deleted', migrationQueued: 'Migration job queued', migrationQueueFailed: 'Failed to queue migration',
|
||||
migrationRetryQueued: 'Migration retry queued', migrationRetryFailed: 'Failed to retry migration',
|
||||
migrationStatus: { completed: 'completed', failed: 'failed', rolled_back: 'rolled back', running: 'running', rolling_back: 'rolling back', queued: 'queued' },
|
||||
},
|
||||
appDetail: {
|
||||
productTypeApp: 'Application',
|
||||
cycles: { hourly: 'Hourly', monthly: 'Monthly', yearly: 'Yearly' },
|
||||
|
||||
@@ -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: 'سالانه' },
|
||||
|
||||
Reference in New Issue
Block a user