Page 1 sur 1

[Site Multilingues] Charger un header différend

Posté : 01 févr. 2013, 22:19
par tgv2000fr
Bonjour,

Je suis novice, et je cherche un script pour afficher un header par version de langues utilisé par le visiteur.

Je suis en train de faire un site en 3 langues, pour le moment j'ai utilisé une méthode avec switch() qui permet de changer mes textes sans avoir à éditer chaque pages en trois exemplaires. Voici mes codes :

set_lang.php

<?php
$lang_traduites = array(0 => 'fr', 1 => 'en', 2=> 'ger' );
$langue_defaut = $lang_traduites[0];

$lang_navig = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']);
$lang_navig = strtolower(substr(rtrim($lang_navig[0]),0,1,2));

$lang =  !empty($_COOKIE['lang'])? $_COOKIE['lang'] : 0;
$lang =  !empty($_GET['lang'])? $_GET['lang'] : $lang;
$lang =  !empty($lang)? $lang : $lang_navig ;
$lang =  in_array($lang,$lang_traduites)? $lang : $langue_defaut;

if ((!empty($_GET['lang']) && in_array($_GET['lang'],$lang_traduites)) && (empty($_COOKIE['lang']) ||
    (isset($_COOKIE['lang']) && $_COOKIE['lang'] != $_GET['lang']))) setcookie('lang', $_GET['lang'], time() + 3600 * 24 * 365);


switch($lang)
           {
        case 'fr':
        include('lang/lang_fr.php');
        break;
        case 'ger':
        include('lang/lang_ger.php');
        break;
        case 'en':
        include('lang/lang_en.php');
        break; 
                   }
       
?>
Un de mes fichier contenant le texte (lang_fr.php en l'occurrence) :
 

<?php
 

//------------------------------------ index.php ------------------------------------//
	 
 	 define('TXT_ACCUEIL_BLOCK1', 'mon texte 1');
 	 define('TXT_ACCUEIL_BLOCK2', 'mon texte 2');
 	 define('TXT_ACCUEIL_BLOCK3', 'mon texte 3');
 	 
//------------------------------------ expos.php ------------------------------------//
	 
 	 define('TXT_PYRZ_BLOCK1', 'mon texte 4');
 	 define('TXT_CONSEIL_BLOCK2', 'mon texte 5');
 	 

etc......

 ?> 
Tout sa marche bien pour l'instant.

Pour le moment mes 3 header (un pour chaque langues) dans lesquels se trouvent bannière, logo et navigation sont en simple include dans chaque pages du site dans sa langue respactive.
Je mi suis mal pris, car au départ je prévoyais de faire le site un trois exemplaire, un par langue.

Ce code est dans chaque page du coup :
<?php
 include 'languedemandée_overall_header.txt';
 ?>
J'en viens à ma demande :

Avez vous un moyen pour je puisse faire mes include par le biais du script (set_lang.php) ?

Merci à vous

Re: [Site Multilingues] Charger un header différend

Posté : 01 févr. 2013, 22:50
par moogli
salut,


Si tu as la langue active dans une variables (ce qui semble être le cas ;) )), tu peux l'utiliser pour créer dynamiquement le nom du fichier.

Par exemple
<?php
$banniere = $lang.'_overall_header.txt';
if(file_exists($banniere)) {
 include $banniere;
}
else {
  include 'bannière par défaut';
}
 ?>
A toi de prévoir correctement le chemin vers le fichier ;)

@+

Re: [Site Multilingues] Charger un header différend

Posté : 01 févr. 2013, 23:36
par tgv2000fr
Merci moogli c'est super sa marche.

Juste une dernière précision s'il te plaît :

J'ai voulut dans un premier temps mettre mes fichier contenant les codes de mes différents header dans un dossier "header" et j'ai voulus prévoir correctement le chemin vers le fichier comme tu m'a fait remarquer.
Alors j'ai tenté ceci mais je pense bien que cette syntaxe n'est pas bonne :
 <?php
  $header = header/$lang.'_overall_header.txt';
  if(file_exists($header)) {
   include $header;
  }
  else {
	include 'fr_overall_header.txt';
  }
?>
Aurais tu la bonne syntaxe ? :)

Re: [Site Multilingues] Charger un header différend

Posté : 01 févr. 2013, 23:48
par moogli
ben c'est une simple concaténation avec des chaines de caractères.

tu ne peux pas mettre du texte comme ça au milieu de nul part.

donc quelque chose comme ça : $var = 'truc '. $autreVar . ' la suite';


@+

Re: [Site Multilingues] Charger un header différend

Posté : 01 févr. 2013, 23:51
par tgv2000fr
Impeccable merci bien :)