begin process at 2010 03 20 20:40:59
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > SITE EN PLUSIEURS LANGUES : EXEMPLE SIMPLE AVEC XML

SITE EN PLUSIEURS LANGUES : EXEMPLE SIMPLE AVEC XML


 Information sur la source

Note :
8,88 / 10 - par 8 personnes
8,88 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :multilingue, langue, xml, locales, site Niveau :Initié Date de création :31/08/2005 Date de mise à jour :05/09/2005 11:54:47 Vu / téléchargé :20 401 / 1 556

Auteur : malalam

Ecrire un message privé
Site perso
Commentaire sur cette source (149)
Ajouter un commentaire et/ou une note

 Description

Ceci est un exemple très succint, commenté, montrant une manière d'obtenir un site traduit en plusieurs langues, sans avoir à utiliser une copie du site par langue.
Le principe est simple :
- on inclut dans chaque page du site.
- un fichier XML contient les traductions. Sous la racine, chaque langue, et sous chaque langue, les éléments traduits. (voir le fichier xml simple fourni). Ces éléments ont pour nom la valeur de l'id du bloc (div, span, etc...)dans lequel vous voulez afficher le texte traduit.
- on appelle dans chaque bloc une fonction parsant le fichier xml de localisation, pour afficher le bon texte.

Nécessite php5 (utilisation de simpleXML)


Source

  • Fichier xml : locales.xml
  • <?xml version="1.0" encoding="iso-8859-1"?>
  • <Locales>
  • <ENGLISH>
  • <msg>Hello world</msg>
  • <notext>No text available</notext>
  • </ENGLISH>
  • <FRANCAIS>
  • <msg>Bonjour le monde</msg>
  • <notext>Pas de texte disponible</notext>
  • </FRANCAIS>
  • <DEUTSCH>
  • <msg>Hallo Welt</msg>
  • <notext>Kein Schriff</notext>
  • </DEUTSCH>
  • </Locales>
  • fichier haut.php
  • <?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';
  • }
  • if (substr ($locale, 0, 2) === 'ge') {
  • return 'DEUTSCH';
  • }
  • 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" />
  • <input type="submit" value="DEUTSCH" 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'];
  • }
  • ?>
  • fichier fct.php
  • <?php
  • 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) {
  • return $noeud; // on renvoie ce texte
  • }
  • }
  • else {
  • $resultat = $doc ->xpath ($loc.'/notext'); // sinon on va chercher le message d'erreur
  • foreach ($resultat as $noeud) {
  • return $noeud;
  • }
  • }
  • }
  • ?>
  • fichier index.php
  • <?php
  • require_once ('haut.php');
  • require_once ('fct.php');
  • ?>
  • <div id="msg"> <!-- bloc d'affichage. Son id a la même valeur que l'élément contenant le texte à afficher -->
  • <?php
  • // voila un block ou l'on a un texte traduit dans plusieurs langues. On appelle la fonction qui va déterminer la langue et afficher la bonne traduction
  • echo findLocale ($_SESSION['locale'], 'msg');
  • ?>
  • </div>
  • <div id="erreur">
  • <?php
  • echo findLocale ($_SESSION['locale'], 'erreur'); // bloc erreur, ce bloc ne correspond à aucun texte dans le fichier xml de localisation
  • ?>
  • </div>
Fichier xml : locales.xml

<?xml version="1.0" encoding="iso-8859-1"?>
<Locales>
	<ENGLISH>
		<msg>Hello world</msg>
		<notext>No text available</notext>
	</ENGLISH>
	<FRANCAIS>
		<msg>Bonjour le monde</msg>
		<notext>Pas de texte disponible</notext>
	</FRANCAIS>
	<DEUTSCH>
		<msg>Hallo Welt</msg>
		<notext>Kein Schriff</notext>
	</DEUTSCH>
</Locales>


fichier haut.php

<?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';
    }
    if (substr ($locale, 0, 2) === 'ge') {
      return 'DEUTSCH';
    }
    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" />
<input type="submit" value="DEUTSCH" 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']; 
}
?>


fichier fct.php

<?php
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) {
      return $noeud; // on renvoie ce texte
    }
  }
  else {
    $resultat = $doc ->xpath ($loc.'/notext'); // sinon on va chercher le message d'erreur
    foreach ($resultat as $noeud) {
      return $noeud;
    }
  }
}
?>




fichier index.php

<?php
require_once ('haut.php');
require_once ('fct.php');
?>

<div id="msg"> <!-- bloc d'affichage. Son id a la même valeur que l'élément contenant le texte à afficher -->
<?php
// voila un block ou l'on a un texte traduit dans plusieurs langues. On appelle la fonction qui va déterminer la langue et afficher la bonne traduction
echo findLocale ($_SESSION['locale'], 'msg');
?>
</div>

<div id="erreur">
<?php
echo findLocale ($_SESSION['locale'], 'erreur'); // bloc erreur, ce bloc ne correspond à aucun texte dans le fichier xml de localisation
?>
</div>



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

31 août 2005 15:05:47 :
Petite correction
31 août 2005 15:21:25 :
correction de la correction précédente ;-)
31 août 2005 15:42:31 :
Rajout d'un message d'erreur si on ne trouve pas de noeud. Modif de Jojo aussi :-)
01 septembre 2005 16:22:38 :
Modification de l'assignation de la variable de sessions 'locale'
02 septembre 2005 11:25:42 :
Rajout d'une fonctionnalité : on teste la localisation du navigateur. Si celui-ci est dans une des langues traduite, le site passe automatiquement dans cette langue. On peut néanmoins toujours changer la langue en cours de route.
02 septembre 2005 12:35:43 :
Re-modification après m'être rendu compte de m bêtise ;-) Utilisation de HTTP_USER_AGENT pour tenter de déterminer la langue utilisée sur le système client. Le succès n'est pas garanti (sur IE ça ne fonctionne pas, sur Firefox, la langue est bien précisée dans cette variable). En cas d'échec, on revient à la langue par défaut.
05 septembre 2005 11:54:47 :
Modification pour la langue préférentielle du navigateur.

 Sources du même auteur

Source avec Zip ASTUCES/HACK PHP
SQUELETTE DE GESTION DES DROITS
[PHP 5.1] CLASS STRING : NOUVEL EXEMPLE SUR LA SPL
Source avec Zip Source avec une capture [PHP 5.1] PHOTOPHOP (PHPDRAW 2)
Source avec Zip Source avec une capture [PHP5.1] O-LOC : CLASSE ET BACKOFFICE D'INTERNATIONALISATION

 Sources de la même categorie

Source avec une capture PAGINATION EN PHP par Orangina
Source avec Zip POO - DEBUGGER par DiGhan
Source avec Zip CRAWLER DE SITE EN PHP par Mcjo
DÉCOUPAGE D'UN TEXTE EN FONCTION DES SAUTS DE LIGNES par biloubil
RÉCUPÉRER LE CHEMIN RELATIF D'UN OBJET PAR RAPPORT À LA RACI... par FredPsy

 Sources en rapport avec celle ci

Source avec Zip AJOUT D'UN RENDEZ-VOUS DANS UN CALENDRIER EXCHANGE 2003 par SachaWolf
Source avec Zip CLASSE DATETIME AVEC TRADUCTION par 1030
Source avec Zip Source avec une capture GRACENATUR V02 - CDMS: CONTAIN AND DESIGN MANAGMENT SYSTEM par sajaris
Source avec Zip UN PETIT SITE MULTILANGUE par medbabs
UNE GESTION MULTILINGUE COMPLETE par scriptino

Commentaires et avis

Commentaire de JoJo738 le 31/08/2005 15:00:53

Lu malalam,
pas mal sauf ... regarde :

function findLocale ($block, $loc='') {
  if(empty($loc))  {
    $loc = $_SESSION['locale'];
  }  else  {
    $loc = $loc;
  }
  $doc = simplexml_load_file ('locales.xml');
  $resultat = $doc ->xpath ($loc.'/'.$block);
  while (list ( , $noeud) = each ($resultat)) {
   return $noeud;
  }
}

echo findLocale ('msg', 'GERMAN');
echo findLocale ('msg', $_SESSION['locale']); // Francais


Non ?

Commentaire de malalam le 31/08/2005 15:04:21 administrateur CS

$loc n'est jamais vide puisque je l'initialise à la session.

Par contre, faudrait faire un test et un message par defaut des fois qu'on ne trouve pas le noeud dans le fichier xml.
Ensuite, mon while list est inutile :

<?php
function findLocale ($loc, $block) { // 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
  $doc = simplexml_load_file ('locales.xml'); // on charge le fichier de localisation
  $resultat = $doc ->xpath ($loc.'/'.$block); // on va chercher le noeud correct
  return $resultat[0]; // on renvoie le texte traduit
}
?>

Merci sinon :-)

ca va Jojo ?

Commentaire de JoJo738 le 31/08/2005 15:14:29

Re, oué tres bien ^^
Alors je modifie (je sais pas pkoi j'ai utilisé empty() ... :s)

function findLocale ($block, $loc='') {
  if($loc == '')  {
    $loc = $_SESSION['locale'];
  }  else  {
    $loc = $loc;
  }
  $doc = simplexml_load_file ('locales.xml');
  $resultat = $doc ->xpath ($loc.'/'.$block);
  return $resultat[0];
}

echo findLocale ('msg', 'GERMAN');
echo findLocale ('msg'); // Langue par default


Et comme ca ?

Je t'MSN ^^

Commentaire de JoJo738 le 31/08/2005 15:22:54

Oups,
  else  {
    $loc = $loc;
  }
est inutile :D


Rho ... le flood ^^

Commentaire de malalam le 31/08/2005 15:25:35 administrateur CS

Non, ça marche pas en fait lol j'ai re-corrigé ;-)

Pourquoi tu veux absolument tester $loc ?

J'essaye d'inclure un message par défaut maintenant...mais je dois faire une connerie lol.

Commentaire de JoJo738 le 31/08/2005 15:29:58

Bah le je teste car :
- Si $loc est vide on lui met $_SESSION['locale'];
- Sinon on met la valeur demandé par l'utilisateur ^^

Commentaire de malalam le 31/08/2005 15:34:43 administrateur CS

Oui en effet tu as raison :-)
je fais un update de toutes façons pour le message d'erreur, je rajoute ca aussi !

Commentaire de JoJo738 le 31/08/2005 15:51:39

MDR !!!!!!!!!
Inverse ($loc = '', $block = 'notext') devient ($block = 'notext', $loc = '')

Comme ca on n'est pas obligé de demander la fonction :
function($_SESSION['locale'], 'msg');
mais
function('msg'[, langue]);

Commentaire de malalam le 31/08/2005 16:03:32 administrateur CS

nan, je veux qu'on l'appelle avec la langue...lol. (g mes raisons ;-) ).
Donc non. Pour au'on puisse éventuellement ne paqs utiliser la variable de session.

Commentaire de JoJo738 le 31/08/2005 16:09:20

lol

Bah, si j'ai un site et que j'ai pas envi de retaper 3600 fois le $_SESSION['locale'];
Donc findLocale('mon message à tratuire dans la langue par default');

Et sinon je lui demande une langue :
Donc findLocale('mon message à tratuire dans la langue par default', 'GERMAN');

Et voila ^^ Non ?

Commentaire de malalam le 31/08/2005 16:30:54 administrateur CS

ben tu le passes pas, tu appelles avec
echo findLocales ('', 'bloc');
lol

Commentaire de JoJo738 le 31/08/2005 16:56:14

Oué, mais bon ... ma soluce est plus esthétique  ^^

Commentaire de malalam le 31/08/2005 17:53:37 administrateur CS

Vi suis d'accord lol; en fait c'est juste que ça m'oblige à réécrire les 2 appels et que j'ai la flemme. Puis j'ai la flemme de faire un autre update là lol.

Commentaire de JoJo738 le 01/09/2005 01:52:55

Rhooo !!!
Regarde ton formulaire ^^

