Bonjour,
J'ai développé une classe (qui aura + tard une extension MySQL) pour gérer plusieurs langues d'un site.
J'arrive au bout mais ne comprends pas une chose:
Le 1er pavé en gras était dans l'original que j'ai reçu et adapté à outrance.
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 // echo simple title echo PROGVIGADS_Welcome."<br/>"; echo PROGVIGADS_my_location.PROGVIGADS_location."<br/>"; echo PROGVIGADS_Class_version.PROGVIGADS_Version; ///////or you can do it with site setting or user profile load it with mysql and change site language // like $lang->load_language("fa"); // or another way if(isset($_GET['lang'])) { switch($_GET['lang']) { case "ir": $lang->set_language("fa"); break; case "en": $lang->set_language("en") ; break; case "tr": $lang->set_language("tr") ; break; } } ?> <br /> <br /> <a href="index.php?lang=en"> <img src="images/us.gif" /> </a> | <a href="index.php?lang=ir"> <img src="images/ir.gif" /> </a> | <a href="index.php?lang=tr"> <img src="images/tr.gif" /> </a> <br /> <a href="http://progvig.ir">Progvig.ir</a> <?php // echo simple title echo PROGVIGADS_Welcome."<br/>"; echo PROGVIGADS_my_location.PROGVIGADS_location."<br/>"; echo PROGVIGADS_Class_version.PROGVIGADS_Version; ///////or you can do it with site setting or user profile load it with mysql and change site language // like $lang->load_language("fa"); // or another way ?>
Dans ce cas, cela ne fonctionne pas.
Mais si je déplace vers le bas ce même coding, cela fonctionne...
Mais pourquoi pas - pouquoi OK ?
Voici mon index.php
ma classe Langue
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 <?php session_start(); // register session to change language session_register("mylang"); //include language class require_once $_SERVER['DOCUMENT_ROOT'] . '/class/classlang.php'; $lang = new Language(); // echo simple title echo PROGVIGADS_Welcome."<br/>"; echo PROGVIGADS_my_location.PROGVIGADS_location."<br/>"; echo PROGVIGADS_Class_version.PROGVIGADS_Version; ///////or you can do it with site setting or user profile load it with mysql and change site language // like $lang->load_language("fa"); // or another way if(isset($_GET['lang'])) { switch($_GET['lang']) { case "ir": $lang->set_language("fa"); break; case "en": $lang->set_language("en") ; break; case "tr": $lang->set_language("tr") ; break; } } ?> <br /> <br /> <a href="index.php?lang=en"> <img src="images/us.gif" /> </a> | <a href="index.php?lang=ir"> <img src="images/ir.gif" /> </a> | <a href="index.php?lang=tr"> <img src="images/tr.gif" /> </a> <br /> <a href="http://progvig.ir">Progvig.ir</a> <?php // echo simple title echo PROGVIGADS_Welcome."<br/>"; echo PROGVIGADS_my_location.PROGVIGADS_location."<br/>"; echo PROGVIGADS_Class_version.PROGVIGADS_Version; ///////or you can do it with site setting or user profile load it with mysql and change site language // like $lang->load_language("fa"); // or another way ?>
Et la classe contenant les constantes du code langue "en", les autres sont identiques:
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
91
92
93
94
95
96 <?php class Language { private $language, $allowed = array("en" , "fa" , "tr") ; private $default = "en" ; /** * * Constructor * =========== **/ function __construct() { if (isset($_SESSION['mylang'])) $this->language = $_SESSION['mylang'] ; else { $_SESSION['mylang'] = $this->default ; $this->set_language($this->default) ; } } /** * * Destructor * ========== **/ function __destruct() { user_error("destructor",E_USER_NOTICE) ; // unset($_SESSION['mylang']) ; } /** * * set_language * ============ **/ function set_language($lang) { if (in_array($lang,$this->allowed) ) { user_error("set_language[".$lang."]",E_USER_NOTICE) ; $this->language = $_SESSION['mylang'] = $lang ; } else user_error("Bad language[".$lang."]" , E_USER_ERROR) ; $this->load_language(); } /** * * set_default * =========== **/ function set_default($lang) { if (in_array($lang,$this->allowed) ) { user_error("set_language[".$lang."]",E_USER_NOTICE) ; $this->default = $lang ; } else user_error("Bad language[".$lang."]" , E_USER_ERROR) ; $this->load_language(); } /** * * get_language * ============ **/ function get_language() { user_error("get_language[".$this->language."]",E_USER_NOTICE) ; return($this->language) ; } /** * * load_language * ============= **/ function load_language() { user_error("load_language[".$this->language."]",E_USER_NOTICE) ; $lang = $this->get_language() ; switch ($lang) { case "fa": require_once $_SERVER['DOCUMENT_ROOT'] . '/class/lang-fa.class.php'; break; case "en": require_once $_SERVER['DOCUMENT_ROOT'] . '/class/lang-en.class.php'; break; case "tr": require_once $_SERVER['DOCUMENT_ROOT'] . '/class/lang-tr.class.php'; break; default : user_error("Bad CodeLanguage[".$lang."]" , E_USERuERROR) ; } $this->language = lang ; } // end language function loading } ?>
Dans le cas ou cela ne fonctionne pas, j'ai à l'écran:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?php // define words define("PROGVIGADS_Class_version","Class Version is :"); define("PROGVIGADS_Version","1.0.0"); define("PROGVIGADS_Welcome","Welcome To my site"); define("PROGVIGADS_location","America"); define("PROGVIGADS_my_location","My location is : "); ?>
et dans le log PHP:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 PROGVIGADS_Welcome PROGVIGADS_my_locationPROGVIGADS_location PROGVIGADS_Class_versionPROGVIGADS_Version | |
Voilà mon soucis, pas grand-chose je me doute, mais une idée lumineuse pourrait jaillir de l'un d'entre vous....
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 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_Welcome - assumed 'PROGVIGADS_Welcome' in F:\WebSites\langue\index.php on line 13 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_my_location - assumed 'PROGVIGADS_my_location' in F:\WebSites\langue\index.php on line 14 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_location - assumed 'PROGVIGADS_location' in F:\WebSites\langue\index.php on line 14 [19-Jan-2011 14:23:49] PHP Notice: [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_Welcome - assumed 'PROGVIGADS_Welcome' in F:\WebSites\langue\index.php on line 13 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_my_location - assumed 'PROGVIGADS_my_location' in F:\WebSites\langue\index.php on line 14 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_location - assumed 'PROGVIGADS_location' in F:\WebSites\langue\index.php on line 14 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_Class_version - assumed 'PROGVIGADS_Class_version' in F:\WebSites\langue\index.php on line 15 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_Version - assumed 'PROGVIGADS_Version' in F:\WebSites\langue\index.php on line 15 [19-Jan-2011 14:23:49] PHP Notice: set_language[en] in F:\WebSites\langue\class\classlang.php on line 37 [19-Jan-2011 14:23:49] PHP Notice: load_language[en] in F:\WebSites\langue\class\classlang.php on line 75 [19-Jan-2011 14:23:49] PHP Notice: get_language[en] in F:\WebSites\langue\class\classlang.php on line 66 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant lang - assumed 'lang' in F:\WebSites\langue\class\classlang.php on line 90 [19-Jan-2011 14:23:49] PHP Notice: destructor in F:\WebSites\langue\class\classlang.php on line 26 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant PROGVIGADS_Version - assumed 'PROGVIGADS_Version' in F:\WebSites\langue\index.php on line 15 [19-Jan-2011 14:23:49] PHP Notice: set_language[en] in F:\WebSites\langue\class\classlang.php on line 37 [19-Jan-2011 14:23:49] PHP Notice: load_language[en] in F:\WebSites\langue\class\classlang.php on line 75 [19-Jan-2011 14:23:49] PHP Notice: get_language[en] in F:\WebSites\langue\class\classlang.php on line 66 [19-Jan-2011 14:23:49] PHP Notice: Use of undefined constant lang - assumed 'lang' in F:\WebSites\langue\class\classlang.php on line 90 [19-Jan-2011 14:23:49] PHP Notice: destructor in F:\WebSites\langue\class\classlang.php on line 26 Et parfois, j'ai que ces constantes sont déjà définies !!
Merci à lui![]()
Partager