Développer un site Web arabe

Ceci est une archive périmée mais qui reste intéressante, parfois autant pour l’article que les commentaires associés.

Les trois attributs qui permettent l’internationalisation du HTML sont :
-  « lang » (language) ;
-  « dir » (direction) ;
-  « charset » (character set).

Ces trois attributs prennent une importance considérable quand il s’agit de développer des sites en arabe. En effet, si par exemple l’attribut « dir » n’est pas utilisé dans les sites qui utilisent des langues s’écrivant de gauche à droite (cette direction étant par défaut), il est en revanche indispensable pour les sites en arabe (et toute autre langue qui s’écrit de droite à gauche comme le persan ou l’hébreu).

« lang »

L’attribut s’écrit : lang = "language-code"
L’attribut défini la langue de base des valeurs des attributs d’un élément et le texte que cet élément contient.
Dans le cas de l’arabe l’attribut s’écrit lang="ar".

Il faut faire la différence entre deux situations d’utilisation de l’attribut :
-  Si la langue primaire de la page (ou la langue par défaut) est l’arabe, l’attribut est ajouté à la balise <html> du document : <html lang="ar"> ;
-  Si la langue primaire de la page n’est pas l’arabe, l’attribut s’ajoute à la balise qui défini le contenu arabe, par exemple : <p lang="ar">.

En ce qui concerne l’héritage, un élément prend le code langue de l’attribut « lang » de cet élément ou de son parent le plus proche.

« dir »

L’attribut s’écrit : dir = « ltr | rtl » (left to right- valeur par défaut - ou right to left).

L’attribut défini la direction de base d’un texte à direction neutre (c’est-à-dire un texte qui n’a pas de définition de direction inhérente comme définie par UNICODE - voir The Bidirectional Algorithm) dans le contenu d’un élément.

Cet attribut permet aux langues qui s’écrivent de droite à gauche comme l’arabe d’apparaître dans le navigateur effectivement de droite à gauche.

Comme pour l’attribut « lang », il existe deux cas de figure :
-  La direction par défaut de la page est de droite à gauche, et l’attribut s’ajoute à la balise <html> : <html dir="rtl">.
-  La direction de la page est de gauche à droite, et l’attribut s’ajoute aux valeurs des attributs de l’élément qui contient le texte de droite à gauche : <p dir="rtl">.

En général, et en ce qui concerne l’arabe, les deux attributs « lang » et « dir » sont utilisés de concert : <html lang="ar" dir="rtl"> ou <p lang="ar" dir="rtl">.

« charset »

Contrairement à d’autres langues, la langue arabe n’a pas eu beaucoup de chance avec l’informatique. Et bien qu’il y ait eu un standard ISO (ISO-8859-6) pour adresser le jeu de caractères arabes, pratiquement chaque compagnie de matériel ou de logiciel a « inventé » son jeu à elle (IBM, Microsoft, Apple, Linotype...). De tous ces jeux de caractères propriétaires il ne reste plus effectivement en utilisation que deux : Mac arabe et Windows arabe. Le résultat est que si on produit un texte arabe sur Mac, ce texte n’est pas lisible sur Windows ou sur Unix-Linux, sauf dans le cas particulier où une application supporte les deux jeux de caractères (même la version arabe de Microsoft Word a besoin d’une extension non fournie en standard pour lire les textes en Mac arabe).

On aurait pu croire que le standard ISO réglerait le problème, mais les applications qui sauvegardent le texte en arabe ISO se comptent sur les doigts d’une seule main.

Avec l’arrivée de UNICODE (UTF8), le problème semblait se résoudre car les deux systèmes (Mac et Windows) supportent ce standard.
Tout cela influence évidemment le choix du codage des sites arabes. Si on s’en tient à une vision étroite et non professionnelle des choses, on sait que la grande majorité des utilisateurs arabes du web utilisent Internet Explorer sous Windows et donc que le plus simple est de choisir le codage Windows pour les textes arabes (Windows-1256).

