J'ai toujours entendu parler de gettext - Je sais que c'est une sorte de commande unix pour rechercher une traduction basée sur l'argument de chaîne fourni, puis produit un fichier .pot mais quelqu'un peut-il m'expliquer comment cela est pris en charge de dans un cadre web? Je pourrais essayer de voir comment un cadre établi l'a fait, mais l'explication d'un profane aiderait parce que cela pourrait aider à éclaircir l'image un peu plus avant que je fouille dans les choses pour fournir ma propre solution.Ajout de la prise en charge de i18n en PHP avec gettext?
Répondre
Le système gettext fait écho aux chaînes d'un ensemble de fichiers binaires créés à partir de fichiers texte source contenant les traductions dans différentes langues pour la même phrase.
La clé de recherche est la phrase dans un langage "de base".
dans votre code source, vous aurez quelque chose comme
echo _("Hello, world!");
pour chaque langue que vous aurez un fichier texte correspondant avec la clé et la version traduite (notez le% s qui peut être utilisé avec des fonctions printf)
french
msgid "Hello, world!"
msgstr "Salut, monde!"
msgid "My name is %s"
msgstr "Mon nom est %s"
italian
msgid "Hello, world!"
msgstr "Ciao, mondo!"
msgid "My name is %s"
msgstr "Il mio nome è %s"
Voici les principales étapes que vous devez passer par la création de vos
localisations- toutes vos sorties de texte doit utiliser les fonctions gettext (gettext(), ngettext(), _())
- utilisation xgettext (* nix) pour analyser vos fichiers php et créer le fichier texte de base .po
- utilisation poedit à ajouter des textes de traduction aux fichiers .po
- utilisation msgfmt (* nix) pour créer le fichier .mo binaire à partir du fichier .po
- mettre les fichiers .mo dans une structure de répertoire comme
locale/de_DE/LC_MESSAGES/myPHPApp.mo
locale/en_EN/LC_MESSAGES/myPHPApp.mo
locale/it_IT/LC_MESSAGES/myPHPApp.mo
alors vous créez un script php doit définir les paramètres régionaux qui doivent être utilisés
L'exemple du php manuel est très clair pour cette partie
<?php
// Set language to German
setlocale(LC_ALL, 'de_DE');
// Specify location of translation tables
bindtextdomain("myPHPApp", "./locale");
// Choose domain
textdomain("myPHPApp");
// Translation is looking for in ./locale/de_DE/LC_MESSAGES/myPHPApp.mo now
// Print a test message
echo gettext("Welcome to My PHP Application");
// Or use the alias _() for gettext()
echo _("Have a nice day");
?>
toujours dans le manuel php regarder here pour un bon tutoriel
- 1. Prise en charge de la session file_get_contents() en PHP
- 2. Prise en charge d'IMAP IDLE en PHP
- 3. PHP gettext() en norvégien
- 4. Prise en charge de DEVPATH
- 5. Prise en charge de la géométrie PostGIS
- 6. Prise en charge de la bibliothèque Python
- 7. Prise en charge de Rijndael en Java
- 8. WCF et ASP.NET: Prise en charge de la prise en charge duplex utilisant AJAX
- 9. Prise en charge de la nouvelle version du navigateur
- 10. Ajout de la prise en charge de l'historique à la page Web ASP.NET/jquery
- 11. Prise en charge d'EJB2 avec Jboss 5CR2
- 12. Prise en charge de PHP pour Google App Engine?
- 13. Subsonic 3 avec prise en charge d'Oracle
- 14. Ajout de la prise en charge de Linq au projet Web. Inductances du compilateur
- 15. Prise en charge de RTL PropertyGrid
- 16. Comment charger la langue avec gettext en PHP?
- 17. La prise en charge pour JspWriter
- 18. Prise en charge de Spring.Net pour Linq2SQL
- 19. Comment créer son propre fichier header.jsp dans JBoss Portal avec prise en charge de la langue?
- 20. Prise en charge de TDE PostgreSQL
- 21. Ajout de la prise en charge MPI à un programme C++
- 22. Thèmes Visual Studio avec prise en charge de Resharper?
- 23. Fenêtre de console AJAX avec prise en charge ANSI/VT100?
- 24. Prise en charge de la sélection de collection Django?
- 25. Cache IIS avec prise en charge de PURGE
- 26. Application de console C# avec prise en charge COM introp
- 27. Prise en charge de la sérialisation binaire Silverlight 3.0?
- 28. Que signifie la prise en charge complète de LINQ?
- 29. Prise en charge de la langue arabe pour une application
- 30. Prise en charge de la bibliothèque Javascript Raphael dans NetBeans
Mais ce qui précède L'exemple de PHP ne semble pas traduire la chaîne donnée. Y a-t-il autre chose à faire avec l'exemple? –