IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Site multi-langue PHP


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 198
    Par défaut Site multi-langue PHP
    Bonjours,
    Je suis en train de créer un site sur lequel je voudrai mettre plusieur langue.
    Je ne suis pas encore vraiment décidé a savoir comment je pourrai faire ca.
    J'ai penser à faire une base de donnée "langue" qui aurrai la traduction de toute les langues. Puis dans mes pages mettre des vaiables qui pointerai vers ce tableau pour afficher le texte dans la bonne langue.

    Que penser vous de ceci. y a t'il un moyen plus simple?

    Merci d'avance de votre aide

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    En generale ce qui est fait c'est avec un fichier qu'on inclus selon la langue demandé et qui contient les differents texte... Parce que sinon vla le nombre de requete que tu va faire...

  3. #3
    Membre expérimenté

    Profil pro
    Inscrit en
    Mai 2006
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 206
    Par défaut
    Utilise le langage XML, en php tu as les fonction de simplexml qui permette d'extraire facilement les données avec simple_xpath. Une fois que tu connais bien le fonctionnement de l'XML et l'utiliser avec ces petites fonction tu pourra t'attaquer aux fonctions DOM qui permettent de manipuler les fichiers XML avec beaucoups plus de fonctions. Voici une classe que j'ai fait qui pourrais t'aider pour le debut $filelock n'est pas utilisé car je n'ai pas tout mis de la classe :o. Mais la fonction qui ressort les données est la.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    <?php
    // Classe XMLManager
    class XMLManager
    {
    	private $domfile;
    	private $domxpath;
    	private $curlang;
    	private $curfile;
    	private $filelock;
     
    /*******************************************************************************************************************
    METHODES PUBLIQUES
    *******************************************************************************************************************/
     
    	//Constructeur de la classe
    	public function __construct( $filename, $language )
    	{
    		$this->curlang = $language;
    		$this->curfile = $filename;
    		$this->domfile = new DOMDocument('1.0', 'iso-8859-1');
    		$this->domfile->preserveWhiteSpace = false; //On ne se soucie pas des espaces blancs.
    		$this->filelock = fopen( $filename.'.checker','a+'); //Ouverture du fichier de sécurité.
    		$this->domfile->load($filename);
     
    		$this->domxpath = new DOMXPath($this->domfile);
    	}
     
    	//Destructeur de la classe
    	public function __destruct()
    	{
    		unset($this->curfile);
    		unset($this->domfile);
    		unset($this->domxpath);
    		unset($this->curlang);
    		unset($this->filelock);
    	}
     
    	//Méthode qui retourne les données d'un noeud, l'élément pour la langue est inséré automatiquement.
    	public function getXPath( $xpathquery )
    	{
    		$textnode = $this->domxpath->query( $xpathquery.'/'.$this->curlang );
    		return utf8_decode($textnode->item(0)->nodeValue);
    	}
    }
    Exemple du fichier XML :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?xml version="1.0" encoding="iso-8859-1"?>
    <!--Elément racine //-->
    <root>
    	<title>
    		<fr>Connexion à l''espace membre</fr>
                             <en></en>
    	</title>
    	<login>
    		<fr>Login</fr>
    	</login>
    	<password>
    		<fr>Mot de passe</fr>
    	</password>
    	<submit>
    		<fr>Connexion</fr>
    	</submit>
    </root>

    Pour ajouter une langue il suffit de remettre des balise <en> (EN ou ce que tu veut) avec le texte entre, l'objet s'occupe de la langue tout seul, utilise la classe comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $xmllogform=new XMLManager( 'xml/website/logForm.xml', $_SESSION['Language'] );
    echo $xmllogform->getXPath('//root/title'); /*Ceci affiche ce qui est dans la 
    balise TITLE puis dans la balise FR ou EN selon la langue qui a servi à créer
    l'objet.*/
    Important : il faut bien penser à encodé en utf8_encode() avant d"écrire dans le fichier XML, et utiliser utf8_decode pour ressortir les données, sinon les accents risque de mal passer .

  4. #4
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bof je trouve pas que ca soit la meilleur methode...

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Mars 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2007
    Messages : 198
    Par défaut
    ok merci beaucoup d'avoir pris le temps de m'expliquer tout ca.
    Je connai très peu (voire pas du tout en fait) le xml.
    Mais je vais essayer d'étudier le sujet.
    Je pense que c est ce qu il me fallai.

    encore merci

  6. #6
    Membre émérite

    Profil pro
    H4X0|2 @ YourLabs Business Service
    Inscrit en
    Octobre 2006
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : H4X0|2 @ YourLabs Business Service
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 657
    Par défaut
    Surtout que SimpleXML offre des performances désastreuses dès que le fichier source commence à être important.

    Personnelement je fais simplement un fichier dans lang/fr/home.php dans laquelle je déclare un tableau dont les valeurs sont en francais, et un fichier lang/en/home.php dans lequel est un tableau de valeurs en anglais.
    Selon moi c'est la méthode la plus performante possible pour stocker les languages.

Discussions similaires

  1. [Cookies] multi langue PHP avec cookie
    Par heteroclite dans le forum Langage
    Réponses: 25
    Dernier message: 22/05/2007, 14h11
  2. Problème site multi langues
    Par dolf13 dans le forum Langage
    Réponses: 9
    Dernier message: 31/08/2006, 12h05
  3. Réponses: 12
    Dernier message: 04/11/2005, 16h28
  4. Architecture d'un site multi-langues
    Par seben dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 25/09/2005, 15h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo