CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java]Multilanguage

MDA-Hack
MDA-Hack
Niveau 9
13 avril 2012 à 22:49:38

Bonjour,

J'ai un petit problème concernant "le choix du multilanguage dans un logiciel", je vous explique ma situation.

Depuis quelques temps je programme un logiciel qui est capable de résoudre des problèmes à des formules d'électricité. Jusqu'à là pas de problèmes. J'ai commencé à codé mes classes unes par unes, commencé mon interface graphique, mes algo, ... Bref tout le bordel qui va avec :)

Ayant une démo "potable" de mon logiciel je souhaiterais le mettre sur le net pour avoir des avis, des réactions, du public. MAIS, grand mais, vu que je suis dans une néerlandophone(Belgique), j'ai mit TOUS mes labels, txtfields, menus, System.out.println(...) en néerlandais. Or sur le net, je ne pense pas avoir beaucoup de réactions en néerlandais(déjà je pensais le mettre ici, et cela m'étonnerait de voir des flamands ici).

Ma question est donc la suivante :
"Comment instaurer un système de multilanguage dans un logiciel ?"

Sachant que je code en java, auriez vous des idées du comment instaurer un tel système dans mon logiciel ? Ou bien des pattern que je pourrais utiliser(je suis occupé à étudier les design pattern, mais aucun que j'ai étudié ne correspond à mon problème)? La seule idée qui m'est venu dans ma tête est qu'à chaque ligne où il s'agit, d'une ligne à traduire, je mets un if, mais je ne pense pas du tout que ce soit la meilleure idée...

Je vous remercie d'avoir lu jusqu'à la fin,
cordialement,
MDA.

caelacanthe
caelacanthe
Niveau 10
13 avril 2012 à 22:53:15

il faut intégrer un système de lockit, tu appellerais une fonction d'un manageur de localisation qui renverrait une chaîne de caractère à partir d'un identifiant qui lui serait le même pour toute les langues. :oui:

godrik
godrik
Niveau 30
13 avril 2012 à 22:55:56

globalement caelacanthe a raison. Et ca resoudra probablement ton probleme.

Mais la localisation est un probleme plus complique que ca. La question des pluriel et accord est complique entre differente langues. La facon de representer des nombres est egalement differente: on ecrit 1 000 000,12 en francais mais on ecrit 1,000,000.12 en anglais. Je ne parles pas des formats de dates et cie...

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:07:08

Tu parles d'un des grands soucis de la plupart des logiciels : l'internationalisation.
Il y a pas mal de solutions, une des solutions que j'utilise, c'est de créer un fichier XML par langue ;)

Dans ton application, tu souhaites par exemple afficher le libellé (label) qui correspond au nom du pays.
Tu peux imaginer une classe UserLocale, qui dispose d'une méthode getLabel(String code, String language)

Cette méthode ira récupérer le mot ou a phrase qui correspond au code, et ce pour la langue de l'utilisateur.

Dans le cas où on souhaite afficher en anglais "Country", et en français "Pays", il faudrait appeler, selon la langue de l'utilisateur, la méthode getLabel de cette façon :

UserLocale.getLabel("country", "en");
UserLocale.getLabel("country", "fr");

tu pourrais avoir par exemple, dans UserLocale, instancier une map static contenant, pour chaque langue, la liste des codes et les libellés (label).

Si tu vois le principe, je n'aurai pas besoin d'en dire plus. Si tu as un doute, je peux t'expliquer davantage.

caelacanthe
caelacanthe
Niveau 10
13 avril 2012 à 23:07:33

ah oui, les dates...

https://image.noelshack.com/fichiers/2012/15/1334351215-tZwKg.jpg

but international metric system is SO mainstream :cool:

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:08:15

Godrik a raison, il y a de nombreux autres soucis de localisation, reste à voir jusqu'où tu veux aller dans l'internationalisation de ton application.

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:11:38

Et j'oubliais de dire, UserLocale s'occuperait (soit initialisation static, soit en utilisant un constructeur, si tu décides de disposer d'une instance unique (singleton) de ta classe UserLocale dans ton application), au chargement de l'application, de lire les fichiers xml présents, et créer une map avec les traductions, pour chaque langue.

godrik
godrik
Niveau 30
13 avril 2012 à 23:14:29

Ca peut etre utile de savior de internationalization et localization sont souvent abreger i10n et l8n

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:15:21

Oui, cela pourra aider pour les recherches de tutos sur le sujet.

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:19:39

"
Sachant que je code en java, auriez vous des idées du comment instaurer un tel système dans mon logiciel ? Ou bien des pattern que je pourrais utiliser(je suis occupé à étudier les design pattern, mais aucun que j'ai étudié ne correspond à mon problème)?"

:d) Je dirais des design pattern qu'il ne faut pas absolument chercher à les utiliser, mais juste bien les connaître, maîtriser leur compréhension, afin d'aider à mieux structurer ses applications, et comprendre quelles sont les différentes façons d'implémenter une solution. Mais faut pas vouloir les employer partout.

MDA-Hack
MDA-Hack
Niveau 9
13 avril 2012 à 23:32:27

Et ben dis donc ça se remplis vide :)
Je remercie déjà ceux qui ont répondu !

caelacanthe :d) Je ne cherche pas à aller très loin dans l'internationalisation, je voudrais juste avoir une petite option qui permet de choisir par exemple français/anglais/néerlandais. Et je crois que godrik a raison en donnant son exemple des nombres fr/anglais.

Silvermo :d) Parfait ! Ta réponse me semble vraiment approprié ! Je vois où tu veux en venir :) Par contre je sens que j'aurais quelques problèmes avec la page XML, je ne suis pas très doué là dedans. Je pourrais t'envoyer un message au cas d'un problème ? :) Et le Singleton comme tu le dis, me semble parfait dans ce problème, c'est même le dernier pattern que j'ai lu^^

godrik :d) Merci pour les abréviation, je sens qu'ils me seront utile.

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:40:28

Tu peux utiliser la classe Properties pour accéder aux valeurs dans un fichier xml

Exemple :
http://snippets.dzone.com/posts/show/3945

API Java SE 6
http://docs.oracle.com/javase/6/docs/api/java/util/Properties.html

NoSoul_
NoSoul_
Niveau 7
13 avril 2012 à 23:40:40

Tous les mécanismes nécessaires sont fournis dans le Java standard et ils le font très bien.

La doc officielle d'Oracle sur le sujet:
http://docs.oracle.com/jajavase/tutorial/i18n/index.htm

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:41:34

NoSoul_ :

We're sorry, the page you requested was not found.

:/

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:42:06

Woké, il manquait un l à la fin :
http://docs.oracle.com/jaavase/tutorial/i18n/index.html

NoSoul_
NoSoul_
Niveau 7
13 avril 2012 à 23:42:23

Il faut copier/coller l'adresse, ils bloquent la provenance d'autres sites apparemment.

MDA-Hack
MDA-Hack
Niveau 9
13 avril 2012 à 23:42:35

Double poste.

Je mets ma version "démo" en néerlandais pour ceux à qui ça intéresseraient, ceci est encore loin du but final, je précise ! Pour l'instant je n'ai que le courant, l'intensité, la résistance et la puissance, je compte rajouter au fur et à mesure. Mais je dois encore régler pas mal de choses. Quelques erreurs(NaN, infinity), on peut rentrer n'importe quoi comme donnée(ex = 230v, 5a, 6ohm ce qui est impossible), j'aimerais améliorer mon code, j'ai beaucoup baclé. J'ai commencé un UML que j'aimerais continué tout comme ajouter de la Javadoc pour avoir un code beau et claire :)

Le lien : https://rapidshare.com/fiiles/672920309/Elec_13-04_.jar

Silvermo
Silvermo
Niveau 26
13 avril 2012 à 23:43:42

Merci pour la démo , je sais pas si je testerai ce soir par contre :p

Donc comme NoSoul_ le montrait, il y a des tutos officiels pour l'internationalisation. Ils utilisent des fichiers properties au lieu de fichiers xml, c'est bien aussi. A toi de voir.

Exemple : http://docs.oracle.com/javase/tutorial/i18n/intro/after.html

NoSoul_
NoSoul_
Niveau 7
13 avril 2012 à 23:44:02

"Woké, il manquait un l à la fin : "

Ok, j'avais encore la bonne adresse en collant, c'est pour ça. Donc il manquait bien un "l" à la fin, merci pour la correction.

MDA-Hack
MDA-Hack
Niveau 9
13 avril 2012 à 23:48:33

C'est très gentils pour vos lien, je regarderais tout ça demain !

J'ai passé plus de 3h devant Eclipse et ça m'a un peu fatigué^^

Je vous souhaite une bonne soirée les gars !

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment