Labels Bundle Spracherweiterung

Status
Nicht offen für weitere Antworten.
K

kuti

Gast
Hallo!

Müssen sich die selbst erstellten Sprachdateien(z.B. LabelsBundle_en_US.properties) immer im src-Ordner befinden? Werden sie in einem anderem folder plaziert, werden sie durch den Aufruf:


Code:
Locale.setDefault(new Locale("en", "US"));


nicht gefunden. Und Pfade kann man ja hier nicht mitangeben.

Mein Problem ist, dass neue Sprachen in meinem Programm automatisch erkannt werden sollen, die sich in einem bestimmten Ordner befinden. Beim Erzeugen eines ausführbaren Jar-Files gibt es aber keinen src-Ordner mehr und in das Jar-File lässt sich dann auch wohl keine neue Sprachdatei mehr einfügen.

Hat von euch jemand eine Idee?

Gruß
 
G

Guest

Gast
Also ich habe unter Eclipse im src-Ordner zwei Sprachfiles liegen :

LabelsBundle_de_DE.properties und LabelsBundle_en_US.properties

Diese werden auch erkannt und ich kann mit


Code:
Locale.setDefault(new Locale("en", "US"));
bzw.


Code:
Locale.setDefault(new Locale("de", "DE"));

die Sprache entsprechend setzten.

Jetzt möchte ich eine Funktion schreiben die mir alle in meine Projekt verfügbaren Sprachfiles anzeigt. Dazu müsste ich aber als Pfad für die Suche "src/" angeben. Also z.B.


Code:
File languageDirectory = new File("src"); 
languageDirectory.listFiles(new LanguageFilenameFilter());



Dies funktioniert jedoch nur Eclipse-intern. Exportier ich die Sourcen als Jar gibt es den "src"-Ordner nicht und die Language-files können nicht gefunden werden. Auserdem sollte es möglich sein neue LanguagesFiles zu importieren. Aber wie soll ich die in ein Jar einfügen?
 
G

Gast

Gast
Ja das ist mir klar, aber ich möchte nicht alle Sprachen die auf meinem System verfügbar sind, sondern alle alle Language-Files in meinem Programm.
 

diggaa1984

Top Contributor
hier mal der fall wo ich das probiert hatte, dann letztendlich so wie ichs wollte:

Code:
/**
 * AocRessourceViewer.java
 * 07.06.2008
 */
package aocRessourceViewer;

/****************/
import java.io.*;
import javax.swing.*;
import java.util.*;
/****************/

/**
 * @author Digger
 *
 */
public class AocRessourceViewer {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
			try {
				int b = System.in.read();
				
				switch (b) {
				case 48: loadDefault();
						break;
				case 49: loadFromFile();
						break;
				default:System.out.println("aeh wie jetzt"); 
						break;
				}
			} catch (Exception e) {
			}
	}//main
	
	//innerhalb des jar-Archivs
	private static void loadDefault() {
		//wichtig der Punkt als Trenner
		ResourceBundle myResources = ResourceBundle.getBundle("aocRessourceViewer.res.Ressources");
		//System.out.println(myResources.getString("t1_wood"));
		JFrame f = new JFrame();
		f.setVisible(true);
		JOptionPane.showMessageDialog(f, myResources.getString("t1_wood"));
	}
	
	// Verzeichnis relativ zum aktuellen
	private static void loadFromFile() {
		try {
			ResourceBundle myResources = new PropertyResourceBundle(
					new BufferedReader(
							new FileReader("ressources/Ressources_de.properties")));
			//System.out.println(myResources.getString("t1_wood"));
			JFrame f = new JFrame();
			f.setVisible(true);
			JOptionPane.showMessageDialog(f, myResources.getString("t1_wood"));
		} catch (Exception e) {
			System.out.println("Exception in loadFromFile");
		}
	}
}//AocRessourceViewer

meine Ordnerstruktur war folgende in Eclipse:
src

  • aocRessourceViewer[list:ba37caf458]
    data
    gui
    res //hier is die Ressource.properties drin (default quasi)
[/list:u:ba37caf458]

Also im Jar machst das ganze über "packagepfade"
von Extern also nem Ordner den der Nutzer aendern kann mittels FileReader zB.

mein ProgrammOrdner sah am Ende so aus:
C:\Test

  • meine.jar
    ressources[list:ba37caf458]
    Ressources_de.properties
    Ressources_en.properties
    Ressources_fr.properties
[/list:u:ba37caf458]

nicht irretieren lassen wegen dem Frame, hatte ich drin damit ich sehe das ich auch umlaute reinpacken kann, da die in der Konsole nich angezeigt wurden ^^
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben