Après avoir fait le tour de pas mal de sites où je ne trouve pas vraiment ma solution, je finis par poster une question ici, car aucune idée d'une solution potentiellement correcte.

Mon problème : je souhaite gérer les langues sur un site que je suis en train de créer pour le fun.
Pour le moment j'ai peu de pages.

index.php (j'épargne le blabla html)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
<?php
	session_start();
	//Inclusion des langues
	require_once('lang/langue.php');
?>
<p><?php echo text('annonce');?></p>
 
<?php require('includes/menu.php'); ?>
langue.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
 
<?php
@session_start();
 
if(!isset($_SESSION[LANG])){
	$_SESSION[LANG]=determiner_pays_langue();
}
 
/**
 * Fonction qui renvoie la chaine de caractères de la clé donnée
 * @param string $cle clé du texte à renvoyer
 * @return string texte à renvoyer/ rien si on a rien trouvé
 */
function text($cle){
	require($_SESSION[LANG].'.php');
	return $string_lang[$cle];
}
 
/**
 * Fonction qui détermine la langue à utiliser suivant le pays de l'utilisateur
 * @return string Langue à utiliser
 */
function determiner_pays_langue(){
	return LANGUE_DEFAUT;
}
 
?>
menu.php

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
<?php
	@session_start();
?>
 
<div id="menu">
	<ul>
		<li><a href="#"><span><?php texte('accueil');?></span></a></li>
	</ul>
</div>
Pour l'affichage de l'annonce automatiquement suivant la langue, ça marche parfaitement.

Par contre au moment où j'ai mis en place l'appel à la fonction "texte" dans le menu, tout part en vrille, j'ai une bonne vieille "Call undefined function".

Pourtant suivant la logique PHP, index inclue langue et inclue aussi menu, donc tout le monde connaît tout le monde. Eh bien non !!!

Ok, on va forcer l'inclusion et inclure langue.php de nouveau dans menu.php.
Or là, il me dit qu'il peut pas redéfinir la fonction "texte" ( "Cannot redeclare text()"), alors faut savoir, il la connaît ou il la connaît pas ?!?!

Du coup que faire??? J'ai l'impression de me mélanger les pinceaux au niveau de la hiérarchie des inclusions.