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

Langage Java Discussion :

fichier i18n dans src/main/resources ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut fichier i18n dans src/main/resources ?
    Bonjour !

    J'ai un projet sous Eclipse, créé avec le plugin pour maven. Je souhaite l'internationaliser. J'ai repris la classe Tr : http://www.onyxbits.de/content/metho...ling-i18n-java pour gérer tout ce qui est i18n (Tr cherche dans le package 'resources.i18n.<package classe>' le fichier properties dont le nom correspond à celui de la classe appelante (<package classe> est le paquetage de cette dernière)).

    Si je mets le fichier avec les traductions dans le répertoire src/main/java/resources/i18n/test, j'obtiens bien les traductions (la classe qui teste, TestI18n, est dans le paquetage test, dans le répertoire src/main/java).

    Mais Maven, lors de la création du projet, a créé un répertoire src/main/resources. Et quand je mets le fichier .properties dans ce répertoire, le ResourceBundle ne le trouve pas.

    Question bonne pratique : les fichiers de traduction d'un projet maven sont bien à mettre dans src/main/resources ?
    Si oui, comment faire pour que ce soit le fichier dans src/main/resources qui soit utilisé et pas celui dans le répertoire java ?

    Les sources sont en pj, si ça peut vous aider.

    Ieuthm
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 27
    Par défaut
    Bonjour,

    Pour ta première question : Oui les fichiers ressources sont bien à mettre dans src/main/resources pour maven.

    Par ailleurs tes tests devraient eux être dans src/test/java et non pas dans src/main/java

    Pour que ton fichier .properties soit pris en compte sans rien changer dans ton code, il faut le mettre dans :

    src/main/resources/resources/i18n/test

    Il y a bien deux répertoires resources. Le premier c'est le répertoire classique de maven, le deuxième correspond à ce que tu as mis après le src/main/java (src/main/java/resources/i18n/test)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 6
    Par défaut

    Merci pour ta réponse, c'est parfait . Tu m'enlèves une épine du pied.

    Pour ceux que la réponse intéresse, voici ce que j'ai corrigé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Les fichiers de mon projet :
    testI18n/src/test/resources/i18n/testi18n/I18nTest.properties
    testI18n/src/test/java/testi18n/I18nTest.java
     
    testI18n/src/main/resources/i18n/test/TestI18n.properties
    testI18n/src/main/java/test/TestI18n.java
    testI18n/src/main/java/i18nmain/I18n.java
    Dans I18n, j'ai modifié la constante statique PREFIX (ça faisait moche le resources/resources/...) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static final String PREFIX="i18n";
    Dans TestI18n.java (junit4), j'ai mis :
    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
     
    package testi18n;
     
    import static org.junit.Assert.assertEquals;
    import i18nmain.I18n;
     
    import org.junit.Test;
     
    public class I18nTest {
    	@Test
    	public void testT() throws Exception {
    		final String s = I18n.t("test", (Object[])null);
    		System.out.println(s);
    		assertEquals(s, "du texte pour les tests");
    	}
    }
    Et donc I18nTest.properties contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    testT.test = du texte pour les tests
    L'intérêt de tout ça est que les ressources ont la même arborescence que la classe qui les appelle. De plus, la méthode appelante n'a qu'à préciser la clé (dans le fichier .properties, les clés sont de format <nom méthode>.<clé>).

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

Discussions similaires

  1. Répertoire src/main/resources vide
    Par liam1 dans le forum Maven
    Réponses: 1
    Dernier message: 04/02/2015, 09h37
  2. [Extjs 4.1.1] Inclure des fichiers .js dans mon main js
    Par Belbarrin dans le forum Ext JS / Sencha
    Réponses: 3
    Dernier message: 29/08/2014, 17h30
  3. Réponses: 3
    Dernier message: 27/02/2010, 10h10
  4. récupération d'information dans src/main/resources
    Par kimlaw95 dans le forum Maven
    Réponses: 5
    Dernier message: 27/01/2010, 12h30
  5. Réponses: 3
    Dernier message: 01/04/2009, 13h58

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