En fait j'ai réalisé ce script pour me permettre de réaliser un site multilingue or puisque mon site a pas mal de contenu je souhaite créer un fichier XML par page par lequel je gère mes traductions.
Or le problème c'est que je ne sais pas comment faire pour réaliser une fonction qui permettrait de sélectionner le bon fichier XML suivant la page! Ci-joint le code PHP:
<?php
header( 'content-type: text/html; charset=utf-8' );
function findLocale ($loc = '', $block = 'notext') { // fonction allant chercher la traduction d'un bloc donné dans le fichier xml de localisation. Prend en paramètre la langue à utiliser, et l'élément contenant le texte. L'élément a pour le nom l'ID du block où on va afficher le texte
if ($loc === '') { // si loc n'existe pas
$loc = $_SESSION['locale']; // on lui assigne la variable de session
}
$doc = simplexml_load_file ('locales.xml'); // on charge le fichier de localisation
$resultat = $doc ->xpath ($loc.'/'.$block); // on va chercher le noeud correct
if (!empty ($resultat)) { // si le tableau n'est pas vide, il y a un texte
foreach ($resultat as $noeud) {
utf8_encode($noeud );
return $noeud; // on renvoie ce texte
}
}
else {
$resultat = $doc ->xpath ($loc.'/notext'); // sinon on va chercher le message d'erreur
foreach ($resultat as $noeud) {
$noeud= utf8_encode($noeud);
return $noeud;
}
}
}
?>
<?php
session_start ();
function checkLocale () { // fonction pour tenter de déterminer la langue utilisée par le système client (non garantie)
$locale = $_SERVER['HTTP_ACCEPT_LANGUAGE'];
if (substr ($locale, 0, 2) === 'fr') {
return 'FRANCAIS';
}
if (substr ($locale, 0, 2) === 'en') {
return 'ENGLISH';
}
return false;
}
if (!isset ($_SESSION['locale'])) {
if (false !== ($check = checkLocale ())) {
$_SESSION['locale'] = $check;
}
else {
$_SESSION['locale'] = 'FRANCAIS'; // on met une langue par défaut dans une variable de session
}
}
?>
<!-- Formulaire pour le choix des langues -->
<form method="post" action="">
<input type="submit" value="ENGLISH" name="langue" />
<input type="submit" value="FRANCAIS" name="langue" />
</form>
<?php
// on vérifie le choix de la langue dans le formulaire, et on assigne la valeur correcte à la variable de session
if (isset ($_POST['langue'])) {
$_SESSION['locale'] = $_POST['langue'];
}
?>
Voila j'espère obtenir une réponse positive je ne suis qu'un débutant en php et xml.