[RESOLU] Site internet bilingue

Petit nouveau ! | 3 Messages

27 févr. 2010, 10:42

Bonjour à tous,
Je suis en train de finaliser un site internet que je souhaite bilingue 'français-anglais'
j'ai cherché un peu partout sur divers forums comment utiliser des commandes php pour "dire" à la page - aux pages - (ou plutôt même en début de session) d'afficher les variables dans telle ou telle langue.
Le problème est que tous ces sites ne sont pas assez pédago pour le béotien que je suis : ils me donnent des petits bouts mais pas d'explication globale me permettant de comprendre comment écrire et où placer les différents fichiers php :

celui des variables fr
celui des variables en
celui d'ouverture de session avec choix de la langue

Je suis certain que c'est simple en plus... :twisted:

Merci d'avance pour le coup de main
Oxford :priere:

Mammouth du PHP | 985 Messages

27 févr. 2010, 17:02

Par exemple, grâce à la méthode $_GET:
http://www.w3schools.com/php/php_get.asp

Sinon tu peux regarder le script à Dunbar:
vos-contributions/formulaire-trilingue-t249837.html
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 3 Messages

28 févr. 2010, 08:53

Merci Dr@ke, je suis allé voir les deux liens. Ça m'aide un peu mais je n'y suis pas encore, trop flou.

Je précise ce que je crois devoir faire mais que je ne sais pas "organiser, structurer" :

1. Construire mes pages de sorte que la quasi totalité des textes soit sous forme d'une variable $titre, $bonjour, $date, .... (ça je sais faire) qui prendra la valeur 'bonjour' ou 'hello' selon que le lecteur aura cliqué ou non sur un bouton de choix de langue,
2. Indiquer aux différentes pages que par défaut l'affichage est à mettre en français (mais où mettre les lignes de commande ?)
3. Créer mes deux fichiers "langue" (pareil, je sais faire mais je me demande où je dois les placer)
4.Créer un bouton (genre drapeau anglais) associer à une fonction _get pour récupérer la variable "langue" qui indiquera que l'affichage doit passer en anglais (là je suis moins à l'aise et je ne sais pas trop où placer les commandes php relatives à cette manip)

Bref j'ai un peu toutes les briques et je veux bien faire le maçon mais j'ai besoin d'un architecte.... 8-)

Merci d'avance et bon week-end à tous
Oxford #-o


J'ai réussi. Si certains ont besoin d'un coup de main je suis en mesure d'apporter une réponse simple, globale... et pédago :shock:
Merci à tous
:D

ViPHP
AB
ViPHP | 5818 Messages

28 févr. 2010, 21:23

Ci-dessous un exemple complet :
<?php
$traduct['bonjour']['en'] = "Hello";
$traduct['bonjour']['fr'] = "Bonjour";

$lang_traduites = array('en','fr');
$lang = isset($_GET['lang']) && in_array($_GET['lang'],$lang_traduites)? $_GET['lang'] : 'fr';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Document sans titre</title>
</head>

<body>
<p><a href="?lang=fr">Français</a> <a href="?lang=en">Anglais</a></p>
<p><?php echo isset($traduct['bonjour'][$lang])? $traduct['bonjour'][$lang] : ''?></p>
</body>
</html>

Mammouth du PHP | 985 Messages

28 févr. 2010, 21:59

J'ai réussi. Si certains ont besoin d'un coup de main je suis en mesure d'apporter une réponse simple, globale... et pédago :shock:
Merci à tous
:D
Je me demande comment je devrais le prendre ça :mrgreen:
Face à la roche, le ruisseau l'emporte toujours, non pas par la force mais par la persévérance.

Petit nouveau ! | 3 Messages

02 mars 2010, 09:18

:D Dr@ke, non, ton aide m'a été précieuse, les sites sur lesquels tu m'as envoyé m'ont fait "cogiter" dans le bon sens.

Le problème c'est que je n'avais que des petits bouts, un peu comme un puzzle... et personne pour m'aider à assembler les trucs dans le bon sens. L'un des sites que tu m'as indiqué m'a permis de "cibler" comment utiliser la fonction _get.

En fait la bonne méthode, je crois, est d'avoir trois fichiers : un lexique "fr" contenant les valeurs des variables
<?php
$accueil="Accueil";
$hebergement="Chambres d'h&ocirc;tes";
$bien_etre="Bien-&ecirc;tre";
$tarifs="Tarifs";
$contact="Contact";
$acces="Acc&egrave;s";
$aux_alentours="Aux alentours";
$liens="Sites amis";
?>
qu'on nomme par exemple 'lang_fr.php'

Le même pour le lexique de l'anglais, qu'on nommera 'lang_en.php'

et un fichier 'langue.php' (à mettre au même endroit que l'index) indiquant qu'il faut pointer sur tel ou tel lexique selon la valeur de la variable 'lang' écrit ainsi :
<?php

{
$lang = Array();
$lang[0] = "fr";
$lang[1] = "en";
}

if ( !isset($_GET['lang']) )
$_GET['lang'] = 'fr';

if ($_GET['lang']=='fr') { // si la langue est 'fr' (français) on inclut le fichier lang_fr.php
include('lang_fr.php');
}

else if ($_GET['lang']=='en') { // si la langue est 'en' (anglais) on inclut le fichier lang_en.php
include('lang_en.php');
}

?>
Ensuite il y a juste à ajouter
<?php require ('langue.php'); ?>
dans l'en-tête de son fichier index

Évidemment dans les pages il faut remplacer les textes à afficher par des <?php echo $bonjour ?>

Cette méthode à l'énorme avantage d'être "ouverte" : on ajoute les éléments lexicaux au fur et a mesure de ses besoins

Et si on veut ajouter une langue : un lexique supplémentaire (si on ne connait pas la langue c'est hyper facile de faire appel à une copine linguiste qui n'a pas besoin de connaître quoi que ce soit en php), une ligne de prog à ajouter à son fichier 'langue.php', pif, paf le tour est joué !


Dans le même esprit je cherche maintenant à faire apparaître une image différente selon que la variable de langue a été choisie "fr" ou "en"

Bone journée à tous
Oxford 8-)