summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMürsel Türk2020-08-05 21:26:53 +0200
committerMürsel Türk2020-08-05 21:26:53 +0200
commit02b3c2866b024a02cdbc16270834e2a54a1c6ec6 (patch)
tree8e251336ed6175a8604882da29f171f04f0f81c7
parent[client] Add turkish translation for wizard (diff)
downloadtutor-module-02b3c2866b024a02cdbc16270834e2a54a1c6ec6.tar.gz
tutor-module-02b3c2866b024a02cdbc16270834e2a54a1c6ec6.tar.xz
tutor-module-02b3c2866b024a02cdbc16270834e2a54a1c6ec6.zip
[client] Add combobox for choosing language
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/App.java22
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/Config.java18
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/helper/Language.java18
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java20
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/window/layout/ConfigWindowLayout.java41
-rw-r--r--dozentenmodul/src/main/properties/i18n/helper.properties7
-rw-r--r--dozentenmodul/src/main/properties/i18n/helper_en_US.properties7
-rw-r--r--dozentenmodul/src/main/properties/i18n/helper_tr_TR.properties7
-rw-r--r--dozentenmodul/src/main/properties/i18n/window_layout.properties2
-rw-r--r--dozentenmodul/src/main/properties/i18n/window_layout_en_US.properties2
-rw-r--r--dozentenmodul/src/main/properties/i18n/window_layout_tr_TR.properties2
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