par
x@v » 20 sept. 2007, 14:49
c'est surtout le changement de langue en cliquant sur le drapeaux qui m'***.
En faite le seul moyen c'est de mettre des fichiers, ouverture, fermeture...
en faite je croyais qu'une variable $_GET était obligatoirement dans href://...
Ce qui ma emmener sur autre chose que les sessions, mais je me demande si je ne devrai pas utilisez les sessions, questions de rapidités et de simplicité ?
mon système de langue fonctionne (pour qui veux s'en servir)
le fichier des fonction et variable...
<?php
$IP=(isset($_SERVER['SERVER_ADDR'])? $_SERVER['SERVER_ADDR']:getenv($_SERVER['SERVER_ADDR']));
$serverback="$IP";
$chemin_bo=$_SERVER["DOCUMENT_ROOT"].'';
// chemin du répertoire lang
$lang_bo=$chemin_bo."/lang/";
// recuperation des langues dispo
// retourne 1 table contenant les noms
function available_lang() {
global $chemin_bo, $lang_bo;
$lang_dispo=array();
// les répertoires indésirable
$badrep=array(".","..");
if ($dirLang=opendir($lang_bo)) {
$i=0;
while($repLang=readdir($dirLang)) {
$cheminRepLang=$lang_bo.$repLang;
if(is_dir($cheminRepLang) && !in_array($repLang, $badrep)) {
$lang_dispo[$i]=$repLang;
$i++;
}
}
}
else {
print die("Impossible de lire le répèrtoire");
}
return $lang_dispo;
}
// choix de la langues.
// met en place le fichier default_lang.php
// ce dernier contiendra la constante MY_lang précisant la langue à utiliser
function set_default_lang($choix_lang="") {
global $chemin_bo;
$lang_def=$chemin_bo."/lang/default_lang.php";
if(!file_exists($lang_def)) {
// default_lang.php n'existe pas et on recupère les langues disponnible
$lang_dispo=available_lang();
if(count($lang_dispo)>0) {
// écriture du contenu pour le fichier default_lang.php
$contenu="<?php\n";
$contenu.="define (\"MY_LANG\",\"$lang_dispo[0]\");\n";
$contenu.="?>\n";
$fp=fopen($lang_def, "w");
if(!$fp)
die ("Impossible");
fwrite($fp, $contenu);
fclose($fp);
}
else {
die ("Il n'y a aucun répertoire de langue");
}
}
else {
if($choix_lang!="") {
$contenu="<?php\n";
$contenu.="define (\"MY_LANG\", \"$choix_lang\");\n";
$contenu.="?>\n";
$fp=fopen($lang_def, "w");
if (!$fp)
die ("Impossible de créer le contenu");
fwrite($fp, $contenu);
fclose($fp);
}
}
}
// fichier pour le choix de la langue
while(!@include("$chemin_bo/lang/default_lang.php"))
set_default_lang();
include ("$chemin_bo/lang/".MY_LANG."/lang.php");
?>
et je met donc au début de tout mes fichiers
<?php
//////////////////////////////////////////////////////
include ("./fonction.php");
// chargement de la langue
if (isset($_GET['CHlangue']) && !empty($_GET['CHlangue'])) {
// on change la langue
set_default_lang($_GET["CHlangue"]);
header("location:dossier.php?id_article=1");
}
// La langue par default
while(!@include("$chemin_bo/lang/default_lang.php")) {
set_default_lang();
}
// inclusion du fichier de lang
include ("$chemin_bo/lang/".MY_LANG."/lang.php");
//////////////////////////////////////////////////////?>
ensuite il faut ajouter les drapeaux
<div style="position:absolute;left:55px;top:50px;">
<?php
//Boucle et affiche toutes les langues disponible
//recup des langues dans un tableau
$lang_dispo=available_lang();
if(count($lang_dispo)>1) {
while(list($key, $current_lang)=each($lang_dispo)) {
if(MY_LANG!=$current_lang){
$flag=$serverback."/lang/".$current_lang."/flag.gif";
print '<a href="./dossier.php?CHlangue='.$current_lang.'"><img src="http://'.$flag.'" /></a>';
}
}
}?>
</div>
arborescence du site
./lang/english/l ce dossier contient l'image et le fichier txt des constantes
./lang/french/ ce dossier contient l'image et le fichier txt des constantes
dans lang il faut créer un fichier default_lang.php qui sert permet d'écrire la constante MY_LANG
Donc effectivement sa fonctionne mais sa me semble lourd
c'est surtout le changement de langue en cliquant sur le drapeaux qui m'***.
En faite le seul moyen c'est de mettre des fichiers, ouverture, fermeture...
en faite je croyais qu'une variable $_GET était obligatoirement dans href://...
Ce qui ma emmener sur autre chose que les sessions, mais je me demande si je ne devrai pas utilisez les sessions, questions de rapidités et de simplicité ?
mon système de langue fonctionne (pour qui veux s'en servir)
le fichier des fonction et variable...
[php]<?php
$IP=(isset($_SERVER['SERVER_ADDR'])? $_SERVER['SERVER_ADDR']:getenv($_SERVER['SERVER_ADDR']));
$serverback="$IP";
$chemin_bo=$_SERVER["DOCUMENT_ROOT"].'';
// chemin du répertoire lang
$lang_bo=$chemin_bo."/lang/";
// recuperation des langues dispo
// retourne 1 table contenant les noms
function available_lang() {
global $chemin_bo, $lang_bo;
$lang_dispo=array();
// les répertoires indésirable
$badrep=array(".","..");
if ($dirLang=opendir($lang_bo)) {
$i=0;
while($repLang=readdir($dirLang)) {
$cheminRepLang=$lang_bo.$repLang;
if(is_dir($cheminRepLang) && !in_array($repLang, $badrep)) {
$lang_dispo[$i]=$repLang;
$i++;
}
}
}
else {
print die("Impossible de lire le répèrtoire");
}
return $lang_dispo;
}
// choix de la langues.
// met en place le fichier default_lang.php
// ce dernier contiendra la constante MY_lang précisant la langue à utiliser
function set_default_lang($choix_lang="") {
global $chemin_bo;
$lang_def=$chemin_bo."/lang/default_lang.php";
if(!file_exists($lang_def)) {
// default_lang.php n'existe pas et on recupère les langues disponnible
$lang_dispo=available_lang();
if(count($lang_dispo)>0) {
// écriture du contenu pour le fichier default_lang.php
$contenu="<?php\n";
$contenu.="define (\"MY_LANG\",\"$lang_dispo[0]\");\n";
$contenu.="?>\n";
$fp=fopen($lang_def, "w");
if(!$fp)
die ("Impossible");
fwrite($fp, $contenu);
fclose($fp);
}
else {
die ("Il n'y a aucun répertoire de langue");
}
}
else {
if($choix_lang!="") {
$contenu="<?php\n";
$contenu.="define (\"MY_LANG\", \"$choix_lang\");\n";
$contenu.="?>\n";
$fp=fopen($lang_def, "w");
if (!$fp)
die ("Impossible de créer le contenu");
fwrite($fp, $contenu);
fclose($fp);
}
}
}
// fichier pour le choix de la langue
while(!@include("$chemin_bo/lang/default_lang.php"))
set_default_lang();
include ("$chemin_bo/lang/".MY_LANG."/lang.php");
?>[/php]
et je met donc au début de tout mes fichiers
[php]<?php
//////////////////////////////////////////////////////
include ("./fonction.php");
// chargement de la langue
if (isset($_GET['CHlangue']) && !empty($_GET['CHlangue'])) {
// on change la langue
set_default_lang($_GET["CHlangue"]);
header("location:dossier.php?id_article=1");
}
// La langue par default
while(!@include("$chemin_bo/lang/default_lang.php")) {
set_default_lang();
}
// inclusion du fichier de lang
include ("$chemin_bo/lang/".MY_LANG."/lang.php");
//////////////////////////////////////////////////////?>[/php]
ensuite il faut ajouter les drapeaux
[php] <div style="position:absolute;left:55px;top:50px;">
<?php
//Boucle et affiche toutes les langues disponible
//recup des langues dans un tableau
$lang_dispo=available_lang();
if(count($lang_dispo)>1) {
while(list($key, $current_lang)=each($lang_dispo)) {
if(MY_LANG!=$current_lang){
$flag=$serverback."/lang/".$current_lang."/flag.gif";
print '<a href="./dossier.php?CHlangue='.$current_lang.'"><img src="http://'.$flag.'" /></a>';
}
}
}?>
</div>[/php]
arborescence du site
./lang/english/l ce dossier contient l'image et le fichier txt des constantes
./lang/french/ ce dossier contient l'image et le fichier txt des constantes
dans lang il faut créer un fichier default_lang.php qui sert permet d'écrire la constante MY_LANG
Donc effectivement sa fonctionne mais sa me semble lourd