<form>
<p>
  Il faut un balise BLOCK ! ^^
</p>
</form>



Et puis :
<div id="msg"></div> <!-- bloc d'affichage. Son id a la même valeur que l'élément contenant le texte à afficher -->

A quoi ca te sert ? A part changer dinamiquement le contenu ?

Commentaire de malalam le 01/09/2005 09:03:21 administrateur CS

Pour la mise en age, c'est pas le but de la source. Chacun arrangera le formulaire comme il l'entend, avec des images, des css, un fieldset, des label etc...ou un <p>

pour l'id, ben heu...à changer dynamiquement le contenu justement lol. Tu sais que le div avec pour id "msg" (un id étant unique) prendra pour innerhtml la valeur de l'élément du xml ayant pour nom son id. Ca permet de simplifier la tâche. Si mon div a pour id 123, comment je sais que je dois afficher le texte de l'élément xml <msg> ?

Commentaire de FhX le 01/09/2005 13:37:35

"# if ($_POST['langue'] === 'francais') {
#     $_SESSION['locale'] = 'FRANCAIS';
#   }
#   if ($_POST['langue'] === 'anglais') {
#     $_SESSION['locale'] = 'ENGLISH';
#   }
#   if ($_POST['langue'] === 'allemand') {
#     $_SESSION['locale'] = 'GERMAN';"

$_SESSION['local'] = strtoupper($_POST['langue']);
// Ce qui implique que tu dois renommer allemand en GERMAN ou inversement (pareil pour anglais).
C'est plus jouli je trouve :)

Commentaire de FhX le 01/09/2005 13:39:31

Ou si tu y tiens vraiment... fait un switch() :)

Commentaire de malalam le 01/09/2005 16:15:25 administrateur CS

Je déteste les switch ;-)
Pour le reste, tu as raison. Je pourrais utiliser la même valeur pour mon post, ma variable de session et donc mon fichier xml.
La raison pour laquelle j'ai écrit ça comme ça (il y en a une, si si, lol), c'est pour bien montrer les différentes langues, et la philosophie utilisée. Mais bon...les langues sont déjà écrites explicitement dans le formulaire, donc...ce n'était pas très utile.
Bref, j'avalise ta remarque :-) Je ferai ma modif.

Commentaire de malalam le 01/09/2005 16:23:20 administrateur CS

Voilà :-)

Commentaire de JoJo738 le 01/09/2005 17:09:28

Et si tu verifie que le neud existe ? Et comme ca si je mets espagnol et qu'il existe pas on mets par default ^^
if($doc->$langue)  {
  
}  else  {
  
}

Commentaire de malalam le 02/09/2005 09:21:38 administrateur CS

Vous faites chier hein !!! ;-)

Ok ok, c'est une bonne idée. je le ferai :-)

Commentaire de phpiste le 02/09/2005 09:24:58

Salut ;)

Excusez-moi de vous déranger dans votre dial ;op
J'aurais juste deux petites requêtes pour améliorer encore ce script des plus utiles :
* Q1 : pourrait-on faire un detect automatique de la langue utilisée par le browser et dans ce cas là afficher le site directement dans cette langue ? (en plus de garder la sélection mano comme on voit sur la plupart des sites commerciaux).
* Q2 : pour un site assez conséquent (au-delà du simple formulaire avec mettons un champ : "Bonjour / Welcome", "Nom / Name", "Prénom / Formane"), ne serait-il pas finalement assez lourd de gérer qu'un seul et même XML ? Ce fichier risque d'être assez long si on devait imaginer bcp de blocs de texte dans différentes langues. La charge du parse serait incombée au serveur ? Qu'en serait-il des perf d'affichage, etc ?

Merci de vos réponses, ce script me semble très intéressant. Je le surveille de près ;)

Bonne continuation.

Commentaire de malalam le 02/09/2005 10:55:40 administrateur CS

hello phpiste :
1 : heu...je ne sais pas. Je vais voir. je pense que c'est possible en passant par setlocales mais je ne suis pas sûr...ou voir les variables $_SERVER. Faut voir. Je regarde ça dans la journée, c'est effectivement une bonne idée.
2 : si, en cas de traduction lourde, la solution n'est pas forcément intéressante et il faut passer à autre chose. Une solution en gardant le xml (parce que le xml n'est pas l'unique solution hein, il y en a plein) serait d'utiliser plusieurs fichiers xml, 1 pour chaque langue par exemple (au passage, prénom, c'est first name, pas forname ;-) tu confonds avec l'allemand là : Vorname). Autre solution, un fichier locales par module de son site (par page, quoi). Ou un mix des deux : 1 fichier xml par module ET par langue. Ainsi on se retrouver avec tout un tas de petits fichiers xml simples à parser. En utilisant des noms pratiques, on peut toujours gérer ça avec uniquement une petite fonction de parsing. Par exemple : moduleName_ENGLISH.xml etc...

Commentaire de malalam le 02/09/2005 11:31:22 administrateur CS

Voilà c'est fait mais j'ai oublié de commenté. ce sera commenté au prochain update.
Bref j'ai ajouté une fonctio checkLocale () qui va vérifier, grâce à la fonction setlocale () quelle est l langue utilisée par le...serveur. Merde lol. Je viens de m'en rendre compte en écrivant...j'aurais mieux fait de commenté en route.
Ok, phpiste, le getbrowser () ne fonctionne pas à tous les coups selon le serveur. La variable $_SERVER['USER_HTTP_AGENT'] ne contient pas toujours la localisation (ça marche avec mon firefox, pas avec mon IE). Donc je ne sais pas, je vais réflêchir à ça encore...
En attendant là ça fonctionne mais heu, en fonction de la langue du serveur lol, désolé. Disons que c'est toujours mieux que rien.

Commentaire de malalam le 02/09/2005 12:36:42 administrateur CS

J'ai re-modifié, j'utilise maintenant HTTP_USER_AGENT. Si cela échoue, on retourne à la langue par défaut.

Commentaire de phpiste le 02/09/2005 12:45:15

Sympa malalam (-ain ? :op), on te fait confiance pour la suite. Effectivement à la place du XML on aurait pu mettre aussi du php et un include avec des variables, classiquement utilisé dans les forums. Un petit lien : http://www.infos-du-net.com/forum/70110-21-traduire-site-plusieurs-langues
(pour ceux qui voudraient une méthode alternative : lire le commentaire de "Rennou")
Bref, j'avais mis un 8 à ta source, j'aurais dû mettre 9 compte tenu de ta bonne volonté et ton zèle ;)

(bien vu pour le "Vorname", les langues ça n'a jamais été mon "vor" lololol)

Bonne courage pour la suite, et merci.

Commentaire de phpiste le 02/09/2005 12:53:52

Ah oui, j'ai trouvé ça aussi : http://www.commentcamarche.net/faq/sujet-876-%5BPHP%5D-Rediriger-en-fonction-de-la-langue-du-visiteur

et : http://www.phpfrance.com/forums/voir_reponse-54763.php&sid=24c7047c13e1a216568fe4be1aaa13a9

Ca peut être utile ;)

Commentaire de phpiste le 02/09/2005 13:08:15

(zut on peut même pas s'éditer...)

J'oubliais ça également : http://www.webrankinfo.com/forums/viewtopic_21021.htm
Il semble pas mal de prendre en compte également le référencement multilingue dans les moteurs de recherche, j'avoue que ça me dépasse un peu :op

À étudier de près à mon avis ;)

Commentaire de JoJo738 le 03/09/2005 17:49:07

[mode flood]
Pas mal le Mal à la main ^^ mdr !
[/mode flood]

Commentaire de malalam le 05/09/2005 11:42:39 administrateur CS

[mode flood]
Pas mal le Mal à la main ^^ mdr !
[/mode flood]

=> voué, c'est la 1ère fois qu'on me la fait d'ailleurs, celle-là ;-)

phpiste => en fait jen'avais pas utilisé accept_language parce je ne savais pas si la langue préférentielle était écrite en anglais, ou dans la langue en question...
J'ai modifié le script avec cette variable, en assumant que la langue serait écrite en anglais. En espèrant que ça fonctionne ;-) (à tester).

Commentaire de FhX le 07/09/2005 21:40:52

"La variable $_SERVER['USER_HTTP_AGENT'] ne contient pas toujours la localisation"
Pour ca, utilise la localisation via IP. C'est un peu plus long, mais tout au plus efficace si y'a rien dans la variable global $_SERVER.

C'est le IP to Country un truc comme ca... :)

Commentaire de malalam le 08/09/2005 09:01:42 administrateur CS

Heu oui mais cette fonction n'existe pas. Il existe des bases de données sur le net auxquelles on peut accéder, pour faire ça, mais aucune fonction dédiée en php.
Je n'ai pas très envie de pondre mon propre fichier, ce ne serait pas le but du source. Mais bon, si quelqu'un tient à ce que la localisation soit parfaitement exacte, il pondra le code ;-) Là, je le sais, ce n'est pas parfait; mais si la localisation échoue, on passe à la langue par défaut (le français, ici).
Je mets même l'url d'une bonne base pour ça : http://www.ip-to-country.com/

Commentaire de LaTatadu91 le 03/01/2006 09:52:47

Juste pr savoir
deja bonne année a toi....
pourquoi ca ne marche que avec PHP5?
avec le 4 ca ne passe pas?

Pleins de bonnes choses pr 2006

Commentaire de LaTatadu91 le 03/01/2006 09:58:36

En fait ma question serait plutot:
ca ne me derange pas de passer au 5 mais est ce que tout ce que j'ai developper sur le 4 passera encore ?

Commentaire de malalam le 03/01/2006 10:02:25 administrateur CS

Hello Latata,

Bonne anée à toi aussi :-) Merci!

Ca pourrait marcher avec PHP4, mais j'ai utilisé, pour cet exemple, la librairie SimpleXML qui n'est disponible que sous PHP5.
La partie à remplacer serait le fichier 'fct.php', il faudrait utiliser le parser XML (http://fr2.php.net/manual/fr/ref.xml.php) qui est dédié au parsing XML (DOMXML, lui, permet de créer des documents XML).

Commentaire de malalam le 03/01/2006 10:03:06 administrateur CS

Oui, PHP 5 est rétro compatible avec PHP4. Tu ne devrais pas rencontrer de problème majeur.

Commentaire de LaTatadu91 le 03/01/2006 10:16:23

Haaaaaaaaaaaaaaaaaaaaaa
voila ce que je voulais entendre!!!!

bah d'une part je vais passer sous PHP5
et je vais surement utiliser ton script ;)

Il me manque plus qu'a savoir parler chinois pr faire mon site trilingue :D
Merci!

Commentaire de LaTatadu91 le 03/01/2006 11:27:42

Re,
j'ai encore une petite question:
apparement PHP5 n'est pas dispo avec easyphp?
du moins pas encore...
il faut faire comment alors ?si je veux travailler en local avec le 5?

Commentaire de malalam le 03/01/2006 11:30:13 administrateur CS

Perso, j'utilise WAMP :
http://www.wampserver.com/

C'est comme EasyPHP, mais en mieux à mon sens (ça reste mon avis hein).

Commentaire de LaTatadu91 le 03/01/2006 11:40:41

heu...
je veux bien te croire
mais tu peux essayer de me convaincre avec des arguments?

Commentaire de malalam le 03/01/2006 11:45:58 administrateur CS

Lol...
C'est comme EasyPHP, mais il intègre PHP5, mysqli, Mysql 5, et il me semble plus stable (en tous cas, plus que la dernière version de EasyPHP que j'ai utilisé, la 1.7).
Et puis il dispose d'addons dont certain sont plutôt sympas.
Enfin, il est au moins aussi simple d'utilisation qu'EasyPHP :-)

Convaincu...?

Commentaire de LaTatadu91 le 03/01/2006 11:54:02

ouais convaincu mais en fait non
je suis un vrai francais moi
j'ai peur du changement LOL
comment ca se passe pr mes bases actuelles MySQL etc...

