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

AWT/Swing Java Discussion :

i18n langue arabe


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 198
    Par défaut i18n langue arabe
    Salut tout le monde,
    j'utilise la ResourseBundle avec trois le Français, l'Anglais et l'Arabe.
    Pour les deux premières langues, tout va bien.
    Pour la langue Arabe:
    j'ai utilisé l'encodage par défaut fournit par eclipse Cp1256, je vois bien les mots en Arabe mais lors de l'affichage de l'interface, une autre chaîne de caractères s'affichent.

    Après quelques recherches, j'ai abouti à une solution c'est, l'utilisation de l'outil native2ascii, je contenu à utiliser l'encodage CP1256.
    Bon les mots sont bien affichés en Arabe dans mon interface.

    Ma question est: y a t-il une autre solution plus meilleure que celle-ci ?
    J'ai pas une très bonne connaissance à propos d'encodage. Ce que j'ai compris c'est pour travailler avec la langue Arabe c'est mieux d'encoder le fichier en utf-8.
    Lorsque j'ai modifié l'encodage en utf-8 les mots en Arabe sont remplacés par d'autres caractères incompréhensibles alors que c'est pas le cas avec l'encodage Cp1256 (les mots sont bien écrits en Arabe).
    Qu'est ce que je dois changer dans mon code pour afficher correctement l'Arabe en Cp1256?
    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
    if(languages.getSelectedItem() == "Anglais"){
     
    						createLoginPanel().removeAll();
    						setLocale(new Locale("en", "US"));
    						setMessages(ResourceBundle.getBundle("resources/MessagesBundle_en_US",
    						getCurrentLocale()));
    						createLoginPanel().add(getPane());
    						createLoginPanel().updateUI();
    					}	else if(languages.getSelectedItem() == "Arabe"){
     
    						createLoginPanel().removeAll();
    						setLocale(new Locale("ar", "TN"));
    						setMessages(ResourceBundle.getBundle("resources/MessagesBundle_ar_TN",
    						getCurrentLocale() ));
     
    						getPane().applyComponentOrientation(ComponentOrientation.getOrientation(new Locale("ar")));
    						createLoginPanel().add(getPane());
    						createLoginPanel().updateUI();
    					}
    					else{
    						createLoginPanel().removeAll();
    						setMessages(ResourceBundle.getBundle("resources/MessagesBundle",
    						getCurrentLocale()));
    						createLoginPanel().add(getPane());
    						createLoginPanel().updateUI();
    					}
    				}
    merci d'avance.

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    Déjà attention à ton code qui est plein de répétition inutile, et qui comporte des comparaison avec == sur des String alors qu'il faut utiliser equals() !!!




    Quand à ton problème c'est "normal" : par défaut les Properties sont lu en iso-latin1 (un encodage proche du Cp1256 qui est spécifique à Windows).
    Donc si tu enregistres ton fichier en UTF8 il sera lu en iso-latin1 et ca va foutre le bordel...

    Comme tu le dis, une solution consiste à utiliser native2ascii, mais cela rend le fichier properties quasiment illisible ce qui est peu pratique.



    Perso je vois deux solutions :
    • A partir de Java 6, on peut utiliser la classe ResourceBundle.Control pour gérer la recherche des bundle.
      On peut ainsi rajouter un nouveau type de fichier qui serait lu en UTF8, sur le même modèle que les fichiers properties...
    • Avant Java 6, le plus simple serait de remplacer le fichier .properties par une classe qui étend ListResourceBundle...



    a++

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2007
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2007
    Messages : 198
    Par défaut
    Merci pour l'explication adiGuba

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

Discussions similaires

  1. [i18n] Langue arabe, properties et utf-8
    Par fraisa1985 dans le forum Collection et Stream
    Réponses: 14
    Dernier message: 24/01/2008, 13h56
  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