Mais le problème devient un peu plus compliqué quand on décide de travailler avec logique car le plus grand facteur reste la version du navigateur que le visiteur utilise.
-  Si le visiteur utilise une vieille version de Internet Explorer (jusqu’à 4) sous Windows, il ne peut voir que le codage Windows-1256 (quoique la version 4 supporte plus ou moins ISO-8859-6).
-  Si le visiteur utilise une vieille version de Navigator (jusqu’à 4.x) sous Windows ou sous Macintosh il lui faut passer par les préférences de l’application et utiliser le codage « User Defined » pour avoir une chance d’entr’apercevoir de l’arabe x-mac-arabic sur Mac ou Windows-1256 sur Windows.
-  Par contre, si le visiteur utilise une nouvelle version de Navigator ou Mozilla, sous Mac ou Windows ou Linux, tous ses problèmes seront réglés car ces applications supportent correctement pratiquement tous les codages arabes même x-mac-arabic et IBM-864 qui n’est pratiquement pas utilisé, et plus spécialement ISO-8859-6 et UTF8. Il faut signaler, toutefois, que les versions Mac ont tendance à perdre un peu du formatage des textes.
-  En revanche, et en ce qui concerne Internet Explorer, les nouvelles versions sous Windows supportent Windows-1256, ISO-8859-6 et UTF8. Mais les versions pour Mac ne supportent rien du tout, ce qui fait que si on veut visiter des sites arabes à partir d’un Mac il faut avoir Navigator 6 ou Mozilla.
-  Quant à Opera, il supporte UTF8 et, théoriquement, ISO-8859-6 et UTF8, mais ces deux derniers formats ne marchent pas sur Mac, en plus Opera a tendance à ne pas supporter la direction de droite à gauche.

Ces observations supposent que le système du visiteur comporte des polices de caractères arabes pour permettre au navigateur d’afficher correctement les pages arabes, sauf dans le cas de Internet Explorer sous Windows qui installe lui-même des polices arabes lors de son installation ce qui permet de voir des pages arabes sans avoir nécessairement un système qui supporte l’arabe.

Je n’ai pas testé d’autres navigateurs mais les commentaires sont les bienvenus.

En conclusion, le développeur doit toujours faire un choix en fonction de son public et des versions des navigateurs que ce public utilise. Mais ce choix est, à mon avis très momentané car il y a de moins en moins de vieilles versions en circulation ce qui lui laisse le choix de coder soit en ISO-8859-6 soit eb UTF8 sauf cas bien particuliers (intranet par exemple).
Et donc, il aura à utiliser l’attribut « charset » de la façon suivante :

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-6">
ou
<meta http-equiv="Content-Type" content="text/html; charset= UTF8 ">
dans les balises "meta" de ses pages.

Finalement, la condition minimum pour la création d’un site arabe est d’utiliser les trois attributs « lang », « dir » et « charset », par exemple :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML lang="ar" dir="rtl">
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>Un document bilingue</TITLE>
</HEAD>
<BODY>

... يظهر بالعربية...

<P lang="fr" dir="ltr">... Interprété en français... </P>

<P>

... يظهر بالعربية مجدداً...

</P>
<P>

...نص عربي يتداخل فيه<EM lang="fr">du français </EM> يعود العربي مرة اخرى هنا...

</BODY>
</HTML>

Des sites arabes avec SPIP

Qu’on veuille développer un site arabe ordinaire ou un site basé sur un système de publication comme SPIP, on utilise toujours les trois attributs précédents.

La nouvelle fonctionnalité que la version 1.5 de SPIP a introduite (jeu de caractères du site dans les fonctions avancées de l’administration du site) facilite grandement la création de sites arabes. En effet, cette fonction est venue épargner à l’utilisateur la peine d’éditer directement la base de données pour introduire le jeu de caractères à utiliser dans le site d’un coté, et d’un autre coté, ajouter un nouvel attribut #CHARSET aux squelettes lui épargnant aussi l’ajout de cet attribut manuellement.

En effet, il suffit, avant de commencer la création du site de spécifier le jeu de caractères à utiliser dans les fonctions avancées de l’administration du site (dans notre cas, cocher « alphabet universel (utf-8) » ou le choix « jeu de caractères personnalisé » pour choisir ISO-8859-6). Ce choix apparaîtra dans les squelettes du sites dans la balise :

<meta http-equiv="Content-Type" content="text/html; charset=#CHARSET">

si on utilise les squelettes livrés avec SPIP évidemment, sinon il faut la créer dans les squelettes.

Comme SPIP a réglé l’affaire de l’attribut « charset », il reste les deux autres qu’il faut introduire dans les squelettes, ce qui redevient un problème de création de pages ordinaire, puisque ces attributs ne relèvent en rien du code de SPIP.

Dans la version de SPIP 1.5.1 par exemple, les balises <html> des squelettes fournis par défaut ont toutes un attribut lang= « fr ». Si le site à développer est français mais doit contenir de l’arabe localement, il ne faut pas toucher à l’attribut de cette balise mais ajouter lang= "ar" aux valeurs d’attributs des éléments qui vont contenir de l’arabe. Par contre si le site doit être en arabe, il faut remplacer « fr » par « ar » dans les attributs « lang » des balises <html> des squelettes et appliquer lang= « fr » localement si le site contient du français.

