Resource-Datein in unterschiedlichen Packages nutzen?

klaeuschen41

Mitglied
Hallo!

Für die Internationalisierung meiner Java-WebApp setze ich Javas Resource-Bundle-Mechanismus ein.
Nun benötige ich Übersetzungen in 2 unterschiedlichen Packages. Gibt es eine Möglichkeit, nur eine Resourcen-Datei zu erzeugen, die in beiden Packages genutzt werden kann?
(soweit ich weiß werden normalerweise die Resource-Dateien immer einem Package zugeordnet ...)

Vielen Dank und schöne Grüße,
Klaus
 
Hallo!

ResourceBundle sind nicht notwendigerweise an Packages gebunden...
Beispiel:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Locale;
import java.util.ResourceBundle;

/**
 * @author Tom
 *
 */
public class ResouceBundleExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        System.out.println("Default locale: " + Locale.getDefault());
        ResourceBundle defaultResourceBundle = ResourceBundle.getBundle("foo");
        System.out.println(defaultResourceBundle.getString("bar"));
        ResourceBundle germanResourceBundle = ResourceBundle.getBundle("foo",Locale.GERMANY);
        System.out.println(germanResourceBundle.getString("bar"));
    }

}

foo.properties:
bar=BAR

foo_de_DE.properties
bar=BAAAAAAAAAAAAAAR

liegen beide im Classpath-Root.

Ausgabe:
Default locale: en_US
BAR
BAAAAAAAAAAAAAAR


Gruss Tom
 
Hallo Tom!

Thomas Darimont hat gesagt.:
foo.properties:
bar=BAR

foo_de_DE.properties
bar=BAAAAAAAAAAAAAAR

liegen beide im Classpath-Root.
Eine blöde Frage: Wo ist das? (Classpath-Root)
Im WebContent-Verzeichnis? Eine Ebene darüber (Projekt-Verzeichnis)? (Ich verwende eclipse für die Entwicklung.)

Habe beides mit folgendem Code ausprobiert:
Code:
String path_to_bundle = "MessagesBundle";
res_bundle = ResourceBundle.getBundle(path_to_bundle,currentLocale);

Die Datei MessagesBundle.properties, die ich zuvor in einem der beiden Packages hatte und über myFirstPackage.MessagesBundle erfolgreich angesprochen habe, wird in beiden Fällen leider nicht gefunden.
Fehlermeldung:
java.util.MissingResourceException: Can't find bundle for base name MessagesBundle, locale de_DE

Eine Sache habe ich außerdem vergessen zu erwähnen:
In dem anderen Package nutze ich das Struts-Framework.
Dabei binde ich die im Package "mySecondPackage" liegende Datei "MessageResourcese2.properties"
im struts-config-File ein mit Hilfe von:
Code:
<message-resources null="false" parameter="mySecondPackage.MessageResourcese2"/>

Ich würde nun wie gesagt gerne nur eine einzige Ressourcen-Datei verwenden, aber habe keine Ahnung wie (und ob überhaupt?) das gehen könnte ...

Vielen Dank für jede Hilfe,
Klaus
 
Hallo!

leg deine .properties Datei einfach mal direkt nach WEB-INF/classes ...

Schau dir das hier mal an:
http://www.laliluna.de/struts-message-resources-tutorial.html

<message-resources null="false" parameter="text.MessageResource/>
-> Es wird beispielsweise im web-inf/classes (automatisch im Classpath einer Webanwendung) Verzeichnis wird nach einem text Verzeichnis gesucht. Dort wird dann nach einer Datei Namens MessageResource_XX_XX_XX.properties gemaesz der ResourceBundle-Regeln gesucht...

Gruss Tom
 
Danke, Tom!

Thomas Darimont hat gesagt.:
leg deine .properties Datei einfach mal direkt nach WEB-INF/classes ...

Das hat erst einmal geholfen!
Nur leider ist ein weiteres Problem aufgetaucht, und zwar habe ich noch eine andere Sache nicht erwähnt:
Das erste Package ist nämlich für ein Applet zuständig und bei eclipse kann ich bei der Jar-Erzeugung die Resourcen-Datei aus dem classes-Verzeichnis nicht auswählen, um sie in das Jar zu integrieren ...

Geht das auch irgendwie anders? Oder muss ich in diesem speziellen Fall doch zwei Resource-Dateien verwenden?

vg,
Klaus
 
klaeuschen41 hat gesagt.:
Geht das auch irgendwie anders? Oder muss ich in diesem speziellen Fall doch zwei Resource-Dateien verwenden?

Ich habe das in meinem Ant Script so laufen das beim Build die ResourceDatei in all jenen jars (ejb jars, war usw ) includiert wird wo sie benötigt wird.

sprich ich lege mein Zeug immer nach:
[project-root]/resources/bundles
 
Hallo!

Dann mach aus dem Verzeichnis welches die MessageResources enthaelt einfach einen Source Folder. Alle Sourcefolder-Inhalte werden automatisch an die entsprechende Stelle des Output Folders kopiert.

Gruss Tom
 
Hallo Christian,

Christian Fein hat gesagt.:
Ich habe das in meinem Ant Script so laufen das beim Build die ResourceDatei in all jenen jars (ejb jars, war usw ) includiert wird wo sie benötigt wird.

sprich ich lege mein Zeug immer nach:
[project-root]/resources/bundles

Ich habe Ant noch nie verwendet! Ist das schwierig? Kennst du eine gute Einstiegsseite oder hast ein Beispiel-Ant-Script, wie du deine Resourcen einbindest?

Gruß,
Klaus
 
Mein Antscript hat 400 Zeilen, das taugt nicht für ein kurzes Beispiel.

Da sind einige kleine Beispiele auch:
http://ant.apache.org/

aber so wie Thomas das gesagt hat, muss es auch gehen. Dennoch schadet es auf jedenfall nicht sich mit Ant zu beschäftigen. Ist alles recht schnell verständlich
 
Hallo Christian und Tom!

Christian Fein hat gesagt.:
Mein Antscript hat 400 Zeilen, das taugt nicht für ein kurzes Beispiel.

Da sind einige kleine Beispiele auch:
http://ant.apache.org/

aber so wie Thomas das gesagt hat, muss es auch gehen. Dennoch schadet es auf jedenfall nicht sich mit Ant zu beschäftigen. Ist alles recht schnell verständlich

Werde ich hoffentlich demnächst mal dazu kommen, aber mit Toms Methode scheint es auch zu funktionieren! Vielen Dank!

Gruß,
Klaus
 

Neue Beiträge

Zurück