diff --git a/frontend/src/routes/translate/[id]/+page.svelte b/frontend/src/routes/translate/[id]/+page.svelte
index d13252db..78b880f2 100644
--- a/frontend/src/routes/translate/[id]/+page.svelte
+++ b/frontend/src/routes/translate/[id]/+page.svelte
@@ -1,12 +1,7 @@
-
+
+
+
@@ -17,602 +12,63 @@
-
-
-
-
-
+
+
+
+
+
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {pageTitle}
+ {m.pageTitle}
@@ -620,84 +76,66 @@
- {isNewJob ? $t.translate?.config?.new_title : $t.translate?.config?.edit_title}
+ {m.isNewJob ? $t.translate?.config?.new_title : $t.translate?.config?.edit_title}
- {#if !isNewJob && existingJob}
-
{$t.translate?.config?.id_label.replace('{id}', existingJob.id)}
+ {#if !m.isNewJob && m.existingJob}
+
{$t.translate?.config?.id_label.replace('{id}', m.existingJob.id)}
{/if}
-
- {#if warnings.length > 0}
+ {#if m.warnings.length > 0}
{$t.translate?.config?.warnings_title}
- {#each warnings as w}
+ {#each m.warnings as w}
- {w}
{/each}
{/if}
-
- {#if uxState === 'loading'}
-
- {#each Array(6) as _}
-
- {/each}
-
+
+ {#if m.uxState === 'loading'}
+
{#each Array(6) as _}
{/each}
-
- {:else if uxState === 'error'}
+
+ {:else if m.uxState === 'error'}
-
{error || $t.translate?.common?.unknown_error}
-
goto(ROUTES.translate.list())}
- class="px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary-hover transition-colors"
- >
- {$t.translate?.config?.back_to_jobs}
-
+
{m.error || $t.translate?.common?.unknown_error}
+
goto(ROUTES.translate.list())} class="px-4 py-2 bg-primary text-white rounded-lg hover:bg-primary-hover transition-colors">{$t.translate?.config?.back_to_jobs}
- {:else if uxState === 'datasource_unavailable'}
+ {:else if m.uxState === 'datasource_unavailable'}
-
- {$t.translate?.config?.datasource_unavailable}
-
+
{$t.translate?.config?.datasource_unavailable}
- {:else if uxState === 'configured' || uxState === 'saving' || uxState === 'validation_error' || uxState === 'idle'}
+ {:else if m.uxState === 'configured' || m.uxState === 'saving' || m.uxState === 'validation_error' || m.uxState === 'idle'}
-
-
+
+
m.handleEnvChange(e.detail)}
/>
-
- {#if !isNewJob}
-
-
-
+
+ {#if !m.isNewJob}
+
+
+
{/if}
-
-
- {#if !isNewJob && existingJob}
- {#if !configValid}
-
-
- {$t.translate?.preview?.config_incomplete}
-
-
- {$t.translate?.preview?.config_requirements}
-
-
+
+
+ {#if !m.isNewJob && m.existingJob}
+ {#if !m.configValid}
+
+
{$t.translate?.preview?.config_incomplete}
+
{$t.translate?.preview?.config_requirements}
+
+ {:else}
+
+ {/if}
{:else}
-
+
+
{$t.translate?.config?.save_job_first || 'Save the job first'}
+
{/if}
- {:else}
-
-
{$t.translate?.config?.save_job_first || 'Save the job first'}
-
- {/if}
-
-
- {#if !isNewJob && existingJob}
-
- {:else}
-
-
{$t.translate?.config?.save_job_first || 'Save the job first'}
-
- {/if}
+
+
+ {#if !m.isNewJob && m.existingJob}
+
+ {:else}
+
+
{$t.translate?.config?.save_job_first || 'Save the job first'}
+
+ {/if}
-
-
- {#if !isNewJob && existingJob}
-
{ showPageBulkReplace = false; loadRunHistory(); }}
- onBulkReplaceClose={() => showPageBulkReplace = false}
- {getJobStatusLabel}
- />
- {:else}
-
-
{$t.translate?.config?.save_job_first || 'Save the job first'}
-
- {/if}
+
+
+ {#if !m.isNewJob && m.existingJob}
+
{ m.showPageBulkReplace = false; m.loadRunHistory(); }}
+ onBulkReplaceClose={() => m.showPageBulkReplace = false}
+ />
+ {:else}
+
+
{$t.translate?.config?.save_job_first || 'Save the job first'}
+
+ {/if}
{/if}
showPageBulkReplace = false}
- onApplied={(count) => { showPageBulkReplace = false; loadRunHistory(); }}
+ show={m.showPageBulkReplace}
+ runId={m.completedRuns[0]?.id || ''}
+ targetLanguages={m.targetLanguages}
+ onClose={() => m.showPageBulkReplace = false}
+ onApplied={() => { m.showPageBulkReplace = false; m.loadRunHistory(); }}
/>