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

Java Discussion :

Affichage de texte en arabe et français : XSL


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut Affichage de texte en arabe et français : XSL
    Bonjour
    je génère des documents Word avec java en utilisant des feuilles XSL.
    j'ai un petit problème au niveau des textes bilingue (Arabe + Français) la partie en français s'affiche renversée.
    par exemple developpez.com s'affiche de cette façon : moc.zeppoleved

    merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Personnellement, je ne vois déjà pas comment on génère du Word avec XSL.

    Mais même quelqu'un qui saurait ça, ne risque pas de deviner ton code.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    je ne peut pas mettre tout le code, mais je peux dire que je récupéré le champs de la base de données avec un Select et je le met dans une variable String ma_var.
    après je crée un nœud dans mon document et j’envoie ma variable de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine.appendChild(document.createElement("ma_var")).appendChild(document.createTextNode(ma_var));

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Ça ça n'a aucun rapport avec Word ou XSL. Mais en tout cas, ça ne peut pas causer de tort à de l'arabe ou du français qui serait au milieu d'un texte arabe.

    'Faudrait voir les parties concernées du XSL, qu'est-ce que le XSL produit comme résultat XML, et à quoi ressemble le XML source du XML.
    Là où ça coince, c'est qu'un fichier XML qui contient de l'arabe, ça ne s'affiche pas bien dans un visualiseur de source. Il va donc falloir utiliser des outils d'affichage XML, et mettre des fichiers attachés au lieu d'un copier/coller sur le forum.

    Après, 'faudrait voir comment on passe de tout ça à un document Word, et, ma foi, comment Word s'y prend pour gérer un texte gauche-à-droite au milieu d'un texte droite-à-gauche.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    le code niveau du fichier XSL :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    <w:tc>
    	<w:tcPr>
    		<w:tcW w:w="5742" w:type="dxa"/>
    		<w:tcBorders>
    			<w:top w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
    			<w:left w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
    			<w:bottom w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
    			<w:right w:val="single" w:sz="4" wx:bdrwidth="10" w:space="0" w:color="000000"/>
    		</w:tcBorders>
    		<w:shd w:val="clear" w:color="auto" w:fill="FFFFFF"/>
    		<w:tcMar>
    			<w:top w:w="100" w:type="dxa"/>
    			<w:left w:w="100" w:type="dxa"/>
    			<w:bottom w:w="100" w:type="dxa"/>
    			<w:right w:w="100" w:type="dxa"/>
    		</w:tcMar>
    	</w:tcPr>
    	<w:p wsp:rsidR="003B5150" wsp:rsidRPr="001857EE" wsp:rsidRDefault="003B5150" wsp:rsidP="00677ECB">
    							<w:pPr>
    			<w:widowControl w:val="off"/>
    			<w:autoSpaceDE w:val="off"/>
    			<w:autoSpaceDN w:val="off"/>
    			<w:bidi/>
    			<w:adjustRightInd w:val="off"/>
    			<w:spacing w:after="0" w:line="240" w:line-rule="auto"/>
    			<w:rPr>
    				<w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/>
    				<wx:font wx:val="Times New Roman"/>
    				<w:color w:val="000000"/>
    				<w:sz w:val="20"/>
    				<w:sz-cs w:val="20"/>
    			</w:rPr>
    		</w:pPr>
    		<w:r wsp:rsidRPr="002630AA">
    			<w:rPr>
    				<w:rtl />
    				<w:rFonts w:ascii="Times New Roman" w:h-ansi="Times New Roman" w:cs="Times New Roman"/>
    				<wx:font wx:val="Times New Roman"/>
    				<w:color w:val="000000"/>
    				<w:sz w:val="20"/>
    				<w:sz-cs w:val="20"/>
    				<w:rtl/>
    			</w:rPr>
    			<w:t><xsl:value-of select="ma_var"/></w:t>
    		</w:r>
    	</w:p>
    </w:tc>

    j'ai fais un print au niveau de la console pour voir la variable dans mon fichier XML qui est de type Document et c'est bien écrit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ma_var>texte en arabe developpez.com texte en arabe</ma_var>

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Ok , donc tu fais du docx, et quand tu met du mélange arabe / français dans un balise w:t, la partie française s'écrit de droite à gauche.

    Faudrait voir dans la spec de docx, mais je vois trois possibilités.

    1) que tu sois censé utiliser un w:t pour chaque sens d'écriture séparé
    2) que ce soit ton tag w:rtl qui force une écriture de droite à gauche (rtl = right to left)
    3) que ton texte arabe commence par le caractère unicode forcant le Right to Left => je propose que tout fasse un texte qui contiennent

    RTL arable LTR français RTL arabe


    Aussi, quand tu affiche ton xml "data" dans firefox, par exemple, la ligne apparaît correctement?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    au niveau du fichier XML la variable est écrite sous le format suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ma_var>text_en_arabe1 developpez.com text_en_arabe2</ma_var>
    alors qu'elle doit être écrite de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <ma_var>text_en_arabe2 developpez.com text_en_arabe1</ma_var>

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Si c'est déjà pas bon dans ton XML, ça va être problématique. De toutes façon, c'est toujours problématique de mélanger du LTR et du RTL sur la même lignes. ça deviens presque impossible de savoir si un caractère est avant ou après un autre dans le String si il est à droite à l'écran.

    Par exemple, si j'écrite <mode RTL>abcd<mode LTR>efgh<mode RTL>xyz

    ça peux donne à l'écran lors de la frappe:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Ia
    Iba
    Icba
    Idcba
    eIdcba
    efIdcba
    efgIdcba
    efghIdcba
    efghIxdcba
    efghIyxdcba
    efghIzyxdcba
    LA seule solution pour voir si ta var est correcte: regarder caractère par caractère dans une editeur hexa pour voir si tout est dans l'ordre

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    j'ai utilisé HexEdit, les caractères arabes sont remplacés par des points et le texte en français est bien affiché

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Il faut pas regarder les points, il faut regarder les chiffres. C'est un peu à ça que ça sert, un éditeur hexa. Est-ce que c'est les mêmes chiffres que le texte arabe s'il était tout seul.

  11. #11
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Et surtout dans quel ordre ça se trouve

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    j'ai vérifié les codes sur HexEdit

    ils ont comme résultat cette affichage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text_en_arabe1 developpez.com text_en_arabe2
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    text_en_arabe2 developpez.com text_en_arabe1

  13. #13
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Dans ce cas, c'est que la String ma_var que tu as utilisée pour créer le XML, était déjà comme ça.

    Edit: (ça marche pas du tout ce que je racontais avant)
    Mais ça a l'air parfaitement correct. Ça veut dire "d'abord, text_en_arabe1, puis, developpez.com, et enfin, text_en_arabe2." Ce qui, dans un contexte droite-à-gauche, doit s'afficher
    text_en_arabe2 developpez.com text_en_arabe1 : commencer à droite et finir à gauche.

    Il semblerait que Word ait une autre interprétation du contexte droite-à-gauche : prendre les lettres dans l'ordre, et les afficher de droite à gauche dans cet ordre. Ce qui produit text_en_arabe2 moc.zeppoleved text_en_arabe1.
    Si c'est le cas je ne sais pas trop que te dire. C'est un comportement incompatible. Il faut détecter les caractères orientés droite-à-gauche et inverser l'ordre de leur apparition dans la String.

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    est ce que cela peut etre du à un problème au niveau du fichier XSL tout simplement?

  15. #15
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Ben, pas dans sa manière d'insérer la variable, en tout cas.

    Mais il est possible que la balise <w:rtl/> ne soit pas la bonne façon de faire. Je ne sais pas, c'est une question Word, et Word ça m'intéresse pas.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    le problème est que je ne peux pas enlevé la balise <w:rtl/> parce-que sans cette balise le texte en arabe ne s'affichera pas correctement

  17. #17
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Le plus simple

    tu ouvre word
    tu tappe du texte en arabe, du texte en francais, du re-texte en arabe. Et tu regarde comment il suave ça dans le docx. Puis tu fais la même chose avec ton code

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    j'ai déjà testé ce truc, word se comporte comme suite :
    il sépare l'arabe du français et met chaque langue dans un <w:t>

    example : j'ai ecris cette phrase dans un doc word de droite à gauche


    Et voiçi le rresultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    <w:p wsp:rsidR="00000000" wsp:rsidRDefault="00EE02DC" wsp:rsidP="00EE02DC">
    	<w:pPr>
    		<w:bidi/>
    		<w:rPr>
    			<w:lang w:bidi="AR-MA"/>
    		</w:rPr>
    	</w:pPr>
    	<w:r>
    		<w:rPr>
    			<w:rFonts w:hint="cs"/>
    			<wx:font wx:val="Arial"/>
    			<w:rtl/>
    			<w:lang w:bidi="AR-MA"/>
    		</w:rPr>
    		<w:t>العربية </w:t>
    	</w:r>
    	<w:r>
    		<w:rPr>
    			<w:lang w:bidi="AR-MA"/>
    		</w:rPr>
    		<w:t>français</w:t>
    	</w:r>
    	<w:r>
    		<w:rPr>
    			<w:rFonts w:hint="cs"/>
    			<wx:font wx:val="Arial"/>
    			<w:rtl/>
    			<w:lang w:bidi="AR-MA"/>
    		</w:rPr>
    		<w:t> العربية مرة أخرى </w:t>
    	</w:r>
    	<w:r>
    		<w:rPr>
    			<w:lang w:bidi="AR-MA"/>
    		</w:rPr>
    		<w:t>encore du texte en français</w:t>
    	</w:r>
    </w:p>
    Images attachées Images attachées  

  19. #19
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    ben voilà, donc faut faire le même

  20. #20
    Nouveau membre du Club
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mars 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2008
    Messages : 66
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    ben voilà, donc faut faire le même
    dois-je faire un programme qui construit des blocs de texte en arabe et en français et les envoyer tous au fichier XSL
    parce-que je récupéré les données a partir d'une base de données te je ne sais pas ce qui est dedans du texte arabe, français, des chiffres ou un mélange

Discussions similaires

  1. affichage de text arabe en php
    Par Jcpan dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2010, 11h13
  2. [C#] Affichage de texte vertical...
    Par AntiSAL dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/06/2004, 14h46
  3. Affichage de texte est mise à jour de l'écran
    Par Galdor_sp dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/03/2004, 22h31
  4. [MX 2004] Affichage du texte dynamique
    Par caramel dans le forum Flash
    Réponses: 8
    Dernier message: 29/01/2004, 16h07

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