non apriori j'ai trouver un moyen d'utiliser PHP5 avec easyphp en faisant des modifs dans un fichier config.

Commentaire de malalam le 03/01/2006 13:59:32 administrateur CS

Tes bases n'auraient pas bougé, il te suffisait de sauvegarder le répertoire des données, et le re-copier dans le nouveau.
mais comme tu veux ;-)

Commentaire de LaTatadu91 le 03/01/2006 15:41:18

re...
Bon je suis un peu vex j'ai réussi a installer PHP5 avec easyphp1.7
et mon site ne marche plus
des le debut je tombe sur une erreur:
Fatal error: Call to undefined function mysql_pconnect() in c:\program files\easyphp1-7\www\connexion.php on line 7

a croire que php5 et php4 ne sont pas retrocompatibles???

arghhhhhhhhhhhhhhhh
je craque car j'ai besoin des deux le 5 pr ton exemple de XML
et le 4 pr le taf que j'ai fait jusque la....

t'as une idée?

Commentaire de LaTatadu91 le 03/01/2006 15:42:25

cool j'ai refait mon texte et les deux se sont affichés LOL

Commentaire de malalam le 03/01/2006 15:44:02 administrateur CS

Hmmm, lol...
mysql_pconnect() existe toujours en php5.
Edite ton fichier php.ini.
Cherche cette ligfne :
extension=php_mysql.dll

et vire le ; devant s'il y en a un, puis sauvegarde.
S'il n'y a pas de ; c'est que ton installation de php5 a été foireuse quelquepart...
Tu peux aussi faire un phpinfo(); pour voir ce qu'il y a d'installé et de non installé sur ton php.

Commentaire de malalam le 03/01/2006 15:45:56 administrateur CS

Ceci dit, j'évite les connexions persistantes généralement, moi.

Commentaire de LaTatadu91 le 03/01/2006 16:02:26

ouais on le trouve ou celui la
moi ds mon sous dossier php j'ai php.ini-dis etphp.ini-recommended???

je pense que l'install est bonne ca doit juste etre un probleme de version de mysql
peut etre ; car j'ai vérifier et oui la fonction mysqlconnect est connue sous php5.

Commentaire de malalam le 03/01/2006 16:06:17 administrateur CS

C'est dans le dossier 'apache'. Tu as php.ini tout court.

Commentaire de LaTatadu91 le 03/01/2006 16:26:25

ouais mais alors la truc bizarre cette ligne la n'y est meme pas
donc je l'ai rajouter
et ca ne change rien, de plus lorsque je lance easyphp il me mets pleins de message d'erreurs...

je craque !!!

Commentaire de LaTatadu91 le 03/01/2006 16:27:58

en gros il ne trouve plus les extensions php_gd2.dll
php_sockets.dll
php_zip.dll

je suis perdu

Commentaire de LaTatadu91 le 03/01/2006 16:35:26

ok a priori rien a voir avec mysql c'est juste que le path pr les extensions n'était plus correct

apparement ca marche mais au lancement de easyphp il me mets encore des messages bizarres
et ne trouve pas le php_zip qui pourtant est dans le bon dossier...
enfin je vais faire des tests mais vivement eaysphp v2
car la ca me parait risqué sinon je vais passer a wamp...

Commentaire de malalam le 03/01/2006 16:36:04 administrateur CS

Tu bosses sous windows ?

Voici la liste de mes extensions, regarde si tu as cette liste dans ton php.ini.
Celles avec un ; devant sont les lignes commentées.Pour les charger, il suffit :
- d'enlever le ;
- de sauvegarder le php.ini
- de relancer le serveur Apache

;Windows Extensions
;Note that ODBC support is built in, so no dll is needed for it.
;
extension=php_mbstring.dll
;extension=php_bz2.dll
;extension=php_cpdf.dll
extension=php_curl.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_ldap.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
extension=php_mssql.dll
;extension=php_msql.dll
extension=php_mysql.dll
extension=php_mysqli.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
;extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_tidy.dll
;extension=php_xmlrpc.dll
;extension=php_xsl.dll
;extension=php_zip.dll
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
;extension=php_pdo_firebird.dll
;extension=php_pdo_mssql.dll
;extension=php_pdo_mysql.dll
;extension=php_pdo_oci.dll
;extension=php_pdo_oci8.dll
;extension=php_pdo_odbc.dll
;extension=php_pdo_pgsql.dll
extension=php_sqlite.dll

Commentaire de LaTatadu91 le 03/01/2006 17:18:43

;PHPExt
;extension=php_bz2.dll
;extension=php_cpdf.dll
;extension=php_crack.dll
;extension=php_curl.dll
;extension=php_db.dll
;extension=php_dba.dll
;extension=php_dbase.dll
;extension=php_dbx.dll
;extension=php_domxml.dll
;extension=php_exif.dll
;extension=php_fdf.dll
;extension=php_filepro.dll
extension=php_gd2.dll
;extension=php_gettext.dll
;extension=php_hyperwave.dll
;extension=php_iconv.dll
;extension=php_ifx.dll
;extension=php_iisfunc.dll
;extension=php_imap.dll
;extension=php_interbase.dll
;extension=php_java.dll
;extension=php_ldap.dll
;extension=php_mbstring.dll
;extension=php_mcrypt.dll
;extension=php_mhash.dll
;extension=php_mime_magic.dll
;extension=php_ming.dll
;extension=php_msql.dll
;extension=php_mssql.dll
extension=php_mysql.dll
;extension=php_oci8.dll
;extension=php_openssl.dll
;extension=php_oracle.dll
;extension=php_pdf.dll
;extension=php_pgsql.dll
;extension=php_printer.dll
;extension=php_shmop.dll
;extension=php_snmp.dll
extension=php_sockets.dll
;extension=php_sybase_ct.dll
;extension=php_w32api.dll
;extension=php_xmlrpc.dll
;extension=php_xslt.dll
;extension=php_yaz.dll
extension=php_zip.dll
;/PHPExt

ca c'est ma liste
faut que je vérifie encore et fasse des tests mais je crois que ca marche
a peu pres ya juste un pb avec une page qui utilise la librairie JpGraph
peut etre faut que j'upgrade jpgraph a une version fonctionnant sous PHP5

Commentaire de LaTatadu91 le 03/01/2006 17:22:47

je crois bien que c'est ca le pb
je dois tracer
je fais des tests demain
merci pour tout
je t'm  :D

Commentaire de LaTatadu91 le 04/01/2006 10:32:00

c'est cool ca marche

je peux enfin me pencher sur le vrai probleme a savoir:la traduction de mon site

j'ai tester ton script et il marche bien
ce que je comprends pas c'est quand tu fais un div id=erreur
et que ca affiche notext? l'id du div ne devrait pas etre notext?
et comment tu fais  pour qu'il marche sur plusieurs pages ?

encore merci pr hier en tt cas!!!

Commentaire de malalam le 04/01/2006 10:55:45 administrateur CS

- notext et erreur : en fait, l'id du div dans ce cas n'est pas important. J'ai mis erreur pour indiquer qu'on est dans un cas d'erreur : l'id du div n'est pas présent dans le fichier XML. Donc, on renvoi un texte par défaut, celui du noeud 'notext'. On aurait pu mettre n'importe quel id.

- plusieurs pages : dans haut.php tu as le petit formulaire, et l'initialisation de la session. Dans fct.php, tu as la fonction de recherche du fichier xml. Là je n'ai mis qu'un index.php. Mais n'importe quelle page incluant ces 2 'fonctionnalités' marchera.
Maintenant, il y a un choix à faire : 1 seul fichier XML global pour tout ton site (ok pour un petit site), c'est l'exemple ici. Ou un fichier XML par page/module de ton site (l'unité de base est à choisir). Cette dernière solution est préférable, à mon sens. Ce que je ferais moi : chaque 'module' de mon site a un nom : accueilMod par exemple. Dans un dossier 'xmlLocales', j'ai notamment le fichier accueilMod.xml, qui correspond à la localisation pour ce module (le module pouvant courir sur plusieurs pages). Dans ma fonction de recherche, je passe le nom du module en plus du reste. ainsi, la fonction ira parser le bon fichier XML. Ce module, tu peux le passer en dur, ou le passer en session, etc...il y a tout un tas de possibilités.

Commentaire de LaTatadu91 le 04/01/2006 10:56:13

c'est bon suis bete notext ca marche qd ya pas de texte LOL
j'ai un peu honte sur le coup ...

par contre si j'utilise un systeme avec des drapeaux
toi tes includes,tu dis de les faire ds chaque page ce qui veut dire
que mes drapeuax seront sur chaque page
moi je les voudrais que lors de la premiere page et que ca se relaye sur tout le site!
c'est possible?

Commentaire de LaTatadu91 le 04/01/2006 11:11:02

moi je pense pouvoir utiliser un fichier simple
car mon site ne contient pas de texte
ce serait juste pr les menus quelques titres
et quelques lignes parci parla du genre pour
des messages d'erreurs etc....

je pense que un fichier simple suffira

par contre comme je disais plus haut si j'inclues a chaque fois les deux .php
j'aurais sur chaque page les boutons pr choisir les langues?
je prefererais sur la premiere...

Commentaire de malalam le 04/01/2006 11:21:32 administrateur CS

Il suffit de n'utiliser haut.php quand sur ta 1ère page. Par contre, initialise ta session sur toutes tes pages (enfin, inclus une page l'initialisant). Je ne sais pas comment est construit ton site donc difficile de bien t'aider. Disons que la localisation est de toutes façons relayée sur tout le site via la session.

Commentaire de LaTatadu91 le 04/01/2006 11:38:02

ouais je vais faire des tests
deja faut que je trouve des petits drapeaux sur le net

jte fais un bisou et si j'ai des soucis jte recontacte

MERCI
VIVE LA COMMUNAUTE!!!!

Commentaire de malalam le 04/01/2006 11:46:19 administrateur CS

Bon courage :-)

Commentaire de LaTatadu91 le 04/01/2006 11:58:10

En fait je viens de m'apercevoir
que si j'utilise des images
ca change tout le principe du :
<?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'];
}
?>

faut faire comment? genre un truc onclick???

Commentaire de malalam le 04/01/2006 12:36:36 administrateur CS

Par exemple :

<img src="anglais.png" alt="Anglais" onclick="setLoc ('ENGLISH')"/>
<img src="francais.png" alt="Fraçais" onclick="setLoc ('FRANCAIS')"/>
<img src="allemand.png" alt="Allemand" onclick="setLoc ('DEUTSCH')"/>

<!-- Formulaire pour le choix des langues -->
<form method="post" action="" id="locales">
<input type="hidden" name="ENGLISH" value="0" />
<input type="hidden" name="FRANCAIS" value="0" />
<input type="hidden" name="DEUTSCH" value="0" />
</form>

<script type="text/javascript">
function setLoc (nom) {
f = document.getElementById('locales');
f.elements[nom].value = 1;
f.submit ();
}
</script>
<?php
if (!empty ($_POST)) {
    $_SESSION['locale'] = array_search (1, $_POST);
}
?>

Commentaire de LaTatadu91 le 04/01/2006 13:29:27

Super
je vais tester de suite
en plus ca me montre un exmeple concret des type hidden car j'avoue que je ne comprennais pas leur utilisations...
t'es vraiment un daron!!!

Commentaire de malalam le 04/01/2006 13:33:15 administrateur CS

Tu me donnes du taf avec tes post doublés, triplés etc... ;-)

heu...c'est quoi un daron...? (c'est que moi, le langage des djeun's, à mon âge avancé, j'y comprends plus grand chose !)

Commentaire de LaTatadu91 le 04/01/2006 13:41:06

LOL
écoute désolé pr les double POST
parfois ca passe pas et je me retrouve sur une page qui me dit probleme avec un lien pr revenir page précédente....
en meme temps t'a juste a cliquer sur le bouton rouge?

un daron c'est a l'origine un papa
etd e maniere detourné ca veut dire un gars qui maitrise...

Commentaire de malalam le 04/01/2006 13:51:57 administrateur CS

