Files
familienarchiv/frontend/src/lib/ocr/translateOcrProgress.ts
Marcel eaefd4091e
Some checks failed
CI / Unit & Component Tests (push) Failing after 2m34s
CI / Backend Unit Tests (push) Failing after 2m57s
CI / Unit & Component Tests (pull_request) Failing after 2m36s
CI / Backend Unit Tests (pull_request) Failing after 2m43s
feat(ocr): add PREPROCESSING_PAGE progress translation and i18n strings
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-17 14:27:42 +02:00

69 lines
1.7 KiB
TypeScript

import { m } from '$lib/paraglide/messages.js';
export interface OcrProgressResult {
message: string;
currentPage?: number;
totalPages?: number;
skippedPages?: number;
}
export function translateOcrProgress(code: string): OcrProgressResult {
if (!code) return { message: m.ocr_progress_heading() };
const parts = code.split(':');
const key = parts[0];
switch (key) {
case 'PREPARING':
return { message: m.ocr_status_preparing() };
case 'LOADING':
return { message: m.ocr_status_loading() };
case 'ANALYZING':
return { message: m.ocr_status_analyzing() };
case 'CREATING_BLOCKS':
return { message: m.ocr_status_creating_blocks({ count: parts[1] ?? '0' }) };
case 'DONE': {
const count = parts[1] ?? '0';
const skipped = parts[2] ? parseInt(parts[2], 10) : 0;
if (skipped > 0) {
return {
message: m.ocr_status_done_skipped({
count,
skipped: String(skipped)
}),
skippedPages: skipped
};
}
return { message: m.ocr_status_done_blocks({ count }) };
}
case 'ANALYZING_PAGE': {
const current = parseInt(parts[1] ?? '0', 10);
const total = parseInt(parts[2] ?? '0', 10);
return {
message: m.ocr_status_analyzing_page({
current: String(current),
total: String(total)
}),
currentPage: current,
totalPages: total
};
}
case 'PREPROCESSING_PAGE': {
const current = parseInt(parts[1] ?? '0', 10);
const total = parseInt(parts[2] ?? '0', 10);
return {
message: m.ocr_status_preprocessing_page({
current: String(current),
total: String(total)
}),
currentPage: current,
totalPages: total
};
}
case 'ERROR':
return { message: m.ocr_status_error() };
default:
return { message: code };
}
}