diff options
author | Mürsel Türk | 2020-08-05 21:26:53 +0200 |
---|---|---|
committer | Mürsel Türk | 2020-08-05 21:26:53 +0200 |
commit | 02b3c2866b024a02cdbc16270834e2a54a1c6ec6 (patch) | |
tree | 8e251336ed6175a8604882da29f171f04f0f81c7 /dozentenmodul/src/main | |
parent | [client] Add turkish translation for wizard (diff) | |
download | tutor-module-02b3c2866b024a02cdbc16270834e2a54a1c6ec6.tar.gz tutor-module-02b3c2866b024a02cdbc16270834e2a54a1c6ec6.tar.xz tutor-module-02b3c2866b024a02cdbc16270834e2a54a1c6ec6.zip |
[client] Add combobox for choosing language
Diffstat (limited to 'dozentenmodul/src/main')
11 files changed, 126 insertions, 20 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java index 89e4e09b..1ca0fe05 100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java @@ -30,6 +30,7 @@ import org.openslx.dozmod.Config.ProxyMode; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.helper.I18n; +import org.openslx.dozmod.gui.helper.Language; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.util.ClientVersion; import org.openslx.dozmod.util.FormatHelper; @@ -161,8 +162,25 @@ public class App { setupLogger(); - //Locale.setDefault(new Locale("de", "DE")); - Locale.setDefault(new Locale("en", "US")); + // Setting the locale + // Check first if preferred language exists + if (Config.getPreferredLanguage() != null) { + String[] locale = Config.getPreferredLanguage().split("_"); + Locale.setDefault(new Locale(locale[0], locale[1])); + } else { + // Detect operating system language + String ul = System.getProperty("user.language"); + if (ul.equals("en")) { + Locale.setDefault(new Locale("en", "US")); + Config.setPreferredLanguage(Language.EN_US.value); + } else if (ul.equals("tr")) { + Locale.setDefault(new Locale("tr", "TR")); + Config.setPreferredLanguage(Language.TR_TR.value); + } else { + Locale.setDefault(new Locale("de", "DE")); + Config.setPreferredLanguage(Language.DE_DE.value); + } + } // Setup swing style System.setProperty("awt.useSystemAAFontSettings", "on"); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java index 904d0693..a0e41689 100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/Config.java @@ -458,6 +458,24 @@ public class Config { } /** + * Set the language which should be used + * + * @param value the language consists of language and country + */ + public static void setPreferredLanguage(String value) { + setString("gui.language", value); + } + + /** + * Get the language preferred by the user + * + * @return the saved language, null otherwise + */ + public static String getPreferredLanguage() { + return getString("gui.language", null); + } + + /** * Gets the boolean from the given key. * If nothing is found, return the given default value * diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/Language.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/Language.java new file mode 100644 index 00000000..d038f292 --- /dev/null +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/Language.java @@ -0,0 +1,18 @@ +package org.openslx.dozmod.gui.helper; + +/** + * List of available languages as an enum. + */ +public enum Language { + DE_DE(I18n.HELPER.getString("Language.german"), "de_DE"), + EN_US(I18n.HELPER.getString("Language.english"), "en_US"), + TR_TR(I18n.HELPER.getString("Language.turkish"), "tr_TR"); + + public final String displayName; + public final String value; + + Language(String name, String value) { + this.displayName = name; + this.value = value; + } +}
\ No newline at end of file diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java index 73bfe4a0..15d26b92 100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java @@ -19,6 +19,7 @@ import org.openslx.dozmod.Config.ProxyMode; import org.openslx.dozmod.gui.Gui; import org.openslx.dozmod.gui.MainWindow; import org.openslx.dozmod.gui.helper.I18n; +import org.openslx.dozmod.gui.helper.Language; import org.openslx.dozmod.gui.helper.MessageType; import org.openslx.dozmod.gui.helper.UiFeedback; import org.openslx.dozmod.gui.window.layout.ConfigWindowLayout; @@ -113,6 +114,15 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti sldConnections.setValue(Config.getTransferConnectionCount()); sldConnections.addChangeListener(changeListener); + // Language + for (Language language : Language.values()) { + if (language.value.equals(Config.getPreferredLanguage())) { + cboLanguage.setSelectedItem(language); + break; + } + } + cboLanguage.addActionListener(this); + // -- BOTTOM BUTTONS -- btnSave.addActionListener(this); btnClose.addActionListener(this); @@ -124,7 +134,7 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti public void actionPerformed(ActionEvent e) { Object source = e.getSource(); if (source == btnProxyAuto || source == btnProxyHttp || source == btnProxyNone - || source == btnProxySocks || source == chkSendMeMail) { + || source == btnProxySocks || source == chkSendMeMail || source == cboLanguage) { reactToInput(); } if (source == btnSave) { @@ -141,6 +151,7 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti // first check our initial state ProxyMode initMode = Config.getProxyMode(); int fontScaling = Config.getFontScaling(); + Language newLanguage = (Language)cboLanguage.getSelectedItem(); // now check if the buttons represent another state if (btnProxyNone.isSelected() && initMode != ProxyMode.NONE) { @@ -155,6 +166,8 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti changed = true; } else if (!selectedLookAndFeel.getToolTipText().equals(Config.getLookAndFeel())) { changed = true; + } else if (!newLanguage.value.equals(Config.getPreferredLanguage())) { + changed = true; } // en/disable the save button @@ -222,6 +235,11 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti Config.setLookAndFeel(selectedLookAndFeel.getToolTipText()); } + // save language + Language newLanguage = (Language)cboLanguage.getSelectedItem(); + restartRequired = restartRequired || !newLanguage.value.equals(Config.getPreferredLanguage()); + Config.setPreferredLanguage(newLanguage.value); + if (restartRequired) { // let the user know he needs to restart for the changes to apply Gui.showMessageBox(this, I18n.WINDOW.getString("Config.Message.info.restartNeededToApplyChanges"), diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java index cf126587..0dfe4c1e 100755 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java @@ -4,27 +4,18 @@ import java.awt.BorderLayout; import java.awt.Insets; import java.awt.Window; -import javax.swing.BorderFactory; -import javax.swing.Box; -import javax.swing.BoxLayout; -import javax.swing.ButtonGroup; -import javax.swing.DefaultBoundedRangeModel; -import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JDialog; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JSlider; -import javax.swing.UIManager; +import javax.swing.*; import javax.swing.UIManager.LookAndFeelInfo; import org.openslx.dozmod.Branding; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.Gui; +import org.openslx.dozmod.gui.control.ComboBox; import org.openslx.dozmod.gui.control.QLabel; import org.openslx.dozmod.gui.control.WordWrapLabel; import org.openslx.dozmod.gui.helper.GridManager; import org.openslx.dozmod.gui.helper.I18n; +import org.openslx.dozmod.gui.helper.Language; @SuppressWarnings("serial") public class ConfigWindowLayout extends JDialog { @@ -39,6 +30,8 @@ public class ConfigWindowLayout extends JDialog { protected final JSlider sldConnections; protected ButtonGroup btnGroupLookAndFeel = null; + protected final ComboBox<Language> cboLanguage; + protected final JButton btnSave; protected final JButton btnClose; @@ -146,6 +139,26 @@ public class ConfigWindowLayout extends JDialog { sldConnections.setPaintLabels(true); grid.add(sldConnections).expand(true, false).fill(true, false); + // Language + grid.add(new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.language.text"), + true, false)) + .insets(headingInset) + .fill(true, false) + .expand(true, false); + grid.add( + new WordWrapLabel(I18n.WINDOW_LAYOUT.getString("Config.Label.languageInfo.text"), + false, true)) + .fill(true, false) + .expand(true, false); + cboLanguage = new ComboBox<>(new ComboBox.ComboBoxRenderer<Language>() { + @Override + public String renderItem(Language item) { + return item.displayName; + } + }); + cboLanguage.setModel(new DefaultComboBoxModel<>(Language.values())); + grid.add(cboLanguage).fill(true, false).expand(true, false); + // Finish grid.finish(true); @@ -160,7 +173,7 @@ public class ConfigWindowLayout extends JDialog { buttonPanel.add(btnSave); getContentPane().add(buttonPanel, BorderLayout.PAGE_END); - setPreferredSize(Gui.getScaledDimension(500, 650)); + setPreferredSize(Gui.getScaledDimension(500, 700)); } -} +}
\ No newline at end of file diff --git a/dozentenmodul/src/main/properties/i18n/helper.properties b/dozentenmodul/src/main/properties/i18n/helper.properties index 7b077f1f..706ecf51 100644 --- a/dozentenmodul/src/main/properties/i18n/helper.properties +++ b/dozentenmodul/src/main/properties/i18n/helper.properties @@ -10,4 +10,9 @@ MessageType.warning=Warnung MessageType.warningRetry=Fehler MessageType.error=Fehler MessageType.errorRetry=Fehler -MessageType.questionYesNo=Frage
\ No newline at end of file +MessageType.questionYesNo=Frage + +# Language +Language.german=Deutsch +Language.english=Englisch +Language.turkish=Türkisch
\ No newline at end of file diff --git a/dozentenmodul/src/main/properties/i18n/helper_en_US.properties b/dozentenmodul/src/main/properties/i18n/helper_en_US.properties index 534dd6c1..fdea4867 100644 --- a/dozentenmodul/src/main/properties/i18n/helper_en_US.properties +++ b/dozentenmodul/src/main/properties/i18n/helper_en_US.properties @@ -10,4 +10,9 @@ MessageType.warning=Warning MessageType.warningRetry=Error MessageType.error=Error MessageType.errorRetry=Error -MessageType.questionYesNo=Question
\ No newline at end of file +MessageType.questionYesNo=Question + +# Language +Language.german=German +Language.english=English +Language.turkish=Turkish
\ No newline at end of file diff --git a/dozentenmodul/src/main/properties/i18n/helper_tr_TR.properties b/dozentenmodul/src/main/properties/i18n/helper_tr_TR.properties index 52f37193..dd09afc0 100644 --- a/dozentenmodul/src/main/properties/i18n/helper_tr_TR.properties +++ b/dozentenmodul/src/main/properties/i18n/helper_tr_TR.properties @@ -10,4 +10,9 @@ MessageType.warning=Uyarı MessageType.warningRetry=Hata MessageType.error=Hata MessageType.errorRetry=Hata -MessageType.questionYesNo=Soru
\ No newline at end of file +MessageType.questionYesNo=Soru + +# Language +Language.german=Almanca +Language.english=İngilizce +Language.turkish=Türkçe
\ No newline at end of file diff --git a/dozentenmodul/src/main/properties/i18n/window_layout.properties b/dozentenmodul/src/main/properties/i18n/window_layout.properties index fb44da4e..a8768bac 100644 --- a/dozentenmodul/src/main/properties/i18n/window_layout.properties +++ b/dozentenmodul/src/main/properties/i18n/window_layout.properties @@ -26,6 +26,8 @@ Config.Label.concurrentConnectionsInfo.text=Im Normalfall werden beste Ergebniss Ihre Netzwerkanbindung nicht auslastet, probieren Sie den nächsthöheren \ Wert. Zu hohe Werte können einen negativen Effekt auf die \ Übertragungsgeschwindigkeit haben und belasten den Satellitenserver stärker. +Config.Label.language.text=Sprache +Config.Label.languageInfo.text=Hier können Sie zwischen den Sprachen wechseln. Config.Button.close.text=Schließen Config.Button.save.text=Speichern diff --git a/dozentenmodul/src/main/properties/i18n/window_layout_en_US.properties b/dozentenmodul/src/main/properties/i18n/window_layout_en_US.properties index f508cd14..a3fcfcad 100644 --- a/dozentenmodul/src/main/properties/i18n/window_layout_en_US.properties +++ b/dozentenmodul/src/main/properties/i18n/window_layout_en_US.properties @@ -26,6 +26,8 @@ Config.Label.concurrentConnectionsInfo.text=Normally, best results are achieved does not overload your network connection, try the next higher \ value. Too high values can have a negative effect on the \ transfer speed and put a higher load on the satellite server. +Config.Label.language.text=Language +Config.Label.languageInfo.text=Here you can switch between the languages. Config.Button.close.text=Close Config.Button.save.text=Save diff --git a/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties b/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties index 7b8bc87c..9d68233b 100644 --- a/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties +++ b/dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties @@ -26,6 +26,8 @@ Config.Label.concurrentConnectionsInfo.text=En iyi sonuçlar genellikle bu ayar ağ bağlantı kapasitenizi aşmıyorsa, bir sonraki yüksek değeri \ deneyebilirsiniz. Çok yüksek değerler aktarım hızını olumsuz etkileyebilir \ ve satelit sunucusunun aşırı yüklenmesine sebep olabilir. +Config.Label.language.text=Dil +Config.Label.languageInfo.text=Burada diller arasında geçiş yapabilirsiniz. Config.Button.close.text=Kapat Config.Button.save.text=Kaydet |