Ok merci pour ma culture générale ;-)

Ouais, pour le bouton rouge, c'est vrai...mais je suis un flemmard.

Et oui, ça arrive. mais généralement, suffit de revenir en effet, sans raffraichir la page, le post est 'posté'généralement.
Mais en même temps, je m'en fous hein lol, c'était juste pour le plaisir de râler ;-)

Commentaire de LaTatadu91 le 04/01/2006 14:27:22

ca a l'air de marcher sur la petite page perso que je me suis faite

je vais essayer de faire mon xml sur mon site entier
jte remercie vivement

a bientot tres certainement ;)

Commentaire de LaTatadu91 le 04/01/2006 14:48:44

j'ai mis un petit dix tu le mérites bien....

Commentaire de malalam le 04/01/2006 15:02:39 administrateur CS

Lol c'est très gentil, merci :-)(fais gaffe, je PEUX vérifier si c'est vrai, hein... ;-) )

Commentaire de LaTatadu91 le 04/01/2006 16:01:32

et bien c'est vrai

heu...par contre j'ai comme un soucis sur mon site
je fais le test avec juste le titre principal de la premiere page et le sous titre

ca marche ...........presque!
en fait le changement s'effectue si je clique deux fois sur mon drapeau(pas double clik)
vraiment deux clicks distincts!?!

au deuxiéme la page se recharge avec la traduction.
tu vois pourquoi? peut etre tu veux voir mon code?

Commentaire de malalam le 04/01/2006 16:28:26 administrateur CS

Oui je le veux :-)

Commentaire de LaTatadu91 le 04/01/2006 16:39:32

Bon ca risque d'etre un peu le bordel
tes fichiers haut et fct sont les memes
ca marche que si on clique en deux fois ....

xml:
<?xml version="1.0" encoding="iso-8859-1"?>
<Locales>
<ENGLISH>
<titre1>HMI of the system HOT</titre1>
<sstitre1>add user</sstitre1>
<notext>No text available</notext>
</ENGLISH>
<FRANCAIS>
<titre1>Interface graphique du systeme HOT</titre1>
<sstitre1>ajouter un utilisateur</sstitre1>
<notext>Pas de texte disponible</notext>
</FRANCAIS>
<CHINESE>
<titre1>ONGBAKUYA hiuty HOT</titre1>
<sstitre1>alligato</sstitre1>
<notext>Ching Chong Chang</notext>
</CHINESE>
</Locales>

index.php:
<?php
require_once('connexion.php');
require_once('connect_mysql.php');
require_once('cod_para.php');
require_once ('haut.php');
require_once ('fct.php');?>
<?php
//session_start(); // On relaye la session
if (session_is_registered("authentification")){ // vérification sur la session authentification (la session est elle enregistrée ?)
// ici les éventuelles actions en cas de réussite de la connexion
}
else {
header("Location:index_00.php?erreur=intru"); // redirection en cas d'echec
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<head>
<link rel="stylesheet" type="text/css" href="index_style.css" />
<script type="text/javascript">
function montre(id) {
var d = document.getElementById(id);
for (var i = 0; i<=10; i++)
{
if (document.getElementById('smenu'+i))
{document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}
/***************************************************************************************/
function affiche_alarm() {
var xhr_object = null;

if(window.XMLHttpRequest) // Firefox
   xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
   xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
   return;
}

xhr_object.open("POST", "last_alarm.php", true);

xhr_object.onreadystatechange = function() {
   if(xhr_object.readyState == 4)
document.getElementById("last_alarm").innerHTML ="Last Alarm :"+xhr_object.responseText;
//alert(xhr_object.responseText);
}  
xhr_object.send(null);
}
affiche_alarm();
setInterval("affiche_alarm()",3000);
/************************************************************************************************/
document.onkeypress = function (evt) {
  var r = '';
  if (document.all) {
    r += event.ctrlKey ? 'Ctrl-' : '';
    r += event.altKey ? 'Alt-' : '';
    r += event.shiftKey ? 'Shift-' : '';
    r += event.keyCode;
  }
  else if (document.getElementById) {
    r += evt.ctrlKey ? 'Ctrl-' : '';
    r += evt.altKey ? 'Alt-' : '';
    r += evt.shiftKey ? 'Shift-' : '';
    r += evt.charCode;
  }
  else if (document.layers) {
    r += evt.modifiers & Event.CONTROL_MASK ? 'Ctrl-' : '';
    r += evt.modifiers & Event.ALT_MASK ? 'Alt-' : '';
    r += evt.modifiers & Event.SHIFT_MASK ? 'Shift-' : '';
    r += evt.which;
  }
// alert(r);
   if (r == 'Ctrl-Shift-65'){ // c'est 'A' sous Firefox
  document.location.href="http://localhost/index.php?page=29";//A pour liste alarm
  }
  if (r == 'Ctrl-Shift-77'){ // c'est 'M' sous Firefox
  document.location.href="http://localhost/index.php?page=0";//M pour main
  }
   if (r == 'Ctrl-Shift-84'){ // c'est 'T' sous Firefox
  document.location.href="http://localhost/index.php?page=1";//T pour type
  }
   if (r == 'Ctrl-Shift-83'){ // c'est 'S' sous Firefox
  document.location.href="http://localhost/index.php?page=5";//s pour simulation
  }
  if (r == 'Ctrl-Shift-71'){ // c'est 'G' sous Firefox
  document.location.href="http://localhost/index.php?page=3";//G pr thermal tuning
  }
  if (r == 'Ctrl-Shift-80'){ // c'est 'P' sous Firefox
  document.location.href="http://localhost/index.php?page=4";//P pour pacing
  }
   if (r == 'Ctrl-Shift-'){ // c'est '' sous Firefox
  document.location.href="http://localhost/index.php?page=5";// pr shift
  }
   if (r == 'Ctrl-Shift-68'){ // c'est 'D' sous Firefox
  document.location.href="http://localhost/index.php?page=6";//D pour diagramm thermique
  }
   if (r == 'Ctrl-Shift-87'){ // c'est '' sous Firefox
  document.location.href="http://localhost/index.php?page=7";// pour furnace view
  }
   if (r == 'Ctrl-Shift-73'){ // c'est 'I' sous Firefox
  document.location.href="http://localhost/index.php?page=11";//I pour setpoint tuning
  }
   if (r == 'Ctrl-Shift-69'){ // c'est 'E' sous Firefox
  document.location.href="http://localhost/index.php?page=12";//E pour delay tuning
  }
   if (r == 'Ctrl-Shift-76'){ // c'est 'L' sous Firefox
  document.location.href="http://localhost/index.php?page=16";//L pour delay declaration
  }
   if (r == 'Ctrl-Shift-79'){ // c'est 'O' sous Firefox
  document.location.href="http://localhost/index.php?page=19";//O pr optimzation parameters
  }
   if (r == 'Ctrl-Shift-66'){ // c'est 'B' sous Firefox
  document.location.href="http://localhost/index.php?page=22";//B pour fuzzy stable
  }
   if (r == 'Ctrl-Shift-78'){ // c'est 'N' sous Firefox
  document.location.href="http://localhost/index.php?page=23";//N pour fuzzy transient
  }
   if (r == 'Ctrl-Shift-85'){ // c'est 'U' sous Firefox
  document.location.href="http://localhost/index.php?page=25";//U pour fuzzy result
  }
   if (r == 'Ctrl-Shift-89'){ // c'est 'Y' sous Firefox
  document.location.href="http://localhost/index.php?page=24";//Y pour fuzzy offset
  }
   if (r == 'Ctrl-Shift-72'){ // c'est 'H' sous Firefox
  document.location.href="http://localhost/index.php?page=27";//H pr history
  }
   if (r == 'Ctrl-Shift-75'){ // c'est 'K' sous Firefox
  document.location.href="http://localhost/index.php?page=28";//mesures
  }
  return true;

}
</script>
</head>
<body>
<title>Stein-Heurtey Production</title>
<table class="entete" >
<td ><img src="logo_sh_petit.png" border=" 1px"  align="left"><img src="logo_sh_petit.png"  border=" 1px"  align="right">PRODUCTION</td>
   </table>
<div id="last_alarm"  ></div>
<div class="contenu">
<div id="menu">
<dl>
<dt onmouseover="javascript:montre('smenu0');"><u>M</u>ain</dt>
    <dd id="smenu0" onmouseover="javascript:montre('smenu0');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=0">Admin</a></li>
</ul>
</dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu1');">Config.</dt>
<dd id="smenu1" onmouseover="javascript:montre('smenu1');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=1"><u>T</u>ype</a></li>
<li><a href="?page=2">Shi<u>f</u>t tuning</a></li>
<li><a href="?page=3">Thermal tunin<u>g</u></a></li>
<li><a href="?page=4"><u>P</u>acing tuning</a></li>
<li><a href="?page=5"><u>S</u>imulation</a></li>
</ul>
</dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu2');">Track</dt>
    <dd id="smenu2" onmouseover="javascript:montre('smenu2');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=6"><u>D</u>iagram</a></li>
<li><a href="?page=7">Furnace vie<u>w</u></a></li>
<!--<li><a href="?page=8">Menu 3.3</a></li>
<li><a href="?page=9">Menu 3.4</a></li>
<li><a href="?page=10">Menu 3.5</a></li>-->
</ul>
            </dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu3');">Setpoints</dt>
<dd id="smenu3" onmouseover="javascript:montre('smenu3');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=11">Product<u>i</u>on</a></li>
<li><a href="?page=12">D<u>e</u>lays tuning</a></li>
</ul>
</dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu4');">Delays</dt>
<dd id="smenu4" onmouseover="javascript:montre('smenu4');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=16">Dec<u>l</u>aration</a></li>
</ul>
</dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu5');"><u>O</u>ptimization</dt>
    <dd id="smenu5" onmouseover="javascript:montre('smenu5');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=19">Parameters</a></li>
</ul>
</dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu6');">Fuzzy </dt>
    <dd id="smenu6" onmouseover="javascript:montre('smenu6');" onmouseout="javascript:montre('');">
<ul>
<li><?php if($_SESSION['privilege'] == "admin"){echo'<a href="?page=22">Sta<u>b</u>le</a>';}else{echo'Fuzzy stable';}?></li>
<li><?php if($_SESSION['privilege'] == "admin"){echo'<a href="?page=23">Tra<u>n</u>sient</a>';}else{echo'Fuzzy transient';}?></li>
<li><?php if($_SESSION['privilege'] == "admin"){echo'<a href="?page=24">Offset</a>';}else{echo'Fuzzy offset';}?></li>
<li><?php if($_SESSION['privilege'] == "admin"){echo'<a href="?page=25">Res<u>u</u>lts</a>';}else{echo'Fuzzy results';}?></li>
</ul>
</dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu7');">History</dt>
    <dd id="smenu7" onmouseover="javascript:montre('smenu7');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=26">Courbes</a></li>
<li><a href="?page=27"><u>H</u>istory</a></li>
<li><a href="?page=28">Measure</a></li>
</ul>
</dd>
</dl>
<dl>
<dt onmouseover="javascript:montre('smenu8');"><u>A</u>larms</dt>
    <dd id="smenu8" onmouseover="javascript:montre('smenu8');" onmouseout="javascript:montre('');">
<ul>
<li><a href="?page=29">Alarms list</a></li>
</ul>
</dd>
</dl>
</div>
<div class="centre">
<?php

    if (isset($_GET["page"])) $page = $_GET["page"];
    else $page = 0;
    switch ($page) {
        case 0 : echo '<p classe="centre" id="titre1"><h1><b><font color="red"><br /><br /><br /><br />';?>
<?php
echo findLocale ($_SESSION['locale'], 'titre1');
?>
</font></b></h1>
<?php if($_SESSION['privilege'] == "admin") echo'<div id="sstitre1"><h4><a href="admin.php"><font color="white" >';
echo findLocale ($_SESSION['locale'], 'sstitre1');?>
</font></a></h4></div></p>
<br /><br /><br /><p><h3>Choose your language :</h3>
<!-- Formulaire pour le choix des langues-->
<img src="drapeau_ang.gif" alt="English" onclick="setLoc ('ENGLISH')"/>
<img src="drapeau_fra.gif" alt="Français" onclick="setLoc ('FRANCAIS')"/>
<img src="drapeau_chi.gif" alt="Chinese" onclick="setLoc ('CHINESE')"/>
</p>
<!-- Formulaire pour le choix des langues -->
<form method="post" action="" id="locales">
<input type="hidden" name="ENGLISH" value="0" />
<input type="hidden" name="FRANCAIS" value="0" />
<input type="hidden" name="CHINESE" value="0" />
</form>
<script type="text/javascript">
function setLoc (nom) {
f = document.getElementById('locales');
f.elements[nom].value = 1;
f.submit ();
}
</script>
<?php
if (!empty ($_POST)) {
    $_SESSION['locale'] = array_search (1, $_POST);
}
break;
        case 1  :  include ("type.php");break;
        case 2  :  include("shift_tuning.php");break;
        case 3  :  include ("thermal_tuning.php"); break;
        case 4  :  include("pacing_tuning.php");break;
        case 5  :  include("simulation.php");break;
        case 6  :  include ("courbes_histo_2.php"); break;
        case 7  :  include("furnace_view0.php"); break;
        case 8  :  include("call_test_jpgraph.php");break;
        case 9  :  echo "en cours de construction";break;
        case 10 :  echo "en cours de construction";break;
        case 11 :  include ("spt_prod.php");break;
        case 12 :  include ("delays_tuning.php");break;
        case 13 :  echo "en cours de construction";break;
        case 14 :  echo "en cours de construction";break;
        case 15 :  echo "en cours de construction";break;
        case 16 :  include ("delay_declaration.php"); break;
        case 17 :  echo "en cours de construction";break;
        case 18 :  echo "en cours de construction";break;
        case 19 :  include("optim_param.php");break;
        case 20 :  include("pid_tuning.php");break;
        case 21 :  echo "en cours de construction";break;
        case 22 :  if($_SESSION['privilege'] == "admin")
{include("fuzzy_stable.php");}else echo"Sorry,you are not authorized to see this page";break;
case 23:   if($_SESSION['privilege'] == "admin")
{include("fuzzy_transient.php");}else echo"Sorry,you are not authorized to see this page";break;
        case 24 :  if($_SESSION['privilege'] == "admin")
{include("fuzzy_offset.php");}else echo"Sorry,you are not authorized to see this page";break;
        case 25 :  if($_SESSION['privilege'] == "admin")
{include("fuzzy_results.php");}else echo"Sorry,you are not authorized to see this page";break;
case 26 :  echo "en cours de construction";break;
        case 27 :  include ("history.php");break;
        case 28 :  include ("measure.php");break;
        case 29 :  include ("alarm.php");break;
        //case 30 :  include ("mesures_call.php");break;
//echo '<img src="mesures_courbe.php?sdate=', $_POST['sdate'], '&edate=', $_POST['date_end'],'&shour=', $_POST['hour_start'],'&ehour=', $_POST['hour_end'],'&smin=', $_POST['min_start'],'&emin=', $_POST['min_end'], '" />';break;

    }
?>
</div>
</div>
<!--<div class="pied"><h5>Copyright@X2theZ</h5></div>-->
</body>
</html>

Commentaire de malalam le 04/01/2006 16:50:45 administrateur CS

Je ne pige pas, pourquoi as-tu inclus haut.php alors que tu remets le formulaire et sa validation dans index.php ?
A la limite, vire haut.php.
et remonte en haut de ton index, apres le session_start(), ça :
if (!empty ($_POST)) {
    $_SESSION['locale'] = array_search (1, $_POST);
}

Commentaire de malalam le 04/01/2006 16:55:53 administrateur CS

Non je dis des conneries :-)

Tu dois remplacer, dans haut.php, cette partie :
# <!-- Formulaire pour le choix des langues -->
# <form method="post" action="">
# <input type="submit" value="ENGLISH" name="langue" />
# <input type="submit" value="FRANCAIS" name="langue" />
# <input type="submit" value="DEUTSCH" 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'];
# }
# ?>

par ce que je t'ai filé, ok ? SANS tes images. Tu laisses tes images où elles sont, tu laisses aussi
le js.
Tu laisses donc l'inclusion de haut.php.
Il faut juste remplacer le formulaire par le formulaire en hidden, et le test sur l'existence du post par celui que je t'ai filé.
A priori...ça devrait marcher...

Commentaire de LaTatadu91 le 04/01/2006 16:57:44

excuse moi en fait haut je l'ai changer:
<?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
    }
}
?>

