PHP Localisation de chaînes avec gettext ()


Exemple

GNU gettext est une extension de PHP qui doit être incluse dans le php.ini :

extension=php_gettext.dll #Windows
extension=gettext.so #Linux

Les fonctions gettext implémentent une API NLS (Native Language Support) qui peut être utilisée pour internationaliser vos applications PHP.


La traduction de chaînes peut être effectuée en PHP en définissant les paramètres régionaux, en configurant vos tables de traduction et en appelant gettext() sur toute chaîne que vous souhaitez traduire.

<?php
// Set language to French
putenv('LC_ALL=    fr_FR');
setlocale(LC_ALL, 'fr_FR');

// Specify location of translation tables for 'myPHPApp' domain
bindtextdomain("myPHPApp", "./locale");

// Select 'myPHPApp' domain
textdomain("myPHPApp");

myPHPApp.po

#: /Hello_world.php:56
msgid "Hello"
msgstr "Bonjour"

#: /Hello_world.php:242
msgid "How are you?"
msgstr "Comment allez-vous?"

gettext () charge un fichier .po post-conforme donné, un .mo. qui mappe vos chaînes à traduire comme ci-dessus.

Après ce petit code de configuration, les traductions seront désormais recherchées dans le fichier suivant:

  • ./locale/fr_FR/LC_MESSAGES/myPHPApp.mo .

Chaque fois que vous appelez gettext('some string') , si 'some string' a été traduit dans le fichier .mo , la traduction sera renvoyée. Sinon, 'some string' seront retournées non traduites.

// Print the translated version of 'Welcome to My PHP Application'
echo gettext("Welcome to My PHP Application");

// Or use the alias _() for gettext()
echo _("Have a nice day");