Traduzione di testi più lunghi (visualizzazione e modelli di email) con gettext

9

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

Il problema è che gettext sembra molto maldestro per la gestione di testi più lunghi. I testi più lunghi generalmente hanno più cambiamenti nel tempo rispetto ai testi brevi - Posso cambiare il msgid e assicurarmi di aggiornarlo in tutte le traduzioni (potrebbe essere molto lavoro e molto soggetto ad errori quando il msgid è lungo), oppure posso mantenere msgid invariato e modifica solo le traduzioni (che lascerebbero fuorvianti testi obsoleti nei template). Inoltre, ho visto il consiglio di non includere l'HTML nelle stringhe gettext, ma evitarlo spezzerebbe un singolo testo naturale in molti blocchi, che sarà un incubo ancora più grande da tradurre e riassemblare, e ho anche visto un consiglio contro divisione non necessaria delle stringhe gettext in msgids separati.

L'altro approccio che vedo è di ignorare gettext del tutto per questi testi più lunghi, e di separare quei blocchi in sottotasti esterni per ogni locale, e solo includere quello per le impostazioni locali correnti. Lo svantaggio è che sto separando lo sforzo di traduzione tra i file gettext .po e i modelli separati situati in una posizione completamente diversa.

Dato che questa applicazione sarà utilizzata come punto di partenza per altre applicazioni in futuro, sto cercando di trovare il miglior approccio a lungo termine. Ho bisogno di un consiglio per le migliori pratiche in tali scenari. Come hai implementato casi simili? Che risultato ha funzionato e che cosa è risultata una cattiva idea?

    
posta lanzz 09.11.2011 - 18:16
fonte

2 risposte

3

Mi sono imbattuto in un problema simile non molto tempo fa (vedi link ).

Fondamentalmente, ci sono due opzioni:

  1. Esegui il modo in cui gettext deve essere usato: usa i testi originali come msgid, HTML e tutti. Quindi ogni modifica al testo originale invaliderà tutte le traduzioni. La corrispondenza fuzzy di msgmerge , tuttavia, di solito corrisponde ancora al testo originale corretto alla vecchia traduzione, quindi di solito la traduzione precedente sarà disponibile per il traduttore.
  2. Installa l'utilizzo del testo originale come msgid, usa un identificatore sintetico (come EMAIL_TEMPLATE_NEWSLETTER_START). In questo modo, gli ID non cambiano mai. I testi originali (probabilmente in inglese) saranno semplicemente un'altra traduzione per gettext. Principali svantaggi: 1) È necessario monitorare separatamente quali traduzioni sono aggiornate; 2) Alcuni strumenti gettext potrebbero non funzionare correttamente (i traduttori potrebbero aver bisogno di strumenti speciali).
risposta data 09.01.2012 - 09:26
fonte
1

change the msgid and make sure to update it in all translations (could be lots > of work and very error-prone when the msgid is long)

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

    
risposta data 09.11.2011 - 22:13
fonte

Leggi altre domande sui tag