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 Multilingue + changement de variable via image


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 47
    Points : 38
    Points
    38
    Par défaut Site Multilingue + changement de variable via image
    Bonjour à tous,

    Je sais, le titre est un peux vague mais enfaite je ne sais pas exactement comment formuler mon problème ni si je suis sur la bonne parties du forum.

    Mes connaissance en PHP sont assez limitées donc indulgences svp

    Je dois créer un site web statique ultra simple pour un client avec 6-7 pages, rien de bien complexe.

    Et bien je coince ...

    Ce site doit être multilingue (FR-NL-EN) et j'ai deux petit problèmes qui ce pose actuellement.

    1°) J'ai choisi de passer par la méthode simple de stocker tous les textes du site dans des variables et de les charger en fonction du choix de la langue et par défaut en FR.
    Hors, premier problème, même sans rien avoir choisi il n'affiche rien ...

    Normalement à l'endroit ou ce trouve
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <? echo _ACCEUIL_INDEX ?>
    il devrait afficher la variable associée.
    Alors soit j'ai fait un énorme faute de frappe, en oubliant un ";" ou autre, dans mon code (possible, je viens du VB.NET dont pas même style d'écriture) et je ne vois pas ou soit j'ai mon code qui est totalement faux et donc je vous demande de l'aide.

    J'ai commencé ce site le 20/11, j'ai consulté moult sites web où j'ai trouvé cette méthode pour le stockage de texte via variable, afin de trouver le plus facile et le plus rapide en développement car le client à un budget restreint.

    Voici le code de la page d’accueil.

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    <!DOCTYPE html>
     
    <?
     
    if (empty($_GET['lang'])){
    	$_SESSION['lang'] = 'FR';
    	}
    elseif{
    	switch ($_SESSION['lang']){
    		case 'FR':
    			$_SESSION['lang'] = 'FR';
    			break;
     
    		case 'EN':
    			$_SESSION['lang'] = 'EN';
    			break;
     
    		case 'NL':
    			$_SESSION['lang'] = 'NL';
    			break;
     
    		default
    			$_SESSION['lang']  = 'FR';
    			break;
    	}
    }
     
    switch($_SESSION['lang']){
            case "FR":
    			$fichier_langage = "lang/fr-lang.php";
    			break;
            case "EN":
    			$fichier_langage = "lang/en-lang.php";
    			break;
            case "NL":
    			$fichier_langage = "lang/nl-lang.php";
    			break;
    }
     
    include($fichier_langage);
     
    ?>
     
    <html>
        <head>
            <!-- En-tête de la page -->
            <meta charset="utf-8" />
    		<meta name="viewport" content="width=device-width"/>
    		<link rel="stylesheet" href="template.css" />
    		<title>Accueil</title>
        </head>
     
        <body>
     
    		<?php include 'Header.html' ?>
     
    		<div>
    			<p></p>
    			<hr/>
    			<p></p>
    		</div>
     
    		<div align="center">
    			<p></p>
    			<hr/>
    			<p></p>
     
    			<p>TEST</p>
    			<p><? echo _ACCEUIL_INDEX ?></p>
    			<p>TEST</p>
     
    		</div>
     
        </body>
     
    	<hr/>
     
    	<footer>
    		<!-- Pied de la page -->
     
    		<div align="center">
     
    			<p>2015 - Tout droits réservés</p>
     
    		</div>
     
    	</footer>
     
    </html>
    Et voici le code du fichier langue FR

    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
     
    <?
     
    //------------
    // index.php
    //------------
     
    define('_ACCEUIL_INDEX','Bienvenue sur le nouveau site Web');
    define('_ACCEUIL_INDEX2','Bienvenue 2');
     
    //------------
    // suite.php
    //------------
     
    define('_SUITE_1','Voici notre première suite');
     
     
     
    ?>
    Je creuse encore le problème mais pour l'instant je suis dans une impasse


    voici mon deuxième problème.

    Le changement de langue, j'ai mis des petits drapeau sur le site, un pour chaque langue.

    Cependant, comment changer la valeur de la variable lorsque je clique dessus ?

    J'ai aussi chercher sur internet (peut-être pas encore assez profond) mais pas encore trouvé de solution à ce sujet ou bien il y a des lignes de code que je ne comprend pas ou que je n'aie pas vue ...

    De plus, les icônes des drapeau sont contenu dans un header.php qui est appelé dans chacune des pages donc si je met un lien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    href="index.php?lang=fr"
    ce qui donne dans mon Header

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="index.php?lang=fr"> <img src="images/drapeau/france-16.png" id="logo2" /> </a>
    Comment je fait si je suis sur une autre page que index.php ? je retourne sur la page d'accueil après chaque changement de langue ? => Are you serious ???

    Je suis sur que PHP à une technique pour palier à ça, mais malheureusement mes connaissances ne sont pas encore assez poussée à ce sujet.

    Merci d'avance à tous pour vos réponses, je suis impatient de vous lire.

    A l'impossible nul n'est tenu !

  2. #2
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Sans regarder plus en détail ton code, je peux déjà te déconseiller d'utiliser le tag d'ouverture court <? mais plutôt <?php qui lui prête moins à confusion, et te dire que tu fais partie du vaste club des gens qui écrivent "acceuil" au lieu d'"accueil".

    En ce qui concerne les ; oubliés, active l'affichage des erreurs au début de ton code: ini_set('display_errors', 'On');, comme ça tu seras averti des erreurs de syntaxe notamment.


    Au lieu du switch pour le langage, teste si la variable de session est définie et valide, puis dans le cas contraire affecte lui 'FR':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (!isset($_SESSION['lang']) || !in_array($_SESSION['lang'], ['FR', 'EN', 'NL']))
        $_SESSION['lang'] = 'FR';
    En ce qui concerne le passage de l'information sur la langue d'un page à l'autre, c'est justement le rôle de la variable de session. Néanmoins rien n'interdit à l'utilisateur d'accéder directement à une page du site qui n'est pas la page d'accueil, donc il faut tester l'existence et la valeur de $_SESSION['lang'] sur chaque page.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 47
    Points : 38
    Points
    38
    Par défaut
    Bonsoir CosmoKnacki,

    Sympa ton pseudo

    J'ai fait le correctif de <?phpj'ai également mis le code pour l'affichage des erreurs, la seul ligne qui posait problème est le elseif que j'ai changé en else.

    Plus de message d'erreur mais toujours pas de texte qui s'affiche ...

    J'ai également mis tes lignes de code, pas de message d'erreur et toujours pas de texte.

    une autre idée ?


    Citation Envoyé par CosmoKnacki Voir le message
    tu fais partie du vaste club des gens qui écrivent "acceuil" au lieu d'"accueil".
    Malheureusement je plaide coupable, j'ai déjà le reflex de le corriger une série de fois mais ça m'arrive d'oublier et impossible de me débarraser de cemot mal écrit


    Merci

  4. #4
    Expert éminent Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 912
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 912
    Points : 6 705
    Points
    6 705
    Par défaut
    Autre chose que j'ai zappé. Il faut démarrer ta session: session_start(); et ce avant l'envoi du moindre caractère au client (espaces, saut de lignes et <!DOCTYPE html> compris).

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 47
    Points : 38
    Points
    38
    Par défaut
    CosmoKnacki,

    Merci, j'avance déjà beaucoup plus, que c'est 3 derniers jours ...

    Maintenant j'ai ça comme message :

    Notice: Use of undefined constant TXT_ACCUEIL_INDEX - assumed 'TXT_ACCUEIL_INDEX'

    J'ai fait la correction de Accueil dans tous les fichiers ...

    Pourtant le fichier fr-lang.php est bien orthographié et est bien chargé par la site car je le voir si je fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $fichier_langage ?>
    il affiche bien lang/fr-lang.php

    Merci pour ton aide !

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2010
    Messages : 47
    Points : 38
    Points
    38
    Par défaut
    CosmoKnacki,

    Sa y est !!!!! j'arrive enfin à afficher le texte !

    Miracle ... enfaite j'avais oublié le <?php dans les fichiers de langue ...

    honte sur moi ...

    Bon maintenant la partie un peux plus chaude, si je puis dire

    Comment changer la langue en cliquant sur les drapeaux et garder ce changement sur chaque page, point 2 du premier poste.

Discussions similaires

  1. [2.x] Site multilingue avec variable dans l'URL
    Par Texicitys dans le forum Symfony
    Réponses: 21
    Dernier message: 16/11/2012, 13h47
  2. Changement de source d'image via javascript
    Par jultoys dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 12/05/2007, 17h33
  3. Site Bilingue, gérer les variables
    Par AlphaYoDa dans le forum ASP
    Réponses: 4
    Dernier message: 27/02/2005, 19h57
  4. Transmettre une variable via un lien href
    Par developpeur_mehdi dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 08/01/2005, 15h49
  5. [C#] Mise en place d'un site multilingue
    Par regbegpower dans le forum ASP.NET
    Réponses: 6
    Dernier message: 19/03/2004, 20h15

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