portrait PatBiker carré et bordure

Chercher

Le site du WLangage :: aaa.windev11

WinDev en Arabe

Cette page est dédiée à l’utilisation de l’Arabe dans les applications développées avec WinDev 11.

Accés rapide au contenu de la page

Modifications apportées au blog pour gérer l'arabe

Cet article résumé les différentes manipulations qui ont permis d’afficher du texte en arabe dans mon blog écrit avec WinDev.

Partie MySQL

Tous les champs ont été passé en UTF-8 (interclassement utf__general_ci). Cette opération a été réalisée avec PHPMyAdmin.

Partie HTML

Le charset de la page est passé en UTF-8.

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

Partie PHP

La requête suivante est exécutée une fois dans la page avant de lire les tables MySQL

mysql_query("SET NAMES 'UTF8'");

Partie WinDev
Pour chaque champ de saisie, l’alphabet de la police a été changé. voici un exemple de code réalisant cette opération.

SAI_TitreBillet..PoliceAlphabet = alphabetUTF8

Edition

Les pages PHP ont été éditées avec BabelPad.exe, un éditeur UTF-8 afin de corriger le texte en dur dans la page. En effet, tous les caractères accentués étaient mal affichés. BabelPad signale les erreurs dès l’ouverture du fichier et les caractères mal codés sont représentés par un petit carré vide.

إن شاء الله

Comment afficher un texte en arabe dans un champ

On se place ici dans le contexte d’une application dans laquelle tout le texte n’est pas affiché en arabe, ce qui me semble d’ailleurs être le cas général.

La fenêtre contient donc des champs qui afficheront du français, et d’autres qui afficheront de l’arabe.

Voici comment initialiser le champ par du code.

  1. associer l’alaphabet arabe au champ
  2. affecter le champ avec une chaine littérale

Code WLangage d'initilisation d'un champ en arabe

Il est important de noter que l‘éditeur de code de WinDev ne sait pas afficher l’arabe directement comme on le voit sur l’image. Pour saisir la valeur, j’ai du entrer le texte en passant Windows en arabe depuis la barre des langues.

choix de l'arabe dans la barre des messages

Le résultat s’affiche comme ça “ ÈÇÊÑíß”. En passant car c’est bon à savoir, la combinaison de touches SHIFT + ALT permet de changer la langue en cours. C’est pratique.

En exécution, le champ affichera “Patrick” écrit en arabe
p(arabic). باتريك

Gérer une rubrique en arabe dans un fichier Hyper-File

Il est possible de stocker une information en arabe dans un fichier Hyper-File quelconque. Il suffit de décrire une rubrique texte, c’est tout. C’est seulement à l’utilisation que cette zone sera affectée avec un texte ANSI en arabe.

Si c’est si facile, pourquoi faire ce billet ? Mémoriser une valeur est une chose, l’afficher correctement en est une autre. On va donc voir ici comme afficher correctement une rubrique en arabe dans une table fichier.

Préliminaire

J’ai adopté la convention de nommer toutes mes rubriques en arabe en les préfixant par “arabic_”. Par exemple, le fichier MIXTE décrit dans mon analyse contient deux rubriques :

  • word
  • arabic_word

Saurez-vous deviner laquelle contient de l’arabe ? moi aussi, mais plus important mon programme aussi.

Une table fichier contruite automatiquement

Il suffit d’une instruction pour envoyer un fichier Hyper-File dans une table. C’est la commande ConstruitTableFichier.

ConstruitTableFichier(Table1, Mixte, taRemplirTable)

Avec cette commande, la table est remplie mais la colonne arabe affiche n’importe quoi.

Table fichier avec un texte arabe mal affiché

C’est maintenant qu’il faut exploiter le fait que le nom des rubriques en arabe débute par “arabic_”. Le code suivant va examiner toutes les colonnes de la table. Chaque colonne liée à une rubrique dont le nom commence par “arabic_” sera modifiée pour utiliser l’alphabet arabe et s’afficher de droite à gauche avec les propriétés

  • ..PoliceAlphabet
  • ..SensEcriture
POUR i=1 A TableOccurrence(Table1,toColonne)
	sNomColonne = TableEnumèreColonne(Table1,i)
	sNomRubrique = {sNomColonne, indChamp}..LiaisonFichier
	SI Position(sNomRubrique,"arabic_") = 1 ALORS
		{sNomColonne, indChamp}..PoliceAlphabet = alphabetArabe
		{sNomColonne, indChamp}..PoliceTaille = 36
		{sNomColonne, indChamp}..SensEcriture = seDroiteAGauche
	FIN
FIN

Table fichier avec l'arabe bien affiché