Bonjour à tous,
Je dois réaliser une application de traitement d'image en java pour l'école.
J'avais pris soin de faire une classe "Config" avec des variables statiques pour l'utilisation de l'application. Elle contient notamment les messages "texte" de l'applic ("ok", "Etes vous sur de vouloir quitter l'application sans sauver?"...).
Voici un exemple très concis du fichier (écrit rapidement...):
J'aurais aimé permettre à l'application de devenir multilangue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public class Config { ... public static final String NO_FILE_FOUND_MESSAGE = "Le fichier a ete supprime entre temps ou est verrouille par une autre application!"; public static final String NO_FILE_FOUND_TITRE = "Erreur: fichier introuvable"; public static final String UNVALID_FILE_MESSAGE = "Le fichier n'a pas pu etre ouvert car il n'est pas une image valide."; public static final String UNVALID_FILE_TITRE = "Erreur: fichier invalide"; ... public static final int MAX_APPLICATION_WIDTH = 950; public static final int MAX_APPLICATION_HEIGHT = 700; ...
J'avais d'abord pensé à faire une classe abstraite "Config".
Deux sous-classe auraient été: "Config_FR" et "Config_ENG".
La classe config aurait eu la forme:
Et la nouvelle Config_FR (idem pour _ENG...)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 public abstract class Config { ... public String NO_FILE_FOUND_MESSAGE; public String NO_FILE_FOUND_TITRE; public String UNVALID_FILE_MESSAGE; public String UNVALID_FILE_TITRE; ... public int MAX_APPLICATION_WIDTH = 950; public int MAX_APPLICATION_HEIGHT = 700; ...
Je pensais compter sur 2 choses:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 public class Config_FR extends Config { ... public String NO_FILE_FOUND_MESSAGE="blablabla en FR"; public String NO_FILE_FOUND_TITRE="blablabla en FR"; public String UNVALID_FILE_MESSAGE="blablabla en FR"; public String UNVALID_FILE_TITRE="blablabla en FR"; ...
-Un élément non défini dans une classe abstraite, doit l'être dans sa sous classe. Je n'aurais donc pas défini les variables "texte" dans "Config" qui aurait du être redéfinie dans les sous classes des 2 langues.
-Un élément déjà défini ne doit pas être redéfini dans les sous classe (mais pourrait l'être): Les variables du type "taille de l'applic" qui ne change pas d'une langue a l'autre auraient été définie dans la classe abstraite.
Malheureusement ça ne marche pas. J'ai une valeur null pour les deux affichages:
J'en conclu qu'il va chercher la variable de Config et que les 2 points que j'ai énuméré quelques lignes plus haut ne s'appliquent qu'aux méthodes d'une classe abstraite. (?). Je trouve que des GET pour récupérer toutes cette tonne de variable est assez lourd, et visuellement moins "agréable" à lire dans le code.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Config c = new Config_FR(); System.out.println(c.TOO_HEAVY_PICTURES_MESSAGE); //L'utilisateur switch en anglais... c = new Config_ENG(); System.out.println(c.TOO_HEAVY_PICTURES_MESSAGE);
J'ai essayé une interface, mais les variables doivent être déclarée dans une l'interface.
Bref, avant de m'éparpiller complètement dans une mauvaise conception (si c'est pas déjà fait), j'aurais bien aimé avoir une aide pour concevoir une petite application multilangue.
Est-ce que la classe abstraite et les sous classe spécifique a chaque langue étaient une bonne idée? Si oui, comment faire?
Sinon y a t'il des méthodes plus élégante?
Merci d'avance!
EDIT: Il est interdit d'utiliser des librairies externes au JDK. J'avais pensé à de l'XML mais bon ca risque d'être un peu lourd![]()
Partager