Tutoriel Vidéo PHP : Internationaliser son Site

Dans ce tutoriel vidéo vous apprendrez à utiliser la librairie getText dans le but d'internationaliser votre site internet. Pour ce faire nous passerons par l'utilisation de fichier .po qui permettront de cataloguer toutes nos traductions. Vous apprendrez donc aussi à générer les fichier .po à l'aide du logiciel PoEdit.

L'internationalisation va donc passer par un fichier .pot général qui sera généré à partir du code source de votre site. Ce fichier va ainsi permettre aux traducteurs de générer les catalogues d'expression (.po et .mo) qui permettront de rendre le site disponible dans d'autres langues...


Télécharger la vidéo
(Réservé aux premiums)

Télécharger les sources
(Réservé aux premiums)


Après avoir appris sur Internet quoi de plus normal que de partager à son tour ? Passionné par le web depuis un peu plus de 5 ans maintenant j'aime partager mes compétences et mes découvertes avec les personnes qui ont cette même passion pour le web : Vous.

Vous aimerez aussi

Les namespaces

Les namespaces
12m

Dans ce tutoriel vidéo vous apprendrez à utiliser les namespace ou...

API LastFM

API LastFM
35m

Dans ce tutoriel vidéo vous apprendrez comment utiliser l'API de...

47 commentaires
Ajouter un commentaire

Tibo Il y a 22 jours Répondre

Quelqu'un a-t-il rencontré un problème lors de la traduction des accents?

pierre-yves Il y a 2 mois Répondre

Hello world,

Merci pour cet excellent tutoriel. Mais néanmoins j'aimerais ajouter une petite précision qui pourrait être utile aux développeurs : n'oubliez pas de définir le jeu de caractère du code source sans quoi les problèmes arriveront par légion.

>"<

Jeronimo Il y a 7 mois Répondre

Bonjour, merci pour ce tuto.
Cependant j'utilise des requêtes qui me retournent des tableaux JSON, et qui m'affichent du text, qui lui n'est pas traduit bien que j'aie traduit le text dans poedit.

Il y a un moyen de traduire ce text ?

Merci

iluzzion Il y a 9 mois Répondre

Salut a tous,

Tuto vraiment sympa, mais chez moi la traduction ne marche pas, PoEdit trouve bien ce que je veut traduire, j'ai fait comme dans le tuto mais lorsque je change la langue dans l'url rien ne change...

Je ne vois pas trop d’où ça peut venir, quelqu’un aurait il un idée ?

Merci d'avance

helleringer Il y a 1 an Répondre

Génial ce tuto ... j'ai tout bien fait mais il me manque un petit truc... quelqu'un pourrait m'aider pour meetre en place des boutons de langues (français, englais) qui pourraient garder les valeurs??? d'après mes recherches (j'suis novice) il me manque qu'a intégrer ces boutons pour passer de l'un à l'autre ...
Quelqu'un pourrait m'aider?

clem Il y a 1 an Répondre

J'ai un problème que je n'arrive pas à resoudre et qui est arrivé à plusieurs personne dans ce tutoriel qui est très bien fait par ailluers( comme d'habitude)!:
15:34:04: Poedit n'a trouvé aucun fichier dans les répertoires analysés.
15:34:04: Certaines entrées du catalogue sont probablement incorrectes.
15:34:04: La mise à jour du catalogue a échoué. Cliquez sur « Détails >> » pour en savoir plus.
Si quelqu'un peut m'aider.
Merci d'avance

cedric Il y a 1 an Répondre

J'ai eu le message d'erreur ci-dessous.

---------
Poedit n'a trouvé aucun fichier dans les répertoires analysés.
Certaines entrées du catalogue sont probablement incorrectes.
La mise à jour du catalogue a échoué. Cliquez sur « Détails >> » pour en savoir plus.
-------------

En fait lorsqu'on met le chemin du répertoire dans poedit, il faut évidement indiquer le chemin vers les fichier php et ajouter le chemin . (qui est déjà à l'origine) sinon ça ne marche pas.

jponline Il y a 1 an Répondre

une fois la configuration faite comment on fait pour naviguer entre les pages une fois que l'internaute a choisi une langue ! l'utilisation des sessions ok mais comment ça se passe !

manudu13 Il y a 1 an Répondre

Hello à toutes et tous,

nouveau sur Grafikart, m'a l'air trés sympa ce site d'ailleurs

Je recherche des infos sur POEDIT, malgré le tuto et d'autres docs j'ai ce probleme de chemin et je ne peux pas sauvegarder le catalogue

Je l'ai installé en local, essai avec windows 7 et Xp, ensuite je comptais envoyer le fichier .mo généré automatiquement par ftp par exemple sur mon serveur,

Je défini le chemin (POEDIT) suivant c:\wamp\www\rep_de_mon_site, je sauvegarde dans c:\wamp\www\rep_de_mon_site\locale\en_US\LC_MESSAGES

et lors de la sauvegarde du fichier .po en local, j'ai le message d'erreur suivant


Poedit n'a trouvé aucun fichier dans les répertoires analysés (comme quelques uns ici)

En local j'utilise wampserver

Quelqu'un aurais une soluce ?

Merci

Sausau Il y a 1 an Répondre

Et cette méthode on peut l'utiliser directement avec CakePHP?
Car la méthode d’internationalisation de CakePHP est un peu "olé olé.
Merci

wilbrandt Il y a 1 an Répondre

ok j'ai suivi tout le tuto(super) il marche a merveille. mon site est monté sous le modèle MVC. maintenant le problème qui se pose est que je n'arrive pas a transmettre les paramètre de choix de langue a toute les pages. je sais ki faut utiliser les sessions mais mon code ne marche pas:
if(isset ($_GET["lang"]))
{
$_SESSION['lang']=$_GET["lang"];
}
voila ce que jai mis dans mon index
et sur les boutons anglais et francais:
<a href="<?php echo $_SERVER['PHP_SELF'] ?>?lang=en_US">... seulement ceci ne recharge toujours la page daccueil...help plese

manchester_010 Il y a 1 an Répondre

Super tuto, c'est ce que je cherchais pour mon site.

Mais j'ai une petite question. Mon site a été développé en modèle MVC. Mais maintenant comment je fais pour intégrer "lang=en_US" dans l'URL de mon site.

L'URL de mon site est pour l'instant : http://localhost :82/Mon_Projet/index.php?p=accueil_vue

Voici un bout de code pour la gestion de l'URL :

<?php
// si la variable p existe dans l'url
if(isset($_GET["p"]))
{
// on crée une variable (plus facile à lire)
$maPage = $_GET["p"];
$maVue = "vue/";


// si la page existe dans le répertoire courant et qu'elle n'est pas vide
if(file_exists($maVue.$maPage . ".php") && !empty($maPage))
{

// on l'inclut
include_once 'vue/'.$maPage . '.php';
}
// sinon
else
{

echo "<b><font color='#FF0000'>Il ne faut pas entrer les pages qui n'existent pas !!</font></b><br/>";
}
}
// si la variable p n'existe pas dans l'url, ça veut dire que c'est la première fois qu'on vient sur le site

// mettre une page par défaut
else
{
include_once 'vue/accueil_vue.php';
}
?>

Actualité et buzz Il y a 2 ans Répondre

Merci pour le tuto !

Cette page mériterait un Page Rank de 5 au moins.

zaarkan Il y a 2 ans Répondre

Problème régler

Bon j'ai trouver mon erreur... c'est con mais des fois on peu rester bloqué longtempssss.. je travail avec un NAS et la version de mon fichier PO sur celui-ci n'était pas la même que en locale...

Sinon pour ceux que cela intéresse apparamment on peut désactiver le cache des mots dans le constructeur gettext_reader($Reader, $enable_cache = true).

Le cache est surement la pour éviter de recharger le fichier po a chaque fois.. à vérifier

Salut à tous !

zaarkan

zaarkan Il y a 2 ans Répondre

Bonjour à tous !

De mon coté, la "première" traduction fonctionne très bien

Cependant j'ai un soucis lorsque je veut mettre à jour un mot. Je m'explique, en français j'ai le mot "Inscription...", je l'ai traduis une première fois avec poedit en "register...". Le mot passe bien de "inscription..." à "register..." lorsqu'on passe d'un langage à l'autre sur le site.

MAIS, voila, j'ai éditer a nouveau le fichier .po avec poedit pour remplacer la traduction "register..." par "sign up...". Pas moyen de mettre a jour le site, c'est tjrs "register..." qui apparais et non "sign up". Idem pour n'importe quel mot, pas moyen de mettre à jour... Des idées ?? les mots sont stocker en session ??. J'ai ouvert le fichier po avec un editeur txt, le changement a bien été fait dans le fichier po.

J'ai effacer tout les cookies.

Seul "solution" efficace, enfin si on peu dire, c'est effacer totalement le fichier po et en crée un nouveau. Pas très productif comme méthode :s

D'avance merci.

Zaarkan

gaetan Il y a 2 ans Répondre

Bonjour,
J'ai suivie ton tuto de A à Z sauf que j'arrive pas à importé mon contenue dans PoEdit, j'ai configuré le catalogue comme dans ton tutoriel mais il me ressort a chaque fois les même erreurs, a savoir:
"Poedit n'a trouvé aucun fichier dans les répertoires analysés"
"Certaines entrées du catalogue sont probablement incorrectes"

Grosomodo j'ai le même problème que "victonic", "Wapaca", "Erung", "iTera". Quelqu'un a t'il trouvé une solution ?

Metal971 Il y a 2 ans Répondre

Bonjour ,
Merci beaucoup. Ce tutoriel m'a beaucoup aidé dans la compréhension de la fonction gettext et poedit. Étant débutant dans le developpement, je bute depuis quelques sur la simplement la création d'un nouveau catalogue. J'ai suivi à la lettre le tuto et j'ai comme message :
La mise à jour a échoué. Cliquez sur détails pour en savoir plus.
Echec de création d'un nom de fichier temporaire. (erreur 3 : le chemin d'accès est introuvable)
xgetetext cannot create output file"" :invalid Argument.
La mise à jour du catalogue a échoué.

Je suis sous Windows vista. le chemin spécifié est : C:\www\ilagoo.com\MyArchitect
Merci d'avance de votre aide et de vos réponses.

Métal

jeck Il y a 2 ans Répondre

?

jeck Il y a 2 ans Répondre

merci en effet j'avais omis un espace

Cependant, il me reste 2 sujets obscure:

le premier, j'utilise un site qui s'affiche de la maniére www.blabla.com/index?page=mapage et je ne sais pas comment faire pour gerer la translation avec cela $locale = (isset($_GET['lang']))? $_GET['lang'] : DEFAULT_LOCALE;
car je vois mal mon site www.blabla.com/index?page=mapage?lang=en_US
j'aimerais www.blabla.com/en_US/index?page=mapage

Ensuite je ne sais pas trop comment configurer les valeurs suivantes sur mon hebergeur OVH:

define('PROJECT_DIR', realpath('/'));
define('LOCALE_DIR', PROJECT_DIR .'/locale');

jeck Il y a 2 ans Répondre

moi j'ai une erreur avec la formule <?php echo_("commentaire")"; ?>
Fatal error: Call to undefined function echo_() in ...

Grafikart Il y a 2 ans - Répondre

n'oublie pas les espaces, et regarde ce que tue dit l'erreur

aurus1212 Il y a 2 ans Répondre

Merci pour ce tuto,

cependant j'âurais une petite question...

ya pas moyen de trouver des fichier trad.po "complet" qui traduirai automatiquement la langue .. ?? une sorte de traducteur ^^'.

parce je fais un site pour un mec, et un moment il doit rajouter une description --> que j'enragistre dans la base de donnée :S... j'orai voulu que sa lui traduise tout directement plutot qu'il doivent l'écrire 3x ^^'.. il y aurait une solution ?

amoi Il y a 2 ans Répondre

super intéressant tuto
J'ai cependant un question
Comment faire pour te tres long textes? est ce que ca marche pareil?? ne serait il pas interessant alors de mettre une sorte de constante pour les long texte?
Merci d'avance

Grafikart Il y a 2 ans - Répondre

Pour de long texte tu fais des fichiers différents pour chaque langue vu qu'au final beaucoup de contenu va changer. Sinon tu peux t'aider d'une base de donnée pour gérer les contenus en plusieurs langues.

nanatoun Il y a 2 ans Répondre

salut très beau tutoriel mais j'ai un problème j'ai réussi à traduire mais mots sur poedit et je les ai sauvegardés. J'ai suivi toutes les explications à le lettre mais malheureusement quand je met lang=en_US les mots sont toujours en français sur un fond blanc

Amrac Il y a 2 ans Répondre

J'ai fait pas mal de recherche, et en changeant mes mots clefs j'ai trouvé ça: https://webtranslateit.com
Je suis dans la période d'essai, donc je me fait encore un avis, mais ça semble puissant :-)

Amrac Il y a 2 ans Répondre

Merci pour ce très bon tuto.

Est-ce que quelqu'un connais un site qui permettrais de proposer sont fichier .po à la traduction par sa communauté?
J'ai trouvé quelques plateformes (comme Launchpad), mais elles semblent limité aux projets Open Sources..

Abdel Il y a 2 ans Répondre

Bonsoir tout le monde te merci pour le titorials trés interessant vraiment encore merci
une seule question si ca vous derenage pas biensure
j'aimùerai bien savoir ou est ce que je peu telecharger la librairie getText et merci d'avance

iTera Il y a 2 ans Répondre

Bonjour,

Je tiens à vous remercier pour ce tuto très bien expliquer !

Cependant j'ai un petit problème, je viens de télécharger la dernière version de Poedit pour Mac Os X et j'ai bien tout configurer comme il le faut. Mais quand je veut mettre à jour le catalogue, il me signale ceci :

11:12:25: /Applications/Poedit.app/Contents/MacOS/xgettext: Non-ASCII string at /Users/iTera/Sites/MonSite/Site/application/controleurs/accueil.php:8.
11:12:25: Please specify the source encoding through --from-code.
11:12:26: Certaines entr?©es du catalogue sont probablement incorrectes.
11:12:26: La mise ?† jour du catalogue a ?©chou?©. Cliquez sur ¬´¬†D?©tails >>¬†¬ª pour en savoir plus.

Pourtant le texte à traduire qui se trouve à la ligne 8 utilise la syntaxe fournie par vous même, et fait bien partie des mots clés de mon catalogue.

<h2><?php echo _("Test en Français"); ?></h2>

Je vous remercie d'avance si vous avez la moindre idée de l'origine du problème

Victonic Il y a 2 ans

C’est exactement le même problème que le mien… (cf message plus haut)
Si tu trouve la solution je veux bien que tu la postes, ca me sera d’une grand aide !
A+

helleringer Il y a 1 an

J'ai peut-être un début de réponse. Lorsque vous charger le fichier .POT ou .PO allez dans sa configuration: catalogue -> configuration et mettez utf-8 en jeux de caractères du code source.

Kech Il y a 10 mois - Répondre

C'est qu'une de tes traductions possède un accent. En utf-8 les accents ne passent pas.

victonic Il y a 2 ans Répondre

Bonjour,
Super bien fait le tuto, comme tous les autres sur le site d’ailleurs !
Si tu peux me répondre j’ai une question concernant poedit.
Je n’arrive pas à faire de nouveau catalogue pour générer le fichier *.po depuis mon fichier *.php.
Il dit :
---------
Poedit n'a trouvé aucun fichier dans les répertoires analysés.
Certaines entrées du catalogue sont probablement incorrectes.
La mise à jour du catalogue a échoué. Cliquez sur « Détails >> » pour en savoir plus.
-------------
J’ai tout essayé comme "chemin“ (c:\test) et j’ai même fais un fichier php au plus simple (avec une ligne) mais ca ne marche toujours pas.
Est-ce que poedit fonctionne mal sous Windows xp ?
A+
Victor

Wapaca Il y a 2 ans

Moi aussi j'ai ce problème, si quelqu'un aurait la solution ???

Erung Il y a 2 ans

J'ai moi aussi rencontré ce problème, veille à ce que la variable <?php echo _("variable");?> ne contienne aucun caractère spéciaux ou accents.

helleringer Il y a 1 an - Répondre

J'ai peut-être un début de réponse. Lorsque vous charger le fichier .POT ou .PO allez dans sa configuration: catalogue -> configuration et mettez utf-8 en jeux de caractères du code source.

leknoppix Il y a 2 ans Répondre

J'ai changé de pc, réinstaller et recoder à zero, la traduction ne veut ni ce faire avec la librairie php-gettext, ni avec l'extension gettext?
Des idées?

cobra Il y a 2 ans Répondre

Bonjour,

J'ai une question sur l'utilisation de la technique singulier/pluriel, dans le cas de la langue polonais il peux y avoir 4 formes suivant le nombre, dans ce cas ngettext peux t-il le faire ?

Merci pour vos réponse et remercie le créateur des tutos vidéo pour sont super travail.

Librement, Cobra

chesnel Il y a 2 ans Répondre

Super tuto, c'est ce que je chercher... mais malheureusement je me retrouve avec des soucis sous MAMP (dernière version) malgré le gettext activer le changement de la langue ne s'effectue pas, ainsi que l'exemple fournis. Y a t-il des personnes sous MAMP ayant réussi à le faire fonctionner ?

leknoppix Il y a 2 ans

Idem chez moi, je suis sous mamp

leknopix Il y a 2 ans

un des exemples fonctionnent, mais l'autre, pas du tous, j'ai recommencé encore une fois le tutoriel entièrement, sa ne marche toujours pas, que je sois en local ou en ligne!

chesnel Il y a 2 ans

oui la version qui affiche que normalement elle ne fonctionne pas ^^

jtraulle Il y a 2 ans

Pareil sous Xampp avec les ressources fournies, le changement de langue ne fonctionne pas >_<

helleringer Il y a 1 an - Répondre

J'ai exactement le même soucis mais après avoir upgrader vers un hébergeur tout est rentrée à la normal.. Je navigue a vue pour les traductions... Mais POEDIT est assez sympa pour les débutants

nicolas.c Il y a 2 ans Répondre

Merci du tuto Grafikart

nicodemus Il y a 2 ans Répondre

super c'est se que je chercher!!!!!!!!!!!!!!

dechuck Il y a 2 ans Répondre

Est ce que l'utilisation avec un framework comme CakePhp reste identique?

Grafikart Il y a 2 ans - Répondre

CakePHP est préparé à l'internationalisation, il intègre d'ailleurs des fonction __() et _n() donc regarde sur la documentation comment ça fonctionne précisément.

rom07 Il y a 2 ans Répondre

Pourquoi Chrome ?

Badbart Il y a 2 ans - Répondre

Peut-être parce que dans la vie il n'y a pas que Firefox ... Et que maintenant la concurrence est aussi bien voir meilleur.
Le seul avantage de Firefox maintenant, c'est Firebug qui est plus complet que les version lite sur la concurrence.
En plus pour les Tuto enregistrer sur chrome ça laisse plus d'espace visualisation sur l'écran, relou les 200px de menu de Firefox...

pimeo Il y a 2 ans Répondre

ça ne chôme pas chez grafikart!

samir Il y a 2 ans Répondre

il ya toujours du nouveau par ii

Rapha Il y a 2 ans Répondre

Superbe tutoriel, Grafikart ici vous éclaircissez un des nombreux mystères (ou problème selon les cas) du développeur web. Solution portable réellement pratique dont j'avoue n'avoir jamais entendu parler.

H.S. : "Ola" avec un "H"

rom07 Il y a 2 ans Répondre

Super tutoriel ... Merci

CSquare Il y a 2 ans Répondre

L'utilisation de la librairie getText permet il est vrai de réellement externaliser tout le contenu d'un site et donc de rendre le travail de traduction totalement indépendant du travail de développement (back-end et front-end). Ce qui est pas mal lors d'un travail en équipe, ou si le service de traduction est sous traité.

Mais il existe bien entendu beaucoup d'autres solutions pour gérer le multilingue. De plus je n'ai pas encore pu regarder en intégralité le tutoriel, donc je ne sais pas comment sont gérer les urls, car souvenez-vous, pour le référencement rien ne vaut des url explicites (donc pour plusieurs langues, il faudrait une url par langue pour chaque page).

A voir donc!

En tout cas très bon boulot

Sylv1 Il y a 2 ans Répondre

Super tuto !!!

Je confirme, poedit fonctionne bien sous Linux. Il est même déjà dispo dans le gestionnaire de paquets.

Merci
Sylvain

cerise Il y a 2 ans Répondre

Merci beaucoup

Vocos Il y a 2 ans Répondre

Une fois de plus Grafikart est magique ! :D

Pamou Il y a 2 ans Répondre

Superbe !!!! (troize) :p

Corentin Il y a 2 ans Répondre

Jolie tuto

Merci
Corentin

fantoche Il y a 2 ans Répondre

Deuzz
Coool

Shin Il y a 2 ans Répondre

Preum's !

Merci pour ce tutoriel

Laisser un commentaire

Si vous avez une question il est conseillé d'utiliser le forum si vous voulez une réponse sûre.