PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 28-12-2013 21:55:38

ItsMeKam59
Membre
Inscription : 28-12-2013
Messages : 3

Besoin d'aide - Changement de langue listbox + drapeau + bouton

Bonjours,
Je viens de lire votre tutoriel pour créer un changement de langue.
J'aimerai savoir comment ajouter une listbox dans ma page qui possède le drapeau de la langue à gauche dans la textbox et à droite écrit le pays. A droite de cette listbox je voudrais un bouton écrit par exemple "OK" qui redirigerait vers la langue choisie. J'ai fais votre tutoriel, et cela a fonctionné. J'aimerai juste savoir comment faire ce que je vous demande.
Cordialement,

Hors ligne

#2 28-12-2013 22:11:38

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Besoin d'aide - Changement de langue listbox + drapeau + bouton

Bonjour,

Le tuto est bien et il montre le principe. Il a cependant un inconvénient, c'est qu'il n'utilise pas le cookie qu'il dit utiliser, et vérifie à chaque chargement la présence de la langue dans l'url pour rerouter sur le chargement du bon fichier langue. Or le paramètre de l'URL (accessible donc en GET) n'est disponible que lors du premier envoie de la requête HTTP au serveur, et il peut être sympa de décharger ensuite l'url de ce paramètre pour d'autre traitements.
Personnellement, je stockerais en $_SESSION plutôt qu'avec $_COOKIE car beaucoup d'utilisateurs désactivent les cookies pour éviter les tracking cookies de certains sites peu scrupuleux.

Si vous stockez donc votre langue dans $_SESSION['lang'] et que le choix des langues disponibles est inclus dans un tableau par exemple, il vous suffit de faire un truc du genre:


$langues=array('FR-FR','EN-US','EN_UK'); // juste un exemple
if (!isset($_SESSION['lang']){$cur_lang=$langues[0];}else{$cur_lang=$_SESSION['lang'];}
$b=count($langues);
$html='<select id="choix_langues">';
for($a=0;$a<$b;$a++){
    if ($langues[$a]===$cur_lang){$selected='selected="selected"';}else{$selected='';}      
    $html.='<option value="'.$langues[$a].'" '.$selected.'</option>';
}
$html.='</select>';
......
require_once('lang/'.$cur_lang.'.php');
.....
print $html;
 

Bonnes fêtes wink

Dernière modification par Jc (29-12-2013 13:19:12)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#3 29-12-2013 13:33:38

ItsMeKam59
Membre
Inscription : 28-12-2013
Messages : 3

Re : Besoin d'aide - Changement de langue listbox + drapeau + bouton

Bonjour,

Merci de votre réponse, je vais la tester.
Et disons que j'aimerai faire le même principe que sur des sites de jeux par exemple, comme le site www.dofus.com/fr
Pour changer de langue on passe du dossier /fr vers /la langue (exemple : en)
Donc cela fait www.dofus.com/en et on est en anglais
Si j'aimerai faire le même principe, je fais le même principe que vous m'avez proposé ? Avec le dossier .php qui modifie ou eux ils ont copiés leurs fichiers et traduisent à chaques fois?

Cordialement,

Hors ligne

#4 29-12-2013 18:58:12

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : Besoin d'aide - Changement de langue listbox + drapeau + bouton

Bonjour,

Pour la méthode présentée et proposée sur le tuto de ce site et pour répondre à votre question, elle est similaire à celle employée dans les programmes compilés avec un fichier de ressource, l'include appelant le dit fichier de ressources.

Les inconvénients et avantages à cette méthode:
- Elle est adaptée pour la traduction de menus, fonctionnalités, libellés de formulaires, bref à tout contenu bref/limité et statique proposé par le site.
- Elle est inadaptée pour du contenu riche (plusieurs lignes) où la traduction nécessite plus une traduction de contexte que littérale et/ou générique.
- Si la volumétrie de contenu est importante le nombre de définitions de constantes stockant ces traductions le sera d'autant, en ayant pour conséquences
a) une mobilisation mémoire au niveau de PHP à un instant t pouvant être non négligeable surtout si le site connaît un fort traffic.
b) Seule une partie de ces constantes chargées en mémoire peuvent être requêtées par le client et donc pertinentes pour l'application.

Pour vous donner une idée, dans une petite application compilée, le nombre de références de localisation peut se situer entre 1000 et 3000 références par langue supportée.

En ce qui concerne la solution adoptée par le site que vous avez évoqué, il peut être plus avantageux de créer un sous site par langue supportée, indépendants entre eux au niveau du code html et php par exemple et travaillant sur une base de données commune. Pourquoi par exemple car plusieurs modèles peuvent s'appliquer comme par exemple des pages html statiques distinctes et un code php commun.

Les avantages et inconvénients
- L'application est plus facilement maintenable, car chaque sous-site peut être géré/maintenu par une équipe différente sans interférences dans leur travail.
- Les pages html contenant le texte spécifique traduit, sort du traitement php et est délivré par un serveur de cache comme nginx par exemple, augmentant la capacité de charge du site et les performances générales.
- Elle permet d'adapter l'expérience d'utilisation à la culture de l'internaute concerné.
- Elle permet de mettre en place une optimisation SEO du site en fonction de la culture, cette optimisation pouvant inclure des règles de rewrite tout aussi spécifiques.
- Si vous êtes seul dans sa maintenance, vous devrez avoir une bonne organisation de votre site au niveau de son arborescence, utiliser des conventions d'écriture (...), bref, cumuler les bonnes pratiques de manière à vous simplifier la tâche dans sa gestion car le nombre de fichiers composant votre site sera plus important.

Pour finir, rien ne vous empêche de cumuler les deux techniques selon vos besoins de production, sans oublier qu'aussi peut se greffer à cela la nécessité de la mise en place d'une gestion de la localisation dans votre modèle de données au sein de votre SGBDR.

++

Dernière modification par Jc (29-12-2013 19:22:13)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#5 30-12-2013 21:32:35

ItsMeKam59
Membre
Inscription : 28-12-2013
Messages : 3

Re : Besoin d'aide - Changement de langue listbox + drapeau + bouton

Bonjour,

Merci de votre aide, elle m'a été grandement utile smile

J'aurais trois petites suggestions de tutoriels :

1) Tutoriel de "mouseover" si j'ai bien compris, ce qui modifie la souris sur le site, quand on clique on voit image X, quand on enlève image XX (ex : www.allfightpvp.com)
2) Comment faire un design de barre comme en haut qui pointe vers forum & boutique sur le site de allfight
3) J'aimerai faire quelques pages ajax sur mon site, cela raconterait des scènes, pour mes créations, comme des récits. On verrait par exemple une page avec la partie 1, et en bas on verrait une flèche, quand on cliquerait dessus cela ferait le même style que si on tournait une page, on verrait la page se tournait sans rechargement de la page et on pointerait vers la partie suivante

Merci, bonne soirée.

Dernière modification par ItsMeKam59 (30-12-2013 21:32:46)

Hors ligne

Pied de page des forums