Traduzione di testi più lunghi (modelli di visualizzazione ed e-mail) con gettext


9

Sto sviluppando un'applicazione web PHP multilingue e ho testi lunghi (-ish) che devo tradurre con gettext. Questi sono modelli di e-mail (in genere brevi, ma ancora diverse righe) e modelli di parti di vista (blocchi di testo più lunghi e descrittivi). Questi testi includerebbero alcuni semplici HTML (cose come grassetto / corsivo per enfasi, probabilmente un link qui o là). I modelli sono script PHP il cui output viene acquisito.

Il problema è che gettext sembra molto goffo per gestire testi più lunghi. I testi più lunghi generalmente hanno più modifiche nel tempo rispetto ai brevi: posso cambiare msgid e assicurarmi di aggiornarlo in tutte le traduzioni (potrebbe essere un sacco di lavoro e molto soggetto a errori quando il msgid è lungo), oppure posso continuare msgstr è rimasto invariato e modifica solo le traduzioni (che lascerebbero testi fuorvianti fuorvianti nei template). Inoltre, ho visto dei consigli contro l'inclusione dell'HTML nelle stringhe gettext, ma evitarlo avrebbe spezzato un singolo pezzo di testo naturale in molti blocchi, che sarebbe un incubo ancora più grande da tradurre e riassemblare, e ho anche visto dei consigli contro divisione non necessaria di stringhe gettext in msgid separati.

L'altro approccio che vedo è quello di ignorare del tutto il gettext per questi testi più lunghi, e di separare quei blocchi in subtemplate esterne per ogni locale e includere solo quello per la locale corrente. Lo svantaggio è che sto separando lo sforzo di traduzione tra file .po gettext e modelli separati situati in una posizione completamente diversa.

Poiché questa applicazione verrà utilizzata come punto di partenza per altre applicazioni in futuro, sto cercando di trovare l'approccio migliore a lungo termine. Ho bisogno di un consiglio per le migliori pratiche in tali scenari. Come hai implementato casi simili? Cosa si è rivelato funzionare e cosa si è rivelata una cattiva idea?


Risposte:


3

Mi sono imbattuto in un problema simile non molto tempo fa (vedi /programming/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).

Fondamentalmente, ci sono due opzioni:

  1. Fallo nel modo in cui gettext deve essere usato: usa i testi originali come msgid, HTML e tutto il resto. Quindi ogni modifica al testo originale invaliderà tutte le traduzioni. msgmergeLa corrispondenza fuzzy, tuttavia, di solito abbina ancora il testo originale giusto alla vecchia traduzione, quindi di solito la vecchia traduzione sarà disponibile per il traduttore.
  2. Msgstr, usa un identificatore sintetico (come EMAIL_TEMPLATE_NEWSLETTER_START). In questo modo, gli ID non cambiano mai. I testi originali (probabilmente inglesi) saranno semplicemente un'altra traduzione di gettext. Svantaggi principali: 1) È necessario tenere traccia separatamente delle traduzioni aggiornate; 2) Alcuni strumenti di gettext potrebbero non funzionare così bene (i traduttori potrebbero aver bisogno di strumenti speciali).

1

cambia msgstr e assicurati di aggiornarlo in tutte le traduzioni (potrebbe essere molto> di lavoro e molto soggetto a errori quando il msgid è lungo)

Questo è qualcosa che potresti facilmente automatizzare, rendendolo quindi meno soggetto a errori e anche meno lavoro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.