en fait je l'ai couper en deux....
pr avoir le formulaire sur ma page principale :index
c'est pas bon?

Commentaire de LaTatadu91 le 04/01/2006 17:04:03

c'est OK
c'était bien ca le probleme
fallait laisser le formulaire caché dans haut.php

merci beaucoup !!!!

Commentaire de malalam le 04/01/2006 17:04:59 administrateur CS

Ouf... !! ;-)

Commentaire de LaTatadu91 le 06/01/2006 16:20:33

rebonjour,
pas le temps de voir le truc des sessions je verrais ca apres....

petite question sur la traduction:
dans le fichier xml comment mettre les accents?
si je mets é il bug et si je mets &eacuate il bug aussi
aussi est ce possible du coup d emettre des trucs comme °
et je veux mettre du chinois
pense tu que c'est possible de mettre les caractéres spéciaux???

pleins de questions que pr toi :D

Commentaire de malalam le 06/01/2006 16:28:50 administrateur CS

Ouais, ça dépend de l'encoding. Toujours :-)

http://www.w3schools.com/xml/xml_encoding.asp

Commentaire de LaTatadu91 le 06/01/2006 16:49:43

ouais j'ai vu sur le site yahoo chinois que pr eux c UTF8 quelque chose comme ca
mais du coup je peux plus utiliser mon fr et anglais?

ou sinon il me faut deux fichiers xml???
et pr le coup des accents en fr tu sais quel encoding il faut?
actuellement j'ai encoding="iso-8859-1"

Commentaire de LaTatadu91 le 06/01/2006 17:02:36

je crois avoir trouver j'ai rajouter ca en dessous de mo <html>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">

et les accents passent apparement ...

Commentaire de malalam le 06/01/2006 17:13:05 administrateur CS

Ah ben ton html aussi doit avoir un encoding, oui!

Commentaire de LaTatadu91 le 09/01/2006 11:22:42

Salut malalam,

je viens de refaire mon site avec traduction possible
et ca cartonne ca marche bien
par contre j'ai rencontré un gros probleme dans mon cas...
voila lors de l'envoi de certaines données via un formulaire
j'établis une connexion socket avec un programme écrit en C
j'attends la réponse et si c'est bon je réaffiche mon formulaire avec les valeurs postées sinon j'affiche le formulaire de base avec un message d'erreur
mon probleme est que mon site s'affiche bien dans lalangue voulue de base mais des que je valide mon formulaire et donc apres connexion socket
tous mes echo findlocale n'affiche plus rien
mon formulaire est vide ....
Je capte pas pourquoi?
je te passe le code peut etre saura tu encore une fois m'aider!

<?php require_once('connect_mysql.php');
  require_once('cod_para.php');?>
