Voila j'ai effectuer un script en php me permettant de charger un fichier xml suivant un formulaire.
En fait j'ai réaliser ce script pour me permettre de réaliser un site multilingue or mon site ayant pas mal de contenu je souhaiterai créer un fichier xml par page ou a l'interrieur je gererer mes traduction.
Or le probleme c'est que je ne c'est pas comment faire pour accéder au bon fichier xml suivant la page! Ci-joint le code 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
<?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;
    }
  }
}
?>
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
 
<?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'espere obtenir une reponse positive je ne suis qu'un débutant en php et xml.