Bonjour à touis .
Je ne sais pas si je devrais mettre ce post dams le forum javascript ou php. J'essaye donc ici.
Je viens de réussir une class (qui est encore a perfectionner :o) ), qui va m'aider a avoir un site en plusieurs langue.
En fonction, de la langue du navigateur, ou de la selection de l'utilisateur, la class va charger le fichier "langue" (exempl: /fr/index.ph, /en/index.php etc) ou sera stocké les texte en fonction de la langue...
Le problème que j'ai est le suivant.
A la base, ce script php était contruit pour charger un fichier XML (expl: /fr/index.xml, /en/index.xml etc), j'ai donc modifier cette class pour ne plus avoir de l'XML mais un fichier php.
Mon texte, en fonction de la langue, s'affiche avec ce code:
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 echo $langue->text('msg_contact_9');
ma class va donc inclure dans une de ses fonction le fichier en fonction de la langue.
et dans mon fichier langue /fr/index.php j'ai ceci (entre autre):
Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $this->msg_contact_9 = "Vérification de votre saisie";
Jusqu'à la ca marche bien.
Le problème intervient quand javascript est impliqué la dedans.
En d'autre mot, si une condition "if" est positive, mon code va exécuter un code javascript pour avoir ce texte dans un "lightbox2".
Voci mon code javascript:
Code JAVASCRIPT : 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 <script type="text/javascript"> <!-- jQuery(document).ready(function() { $.fancybox( LE PROBLEME SURGIT A CE NIVEAU LA => '<h1 class="error"><?php echo $langue->text('msg_contact_9'); ?></h1><p><?php echo addslashes($checker->getErrors()) ?></p>', { 'autoDimensions' : false, 'width' : 350, 'height' : 'auto', 'transitionIn' : 'none', 'transitionOut' : 'none' } ); }); --> </script>
Quand je charge ma page, tout va bien.
Quand j'envoi mon formulaire à vide, des erreur vont etre détecter car des champs sont vide.
C'est la que ma condition renvoi TRUE (car il y a des champs obligatoire vides et ensuite le code javascript est éxécuté.
Dans la console derreur de Firefox, ce message d'erreur s'affiche et je ne trouve pas la source du problème :
Par contre ca marche très bien avec ma class qui charge le fichier XML. Je pense que ca doit être un problème de ", mais j'ai du mal à savoir ou!!!Error: unterminated string literal
Source File: http://www.que-faire-ce-week-end.ch/...s/contact.php#
Line: 180, Column: 9
Source Code:
'<h1 class="error">Vérification de votre saisie</h1><p><br />
Pourriez-vous m'aider?
Pour info, je colle mes deux class. Il y a un peu de lecture mais c'est pas énorme.
Et ca peut etre utile pour d'autre qui souhaiterait l'utiliser...
language.php.class.php (C'est donc celle-là que j'utilise)
language.xml.class.php :
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 <?php #error_reporting(E_ALL & ~E_NOTICE); class Langues { #private $msg_presentation_title = ""; #private $msg_presentation_text = ""; // Langue par le code ISO 639 (défaut : français) private $_langue = 'fr'; // Dossier contenant les langues private $_dirLangue = ''; /* Constructeur Récupère la langue via le navigateur, sinon charge celle par défaut ou si une langue est spécifiée, on charge celle ci. Permet aussi de spécifier le dossier ou ce trouvent les langues @access public @param $langue, $dirLangue, $fichier @return void */ public function __construct($dirLangue, $fichier, $langue = false) { if(is_dir($dirLangue)) { $this->_dirLangue = $dirLangue; } else { $this->_dirLangue = 'langues'; } if($langue) { $this->_langue = strtolower($langue); } else { if($lang = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2))) { # $this->_langue = $lang; $this->_langue = $_SESSION['language']; } else { $this->_langue = 'fr'; } } if(file_exists($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.php')) { // Chargement du fichier langue $this->translationFile($fichier); } else { die('Fichier de traduction ('.$this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.php) est innexistant ! Merci de vérifier que celui ci existe.'); } } /* Charge le fichier XML @access private @param $fichier @return void */ private function translationFile($fichier) { include($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.php'); } /* Charge le message à afficher @access public @param $texte @return $texte */ public function text($texte) { return addslashes($this->$texte); } } ?>
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 <?php error_reporting(E_ALL & ~E_NOTICE); class Langues { // Langue par le code ISO 639 (défaut : français) private $_langue = 'fr'; // Dossier contenant les langues private $_dirLangue = ''; // Objet SimpleXML private $_simpleXML = null; /* Constructeur Récupère la langue via le navigateur, sinon charge celle par défaut ou si une langue est spécifiée, on charge celle ci. Permet aussi de spécifier le dossier où ce trouvent les langues @access public @param $langue, $dirLangue, $fichier @return void */ public function __construct($dirLangue, $fichier, $langue = false) { if(is_dir($dirLangue)) { $this->_dirLangue = $dirLangue; } else { $this->_dirLangue = 'langues'; } if($langue) { $this->_langue = strtolower($langue); } else { if($lang = strtolower(substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2))) { # $this->_langue = $lang; $this->_langue = $_SESSION['language']; } else { $this->_langue = 'fr'; } } if(file_exists($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.xml')) { // Chargement du fichier langue $this->loadXmlFile($fichier); } else { die('Fichier XML ('.$this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.xml) innexistant ! Merci de vérifier que celui ci existe.'); } } /* Charge le fichier XML @access private @param $fichier @return void */ private function loadXmlFile($fichier) { $this->_simpleXML = simplexml_load_file($this->_dirLangue.'/'.$this->_langue.'/'.$fichier.'.xml'); } /* Charge le message à afficher @access public @param $texte @return $texte */ public function text($texte) { $resultat = $this->_simpleXML->xpath($texte); foreach($resultat as $noeud) { return $noeud; } } } ?>
MERCI POUR TOUT
Partager