<?php
$requete = sprintf("SELECT * FROM pacing_tuning WHERE id=1");
mysql_select_db($database, $dbconnect);
$result = mysql_query($requete, $dbconnect) or die(mysql_error());
$i = 0;
while ($retour = mysql_fetch_array($result) )//recupere les lignes de la réponse sql dans un tableau
{
$tablo1[$i] = $retour[1];
    $tablo2[$i] = $retour[2];
    $tablo3[$i] = $retour[3];
    $tablo4[$i] = $retour[4];
    $tablo5[$i] = $retour[5];
    $tablo6[$i] = $retour[6];
    $tablo7[$i] = $retour[7];
    $i = $i+1;
}
// Libération des ressources prises par le fetch_array
mysql_free_result($result);
/******************************************************************************************************************************/
        if(isset($_POST["bouton"]) && $_POST["bouton"] == "VALID")
{
//on vérifie si la case a été cochée si non on met la valeur a 0
if (!isset ($_POST['notice_delay']) || empty($_POST['notice_delay']))
$_POST['notice_delay'] = '0';

    mysql_query("DROP TABLE pacing2")or die("Erreur :".mysql_error());  
    mysql_query("CREATE TABLE pacing2(
id SMALLINT NOT NULL AUTO_INCREMENT ,
speed FLOAT NOT NULL ,
record FLOAT NOT NULL ,
tolerance FLOAT NOT NULL ,
reponse FLOAT NOT NULL ,
maxtime_adv FLOAT NOT NULL ,
maxtime_dis FLOAT NOT NULL ,
duration_delay FLOAT NOT NULL ,
notice INT NOT NULL ,
INDEX ( id )
)")or die("Erreur :".mysql_error());
mysql_query ("INSERT INTO pacing2 VALUES('',".$_POST['speed'].",".$_POST['nb_record'].",".$_POST['tolerance'].",".$_POST['reponse'].",".$_POST['maxtime_adv'].",".$_POST['maxtime_dis'].",".$_POST['duration_delay'].",".$_POST['notice_delay'].")")or die("Erreur".mysql_error());         
mysql_close();
/*********************************ENVOI MESSAGE AU HOT*****************************************/
$code= $COD_PAC_VLD; // 140 Valid pacing data;
$nom_table= "pacing2";
$idSocket = fSockOpen($serveur, $port, $codeErreur, $msgErreur);
if (!$idSocket)
{
echo "Message d'erreur: $msgErreur<br />";
die();
}
else{
//     echo"connexion établie<br />";
}
// Configuration de la connexion  en mode bloquant et avec un timeout de 5
socket_set_blocking($idSocket, TRUE);
socket_set_timeout($idSocket, 5);
$message = "$code/$nom_table/$hostname/";
// Envoi de données au serveur
$envoi = fputs($idSocket, $message);
if (!$envoi) {
    echo "L envoi du message a échoué.<br />";
    die();
}else
{
//     echo"message envoyé<br />";
}
$reponse = fgets($idSocket, 10);
fclose($idSocket);
//echo"$reponse<br />";
if($reponse == "UPDATE OK")
{
?>
<form method="POST" action="http://localhost/index.php?page=4">
<table class="table_tuning">
<h2 id="titre5"><font color="red"><?php echo findLocale ($_SESSION['locale'], 'titre5');?></font></h2>
<tr>
<td id="speedmes"><?php echo findLocale ($_SESSION['locale'], 'speedmes');?></td>
<?php echo' <td><input type="text" name="speed" size="3"value="',$_POST['speed'],'"/></td>';?>
</tr>
<tr>
<td id="nbrecords"><?php echo findLocale ($_SESSION['locale'], 'nbrecords');?> </td>
<?php echo' <td><input type="text" name="nb_record" size="3"value="',$_POST['nb_record'],'"/></td>';?>
</tr>
<tr>
         <td id="tolerance"><?php echo findLocale ($_SESSION['locale'], 'tolerance');?></td>
<?php echo'     <td><input type="text" name="tolerance" size="3"value="',$_POST['tolerance'],'"/></td>';?>
        </tr>
        <tr>
         <td id="reponse"><?php echo findLocale ($_SESSION['locale'], 'reponse');?></td>
<?php echo'     <td><input type="text" name="reponse" size="3"value="',$_POST['reponse'],'"/></td>';?>
        </tr>
        <tr>
         <td id="maxtime_adv"><?php echo findLocale ($_SESSION['locale'], 'maxtime_adv');?></td>
<?php echo' <td><input type="text" name="maxtime_adv" size="3"value="',$_POST['maxtime_adv'],'"/></td>';?>
</tr>
<tr>
         <td id="maxtime_dis"><?php echo findLocale ($_SESSION['locale'], 'maxtime_dis');?></td>
<?php echo' <td><input type="text" name="maxtime_dis" size="3"value="',$_POST['maxtime_dis'],'"/></td>';?>
</tr>
<tr>
         <td id="duration"><?php echo findLocale ($_SESSION['locale'], 'duration');?></td>
<?php echo' <td><input type="text" name="duration_delay" size="3"value="',$_POST['duration_delay'],'"/></td>';?>
</tr>
        </table>
<input type="checkbox" name="forcing_speed" value="1" id="forcing"/><?php echo findLocale ($_SESSION['locale'], 'forcing');?>
        <input type="checkbox" name="notice_delay" value="1" id="notice"/><?php echo findLocale ($_SESSION['locale'], 'notice');?>
    <p id="bouton_tuning"><input type="submit" name="bouton"value="VALID" class="bouton"/>
    <input type="submit"name="bouton" onclick="javascript:refresh();" value="REFRESH"class="bouton" /></p>
    </form>
<?php
}
else {
?> <font color="red" id="msgerr"><?php echo findLocale ($_SESSION['locale'], 'msgerr');?></font>
<form method="POST" action="http://localhost/index.php?page=4">
<table class="table_tuning">
<h2 id="titre5"><font color="red"><?php echo findLocale ($_SESSION['locale'], 'titre5');?></font></h2>
<tr>
<td id="speedmes"><?php echo findLocale ($_SESSION['locale'], 'speedmes');?></td>
<?php echo' <td><input type="text" name="speed" size="3"value="',$tablo1[0],'"/></td>';?>
</tr>
<tr>
<td id="nbrecords"><?php echo findLocale ($_SESSION['locale'], 'nbrecords');?></td>
<?php echo' <td><input type="text" name="nb_record" size="3"value="',$tablo2[0],'"/></td>';?>
</tr>
<tr>
         <td id="tolerance"><?php echo findLocale ($_SESSION['locale'], 'tolerance');?></td>
<?php echo'     <td><input type="text" name="tolerance" size="3"value="',$tablo3[0],'"/></td>';?>
        </tr>
        <tr>
         <td id="reponse"><?php echo findLocale ($_SESSION['locale'], 'reponse');?></td>
<?php echo'     <td><input type="text" name="reponse" size="3"value="',$tablo4[0],'"/></td>';?>
        </tr>
        <tr>
         <td id="maxtime_adv"><?php echo findLocale ($_SESSION['locale'], 'maxtime_adv');?></td>
<?php echo' <td><input type="text" name="maxtime_adv" size="3"value="',$tablo5[0],'"/></td>';?>
</tr>
<tr>
         <td id="maxtime_dis"><?php echo findLocale ($_SESSION['locale'], 'maxtime_dis');?></td>
<?php echo' <td><input type="text" name="maxtime_dis" size="3"value="',$tablo6[0],'"/></td>';?>
</tr>
<tr>
         <td id="duration"><?php echo findLocale ($_SESSION['locale'], 'duration');?></td>
<?php echo' <td><input type="text" name="duration_delay" size="3"value="',$tablo7[0],'"/></td>';?>
</tr>
        </table>
<input type="checkbox" name="forcing_speed" value="1" id="forcing"/><?php echo findLocale ($_SESSION['locale'], 'forcing');?>
        <input type="checkbox" name="notice_delay" value="1" id="notice"/><?php echo findLocale ($_SESSION['locale'], 'notice');?>
    <p id="bouton_tuning"><input type="submit" name="bouton" value="VALID" class="bouton"/>
    <input type="submit" name="bouton" onclick="javascript:refresh();" value="REFRESH"class="bouton" /></p>
    </form>
<?php }
}else
{
?>
<form method="POST" action="http://localhost/index.php?page=4">
<table class="table_tuning">
<h2 id="titre5"><font color="red"><?php echo findLocale ($_SESSION['locale'], 'titre5');?></font></h2>
<tr>
<td id="speedmes"><?php echo findLocale ($_SESSION['locale'], 'speedmes');?></td>
<?php echo' <td><input type="text" name="speed" size="3"value="',$tablo1[0],'"/></td>';?>
</tr>
<tr>
<td id="nbrecords"><?php echo findLocale ($_SESSION['locale'], 'nbrecords');?></td>
<?php echo' <td><input type="text" name="nb_record" size="3"value="',$tablo2[0],'"/></td>';?>
</tr>
<tr>
         <td id="tolerance"><?php echo findLocale ($_SESSION['locale'], 'tolerance');?></td>
<?php echo'     <td><input type="text" name="tolerance" size="3"value="',$tablo3[0],'"/></td>';?>
        </tr>
        <tr>
         <td id="reponse"><?php echo findLocale ($_SESSION['locale'], 'reponse');?></td>
<?php echo'     <td><input type="text" name="reponse" size="3"value="',$tablo4[0],'"/></td>';?>
        </tr>
        <tr>
         <td id="maxtime_adv"><?php echo findLocale ($_SESSION['locale'], 'maxtime_adv');?></td>
<?php echo' <td><input type="text" name="maxtime_adv" size="3"value="',$tablo5[0],'"/></td>';?>
</tr>
<tr>
         <td id="maxtime_dis"><?php echo findLocale ($_SESSION['locale'], 'maxtime_dis');?></td>
<?php echo' <td><input type="text" name="maxtime_dis" size="3"value="',$tablo6[0],'"/></td>';?>
</tr>
<tr>
         <td id="duration"><?php echo findLocale ($_SESSION['locale'], 'duration');?></td>
<?php echo' <td><input type="text" name="duration_delay" size="3"value="',$tablo7[0],'"/></td>';?>
</tr>
        </table>
<input type="checkbox" name="forcing_speed" value="1" id="forcing"/><?php echo findLocale ($_SESSION['locale'], 'forcing');?>
        <input type="checkbox" name="notice_delay" value="1" id="notice"/><?php echo findLocale ($_SESSION['locale'], 'notice');?>
    <p id="bouton_tuning"><input type="submit" name="bouton" value="VALID" class="bouton"/>
    <input type="submit" name="bouton" onclick="javascript:refresh();" value="REFRESH"class="bouton" /></p>
    </form>
<?php
}
?>
  
cette page est appelé depuis mon index.php qui inclut cette page...

merci de bien vouloir te pencher sur mon cas

Commentaire de LaTatadu91 le 09/01/2006 12:00:30

re,
deja j'ai une petite question suis je obligé de procéder comme ca?
car du coup ca me fais un script 3fois plus long
n'y a t'il pas un astuce pour réafficher mon formulaire?

en tout cas je ne comprends pas pourquoi apres la validation,les echo du xml ne se font plus

Commentaire de malalam le 09/01/2006 12:03:58 administrateur CS

Est-ce que cette vérification avec le programme C fonctionne bien, elle ? Si tu vires la localisation par exemple ?
Et si tu fais un print_r ($_SESSION) avant le formulaire, et une fois avant le traitement, une fois après ?
Qu'obtiens-tu ?

Commentaire de malalam le 09/01/2006 12:15:28 administrateur CS

Non t'es pas obligé de faire ça comme ça.
Je pige pas bien à cause du manque d'indentations ici...
mais 1 formulaire suffit. Au pire, tu testes à l'affichage de la valeur, ce que tu veux, et affiche en conséquence.

Commentaire de LaTatadu91 le 09/01/2006 13:26:30

en fait j'ai un formulaire avec des valeurs a envoyer
mon programme C les lit puis il les valide ou pas
et me renvoi un code UPDATE OK ou NON
si le code est OK je réaffiche mon tableau et formulaire avec
les nouvelles valeurs sinon je réaffiche els anciennes.
je ne vois pas comment faire autre ment que 3affichages du coup...
(un lors de l'appel de la page,un si les valeurs envoyées sont correctes et
un si c'est pas correct)

Commentaire de LaTatadu91 le 09/01/2006 13:33:26

je viens de mettre les print_r
alors il me met bien en francais lors du premier appel de la page(affichage normal)
et apres connexion socket il m'affiche array[locale]=>
et rien ya plus ecrit francais!!!!

Commentaire de LaTatadu91 le 09/01/2006 13:48:54

ca donne ca:
Array ( [authentification] => [privilege] => admin [nom] => tata [equipe] => xavier [login] => xavier [pass] => 268fb4595b079e19467c8feee67a856a [locale] => FRANCAIS )

et apres ma connexion ca:
Array ( [authentification] => [privilege] => admin [nom] => tata [equipe] => xavier [login] => xavier [pass] => 268fb4595b079e19467c8feee67a856a [locale] =>  )

Commentaire de malalam le 09/01/2006 13:52:12 administrateur CS

Ben faut croire que la session est perdue lors de ta connexion par socket au programme C.
Il te sert à quoi exactement ce programme...?
Il te renvoie tes post ? Je veux dire, un print_r ($_POST) après passage dans ce programme C, te donne bien tes $_POST ?
Une solution tortueuse est de créer dans ton formulaire un champ hidden, avec ta session dedans...

par exemple : <inout type="hidden" name="session" value="<?php echo base64_encode(serialize($_SESSION['locale']));?>" />

et après passage dans ton programme, tu fais :
$_SESSION['locale'] = unserialize (base64_decode($_POST['session']));

Commentaire de malalam le 09/01/2006 13:53:24 administrateur CS

Alors là c'est très curieux, il garde tout, sauf le locale ... ?
Change de nom, ne mets pas locale, mais autre chose (langue, localisation, vce que tu veux. Mais faut le changer partout hein).

Commentaire de malalam le 09/01/2006 13:59:48 administrateur CS

Pour ton affichage, un truc du genre :

echo $valeur = ($update === true)?$nouvelle_valeur:(isset ($_POST['champ']))?$_POST['champ']:$valeur_par_defaut;

Commentaire de LaTatadu91 le 09/01/2006 14:07:28

la meme chose:
Array ( [authentification] => [privilege] => admin [nom] => tata [equipe] => xavier [login] => xavier [pass] => 268fb4595b079e19467c8feee67a856a [locale] => FRANCAIS [langue] => )

il ne garde pas la langue :(

Commentaire de malalam le 09/01/2006 14:11:35 administrateur CS

Oui mais il a gardé locale...bizarre, il vire le dernier index de ta session...?

Commentaire de LaTatadu91 le 09/01/2006 14:12:56

echo $valeur = ($update === true)?$nouvelle_valeur:(isset ($_POST['champ']))?$_POST['champ']:$valeur_par_defaut;

pour l'affichage de toute facon c'est peut etre aps le mieux
mais ca passe ...je verrais un meilleur affichage qd je pourrais
la traduction est plus importante pour le moment...

Commentaire de LaTatadu91 le 09/01/2006 14:15:22

je sais pas ce qu'il vire
on dirait que oui il vire le dernier
mais pourquoi?
je ne fais rien si ce n'est une connexion via socket...

Commentaire de malalam le 09/01/2006 14:28:39 administrateur CS

Bon ben avant connexion, en attendant de trouver pourquoi il fait ça, ajoute une entrée factice à ta session (genre $_SESSION['keep'] = 1;
Et tu conserves la structure comme avant sinon, pour la localisation.
Il va vider le KEEP, mais tu auras toujours ton locale.

Commentaire de LaTatadu91 le 09/01/2006 14:44:27

c'est incompréhensible
j'ai remplacé partout locale pr langue
et la il me mets ca :
Array ( [authentification] => [privilege] => admin [nom] => tata [equipe] => xavier [login] => xavier [pass] => 268fb4595b079e19467c8feee67a856a [locale] => FRANCAIS [langue] => [keep] => 1 )

sachant que c'est langue qui est vide j'ai encore mon formulaire vide...
comment ca se fait qu'il me parle encore de locale?

Commentaire de LaTatadu91 le 09/01/2006 14:57:30

j'ai fait un destroy session pr effacer le locale

et apres test il me garde le keep
mais me vide langue
c'est incroyable ca!!!

Commentaire de malalam le 09/01/2006 15:05:44 administrateur CS

Heu...
le truc juste en haut, tu as localke, mais pas langue, ok ? Bon ben garde ta session telle quelle, et remets le code à la normale, : utilise locale, au lieu de langue...
Mais c'est biuzarre

Commentaire de LaTatadu91 le 09/01/2006 15:09:34

non c'est bon j'ai "effacer" la session et il n'y a plus de locale
par contre il vide toujours langue
meme si je mets autre chose apres (keep)
je craaaaaaaaaque

Commentaire de LaTatadu91 le 09/01/2006 15:23:38

en fait si j'avais remis locale ala place de langue
ce serait locale qui serait devenu vide
j'en suis a peu pres sur....

Commentaire de LaTatadu91 le 09/01/2006 16:02:46

j'ai rechanger le langue en locale comme au debut et j'avais raison now
c'est le locale qui devient vide a nouveau
c'est incroyable...

Commentaire de LaTatadu91 le 09/01/2006 16:50:20

j'ai cherché sur d'autres forums et je trouve personne qui ai eu le meme pb

ca me rend fou
ca gache tout...

Commentaire de malalam le 09/01/2006 18:11:58 administrateur CS

Désolé j'ai pas bcp de temps ce soir...

J'avoue que je ne sais pas trop.
Le problème doit alors venir des fonctions checkLocale ou findLocale. Sinon il ne focalisera pas arbitrairement sur
la variable de session utilisée...ton pc ne doit pas être doté d'ujne intelligence maligne, quand même ;-)

Commentaire de LaTatadu91 le 09/01/2006 18:41:26

mon pc?pourquoi
oui c'est une merde mais bon quel rapport

en tout cas je vois pas le probleme et je craque

Commentaire de LaTatadu91 le 10/01/2006 09:13:00

tu penses que si je refais mon affichage ca ira mieux ou ca na vraiment rien a voir...

Commentaire de malalam le 10/01/2006 09:27:29 administrateur CS

Je pense que ça n'a rien à voir, je pense que ça vient des fonctions checkLocale, ou findLocale.
Remets les moi ici, telles qu'elles sont maintenant. (pour ton pc, je plaisantais hein lol)

Commentaire de LaTatadu91 le 10/01/2006 09:42:33

ouais mais mon pc il me fait pas rire
je peux rien faire avec....

<?php
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 locale à 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) {
      return $noeud; // on renvoie ce texte
    }
  }
  else {
    $resultat = $doc ->xpath ($loc.'/notext'); // sinon on va chercher le message d'erreur
    foreach ($resultat as $noeud) {
      return $noeud;
    }
  }
}
?>


<?php
session_start ();
function checklocale () { // fonction pour tenter de déterminer la locale 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 locale par défaut dans une variable de session
    }
}
?>
<!-- Formulaire pour le choix des locales -->
<form method="post" action="" id="locales">
<input type="hidden" name="ENGLISH" value="0" />
<input type="hidden" name="FRANCAIS" value="0" />
<input type="hidden" name="CHINESE" value="0" />
</form>
<script type="text/javascript">
function setLoc (nom) {
f = document.getElementById('locales');
f.elements[nom].value = 1;
f.submit ();
}
</script>
<?php
if (!empty ($_POST)) {
    $_SESSION['locale'] = array_search (1, $_POST);
}


voila ce qu'il en est....
sinon un ami m'a peut etre conseiller une solution
au lieu de mettre french ou english ds une variable de session de mettre ds $_GLOBAL

j'ai jamais utilisé mais peut etre est ce l'occasion....

et sinon Bonjour,j'espere que tu vas bien ce matin!

Commentaire de LaTatadu91 le 10/01/2006 10:00:38

si tu me sors de ce guepier
je sais pas ce que jte fais mais je veux bien
faire ce que tu veux!!!

Commentaire de malalam le 10/01/2006 10:09:24 administrateur CS

$_GLOBALS est à éviter.

Et ça va bien merci, bcp de taf encore :-(
Et toi ?

Pour ce problème, je t'avoue que pour le moment, je sèche...
Si c'est uniquement cette variable de session qui disparait, celle utilisée, c'est que cela a quelquechose à voir
avec les fonctions qui la gèrent.
Le problème c'est que dans ces fonctions, la variable de session n'est jamais écrasée...ou alors, par elle-même...SAUF
dans la dernière partie...et là, je sais!!
<?php
if (!empty ($_POST)) {
    $_SESSION['locale'] = array_search (1, $_POST);
}
si cette partie, avec le formulaire, est incluse dans cette page, c'est normal!! Parce que tu soumets ton formulaire là (les 3 trucs lol);
donc $_POST est rempli.
Il cherche la valeur 1 dans un de ces post, et s'il en trouve une, rempli la session avec la clef de ce post.

Le problème est sûrement là...
remplace ce bloc par ceci :
<?php
if (!empty ($_POST['ENGLISH']) || !empty ($_POST['FRANCAIS']) || !empty ($_POST['CHINESE'])) {
    $tabLocale = array ('ENGLISH' => 0, 'FRANCAIS' => 0, 'CHINESE' => 0);
    foreach ($tabLocale as $langue => $dump) {
        if (isset ($_POST[$langue])) {
            $tabLocale[$langue] = $_POST[$langue];
        }
    }
    $_SESSION['locale'] = array_search (1, $tabLocale);
}

C'est tordu, on doit pouvoir fdaire plus simple, mais dans la précipitation je ne trouve pas mieux (j'ai guère de temps suis désolé).
Le principe est de vérifier qu'on remplit bien la session avec le bon post.

Commentaire de malalam le 10/01/2006 10:13:26 administrateur CS

En fait y a une solution plus simple, en rajoutant encore un champ hidden au formulaire, par exemple avec
le nom "act".
Sur tes images (tes drapeaux), tu appelles la fon,ction setLoc en lui passant la même chose.
Mais dans cette fonction, tu ajoutes ça :
f.elements['act'].value = 1;

et dans le check des POST, tu l'effectues uniquement si $_POST['act'] == 1.
Mais bon ça ne change pas grand chose, il vaut mieux trouver un truc sûr pour vérifiuer qu'on remplit bien la session
avec la valeur d'un des 3 champs de localisation, et pas avec celle d'un autre champ. Mon code est à revoir dans ce sens, là il est
franchement tordu et pas très sécuritaire.

Commentaire de LaTatadu91 le 10/01/2006 10:21:09

et en plus il manquait un ?>
ecoute je test ca de suite...
j'espere que c'est ca, jte tiens au courant ds les minutes qui suivent...

Commentaire de LaTatadu91 le 10/01/2006 10:25:23

ecoute ca a l'air de marcher en tout cas
ta premiere solution ...

moi c'est tout ce que je demande a mon niveau actuel
pour le coté optimisation et secu ce sera dans mes v2 etc....

je te remercie vivement
t'es mon dieu!!!

jte paierais bien un coup si tu le voulais....

Commentaire de malalam le 10/01/2006 10:27:08 administrateur CS

Je le veux bien lol, mais je suis dans le sud est moi, à Aix en Provence...

Commentaire de LaTatadu91 le 10/01/2006 10:44:38

aie dur la...
un coup a 15€ ca va mais 15€ plus billet d'avions
ca commence  a etre chero!!

mais jt avoue que ce serait avec plaisir si tétais sur paris.

Merci encore

Commentaire de Portekoi le 17/01/2006 22:08:19

Bonjour,

J'ai une erreur en local et chez mon hébergeur mutualisé sur simplexml_load_file()

Fatal error: Call to undefined function: simplexml_load_file() in c:\program files\easyphp1-8\www\locales\fct.php on line 6

Y a t il un équivalent à cette fonction?

Merci


Portekoi

Commentaire de Portekoi le 17/01/2006 22:24:04

Ah vi, j'avais pas fait attention désolé :(

Bon ben tanpis, à moins de faire une pétition à mon hébergeur, c'est pas gagné ^_^

Merci ;)

Commentaire de LaTatadu91 le 18/01/2006 09:21:43

sinon tu peux surement trouver une autre solution qui ne necesiterait pas forcément php5

Commentaire de malalam le 18/01/2006 09:30:48 administrateur CS

Bon, c'est relativement facilement adaptable à php4 hein (mercu Latata de faire du debug sur ma source, lol).
Si j'ai le temps, je tâche de m'y mettre.
Il y a juste à modifier la fonction findLocale ().

Commentaire de LaTatadu91 le 18/01/2006 11:16:03

Lol
ouais je me suis permis d'aider un peu
apres tout faut rendre ce que l'on reçoit....

j'essaye a mon niveau de faire ça!

ps: en parlant d'aide mon script de lecture de fichier
ne passe tjrs pas ...:D

Commentaire de malalam le 18/01/2006 11:27:47 administrateur CS

J'y retourne voir... :-)

Commentaire de LaTatadu91 le 18/01/2006 16:19:10

tiens ca m'arrange si tu pouvais faire le test chez toi:
10/24/05 12:15:37<-- [COM to APP] NEXT WALKING BEAM MOVEMENT (2101)
4
---------
NU_FUR=4
WKB_STP=550
GAM_IND=0
ACT_USE=0

10/24/05 12:16:30<-- [COM to APP] NEXT WALKING BEAM MOVEMENT (2101)
4
---------
NU_FUR=4
WKB_STP=551
GAM_IND=0
ACT_USE=0

10/24/05 12:16:53--> [APP to COM] FURNACE #4 PLC MEASUREMENTS (2108)
9
---------
PDT_ID=5O1319100000
NU_FUR=67108864
NU_ROW=0
ABCS=2379
LAT_ABSS=951
PDT_LEN=5621
WIDTH=1559
PDT_THICKNESS=185
CHA_TMP=61

10/24/05 12:18:41--> [APP to COM] FURNACE #4 PLC MEASUREMENTS (2108)
9
---------
PDT_ID=5O1324100000
NU_FUR=67108864
NU_ROW=2
ABCS=2372
LAT_ABSS=6879
PDT_LEN=5613
WIDTH=1537
PDT_THICKNESS=185
CHA_TMP=61

ca c'est mon fichier txt....
et pr le code :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<script type="text/javascript">
/*function montre(id) {
var d = document.getElementById(id);
for (var i = 0; i<=10; i++)
{
if (document.getElementById('smenu'+i))
{document.getElementById('smenu'+i).style.display='none';}
}
if (d) {d.style.display='block';}
}*/
</script>
</head>
<body >
<title>Lecture de fichier</title>
<table width="100%">
<tr bgcolor="lightblue"><td  align="center"><h2 style="font-weight: bold;">LECTURE DE FICHIER</h2></td></tr>
</table>
<br /><br />
<?php
$fp = fopen("DCS_traces.txt","r"); //ouverture du fichier DCS_trace.txt en lecture seule
$taille = fileSize("DCS_traces.txt"); //taille du fichier en octets
while(!feof($fp)) //Tant que l'on est pas a la fin du fichier
{
$msg = fgets($fp, 100);
echo"$msg <br />";
$nblignes = fgets($fp,3);
//echo"$nblignes";
$vide = fgets($fp,20);
//echo"$vide<br />";
$vide2 = fgets($fp,20);
//echo"$vide2<br />";
for($i=0;$i<$nblignes;$i++)
{
$buffer[$i] = fgets($fp,50);
}
$vide = fgets($fp,20);
?>
<div id="menu">
    <dl>
<dt onmouseover="document.getElementById('smenu').style.display='block';" style="text-decoration: underline;">voir les valeurs</dt>
<dd id="smenu" onmouseover="this.style.display='block';"onmouseout="this.style.display='none';">
        <ul><?php
        for($i=0;$i<$nblignes;$i++)
        {
            echo"<li>$buffer[$i]</li>";
        }
?>
        </ul>
        </dd>
    </dl>
    </div>
<?php

}
?>
</body>
</html>

je pense que tu verras mieux le pb et aussi ce que je veux faire...
merci bcp!

Commentaire de coockiesch le 13/06/2006 09:39:50

Yop!
J'ai une tite question: par rapport à des fichiers langues contenant des tableaux avec toutes les chaînes, quel est l'intérêt de passer par du XML?
Au niveau rapidité c'est quoi le mieux?

Merci! :)

@++

R@f

Commentaire de malalam le 13/06/2006 10:26:31 administrateur CS

Je ne sais pas.
Pour moi, y a plusieurs intérêts :
c'est portable, éventuellement si on doit adapter un code
à un autre langage, on peut garder les traductions telles quelles.
C'est rapide, parce qu'on fait juste un accès au xml, on ne se trimballe pas l'inclusion d'un
gros gros fichier de traduction en mémoire.
C'est très facile à faire évoluer, d'ajouter des langues, même si on n'est pas un développeur.
On peut voir de manière intuitive un flux XML avec un éditeur approprié, contrairement à un fichier de variables PHP
(intuitif pour un néophyte en php hein).

Commentaire de coockiesch le 13/06/2006 10:29:54

Mmmh, oki, merci! Vais regarder ça!

@++

R@f

Commentaire de malalam le 13/06/2006 10:33:22 administrateur CS

Regarde ce code :
http://www.phpcs.com/codes/PHP5-CLASSE-DOCUMENTATION-CLASSES-FONCTIONS_35950.aspx
J'utilise une version plus poussée de cet exemple.
Pour la rapidité, faudrait tester. Mais franchement...je ne pense pas qu'on gagne ou perde beaucoup avec
une autre technique d'inclusion de variables php.
Simplement, c'est plus élégant de le faire en xml :-) Et c'est plus tourné vers l'avenir.
Et bon, donc, portabilité, facilité de mise en oeuvre, d'évolution...etc. C'est ce qui m'intéresse.

Commentaire de coockiesch le 13/06/2006 10:39:10

Sur l'élégance et sur la portabilité, oki!
Par contre, sur la simplicité par rapport à une inclusion de variable, pas si sûr!

Vais me plonger dans le XML un de ces 4, :D

@++

R@f

Commentaire de malalam le 13/06/2006 10:45:44 administrateur CS

Bah demande à un mec de modifier un fichier d'inclusion plein de variables php, et
mes fichiers xml...tu verras ce qui lui semble le plus simple ;-)
Quant au traitement, c'est TRES facile, surtout en php5.
Ca fait peur au début, mais en fait c'est très simple, le xml.
Je prépare un nouveau code, qui sera sur phpcs bientôt je pense (enfin me reste pas mal
de trucs à faire), et qui utilise beaucoup le xml. Tu verras, c'est pas si compliqué...
même si là, j'ai poussé le vice un peu plus loin lol.

Commentaire de coockiesch le 13/06/2006 10:47:33

Oki, :D
Et sinon y'a des libs qui permettent de bidouiller les XML en PHP4 parce que mon hébergeur est encore en 4... ?

@++

R@f

Commentaire de malalam le 13/06/2006 10:55:46 administrateur CS

Ouais, y a :
http://fr2.php.net/manual/fr/ref.xml.php
et
http://fr2.php.net/manual/fr/ref.domxml.php

Commentaire de coockiesch le 13/06/2006 11:34:15

Oki, je verrai ce qui est dispo, merci! :)

@++

R@f

Commentaire de franco_se le 26/08/2006 12:44:37

une petite question sur l'utilisation du fichier xml en lui-meme: ne serait-il pas plus pratique d'utiliser un fichier .xlm par langue, plutot que de toutes les centraliser sur un seul xml?

Commentaire de malalam le 26/08/2006 13:00:14 administrateur CS

Franco => Si. Lol. C'est d'ailleurs ce que j'ai fait sur une de mes classes localisée de cette manière :
ma classe de documentation de classes et de fonctions (sur ce site).
C'est effectivement plus simple pour les mises à jour, et les ajouts de langue, tout simplement.
En fait, un répertoire par langue, et dans chaque répertoire, un fichier XML par "type" de traduction (erreurs, documentation, Interface Utilisateur, etc...)

Commentaire de franco_se le 03/09/2006 11:56:42

par contre, j'ai une question sur l'utilisation de variables php ds le fichier xml.
en effet, dans mon code, j'utilisais un tableau $lang pour gérer mes variables langue.
J'ai donc une entrée du type
# $lang['hello'] = "bonjour ".$info_user['name'].". Votre derniere connection date du ".$info_user['last_connect']
etc etc
Or, si j'essaye de faire la meme chose ds le fichier xml, ça ne marche pas......

je debute ds l'utilisation du xml, et je ne sais pas si c'est possible ( il semblerais d'ailleurs que non ...)mais comment exploiter ces variables pour les entrer ds le xml, et les afficher correctement sur la page ?

merci

Commentaire de JoJo738 le 03/09/2006 14:08:37

Lu malalam et franco_se,

La je te conseil le sprintf(); ou bien fait une fontion pour remplacer dans ta chaine.

> ma_fonction($texte, $remplace1, $replace2 [,...]); et que ca remplace dans ta chaine : $1, $2, $[...].

Du genre :

function myReplace()  {
  $numargs = func_num_args();
  $tabargs = func_get_args();
  
  $return = $tabargs[0];
  
  for( $i = 0 ; $i < $numargs ; $i++ )  {
    $return = str_replace('$' . $i, $tabargs[$i], $return);
  }
  
  return $return;
  
}

echo myReplace('texte $1 et $2', '(remplace 1), '(remplace 2)');

Commentaire de baseart le 26/10/2006 13:25:25

salut à vous;
merci pour cet exemple multilangue Malaman.
j'ai eu des problèmes sous ie avec le <input type ="image">, il semble quand POST ie ne le gère pas !! ^^
je l'ai résolu avec vos commentaires, c à dire 1 src + la fonction javascript qui fonctionne très bien sous ie et fireFox.
Mon problème, car j'en 1, et dont personne ne parle c les accents et les appostrophes en fr, héhé.
je suis que que tu as la solution Malaman, moi je suis newsbee alors je galère.
merci à toi

Commentaire de malalam le 26/10/2006 13:38:44 administrateur CS

Hello,

utf8_decode ()

Commentaire de milkasoprano le 30/06/2007 23:29:09

salut malalam, moi j'aurai une question a te poser sur cette source quui est super dailleur je tiens a le dire ;)

jai reussi a integrer tous ca ... et ca marche niquel sur mon site mais j'ai tous de meme un question :

dans mon fichier locales.xml
j'ai par exemple ceci :

        <FRANCAIS>
<msg>Bonjour le monde</msg>
<notext>Pas de texte disponible</notext>
</FRANCAIS>

Comment puis je faire pour que si jy ajoute beaucoup de textes imaginons 1000 caracteres. sur ces 1000 caracteres je voudrai y ajouter un texte en gras c'est a dire un texte comme cela
<msg><b>Bonjour</b> le monde</msg>

Le bonjour en gras et le monde en standard.

de mon coté il m'indique une erreur php. car ce n'est plus considéré vraiment comme une balise html.
je ne connais pas tres bien le xml mais aurais tu une solution a me présenter ? pour que je puisse integrer des fonction comme des liens ou des forme italiques ou gras ?.

merci :)

bonne soirée a toi



Commentaire de malalam le 02/07/2007 13:26:19 administrateur CS

Hello,

<FRANCAIS>
<msg><![CDATA[<strong>Bonjour</strong> le monde]]></msg>
<notext><![CDATA[Pas de texte disponible]]></notext>
</FRANCAIS>

Il te suffit de mettre un CDATA dans le textnode.
De toutre manière, c'est un oubli de ma part parce que je n'en avais pas l'utilité à ce moment là,
mais il faut toujours mettre le CDDATA quand on jour avec du html ou du script.

Commentaire de lanner le 30/09/2008 23:29:53

Salut,

J'ai fait le test avec CDATA pour mettre du code html (j'ai beaucoup de liens d'images à placer) ,mais cela ne fonctionne pas , le site ne s'affiche même plus du tout, une solution ou une correction ?
merci :)

Commentaire de lanner le 30/09/2008 23:37:09

Oups je viens de trouver , il manque un espace après <![CDATA[   :)

Commentaire de lanner le 30/09/2008 23:48:49

re- Oups je n'avais pas vu que le post datait un peu ^^, est ce qu'il y a eu de nouvelles modifications non publiées depuis tout ce temps ? car je vais me lancer sur un site en multilingue et je cherche un bon code pour me permettre d'y arriver correctement. ;)

Commentaire de lanner le 09/10/2008 20:53:00

resalut,
Désolé pour les multipostes ^^
Juste pour savoir s'il existe ou non d'éventuelles optimisations ou changement de code

merci d'avance ;)

Commentaire de lanner le 10/10/2008 18:54:34

J'aimerai savoir comment placer une image à la place du texte et du bouton , je n'y arrive pas , les données ne passent plus , si quelqu'un serait sympa pour me donner une solution, je l'ai en CSS mais je ne sais pas comment cacher le texte, merci d'avance :)

Commentaire de lanner le 14/10/2008 13:17:19 10/10

Trouver ,j'ai jouer sur la taille "0" et placer une couleur adequate :
font-size:0px;
color:#FF0000;

Par contre la vache mon xml est immense , j'espère qu'avoir un seul xml ne bloque pas la vitesse du site ... sinon quelqu'un aurait modifié de sorte à avoir un xml par langue ?
Un peu difficile pour moi mais je tenterais de le faire, je l'ai deja fait pour le .css du header en fonction de la langue,
à plus tard :)

Commentaire de lanner le 14/10/2008 17:29:35

En fait c'est simple , reste à savoir si cela est une méthode qui change quelque chose ou non.

fct.php

$doc = simplexml_load_file ('local_'.$_SESSION['locale'].'.xml'); // on charge le fichier de localisation

Les fichiers xml seront donc :
local_FRANCAIS.xml
local_ENGLISH.xml
local_DEUTSCH.xml

Si quelqu'un peu me dire si cela est une bonne solution ou non ;)

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

SITE MULTILINGUE...Je suis à la dérive !!! [ par kenny18 ] salut,Dans le cadre d'un test, je dois cr&#233;er un site multilingue. J'ai modifi&#233; &#224; ma sauce le script retrouv&#233; sur phpdebutant.org. Site Multi Langue [ par Tankian33 ] Bonjour, Je souhaite cr&#233;er un site Multi langue. En cherchant un peu je n'ai jamais vu de personnes proposant un les textes dans une base donn&# Faire un choi de langue [ par f1actu ] Bonjour . J'ai un souci , j'ai creer mon site , mais j'aimerai faire un choix de langue ( ex : Italien , sa met tous le site en intalien ) Je ne dema Choix de langue [ par diew74 ] Bonjour . J'aimerai savoir si quelqu'un pourrai me conseiller un bon code pour faire des choix de langues pour mon site ( ex : italien , allemand , e Un site à la langue donnée [ par rich25200 ] bonjour,J'aimerai savoir comment on fait pour que lorsqu'un francais se connecte a un site internet celui ci se met automatiquement en francais et si XML RSS [ par djamine ] Bonjour J'aimerais bien savoir comment utiliser les RSS sur mon site j'ai trouver pas mal des sites qui proposes des version XML surtout celle est new Besoin d'aide pour generer un Flux RSS [ par RuSSe_91 ] Salut tout le monde :) Je viens demander un coup de main pour g&#233;n&#233;rer un fichier RSS en XML. Mon site tourne sous mambo, e Import XML [ par vl92 ] Bonjour,Je me suis fias une liste d'achat d'un site de e-commerce. Mais, je dois la mettre &#224; jour &#224; chaque fois que les prix changent. N'y a site multilingue avec les sessions [ par rastagnol ] bonjour ! je souhaiterais faire un site multilingue avec les sessions mais je ne sais pas trop comment m'y prendre.mon index est une page ou on peut c Le Xml [ par MATHIS49 ] Bonjour ! je voulais savoir si vous connaissiez un site qui explique le XML avec des exemples simples pour d&#233;butant (un peut comme siteduzero.com


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales