i18 cleanup

This commit is contained in:
2026-02-25 18:31:50 +03:00
parent 3f66a58b12
commit 1d8eadf796
48 changed files with 1431 additions and 808 deletions

View File

@@ -28,7 +28,7 @@
async function loadDashboardDetail() {
if (!dashboardId || !envId) {
error = "Missing dashboard ID or environment ID";
error = $t.dashboard?.missing_context ;
isLoading = false;
return;
}
@@ -38,7 +38,7 @@
try {
dashboard = await api.getDashboardDetail(envId, dashboardId);
} catch (err) {
error = err.message || "Failed to load dashboard details";
error = err.message || $t.dashboard?.load_detail_failed ;
console.error("[DashboardDetail][Coherence:Failed]", err);
} finally {
isLoading = false;
@@ -69,20 +69,20 @@
on:click={goBack}
>
<Icon name="chevronLeft" size={16} />
{$t.common?.back || "Back to Dashboards"}
{$t.common?.back }
</button>
<h1 class="mt-2 text-2xl font-bold text-slate-900">
{dashboard?.title || "Dashboard Overview"}
{dashboard?.title || ($t.dashboard?.overview )}
</h1>
<p class="mt-1 text-sm text-slate-500">
ID: {dashboardId}{#if dashboard?.slug}{dashboard.slug}{/if}
{$t.common?.id }: {dashboardId}{#if dashboard?.slug}{dashboard.slug}{/if}
</p>
</div>
<button
class="inline-flex items-center justify-center rounded-lg bg-primary px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-primary-hover"
on:click={loadDashboardDetail}
>
{$t.common?.refresh || "Refresh"}
{$t.common?.refresh }
</button>
</div>
@@ -90,7 +90,7 @@
<div class="flex items-center justify-between rounded-lg border border-red-300 bg-red-50 px-4 py-3 text-red-700">
<span>{error}</span>
<button class="rounded bg-red-600 px-3 py-1.5 text-white hover:bg-red-700" on:click={loadDashboardDetail}>
{$t.common?.retry || "Retry"}
{$t.common?.retry }
</button>
</div>
{/if}
@@ -105,39 +105,39 @@
{:else if dashboard}
<div class="grid grid-cols-1 gap-4 md:grid-cols-3">
<div class="rounded-xl border border-slate-200 bg-white p-4">
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Last modified</p>
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">{$t.dashboard?.last_modified }</p>
<p class="mt-2 text-lg font-semibold text-slate-900">{formatDate(dashboard.last_modified)}</p>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-4">
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Charts</p>
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">{$t.dashboard?.charts }</p>
<p class="mt-2 text-lg font-semibold text-slate-900">{dashboard.chart_count || 0}</p>
</div>
<div class="rounded-xl border border-slate-200 bg-white p-4">
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">Datasets</p>
<p class="text-xs font-semibold uppercase tracking-wide text-slate-500">{$t.nav?.datasets }</p>
<p class="mt-2 text-lg font-semibold text-slate-900">{dashboard.dataset_count || 0}</p>
</div>
</div>
{#if dashboard.description}
<div class="rounded-xl border border-slate-200 bg-white p-4">
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">Overview</h2>
<h2 class="text-sm font-semibold uppercase tracking-wide text-slate-500">{$t.dashboard?.overview }</h2>
<p class="mt-2 text-sm text-slate-700">{dashboard.description}</p>
</div>
{/if}
<div class="rounded-xl border border-slate-200 bg-white overflow-hidden">
<div class="border-b border-slate-200 px-4 py-3">
<h2 class="text-lg font-semibold text-slate-900">Charts</h2>
<h2 class="text-lg font-semibold text-slate-900">{$t.dashboard?.charts }</h2>
</div>
{#if dashboard.charts && dashboard.charts.length > 0}
<div class="overflow-x-auto">
<table class="min-w-full divide-y divide-slate-200 text-sm">
<thead class="bg-slate-50">
<tr>
<th class="px-4 py-2 text-left font-semibold text-slate-600">Chart</th>
<th class="px-4 py-2 text-left font-semibold text-slate-600">Dataset</th>
<th class="px-4 py-2 text-left font-semibold text-slate-600">Overview</th>
<th class="px-4 py-2 text-left font-semibold text-slate-600">Last modified</th>
<th class="px-4 py-2 text-left font-semibold text-slate-600">{$t.settings?.type_chart }</th>
<th class="px-4 py-2 text-left font-semibold text-slate-600">{$t.nav?.datasets }</th>
<th class="px-4 py-2 text-left font-semibold text-slate-600">{$t.dashboard?.overview }</th>
<th class="px-4 py-2 text-left font-semibold text-slate-600">{$t.dashboard?.last_modified }</th>
</tr>
</thead>
<tbody class="divide-y divide-slate-100">
@@ -152,9 +152,9 @@
<button
class="inline-flex items-center gap-1 rounded-md px-2 py-1 text-xs font-medium text-blue-700 hover:bg-blue-50 hover:text-blue-800"
on:click={() => openDataset(chart.dataset_id)}
title={`Open dataset ${chart.dataset_id}`}
title={`${$t.datasets?.table_name } ${chart.dataset_id}`}
>
Dataset {chart.dataset_id}
{$t.nav?.datasets } {chart.dataset_id}
<Icon name="chevronRight" size={12} className="text-blue-500" />
</button>
{:else}
@@ -169,13 +169,13 @@
</table>
</div>
{:else}
<div class="px-4 py-8 text-sm text-slate-500">No charts found for this dashboard.</div>
<div class="px-4 py-8 text-sm text-slate-500">{$t.dashboard?.no_charts }</div>
{/if}
</div>
<div class="rounded-xl border border-slate-200 bg-white overflow-hidden">
<div class="border-b border-slate-200 px-4 py-3">
<h2 class="text-lg font-semibold text-slate-900">Datasets</h2>
<h2 class="text-lg font-semibold text-slate-900">{$t.nav?.datasets }</h2>
</div>
{#if dashboard.datasets && dashboard.datasets.length > 0}
<div class="divide-y divide-slate-100">
@@ -199,7 +199,7 @@
{/each}
</div>
{:else}
<div class="px-4 py-8 text-sm text-slate-500">No datasets found for this dashboard.</div>
<div class="px-4 py-8 text-sm text-slate-500">{$t.dashboard?.no_datasets }</div>
{/if}
</div>
{/if}