diff --git a/frontend/e2e/lang.spec.ts b/frontend/e2e/lang.spec.ts index b7475e9a..b0efc845 100644 --- a/frontend/e2e/lang.spec.ts +++ b/frontend/e2e/lang.spec.ts @@ -58,3 +58,20 @@ test.describe('Language selector', () => { await expect(deBtn).toHaveClass(/font-bold/); }); }); + +test.describe('Mobile nav — i18n', () => { + test('hamburger button aria-label translates to EN on narrow viewport', async ({ browser }) => { + const context = await browser.newContext({ + viewport: { width: 375, height: 812 }, + storageState: 'e2e/.auth/user.json' + }); + const page = await context.newPage(); + await page.goto('/'); + await page.waitForSelector('[data-hydrated]'); + await page.getByRole('banner').getByRole('button', { name: 'EN', exact: true }).click(); + + await expect(page.getByRole('button', { name: 'Open menu' })).toBeVisible(); + + await context.close(); + }); +}); diff --git a/frontend/messages/de.json b/frontend/messages/de.json index 72254cf3..dcd08246 100644 --- a/frontend/messages/de.json +++ b/frontend/messages/de.json @@ -28,6 +28,8 @@ "nav_conversations": "Briefwechsel", "nav_admin": "Admin", "nav_logout": "Abmelden", + "layout_menu_open": "Menü öffnen", + "layout_menu_close": "Menü schließen", "theme_toggle_to_light": "Zu hellem Design wechseln", "theme_toggle_to_dark": "Zu dunklem Design wechseln", "btn_save": "Speichern", @@ -394,6 +396,10 @@ "doc_panel_discussion_annotation_tab": "Annotation · Seite {page}", "pdf_annotations_show": "Annotierungen anzeigen", "pdf_annotations_hide": "Annotierungen verbergen", + "viewer_previous_page": "Zurück", + "viewer_next_page": "Weiter", + "viewer_zoom_out": "Verkleinern", + "viewer_zoom_in": "Vergrößern", "upload_action": "Hochladen", "upload_drop_hint": "Einzeln oder mehrere Dateien auf einmal hochladen", "upload_accepted_types": "PDF, JPEG, PNG, TIFF", @@ -655,6 +661,7 @@ "transcription_block_segmentation_only": "Nur Segmentierung", "training_chip_kurrent": "Kurrent-Erkennung", "training_chip_segmentation": "Segmentierung", + "transcribe_mark_for_training": "Für Training vormerken", "training_col_type": "Typ", "training_type_base": "Basis", "training_type_personalized": "Personalisiert", diff --git a/frontend/messages/en.json b/frontend/messages/en.json index b8b6dd68..f915633e 100644 --- a/frontend/messages/en.json +++ b/frontend/messages/en.json @@ -28,6 +28,8 @@ "nav_conversations": "Letters", "nav_admin": "Admin", "nav_logout": "Sign out", + "layout_menu_open": "Open menu", + "layout_menu_close": "Close menu", "theme_toggle_to_light": "Switch to light mode", "theme_toggle_to_dark": "Switch to dark mode", "btn_save": "Save", @@ -394,6 +396,10 @@ "doc_panel_discussion_annotation_tab": "Annotation · Page {page}", "pdf_annotations_show": "Show annotations", "pdf_annotations_hide": "Hide annotations", + "viewer_previous_page": "Previous page", + "viewer_next_page": "Next page", + "viewer_zoom_out": "Zoom out", + "viewer_zoom_in": "Zoom in", "upload_action": "Upload", "upload_drop_hint": "Drop one or multiple files at once", "upload_accepted_types": "PDF, JPEG, PNG, TIFF", @@ -655,6 +661,7 @@ "transcription_block_segmentation_only": "Segmentation only", "training_chip_kurrent": "Kurrent recognition", "training_chip_segmentation": "Segmentation", + "transcribe_mark_for_training": "Mark for OCR training", "training_col_type": "Type", "training_type_base": "Base", "training_type_personalized": "Personalized", diff --git a/frontend/messages/es.json b/frontend/messages/es.json index 0943943e..1f1dec02 100644 --- a/frontend/messages/es.json +++ b/frontend/messages/es.json @@ -28,6 +28,8 @@ "nav_conversations": "Cartas", "nav_admin": "Admin", "nav_logout": "Cerrar sesión", + "layout_menu_open": "Abrir menú", + "layout_menu_close": "Cerrar menú", "theme_toggle_to_light": "Cambiar a modo claro", "theme_toggle_to_dark": "Cambiar a modo oscuro", "btn_save": "Guardar", @@ -394,6 +396,10 @@ "doc_panel_discussion_annotation_tab": "Anotación · Página {page}", "pdf_annotations_show": "Mostrar anotaciones", "pdf_annotations_hide": "Ocultar anotaciones", + "viewer_previous_page": "Página anterior", + "viewer_next_page": "Página siguiente", + "viewer_zoom_out": "Reducir", + "viewer_zoom_in": "Ampliar", "upload_action": "Subir", "upload_drop_hint": "Uno o varios archivos a la vez", "upload_accepted_types": "PDF, JPEG, PNG, TIFF", @@ -655,6 +661,7 @@ "transcription_block_segmentation_only": "Solo segmentación", "training_chip_kurrent": "Reconocimiento Kurrent", "training_chip_segmentation": "Segmentación", + "transcribe_mark_for_training": "Marcar para entrenamiento de OCR", "training_col_type": "Tipo", "training_type_base": "Base", "training_type_personalized": "Personalizado", diff --git a/frontend/src/lib/document/transcription/TranscriptionEditView.svelte b/frontend/src/lib/document/transcription/TranscriptionEditView.svelte index b9aecafe..9aeb473e 100644 --- a/frontend/src/lib/document/transcription/TranscriptionEditView.svelte +++ b/frontend/src/lib/document/transcription/TranscriptionEditView.svelte @@ -303,7 +303,9 @@ async function handleLabelToggle(label: string) { {#if canWrite && hasBlocks}
-

Für Training vormerken

+

+ {m.transcribe_mark_for_training()} +

{#each [{ label: 'KURRENT_RECOGNITION', display: m.training_chip_kurrent() }, { label: 'KURRENT_SEGMENTATION', display: m.training_chip_segmentation() }] as chip (chip.label)}