Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 2014
-
2 mai 2011 à 15:15
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 2014
-
13 mai 2011 à 13:12
Salut à tous,
Ma question concerne ce qui semble être un problème récurrent sur le net, mais dont les réponses m'échappent :
Je dois créer une apli java qui se lance sous Linux. Cette appli génère entre autre des fichiers, appelle des fichiers bashs avec des paramètres d'entrée, et affiche des résultats sur l'écran.
Cette appli est utilisée en Allemagne, et les lettres ü, ö et ä ne passent pas (Probablement le ß non plus, je n'ai pas essayé!), elles sont remplacées systématiquement par des "?".
Pour une fois, je demanderai à avoir une réponse aussi précise que possible, quitte à contenir clairement la réponse. Je sais que ce n'est pas le but de ce forum, et je ne le demande normalement pas, mais là, je suis dessus depuis maintenant un mois, et j'ai beau lire beaucoup de doc, je comprend absolument rien (Et mon cerveau est en passe de devenir un ragout bouillant et odorant!!!!). Quoiqu'il en soit, je prendrai bien évidemment tous les conseils :D
Par avance, désolé du manque de précision, n'hésitez pas à me faire savoir si vous avez besoin de d'avantage d'info!
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 4 mai 2011 à 12:46
Salut Shaiulud,
Alors, merci de ta réponse, mais précisément... j'ai rien compris!!!!
c'est quoi i18n? Comment utiliser la classe ResourceBundel, et les serveurs Linux sont quoi, généralement???
Et que signifie RHEL????
Merci de m'éclairer un peu plus!
:D
@+. Hermios
Vous n’avez pas trouvé la réponse que vous recherchez ?
/**
* @return La liste de toutes les clés d'un Bundle.
*/
public static Enumeration getKeys() {
Enumeration result = null;
try {
result = mainResourceBundle.getKeys();
} catch (MissingResourceException e) {
log.warn("No keys in bundle " + getBundleName());
}
return result;
}
/**
* Recherche une clé dans le fichier de ressource. Si celle-ci n'existe pas ,
* la méthode retourne null
*
* @param argKey
* @return
*/
public static String getString(String theKey) {
String result = null;
try {
result = mainResourceBundle.getString(theKey);
} catch (MissingResourceException e) {
log.warn("Bundle missing key=" + theKey + " in bundle " + getBundleName());
return theKey;
}
return result;
}
/**
* Retourne un message de ressource ayant 1 paramètre Si celle-ci n'existe
* pas , la méthode retourne le code de la clé
*
* @param theKey clé de tradution
* @param theValue
* @return valeur de la clé
*/
public static String getString(String theKey, String theValue) {
String result = null;
try {
String pattern = mainResourceBundle.getString(theKey);
if (pattern != null) {
result = MessageFormat.format(pattern, new String[] { theValue });
}
} catch (MissingResourceException e) {
log.warn("Bundle missing key=" + theKey + " theValue=" + theValue + " in bundle " + getBundleName());
return theKey;
}
return result;
}
/**
* Retourne un message de ressource ayant 2 paramètres Si celle-ci n'existe
* pas , la méthode retourne le code de la clé
*
* @param theKey clé de tradution
* @param theValue
* @return valeur de la clé
*/
public static String getString(String theKey, String theValue1, String theValue2) {
String result = null;
try {
String pattern = mainResourceBundle.getString(theKey);
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 4 mai 2011 à 14:25
Re,
Merci beaucoup pour la réponse, vraiment complète, mais... je crois que ce n'est pas ce que je demande :
Je ne souhaite pas traduire des éléments (mon programme est en langue allemande, pour des allemands, et même des bavarois, donc Grüß Gott, ils gèrent :D)
Mon programee doit afficher les caractères spéciaux sous Linux (Notamment le ü et le ß de Grüß). Pour l'instant, si mon appli java (que je lance via un wsdl) possède la ligne "System.out.println("Grüß")", la console Linux va afficher "Gr??". Donc ma question est, comment programmer Java (je n'ai pas le droit de changer la config du serveur Linux) pour que Linux affiche "Grüß". J'ai regardé un truc avec xfontsel, mais ca m'a pas appris grand chose.
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 201422 4 mai 2011 à 16:50
OK
tu dois avoir donc de sources compilées avec l'encodage du serveur.
si le serveur Linux est en ISO-8859-1 tes sources java doivent être en ISO-8859-1 (si tu es sous eclipse window/prefrence - general/workspace - File Encoding)
si le système de fichier est différent tu devras pendre l'encodage de l'OS.
Une exécution sous windows (encodage cp1215 - ANSI like) donnera un truc du genre Grüß.
L'encodage est toujours la M.... vivement que tout le monde passe en UTF16, mais ce n'ai pas demain la veille...
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 201422 4 mai 2011 à 16:55
Sinon une idée bête mais qui à marché sur un de mes projets.
Je générais nativement de l'UTF8 (ok pour toute les langues) mais un serveur qui consommait mes flux ne travaillait qu'en ANSI pour produire des PDF qui eux était UTF8.
Mes caractères devenaient une belle purée.
J'ai donc surencoder dans l'UTF-8 l'encodage du pays cible et c'est passé.
Mes fichiers originaux étaient illisible mais le résulat en sortie était OK.
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 4 mai 2011 à 22:55
Ouah, là déjà, je vois à peu près. Merci vraiment pour ton aide, je testerai demain matin
Une petite question encore : comment connaitre le type d'encodage du serveur?
Merci encore, je te tiens au courant
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 9 mai 2011 à 13:04
Salut,
Bon alors après maints et maints tests, j'en viens à la conclusion que... ben mon serveur est en anglais, et donc ne peut pas gérer les ä, ö et ü : J'ai testé le "surencodage" en UTF-8, ca marche pour écrire dans un fichier, mais pas pour écrire dans la console, et pour des appels à des softs extérieurs.
Donc la solution consiste à passer le serveur en allemand. Or, c'est un serveur que je n'ai pas le droit de configurer. Je me permets donc une dernière question : Est il possible, via java, de forcer temporairement le passage au language allemand, pour faire le programme? (Je pense que c'est non, mais bon, ca ne coute rien de demander).
Quoiqu'il en soit, mille mercis pour ton aide.
P.S.: J'ose pas trop mettre réponse acceptée, parce que ca n'a pas vraiment marché, le problème venant de mon côté. Mais si tu considères que je peux le mettre, pas de soucis de mon côté! :D
shaiulud
Messages postés404Date d'inscriptionmardi 18 décembre 2001StatutMembreDernière intervention15 juillet 201422 10 mai 2011 à 07:14
Sur ton serveur Anglais pour écrire de l'Allemand tu peux si tu as la main pour le lancement de ta JVM :
java -Duser.language=de -Duser.region=DE
sinon tu es grillé en mode console
ps: pour l'acceptation d'un réponse il ne vaut mieux pas. nous ne sommes pas là pour faire un quelconque score mais pour nous entraider et nous n'avons pas la solution.
ça n'aidera personne d'avoir une réponse erronées
Hermios
Messages postés264Date d'inscriptiondimanche 14 avril 2013StatutMembreDernière intervention23 mai 20142 10 mai 2011 à 10:29
Salut Shaiulud,
Malheureusement, le programme se lance en wsdl, à partir d'un programme C#. donc pas de lancement de cette manière!
Merci quand même.
Concernant la réponse acceptée, je me suis mal exprimé :
ta réponse n'est pas erronnée dans l'absolu, mais ne marche pas sur mon cas précis. cela dit, ca m'a permis de mieux localiser le problème. Donc je pensais mettre quand même une réponse acceptée, justement parce que je les trouve très utiles et complètes. Qu'en penses tu?
En tout cas (et pour la ènième fois!) vraiment sympa de ta part de m'avoir aidé comme ca! :D