PROJET AUTOBLOG


Shaarli - Les discussions de Shaarli

Archivé

Site original : Shaarli - Les discussions de Shaarli du 23/07/2013

⇐ retour index

[php] Créer un site multi-langues facile à gérer

vendredi 7 novembre 2014 à 13:32
KraZhtest - Liens utiles - C'est le bordel 07/11/2014
Pour avoir cherché un bon moment une manière simple de gérer un site multi-lanques, j'ai pas trouvé!
Beaucoup de discussions sur les bonnes pratiques, les 3/4 disent d'utiliser un framework php (codeigniter, cakePhp..)
pour "pas se faire chier", beaucoup de codes qui ne marchent pas.

Finalement voici une petite synthèse de tout ce bazar pour 3 langues, on y voit plus claire!
Les critères sont:
- Tout doit se gérer des mêmes fichiers, pas de sous-dossiers.
- Garder un seul fichier de style css pour toutes les langues.
- Les traductions doivent être chacune dans leurs propres fichiers.
- Possibilité d'ajouter une langue facilement.
- Etre bien compatible SEO, chaque page doit avoir son url, donc php.
- Les url(s) sont dans la langue traduite.
- Doit pas causer d'erreurs en cas de variables vides.
- Simplifier pas compliquer!


Créer un dossier "langs" et y créer 3 fichiers: en_lang.php, fr_lang.php, es_lang.php.

D'abord le html de la page d'accueil, pour afficher 3 liens, une pour chaque langues.


<div>
<a href="?speak=en">English</a>
<a href="?parle=fr">Français</a>
<a href="?hablo=es">Español</a>
</div>

Les urls seront alors:
http://----.com/?speak=en pour l'Anglais.
http://----.com/?parle=fr pour le Français.
http://----.com/?hablo=es pour l'espagnol.

Maintenant pour que la page réponde à ces urls, ajouter ce code tout en haut de la page:
Si la page est en .html, renommer là en .php

<?php
if ($_REQUEST['parle'] == fr ){
   include_once("langs/fr_lang.php");}
   else( include_once("langs/fr_lang.php"));
   
if ($_REQUEST['speak'] == en ){
   include_once("langs/en_lang.php");
}

if ($_REQUEST['hablo'] == es ){
   include_once("langs/es_lang.php");
}
?>

Ce code redirigera vers le bon fichier de langue si demandé dans l'url, et maintiens le Français comme langue par default.

Ouvrir fr_lang.php, pour y créer une variable, qui sera le titre:

<?php
$Titre = 'Bienvenue ici!';
?>

Et pareil pour les autres langues:

//en_lang.php
<?php
$Titre = 'Welcome here!';
?>

//es_lang.php
<?php
$Titre = 'Bienvenida aquí!';
?>


Voilà c'est tout bon, maintenant pour appeler le titre, avec echo par exemple:

<div class="Ici-est_le titre">
<h3><?php echo $Titre; ?></h3>
<div>


Pour continuer, ajouter des nouvelles variables dans chacuns des fichiers de langues.

$div5  = 'Un sentiment..';
$lang_div76 = 'Mama mià';
$lang_inputB = 'Open this';


Et les appeler dans le html:

<? echo $lang_div5; ?>
<? echo $lang_div76; ?>
<? echo $lang_inputB; ?>


Démo:  http://user23.net/dev/dev/multi-langs/
Zip: http://user23.net/dev/dev/multi-langs/multi-langs.zip