Subversion Repositories Applications.papyrus

Rev

Rev 2036 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2036 Rev 2037
1
<?php
1
<?php
2
/**
2
/**
3
* Description :
3
* Description :
4
*
4
*
5
* @package Applette
5
* @package Applette
6
* @subpackage Contenu_Local
6
* @subpackage Contenu_Local
7
// Auteur principal : 
7
// Auteur principal : 
8
* @author Grégoire <gregoire@tela-botanica.org>
8
* @author Grégoire <gregoire@tela-botanica.org>
9
// Autres auteurs :
9
// Autres auteurs :
10
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
10
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
11
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
11
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
12
* @version $$Id$$
12
* @version $$Id$$
13
* @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org)
13
* @copyright 1999-2009 Tela Botanica (accueil@tela-botanica.org)
14
*/
14
*/
15
 
15
 
16
/*
16
/*
17
* Applette : contenu_local
17
* Applette : contenu_local
18
*
18
*
19
* Cherche une traduction au contenu donné en paramètre.
19
* Cherche une traduction au contenu donné en paramètre.
20
* Les traductions doivent être placées dans un fichier i18n.ini dans le répertoire langue du site (ex: sites/mon_site/fr/i18n.ini)
20
* Les traductions doivent être placées dans un fichier i18n.ini dans le répertoire langue du site (ex: sites/mon_site/fr/i18n.ini)
21
* Affiche le contenu dans la locale en cours. Sinon, trouve le contenu de la locale par défaut.
21
* Affiche le contenu dans la locale en cours. Sinon, trouve le contenu de la locale par défaut.
22
* Si aucune traduction n'est présente, affiche le nom de la variable (GEN_I18N_ID_DEFAUT)
22
* Si aucune traduction n'est présente, affiche le nom de la variable (GEN_I18N_ID_DEFAUT)
23
* 
23
* 
24
*/
24
*/
25
 
25
 
26
// +------------------------------------------------------------------------------------------------------+
26
// +------------------------------------------------------------------------------------------------------+
27
// |                                            ENTETE du PROGRAMME                                       |
27
// |                                            ENTETE du PROGRAMME                                       |
28
// +------------------------------------------------------------------------------------------------------+
28
// +------------------------------------------------------------------------------------------------------+
29
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherContenuLocal';
29
$GLOBALS['_GEN_commun']['info_applette_nom_fonction'] = 'afficherContenuLocal';
30
$GLOBALS['_GEN_commun']['info_applette_balise'] = 	'(?:<!-- '.$GLOBALS['_GEN_commun']['balise_prefixe'].'(CONTENU_LOCAL_?(?:([A-Za-z0-9_]+))) -->)';
30
$GLOBALS['_GEN_commun']['info_applette_balise'] = 	'\{\{[Cc]ontenu_local'.
-
 
31
													'(?:\s*'.
-
 
32
														'(?:'.
-
 
33
															'(var="[^"]*")|'.
-
 
34
														')'.
-
 
35
													')+'.
-
 
36
													'\s*\}\}';
31
 
37
 
32
// +------------------------------------------------------------------------------------------------------+
38
// +------------------------------------------------------------------------------------------------------+
33
// |                                            CORPS du PROGRAMME                                        |
39
// |                                            CORPS du PROGRAMME                                        |
34
// +------------------------------------------------------------------------------------------------------+
40
// +------------------------------------------------------------------------------------------------------+
35
 
41
 
36
 
42
 
37
// +------------------------------------------------------------------------------------------------------+
43
// +------------------------------------------------------------------------------------------------------+
38
// |                                           LISTE de FONCTIONS                                         |
44
// |                                           LISTE de FONCTIONS                                         |
39
// +------------------------------------------------------------------------------------------------------+
45
// +------------------------------------------------------------------------------------------------------+
40
 
46
 
