Maison >développement back-end >tutoriel php >Comment utiliser gettext en php pour le support multilingue ?

Comment utiliser gettext en php pour le support multilingue ?

PHPz
PHPzoriginal
2023-06-01 17:00:081499parcourir

PHP est un langage de programmation côté serveur très populaire utilisé pour créer des sites Web et des applications Web dynamiques. Habituellement, lors du développement d'applications Web, nous devons prendre en charge plusieurs langues pour répondre aux besoins des différents utilisateurs. C'est pourquoi nous devons utiliser gettext pour la prise en charge multilingue.

gettext est une bibliothèque qui peut extraire des chaînes de programmes et les traduire dans d'autres langues. Elle offre aux développeurs un moyen simple et puissant de basculer de manière transparente entre différentes langues. Cet article explique comment utiliser gettext pour la prise en charge multilingue.

Étape 1 : Installer gettext

Avant d'utiliser gettext, nous devons d'abord l'installer. Il peut être installé via la commande suivante :

sudo apt-get install gettext

Après l'installation, nous devons activer l'extension gettext dans le fichier php.ini. Cela peut être réalisé en éditant le fichier php.ini et en ajoutant la ligne suivante :

extension=php_gettext.dll

Étape 2 : Générer des fichiers de traduction

gettext utilise les fichiers .po et .mo pour la traduction. Nous devons d’abord générer un fichier .po, qui contient toutes les chaînes à traduire et leurs textes originaux correspondants.

Nous pouvons utiliser POEdit ou d'autres outils similaires pour générer des fichiers .po. Dans POEdit, nous pouvons ouvrir notre code d'application et ajouter toutes les chaînes qu'il contient à un fichier modèle .pot, puis enregistrer le fichier .pot en tant que fichier .po.

Dans le fichier .po, chaque chaîne brute est contenue entre msgid et msgstr. Nous pouvons remplacer le texte dans msgstr par le texte traduit souhaité. Après avoir enregistré le fichier .po, vous pouvez utiliser une commande appelée msgfmt pour le compiler dans un fichier .mo afin qu'il puisse être utilisé efficacement par le code PHP.

msgfmt -o lang/fr_FR/LC_MESSAGES/messages.mo lang/fr_FR/LC_MESSAGES/messages.po

Cette commande générera un fichier appelé messages.mo, qui contient toutes les chaînes qui doivent être traduites.

Étape 3 : Implémenter le support multilingue

Après avoir obtenu le fichier .mo, nous devons utiliser la fonction gettext dans le code PHP pour le support multilingue. La fonction de la fonction gettext est d'obtenir la chaîne d'origine et de renvoyer sa version traduite.

Ce qui suit est un exemple de code simple qui montre comment utiliser la fonction gettext en PHP pour obtenir une prise en charge multilingue :

<?php
    // 设置系统的语言环境为fr_FR
    putenv("LC_ALL=fr_FR");
    setlocale(LC_ALL, "fr_FR");

    // 加载翻译文件 
    bindtextdomain("messages", "./lang");
    bind_textdomain_codeset("messages", "UTF-8");
    textdomain("messages");

    // 从翻译文件中获取翻译后的字符串
    echo gettext("Hello World!");
?>

Dans le code ci-dessus, nous définissons d'abord les paramètres régionaux du système sur le français (fr_FR). Nous utilisons ensuite la fonction bindtextdomain pour charger le fichier .mo que nous avons compilé précédemment. Cette fonction nécessite deux paramètres : le premier paramètre est le nom de domaine, qui spécifie l'ensemble de chaînes à convertir en chaînes de traduction ; le deuxième paramètre est le répertoire où se trouve le fichier .mo ;

Ensuite, nous utilisons la fonction textdomain pour spécifier le domaine à utiliser. Dans le code ci-dessus, nous l'avons défini sur le domaine des messages, qui est le domaine que nous avons spécifié précédemment dans le fichier PO.

Enfin, nous utilisons la fonction gettext pour obtenir la version traduite de la chaîne originale. Dans le code ci-dessus, nous transmettons Hello World! sous forme de chaîne brute à la fonction gettext, qui trouvera la version traduite de la chaîne et la renverra.

Conclusion

Dans cet article, nous avons présenté comment utiliser gettext pour la prise en charge multilingue. gettext peut être très pratique pour implémenter le support multilingue dans la programmation PHP, il suffit d'écrire la chaîne originale et de la convertir en chaîne traduite. Bien que cela nécessite un travail supplémentaire, cela peut conduire à une meilleure expérience pour les utilisateurs et rendre votre application plus attrayante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn