IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

PHP5 & simplexml


Sujet :

Langage PHP

  1. #21
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    C'est sûr que c'est plus pratique à l'utilisation mais, comme je cherchais à le dire, la gestion serait plus difficile puisque l'on introduit alors un cas particulier. Pour en modifier le texte, par exemple, on n'utilise plus $sxml->day1 = ... mais $sxml->day[1] ... Même chose pour la suppression (unset($sxml->day[1])).
    utiliser $sxml->day[1] plutot que $sxml->day1 ne me derange absolument pas, ce qui m'effraye le plus c'est la possiblité que l'ordre des jours change dans le fichier xml!!
    je pense que je maintiendrai la solution de day1 et day2, en feras tu de meme??

    Si la volumétrie des données le justifie et que ça n'en complique pas la gestion : oui.
    quel est le poids maximum recommandé pour un fichier xml?

    Ce n'est pas forcément le meilleur outil de ce point de vue (gettext par exemple) ... L'un dans l'autre, je pense, ça revient au même : il faut juste s'assurer si une traduction incomplète puisse tout de même être utilisée qu'il y ait quand même quelque chose d'afficher au client qui soit exploitable (l'élément n'existe pas - isset - et/ou il est vide - empty). Ici, l'inconvénient étant que le msgid est plutôt court et pas réellement représentatif de la chaîne à traduire. L'idéal serait peut être alors d'effectuer une simple copie des documents les plus à jour puis d'en effectuer la traduction.
    j'aurais peut etre pas du poser cette question maintenant car il est encore trop tot. le site est actuellement en frrancais et anglais, une 3e voire une Nieme langue ne verront le jour avant 2011. je posterai s'il le faut le moment venu!!

    en tout cas merci beaucoup pour tout, j'ai vraiment beaucoup appris grace a ce post.
    je maintiens ce post comme non resolu pendant quelques jours, j'aurais peut etre d'autres question d'ici là

    Bien cordialement

  2. #22
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par redah75 Voir le message
    utiliser $sxml->day[1] plutot que $sxml->day1 ne me derange absolument pas, ce qui m'effraye le plus c'est la possiblité que l'ordre des jours change dans le fichier xml!!
    je pense que je maintiendrai la solution de day1 et day2, en feras tu de meme??
    Oui, il faudrait conserver l'idée d'un accès direct sinon il faudra gérer/coder ce genre d'exception.

    Citation Envoyé par redah75 Voir le message
    quel est le poids maximum recommandé pour un fichier xml?
    Bonne question, ça dépend déjà du serveur (ressources disponibles). Au plus quelques Mo (en ces conditions) ?

  3. #23
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonne question, ça dépend déjà du serveur (ressources disponibles). Au plus quelques Mo (en ces conditions) ?
    hehe, je suis heureux de enfin te poser une question a laquelle tu n'as pas une reponse )
    on a un bon serveur: Intel Corei5 4x 2.66GHz avec 8Go de RAM.
    je pense qu'avant de separer les fichiers, je vais tout mettre dans un seul fichier pour voir le poids que ca represente et j'agirai en consequence...

  4. #24
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Bonjour,

    une toute petite question qui me traverse l'esprit:
    faut il mettre ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    // icicode php pour verifier la valeur de $_GET['lang'] pour selectionner la langue
    $lang = "en ou fr...";
    $xml = simplexml_load_file("$lang/general.inc.xml");
    dans un fichier que j'inclus dans chaque page du site ou plutot dans une fonction??
    je sais que tu vas me dire dans une class mais je ne suis pas trop familier avec la programmation oop

    merci

  5. #25
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Ni l'un ni l'autre : aucune de ces deux solutions ne vous permet d'encapsuler toute votre logique. Seule une classe le permettrait

    L'inclusion (POO ou non), est tout de même une bonne idée.

    (je précise un poil : avec des fonctions vous allez soit devoir relire votre fichier XML à chaque traduction à faire ou alors avoir à gérer des portées différentes - ie utiliser des variables externes aux fonctions)

  6. #26
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Citation:
    Envoyé par redah75
    puisque les caracteres interdits par xml sont automatiquement convertis en entites correspondantes, est ce bien utile de mettre les CDATA ??
    et aussi lorsque je traduis des mots pour des les boutons (valider, supprimer, ajouter au panier, ...), ce n'est pas la peine d'utiliser les CDATA aussi ?

    Non, en effet. Ici, un CDATA n'est utile que lors d'une édition manuelle de votre fichier XML et que vous ne voulez pas prendre le soin de potentiellement retranscrire ces caractères en leurs entités.
    je me suis gouré, "<" ou ">" par exemple sont bient retranscrits en leurs entité qui est &lt; mais le "&" reste toujours interdit par xml
    avez vous une solution a ca ou suis je obligé d'utiliser CDATA??
    si je dois utiliser CDATA, devrais je mettre CDATA dans TOUS les elements ou uniquement ceux susceptibles de contenir des caracteres speciaux?

    Ni l'un ni l'autre : aucune de ces deux solutions ne vous permet d'encapsuler toute votre logique. Seule une classe le permettrait

    L'inclusion (POO ou non), est tout de même une bonne idée.

    (je précise un poil : avec des fonctions vous allez soit devoir relire votre fichier XML à chaque traduction à faire ou alors avoir à gérer des portées différentes - ie utiliser des variables externes aux fonctions)
    le probleme c'est que je ne connais rien en POO!! quelle sera la solution pour l'affichage de textes avec une bonne methode mis a part en POO??
    j'ai deja essaye de m'y mettre a la POO mais rien a faire. je ne comprends absolument rien! http://www.developpez.net/forums/d84...vs-simple-php/

  7. #27
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    je me suis gouré, "<" ou ">" par exemple sont bient retranscrits en leurs entité qui est &lt; mais le "&" reste toujours interdit par xml
    je rectifie cette phrase.
    c'est pas les &lt; qui posent problem mais plutot les &eacute; ...!!
    que faire?? je peux me permettre d'inserer dans le fichier xml le mot février au lieux de f&eacute;vrier?

  8. #28
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par redah75 Voir le message
    je me suis gouré, "<" ou ">" par exemple sont bient retranscrits en leurs entité qui est &lt; mais le "&" reste toujours interdit par xml
    avez vous une solution a ca ou suis je obligé d'utiliser CDATA??
    si je dois utiliser CDATA, devrais je mettre CDATA dans TOUS les elements ou uniquement ceux susceptibles de contenir des caracteres speciaux?
    Même chose pour le &, il doit être écrit &amp; ou alors être placé dans un bloc CDATA quand vous éditez manuellement votre document.

    Le CDATA sera nécessaire dès que vos données contiennent ou sont susceptibles de contenir des caractères réservés.


    Et pour la POO, vous l'utilisez déjà en réalité quand vous employez les extensions SimpleXML ou DOM (PHP introduisant un certain nombre de classes de base).

    EDIT :
    Citation Envoyé par redah75 Voir le message
    je rectifie cette phrase.
    c'est pas les &lt; qui posent problem mais plutot les &eacute; ...!!
    que faire?? je peux me permettre d'inserer dans le fichier xml le mot février au lieux de f&eacute;vrier?
    Ce sont des entités HTML, elles ne sont pas définies en XML à moins de les y redéfinir (via DTD). Autant ne pas les utiliser, c'est inutile.

  9. #29
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Ce sont des entités HTML, elles ne sont pas définies en XML à moins de les y redéfinir (via DTD). Autant ne pas les utiliser, c'est inutile.
    hehe, la ca y est, je perds mes reperes...
    je repose la question autrement
    que feriez-vous si vous devez rentrer le mot "Décembre" dans votre fichier xml???
    apparemment mon fichier xml a l'air de bien accepter des elements de ce type: <a>Février</a> et dans ma page php, il m'affiche correctement Février a l'aide de echo $xml->a;

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $xml->c = "<a href='text.php?t=1&b=2'>Février -> \"Mars\"</a>";
    me donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <c>&lt;a href='text.php?t=1&amp;b=2'&gt;Février -&gt; "Mars"&lt;/a&gt;</c>
    dans mon fichier xml

    devrais-je continuer a coder de cette maniere?

  10. #30
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par redah75 Voir le message
    devrais-je continuer a coder de cette maniere?
    Oui ! Pourquoi faire autrement ou se compliquer inutilement la tâche ?

    (Note : les extensions qui dépendent de libxml2 (comme SimpleXML ou DOM par exemple) utilisent en interne l'encodage UTF-8)

  11. #31
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Citation Envoyé par julp Voir le message
    Oui ! Pourquoi faire autrement ou se compliquer inutilement la tâche ?

    (Note : les extensions qui dépendent de libxml2 (comme SimpleXML ou DOM par exemple) utilisent en interne l'encodage UTF-8)
    eh ben c'est genial, que des bonnes nouvelles avec toi
    en plus je viens de faire un test et tous ces caracteres sont bien interpretes: éèàçôîöï
    je pensais que les caracteres accentués sont mal interpretes comme par un fichier PHP...

    il me reste mnt 2 chose et ce feuilleton sera fini, j'espere
    1- comment et de quelle maniere integrer le script qui permet d'appeler le fichier langue.xml? je vais penser a quelque chose et vous le soumettrai pour que vous me donniez votre avis

    2- je souhaiterai mettre une arborescence pour le menu de maniere a ce que la page "plan du site" soit generée automatiquement, j'ai pense a une structure comme ci-apres
    <?xml version="1.0" encoding="UTF-8"?>
    <translation>
    <a>blabla</a>
    <b>...</b>

    <!--Menu-->
    <home link = "home.php">Accueil</home>
    <presentation link = "presentation.php">Présentation</presentation>
    ...

    <!--Sous-menu-->
    <contact_us>Nous contacter</contact_us>
    <newsletter>Newsletter</newsletter>

    </translation>
    mais je vois pas trop comment lier de maniere simple et efficace le sous-menu au menu!!
    une idee??

  12. #32
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    1) pas compris, donc on attendra.

    2) de manière hiérarchique mais en quoi c'est lié au sujet initial : vous allez vraiment avoir des menus différents (hormis les textes) d'une langue à l'autre ?
    Si vous voulez vraiment représenter votre menu par un fichier XML, autant faire ça autrement.
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <menu>
        <item msgid="home" page="index.php" />
        <item msgid="presentation" page="presentation.php" />
        <submenu msgid="communication">
            <item msgid="contact_us" page="contact.php" />
            <item msgid="newletter" page="newsletter.php" />
        </submenu>
    </menu>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    function display_menu($sxe) {
        echo '<ul>';
        foreach ($sxe as $c) {
            echo '<li>';
            switch ($c->getName()) {
                case 'item':
                    printf('<a href="%s">%s</a>', $c['page'], $GLOBALS['i18n']->translate($c['msgid']));
                    break;
                case 'submenu';
                    echo $GLOBALS['i18n']->translate($c['msgid']);
                    display_menu($c);
                    break;
            }
            echo '</li>';
        }
        echo '</ul>';
    }
     
    $i18n = new I18N_SimpleXML('en');
    $sxml = simplexml_load_file('menu.xml');
    display_menu($sxml);

  13. #33
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    afin de mieux comprendre, voici a quoi ressemble le menu dont je vous parle: http://iifiir.org/new/index-home.php
    il n'est pas encore operationnel. pour chaque rubrique (Accueil, Presentation, ...) j'ai des sous-rubriques (boutique en ligne, Newsletter, ...)

    je pense donc que la structure que vous m'avez donnée n'est pas adapté a mon cas!!

    $GLOBALS['i18n'], c'est quoi ca? et ca sert a quoi???

  14. #34
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Erf, enfin ce que je cherche à dire c'est qu'il n'y a aucun intérêt à représenter le menu en lui-même (sa structure) dans le document de traduction à moins, qu'effectivement elle soit totalement différente d'une langue à l'autre. Sinon, en temps normal, il suffit de faire générer le menu avec PHP, la méthode de traduction ne change pas.

    Citation Envoyé par redah75 Voir le message
    $GLOBALS['i18n'], c'est quoi ca? et ca sert a quoi???
    C'est une question de portée, cela fait référence à la variable $i18n qui est en dehors de la fonction (on pouvait aussi utiliser global $i18n en début de fonction). Voir la documentation : Portée des variables.

  15. #35
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    Erf, enfin ce que je cherche à dire c'est qu'il n'y a aucun intérêt à représenter le menu en lui-même (sa structure) dans le document de traduction à moins, qu'effectivement elle soit totalement différente d'une langue à l'autre. Sinon, en temps normal, il suffit de faire générer le menu avec PHP, la méthode de traduction ne change pas.
    je pensais que je fais 2 coups avec une seule pierre en definissant la structure du menu dans le fichier de traduction:
    1er coup pour la traduction
    2e coup pour generer la page "plan du site" automatiquement avec du PHP en se servant de la structure du menu definie dans le fichier xml!!
    comment voyez vous alors mon menu dans le fichier xml?

    'est une question de portée, cela fait référence à la variable $i18n qui est en dehors de la fonction (on pouvait aussi utiliser global $i18n en début de fonction). Voir la documentation : Portée des variables.
    je pensais bien connaitre le PHP mais là vous me demoralisez a mort
    j'ai l'impression que je fais mes premiers pas en PHP

  16. #36
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par redah75 Voir le message
    je pensais que je fais 2 coups avec une seule pierre en definissant la structure du menu dans le fichier de traduction:
    1er coup pour la traduction
    2e coup pour generer la page "plan du site" automatiquement avec du PHP en se servant de la structure du menu definie dans le fichier xml!!
    comment voyez vous alors mon menu dans le fichier xml?
    J'y ai déjà répondu plusieurs fois : votre solution, à mon avis, n'est pas "viable" car d'une part vous aurez probablement du mal à la gérer par rapport à ce que vous prévoyez et d'autre part, ça signifierait que tous vos documents XML sont mis à jour en même temps à la moindre modification de votre structure ou de ses données. Gardez-les, conformément à votre idée de départ, pour n'en faire que la traduction. La structure n'a pas non plus besoin d'être répétée/dupliquée : un seul exemplaire, quel qu'en soit la forme, n'est nécessaire. D'autant plus que ça posera bien moins de problème pour faire évoluer un de ces deux éléments.

  17. #37
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    ah ouiiii, je viens de bien comprendre ce que vous me disiez, j'y ai meme pas pensé
    je vais avancer la dessus et vous mettrai au courant

    en attendant une toute petite precision:
    si j''ai 2 fichier xml qui tous deux ont le meme nom de racine <translation> que j'appelle dans la meme page. cela posera t il un probleme ou un conflit? au vaut il mieux donner des noms de racines differents?

  18. #38
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    C'est plus une question de logique : est-ce que ça représente la même chose ou non ? Parce que sinon, non, ça ne posera aucun problème puisque chaque document aura son propre objet SimpleXMLElement. D'ailleurs, étant donné que la racine est elle même représentée par un SimpleXMLElement, vous n'en utiliserez probablement pas le nom.

  19. #39
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 901
    Points : 79
    Points
    79
    Par défaut
    C'est plus une question de logique : est-ce que ça représente la même chose ou non ? Parce que sinon, non, ça ne posera aucun problème puisque chaque document aura son propre objet SimpleXMLElement. D'ailleurs, étant donné que la racine est elle même représentée par un SimpleXMLElement, vous n'en utiliserez probablement pas le nom.
    au fait il s'agit de mes differents fichiers de langues, j'en ai pour l'instant mis que 3:
    - emails.inc.xml // tous les textes d'emails
    - texts.inc.xml // textes affiches sur la page web
    - general.inc.xml // boutons, titres, messages erreurs

    il se peut que j'inclus 2 voire les 3 fichiers dans une seule page, et a ce moment là, je ne sais ce qui peut se produire si les 3 fuchiers ont la meme racine <translation>???
    me conseilles tu de garder <translation></translaton> pour les trois fichiers? ou plutot utiliser 3 racines differentes: <emails>, <texts> et <general> ??

    1) pas compris, donc on attendra.
    voila ce que je compte faire, je mets le code suivant dans un fichier .php
    que j'inclus au debut de chaque page web:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!empty($_GET['lang']))
    {
    	$lang = (is_dir("lang/".$_GET['lang'])) ? $_GET['lang'] : "en"; // english by default if no translated directory found
    }
    else $lang = "en"; // language by default
     
    $sxml = simplexml_load_file("lang/$lang/general.inc.xml");
    qu'en penses tu?

    concernant le menu, je metterai le code suivant (emelioré biensur) dans un fichier php que j'inclus dans chaque page afin d'afficher le menu, et qui aussi servira a generer la page "plan du site":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $menu_principal = array("lien1" => "accueil", "lien2" => "presentation", "lien3" => "conferences", "lien4" => "publications", ...); // où accueil et presentaion sont des elements traduits dans le fichier xml
    $sous_menu["accueil"] = array("lien1" => "boutique", "lien2" => "contact", "lien3" => "newsletter", ...); // boutique et contact sont ds le fichier xml egelement
    $sous_menu["presentaion"] = array(...);
    est ce une bonne methode?

  20. #40
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par redah75 Voir le message
    il se peut que j'inclus 2 voire les 3 fichiers dans une seule page, et a ce moment là, je ne sais ce qui peut se produire si les 3 fuchiers ont la meme racine <translation>???
    me conseilles tu de garder <translation></translaton> pour les trois fichiers? ou plutot utiliser 3 racines differentes: <emails>, <texts> et <general> ??
    Comme je l'ai dit, il n'y aura pas d'interférence car chaque document sera représenté par son propre objet SimpleXMLElement. Ce ne serait gênant, par exemple, que dans le cas où vous exploitez le nom de la racine pour créer un tableau dont la clé est son nom et où vous regrouperiez ces objets.

    /!\ Si vous en êtes à inclure plusieurs fichiers XML pour une même page, il faudrait peut être se demander s'il y a lieu de séparer vos données de traduction en différents fichiers. Et il faudrait, de préférence, également veiller à ne pas avoir plusieurs fois la même traduction dans vos différents fichiers.

    Citation Envoyé par redah75 Voir le message
    voila ce que je compte faire, je mets le code suivant dans un fichier .php
    que j'inclus au debut de chaque page web:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!empty($_GET['lang']))
    {
    	$lang = (is_dir("lang/".$_GET['lang'])) ? $_GET['lang'] : "en"; // english by default if no translated directory found
    }
    else $lang = "en"; // language by default
     
    $sxml = simplexml_load_file("lang/$lang/general.inc.xml");
    qu'en penses tu?
    Qu'il y a potentiellement une faille déjà suivant la réutilisation de vos paramètres GET (ici lang) car vous pourriez permettre à quelqu'un d'utiliser/afficher un fichier non prévu. Il faudrait introduire une vérification à ce niveau (ie que c'est un bien code et qu'on ne tente pas de remonter/utiliser votre arborescence ou à vous faire utiliser une source externe).

    L'usage de la méthode GET n'est pas adéquat : vous allez vous forcer à la retransmettre entre vos scripts sinon l'utilisateur va la perdre. Il faut en forcer la persistance (cookie et/ou session) lorsque l'une d'elle a été choisie. Eventuellement se baser sur les informations émises par le client (entête HTTP HTTP_ACCEPT_LANGUAGE) pour tenter de définir automatiquement une langue par défaut adaptée.

    Citation Envoyé par redah75 Voir le message
    concernant le menu, je metterai le code suivant (emelioré biensur) dans un fichier php que j'inclus dans chaque page afin d'afficher le menu, et qui aussi servira a generer la page "plan du site":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $menu_principal = array("lien1" => "accueil", "lien2" => "presentation", "lien3" => "conferences", "lien4" => "publications", ...); // où accueil et presentaion sont des elements traduits dans le fichier xml
    $sous_menu["accueil"] = array("lien1" => "boutique", "lien2" => "contact", "lien3" => "newsletter", ...); // boutique et contact sont ds le fichier xml egelement
    $sous_menu["presentaion"] = array(...);
    est ce une bonne methode?
    Je ne suis pas sûr d'avoir compris votre méthode, mais il serait bien plus simple de représenter cette hiérarchie de la même manière (tableau imbriqué ici). De ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $menu = array(
        'accueil' => array( # msgid => entrées du sous-menu
            'boutique' => 'x.php', # msgid => lien
            'contact' => 'y.php',
            'newsletter' => 'z.php',
        ),
        'presentation' => array(
            'a' => 'a.php',
            'b' => 'b.php',
        )
    );

Discussions similaires

  1. [SimpleXML] Configuration de php5 pour le XML
    Par hom dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 21/07/2006, 19h52
  2. [PHP5/simpleXML] Gros Fichiers
    Par vanilla dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 26/06/2006, 19h40
  3. [SimpleXML] Problème PHP5/XML pour des affichages particuliers
    Par vanilla dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 20/04/2006, 13h22
  4. Réponses: 3
    Dernier message: 23/08/2004, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo