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 :

Conseils conception d'un site multi-langues


Sujet :

Langage PHP

  1. #1
    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 Conseils conception d'un site multi-langues
    Bonjour a tous,
    tout d'abord, j'espere que je poste au bon endroit!!

    je souhaiterai juste avoir des conseils sur la creation d'un site bilingue pour l'instant mais qui peut devenir trilingue voire meme multi-langues!!

    j'ai fait plusieurs recherches sur internet mais la majorite des reponses trouvees datent de 2004/2005. je me dis que les choses ont surement change depuis!!

    actuellement, j'ai 2 dossiers: fr et en qui contiennent les les pages web, mais j'avoue que parfois ca devient embetant de faire toujours les modifs 2 fois!!

    j'ai pense a avoir qu'une seule page web et 2 fichiers de langues qui contiennent les textes en anglais et francais...

    que pensez vous de cette solution? et quels sont les avantages et inconvenients ???

    Merci de votre aide,
    Reda

  2. #2
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    C'est pas le plus simple mais tu as gettext

    Sinon, tu peux aussi faire des fichiers de traduction avec des define()...

    Dans les deux cas, tu ne crées qu'un seul template et tu y introduis des variables

  3. #3
    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
    Merci darkstar123456 pour ta reponse.

    j'ai regarde pour gettext mais ca m'a l'air un peu complique!! est ce vraiment utile et important???

    je sais que define() sert a declarer des variables, mais quelle est la difference entre une simple declaration: $test = "Mon texte"; et define("TEST", "Mon texte"); ???

    cote referencement, c'est pas mauvais d'avoir une seule page au lieu de 2 (anglais et francais) ??

    Merci bien

  4. #4
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    oui je trouve aussi que gettext() est plus compliqué mais d'un autre côté c'est plus simple pour les gros sites qui proposent ou risque de proposer beaucoup de langues différentes

    le define() te permetra de pouvoir utiliser tes variables sans te soucier de leur nom
    Admettons par exemple que tu souhaite écrire le mot "utilisateur" dans ton interface... avec une variable ça donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // fichier langue FR
    $user = "utilisateur";
    // fichier langue EN
    $user = "user";
    or tu auras surement besoin de cette variable $user dans un de tes fichiers... et pour peu que tu oublies qu'il s'agissait d'une variable de traduction... ça sera la caca, la caca, laaa catastroooopheuuh ^^
    De plus, avec les define() ça fait des jolies variables bien visibles dans ton code PHP surtout qu'elles sont en majuscules


    Pour ce qui est du référencement, les robots ne savent pas qu'il n'existe qu'un seul template !
    Regarde l'URL du PHP Manual :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    // Version FR
    http://be2.php.net/manual/fr/function.define.php
    // Version EN :
    http://be2.php.net/manual/en/function.define.php
    Deux URL mais très certainement le même template Ces dossiers sont en général fictifs. Ils n'existent pas en dur sur le serveur ! Pour plus d'infos, je te conseil de te renseigner sur l'URL Rewriting

  5. #5
    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
    oui je trouve aussi que gettext() est plus compliqué mais d'un autre côté c'est plus simple pour les gros sites qui proposent ou risque de proposer beaucoup de langues différentes
    On aura 4 ou 5 langues grand maxi! je pense que je vais me pencher vers la solution des fichiers traduits

    ...or tu auras surement besoin de cette variable $user dans un de tes fichiers...
    ah ouiiiiiiiiii, c'est vrai! j'avais paas pense a ca, en plus j'avais deja eu un probleme de ce genre...
    sinon, cote performance, est ce plus rapide a executer qu'une simple variable?

    Deux URL mais très certainement le même template Ces dossiers sont en général fictifs. Ils n'existent pas en dur sur le serveur ! Pour plus d'infos, je te conseil de te renseigner sur l'URL Rewriting
    OK, j'avais pense a la reecriture des URL mais là tu me le confirmes

    Merci bien

  6. #6
    Membre émérite Avatar de darkstar123456
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 896
    Points : 2 835
    Points
    2 835
    Par défaut
    Citation Envoyé par redah75 Voir le message
    sinon, cote performance, est ce plus rapide a executer qu'une simple variable?
    Me suis jamais vraiment poser la question... mais ça doit être plus ou moins pareil

  7. #7
    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
    merci pour tout, je marque le post comme resolu

    @+

  8. #8
    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, je redonne vie a ce topic car j'ai 2 petites question

    1- le define("variable", "valeur") me pose problem car j'aurai besoin de mettre par fois des valeurs sous forme de tableau, comme par example pour les jours de semaine... comment devrais je faire dans ce cas?

    2- quelle est la difference entre define("variable", "valeur") et define('variable', 'valeur') ???

    MErci encore une fois

  9. #9
    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
    personne n'a une reponse????

  10. #10
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Alors pour répondre à ta 2e question : aucune différence, tu peux écrire une chaine de caractères entre quotes simples (') ou quotes doubles ("), la différence se situant dans l'interprétation de variables dans la chaine de caractères. ( Apostrophes ou guillemets : lesquels choisir ?)
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  11. #11
    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
    MErci pour ta reponse et ce lien interessant...

    tu n'aurais par hasard aucune idee concernant la question 1?

  12. #12
    Membre du Club
    Homme Profil pro
    Épine dans le pieds
    Inscrit en
    Mai 2004
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Épine dans le pieds

    Informations forums :
    Inscription : Mai 2004
    Messages : 425
    Points : 55
    Points
    55
    Par défaut
    Bonjour,

    Je voudrais juste ajouter une question.

    Quels sont les avantages de ces deux méthodes pour créer un site multilingue sur le stockage de traduction des mots/termes/phrases utilisées dans une table et leur récupération au chargement de chaque page ?

    Merci

    Px

  13. #13
    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
    personnellement, je n'ai pas utilisé une table de donnees pour les traductions.
    j'ai creer des fichiers langues (fr.php, en.php) qui contiennt TOUS les textes, titres et messages contenus sur le site web en les definissant avec la fonction define("VARIABLE", "Valeur");

    reste a savoir si c'est la bonne methode et comment stocker des variables de type tableau avec define()

  14. #14
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    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 690
    Points : 20 211
    Points
    20 211
    Par défaut
    Citation Envoyé par redah75 Voir le message
    reste a savoir si c'est la bonne methode et comment stocker des variables de type tableau avec define()
    En faisant de la sorte tu charge en mémoire toutes les variables (constantes en l'occurence) même celle qui ne servent à rien.
    Du coup tu utilise beaucoup de ressource inutillement.

    Gettext en revenche va à un instant T chercher un élément précis dans un fichier compilé et indexé (je suppose).
    L'énorme avantage de gettext c'est que c'est un standard. Essayez de donner un fichier plein de define à un traducteur pour voir ^^. Au mieux vous récupèrerez un fichier bourrez d'erreur de synthaxe.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    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
    j'avais regarde un peu la fonction gettext mais elle a l'air tellement complique et necessite une installation apparemment...!!

  16. #16
    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
    j'abandonne la fonction gettext, j'ai passe une journee a essayer de l'installer sur ma machine (mac OX 10.6) mais impossible, sachant qu'il faut aussi l'installer sur le serveur de l'hebergeur. je trouve et je pense que gettex n'est pas une fonction assez mure pour l'instant.

    je vais utiliser les fichiers .php de traduction, je suis bien conscient que ca represente des inconvenients dans la mesure où c'est inutile d'appeler toutes les variables meme celles qui ne servent a rien, mais j'essaierai de m'organiser de cette maniere:
    dossier "fr"
    messages_erreurs.php
    buttons.php
    titres.php
    textes.php

    puis sur chaque page, j'inclus uniquement les fichiers dont j'ai besoin, aisni je charge pas TOUTES mes variables

    en regardant le fonctionnement de phpmyadmin, l'appli la plus utilisee sur les sites php, on se rend compte qu'ils ont 1 SEUL fichier de traduction où ils definissent TOUTES les variables sans meme utiliser define()

  17. #17
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 690
    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 690
    Points : 20 211
    Points
    20 211
    Par défaut
    j'abandonne la fonction gettext, j'ai passe une journee a essayer de l'installer sur ma machine (mac OX 10.6) mais impossible, sachant qu'il faut aussi l'installer sur le serveur de l'hebergeur. je trouve et je pense que gettex n'est pas une fonction assez mure pour l'instant.
    Un ";" à enlever dans le php.ini si php à été compiler correctement. Sinon effectivement il faut recompiler php avec le support de gettext , mais c'est valable pour chaque extension.
    La seul installation qui peut être nécessaire c'est celle des locales sur le système.
    En effet cela peut être problématique si tout ceci n'est pas disponible sur le serveur de production.

    Sinon pour info il existe une alternative php (forcément moins performante que l'extension) mais dont le développement semble plus ou moins abandonné :
    https://launchpad.net/php-gettext/
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  18. #18
    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
    Un ";" à enlever dans le php.ini si php à été compiler correctement
    je l'ai fait mais ca marche pas, c'est un .dll que je décommente, ca n'aura donc aucun effet sur mac ou linux...

    comment faire pour verifier si gettext est disponible sur le serveur de production ??

  19. #19
    Membre du Club
    Homme Profil pro
    Épine dans le pieds
    Inscrit en
    Mai 2004
    Messages
    425
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Épine dans le pieds

    Informations forums :
    Inscription : Mai 2004
    Messages : 425
    Points : 55
    Points
    55
    Par défaut
    C'est la raison pour laquelle j'ai opté pour le stockage de tous les labels/textes de mes pages en BDD dans toutes les langues nécessaires.

    En passant, ça me permet de créer une interface spéciale pour que les traducteurs puissent travailler en ligne directement.

    Px

  20. #20
    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 Perplexe Voir le message
    C'est la raison pour laquelle j'ai opté pour le stockage de tous les labels/textes de mes pages en BDD dans toutes les langues nécessaires.

    En passant, ça me permet de créer une interface spéciale pour que les traducteurs puissent travailler en ligne directement.
    j'ai egallement pense a la base de donnee pour ainsi creer une interface de traduction mais je trouve que ca va faire un peu lourd d'avoir une vaingtaine de requetes par page pour afficher les textes...
    a moins que tu vois ceci differemment avec une autre meilleure technique.
    quelle est a structure de base de donnees que tu as adopte?

Discussions similaires

  1. Utilisation XML/XSL pour un site multi langues
    Par bigsister dans le forum Balisage (X)HTML et validation W3C
    Réponses: 10
    Dernier message: 22/01/2007, 17h36
  2. Site multi langue
    Par didarmor dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 14/12/2006, 23h42
  3. Problème site multi langues
    Par dolf13 dans le forum Langage
    Réponses: 9
    Dernier message: 31/08/2006, 13h05
  4. Réponses: 12
    Dernier message: 04/11/2005, 17h28
  5. Architecture d'un site multi-langues
    Par seben dans le forum Général Conception Web
    Réponses: 4
    Dernier message: 25/09/2005, 16h23

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