41
/** 
47
/** 
42
*  Fonction afficherContenuLocal() - retourne la traduction d'une variable donnée
48
*  Fonction afficherContenuLocal() - retourne la traduction d'une variable donnée
43
*
49
*
44
*  Retourne la traduction d'une variable donnée. Si la traduction n'est pas trouvée dans la 
50
*  Retourne la traduction d'une variable donnée. Si la traduction n'est pas trouvée dans la 
45
*  langue en cours, retourne la valeur de la langue par défaut.
51
*  langue en cours, retourne la valeur de la langue par défaut.
46
*  Si elle n'est pas définie, retourne le nom de la variable.
52
*  Si elle n'est pas définie, retourne le nom de la variable.
47
*
53
*
48
* @param  string  nom de la variable a chercher dans les fichiers de configuration ($GLOBALS)
54
* @param  string  nom de la variable a chercher dans les fichiers de configuration ($GLOBALS)
49
*/
55
*/
50
 
56
 
51
function afficherContenuLocal($tab_applette_arguments, $_GEN_commun)
57
function afficherContenuLocal($tab_applette_arguments, $_GEN_commun)
52
{
58
{
53
	//Gestion de la valeur par défaut
59
	//Gestion de la langue par défaut
54
	$langue = $GLOBALS['_GEN_commun']['i18n'];
60
	$langue = $GLOBALS['_GEN_commun']['i18n'];
-
 
61
	
55
	if ($langue == '')	{
62
	if ($langue == '')	{
56
		$langue = 'en';		
63
		$langue = GEN_I18N_ID_DEFAUT;		
57
	}
64
	}
58
	
65
	
59
	trouverI18N($langue);
66
	trouverI18N($langue);
-
 
67
	
60
	$lang = $GLOBALS['_PAPYRUS_']['page']['langue_site'];
68
	$lang = $GLOBALS['_PAPYRUS_']['page']['langue_site'];
61
	$cle = $tab_applette_arguments[2];
-
 
-
 
69
	
-
 
70
	//+----------------------------------------------------------------------------------------------------------------+
62
	
71
	// Gestion des arguments
-
 
72
	$balise = $tab_applette_arguments[0];
-
 
73
    $tab_arguments = $tab_applette_arguments;
-
 
74
	unset($tab_arguments[0]);
-
 
75
    foreach($tab_arguments as $argument) {
-
 
76
    	if ($argument != '') {
-
 
77
	    	$tab_parametres = explode('=', $argument, 2);
-
 
78
	    	$options[$tab_parametres[0]] = trim($tab_parametres[1], '"');
-
 
79
    	}
-
 
80
    }
-
 
81
    
-
 
82
    $cle = $options["var"];
63
	if (isset($tab_applette_arguments[2]))
83
	if (isset($cle))
64
	{
84
	{
65
		// Si l'argument a bien été passé, on cherche la traduction
-
 
66
		
85
		// Si l'argument a bien été passé, on cherche la traduction		
67
		if (isset($GLOBALS['_PAPYRUS_']['PAP_LANG'][$lang][$cle])&&(!empty($GLOBALS['_PAPYRUS_']['PAP_LANG'][$lang][$cle])))
86
		if (isset($GLOBALS['_CONTENU_LOCAL_']['TRANS'][$lang][$cle])&&(!empty($GLOBALS['_CONTENU_LOCAL_']['TRANS'][$lang][$cle])))
68
		{
87
		{
69
			// La traduction extiste dans la langue courante
-
 
70
			
88
			// La traduction extiste dans la langue courante
71
			return $GLOBALS['_PAPYRUS_']['PAP_LANG'][$lang][$cle]; 			
89
			return $GLOBALS['_CONTENU_LOCAL_']['TRANS'][$lang][$cle]; 			
72
		}	
90
		}	
73
		elseif (isset($GLOBALS['_PAPYRUS_']['PAP_LANG'][GEN_I18N_ID_DEFAUT][$cle])&&(!empty($GLOBALS['_PAPYRUS_']['PAP_LANG'][GEN_I18N_ID_DEFAUT][$cle]))){
91
		elseif (isset($GLOBALS['_CONTENU_LOCAL_']['TRANS'][GEN_I18N_ID_DEFAUT][$cle])&&(!empty($GLOBALS['_CONTENU_LOCAL_']['TRANS'][GEN_I18N_ID_DEFAUT][$cle]))){
74
			// La traduction dans la langue par défaut est définie
92
			// La traduction dans la langue par défaut est définie
75
			return $GLOBALS['_PAPYRUS_']['PAP_LANG'][GEN_I18N_ID_DEFAUT][$cle];
93
			return $GLOBALS['_CONTENU_LOCAL_']['TRANS'][GEN_I18N_ID_DEFAUT][$cle];
76
			
94
			
77
		}
95
		}
78
		
96
		
79
	}
97
	}
80
	
98
	
81
	// Si rien n'a été retourné précédemment, on retourne le nom de la clé.
99
	// Si rien n'a été retourné précédemment, on retourne le nom de la clé.
82
	
100
	
83
	return $cle;
101
	return $cle;
84
}
102
}
85
 
