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
+13 -5
View File
@@ -1,6 +1,7 @@
'use client';
import { Clock } from 'lucide-react';
import { useT } from '@/i18n/I18nProvider';
export function DeletingModal({
open,
@@ -11,12 +12,13 @@ export function DeletingModal({
resourceName: string;
resourceKind?: 'application' | 'service';
}) {
const t = useT();
if (!open) return null;
const detail =
resourceKind === 'service'
? 'Removing this service and its data from the cluster. This may take a minute.'
: 'Removing this application, deployments, and data from the cluster. This may take a minute.';
? t.components.deletingModalDetailService
: t.components.deletingModalDetailApp;
return (
<div
@@ -31,13 +33,19 @@ export function DeletingModal({
<Clock className="w-7 h-7 text-red-600 animate-spin" />
</div>
<h2 id="deleting-modal-title" className="text-lg font-semibold text-gray-900">
Deleting
{t.components.deleting}
</h2>
<p className="text-sm text-gray-600">
<span className="font-semibold text-gray-900">{resourceName}</span> is being permanently removed.
{t.components.deletingModalBeingRemoved
.split('{name}')
.flatMap((part, i) =>
i === 0
? [part]
: [<span key={i} className="font-semibold text-gray-900">{resourceName}</span>, part],
)}
</p>
<p className="text-xs text-gray-500">{detail}</p>
<p className="text-xs text-amber-700 font-medium pt-1">Please wait do not close this page.</p>
<p className="text-xs text-amber-700 font-medium pt-1">{t.components.deletingModalWait}</p>
</div>
</div>
);