On peut utiliser gettext pour l'internationalisation des programmes PHP.
Ecrire les chaînes devant être traduites avec le format suivant :
[php]<?php
echo _("Chaîne à traduire");
?>[php]

Une fois fait, créer un répertoire locales/en_US.UTF-8 où seront stockées les traductions pour l'anglais américain.
Lancer la commande xgettext --strict -p locales/en_US.UTF-8 -o messages.po *.php, et cela va générer un fichier locales/en_US.UTF-8/messages.po contenant les chaînes de tous les programmes *.php disponibles dans le répertoire courant.

Editer ce fichier pour fournir les traductions. Penser à modifier l'en-tête du fichier (surtout le CHARSET) pour éviter les messages de Warning.

Une fois le code source à nouveau modifié, on peut ajouter de nouvelles traductions avec l'option xgettext -j --strict -p locales/en_US.UTF-8 -o messages.po *.php. Il n'y a pas de suppression des anciennes valeurs non utilisées, ni des lignes changées. Pour cela, on peut utiliser une interface graphique comme poedit.

Pour compiler un fichier .po, on peut utiliser la commande msgfmt locales/en_US.UTF8/messages.po -o locales/en_US.UTF8/messages.mo