Je suis en train de développer une application Web PHP multilingue et j'ai de longs textes (-ish) que je dois traduire avec gettext. Ce sont des modèles de courrier électronique (généralement courts, mais toujours plusieurs lignes) et des parties de modèles de vue (blocs de texte descriptifs plus longs). Ces textes incluraient du HTML simple (des choses comme gras / italique pour l'accentuation, probablement un lien ici ou là). Les modèles sont des scripts PHP dont la sortie est capturée.
Le problème est que gettext semble très maladroit pour gérer des textes plus longs. Les textes plus longs auraient généralement plus de changements au fil du temps que les textes courts - je peux soit changer le msgid et m'assurer de le mettre à jour dans toutes les traductions (cela pourrait être beaucoup de travail et très sujet aux erreurs lorsque le msgid est long), ou je peux garder le msgid inchangé et ne modifie que les traductions (ce qui laisserait des textes obsolètes trompeurs dans les modèles). De plus, j'ai vu des conseils contre l'inclusion de HTML dans les chaînes gettext, mais l'éviter casserait un seul morceau de texte naturel en beaucoup de morceaux, ce qui sera un cauchemar encore plus grand à traduire et à réassembler, et j'ai également vu des conseils contre fractionnement inutile des chaînes gettext en msgids séparés.
L'autre approche que je vois est d'ignorer complètement gettext pour ces textes plus longs, et de séparer ces blocs dans des sous-modèles externes pour chaque locale, et d'inclure simplement celui pour la locale actuelle. L'inconvénient est que je sépare l'effort de traduction entre les fichiers gettext .po et des modèles distincts situés dans un emplacement complètement différent.
Étant donné que cette application sera utilisée comme point de départ pour d'autres applications à l'avenir, j'essaie de trouver la meilleure approche à long terme. J'ai besoin de quelques conseils pour les meilleures pratiques dans de tels scénarios. Comment avez-vous mis en œuvre des cas similaires? Qu'est-ce qui s'est avéré efficace et qu'est-ce qui s'est avéré être une mauvaise idée?
Réponses:
Je suis tombé sur un problème similaire il n'y a pas longtemps (voir /programming/8288050/can-i-automatically-update-msgids-in-gettexts-po-files-for-trivial-text-change ).
Fondamentalement, il existe deux options:
msgmerge
La correspondance floue de, cependant, correspondra généralement toujours le bon texte original à l'ancienne traduction, donc généralement l'ancienne traduction sera disponible pour le traducteur.la source
C'est quelque chose que vous pourriez facilement automatiser, ce qui le rend moins sujet aux erreurs et aussi moins de travail.
la source