103
 
86
 
104
 
87
	/**
105
	/**
-
 
106
	 * Grégoire : 
-
 
107
	 * 
-
 
108
	 * Fonction trouverI18N : 
-
 
109
	 * Si le fichier n'a pas déjà été chargé dans la variable $GLOBALS,
88
	 * GREG : définition de la fonction pour charger les fichiers de langue (.ini)
110
	 * on cherche un fichier i18n.ini dans le site courant et la langue courante  
89
	 * Enregistre dans les variables $GLOBALS
111
	 * Enregistre dans les variables $GLOBALS
90
	 * @param string la langue a charger  
112
	 * @param string la langue a charger  
91
	 * */
113
	 * */
-
 
114
	
92
	function trouverI18N($langue)	{
115
	function trouverI18N($langue)	{
93
		//Définir le dossier ou se trouvent les sites
116
		//Définir le dossier ou se trouvent les sites
94
		$dir = PAP_CHEMIN_RACINE."sites/";
117
		$dir = PAP_CHEMIN_RACINE."sites/".$GLOBALS['_GEN_commun']['info_site']->gs_code_alpha;
95
		$dossierSites = opendir($dir);
-
 
96
		
118
		
97
		//Parcourir l'arborescence
119
		// 1. essayer d'ouvrir le dossier avec la langue courante
98
		while ($f = readdir($dossierSites))
120
		if (file_exists($dir."/".$langue."/i18n.ini"))	{
-
 
121
 
-
 
122
			//Vérifier si le fichier a été chargé
-
 
123
			if (!isset($GLOBALS['_CONTENU_LOCAL_']['LOADED_FILES'][$dir."/".$langue."/i18n.ini"]))	{
99
		{
-
 
100
			
-
 
101
			
-
 
102
			if (($f != ".")&&($f != "..")&&($f != ".svn"))	{
-
 
103
				if (is_dir($dir.$f))	{
-
 
104
					//C'est un dossier, on trouve le fichier de langues.
-
 
105
					if (file_exists($dir.$f."/".$langue."/i18n.ini"))	{
124
			
106
						$ini_array = parse_ini_file($dir.$f."/".$langue."/i18n.ini");
125
			$ini_array = parse_ini_file($dir."/".$langue."/i18n.ini");
107
						
126
			
108
						//Le fichier ini a été lu, définir les variables globales
127
			//Le fichier ini a été lu, définir les variables globales
109
						foreach	($ini_array as $key => $valeur)
-
 
110
						{
-
 
111
							$GLOBALS['_PAPYRUS_']['PAP_LANG'][$langue][$key] = $valeur;
-
 
112
						}
128
			foreach	($ini_array as $key => $valeur)
-
 
129
			{
-
 
130
				$GLOBALS['_CONTENU_LOCAL_']['TRANS'][$langue][$key] = $valeur;
-
 
131
			}
113
					}		
132
			
-
 
133
			$GLOBALS['_CONTENU_LOCAL_']['LOADED_FILES'][$dir."/".$langue."/i18n.ini"] = true;
114
				}
134
			
115
			}
135
			}
116
			
136
		}
117
		}
137
		
118
	}
138
	}
119
// +------------------------------------------------------------------------------------------------------+
139
// +------------------------------------------------------------------------------------------------------+
120
// |                                            PIED du PROGRAMME                                         |
140
// |                                            PIED du PROGRAMME                                         |
121
// +------------------------------------------------------------------------------------------------------+
141
// +------------------------------------------------------------------------------------------------------+
122
 
142
 
123
 
143
 
124
/* +--Fin du code ----------------------------------------------------------------------------------------+
144
/* +--Fin du code ----------------------------------------------------------------------------------------+
125
*/
145
*/
126
?>
146
?>