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] Site multilingue : UTF8, solution miracle ?


Sujet :

Langage PHP

  1. #1
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut [Tableaux] Site multilingue : UTF8, solution miracle ?
    Bonjour,

    J'ai un site professionnel à programmer en de nombreuses langues. Cela allant du français au polonais, en passant par le russe, le grec, le coréen, ...

    Il me semble que tous ces alphabets (chinois, grec, ...) ne sont pas repris par le ANSI.

    Est-ce que dés lors le UTF8 reprend TOUS les alphabets existants ?

    Si oui, je n'aurais alors plus qu'à créer simplement un fichier "langue" pour chaque nouvelle langue à introduire sur le site. Sans devoir changer le format des fichiers.

    Si non, quel format unique me permettrait de programmer en prenant en comptant tous les alphabets ? Pour ne pas devoir jongler avec autant de formats qu'il n'y aura d'alphabet.

    D'avance merci pour vos réponses.



    xenos

  2. #2
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut

    Citation Envoyé par Wikipedia
    Ce codage (UTF8) permet de représenter les milliers de caractères d'Unicode.
    Citation Envoyé par Wikipedia
    Unicode est une norme informatique, développée par le Consortium Unicode, qui vise à donner à tout caractère de n'importe quel système d'écriture de langue un nom et un identifiant numérique, et ce de manière unifiée, quelle que soit la plate-forme informatique ou le logiciel.
    Je crois que ça réponds à ta question

  3. #3
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Merci pour ta réponse trotters213 ! Décidément tu m'es d'un grand secours en ce moment ...

    Citation Envoyé par Wikipédia
    Unicode est une norme informatique, développée par le Consortium Unicode, qui vise à donner à tout caractère de n'importe quel système d'écriture de langue un nom et un identifiant numérique, et ce de manière unifiée, quelle que soit la plate-forme informatique ou le logiciel.
    J'étais déjà tombé sur Wikipédia lors de ma recherche sur le UTF8.

    Et cette définition m'avait laissé fort perplexe. En effet on dit que le UTF8 "[...] vise à [...]". C'est son intention de le faire, mais le fait il déjà maintenant ?

    Surtout que lors de mes recherches je n'ai pas trouvé de tableaux où l'on montre l'ensemble des caractères UTF8 possibles et donc où je pourrais m'assurer qu'il prend bien en charge l'alphabet grec, russe, ...

    Désolé d'être ainsi pointilleux sur les mots, mais je ne voudrais pas m'aventurer dans quelque chose et me rendre compte par la suite que ce n'est pas ce que j'en attendais.

    De plus, le fait de tout coder en UTF8, est elle la meilleure solution pour avoir un site multilingue supportant tous les alphabets ?

  4. #4
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Regarde : http://fr.wikipedia.org/wiki/Table_d...%A8res_Unicode
    Tu as tous les caractères dans la liste de droite "Tables Unicode" classez selon leur code en hexa

  5. #5
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Encore un GRAND merci pour ton aide trotters213 !

    En effet, tous les alphabets présents et passés sont codés en Unicode.

    Je vais donc mettre l'ensemble du site en UTF8.

  6. #6
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    J'aurais cependant encore trois questions.

    Premièrement, j'ai un fichier par langue, dans lequel est contenu tous les textes du site. Ce fichier je l'encode en UTF8 avec ou sans BOM ?

    Deuxièmement, les autres fichiers qui ne contiennent que du code et des variables langues, dois je aussi les mettre en UTF8 ?

    Troisièmement, pour les tables SQL, le format UTF8_bin est bon ? Car les autres possibilités en UTF8 sont insensible à la casse.

  7. #7
    Membre éclairé
    Inscrit en
    Août 2003
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 49
    Par défaut
    Bonjour,

    Alors de tête...

    1- Sans BOM
    2- Attention le moteur php ne gère pas les fichiers ".php" en UTF8 (il faudrat attendre php6)
    3- Je crois qu'il faut rajout une commande sql (SET NAME ou quelle chose comme ça)

    ++

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    868
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 868
    Par défaut
    Tiens, c'est curieux ce que tu dis-là, je croyais avoir dit à Eclipse de n'enregistrer les fichiers qu'en UTF-8 et pourtant, même le PHP 4 de EasyPHP n'avait aucun problème avec.

    Quelque soit l'encodage utilisé, le plus simple est de l'utiliser sur l'ensemble de ton application web, sur tous les fichiers... et de le spécifier à chaque fois bien soigneusement (dans les en-têtes HTML des fichiers générés par le PHP aussi ; le navigateur ne détecte pas forcément ça tout seul comme un grand). Ma base SQL est réglée en utf8_unicode_ci et tout a l'air de fonctionner normalement, mais je n'en fais pas non plus un usage extrêmement intensif.

  9. #9
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    2- Attention le moteur php ne gère pas les fichiers ".php" en UTF8 (il faudrat attendre php6)
    Ce sont surtout certaines fonctions usuelles qui ne fonctionnent pas correctement avec utf-8. Il existe une alternance à ses fonctions....
    Mais j'ai plus en tête :s

  10. #10
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Citation Envoyé par xenos Voir le message
    Premièrement, j'ai un fichier par langue, dans lequel est contenu tous les textes du site. Ce fichier je l'encode en UTF8 avec ou sans BOM ?
    Je sais pas ce que tu utilises comme fichier mais je te conseilles du XML avec une petite entête
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml version="1.0" encoding="UTF-8"?>
    pour être tranquille à ce niveau là (tranquille au niveau de l'encodage et tranquille pour la structuration des données : c'est bien plus propre du XML que du .txt )
    Citation Envoyé par xenos Voir le message
    Deuxièmement, les autres fichiers qui ne contiennent que du code et des variables langues, dois je aussi les mettre en UTF8 ?
    Je te dirais comme Mark Havel : le tout c'est que tout ce que tu as en sorti, tu l'ais en UTF-8 (comme je te l'avais dit dans ton précédent sujet). Donc le html avec un le charset du content-type en utf-8, les entêtes PHP en UTF-8.

    PS : ça n'a rien à voir mais comment gères-tu ton multilingue ? XML, extension gettext, variables ou BD ?

    PS 2 :
    Citation Envoyé par yannux
    Il existe une alternance à ses fonctions....
    Une alternative ça marche aussi

  11. #11
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Citation Envoyé par xenos Voir le message
    Troisièmement, pour les tables SQL, le format UTF8_bin est bon ? Car les autres possibilités en UTF8 sont insensible à la casse.
    D'après ce que j'ai pu trouver comme informations, il n'y a qu'un encodage UTF8. Que l'on choisisse l'une des possibilités mise à notre disposition dans phpMyAdmin :
    - utf8_bin,
    - utf8_general_ci,
    - utf8_swedish_ci,
    - utf8_turkish_ci,
    - utf8_unicode_ci,
    ça reste toujours le même encodage, il n'y a que la façon dont seront triées les données qui change.

    Est-ce bien ça ?





    Citation Envoyé par yannux Voir le message
    Ce sont surtout certaines fonctions usuelles qui ne fonctionnent pas correctement avec utf-8. Il existe une alternance à ses fonctions....
    Mais j'ai plus en tête :s
    1/ Y-a-t'il beaucoup de fonctions qui seront affectées par ce passage d'ANSI à UTF8 ?

    2/ Pour chacune de ces fonctions une alternative sérieuse existe-t'elle ?

    3/ Y-a-t'il moyen de trouver une liste de toutes les fonctions qui ne fonctionneront plus avec UTF8 jusqu'à PHP6 avec leur fonction de remplacement ?





    Citation Envoyé par trotters213 Voir le message
    PS : ça n'a rien à voir mais comment gères-tu ton multilingue ? XML, extension gettext, variables ou BD ?
    Dans le code source, j'appelle le texte de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    include('langues/fr.php');
     
    <?php echo trad_pays_2; ?>
    A côté de ça, j'ai un fichier .php par langue où je fais le lien entre la variable et le texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //----------------------------------------------------
    // Pays
    //----------------------------------------------------
    define('trad_pays_1', 'Afghanistan');
    define('trad_pays_2', 'Afrique du Sud');
    define('trad_pays_3', 'Albanie');
    define('trad_pays_4', 'Algérie');

  12. #12
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Citation Envoyé par xenos Voir le message
    D'après ce que j'ai pu trouver comme informations, il n'y a qu'un encodage UTF8. Que l'on choisisse l'une des possibilités mise à notre disposition dans phpMyAdmin :
    - utf8_bin,
    - utf8_general_ci,
    - utf8_swedish_ci,
    - utf8_turkish_ci,
    - utf8_unicode_ci,
    ça reste toujours le même encodage, il n'y a que la façon dont seront triées les données qui change.

    Est-ce bien ça ?
    Je veux pas dire de bêtise mais la seule dif est la collation utilisée (c'est à dire la façon de trier les lettres et plus généralement les caractères : les majuscules avant ou après les minuscules, les accents avant ou après les sans accents, ...).
    Citation Envoyé par xenos Voir le message
    Dans le code source, j'appelle le texte de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    include('langues/fr.php');
    <?php echo trad_pays_2; ?>
    A côté de ça, j'ai un fichier .php par langue où je fais le lien entre la variable et le texte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //----------------------------------------------------
    // Pays
    //----------------------------------------------------
    define('trad_pays_1', 'Afghanistan');
    define('trad_pays_2', 'Afrique du Sud');
    define('trad_pays_3', 'Albanie');
    define('trad_pays_4', 'Algérie');
    Attention car si tu as un seul fichier par langue et que ton site prend de l'ampleur, le temps pour inclure ton ficheir va devenir assez long.
    Si tu ne l'as pas déjà lu : http://php.developpez.com/faq/?page=...te-multilingue

  13. #13
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Citation Envoyé par trotters213 Voir le message
    Je veux pas dire de bêtise mais la seule dif est la collation utilisée (c'est à dire la façon de trier les lettres et plus généralement les caractères : les majuscules avant ou après les minuscules, les accents avant ou après les sans accents, ...).
    Dans ce cas, vu que j'ai développé certains scripts à partir de tri basé sur des données codées en "latin1_swedish_ci", le meilleur des choix serait de prendre "utf8_swedish_ci" ?

    Citation Envoyé par trotters213 Voir le message
    Attention car si tu as un seul fichier par langue et que ton site prend de l'ampleur, le temps pour inclure ton ficheir va devenir assez long.
    J'ai me suis longuement documenté sur le sujet avant d'entamer une traduction. D'après mes estimations, lors de la mise en route du système, le fichier langue français ne devrait jamais atteindre les 100ko.

    Il m'a alors semblé plus judicieux de ne mettre qu'un seul fichier langue de 100ko que de multiplier les fichiers, entrainant par le fait une augmentation des erreurs, de la répétition de termes génériques, une mise à jour plus laborieuse, ...

    Il me semble qu'une taille de 100ko est une taille acceptable ... Me serais je trompé ?

  14. #14
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    Citation Envoyé par trotters213 Voir le message
    PS 2 :Une alternative ça marche aussi
    Oo oui tout à fait... la tête ailleurs

    Ca s'appel mb_string. En gros c'est les mêmes fonctions avec mb_ devant.

    http://fr2.php.net/fr/mbstring

  15. #15
    Membre Expert
    Avatar de trotters213
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 571
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Gard (Languedoc Roussillon)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 571
    Par défaut
    Citation Envoyé par xenos Voir le message
    Dans ce cas, vu que j'ai développé certains scripts à partir de tri basé sur des données codées en "latin1_swedish_ci", le meilleur des choix serait de prendre "utf8_swedish_ci" ?
    Regarde cette discussion : http://mysql.ifrance.com/showthread.php?t=211

    Citation Envoyé par xenos Voir le message
    Il me semble qu'une taille de 100ko est une taille acceptable ... Me serais je trompé ?
    Non tu ne t'es pas trompé, c'est largement acceptable 100Ko

  16. #16
    Membre chevronné
    Homme Profil pro
    Lead Dev Web
    Inscrit en
    Avril 2005
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Lead Dev Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2005
    Messages : 282
    Par défaut
    J'utilise "utf8_unicode_ci" et je n'ai jamais remarqué de problème...

  17. #17
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Encore merci pour vos nombreuses réponses !

    En ce qui concerne l'en-tête, si j'ai bien compris il faut rajouter une information pour faire comprendre au navigateur que l'encodage est en UTF8 Sans BOM.

    Dois je mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('Content-Type: text/html; charset=utf-8');
    Ou alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    Ou les deux ?

  18. #18
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 701
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 701
    Par défaut
    Citation Envoyé par xenos Voir le message
    Ou les deux ?
    les deux
    tu peux tomber sur des serveurs ou des navigateurs qui ont des configuration très particulières et en mettant les 2 lignes tu mets le maximum d'information pour que ta page soit bien interprétée

  19. #19
    Membre éclairé
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Par défaut
    Merci pour toutes vos réponses !

    Elles m'ont été très utile.

    Je clôture le sujet maintenant que tous les aspects de l'UTF8, dont j'ai besoin, sont éclaircis.

    Bon développement à tous !



    xenos

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. La meilleure solution pour un site multilingue ?
    Par nhunhu dans le forum Général Conception Web
    Réponses: 5
    Dernier message: 30/01/2013, 11h59
  2. Site multilingue : quel solution adopté ?
    Par dimebagplan dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/02/2009, 18h46
  3. [SQL] site multilingue, quelle solution ?
    Par simo_web dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/08/2007, 14h08
  4. Site multilingue, quelle solution ?
    Par barths dans le forum Langage
    Réponses: 5
    Dernier message: 23/04/2007, 09h51
  5. [Tableaux] Site multilingue
    Par francis m dans le forum Langage
    Réponses: 15
    Dernier message: 10/12/2005, 01h58

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