La localisation est difficile. C'est vraiment difficile. Ce n'est pas seulement "pairs of words" => "Wortpaare"
, c'est beaucoup plus complexe que ça. Ce que la plupart des gens oublient lorsqu'ils regardent gettext et disent "Ugh, ugly" est que le processus de localisation est beaucoup plus important que les détails techniques de la mise en œuvre. C'est parce que les traducteurs réels ne sont généralement pas des programmeurs et ne sont probablement même pas en interne. Cela cause beaucoup plus de maux de tête que vous ne le pensez. gettext est vraiment ancien, a été testé au combat et dispose d'une énorme chaîne d'outils qui est conçue pour prendre en charge ce processus. Si vous voulez faire i18n et l10n correctement, vous avez besoin d'un système puissant. gettext est cela et est pris en charge par une large gamme d'outils. Votre Homebrewed Translation System™ ne le fait pas.
Tout d'abord, vous avez besoin d'un système robuste pour extraire chaînes traduisibles. Sans pouvoir extraire automatiquement et de manière reproductible les chaînes traduisibles du code source, vous avez une montagne de travail pour chaque nouvelle chaîne que vous souhaitez traduire. Dans gettext, xgettext
fait ça.
Ensuite, vous avez besoin d'un outil pour synchroniser les chaînes extraites avec les traductions déjà existantes de manière à ce qu'aucune traduction ne soit perdue et que seules les traductions légèrement modifiées soient conservées si possible. Dans gettext, msgmerge
fait ça.
Ensuite, vous voulez un moyen d'ajouter des informations supplémentaires aux chaînes. Vous souhaitez pouvoir les regrouper par catégorie, "domaine" et contexte, vous pouvez ajouter des commentaires pour le traducteur au code source et vous pouvez souhaiter que les traducteurs puissent ajouter des commentaires aux traductions. gettext prend en charge tout cela.
Ensuite, vous voulez un format de fichier bien pris en charge par une variété d'outils, car vous pouvez envoyer vos fichiers en Chine pour les faire traduire là-bas. La raison pour laquelle vous les envoyez peut-être à des traducteurs externes est également la raison pour laquelle vous avez besoin d'un bon outil de synchronisation pour fusionner les modifications, car cela peut être un processus très asynchrone. Les fichiers PO sont très bien pris en charge, car gettext est très ancien. Il existe de nombreux outils open source et commerciaux qui prennent en charge le processus de localisation à plusieurs niveaux, en fonction de vos besoins spécifiques.
Ne sous-estimez pas la tâche de localisation, choisissez un outil bien adapté au processus et apprenez-le. gettext est un excellent outil, même s'il n'est certes pas le plus convivial pour les débutants.
Pour ce que ça vaut, voici mon extension gettext pour Twig , ce qui rend gettext pour PHP encore meilleur.