Parliamo del progetto
Partitech Sonata Extra Bundle

Sonata Extra Bundle: creare un modello di traduzione da linea di comando

Anteprima PartitechSonataExtraBundle fornisce un modo pratico di gestire le traduzioni in Sonata Admin. Questo bundle include due comandi principali: sonata:extra:translation-create-template e sonata:extra:translation-import-template. Questi comandi facili...

Contrôles de compatibilité Symfony et Sonata

Anteprima

PartitechSonataExtraBundle fornisce un modo pratico di gestire le traduzioni in Sonata Admin. Questo bundle include due comandi principali: sonata:extra:translation-create-template e sonata:extra:translation-import-template. Questi comandi facilitano la creazione e l'importazione di traduzioni, ottimizzando il processo e integrandosi con un servizio di traduzione esterno.

Ordini

Ordine sonata:extra:translation-create-template

Descrizione

Questo comando prepara il tuo contenuto per la traduzione. Crea una struttura di directory con file contenenti il testo da tradurre.

Uso

bin/console sonata:extra:translation-create-template --site=[SITE_ID] --reference-site=[REFERENCE_SITE_ID] --service="[ADMIN_SERVICE]"

  • --site: L'ID del sito per il quale devono essere create le traduzioni.
  • --reference-site: L'identificativo del sito di riferimento.
  • --service: Il servizio di amministrazione per il quale sono necessarie delle traduzioni.

uscita

Il comando genera un insieme di directory e file sotto var/cache/translation/YourService/. Per ogni identificativo articolo, troverete file come:

  • payloadArray.txt: Contiene frasi da tradurre.
  • payloadArray_translated.json: Per memorizzare il contenuto tradotto.
  • Altri file per gestire il contenuto strutturato come l'HTML.

Ordine sonata:extra:translation-import-template

Descrizione

Questo comando importa il contenuto tradotto nel tuo database, ricostruendo la struttura HTML.

Utilizzo

Dopo aver tradotto il contenuto, esegui:

bin/console sonata:extra:translation-import-template --service="[ADMIN_SERVICE]"

Panoramica del processo

  1. Disattivare la traduzione automatica: Per prima cosa, assicuratevi che la traduzione automatica sia disattivata.
  2. Creare un modello di traduzione: usare il comando sonata:extra:translation-create-template per generare file di traduzione.
  3. Tradurre il contenuto: Invia il contenuto di payloadArray.txt al servizio di traduzione selezionato o a un traduttore professionista. Compilate il contenuto tradotto in payloadArray_translated.json.
  4. Gestire i contenuti strutturati: per i campi HTML, utilizzare field_content_payload.txt per la traduzione e aggiornare di conseguenza field_content_translation.txt.
  5. Importare traduzioni: Esegui il comando sonata:extra:translation-import-template per aggiornare i tuoi contenuti con le nuove traduzioni.

Esempio

# Creating translation templates
bin/console sonata:extra:translation-create-template --site=5 --reference-site=2 --service="Partitech\SonataExtra\Admin\ArticleAdmin"

# Importing translated content
bin/console sonata:extra:translation-import-template --service="Partitech\SonataExtra\Admin\ArticleAdmin"

Gestire contenuti strutturati come l'HTML

Quando si tratta traduzioni per campi di testo contenenti contenuti strutturati (ad esempio, HTML), il PartitechSonataExtraBundle fornisce un metodo sofisticato per assicurarsi che la struttura e la formattazione siano preservate. Questo è particolarmente importante per il contenuto che include tag HTML, frammenti di codice, immagini e altri media incorporati.

Comprendere la struttura dei file

Il comando sonata:extra:translation-create-template genera più file per aiutare in questo processo :

  1. field_content_code_blocks.json: Questo file contiene «blocchi di codice» o sezioni del contenuto HTML che non devono essere tradotte. Questo può includere estratti di codice reali, media incorporati o altri elementi non testuali nel tuo contenuto HTML.
  2. field_content_payload.txt: Questo file include il testo del tuo contenuto HTML che necessita di traduzione. Prima di creare questo file, il pacchetto estrae gli elementi non traducibili (come quelli in field_content_code_blocks.json) e li sostituisce con dei segnaposto. Questa estrazione garantisce che venga tradotto solo il testo necessario, ottimizzando sia la qualità sia il costo della traduzione.
  3. field_content_translation.txt: Dopo aver tradotto il contenuto in field_content_payload.txt, il testo tradotto deve essere inserito in questo file.

Il processo di traduzione

Ecco una panoramica dettagliata di come funziona il processo di traduzione per i contenuti strutturati:

  1. Estrarre gli elementi non traducibili: Il pacchetto identifica ed estrae le parti del contenuto HTML che non hanno bisogno di essere tradotte (ad esempio, i blocchi di codice, le immagini) e le memorizza in field_content_code_blocks.json. Questi elementi vengono sostituiti da segnaposto nel testo HTML.
  2. Il contenuto testuale da tradurre, ora privo degli elementi non testuali, è collocato in field_content_payload.txt. Questo testo deve essere sottoposto a traduzione.
  3. Reinserire il testo tradotto: Una volta tradotto, il nuovo testo viene inserito in field_content_translation.txt.
  4. Ricostruire il contenuto HTML: Durante il processo di importazione (sonata:extra:translation-import-template), il bundle ricompone il contenuto HTML. Combina il testo tradotto di field_content_translation.txt con gli elementi non traducibili di field_content_code_blocks.json, sostituendo i segnaposto con il loro contenuto originale.

Conclusione

Questa funzionalità semplifica il processo di traduzione in Sonata Admin, integrandosi perfettamente con gli strumenti di traduzione esterni e garantendo una gestione efficace dei contenuti.

Controlli di compatibilità Symfony e Sonata

Adattare l’esempio alla versione installata

Gli esempi Symfony e Sonata rimangono legati alle versioni indicate nell’articolo. Symfony 4.x e Symfony 6.2 non sono più supportati: per un progetto attuale, utilizzate un ramo mantenuto e la documentazione corrispondente esattamente alle vostre dipendenze.

php bin/console about
composer show symfony/framework-bundle sonata-project/admin-bundle

Prima di riprendere il codice, controllate le firme, i servizi, le rotte e i template interessati. Aggiungete poi un test funzionale che copra le autorizzazioni, il codice HTTP e il risultato visibile.

Riferimento : versioni di Symfony supportate.

Condividi questo articolo