Localize the managed-service detail page.

Move the service detail view (header actions, renewal banner, config,
deployment history, DB/Redis/RabbitMQ connection panels, renew modal)
onto a dashboard.serviceDetail dictionary with localized product-type and
deploy-status labels, locale-aware dates and RTL-aware layout.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
keyhan
2026-06-11 22:48:47 +03:30
parent deef498f65
commit 8d423f8224
4 changed files with 228 additions and 86 deletions
+68
View File
@@ -949,6 +949,74 @@ const en: Dictionary = {
insufficientBalance: 'Insufficient wallet balance',
serviceDesc: 'Service: {name} ({cycle})',
},
serviceDetail: {
productTypes: {
managed_database: 'Managed Database',
managed_redis: 'Managed Redis',
managed_rabbitmq: 'Managed RabbitMQ',
},
deploy: 'Deploy',
redeploy: 'Redeploy',
redeployTitle: 'Re-run Helm install for this service',
restart: 'Restart',
deleteServiceTitle: 'Delete service?',
deleteServiceMessage: 'Delete “{name}” permanently?',
provisioningStarted: 'Provisioning started',
provisioningFailed: 'Failed to start provisioning',
reprovisioningStarted: 'Re-provisioning started',
reprovisionFailed: 'Failed to re-provision service',
serviceRestarted: 'Service restarted',
restartFailed: 'Failed to restart service',
serviceRenewed: 'Service renewed',
renewalFailed: 'Renewal failed',
deletedWithCredit: 'Service deleted. Prepaid resources are on your dashboard.',
deleted: 'Service deleted',
deleteFailed: 'Failed to delete',
paymentRequired: 'Payment required',
renewToRestore: 'Renew to restore this service.',
renew: 'Renew',
planExpires: 'Plan expires: {date}',
configuration: 'Configuration',
serviceType: 'Service type',
databaseEngine: 'Database engine',
storage: 'Storage',
redisVersion: 'Redis version',
rabbitmqVersion: 'RabbitMQ version',
cpu: 'CPU',
memory: 'Memory',
billing: 'Billing',
deployMarker: 'Deploy marker',
deploymentHistory: 'Deployment History',
noDeployments: 'No deployments yet',
noDeploymentsHint: 'Click Deploy to provision this service',
provision: 'Provision',
connection: 'Connection',
internalCluster: 'Internal cluster',
host: 'Host',
port: 'Port',
database: 'Database',
username: 'Username',
password: 'Password',
useExternalNote: 'Use external access below for internet-facing connections.',
hideSecrets: 'Hide secrets',
showSecrets: 'Show secrets',
redisInternal: 'Redis (internal)',
rabbitmqInternal: 'RabbitMQ (internal)',
url: 'URL',
amqpPort: 'AMQP Port',
managementPort: 'Management Port',
amqpUrl: 'AMQP URL',
managementUrl: 'Management URL',
deployToLoadCreds: 'Deploy the service to load live credentials.',
loadingLogs: 'Loading logs...',
serviceStopped: 'Service is stopped.',
deployToSeeLogs: 'Deploy or re-provision the service to see workload logs.',
renewService: 'Renew service',
wallet: 'Wallet',
payFromWallet: 'Pay from wallet',
insufficientRenew: 'Insufficient wallet balance. Top up your wallet or pay via invoice.',
cycles: { hourly: 'Hourly', monthly: 'Monthly', yearly: 'Yearly' },
},
},
};
+68
View File
@@ -948,6 +948,74 @@ const fa = {
insufficientBalance: 'موجودی کیف‌پول کافی نیست',
serviceDesc: 'سرویس: {name} ({cycle})',
},
serviceDetail: {
productTypes: {
managed_database: 'دیتابیس مدیریت‌شده',
managed_redis: 'Redis مدیریت‌شده',
managed_rabbitmq: 'RabbitMQ مدیریت‌شده',
},
deploy: 'انتشار',
redeploy: 'انتشار مجدد',
redeployTitle: 'اجرای مجدد Helm install برای این سرویس',
restart: 'ری‌استارت',
deleteServiceTitle: 'حذف سرویس؟',
deleteServiceMessage: 'حذف «{name}» به‌صورت دائمی؟',
provisioningStarted: 'راه‌اندازی آغاز شد',
provisioningFailed: 'شروع راه‌اندازی ناموفق بود',
reprovisioningStarted: 'راه‌اندازی مجدد آغاز شد',
reprovisionFailed: 'راه‌اندازی مجدد سرویس ناموفق بود',
serviceRestarted: 'سرویس ری‌استارت شد',
restartFailed: 'ری‌استارت سرویس ناموفق بود',
serviceRenewed: 'سرویس تمدید شد',
renewalFailed: 'تمدید ناموفق بود',
deletedWithCredit: 'سرویس حذف شد. منابع پیش‌پرداختت روی داشبورد است.',
deleted: 'سرویس حذف شد',
deleteFailed: 'حذف ناموفق بود',
paymentRequired: 'پرداخت لازم است',
renewToRestore: 'برای بازگرداندن این سرویس تمدید کن.',
renew: 'تمدید',
planExpires: 'انقضای پلن: {date}',
configuration: 'پیکربندی',
serviceType: 'نوع سرویس',
databaseEngine: 'موتور دیتابیس',
storage: 'فضای ذخیره',
redisVersion: 'نسخهٔ Redis',
rabbitmqVersion: 'نسخهٔ RabbitMQ',
cpu: 'CPU',
memory: 'حافظه',
billing: 'صورت‌حساب',
deployMarker: 'نشان دیپلوی',
deploymentHistory: 'تاریخچهٔ دیپلوی',
noDeployments: 'هنوز دیپلویی نیست',
noDeploymentsHint: 'برای راه‌اندازی این سرویس روی «انتشار» بزن',
provision: 'راه‌اندازی',
connection: 'اتصال',
internalCluster: 'کلاستر داخلی',
host: 'هاست',
port: 'پورت',
database: 'دیتابیس',
username: 'نام کاربری',
password: 'رمز عبور',
useExternalNote: 'برای اتصال‌های اینترنتی از دسترسی خارجی زیر استفاده کن.',
hideSecrets: 'پنهان‌کردن اسرار',
showSecrets: 'نمایش اسرار',
redisInternal: 'Redis (داخلی)',
rabbitmqInternal: 'RabbitMQ (داخلی)',
url: 'آدرس',
amqpPort: 'پورت AMQP',
managementPort: 'پورت مدیریت',
amqpUrl: 'آدرس AMQP',
managementUrl: 'آدرس مدیریت',
deployToLoadCreds: 'برای بارگذاری اطلاعات ورود زنده، سرویس را منتشر کن.',
loadingLogs: 'در حال بارگذاری لاگ‌ها…',
serviceStopped: 'سرویس متوقف است.',
deployToSeeLogs: 'برای دیدن لاگ workload، سرویس را منتشر یا راه‌اندازی مجدد کن.',
renewService: 'تمدید سرویس',
wallet: 'کیف‌پول',
payFromWallet: 'پرداخت از کیف‌پول',
insufficientRenew: 'موجودی کیف‌پول کافی نیست. کیف‌پول را شارژ کن یا از طریق فاکتور پرداخت کن.',
cycles: { hourly: 'ساعتی', monthly: 'ماهانه', yearly: 'سالانه' },
},
},
};