Quant à l’attribut dir=« rtl » , il n’est pas intégré dans les squelettes de SPIP et donc il faut l’ajouter à la balise <html> si la langue principale du site est l’arabe et localement sinon.

Quelques questions pratiques

Le problème des sites arabes dans la partie privée apparaît quand on veut créer un nouvel article (ou brève) ou le modifier. En effet les navigateurs n’afficheront pas le texte de l’article de droite à gauche pendant l’édition pour la simple raison que la direction de la partie privée est de gauche à droite. Seul Internet Explorer sous Windows peut afficher les fenêtres des textes de droite à gauche quand on clique par exemple dans la fenêtre du texte et qu’on appuie sur Ctrl + Maj droit.

Dans les autres situations, il faut soit se contenter d’éditer le texte en le regardant de gauche à droite ce qui est énervant soit éditer le texte dans une autre application et le copier dans la fenêtre de SPIP... soit attendre la version arabe de la partie privée.

Pour voir un site en arabe développé avec SPIP, visiter :
Diwan al Arab

Discussion

28 discussions

  • Bonjour,
    j’ai une application qui demande d’entrée un nom en français et en arabe ,
    j’aimerai bien programmer la case de français pour le clavier français ; et la case en arabe pour le clavier arabe comment je peux faire ça,
    aidez moi svp.

    Répondre à ce message

  • 3

    Une question : avec Spip 3 c’est par défaut du HTML5 et de l’utf8. Quasi tous les hénergements sont en UTF8 aujourd’hui.
    On ne parle plus de IE4 , presque plus de IE6. UTF est devenu la norme .

    Cet article semble compliquer les choses, et me semble n’être que des piostes d’il y a plusieurs années .

    Ne faudrait il pas mettre un avertissement au début de l’article ? A moins que cela soit encore difficiele de faire un site en arabe sous spip ?

    Répondre à ce message

  • 4

    bonjour
    j’ai un code arabe ne fonctionne pas malgre j’utilise le codage utf-8
    et dans le meta lang arabe
    y a t-il quelqu’un peut m’aider

    <?php
    $a="abc";
    echo"$a[1]"; donne a //c a dire bien fonctione
    
    //mais
    si je fais
    $b="مثال";
    echo"$b[1]"; donne ?//ce mon probleme
    ?>

    merci d’avance

    • Vous ne pouvez pas traiter les lettres arabes comme les lettres latines. Les lettres arabes en utf-8 sont stockees en double bytes ce qui veut dire que si on fait $b[1] on n’a que la premiere byte de la lettre et donc ca ne donne rien

    • Houssem94

      et alors comment faire pour afficherla premiere lettre ?

    • L’exemple est déjà faux en lui même car $a et $b sont des chaines de caractères et pas des tableaux. Donc on ne peut pas écrire $a[1] mais substr($a,0,1) par exemple pour avoir « a ».

      Pour $b, il faut écrire substr($b,0,2) pour avoir « م ».

    • Salut,

      Je vois pas bien le rapport avec spip ?

      Mais avec php : http://php.net/manual/en/function.mb-substr.php

    Répondre à ce message

  • 1
    Fati Flower

    Bonjour,

    j’ai un nouveau site , à partir de ce site j’ai trouvé un script mail en php formulaire de contact (et ça marche), mais le problème que je reçois le contenu arabe dans mon e-mail des symboles,,

    Aidez moi SVP

    • Bonjour

      Quel est ce script mail ?
      SPIP ne peut pas se charger d’envoyer et de recevoir sans ce script ?
      Il y a des plugins pour ça.

    Répondre à ce message

  • 1

    j’ai un probleme quand j’ecrire un mot en arabe dans HTML il s’affiche dans la page web comme ca : ظ�ع„ظ�ظ�عŠظ�عŠظ� qu’est ce que je dois faire stp est merci :)

    • C’est parceque la page html n’est pas codée en UTF-8, il faut choisir dans l’éditeur utilisé pour éditer la page, l’encodage UTF-8.

    Répondre à ce message

  • Jean-Jacques Lorin

    Mon site vient de faire l’objet d’une attaque à l’aide de votre outil, et mon environnement français a été changé en arabe.
    J’ai réussi à remettre mes textes en français en rechargeant mes fichiers de langue d’origine, mais dans la partie administrateur tout s’affiche de droite à gauche.

    Pouvez-vous m’aider à remédier à ce problème ?
    Merci
    A+

    Répondre à ce message

  • je cherche un menu deroulant (et sous menu ) en arabe mais je cherche sur internet je trouve le le menu deroulent en francais(pour le site francée)

    Répondre à ce message

  • 2
    Cameleon

    Salut tout le monde...
    je suis entrain de developper un site arabe dynamique avec JSP et une Base de Données mySQL et une connexion JDBC ; Mon probléme c qu’on j’insere des données dans mySQL ca marche mais quand je veux les recuperer sur ma page JSP ca me donne des trucs comme «  ? » ...

    Merci d’avance...

    • il y a un probleme dans l’encodage de tes donnees. a mon avis il vaut mieus tioujours utiliser UTF8.

    • rimapipo

      $connexion2=@mysql_connect(« localhost »,« root »,« ») ;

      @mysql_query(« SET NAMES ’cp1256’ COLLATE ’cp1256_general_ci’ ») ;

      @mysql_query(« SET character_set_server=’cp1256’ ; ») ;

      @mysql_query(« SET character_set_client=’cp1256’ ; ») ;

      @mysql_query(« SET character_set_results=’cp1256’ ; ») ;

      @mysql_query(« SET character_set_connection=’cp1256’ ; ») ;

      @mysql_query(« SET character_set_database=’cp1256’ ; ») ;

      @mysql_query(« SET collation_connection=’cp1256_general_ci’ ; ») ;

      @mysql_query(« SET collation_database=’cp1256_general_ci’ ; ») ;

      @mysql_query(« SET collation_server=’cp1256_general_ci’ ; ») ;

      ecrit ce code sa marche bien

    Répondre à ce message

  • 1

    bonjour,

    je suis entrain de créer un site sous spip bilingue français et arabe (en réalité seulement une rubrique-secteur est en arabe !)

    j’ai d’abord écris des articles en français puis en arabe (3 seulement !), comme l’encodage était en iso-8859-1 (latin) je n’ai eu aucun problème avecles textes en français mais ceux en arabe :

    - un article s’est totalement affiché !
    - les 2 autres ont donnés des signes bizarres !

    j’ai donc fouiné ici et là et j’ai trouvé qu’il fallait utilisé UTF-8 pour tout reconnaitre !

    heureusement que j’ai utilisé le script du : http://www.spip-contrib.net/Comment-passer-son-site-en-utf-8
    pour passer ma base en utf-8 !

    et ça a marché !

    mais pour l’arabe j’ai eu des surprises :
    - un article totalement illisible ! (pas le même qu’avant !!)
    - 2 articles ainsi que des éléments de langue (local_ar.php) affichent des caractères certes en arabe mais pas liés (c’est pas lisibles en phrase ou même en mots !)

    j’utilise pour visualiser le site :
    - opera 8.50 (quelques soucis persistent sous utf-8 mêm e nfrançais !)
    - firefox 1.5 et internet explorer 6 (ok pour le français !)

    je suis sous windows xp pro.

    Merci de mieux m’orienter !

    ps:faudrait-il passer les articles en arabe (windows-1256) vers utf-8 mais alors comment faire ???

    merci

    • Il faut passer les textes arabes en UTF8.

      La moulinette de Fil doit pouvoir le faire. Mais il faut auparavant activer le charset windows-1256 dans le fichier changer_charset.php3.

      S’il y a des probleme, il faudrait peut etre en parler a Fil sur le forum de son article a l’adresse suivante

    Répondre à ce message

  • bonjour,

    je suis entrain de créer un site sous spip bilingue français et arabe (en réalité seulement une rubrique-secteur est en arabe !)

    j’ai d’abord écris des articles en français puis en arabe (3 seulement !), comme l’encodage était en iso-8859-1 (latin) je n’ai eu aucun problème avecles textes en français mais ceux en arabe :

    - un article s’est totalement affiché !
    - les 2 autres ont donnés des signes bizarres !

    j’ai donc fouiné ici et là et j’ai trouvé qu’il fallait utilisé UTF-8 pour tout reconnaitre !

    heureusement que j’ai utilisé le script du : http://www.spip-contrib.net/Comment-passer-son-site-en-utf-8
    pour passer ma base en utf-8 !

    et ça a marché !

    mais pour l’arabe j’ai eu des surprises :
    - un article totalement illisible ! (pas le même qu’avant !!)
    - 2 articles ainsi que des éléments de langue (local_ar.php) affichent des caractères certes en arabe mais pas liés (c’est pas lisibles en phrase ou même en mots !)

    j’utilise pour visualiser le site :
    - opera 8.50 (quelques soucis persistent sous utf-8 mêm e nfrançais !)
    - firefox 1.5 et internet explorer 6 (ok pour le français !)

    je suis sous windows xp pro.

    Merci de mieux m’orienter !

    ps:faudrait-il passer les articles en arabe (windows-1256) vers utf-8 mais alors comment faire ???

    merci

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom