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 :

Site en plusieures langues, quelles meilleures techniques


Sujet :

Langage PHP

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Site en plusieures langues, quelles meilleures techniques
    Bonjour à tous,

    Je vais refaire en site en plusieur langues ( 4 ou 5).
    Simplement je me demande quelle serait le meilleur moyen pour ceci.

    Pour le moment je me penche sur un fichier xml, mais il me semble que ca peut devenir comliqué et lourd a se retoruver.

    Je me dmane si vous auriez une autre idée professionnelle.
    Es-ce qu'en OO, ca pourrait le faire?

    En attendant voici un exemple de fichier XML, c'est comme ceci que j'ai fait une premier este qui fonctionne.

    Merci à tous pour vos bonnes idées
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
     
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE language SYSTEM "xmldoctype.dtd" >
    <!-- On doit définir l'emplacement du DTD ainsi que l'élément utilisé comme racine-->
     
    <language>
     
    <!-- MENU -->
      <xmldata id="menu_1">
        <translation lang="fr">Présentation</translation>
        <translation lang="en">Introduction</translation>
    	<translation lang="de"></translation>
    	<translation lang="it"></translation>
      </xmldata>
     
      <xmldata id="menu_2">
        <translation lang="fr">Plus de détail</translation>
        <translation lang="en">More detail</translation>
    	<translation lang="de"></translation>
    	<translation lang="it"></translation>
      </xmldata>
     
      <xmldata id="menu_3">
        <translation lang="fr">Démo</translation>
        <translation lang="en">Demo</translation>
    	<translation lang="de"></translation>
    	<translation lang="it"></translation>
      </xmldata>
     
       <xmldata id="menu_4">
        <translation lang="fr">Acheter</translation>
        <translation lang="en">Buy</translation>
    	<translation lang="de"></translation>
    	<translation lang="it"></translation>
      </xmldata>
    <!-- END MENU -->
     
    <!-- PAGE 1 -->
      <xmldata id="page_1_title">
        <translation lang="fr">Démonstration de Multilangue</translation>
        <translation lang="en">Demo multi lnaguage</translation>
    	<translation lang="de">Guten tag</translation>
    	<translation lang="it">Ciao bello</translation>
      </xmldata>
     
      <xmldata id="page1_1">
        <translation lang="fr">
    	Poésie
    	</translation>
        <translation lang="en">Small text</translation>
    	<translation lang="de">Kleine texte</translation>
    	<translation lang="it">Ciao bello</translation>
      </xmldata>
     
        <xmldata id="page1_2">
        <translation lang="fr">
    		J'ai cueilli cette fleur pour toi sur la colline.
     
    Dans l'âpre escarpement qui sur le flot s'incline,
    Que l'aigle connaît seul et seul peut approcher,
    Paisible, elle croissait aux fentes du rocher.
    L'ombre baignait les flancs du morne promontoire ;
    Je voyais, comme on dresse au lieu d'une victoire
    Un grand arc de triomphe éclatant et vermeil,
    À l'endroit où s'était englouti le soleil,
    La sombre nuit bâtir un porche de nuées.
    Des voiles s'enfuyaient, au loin diminuées ;
    Quelques toits, s'éclairant au fond d'un entonnoir,
    Semblaient craindre de luire et de se laisser voir.
    J'ai cueilli cette fleur pour toi, ma bien-aimée.
    Elle est pâle, et n'a pas de corolle embaumée,
    Sa racine n'a pris sur la crête des monts
    Que l'amère senteur des glauques goémons ;
    Moi, j'ai dit: Pauvre fleur, du haut de cette cime,
    Tu devais t'en aller dans cet immense abîme
    Où l'algue et le nuage et les voiles s'en vont.
    Va mourir sur un coeur, abîme plus profond.
    Fane-toi sur ce sein en qui palpite un monde.
    Le ciel, qui te créa pour t'effeuiller dans l'onde,
    Te fit pour l'océan, je te donne à l'amour. -
    Le vent mêlait les flots; il ne restait du jour
    Qu'une vague lueur, lentement effacée.
    Oh! comme j'étais triste au fond de ma pensée
    Tandis que je songeais, et que le gouffre noir
    M'entrait dans l'âme avec tous les frissons du soir !
     
     
    Victor HUGO 
    	</translation>
        <translation lang="en">A lot of texte</translation>
    	<translation lang="de">Viele worten</translation>
    	<translation lang="it">Boucoulo di texto</translation>
      </xmldata>
    <!-- END PAGE 1 -->  
     
    <!-- PAGE 2 -->
      <xmldata id="page_2_title">
        <translation lang="fr">Plus de détail</translation>
        <translation lang="en">More detail</translation>
    	<translation lang="de"></translation>
    	<translation lang="it"></translation>
      </xmldata>
     
      <xmldata id="page2_1">
        <translation lang="fr">
    	Poésie 2
    	</translation>
        <translation lang="en">Small text2222</translation>
    	<translation lang="de">Kleine texte2222</translation>
    	<translation lang="it">Ciao bello</translation>
      </xmldata>
     
      <xmldata id="page2_2">
        <translation lang="fr">
    		J'ai cueilli cette fleur pour toi sur la colline.
     
    Dans l'âpre escarpement qui sur le flot s'incline,
    Que l'aigle connaît seul et seul peut approcher,
    Paisible, elle croissait aux fentes du rocher.
    L'ombre baignait les flancs du morne promontoire ;
    Je voyais, comme on dresse au lieu d'une victoire
    Un grand arc de triomphe éclatant et vermeil,
    À l'endroit où s'était englouti le soleil,
    La sombre nuit bâtir un porche de nuées.
    Des voiles s'enfuyaient, au loin diminuées ;
    Quelques toits, s'éclairant au fond d'un entonnoir,
    Semblaient craindre de luire et de se laisser voir.
    J'ai cueilli cette fleur pour toi, ma bien-aimée.
    Elle est pâle, et n'a pas de corolle embaumée,
    Sa racine n'a pris sur la crête des monts
    Que l'amère senteur des glauques goémons ;
    Moi, j'ai dit: Pauvre fleur, du haut de cette cime,
    Tu devais t'en aller dans cet immense abîme
    Où l'algue et le nuage et les voiles s'en vont.
    Va mourir sur un coeur, abîme plus profond.
    Fane-toi sur ce sein en qui palpite un monde.
    Le ciel, qui te créa pour t'effeuiller dans l'onde,
    Te fit pour l'océan, je te donne à l'amour. -
    Le vent mêlait les flots; il ne restait du jour
    Qu'une vague lueur, lentement effacée.
    Oh! comme j'étais triste au fond de ma pensée
    Tandis que je songeais, et que le gouffre noir
    M'entrait dans l'âme avec tous les frissons du soir !
     
     
    Victor HUGO 
     
    J'ai cueilli cette fleur pour toi sur la colline.
     
    Dans l'âpre escarpement qui sur le flot s'incline,
    Que l'aigle connaît seul et seul peut approcher,
    Paisible, elle croissait aux fentes du rocher.
    L'ombre baignait les flancs du morne promontoire ;
    Je voyais, comme on dresse au lieu d'une victoire
    Un grand arc de triomphe éclatant et vermeil,
    À l'endroit où s'était englouti le soleil,
    La sombre nuit bâtir un porche de nuées.
    Des voiles s'enfuyaient, au loin diminuées ;
    Quelques toits, s'éclairant au fond d'un entonnoir,
    Semblaient craindre de luire et de se laisser voir.
    J'ai cueilli cette fleur pour toi, ma bien-aimée.
    Elle est pâle, et n'a pas de corolle embaumée,
    Sa racine n'a pris sur la crête des monts
    Que l'amère senteur des glauques goémons ;
    Moi, j'ai dit: Pauvre fleur, du haut de cette cime,
    Tu devais t'en aller dans cet immense abîme
    Où l'algue et le nuage et les voiles s'en vont.
    Va mourir sur un coeur, abîme plus profond.
    Fane-toi sur ce sein en qui palpite un monde.
    Le ciel, qui te créa pour t'effeuiller dans l'onde,
    Te fit pour l'océan, je te donne à l'amour. -
    Le vent mêlait les flots; il ne restait du jour
    Qu'une vague lueur, lentement effacée.
    Oh! comme j'étais triste au fond de ma pensée
    Tandis que je songeais, et que le gouffre noir
    M'entrait dans l'âme avec tous les frissons du soir !
     
     
    Victor HUGO 
    	</translation>
        <translation lang="en">A lot of texte2222</translation>
    	<translation lang="de">Viele worten2222</translation>
    	<translation lang="it">Boucoulo di texto</translation>
      </xmldata>
    <!-- END PAGE 2 -->  
     
     
    </language>
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonjour,

    Si tu n'as jamais besoin d'afficher deux langues à la fois, il ne faut surtout pas faire comme çà sinon tu charges les textes de l'ensemble des langues à chaque fois !

    Tu pourrais simplement avoir un fichier par langue et inclure le fichier idoine au chargement de ta page.

    Ce qui te permettrait d'avoir des XML de cette forme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="utf-8">
    <language encoding="utf-8" dir="ltr" code="fr">
        <translation alias="bonjour">Bonjour</translation>
    </language>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="utf-8">
    <language encoding="utf-8" dir="rtl" code="ar">
        <translation alias="bonjour">مرحبا</translation>
    </language>
    Ensuite si tu veux implémenter de la POO, tu créé une classe language (ou le nom que tu veux) qui permet de récupérer une chaine depuis son alias, et qui permettrait également de connaitre l'encodage, la direction et le code ISO du language.

    Pour finir, si tu veux rendre multilingue l'ensemble des données de ton site, et non seulement quelques éléments de layout, il vaut mieux gérer çà en DB à mon avis, ce sera plus simple.

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 222
    Points
    20 222
    Par défaut
    Il y'a plusieurs solutions possible, voici mon avis sur celle ci :

    - Variable PHP : Simple de prime abors, ingérable dès que beaucoup de traduction. C'est qui plus ai très moche et ca bouffe tout plein de mémoire.

    - Fichier XML : Solution nettement plus propre , mais j'ai des doutes sur les perf sur de gros fichiers de langues (temps de parsage)

    - Base de données : C'est un choix que beaucoup de monde fait , perso j'adhère pas du tout. Ca rajoute quand même pas mal de requête simplement pour la traduction , donc un risque non négligeable sur les performances. Le gros avantage reste cependant la facilité de gestion des données.

    - Gettext : C'est à mon gout la solution la plus adapté. Extrêment simple à faire traduire par des tiers (logiciel spécial genre poedit), très rapide car fichier compilé et extension php. Le problème c'est que ce n'est pas toujours simple à mettre en place (besoin d'une extension php spécifique et des locales sur le serveur)

    Note si en plus tu as du contenu en bdd à traduire , j'ai fait un petit article sur les méthode possible ici
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Ok, je pourrais travailler sur des fichier XML comme l'a dit TomasR.
    Créer un dossier "lang" , puis créé autant de dossiers enfants qu'il y a de pages. Et dans chaque dossier enfant, je pourrais avoir mes fichier XML par langue, comme l'a écrit thomasR.

    Ceci me permettrait de charger uniquement le contenu pour la page en question.

    Es-ce l'idée est faisable alors?
    Qu'en pensez-vous?
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    En regardant l'exemple qui a été donné dans le 1er post, dont tout se trouverait dans des XML sans distinction, je me dis qu'il y a peut être un aspect qui mérite des précisions.

    A mon sens, il faudrait distinguer 2 types de contenu :
    - Le contenu propre à l'interface
    - Le contenu du site (articles, produits, etc ...), le service proposer si on peu dire.

    Que les contenus propres à l'interface soient das des XML, ça peut être une excellente solution.
    Je n'ai pas eu (encore) l'occasion de l'expérimenter, mais peut être que ça viendra.
    En tout cas, j'ai opté pour du Php, et je confirme que c'est quelque peu le souk.

    Mais c'est surtout du contenu du site qui m'interpelle.
    Si on se tient à l'exemple (le contenu de Victor Hugo), il ne fait pas parti de l'interface à mon sens, mais du site.
    Du coup, ce contenu serait largement mieux dans une Bdd.
    Pour ma part, la question se pose même pas : Bdd.

    Mettre tout dans le même panier (xml), pas sûr que ce soit la bonne solution.
    Même le menu demande réflexion. Pas sûr la aussi qu'il est judicieux de le mettre dans du Xml.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

Discussions similaires

  1. Décider structure site en plusieurs langues
    Par balsamique dans le forum Débuter
    Réponses: 5
    Dernier message: 17/06/2011, 12h53
  2. Site en plusieurs langues
    Par bernardgiraud dans le forum Dreamweaver
    Réponses: 3
    Dernier message: 05/04/2010, 19h09
  3. Site avec plusieurs langues
    Par midosd dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 23/05/2009, 14h36
  4. création d'un site avec plusieurs langues
    Par ghyosmik dans le forum Langage
    Réponses: 2
    Dernier message: 22/05/2008, 04h06
  5. Un site en plusieur langue (Besoin de faire en russe)
    Par benbax dans le forum Eclipse PHP
    Réponses: 2
    Dernier message: 04/01/2008, 16h30

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