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 :

[Tableaux] multilinguisme


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut [Tableaux] multilinguisme
    qeul est selon vous la meilleur methode pour gerer le multilinguisme?
    (Me suis permis vu qu'il y a ni tuto ni post it sur le sujet...) pourtant ca doit etre un probleme courant.

    fichier langue séparé? array/dictionnaire DB?

    les methode utilisées par spip typo etc...

    si il y a bcp de reponces je ferais une synthèse ;-)

  2. #2
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Avec un fichier .mo -> http://www.poedit.org/

  3. #3
    Membre confirmé Avatar de ashurai
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 144
    Par défaut
    Pour ma part j'ai plusieur fichier de langue, j'inclus le bon selon le contexte.

  4. #4
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    perso, je crée un fichier par langue, dans le quel je définis mes constantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    define("__back","Retour");
    J'inclus le bon fichier selon le choix de langue, et quand je veux l'afficher :


    Note : Au cas où la constante est stoquée directement dans une DB, pour l'afficher :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo constant($mes_enregistrements['mon_champ']);
    Ce système me plait beaucoup, en cas d'ajout de langue, il n'y a qu'un fichier à rajouter, et hop

    m'enfin, j'ai pas testé d'autre système non plus
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  5. #5
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    j'ai vu une solution qui ressemblait a ca:
    $langue=array(
    "en"=>array("clef=>"word",....),
    "fr"=>array("clef"=>"mot",....)
    );

    je ne sais pas ce qui est le plus performant, array ou constant,
    tu n'as pas trop de problemes lors d'include si tu redefini plusieurs fois le meme mot?

    pour le html? je mange une (balise)saucise => ich essen eine gross (balise) wurst...
    avez vous rencontré des problème pour l'ordre des mots?
    surtout si un mot de la phrase est dynamique.

    la solution.mo je ne connais pas du tout, vais lire ca avec interet (je ne desespere pas de faire un jour un site qui aura du succes ;-)

  6. #6
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    aucun soucis, car il suffit de nommer correctement ses constantes, et hop, pas de soucis de redéfinition. Je les ai mis dans un fichier, triés par ordre alphabétique. dès que j'en rajoute un, hop, je le met à la bonne place.

    La solution du tableau me semble un peu lourde... pour chaque page, tu va charger les deux langues ...
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  7. #7
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Salut

    La solution proposée par macbook est celle conseillée par la doc PHP, cependant (comme nous en avons discuté ici), je n'en suis vraiment pas fan. J'imagine qu'elle est rapide mais bon, il y a trop de contraintes.

    J'ai adopté la même solution que titoumimi. C'est aussi ce qu'utilise phpBB, pour ne citer qu'un exemple.

  8. #8
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    Tjrs aussi mimi la titou... oui macbook il y a les mp pour ca ;-)

    macbook aurais tu un exemple de code?
    si j'ai bien compris poledit est un logiciel pour tenir a jour les traductions (qui sont stockée ds des fichiers .mo) avec 100% de la traduction , certitude etc ...
    y a t'il des librairie a installer? un fichier a inclure?

  9. #9
    Membre éclairé Avatar de BenoitDenis
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    536
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Avril 2005
    Messages : 536
    Par défaut
    Citation Envoyé par XtofRoland

    je ne sais pas ce qui est le plus performant, array ou constant,
    tu n'as pas trop de problemes lors d'include si tu redefini plusieurs fois le meme mot?
    Pour ma part j'utilise quasiment le même systeme mes mes constantes ne contiennent pas des mots mais plusieurs mots.

    Par exemple :
    - si le label d'un input est 'Date de naissance' j'ai une vairable DATE_OF_BIRTH qui contient la chaine
    -si dans ma page j'ai plusieurs paragraphes, j'ai une constante par paragraphe

    de plus je n'ai pas un fichier de langue mais un répertoire de langue qui contient un fichier par page ce qui évite les conflits de constantes...

    par exemple en haut de ma page index j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    include('languages/french/index.php');
    et la page index.php de languages/french contient toutes les constantes de la page index, j'ai le meme dans languages/english mais avec les constantes en anglais etc...
    Cela évit d'avoir un fichier trop gros a inclure et je n'ai pas 15 000 constantes de ce fait, le temps d'execution y gagne donc

    Je sais pas si j'ai été clair, c'est la solution adoptée par exemple, pour oscommerce.

  10. #10
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    merci pour le lien kirkis, les doublons sont ton dada ;-)
    je lis la methode gettext()

    personne ne parse son site pour le regénérer en plusieurs langues?
    le parser doit etre un peu plus dur a ecrire (si ca n'existe pas tout fait) ensuite on regenere le site et a l'execution ca doit etre plus performant.

    PS un exemple de code ca serait sympa ;-)

  11. #11
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Citation Envoyé par XtofRoland
    Tjrs aussi mimi la titou...
    C'est Haru, si je me souviens bien.

    Perso, je trouve absurde de devoir générer son site pour ensuite le parser entièrement afin de remplacer le texte par sa traduction...
    En plus, c'est pas maintenable :/

  12. #12
    Membre expérimenté
    Avatar de titoumimi
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    3 707
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 707
    Par défaut
    Citation Envoyé par Kirkis
    C'est Haru, si je me souviens bien.
    Presque Naru Narusegawa, du manga "Love hina" que je conseille fortement au passage.

    P'tite précision, au risque de casser le mythe... je suis un homme
    Globalement inoffensif
    Merci de respecter les règles du forum.
    Aucune question technique par MP !
    _______________________________________________________________________
    Cours Ruby et Ruby on Rails (RoR) - Cours PHP - FAQ Ruby / Rails - Livres Ruby / Rails
    Ajax facile avec Ruby on Rails, Prototype, script.aculo.us et les RJS
    Tutoriaux HTML/CSS et PHP

  13. #13
    Membre éprouvé
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Par défaut
    Pour ma par j'utilise un fichier par langue dans lequel je definie des tableaux associatif, chaque page de mon site à alors son tableau

    exemple pour index.php ce sera
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $_INDEX['title'] = "blabla";
    $_INDEX['name'] = "blabla";
    A par le fait que je me retrouve avec quelque doublons, ce qui n'est pas dramatique, ce systeme n'offre pas un grand confort pour les traducteurs, comparé à poedit.
    Sinon ce n'est pas très dificile à maintenir...

  14. #14
    Membre chevronné Avatar de XtofRoland
    Profil pro
    Inscrit en
    Août 2005
    Messages
    357
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 357
    Par défaut
    CREATE TABLE string_lang(id INT NOT NULL PRIMARY KEY AUTO_INCREMENT, page VARCHAR(10), lang CHAR(5) NOT NULL, string CHAR(254) NOT NULL, date DATETIME());

    <?
    $sql = "SELECT id,string FROM string_lang WHERE page=$page AND lang=$lang;";
    $rsql = mysql_query($sql);

    while ($row = mysql_fetch_object($rsql))
    {
    $id = $row->id;
    $string = $row->string;
    $strings[$id] = $string;
    }
    ...et dans le code HTML:
    <?=$strings['prenom'];?>

    un article sur le sujet

  15. #15
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Citation Envoyé par XtofRoland
    Tjrs aussi mimi la titou... oui macbook il y a les mp pour ca ;-)

    Citation Envoyé par titoumimi
    P'tite précision, au risque de casser le mythe... je suis un homme


    Le .mo c'est le système utilisé par wordpress par exemple. Sinon la méthode à la phpbb est pas mal non plus.

  16. #16
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    En effet, le système du fichier de langue, ou "à la phpBB", est très intéressant mais il serait encore mieux, comme le dit titoumimi, avec des constantes plutôt qu'un tableau associatif, puisque les chaînes ne changent pas.

  17. #17
    Membre émérite Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Par défaut
    Faudrait trouver un benchmark pour savoir laquelle solution est la moins couteuse en ressource.
    Après il y a la notion de maintenance. Et la dessus je trouve poedit assez élégant.

  18. #18
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Mouais... Ajoute une virgule dans ton texte par défaut, tu es obligé de répercuter le même changement dans toutes tes traductions.
    Dès lors qu'on duplique l'information, j'ai tendance à rechigner...

    [Edit] L'avantage de gettext() est que, s'il ne trouve pas une traduction, il se rabat sur la phrase originale, alors qu'un fichier de langue nous afficherait certainement soit un warning soit une erreur soit une chaîne vide.

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/08/2003, 18h04
  2. free sur des tableaux "a moitié dynamiques"
    Par barthelv dans le forum C
    Réponses: 4
    Dernier message: 31/07/2003, 15h30
  3. [langage] erreurs utilisation tableaux 2 dimensions
    Par drosof dans le forum Langage
    Réponses: 11
    Dernier message: 01/07/2003, 11h44
  4. Réponses: 6
    Dernier message: 04/04/2003, 15h28
  5. Les tableaux en PL/SQL
    Par GRUMLY dans le forum PL/SQL
    Réponses: 5
    Dernier message: 12/08/2002, 18h10

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