Re,
je reviens sur la solution XML que j'ai vu plus haut. Je pense qu'elle très bonne informatiquement parlant mais je pense qu'elle est trop couteuse en ressource.
L'utilisation des fonctions XML est lourde (quel soit le langage d'ailleur) à cause du parser (qui fait un travail énorme et long pour vérifier la structure xml..histoire d'arbres.....).
Voilà ma solution :
tu fais un fichier dictionnaire ainsi genre pour le français :
dico_fr.inc.php
1 2 3 4 5 6 7 8 9 10 11
|
<?PHP
$trad[0]="Utilisateur:";
$trad[1]="Mot de passe:";
$trad[2]="Ok";
$trad[3]="S'inscrire";
$trad[4]="S'incrire et obtenir un compte utilisateur pour Gaara";
$trad[5]="Rechercher...";
$trad[6]="{Faire un choix}";
?> |
comme tu auras plusieurs fichiers (genre dico_en.inc.php , dico_it.inc.php , dico_de.inc.php) alors appeleras ton dico ainsi :
include_once("dico_$LANG.inc.php");
où $LANG est un code de langue.
Dans ton côté view PHP/HTML, tu écris donc tes champs en accolade ainsi, par exemple un header :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<?PHP
//captation de la page pour la traduction
$PAGE=ob_start();
?><hr>
<form action="auth.php" method="post" enctype="multipart/form-data" name="FORMU" id="FORMU">
{trad_0}
<input type="text" name="TXT_LOGIN" id="TXT_LOGIN" tabindex="1">
{trad_1}
<input type="text" name="TXT_PASSWORD" id="TXT_PASSWORD" tabindex="2" >
<input type="submit" name="btn_ok" id="btn_ok" value="{trad_2}" tabindex="3" >
<a href="submit.php" title="{trad_4}">{trad_3}</a> <a href="<?PHP echo $ICI.'?LANG=fr';?>">FR</a> | <a href="<?PHP echo $ICI.'?LANG=en'; ?>">EN</a> | <a href="<?PHP echo $ICI.'?LANG=cn';?>">CN</a>
</form>
<hr>
<form action="search.php" method="post" enctype="multipart/form-data" name="FORMU2" id="FORMU2">
<input name="TXT_SEARCH" type="text" id="TXT_SEARCH" value="{trad_5}" tabindex="5" >
<input type="submit" name="btn_ok2" id="btn_ok2" value="{trad_2}" tabindex="6" >
</form>
<hr> |
et à la fin, tu places un truc comme ça dans un require_once :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| <?PHP
// on récupère le flux HTML
$PAGE= ob_get_contents ();
// on vide le cache du flux
ob_end_clean();
// on traduit
$nb=count($trad);
$tab_apres=$trad;
$tab_avant= array();
for ($i=0;$i<$nb;$i++)
{
$tab_avant[] = "{trad_".$i."}";
}
// on effectue la traducion en remplacant
@$PAGE = str_replace($tab_avant, $tab_apres, $PAGE);
//on affiche la page traduite
echo $PAGE;
?> |
je trouve cette solution extrement simple à gérer.
elle peut même être améliorée en cherchant/remplacant uniquement les chaines {trad_XX} grâce à une expression régulière...Bref ce principe est le même que l'URL rewriting...
En plus ça n'encombre pas ton HTML avec des phrases de 4 lignes qui nuisent à ta visiblilité des TAG.
qu'en pensez-vous ?
Partager