Accueil > > > CLASS LANG AVEC COOKIE + HTTP_ACCEPT_LANGUAGE
CLASS LANG AVEC COOKIE + HTTP_ACCEPT_LANGUAGE
Information sur la source
Description
Cette classe permet de gérer plusieurs langues pour votre site web. Celle-ci utilise un fichier class.lang.php, plusieurs fichiers .lng contenant la liste des variables (fr.lng) ainsi que des images .png pour les drapeaux. La langue de l’utilisateur visitant votre site web est automatiquement récupérée grâce à la variable serveur $_SERVER['HTTP_ACCEPT_LANGUAGE']. Celle-ci est ensuite enregistrée dans un cookie. Mais l’utilisateur peut très bien choisir la langue souhaitée qui sera passée en $_GET puis à nouveau enregistrée dans un cookie.
Source
- /**
- * @author Cr@zy
- * @version 1.0
- * @copyright 2009 @ crazyws.fr
- */
-
- class Lang {
-
- var $lang;
- var $load = array();
- var $listLangs = array();
- var $subdir = '';
- private $path = "lang/";
- private $ext = ".lng";
- private $default = "fr";
-
- public function __construct()
- {
- $this->GetLangs();
-
- if( !isset($_COOKIE['lang']) ){
- $_COOKIE['lang'] = substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 );
- }
-
- if( isset($_GET['lang']) ){
- $this->CheckLang($_GET['lang']);
- } else if( isset($_COOKIE['lang']) ){
- $this->CheckLang($_COOKIE['lang']);
- }
-
- setcookie("lang", $this->lang, time() + 365 * 24 * 3600);
-
- $this->LoadLang();
- }
-
- private function CheckLang($lang)
- {
- if( in_array($lang . $this->ext, $this->listLangs) ){
- $this->lang = $lang;
- } else {
- $this->lang = $this->default;
- }
- }
-
- private function LoadLang()
- {
- $file = $this->subdir . $this->path . $this->lang . $this->ext;
- $handle = fopen($file, "r");
- if( $handle ){
- while( !feof($handle) ){
- $buffer = fgets($handle, 4096);
- if( (substr($buffer,0,1) == "\n") || (!substr($buffer,0,1)) ){
- continue;
- }
- if( substr($buffer,0,1) == '[' ){
- $prefix = substr($buffer,1,-3);
- } else {
- $buffer = trim($buffer);
- if( !empty($buffer) ){
- list($key,$value) = preg_split("/ = /", trim($buffer));
- $this->load[$prefix][$key] = substr($value,0);
- }
- }
- }
- }
- }
-
- private function GetLangs()
- {
- if( $handle = opendir($this->subdir . $this->path) ){
- while( false !== ($file = readdir($handle)) ){
- if( $file != "." && $file != ".." && preg_match("/.lng$/",$file) ){
- $this->listLangs[] = $file;
- }
- }
- closedir($handle);
- }
- }
-
- public function SetParams($string, $params=array()){
- foreach($params as $k => $v){
- $string = str_replace("{" . $k . "}", $v, $string);
- }
- return $string;
- }
- }
/**
* @author Cr@zy
* @version 1.0
* @copyright 2009 @ crazyws.fr
*/
class Lang {
var $lang;
var $load = array();
var $listLangs = array();
var $subdir = '';
private $path = "lang/";
private $ext = ".lng";
private $default = "fr";
public function __construct()
{
$this->GetLangs();
if( !isset($_COOKIE['lang']) ){
$_COOKIE['lang'] = substr( $_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2 );
}
if( isset($_GET['lang']) ){
$this->CheckLang($_GET['lang']);
} else if( isset($_COOKIE['lang']) ){
$this->CheckLang($_COOKIE['lang']);
}
setcookie("lang", $this->lang, time() + 365 * 24 * 3600);
$this->LoadLang();
}
private function CheckLang($lang)
{
if( in_array($lang . $this->ext, $this->listLangs) ){
$this->lang = $lang;
} else {
$this->lang = $this->default;
}
}
private function LoadLang()
{
$file = $this->subdir . $this->path . $this->lang . $this->ext;
$handle = fopen($file, "r");
if( $handle ){
while( !feof($handle) ){
$buffer = fgets($handle, 4096);
if( (substr($buffer,0,1) == "\n") || (!substr($buffer,0,1)) ){
continue;
}
if( substr($buffer,0,1) == '[' ){
$prefix = substr($buffer,1,-3);
} else {
$buffer = trim($buffer);
if( !empty($buffer) ){
list($key,$value) = preg_split("/ = /", trim($buffer));
$this->load[$prefix][$key] = substr($value,0);
}
}
}
}
}
private function GetLangs()
{
if( $handle = opendir($this->subdir . $this->path) ){
while( false !== ($file = readdir($handle)) ){
if( $file != "." && $file != ".." && preg_match("/.lng$/",$file) ){
$this->listLangs[] = $file;
}
}
closedir($handle);
}
}
public function SetParams($string, $params=array()){
foreach($params as $k => $v){
$string = str_replace("{" . $k . "}", $v, $string);
}
return $string;
}
}
Conclusion
J'espère que cette classe aura sû vous aider. J'attends vos commentaires ou plutôt vos appréciations bonnes ou mauvaises ^^
Pour plus d'infos et télécharger un exemple : http://www.crazyws.fr/blog/?p=1196
Historique
- 15 décembre 2009 01:58:42 :
- Caractères erronés dans la description
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
pb avec le multilangue [ par morpheus262 ]
Salut,pour une fois c'est moi qui ai un probleme avec mon code, erreur assez bizard car j ai deja utilisé ce principe et ca marche tres bie
Gros problème de selection de la langue [ par Lapinours ]
Chalut les djeuns,bon mon probleme est simple et complexe en meme tps.Dans ma page d'accueil je propose une selection de langue francais - anglais - e
faire un site bilingue [ par nsmoez ]
BonjourJ'ai un site en englais que j'aimerai lui ajouter la langue française. J'ai commencé par traduire tout le contenu du site en langue française.P
Probleme Urgent Cookie/Session en PHP [ par dawda ]
Bonjour a tous,Depuis mon changement d'hebergeur j'ai le probleme suivant(De online a Amen).J'ai un systeme de traduction de mes pages web qui via le
pb avec mis à jour d bouton d'option + check [ par chardene_amour_de_freddy ]
Bonjour, Je suis nouvelle sur le forum et je sui tt aussi novice en php.Je veins auprès de mes confrères et consoeurs developpeur demander d
Site 2 langues (cookies [ par kiboumz ]
Bonjour, j'essaie de réaliser un script pour rendre mon site dynamique au point de vue de la langue (français et anglais). Cependant,
Ecrire un texte en fonction de langue du navigateur [ par Rimb0 ]
Bonjour, Je voudrais afficher un texte différent suivant la langue du navigateur.Voici ce que j'ai écrit :<?php$lang = $_SERVER['HTTP_ACC
Site multilingue avec des variables dans les traductions [ par dvdstory ]
Bonjour,Je souhaite faire un site multilingue, mais des variables me posent problème, je connais le principe, On detecte la langue du navigateur puis
Reflection [ par dorian91 ]
Salut a tousVoila j'essaye de m'initier a la reflection en php (dur dur ).J'ai fait un petit script et il me met toujours un warning voici mon code$cl
function_exists mais dans une classe [ par cedriclomb ]
Bonjour,je cherche une fonction pour tester si une fonction existe mais dans une class exempleif(function_in_class($this->{$act}->getPage()){
|
Derniers Blogs
L'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIESL'INTERFACE NATURELLE DE WINDOWS PHONE 7 SERIES par odewit
La tendance est aux interfaces naturelles (NUI), et le keynote de Bill Buxton au MIX l'a bien souligné.
La charte graphique et ergonomique de Windows Phone 7 a donc été entièrement repensée en vue d'obtenir un maximum d'efficacité sur ce point. En re...
Cliquez pour lire la suite de l'article par odewit COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE?COMMENT MAPPER UNE VUE SQL SUR UNE COLLECTION DE COMPLEX TYPE? par Matthieu MEZIL
Avec EF, les vues doivent être mappées sur des entity types. Le problème c'est que les entity types doivent avoir une clé. Avec EF, nous avons les complex type qui n'ont pas de clé mais les vues ne peuvent pas être mappées dessus. Avec EF4, il est possibl...
Cliquez pour lire la suite de l'article par Matthieu MEZIL [WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL?[WF4] UN BINDING ACTIVITY/ACTIVITYDESIGNER QUI PASSE MAL? par JeremyJeanson
Certain d'entre vous on peut être vécu cette situation embarrassante après quelques temps passer avec WF4 : Au début avec mon " ActivityDesigner" , tout allait bien. Et puis un jour j'ai au des problèmes de " Binding" . Alors nous sommes allé sur le site ...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (10.9.4.0)ACADEMY SYSTEM (10.9.4.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods
|