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:

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 
?>
Le 1er pavé en gras était dans l'original que j'ai reçu et adapté à outrance.
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
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 
?>
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
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
 
}
?>
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
 
<?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 : ");
?>
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
 
PROGVIGADS_Welcome
PROGVIGADS_my_locationPROGVIGADS_location
PROGVIGADS_Class_versionPROGVIGADS_Version
 
| |
et dans le log 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
[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 !!
Voilà mon soucis, pas grand-chose je me doute, mais une idée lumineuse pourrait jaillir de l'un d'entre vous....

Merci à lui