Localize shared modal, overlay and deployment-progress components.

Localize the confirm modal, delete button, deleting overlays/modal, the
build-progress modal, deployment progress bar/manager and the resource
upgrade modal via a shared components dictionary. Build-phase labels now
resolve from the dictionary; deleting overlays take name/kind and build
their own localized message (callers updated).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
keyhan
2026-06-11 13:23:44 +03:30
parent f8ee1ca168
commit e99ab789ba
14 changed files with 205 additions and 86 deletions
+44
View File
@@ -136,6 +136,50 @@ const en: Dictionary = {
},
},
components: {
deleting: 'Deleting…',
deletingNamed: 'Deleting “{name}”…',
deletingService: 'Deleting service…',
deletingApplication: 'Deleting application…',
deletingModalBeingRemoved: '“{name}” is being permanently removed.',
deletingModalDetailApp: 'Removing this application, deployments, and data from the cluster. This may take a minute.',
deletingModalDetailService: 'Removing this service and its data from the cluster. This may take a minute.',
deletingModalWait: 'Please wait — do not close this page.',
buildPhases: {
uploading: 'Uploading source to cluster',
building: 'Building Docker image',
deploying: 'Deploying to Kubernetes',
done: 'Deployment complete',
failed: 'Deployment failed',
cancelled: 'Deployment cancelled',
},
startingDeployment: 'Starting deployment…',
deploymentCancelled: 'Deployment cancelled',
cancelDeploymentFailed: 'Failed to cancel deployment',
minimizeHint: 'Use minimize to keep working while deployment continues. Close (×) cancels the deployment.',
continueInBackground: 'Continue in background',
minimizeAria: 'Minimize and continue in background',
cancelDeploymentAria: 'Cancel deployment',
viewProgressFor: 'View deployment progress for {name}',
prevDeployment: 'Previous deployment',
nextDeployment: 'Next deployment',
upgradeTitle: 'Confirm Resource Upgrade',
upgradeNeedsPay: 'This upgrade requires payment for the remaining billing period.',
upgradeNoCost: 'No additional cost for this change.',
currentHourlyCost: 'Current hourly cost',
newHourlyCost: 'New hourly cost',
remainingHoursInPeriod: 'Remaining hours in period',
proratedAmountToPay: 'Prorated amount to pay',
walletBalance: 'Wallet Balance',
tomanPerHour: '{n} Toman/hour',
hoursUnit: '{n} hours',
tomanUnit: '{n} Toman',
walletShortBy: 'Wallet is short by {n} Toman. You can pay the delta by gateway on the invoice page.',
applying: 'Applying…',
createInvoicePay: 'Create Invoice & Pay',
applyChanges: 'Apply Changes',
},
nav: {
sectionAdmin: 'Admin',
sectionTechnical: 'Technical',
+44
View File
@@ -135,6 +135,50 @@ const fa = {
},
},
components: {
deleting: 'در حال حذف…',
deletingNamed: 'در حال حذف «{name}»…',
deletingService: 'در حال حذف سرویس…',
deletingApplication: 'در حال حذف اپلیکیشن…',
deletingModalBeingRemoved: '«{name}» برای همیشه حذف می‌شود.',
deletingModalDetailApp: 'این اپلیکیشن، دیپلوی‌ها و داده‌هایش از کلاستر حذف می‌شود. ممکن است یک دقیقه طول بکشد.',
deletingModalDetailService: 'این سرویس و داده‌هایش از کلاستر حذف می‌شود. ممکن است یک دقیقه طول بکشد.',
deletingModalWait: 'لطفاً صبر کن — این صفحه را نبند.',
buildPhases: {
uploading: 'آپلود سورس به کلاستر',
building: 'ساخت ایمیج داکر',
deploying: 'انتشار روی کوبرنتیز',
done: 'دیپلوی کامل شد',
failed: 'دیپلوی ناموفق بود',
cancelled: 'دیپلوی لغو شد',
},
startingDeployment: 'در حال شروع دیپلوی…',
deploymentCancelled: 'دیپلوی لغو شد',
cancelDeploymentFailed: 'لغو دیپلوی ناموفق بود',
minimizeHint: 'برای ادامهٔ کار حین دیپلوی، کوچک کن. بستن (×) دیپلوی را لغو می‌کند.',
continueInBackground: 'ادامه در پس‌زمینه',
minimizeAria: 'کوچک کن و در پس‌زمینه ادامه بده',
cancelDeploymentAria: 'لغو دیپلوی',
viewProgressFor: 'مشاهدهٔ پیشرفت دیپلوی برای {name}',
prevDeployment: 'دیپلوی قبلی',
nextDeployment: 'دیپلوی بعدی',
upgradeTitle: 'تأیید ارتقای منابع',
upgradeNeedsPay: 'این ارتقا نیازمند پرداخت برای بازهٔ باقی‌ماندهٔ صورت‌حساب است.',
upgradeNoCost: 'این تغییر هزینهٔ اضافه‌ای ندارد.',
currentHourlyCost: 'هزینهٔ ساعتی فعلی',
newHourlyCost: 'هزینهٔ ساعتی جدید',
remainingHoursInPeriod: 'ساعت‌های باقی‌مانده در بازه',
proratedAmountToPay: 'مبلغ تسهیم‌شده برای پرداخت',
walletBalance: 'موجودی کیف‌پول',
tomanPerHour: '{n} تومان/ساعت',
hoursUnit: '{n} ساعت',
tomanUnit: '{n} تومان',
walletShortBy: 'موجودی کیف‌پول {n} تومان کم است. می‌توانی مابه‌التفاوت را از طریق درگاه در صفحهٔ فاکتور پرداخت کنی.',
applying: 'در حال اعمال…',
createInvoicePay: 'ساخت فاکتور و پرداخت',
applyChanges: 'اعمال تغییرات',
},
nav: {
sectionAdmin: 'مدیریت',
sectionTechnical: 'فنی',