Add a translation assistant to the panel

Each field's original sits beside the field to write, and a translation that
fell behind shows what the original said when it was translated and what it
says now, word by word.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-01 10:53:31 +02:00
parent 76d022053b
commit 6fc600e6a1
16 changed files with 837 additions and 61 deletions

View File

@@ -144,6 +144,38 @@ return [
'select_all' => 'Selecciona-ho tot',
],
'translate' => [
'title' => 'Traduccions',
'title_for' => ':title en :language',
'action' => 'Traduir',
'pending' => 'Per traduir',
'pending_hint' => 'El que falta escriure en un idioma (blau) o s\'ha quedat enrere perquè l\'original va canviar després (ambre).',
'nothing' => 'Tot està traduït i al dia.',
'translate_into' => 'Traduir al :language',
'update_in' => 'Actualitzar :language (des de :since)',
'changed' => 'Ha canviat a l\'original:',
'stale_since' => 'L\'original va canviar el :date, després de traduir-se.',
'save' => 'Desar en :language',
'saved' => 'Traducció desada',
'back' => 'Tornar a la llista',
'columns' => [
'record' => 'Contingut',
'languages' => 'Idiomes',
],
'fields' => [
'title' => 'Títol',
'excerpt' => 'Extracte',
'body' => 'Contingut',
'meta_title' => 'Títol SEO',
'meta_description' => 'Descripció SEO',
'tagline' => 'Lema',
'description' => 'Descripció',
'decisions' => 'Decisions',
'postmortem' => 'Postmortem',
'what_you_get' => 'Què t\'emportes',
],
],
'replies' => [
'empty_template' => 'La plantilla no té text en l\'idioma d\'aquesta sol·licitud.',
'heading' => 'Respondre a :name',

View File

@@ -144,6 +144,38 @@ return [
'select_all' => 'Select all',
],
'translate' => [
'title' => 'Translations',
'title_for' => ':title in :language',
'action' => 'Translate',
'pending' => 'To translate',
'pending_hint' => 'What is still to be written in a language (blue) or fell behind because the original changed afterwards (amber).',
'nothing' => 'Everything is translated and up to date.',
'translate_into' => 'Translate into :language',
'update_in' => 'Update :language (since :since)',
'changed' => 'Changed in the original:',
'stale_since' => 'The original changed on :date, after it was translated.',
'save' => 'Save in :language',
'saved' => 'Translation saved',
'back' => 'Back to the list',
'columns' => [
'record' => 'Content',
'languages' => 'Languages',
],
'fields' => [
'title' => 'Title',
'excerpt' => 'Excerpt',
'body' => 'Content',
'meta_title' => 'SEO title',
'meta_description' => 'SEO description',
'tagline' => 'Tagline',
'description' => 'Description',
'decisions' => 'Decisions',
'postmortem' => 'Postmortem',
'what_you_get' => 'What you get',
],
],
'replies' => [
'empty_template' => 'The template has no text in the language of this submission.',
'heading' => 'Reply to :name',

View File

@@ -144,6 +144,38 @@ return [
'select_all' => 'Seleccionar todos',
],
'translate' => [
'title' => 'Traducciones',
'title_for' => ':title en :language',
'action' => 'Traducir',
'pending' => 'Por traducir',
'pending_hint' => 'Lo que falta escribir en un idioma (azul) o se quedó atrás porque el original cambió después (ámbar).',
'nothing' => 'Todo está traducido y al día.',
'translate_into' => 'Traducir al :language',
'update_in' => 'Actualizar :language (desde :since)',
'changed' => 'Cambió en el original:',
'stale_since' => 'El original cambió el :date, después de traducirse.',
'save' => 'Guardar en :language',
'saved' => 'Traducción guardada',
'back' => 'Volver a la lista',
'columns' => [
'record' => 'Contenido',
'languages' => 'Idiomas',
],
'fields' => [
'title' => 'Título',
'excerpt' => 'Extracto',
'body' => 'Contenido',
'meta_title' => 'Título SEO',
'meta_description' => 'Descripción SEO',
'tagline' => 'Lema',
'description' => 'Descripción',
'decisions' => 'Decisiones',
'postmortem' => 'Postmortem',
'what_you_get' => 'Qué te llevas',
],
],
'replies' => [
'empty_template' => 'La plantilla no tiene texto en el idioma de esta solicitud.',
'heading' => 'Responder a :name',