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

HTML Discussion :

comportement langue arabe


Sujet :

HTML

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut comportement langue arabe
    Bonjour.

    Je travaille actuellement sur un projet de site multilingue (français, anglais, espagnol, portugais, arabe, chinois, allemand et russe).

    Comme vous le savez, certaines de ses langues utilisent un alphabet différent de celui utilisé par la langue française, mais l'ordre de lecture peut aussi varié selon la langue (de gauche à droite, de droite à gauche...).

    J'arrive très bien à récupérer les différents caractères, là n'est pas le problème.

    En fait, je viens de faire une liste de "secteurs d'activité". Si je n'ai pas traduit le terme dans la langue courante, j'affiche le terme en anglais. Après chaque élément de la liste, j'affiche le nombre de produits qui y figurent, (une parenthèse, le nombre de produits et une autre parenthèse).

    Je viens de tester dans les langues françaises et anglaises, ça marche super bien (rien de compliqué). Cependant, j'ai essayé avec des caractères arabes, et là, c'est le drame.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Aeronautic (2)
     
    Kitchen (1)
     
    Textile (1)
     
    Tollerie (2)
     
    المنزل (2)
    J'obtiens ça. En faisant copier / coller dans mon éditeur, celui-ci m'affiche les éléments dans le bon ordre, mais sur mon site, ça donne : المنزل (2).

    Voici mon problème. Si quelqu'un a une solution je suis preneur. Merci en tout cas de votre aide.

    ++

    PS : le mot en arabe n'est pas un secteur d'activité, mais un mot que j'ai utilisé pour les tests.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Re.

    Bon, en faisant copier / coller du texte en arabe, je me suis rendu compte que mon éditeur l'écrivait de gauche à droite, alors que mon navigateur l'écrit de droite à gauche.
    Après avoir vu ça, j'ai d'abord généré le nombre de produits entre parenthèses, puis affiché le message, et là, j'ai le bon comportement.

    Heureusement, j'avais déjà mis en place un champs dans ma base de données qui me permettait de savoir dans quel sens on écrivait telle ou telle langue, bien que je ne savais pas à quoi ça allait me servir. Maintenant je sais.

    Cependant, j'ai trouvé un autre problème, mais celui-ci est plus du ressort de PHP je pense.
    En fait, j'ai essayé d'afficher le premier caractère de chaque mot, et avec le mot en arabe, j'obtiens un point d'interrogation dans un losange noir (mais autrement, j'arrive quand même à afficher les caractères).

    ++

  3. #3
    Membre Expert Avatar de HiRoN
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2007
    Messages
    2 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2007
    Messages : 2 035
    Par défaut
    Sûrement un problème d'encodage du caractère, vérifies ton charset à tous les endroits (serveur, page)...
    Pensez à utiliser les ressources disponibles en Dev. Web :
    (x)HTML : Cours (X)HTML / FAQ (X)HTML
    CSS : Cours CSS / FAQ CSS / Galerie CSS
    Javascript : Cours / FAQ / Sources
    Mon site : Développeur Web Freelance

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Cependant, j'ai essayé avec des caractères arabes, et là, c'est le drame.
    Ne pas oublier l'attribut "dir" qui permet de déterminer la direction du texte (ltr ou rtl : left to right ou right to left) accepté en particulier par la balise <body>
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut


    Bon j'ai regardé l'encodage de toutes mes pages, et c'est bon.
    J'ai défini l'encodage de caractères en UTF8 :
    1. <meta http-equiv="content-type" content="text/html; charset=utf-8" /> dans mon index
    2. AddDefaultCharset UTF-8 dans mon htaccess

    Quand je fais un echo du texte en arabe ou que j'affiche le mot après ma balise "?>", aucun problème dans l'affichage, mais quand je fais $variable[0] pour récupérer le premier caractère du mot, ça ne m'affiche pas le caractère souhaité. Donc l'encodage devrait être mis hors de cause, non ?

    Bovino, je ne pense pas pouvoir utiliser l'attribut "dir" dans mon cas, vu que j'affiche du texte en anglais si la traduction n'existe pas, mais merci quand même.

  6. #6
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Bovino, je ne pense pas pouvoir utiliser l'attribut "dir" dans mon cas, vu que j'affiche du texte en anglais si la traduction n'existe pas, mais merci quand même.
    Fais un test ! Si c'est en arable tu affiches de droite à gauche sinon de gauche à droite pardi !

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Bon l'attribut "dir" fonctionne.
    D'après le message de bovino, je pensais que cet attribut se plaçait dans BODY, mais après mon message, j'ai regardé sur le net et fait quelques tests, et il s'applique à P. Donc ça a bien été testé.
    Mais là n'était pas mon problème principal, à savoir récupérer mon premier caractère dans mon mot en arabe.
    Je ne l'utilise que pour l'affichage.

  8. #8
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Problème d'encodage !
    Encodage de la bdd
    Encodage du flux entre la bdd et la page
    etc...
    vérifie tout.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Citation Envoyé par blueice Voir le message
    Problème d'encodage !
    C'est fait, toutes mes pages sont bien encodées.

    Citation Envoyé par blueice Voir le message
    Encodage de la bdd
    Je suis en utf8_general_ci

    Citation Envoyé par blueice Voir le message
    Encodage du flux entre la bdd et la page
    mysql_query("SET NAMES UTF8");

    Bon j'écarte la base de données, car j'ai copié / collé du texte en arabe dans mon fichier puis affiché, ça marche. Dans le même fichier, juste en dessous, je met le texte dans une variable et je fais un echo juste après, ça marche toujours.
    J'essaie de récupérer le premier caractère de la variable et là, ça ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $test = "المنزل";
    echo "المنزل"; //ça marche
    echo $test[0]; //ça ne marche pas
    echo $test; //ça marche

  10. #10
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Un substr() ne fonctionne pas non plus !!

    Et ca non plus :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $test = "المنزل";
    $tab = str_split($test);
    echo $tab[0]."<br />"; //ça ne marche pas
    echo $test."<br />"; //ça marche

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Je n'avais même plus pensé à celui là. Mais j'ai des résultats aléatoires. Voici les echos que je fais : (le mot : المنزل)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    echo substr("المنزل", 0, -1);
    echo substr("المنزل", 0, 1);
    echo substr("المنزل", 6, -1);
    echo substr("المنزل", 0);
    echo substr("المنزل", -1);
    echo substr("المنزل", -2);
    echo substr("المنزل", -3);
    echo substr("المنزل", -4);
    echo substr("المنزل", -5);
    echo substr("المنزل", -6);
    et là le résultat pour chacun d'eux :



    Alors, d'après mes souvenirs, lors de recherches sur le net, en arabe, chaque caractère de l'alphabet donne un symbole, mais une fois intégré dans un mot ce symbole change. Est-ce que ça pourrait poser problème ?

  12. #12
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Non car si tu essayes du chinois ou japonais c'est le même problème.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Exact, ça me donne ça pour le mot "首页首页首页", avec les mêmes conditions dans les substring() :


  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Re.

    Bon j'ai réessayé de faire un echo $test[0], mais pour chaque caractère, en sachant que mon mot fait 6 lettres. A un moment, je me suis trompé, et j'ai écrit 6 ou 7, alors que mon mot ne comporte que 6 caractères.
    Là, j'ai eu un symbole point d'interrogation dans un losange noir qui s'est affiché, alors que normalement je n'aurais plus du avoir une réponse. J'ai essayé avec 100, et là je n'ai rien eu.
    Donc j'ai testé la longueur de ma chaîne et là (strlen($test)), pour le mot en arabe, j'obtiens une longueur de 12 caractères, alors que pour le chinois, j'en obtient 18.

  15. #15
    Modérateur
    Avatar de blueice
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2003
    Messages
    3 494
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 494
    Par défaut
    Ca c'est normal :

    Ma chaine = 9
    Ma chaîne = 10

    Les caractères sont représentés en UTF-8 par des séquences d'octets de taille variable...

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Citation Envoyé par blueice Voir le message
    Ca c'est normal :

    Ma chaine = 9
    Ma chaîne = 10

    Les caractères sont représentés en UTF-8 par des séquences d'octets de taille variable...
    Ah oui !!! Bon ben je vais toujours pouvoir essayer de récupérer un caractère arabe ou chinois avec mon pauvre $test[0].

    Merci beaucoup pour votre aide à tous.

    PS : désolé si le sujet a dérivé et s'il ne concerne plus vraiment la rubrique dans laquelle il a été posté.

  17. #17
    Membre éclairé
    Avatar de witch
    Inscrit en
    Mai 2007
    Messages
    346
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mai 2007
    Messages : 346
    Par défaut
    Salut,

    Ben voilà, il y a déjà une solution, merci @mygodess, qui m'a répondu à ça
    http://fr.php.net/manual/fr/function.mb-substr.php
    Je ne l'ai pas testé, mais ça devrait répondre à tes besoins.


    ++

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Salut.
    Je viens de tester, mais ça n'a quand même pas fonctionné.
    Ca marche très bien pour le "î" de "chaîne" par exemple, mais pas pour les caractères arabes et chinois.
    Pour une fois, la solution de notre ange Belledandy (l'héroïne de Ah! My Goddess) n'a pas été concluante.
    Merci quand même
    ++

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 52
    Par défaut
    Autant pour moi, la magie de Belledandy a encore fonctionné.

    En fait j'ai oublié de remplir le dernier paramètre (facultatif) de la fonction, qui est l'encodage.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string mb_substr  ( string $str  , int $start  [, int $length  [, string $encoding  ]] )
    Merci witch et @mygodess, même s'il ne le sait pas.

    ++

  20. #20
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 6
    Par défaut
    Mais de rien.
    Ce sont les bases de l'utilisation des jeux de caractères multi octets.
    Et comme je l'ai dis à witch, il est possible d'utiliser mb_internal_encoding pour fixer l'encodage de traitement pour toute la suite du script.
    Les directives du fichier de configuration relatives à mb_string permettent de définir ce comportement avant même l'exécution du script et de remplacer les fonctions classiques de php par celles de mbstring de foncon transparente.

    Et pour la note chieuse : « mygoddess » ca prend deux « d », pour « Belldandy » il n'y as pas de « e » après les deux « l » et c'est une déesse et non un ange, mais elle en possède un

    MyGoddess

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. XML XSL et la langue Arabe !!
    Par nizarsm dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 22/03/2006, 17h58
  2. Prise en charge de la langue arabe
    Par yousseffst dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 13/03/2006, 11h33
  3. [WD9] Importation DB Access en langue arabe
    Par brizi dans le forum WinDev
    Réponses: 1
    Dernier message: 28/02/2006, 11h45
  4. problème langue arabe
    Par infoseb dans le forum Oracle
    Réponses: 2
    Dernier message: 17/10/2005, 17h44
  5. accents et langue arabe et chinoise
    Par localhost dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 25/02/2005, 13h49

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