SITE EN PLUSIEURS LANGUES : EXEMPLE SIMPLE AVEC XML
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 2010
-
31 août 2005 à 15:00
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015
-
8 avril 2015 à 19:47
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 8 avril 2015 à 19:47
Undefined index: HTTP_ACCEPT_LANGUAGE in
Quelqu'un saurait comment corriger cette erreur que retourne fct.php?
Merci
clement1412
Messages postés4Date d'inscriptionvendredi 18 février 2011StatutMembreDernière intervention16 mars 2011 16 mars 2011 à 09:58
Ok oui javais vut sauf que la difference comparé a toi c'est que toi c'est ton forumalire suivant si tu choissit anglais ou francais qui te redirige vers le xml correspondant!! or moi je ne peut pas fonctionner comme sa si je veut un fichier xml par page!
Sinon petit aparte ton site possède beaucoup de contenu?
clement1412
Messages postés4Date d'inscriptionvendredi 18 février 2011StatutMembreDernière intervention16 mars 2011 16 mars 2011 à 09:36
ah oui nikel javé pa vu!! merci et sa marche bien ?
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 15 mars 2011 à 21:36
j'ai donné un principe d'idée juste au dessus, moi j'utilise un par langue
clement1412
Messages postés4Date d'inscriptionvendredi 18 février 2011StatutMembreDernière intervention16 mars 2011 15 mars 2011 à 19:56
salut, tu aurait pas une astuce me permettant de creer une fonction qui choissise suivant ma page web son fichier xml corespondant! Car je souhaiterai faire un fichier xml par page car un pour tous mon site c'est pas jouable!
en espérant une reponse positive ;) je suis un debutant en programamtion web.
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 15 mars 2011 à 19:13
depuis le temps je confirme , royal :)
clement1412
Messages postés4Date d'inscriptionvendredi 18 février 2011StatutMembreDernière intervention16 mars 2011 15 mars 2011 à 16:42
très bon tutoriel!!
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 14 oct. 2008 à 17:29
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 ;)
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 14 oct. 2008 à 13:17
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 :)
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 10 oct. 2008 à 18:54
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 :)
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 9 oct. 2008 à 20:53
resalut,
Désolé pour les multipostes ^^
Juste pour savoir s'il existe ou non d'éventuelles optimisations ou changement de code
merci d'avance ;)
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 30 sept. 2008 à 23:48
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. ;)
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 30 sept. 2008 à 23:37
Oups je viens de trouver , il manque un espace après <![CDATA[ :)
cs_lanner
Messages postés131Date d'inscriptionsamedi 16 avril 2005StatutMembreDernière intervention 8 avril 2015 30 sept. 2008 à 23:29
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 :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 2 juil. 2007 à 13:26
Hello,
<FRANCAIS>
<msg><![CDATA[Bonjour 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.
milkasoprano
Messages postés239Date d'inscriptionjeudi 21 juillet 2005StatutMembreDernière intervention 1 juillet 2007 30 juin 2007 à 23:29
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>Bonjour 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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 oct. 2006 à 13:38
Hello,
utf8_decode ()
baseart
Messages postés1Date d'inscriptionvendredi 21 février 2003StatutMembreDernière intervention26 octobre 2006 26 oct. 2006 à 13:25
salut à vous;
merci pour cet exemple multilangue Malaman.
j'ai eu des problèmes sous ie avec le , 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
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 3 sept. 2006 à 14:08
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();
echo myReplace('texte $1 et $2', '(remplace 1), '(remplace 2)');
franco_se
Messages postés151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 20182 3 sept. 2006 à 11:56
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 26 août 2006 à 13:00
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...)
franco_se
Messages postés151Date d'inscriptionsamedi 1 novembre 2003StatutMembreDernière intervention30 juillet 20182 26 août 2006 à 12:44
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?
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 13 juin 2006 à 11:34
Oki, je verrai ce qui est dispo, merci! :)
@++
R@f
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 juin 2006 à 10:55
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 13 juin 2006 à 10:47
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 juin 2006 à 10:45
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.
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 13 juin 2006 à 10:39
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 juin 2006 à 10:33
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.
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 13 juin 2006 à 10:29
Mmmh, oki, merci! Vais regarder ça!
@++
R@f
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 13 juin 2006 à 10:26
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).
coockiesch
Messages postés2268Date d'inscriptionmercredi 27 novembre 2002StatutMembreDernière intervention13 septembre 20134 13 juin 2006 à 09:39
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
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 18 janv. 2006 à 16:19
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
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>
<title>Lecture de fichier</title>
LECTURE DE FICHIER
<?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
";
$nblignes = fgets($fp,3);
//echo"$nblignes";
$vide = fgets($fp,20);
//echo"$vide
";
$vide2 = fgets($fp,20);
//echo"$vide2
";
for($i=0;$i<$nblignes;$i++)
{
$buffer[$i] = fgets($fp,50);
}
$vide = fgets($fp,20);
?>
je pense que tu verras mieux le pb et aussi ce que je veux faire...
merci bcp!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 18 janv. 2006 à 11:27
J'y retourne voir... :-)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 18 janv. 2006 à 11:16
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 18 janv. 2006 à 09:30
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 ().
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 18 janv. 2006 à 09:21
sinon tu peux surement trouver une autre solution qui ne necesiterait pas forcément php5
Portekoi
Messages postés19Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention13 janvier 2010 17 janv. 2006 à 22:24
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 ;)
Portekoi
Messages postés19Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention13 janvier 2010 17 janv. 2006 à 22:08
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
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 10 janv. 2006 à 10:44
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 10 janv. 2006 à 10:27
Je le veux bien lol, mais je suis dans le sud est moi, à Aix en Provence...
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 10 janv. 2006 à 10:25
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....
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 10 janv. 2006 à 10:21
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...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 10 janv. 2006 à 10:13
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 10 janv. 2006 à 10:09
$_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.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 10 janv. 2006 à 10:00
si tu me sors de ce guepier
je sais pas ce que jte fais mais je veux bien
faire ce que tu veux!!!
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 10 janv. 2006 à 09:42
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">
</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!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 10 janv. 2006 à 09:27
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)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 10 janv. 2006 à 09:13
tu penses que si je refais mon affichage ca ira mieux ou ca na vraiment rien a voir...
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 18:41
mon pc?pourquoi
oui c'est une merde mais bon quel rapport
en tout cas je vois pas le probleme et je craque
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 18:11
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 ;-)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 16:50
j'ai cherché sur d'autres forums et je trouve personne qui ai eu le meme pb
ca me rend fou
ca gache tout...
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 16:02
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...
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 15:23
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....
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 15:09
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 15:05
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
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 14:57
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!!!
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 14:44
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?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 14:28
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.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 14:15
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...
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 14:12
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...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 14:11
Oui mais il a gardé locale...bizarre, il vire le dernier index de ta session...?
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 14:07
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 13:53
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).
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 13:52
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 : " />
et après passage dans ton programme, tu fais :
$_SESSION['locale'] = unserialize (base64_decode($_POST['session']));
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 13:48
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 13:33
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!!!!
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 13:26
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)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 12:15
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 9 janv. 2006 à 12:03
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 ?
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 12:00
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
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 9 janv. 2006 à 11:22
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
";
die();
}
else{
// echo"connexion établie
";
}
// 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é.
";
die();
}else
{
// echo"message envoyé
";
}
$reponse = fgets($idSocket, 10);
fclose($idSocket);
//echo"$reponse
";
if($reponse == "UPDATE OK")
{
?>
<form method="POST" action="http://localhost/index.php?page=4">
<?php echo findLocale ($_SESSION['locale'], 'titre5');?>
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 6 janv. 2006 à 16:20
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 17:04
Ouf... !! ;-)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 17:04
c'est OK
c'était bien ca le probleme
fallait laisser le formulaire caché dans haut.php
merci beaucoup !!!!
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 16:57
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?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 16:55
Non je dis des conneries :-)
Tu dois remplacer, dans haut.php, cette partie :
# <!-- Formulaire pour le choix des langues -->
# <form method="post" action="">
#
#
#
# </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...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 16:50
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);
}
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 16:39
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>
<title>Stein-Heurtey Production</title>
PRODUCTION
<!-- Formulaire pour le choix des langues -->
<form method ="post" action="" id="locales">
</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 '';break;
}
?>
<!--
Copyright@X2theZ
-->
</html>
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 16:28
Oui je le veux :-)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 16:01
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?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 15:02
Lol c'est très gentil, merci :-)(fais gaffe, je PEUX vérifier si c'est vrai, hein... ;-) )
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 14:48
j'ai mis un petit dix tu le mérites bien....
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 14:27
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 ;)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 13:51
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 ;-)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 13:41
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...
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 13:33
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 !)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 13:29
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!!!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 12:36
Par exemple :
<!-- Formulaire pour le choix des langues -->
<form method="post" action="" id="locales">
</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);
}
?>
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 11:58
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???
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 11:46
Bon courage :-)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 11:38
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!!!!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 11:21
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.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 11:11
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...
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 10:56
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?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 4 janv. 2006 à 10:55
- 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.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 4 janv. 2006 à 10:32
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!!!
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 17:22
je crois bien que c'est ca le pb
je dois tracer
je fais des tests demain
merci pour tout
je t'm :D
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 17:18
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 16:36
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
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 16:35
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...
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 16:27
en gros il ne trouve plus les extensions php_gd2.dll
php_sockets.dll
php_zip.dll
je suis perdu
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 16:26
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 !!!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 16:06
C'est dans le dossier 'apache'. Tu as php.ini tout court.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 16:02
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 15:45
Ceci dit, j'évite les connexions persistantes généralement, moi.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 15:44
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.
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 15:42
cool j'ai refait mon texte et les deux se sont affichés LOL
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 15:41
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?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 13:59
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 ;-)
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 11:54
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 11:45
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...?
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 11:40
heu...
je veux bien te croire
mais tu peux essayer de me convaincre avec des arguments?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 11:30
C'est comme EasyPHP, mais en mieux à mon sens (ça reste mon avis hein).
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 11:27
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?
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 10:16
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!
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 10:03
Oui, PHP 5 est rétro compatible avec PHP4. Tu ne devrais pas rencontrer de problème majeur.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 3 janv. 2006 à 10:02
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).
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 09:58
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 ?
LaTatadu91
Messages postés968Date d'inscriptionjeudi 20 mai 2004StatutMembreDernière intervention26 avril 20131 3 janv. 2006 à 09:52
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
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 8 sept. 2005 à 09:01
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/
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 7 sept. 2005 à 21:40
"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... :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 5 sept. 2005 à 11:42
[mode flood]
Pas mal le Mal à la main ^^ mdr !
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).
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 3 sept. 2005 à 17:49
[mode flood]
Pas mal le Mal à la main ^^ mdr !
flood
phpiste
Messages postés15Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 6 décembre 2005 2 sept. 2005 à 13:08
(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 ;)
phpiste
Messages postés15Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 6 décembre 2005 2 sept. 2005 à 12:53
phpiste
Messages postés15Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 6 décembre 2005 2 sept. 2005 à 12:45
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 2 sept. 2005 à 12:36
J'ai re-modifié, j'utilise maintenant HTTP_USER_AGENT. Si cela échoue, on retourne à la langue par défaut.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 2 sept. 2005 à 11:31
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 2 sept. 2005 à 10:55
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...
phpiste
Messages postés15Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 6 décembre 2005 2 sept. 2005 à 09:24
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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 2 sept. 2005 à 09:21
Vous faites chier hein !!! ;-)
Ok ok, c'est une bonne idée. je le ferai :-)
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 1 sept. 2005 à 17:09
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 {
}
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 1 sept. 2005 à 16:23
Voilà :-)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 1 sept. 2005 à 16:15
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.
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 1 sept. 2005 à 13:39
Ou si tu y tiens vraiment... fait un switch() :)
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 1 sept. 2005 à 13:37
$_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 :)
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 1 sept. 2005 à 09:03
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
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> ?
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 1 sept. 2005 à 01:52
Rhooo !!!
Regarde ton formulaire ^^
<form>
Il faut un balise BLOCK ! ^^
</form>
Et puis :
<!-- 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 ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 août 2005 à 17:53
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.
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 31 août 2005 à 16:56
Oué, mais bon ... ma soluce est plus esthétique ^^
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 août 2005 à 16:30
ben tu le passes pas, tu appelles avec
echo findLocales ('', 'bloc');
lol
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 31 août 2005 à 16:09
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 ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 août 2005 à 16:03
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.
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 31 août 2005 à 15:51
echo findLocale ('msg', 'GERMAN');
echo findLocale ('msg'); // Langue par default
Et comme ca ?
Je t'MSN ^^
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 31 août 2005 à 15:04
$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 ?
JoJo738
Messages postés1267Date d'inscriptionmercredi 7 juillet 2004StatutMembreDernière intervention29 juin 20102 31 août 2005 à 15:00
8 avril 2015 à 19:47
Quelqu'un saurait comment corriger cette erreur que retourne fct.php?
Merci
16 mars 2011 à 09:58
Sinon petit aparte ton site possède beaucoup de contenu?
16 mars 2011 à 09:36
15 mars 2011 à 21:36
15 mars 2011 à 19:56
en espérant une reponse positive ;) je suis un debutant en programamtion web.
15 mars 2011 à 19:13
15 mars 2011 à 16:42
14 oct. 2008 à 17:29
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 ;)
14 oct. 2008 à 13:17
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 :)
10 oct. 2008 à 18:54
9 oct. 2008 à 20:53
Désolé pour les multipostes ^^
Juste pour savoir s'il existe ou non d'éventuelles optimisations ou changement de code
merci d'avance ;)
30 sept. 2008 à 23:48
30 sept. 2008 à 23:37
30 sept. 2008 à 23:29
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 :)
2 juil. 2007 à 13:26
<FRANCAIS>
<msg><![CDATA[Bonjour 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.
30 juin 2007 à 23:29
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>Bonjour 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
26 oct. 2006 à 13:38
utf8_decode ()
26 oct. 2006 à 13:25
merci pour cet exemple multilangue Malaman.
j'ai eu des problèmes sous ie avec le , 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
3 sept. 2006 à 14:08
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)');
3 sept. 2006 à 11:56
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
26 août 2006 à 13:00
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...)
26 août 2006 à 12:44
13 juin 2006 à 11:34
@++
R@f
13 juin 2006 à 10:55
http://fr2.php.net/manual/fr/ref.xml.php
et
http://fr2.php.net/manual/fr/ref.domxml.php
13 juin 2006 à 10:47
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
13 juin 2006 à 10:45
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.
13 juin 2006 à 10:39
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
13 juin 2006 à 10:33
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.
13 juin 2006 à 10:29
@++
R@f
13 juin 2006 à 10:26
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).
13 juin 2006 à 09:39
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
18 janv. 2006 à 16:19
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>
<title>Lecture de fichier</title>
LECTURE DE FICHIER
<?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
";
$nblignes = fgets($fp,3);
//echo"$nblignes";
$vide = fgets($fp,20);
//echo"$vide
";
$vide2 = fgets($fp,20);
//echo"$vide2
";
for($i=0;$i<$nblignes;$i++)
{
$buffer[$i] = fgets($fp,50);
}
$vide = fgets($fp,20);
?>
* voir les valeurs :
<?php
for($i =0;$i<$nblignes;$i++)
{
echo\"<li>$buffer[$i]</li>\";
}
?>
<?php
}
?>
</html>
je pense que tu verras mieux le pb et aussi ce que je veux faire...
merci bcp!
18 janv. 2006 à 11:27
18 janv. 2006 à 11:16
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
18 janv. 2006 à 09:30
Si j'ai le temps, je tâche de m'y mettre.
Il y a juste à modifier la fonction findLocale ().
18 janv. 2006 à 09:21
17 janv. 2006 à 22:24
Bon ben tanpis, à moins de faire une pétition à mon hébergeur, c'est pas gagné ^_^
Merci ;)
17 janv. 2006 à 22:08
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
10 janv. 2006 à 10:44
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
10 janv. 2006 à 10:27
10 janv. 2006 à 10:25
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....
10 janv. 2006 à 10:21
ecoute je test ca de suite...
j'espere que c'est ca, jte tiens au courant ds les minutes qui suivent...
10 janv. 2006 à 10:13
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.
10 janv. 2006 à 10:09
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.
10 janv. 2006 à 10:00
je sais pas ce que jte fais mais je veux bien
faire ce que tu veux!!!
10 janv. 2006 à 09:42
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">
</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!
10 janv. 2006 à 09:27
Remets les moi ici, telles qu'elles sont maintenant. (pour ton pc, je plaisantais hein lol)
10 janv. 2006 à 09:13
9 janv. 2006 à 18:41
oui c'est une merde mais bon quel rapport
en tout cas je vois pas le probleme et je craque
9 janv. 2006 à 18:11
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 ;-)
9 janv. 2006 à 16:50
ca me rend fou
ca gache tout...
9 janv. 2006 à 16:02
c'est le locale qui devient vide a nouveau
c'est incroyable...
9 janv. 2006 à 15:23
ce serait locale qui serait devenu vide
j'en suis a peu pres sur....
9 janv. 2006 à 15:09
par contre il vide toujours langue
meme si je mets autre chose apres (keep)
je craaaaaaaaaque
9 janv. 2006 à 15:05
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
9 janv. 2006 à 14:57
et apres test il me garde le keep
mais me vide langue
c'est incroyable ca!!!
9 janv. 2006 à 14:44
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?
9 janv. 2006 à 14:28
Et tu conserves la structure comme avant sinon, pour la localisation.
Il va vider le KEEP, mais tu auras toujours ton locale.
9 janv. 2006 à 14:15
on dirait que oui il vire le dernier
mais pourquoi?
je ne fais rien si ce n'est une connexion via socket...
9 janv. 2006 à 14:12
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...
9 janv. 2006 à 14:11
9 janv. 2006 à 14:07
Array ( [authentification] => [privilege] => admin [nom] => tata [equipe] => xavier [login] => xavier [pass] => 268fb4595b079e19467c8feee67a856a [locale] => FRANCAIS [langue] => )
il ne garde pas la langue :(
9 janv. 2006 à 13:59
echo $valeur ($update true)?$nouvelle_valeur:(isset ($_POST['champ']))?$_POST['champ']:$valeur_par_defaut;
9 janv. 2006 à 13:53
Change de nom, ne mets pas locale, mais autre chose (langue, localisation, vce que tu veux. Mais faut le changer partout hein).
9 janv. 2006 à 13:52
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 : " />
et après passage dans ton programme, tu fais :
$_SESSION['locale'] = unserialize (base64_decode($_POST['session']));
9 janv. 2006 à 13:48
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] => )
9 janv. 2006 à 13:33
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!!!!
9 janv. 2006 à 13:26
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)
9 janv. 2006 à 12:15
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.
9 janv. 2006 à 12:03
Et si tu fais un print_r ($_SESSION) avant le formulaire, et une fois avant le traitement, une fois après ?
Qu'obtiens-tu ?
9 janv. 2006 à 12:00
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
9 janv. 2006 à 11:22
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
";
die();
}
else{
// echo"connexion établie
";
}
// 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é.
";
die();
}else
{
// echo"message envoyé
";
}
$reponse = fgets($idSocket, 10);
fclose($idSocket);
//echo"$reponse
";
if($reponse == "UPDATE OK")
{
?>
<form method="POST" action="http://localhost/index.php?page=4">
<?php echo findLocale ($_SESSION['locale'], 'titre5');?>
----
<?php echo findLocale ($_SESSION['locale'], 'speedmes');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'nbrecords');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'tolerance');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'reponse');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'maxtime_adv');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'maxtime_dis');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'duration');?>,
<?php echo' , ';?>
<?php echo findLocale ($_SESSION['locale'], 'forcing');?>
<?php echo findLocale ($_SESSION['locale'], 'notice');?>
</form>
<?php
}
else {
?> <?php echo findLocale ($_SESSION['locale'], 'msgerr');?>
<form method="POST" action="http://localhost/index.php?page=4">
<?php echo findLocale ($_SESSION['locale'], 'titre5');?>
----
<?php echo findLocale ($_SESSION['locale'], 'speedmes');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'nbrecords');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'tolerance');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'reponse');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'maxtime_adv');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'maxtime_dis');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'duration');?>,
<?php echo' , ';?>
<?php echo findLocale ($_SESSION['locale'], 'forcing');?>
<?php echo findLocale ($_SESSION['locale'], 'notice');?>
</form>
<?php }
}else
{
?>
<form method="POST" action="http://localhost/index.php?page=4">
<?php echo findLocale ($_SESSION['locale'], 'titre5');?>
----
<?php echo findLocale ($_SESSION['locale'], 'speedmes');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'nbrecords');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'tolerance');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'reponse');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'maxtime_adv');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'maxtime_dis');?>,
<?php echo' , ';?>
----
<?php echo findLocale ($_SESSION['locale'], 'duration');?>,
<?php echo' , ';?>
<?php echo findLocale ($_SESSION['locale'], 'forcing');?>
<?php echo findLocale ($_SESSION['locale'], 'notice');?>
</form>
<?php
}
?>
cette page est appelé depuis mon index.php qui inclut cette page...
merci de bien vouloir te pencher sur mon cas
6 janv. 2006 à 17:13
6 janv. 2006 à 17:02
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
et les accents passent apparement ...
6 janv. 2006 à 16:49
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"
6 janv. 2006 à 16:28
http://www.w3schools.com/xml/xml_encoding.asp
6 janv. 2006 à 16:20
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
4 janv. 2006 à 17:04
4 janv. 2006 à 17:04
c'était bien ca le probleme
fallait laisser le formulaire caché dans haut.php
merci beaucoup !!!!
4 janv. 2006 à 16:57
<?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?
4 janv. 2006 à 16:55
Tu dois remplacer, dans haut.php, cette partie :
# <!-- Formulaire pour le choix des langues -->
# <form method="post" action="">
#
#
#
# </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...
4 janv. 2006 à 16:50
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);
}
4 janv. 2006 à 16:39
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>
<title>Stein-Heurtey Production</title>
PRODUCTION
* : Main
<li>[admin.php ';
echo findLocale ($_SESSION['locale'], 'sstitre1');?>
]
Choose your language :
<!-- Formulaire pour le choix des langues-->
<!-- Formulaire pour le choix des langues -->
<form method ="post" action="" id="locales">
</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 '';break;
}
?>
<!--
Copyright@X2theZ
-->
</html>
4 janv. 2006 à 16:28
4 janv. 2006 à 16:01
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?
4 janv. 2006 à 15:02
4 janv. 2006 à 14:48
4 janv. 2006 à 14:27
je vais essayer de faire mon xml sur mon site entier
jte remercie vivement
a bientot tres certainement ;)
4 janv. 2006 à 13:51
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 ;-)
4 janv. 2006 à 13:41
é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...
4 janv. 2006 à 13:33
heu...c'est quoi un daron...? (c'est que moi, le langage des djeun's, à mon âge avancé, j'y comprends plus grand chose !)
4 janv. 2006 à 13:29
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!!!
4 janv. 2006 à 12:36
<!-- Formulaire pour le choix des langues -->
<form method="post" action="" id="locales">
</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);
}
?>
4 janv. 2006 à 11:58
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???
4 janv. 2006 à 11:46
4 janv. 2006 à 11:38
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!!!!
4 janv. 2006 à 11:21
4 janv. 2006 à 11:11
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...
4 janv. 2006 à 10:56
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?
4 janv. 2006 à 10:55
- 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.
4 janv. 2006 à 10:32
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!!!
3 janv. 2006 à 17:22
je dois tracer
je fais des tests demain
merci pour tout
je t'm :D
3 janv. 2006 à 17:18
;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
3 janv. 2006 à 16:36
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
3 janv. 2006 à 16:35
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...
3 janv. 2006 à 16:27
php_sockets.dll
php_zip.dll
je suis perdu
3 janv. 2006 à 16:26
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 !!!
3 janv. 2006 à 16:06
3 janv. 2006 à 16:02
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.
3 janv. 2006 à 15:45
3 janv. 2006 à 15:44
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.
3 janv. 2006 à 15:42
3 janv. 2006 à 15:41
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?
3 janv. 2006 à 13:59
mais comme tu veux ;-)
3 janv. 2006 à 11:54
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.
3 janv. 2006 à 11:45
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...?
3 janv. 2006 à 11:40
je veux bien te croire
mais tu peux essayer de me convaincre avec des arguments?
3 janv. 2006 à 11:30
http://www.wampserver.com/
C'est comme EasyPHP, mais en mieux à mon sens (ça reste mon avis hein).
3 janv. 2006 à 11:27
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?
3 janv. 2006 à 10:16
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!
3 janv. 2006 à 10:03
3 janv. 2006 à 10:02
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).
3 janv. 2006 à 09:58
ca ne me derange pas de passer au 5 mais est ce que tout ce que j'ai developper sur le 4 passera encore ?
3 janv. 2006 à 09:52
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
8 sept. 2005 à 09:01
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/
7 sept. 2005 à 21:40
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... :)
5 sept. 2005 à 11:42
Pas mal le Mal à la main ^^ mdr !
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).
3 sept. 2005 à 17:49
Pas mal le Mal à la main ^^ mdr !
flood
2 sept. 2005 à 13:08
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 ;)
2 sept. 2005 à 12:53
et : http://www.phpfrance.com/forums/voir_reponse-54763.php&sid=24c7047c13e1a216568fe4be1aaa13a9
Ca peut être utile ;)
2 sept. 2005 à 12:45
(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.
2 sept. 2005 à 12:36
2 sept. 2005 à 11:31
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.
2 sept. 2005 à 10:55
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...
2 sept. 2005 à 09:24
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.
2 sept. 2005 à 09:21
Ok ok, c'est une bonne idée. je le ferai :-)
1 sept. 2005 à 17:09
if($doc->$langue) {
} else {
}
1 sept. 2005 à 16:23
1 sept. 2005 à 16:15
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.
1 sept. 2005 à 13:39
1 sept. 2005 à 13:37
# $_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 :)
1 sept. 2005 à 09:03
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> ?
1 sept. 2005 à 01:52
Regarde ton formulaire ^^
<form>
Il faut un balise BLOCK ! ^^
</form>
Et puis :
<!-- 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 ?
31 août 2005 à 17:53
31 août 2005 à 16:56
31 août 2005 à 16:30
echo findLocales ('', 'bloc');
lol
31 août 2005 à 16:09
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 ?
31 août 2005 à 16:03
Donc non. Pour au'on puisse éventuellement ne paqs utiliser la variable de session.
31 août 2005 à 15:51
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]);
31 août 2005 à 15:34
je fais un update de toutes façons pour le message d'erreur, je rajoute ca aussi !
31 août 2005 à 15:29
- Si $loc est vide on lui met $_SESSION['locale'];
- Sinon on met la valeur demandé par l'utilisateur ^^
31 août 2005 à 15:25
Pourquoi tu veux absolument tester $loc ?
J'essaye d'inclure un message par défaut maintenant...mais je dois faire une connerie lol.
31 août 2005 à 15:22
else {
$loc = $loc;
}
est inutile :D
Rho ... le flood ^^
31 août 2005 à 15:14
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 ^^
31 août 2005 à 15:04
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 ?
31 août 2005 à 15:00
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 ?