Skip to content

Commit

Permalink
Add de_DE locale and improve locale switching
Browse files Browse the repository at this point in the history
  • Loading branch information
caseif committed Mar 2, 2016
1 parent 318a20f commit 16e9b19
Show file tree
Hide file tree
Showing 5 changed files with 105 additions and 7 deletions.
22 changes: 17 additions & 5 deletions src/main/java/blue/lapis/nocturne/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,9 @@

package blue.lapis.nocturne;

import blue.lapis.nocturne.gui.MainController;
import blue.lapis.nocturne.gui.io.mappings.MappingsSaveDialogHelper;
import blue.lapis.nocturne.gui.scene.control.CodeTab;
import blue.lapis.nocturne.gui.scene.control.WebLink;
import blue.lapis.nocturne.jar.model.ClassSet;
import blue.lapis.nocturne.mapping.MappingContext;
Expand All @@ -52,6 +54,7 @@
import java.io.PrintWriter;
import java.io.StringWriter;
import java.nio.file.Path;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.logging.ConsoleHandler;
import java.util.logging.Logger;
Expand Down Expand Up @@ -125,13 +128,22 @@ public static Logger getFernFlowerLogger() {
public void initialize() {
propertiesHelper = new PropertiesHelper();
locale = getPropertiesHelper().getProperty(PropertiesHelper.Key.LOCALE);
resourceBundle = ResourceBundle.getBundle("lang." + locale);
initLocale();
}

public static void reload() throws IOException {
getInstance().initialize();
getInstance().loadView(getCurrentLocale());
System.gc(); //TODO: I'm a terrible person
public void initLocale() {
try {
resourceBundle = ResourceBundle.getBundle("lang." + locale);
} catch (MissingResourceException ex) {
if (locale.equals("en_US")) {
Main.getLogger().severe("Cannot locate default locale (" + locale + ") - giving up");
throw ex;
}

Main.getLogger().warning("Current locale (" + locale + ") is not available - resetting to en_US");
locale = "en_US";
initLocale();
}
}

@Override
Expand Down
9 changes: 8 additions & 1 deletion src/main/java/blue/lapis/nocturne/gui/MainController.java
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.control.Alert;
import javafx.scene.control.Dialog;
import javafx.scene.control.MenuItem;
import javafx.scene.control.RadioMenuItem;
import javafx.scene.control.TabPane;
Expand Down Expand Up @@ -75,6 +76,8 @@ public class MainController implements Initializable {

public static MainController INSTANCE;

private static final Alert RESTART_ALERT = new Alert(Alert.AlertType.WARNING);

public MenuItem openJarButton;
public MenuItem closeJarButton;
public MenuItem loadMappingsButton;
Expand Down Expand Up @@ -116,6 +119,10 @@ public void initialize(URL location, ResourceBundle resources) {
setAccelerators();

this.initTreeViews();

RESTART_ALERT.setTitle(Main.getResourceBundle().getString("dialog.restart.title"));
RESTART_ALERT.setHeaderText(null);
RESTART_ALERT.setContentText(Main.getResourceBundle().getString("dialog.restart.content"));
}

private void initTreeViews() {
Expand Down Expand Up @@ -252,7 +259,7 @@ public void onLanguageSelect(ActionEvent actionEvent) throws IOException {
if (!langId.equals(Main.getCurrentLocale())) {
Main.getPropertiesHelper().setProperty(PropertiesHelper.Key.LOCALE, langId);

Main.reload();
RESTART_ALERT.showAndWait();
}

}
Expand Down
5 changes: 4 additions & 1 deletion src/main/resources/fxml/main.fxml
Original file line number Diff line number Diff line change
Expand Up @@ -65,11 +65,14 @@
</Menu>
<Menu mnemonicParsing="true" text="%menu.language">
<RadioMenuItem mnemonicParsing="false" onAction="#onLanguageSelect" toggleGroup="$languageGroup"
text="English (US)" id="langRadio-en_US" selected="true">
text="Deutsch" id="langRadio-de_DE" selected="false">
<toggleGroup>
<ToggleGroup fx:id="languageGroup"/>
</toggleGroup>
</RadioMenuItem>
<RadioMenuItem mnemonicParsing="false" onAction="#onLanguageSelect" toggleGroup="$languageGroup"
text="English (US)" id="langRadio-en_US" selected="true">
</RadioMenuItem>
</Menu>
<Menu mnemonicParsing="true" text="%menu.help">
<MenuItem mnemonicParsing="true" fx:id="aboutButton" onAction="#showAbout" text="%menu.help.about"/>
Expand Down
73 changes: 73 additions & 0 deletions src/main/resources/lang/de_DE.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
#X-Generator: crowdin.com
menu.file=_Datei
menu.file.open_jar=_JAR \u00f6ffnen
menu.file.close_jar=_Aktuelle JAR schlie\u00dfen
menu.file.load_mappings=Zuordnungen _laden
menu.file.save_mappings=Zuordnungen _speichern
menu.file.save_mappings_as=Zuordnungen speichern _Als
menu.file.close=Schlie\u00dfen

menu.edit=_Bearbeiten
menu.file.reset_mappings=_Alle Zuordnungen zur\u00fccksetzen

menu.language=_Sprache

menu.help=_Hilfe
menu.help.about=_\u00dcber

classes.obfuscated=Verschleierte Klassen
classes.deobfuscated=Entschleierte Klassen

codetab.identifier=Identifikator Information
codetab.identifier.field=Feld
codetab.identifier.type=Typ
codetab.identifier.method=Methode
codetab.identifier.descriptor=Deskriptor
codetab.identifier.class=Klasse

member.contextmenu.rename=Umbenennen
member.contextmenu.reset=Zur\u00fccksetzen
member.contextmenu.jumpToDef=Springen zu definieren-Klasse

about.title=\u00dcber Nocturne
about.copyright=Urheberrecht
about.description=Ein grafisches Werzeug f\u00fcr die Erstellung von Java Entschleierungszuordnungsdateien.
about.license=Nucturne ist Open-Source Software und unter der MIT Lizenz lizensiert.
about.github=Der Quellcode ist auf GitHub verf\u00fcgbar.

filechooser.type_jar=JAR Dateien
filechooser.type_srg=SRG Dateien
filechooser.type_enigma=Enigma Dateien
filechooser.type_all=Alle Dateien
filechooser.open_jar=JAR Datei ausw\u00e4hlen
filechooser.open_mapping=W\u00e4hle Zuordnungsdatei
filechooser.save_mapping=Zieldatei ausw\u00e4hlen
filechooser.dirty.title=Speichern?
filechooser.dirty.content=M\u00f6chtest du die gegenw\u00e4rtig Zuordnungen speichern?

exception.title=Och N\u00f6\!
exception.header=Etwas in Nocturne is kaputt\! \:(
exception.dialog1=Du kannst "OK" zum Fortfahren oder "Schlie\u00dfen" zum Beenden klicken.
exception.dialog2=Du verlierst alle ungespeicherten \u00c4nderungen, falls du beendest\!
exception.dialog3=Wenn du glaubst, dass das ein Fehler ist, melde ihn bitte hier\:
exception.dialog4=Ein Stacktrace von der abgefangene Ausnahme ist unter\:

jarload.invalid=Lesen der JAR Datei fehlgeschlagen\! (Eventuell ist sie besch\u00e4digt?)
jarload.empty=Es wurden keine Klasseneintr\u00e4ge in der ausgew\u00e4hlten JAR Datei gefunden. Es wird nichts geladen.

rename.dupe.title=Duplikat Eigenschaftsnamen
rename.dupe.content=Eine Attribute mit dieser Name ist bereits vorhanden\!
rename.dupe.content.hierarchy=Eine Attribute mit dieser Name ist bereits vorhanden in der Hierarchie von dieser Methode\!

rename.illegal.title=Ung\u00fcltiger Mitgliedsname
rename.illegal.content=Der angegebene Name ist kein g\u00fcltiger Java Bezeichner.

dialog.load_jar.title=Lade JAR
dialog.load_jar.content=Die JAR Datei wird geladen, bitte warten...

dialog.decompile.title=Dekompiliere Klasse
dialog.decompile.content=Dekompilieren der Klassendateien, bitte warten...

dialog.restart.title=Neustart erforderlich
dialog.restart.content=Du musst Nocturne neu starten, damit dieser Wandel wirksam wird.

3 changes: 3 additions & 0 deletions src/main/resources/lang/en_US.properties
Original file line number Diff line number Diff line change
Expand Up @@ -66,3 +66,6 @@ dialog.load_jar.content=Loading JAR file, please wait...

dialog.decompile.title=Decompiling class
dialog.decompile.content=Decompiling class file, please wait...

dialog.restart.title=Restart required
dialog.restart.content=You must restart Nocturne for this change to take effect.

0 comments on commit 16e9b19

Please sign in to comment.