Localize workload-logs and external-access panels.

Add components.workloadLogs, components.deployStatus and
components.externalAccess dictionaries; move the workload logs panel and
the service external-access panel onto them (tabs, live-refresh hints,
access modes, countdown units, toasts) with RTL-aware spacing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
keyhan
2026-06-11 18:25:45 +03:30
parent f64d341c80
commit 63e368f464
5 changed files with 183 additions and 50 deletions
+64
View File
@@ -188,6 +188,70 @@ const en: Dictionary = {
twoCores: '2 cores',
storageGb: 'Storage (GB)',
},
deployStatus: {
running: 'running',
pending: 'pending',
building: 'building',
deploying: 'deploying',
failed: 'failed',
build_failed: 'build_failed',
cancelled: 'cancelled',
stopped: 'stopped',
active: 'active',
suspended: 'suspended',
pending_deletion: 'pending_deletion',
},
workloadLogs: {
logs: 'Logs',
liveEvery3s: 'Live (every 3s)',
autoEvery5s: 'Auto-refresh (every 5s)',
hideLogs: 'Hide logs',
showLogs: 'Show logs',
podLogs: 'Pod logs',
buildLogs: 'Build logs',
noBuildNote: 'Workload pod output (no image build for this service).',
loadingLogs: 'Loading logs...',
serviceStopped: 'Service is stopped. Start it to see logs.',
waitingPods: 'Waiting for workload pods to be ready...',
buildInProgress: 'Build in progress... Logs will appear when complete.',
buildPending: 'Build is pending...',
noDeployments: 'No deployments yet. Deploy your app to see build logs.',
noBuildLogs: 'No build logs available for this deployment.',
},
externalAccess: {
title: 'External access',
warning: 'Opens a NodePort on the cluster node IP. Anyone who can reach that IP may connect until the session ends or you revoke it. Use short durations for temporary access; permanent keeps the port open until revoked.',
deployFirst: 'Deploy the service first to enable external access.',
service: 'Service',
accessMode: 'Access mode',
temporary: 'Temporary',
alwaysOpen: 'Always open',
duration: 'Duration',
persistentNote: 'The port stays exposed until you click Revoke. Only use this when you need a stable external endpoint.',
opening: 'Opening…',
openPermanently: 'Open port permanently',
enableAccess: 'Enable access',
noSessions: 'No active external access sessions.',
revoke: 'Revoke',
endpoint: 'Endpoint',
url: 'URL',
permanentUntilRevoked: 'Permanent (until revoked)',
expired: 'Expired',
targets: {
database: 'Database',
redis: 'Redis',
rabbitmq_amqp: 'RabbitMQ (AMQP)',
rabbitmq_management: 'RabbitMQ Management UI',
},
permanentEnabled: 'Permanent external access enabled',
temporaryEnabled: 'Temporary external access enabled',
enableFailed: 'Failed to enable access',
revoked: 'Access revoked',
revokeFailed: 'Failed to revoke access',
hShort: 'h',
mShort: 'm',
sShort: 's',
},
},
nav: {
+64
View File
@@ -187,6 +187,70 @@ const fa = {
twoCores: '۲ هسته',
storageGb: 'فضای ذخیره (GB)',
},
deployStatus: {
running: 'در حال اجرا',
pending: 'در انتظار',
building: 'در حال ساخت',
deploying: 'در حال انتشار',
failed: 'ناموفق',
build_failed: 'ساخت ناموفق',
cancelled: 'لغوشده',
stopped: 'متوقف',
active: 'فعال',
suspended: 'معلق',
pending_deletion: 'در انتظار حذف',
},
workloadLogs: {
logs: 'لاگ‌ها',
liveEvery3s: 'زنده (هر ۳ث)',
autoEvery5s: 'تازه‌سازی خودکار (هر ۵ث)',
hideLogs: 'پنهان‌کردن لاگ‌ها',
showLogs: 'نمایش لاگ‌ها',
podLogs: 'لاگ پاد',
buildLogs: 'لاگ بیلد',
noBuildNote: 'خروجی پاد workload (این سرویس بیلد ایمیج ندارد).',
loadingLogs: 'در حال بارگذاری لاگ‌ها…',
serviceStopped: 'سرویس متوقف است. برای دیدن لاگ آن را اجرا کن.',
waitingPods: 'در انتظار آماده‌شدن پادهای workload…',
buildInProgress: 'بیلد در حال انجام… لاگ پس از تکمیل نمایش داده می‌شود.',
buildPending: 'بیلد در صف است…',
noDeployments: 'هنوز دیپلویی نیست. برای دیدن لاگ بیلد اپت را منتشر کن.',
noBuildLogs: 'لاگ بیلدی برای این دیپلوی موجود نیست.',
},
externalAccess: {
title: 'دسترسی خارجی',
warning: 'یک NodePort روی IP نود کلاستر باز می‌کند. هر کسی که به آن IP دسترسی داشته باشد تا پایان نشست یا لغو آن می‌تواند متصل شود. برای دسترسی موقت از مدت‌های کوتاه استفاده کن؛ حالت دائمی پورت را تا لغو باز نگه می‌دارد.',
deployFirst: 'برای فعال‌سازی دسترسی خارجی، اول سرویس را منتشر کن.',
service: 'سرویس',
accessMode: 'حالت دسترسی',
temporary: 'موقت',
alwaysOpen: 'همیشه باز',
duration: 'مدت',
persistentNote: 'پورت تا وقتی روی «لغو» کلیک کنی باز می‌ماند. فقط وقتی به یک نقطهٔ پایانیِ خارجیِ پایدار نیاز داری استفاده کن.',
opening: 'در حال باز کردن…',
openPermanently: 'باز کردن دائمی پورت',
enableAccess: 'فعال‌سازی دسترسی',
noSessions: 'نشست دسترسی خارجی فعالی وجود ندارد.',
revoke: 'لغو',
endpoint: 'نقطهٔ پایانی',
url: 'آدرس',
permanentUntilRevoked: 'دائمی (تا لغو)',
expired: 'منقضی‌شده',
targets: {
database: 'دیتابیس',
redis: 'Redis',
rabbitmq_amqp: 'RabbitMQ (AMQP)',
rabbitmq_management: 'رابط مدیریت RabbitMQ',
},
permanentEnabled: 'دسترسی خارجی دائمی فعال شد',
temporaryEnabled: 'دسترسی خارجی موقت فعال شد',
enableFailed: 'فعال‌سازی دسترسی ناموفق بود',
revoked: 'دسترسی لغو شد',
revokeFailed: 'لغو دسترسی ناموفق بود',
hShort: 'س',
mShort: 'د',
sShort: 'ث',
},
},
nav: {