C'est obviousEt le plantage du site pour absence d'une variable n'est pas ce que j'appelle une gestion efficace.
Depuis quand un site plante pour une variable null de traduction?J'ai survolé avec un œil las toute cette conversation, alors j'apporte une condition sine qua non d'une bonne gestion multilingue.
Le système doit pouvoir gérer efficacement, d'une façon ou d'une autre, l'absence de traduction.
Et le plantage du site pour absence d'une variable n'est pas ce que j'appelle une gestion efficace.
C'est pas mal non plus.C'est pour cela qu'il ne faut pas partir bêtement dans l'inclusion d'un fichier de variables, il y a tout un système à mettre en place. Personnellement, j'ai choisi de wrapper la méthode par un objet doté d'une méthode magique __get.
Un script ne "plante" pas, mais il y a levée de Notice. Et c'est crade de cacher sous le tapis les notices en ce disant que ce n'est pas grave.Depuis quand un site plante pour une variable null de traduction?J'ai survolé avec un œil las toute cette conversation, alors j'apporte une condition sine qua non d'une bonne gestion multilingue.
Le système doit pouvoir gérer efficacement, d'une façon ou d'une autre, l'absence de traduction.
Et le plantage du site pour absence d'une variable n'est pas ce que j'appelle une gestion efficace.
Le site ne plantera pas car:
Si variable = null -> le mot ne s'affichera pas.
Puis:
Le minimum c'est de faire une valeur par défaut, ce n'est tout de même pas compliqué, ca prend 10 secondes...
Si tu parles d'absences de variables, une erreur peut arriver avec toutes les méthodes, l'erreur est humaine.
Pour éviter ce type d'erreurs, rien de plus simple:
Vérifier s'il existe une erreur de Type Notice après avoir finis un script de traduction...
Ou vérifier si la valeur par défaut existe...
Ou un simple test: if(!isset(
Au niveau gestion, rien de plus simple donc... Surtout au niveau correction...
Donc en fait tu soulèves un autre point positif de l'inclusion de variables, car en y réfléchissant bien, la gestion est encore bien plus simple finalement
Bien au contraire, puisque l'on y trouve tout une série d'avis sur la meilleure manière de traduire un site.Bon sinon je me demandais pourquoi tout ce discours qui n'a finalement pas beaucoup de rapport avec le message de départ?
Et partir du fait que jamais, au travers d'un développement, une valeur sera en attente de traduction, ou que tu oublieras le fichier néerlandais lorsque tu ajouteras une valeur, c'est assez présomptueux.
Même si je valide toujours plusieurs fois mes développements, je prévois toujours le cas d'erreur, et je pense que c'est une bonne pratique de développement.
Ensuite, pour moi (toujours), une bonne pratique de mise en place de traduction est, comme l'a indiqué Sekiltoyai, de prévoir une langue par défaut et de permettre de toujours afficher un texte, même s'il manque une traduction.
Tu peux rajouter echo devant le code d'exemple de Truc, et sa remarque reste valide.LoL
Je l'avais précisé dans mon avant-dernier Post, mais oublié de le re-préciser dans le dernier Post.
Truc on parle des variables de traductions qui sont affichées par echo
function mon_header($langue = 'fr.inc')
{
require_once($langue);
//...
echo 'hey ' . $bonjour . ', ' . $bonsoir;
//...
}
$langue=explode(",",$_SERVER["HTTP_ACCEPT_LANGUAGE"]);
if ($langue[0] === 'fr') {
function mon_header();
}
else {
function mon_header('us.inc');
}
Comme tu peux voir les seules erreurs pour une variable manquante de traduction, car c'est de cela qu'il est question ici, ne donneront qu'une erreur Notice.Bien que HS par rapport à la suite du topic (surtout vers la fin lol) Bonne idée ce script,Bonjour,
Il y a quelques temps j'ai du choisir une méthode pour rendre un site multilingue, et comme il y des questions sur le sujet de temps en temps je vais vous montrer quelle solution j'ai choisi.
Cette méthode est un exemple, il y a d'autres façons d'y arriver.
J'ai opté pour des tableaux dans un switch(), l'avantage à mon sens est qu'il est trés simple de rajouter des langues aux sites et cela sans devoir modifier des pages et des pages.
La page qui contient les différentes langues
language.php
Dans l’exemple ci-dessus il y trois tableaux français, anglais, et espagnol et suivant la valeur de la variable $_GET['language'] php va aller chercher les valeurs demandées dans tel ou tel tableau.<?php //-->Déclaration de la variable $Langue, et ici le fraçais par défaut en cas d'absence de valeur $_GET['language']. $Langue = (isSet($_GET['language'])) ? $_GET['language'] : 'FR' ; switch ($Langue) { case 'FR': //-->Partie français.--// $Language = array('text_bonjour' => 'Bonjour', 'text_bonsoir' => 'Bonsoir', 'text_accueil' => 'Accueil', 'text_login' => 'Votre nom d\'utilisateur', 'text_pass' => 'Votre mot de passe', 'text_oublie_pass' => 'Mot de passe oublier cliquez ici svp', 'text_send' => 'Envoie'); break; case 'US'://-->Partie Anglais.--// $Language = array('text_bonjour' => 'Hello', 'text_bonsoir' => 'Good evening', 'text_accueil' => 'Home', 'text_login' => 'Your username', 'text_pass' => 'Your password', 'text_oublie_pass' => 'Forget password Please click here', 'text_send' => 'Send'); break; case 'ES'://-->Partie Espagnol.--// $Language = array('text_bonjour' => 'Hola', 'text_bonsoir' => 'Buenas tardes', 'text_accueil' => 'Inicio', 'text_login' => 'Su nombre de usuario', 'text_pass' => 'Su contraseña', 'text_oublie_pass' => 'Olvido de contraseña Por favor, haga clic aquí', 'text_send' => 'Enviar'); break; } ?>
Pour afficher les valeurs rien de plus simple.
Voici un exemple de formulaire trilingue.
index.php
Voilà un exemple simple très facile à faire évoluer.<?php include_once 'commun/language.php'; //-->Ont va chercher le fichier language.php $Titre = (isSet($Language['text_accueil'])) ? $Language['text_accueil'] : 'Index'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" /> <title><?php echo $Titre; ?></title> </head> <body> <?php echo '<p>Langue : <a href="index.php?language=FR">FR</a> | <a href="index.php?language=US">US</a> | <a href="index.php?language=ES">ES</a></p>'; echo '<form action="" method="post" style="width: 524px"> <table style="width: 99%"> <tr> <td style="width: 191px">'.$Language['text_login'].' :</td> <td style="width: 289px"><input name="Text1" type="text" /></td> </tr> <tr> <td style="width: 191px">'.$Language['text_pass'].' :</td> <td style="width: 289px"><input name="Password1" type="password" /></td> </tr> <tr> <td style="width: 191px"> </td> <td style="width: 289px"><input name="Submit1" type="submit" value="'.$Language['text_send'].'" /></td> </tr> <tr> <td style="width: 191px"> </td> <td style="width: 289px">'.$Language['text_oublie_pass'].'.</td> </tr> </table> </form>'; ?> </body> </html>