summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMürsel Türk2020-07-07 12:02:55 +0200
committerMürsel Türk2020-07-07 12:02:55 +0200
commitde374cea11032e8ea839ee349d7d68a68ffdea70 (patch)
treed30db205733d28004d2bdc7faa59f897e6f28460
parent[client] Add resource bundle files for activity classes. Update the activity ... (diff)
downloadtutor-module-de374cea11032e8ea839ee349d7d68a68ffdea70.tar.gz
tutor-module-de374cea11032e8ea839ee349d7d68a68ffdea70.tar.xz
tutor-module-de374cea11032e8ea839ee349d7d68a68ffdea70.zip
[client] Add resource bundle files for configurator classes. Update the configurator classes accordingly.
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ImagePermissionConfigurator.java7
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java30
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LecturePermissionConfigurator.java7
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java71
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java54
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/StartupConfigurator.java39
-rw-r--r--dozentenmodul/src/main/properties/i18n/configurator.properties124
-rw-r--r--dozentenmodul/src/main/properties/i18n/configurator_en_US.properties124
8 files changed, 351 insertions, 105 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ImagePermissionConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ImagePermissionConfigurator.java
index efba020c..cf082e27 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ImagePermissionConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/ImagePermissionConfigurator.java
@@ -33,6 +33,7 @@ import org.openslx.dozmod.gui.control.table.ImagePermissionTable;
import org.openslx.dozmod.gui.control.table.ImagePermissionTable.UserImagePermissions;
import org.openslx.dozmod.gui.control.table.QScrollPane;
import org.openslx.dozmod.gui.helper.GridManager;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.window.UserListWindow;
import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback;
import org.openslx.dozmod.thrift.cache.UserCache;
@@ -69,9 +70,9 @@ public class ImagePermissionConfigurator extends JPanel implements GenericContro
userButtonPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
userButtonPane.setLayout(new BoxLayout(userButtonPane, BoxLayout.LINE_AXIS));
- btnAddUser = new JButton("Benutzer hinzufügen");
+ btnAddUser = new JButton(I18n.CONFIGURATOR.getString("ImagePermission.Button.addUser.text"));
userButtonPane.add(btnAddUser);
- btnRemoveUser = new JButton("Benutzer entfernen");
+ btnRemoveUser = new JButton(I18n.CONFIGURATOR.getString("ImagePermission.Button.removeUser.text"));
userButtonPane.add(btnRemoveUser);
userButtonPane.add(Box.createGlue());
@@ -105,7 +106,7 @@ public class ImagePermissionConfigurator extends JPanel implements GenericContro
permissionTable.setData(permissionList, false);
fireUserChangeEvent();
}
- }, "Hinzufügen", ownerId);
+ }, I18n.CONFIGURATOR.getString("ImagePermission.Button.addUser.caption"), ownerId);
}
});
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java
index 15959322..817289be 100755
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LdapFilterConfigurator.java
@@ -29,6 +29,7 @@ import org.openslx.dozmod.gui.control.table.CheckListTable.Wrapper;
import org.openslx.dozmod.gui.control.table.LectureLdapFilterTable;
import org.openslx.dozmod.gui.control.table.QScrollPane;
import org.openslx.dozmod.gui.helper.GridManager;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.thrift.cache.MetaDataCache;
@@ -63,7 +64,7 @@ public class LdapFilterConfigurator extends LdapFilterConfiguratorLayout {
txtAttribute.setEnabled(editable);
txtValue.setEnabled(editable);
if (editable)
- btnAdd.setText("Ändern");
+ btnAdd.setText(I18n.CONFIGURATOR.getString("LdapFilter.Button.add.text.0"));
if (item == null) {
clearInputFields();
return;
@@ -82,7 +83,8 @@ public class LdapFilterConfigurator extends LdapFilterConfiguratorLayout {
LdapFilter input = new LdapFilter();
input.attribute = txtAttribute.getText();
if (input.attribute == null || input.attribute.isEmpty()) {
- Gui.showMessageBox("Kein Attribut angegeben", MessageType.ERROR, null, null);
+ Gui.showMessageBox(I18n.CONFIGURATOR.getString("LdapFilter.Message.error.noAttribute"),
+ MessageType.ERROR, null, null);
return;
}
input.value = txtValue.getText();
@@ -97,7 +99,8 @@ public class LdapFilterConfigurator extends LdapFilterConfiguratorLayout {
// creating a new one, either way add it to the list and update
// the table, if its not present already
if (oldList.contains(newEntry)) {
- Gui.showMessageBox("Eintrag bereits vorhanden", MessageType.ERROR, null, null);
+ Gui.showMessageBox(I18n.CONFIGURATOR.getString("LdapFilter.Message.error.entryAlreadyExists"),
+ MessageType.ERROR, null, null);
return;
}
// now decide whether to create a new entry or update existing one
@@ -143,7 +146,7 @@ public class LdapFilterConfigurator extends LdapFilterConfiguratorLayout {
btnDel.setEnabled(false);
txtAttribute.setText(null);
txtValue.setText(null);
- btnAdd.setText("Hinzufügen");
+ btnAdd.setText(I18n.CONFIGURATOR.getString("LdapFilter.Button.add.text.1"));
}
public List<LdapFilter> getState() {
@@ -205,11 +208,6 @@ class LdapFilterConfiguratorLayout extends JPanel {
private static final long serialVersionUID = 6479838641542743622L;
- private final static String HELPTEXT = "Geben Sie hier LDAP Filter ein, die die Sichtbarkeit"
- + " der Veranstaltung abhängig vom angemeldeten Benutzer einschränken. Eine Veranstaltung"
- + " ist sichtbar, sobald einer der angegebenen Filter zutrifft. Zusätzliche Raumbeschränkungen"
- + " greifen weiterhin.";
-
protected final LectureLdapFilterTable tblFilters = new LectureLdapFilterTable();
protected final JTextField txtAttribute, txtValue;
protected final JButton btnAdd, btnDel;
@@ -217,27 +215,29 @@ class LdapFilterConfiguratorLayout extends JPanel {
public LdapFilterConfiguratorLayout() {
GridManager grid = new GridManager(this, 1, true, new Insets(3, 3, 3, 3));
// top info panel
- grid.add(new WordWrapLabel(HELPTEXT)).fill(true, false).expand(true, false);
+ grid.add(new WordWrapLabel(I18n.CONFIGURATOR.getString("LdapFilter.Label.info.text")))
+ .fill(true, false).expand(true, false);
grid.nextRow();
// middle filter list
grid.add(new QScrollPane(tblFilters)).fill(true, true).expand(true, true);
grid.nextRow();
- btnDel = new JButton("Entfernen");
+ btnDel = new JButton(I18n.CONFIGURATOR.getString("LdapFilter.Button.delete.text"));
grid.add(btnDel).anchor(GridBagConstraints.EAST);
grid.nextRow();
JPanel pnlNewShare = new JPanel();
GridManager gridNewFilter = new GridManager(pnlNewShare, 3, true);
- pnlNewShare.setBorder(BorderFactory.createTitledBorder("Eigene Filter definieren"));
- gridNewFilter.add(new QLabel("Attribut"));
+ pnlNewShare.setBorder(BorderFactory.createTitledBorder(
+ I18n.CONFIGURATOR.getString("LdapFilter.TitledBorder.newShare.title")));
+ gridNewFilter.add(new QLabel(I18n.CONFIGURATOR.getString("LdapFilter.Label.attribute.text")));
txtAttribute = new JTextField();
gridNewFilter.add(txtAttribute, 2).fill(true, false).expand(true, false);
gridNewFilter.nextRow();
- gridNewFilter.add(new QLabel("Wert"));
+ gridNewFilter.add(new QLabel(I18n.CONFIGURATOR.getString("LdapFilter.Label.value.text")));
txtValue = new JTextField();
gridNewFilter.add(txtValue).fill(true, false).expand(true, false);
- btnAdd = new JButton("Hinzufügen");
+ btnAdd = new JButton(I18n.CONFIGURATOR.getString("LdapFilter.Button.add.text.1"));
gridNewFilter.add(btnAdd).anchor(GridBagConstraints.EAST);
gridNewFilter.nextRow();
gridNewFilter.finish(false);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LecturePermissionConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LecturePermissionConfigurator.java
index 5e4c1649..b659c3c9 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LecturePermissionConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/LecturePermissionConfigurator.java
@@ -31,6 +31,7 @@ import org.openslx.dozmod.gui.control.table.LecturePermissionTable;
import org.openslx.dozmod.gui.control.table.LecturePermissionTable.UserLecturePermissions;
import org.openslx.dozmod.gui.control.table.QScrollPane;
import org.openslx.dozmod.gui.helper.GridManager;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.window.UserListWindow;
import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback;
@@ -76,9 +77,9 @@ public class LecturePermissionConfigurator extends JPanel implements GenericCont
userButtonPane.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
userButtonPane.setLayout(new BoxLayout(userButtonPane, BoxLayout.LINE_AXIS));
- btnAddUser = new JButton("Benutzer hinzufügen");
+ btnAddUser = new JButton(I18n.CONFIGURATOR.getString("LecturePermission.Button.addUser.text"));
userButtonPane.add(btnAddUser);
- btnRemoveUser = new JButton("Benutzer entfernen");
+ btnRemoveUser = new JButton(I18n.CONFIGURATOR.getString("LecturePermission.Button.removeUser.text"));
userButtonPane.add(btnRemoveUser);
userButtonPane.add(Box.createGlue());
@@ -111,7 +112,7 @@ public class LecturePermissionConfigurator extends JPanel implements GenericCont
permissionTable.setData(permissionList, false);
fireUserChangeEvent();
}
- }, "Hinzufügen", ownerId);
+ }, I18n.CONFIGURATOR.getString("LecturePermission.Button.addUser.caption"), ownerId);
}
});
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java
index 3a0aabdd..8e11e484 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetrulesConfigurator.java
@@ -51,6 +51,7 @@ import org.openslx.dozmod.gui.changemonitor.GenericControlWindow;
import org.openslx.dozmod.gui.configurator.NetrulesConfigurator.StateWrapper;
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.MessageType;
import org.openslx.dozmod.gui.helper.TextChangeListener;
import org.openslx.dozmod.thrift.cache.MetaDataCache;
@@ -196,11 +197,13 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
private void showPresetSelector() {
if (predefinedRules == null) {
- Gui.showMessageBox("Wah wah wah! Null preset list", MessageType.ERROR, null, null);
+ Gui.showMessageBox(I18n.CONFIGURATOR.getString("NetRules.Message.error.noPredefinedRules"),
+ MessageType.ERROR, null, null);
return;
}
final JDialog dialog = new JDialog(SwingUtilities.getWindowAncestor(this),
- "Auswahl", ModalityType.APPLICATION_MODAL);
+ I18n.CONFIGURATOR.getString("NetRules.Dialog.dialog.title"),
+ ModalityType.APPLICATION_MODAL);
JPanel pane = new JPanel();
pane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel");
@@ -216,7 +219,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
dialog.setMinimumSize(dd);
dialog.setPreferredSize(dd);
GridManager grid = new GridManager(pane, 3, true, new Insets(2, 2, 2, 2));
- grid.add(new WordWrapLabel("Vordefinierte Regelsets:"), 3);
+ grid.add(new WordWrapLabel(I18n.CONFIGURATOR.getString("NetRules.Label.predefinedRules.text")), 3);
grid.nextRow();
final Map<ButtonModel, Integer> mapper = new HashMap<>();
for (PresetNetRule ruleSet : predefinedRules) {
@@ -231,8 +234,8 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
grid.add(Box.createVerticalGlue(), 3).expand(true, true).fill(true, true);
grid.nextRow();
grid.add(Box.createHorizontalGlue()).expand(true, false).fill(true, false);
- JButton btnCancel = new JButton("Abbrechen");
- JButton btnOk = new JButton("Speichern");
+ JButton btnCancel = new JButton(I18n.CONFIGURATOR.getString("NetRules.Button.cancel.text"));
+ JButton btnOk = new JButton(I18n.CONFIGURATOR.getString("NetRules.Button.ok.text"));
grid.add(btnCancel);
grid.add(btnOk);
grid.finish(false);
@@ -386,9 +389,9 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
// log numbers for fields independently...
LOGGER.debug("Invalid number of fields! Expected 3, got: " + fields.length);
if (fields.length > 3) {
- errors.append("Zeile " + lineNo + ": Zu viele Felder.\n");
+ errors.append(I18n.CONFIGURATOR.getString("NetRules.Message.error.tooManyFields", lineNo));
} else {
- errors.append("Zeile " + lineNo + ": Zu wenig Felder.\n");
+ errors.append(I18n.CONFIGURATOR.getString("NetRules.Message.error.tooFewFields", lineNo));
}
invalid = true;
continue;
@@ -404,7 +407,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
if (!ruleDirection.equals("IN") && !ruleDirection.equals("OUT")) {
lineNo += addLine(newdoc, ruleLine, Color.RED, true);
LOGGER.debug("Invalid net direction! Expected 'in' or out'. Got: " + ruleDirection);
- errors.append("Zeile " + lineNo + ": Ungültige Richtung. Bitte nutzen Sie 'IN' bzw. 'OUT'.\n");
+ errors.append(I18n.CONFIGURATOR.getString("NetRules.Message.error.invalidNetDirection", lineNo));
invalid = true;
continue;
}
@@ -415,7 +418,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
if (port < 0 || port > 65535) {
lineNo += addLine(newdoc, ruleLine, Color.RED, true);
LOGGER.debug("Invalid port! Got: " + port);
- errors.append("Zeile " + lineNo + ": Ungültiger Port. Gültiger Bereich ist 0-65535.\n");
+ errors.append(I18n.CONFIGURATOR.getString("NetRules.Message.error.invalidPort", lineNo));
invalid = true;
continue;
}
@@ -429,7 +432,8 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
String checkRes = checkHostnameSimple(fields[0]);
if (checkRes != null) {
lineNo += addLine(newdoc, ruleLine, Color.RED, true);
- errors.append("Zeile " + lineNo + ": " + checkRes + "\n");
+ errors.append(I18n.CONFIGURATOR.getString("NetRules.Message.error.checkResWithLineNo",
+ lineNo, checkRes));
invalid = true;
continue;
}
@@ -442,10 +446,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
resetTabStops();
}
if (!silent && errors.length() != 0) {
- Gui.showMessageBox("Fehler beim Auswerten der angegebenen Netzwerkregeln.\n\n" + errors.toString()
- + "\nBitte geben Sie die Regeln zeilenweise im Format\n"
- + "<host> <port> <IN|OUT>\n"
- + "an.",
+ Gui.showMessageBox(I18n.CONFIGURATOR.getString("NetRules.Message.error.evaluatingNetRules", errors.toString()),
MessageType.ERROR, null, null);
}
if (invalid) {
@@ -486,7 +487,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
*/
private String checkHostnameSimple(String hostname) {
if (hostname.length() > 254) {
- return "Hostname ist zu lang.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.hostnameTooLong");
}
boolean allNumeric = true;
int netmask = -1;
@@ -495,7 +496,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
if (ls != -1) {
netmask = Util.parseInt(hostname.substring(ls + 1), -1);
if (netmask == -1) {
- return "Ungültige Netzmaske.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.invalidNetmask");
}
hostname = hostname.substring(0, ls);
}
@@ -509,18 +510,18 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
// v6
if ((hostname.startsWith(":") && !hostname.startsWith("::"))
|| (hostname.endsWith(":") && ! hostname.endsWith("::"))) {
- return "IPv6-Adresse darf nicht mit einem Doppelpunkt beginnen oder enden.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.IPv6BeginOrEndWithColon");
}
int numCompressed = (hostname.length() - hostname.replace("::", "").length()) / 2;
if (numCompressed > 1) {
- return "IPv6-Adresse darf nicht mehr als einen komprimierten Teil enthalten.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.IPv6MoreThanOneCompressedPart");
}
if (netmask > 128) {
- return "IPv6 Netzmaske kann nicht größer 128 Bit sein.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.IPv6GreaterThan128Bits");
}
domainLabels = hostname.split(":");
if (domainLabels.length > 8) {
- return "IPv6-Adresse enthält zu viele Hextets."; // Yes it's called that apparently
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.IPv6TooManyHextets"); // Yes it's called that apparently
}
for (String domainLabel : domainLabels) {
if (domainLabel.isEmpty())
@@ -528,26 +529,27 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
try {
int test = Integer.parseInt(domainLabel, 16);
if (test < 0 || test > 65535) {
- return "IPv6-Adresse enthält ungültiges Hextet.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.IPv6InvalidHextet");
}
} catch (Exception e) {
- return "IPv6-Adresse enthält nicht-hexadezimale Zeichen.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.IPv6NonHexadecimalCharacters");
}
}
if (!allNumeric
|| ((domainLabels.length == 8 || numCompressed > 0) && (netmask < -1 || netmask > 128))
|| (domainLabels.length < 8 && numCompressed == 0 && (netmask < 0 || netmask > 128))) {
- return "Fehlerhafte IPv6-Adresse/Netzmaske.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.incorrectIPv6AddressOrNetmask");
}
} else {
// v4 or hostname
if (netmask > 32) {
- return "IPv4 Netzmaske kann nicht größer 32 Bit sein.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.IPv4GreaterThan32Bits");
}
for (String domainLabel : domainLabels) {
if (domainLabel.length() > 63) {
// fail since domain level should be max 63 chars
- return "Domain-Ebene '" + domainLabel + "' länger als 63 Zeichen.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.domainLabelLongerThan63Characters",
+ domainLabel);
}
int i = Util.parseInt(domainLabel, -1);
if (i < 0 || i > 255) {
@@ -559,7 +561,7 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
if ((domainLabels.length == 4 && (netmask < -1 || netmask > 32))
|| domainLabels.length > 4
|| (domainLabels.length < 4 && (netmask < 0 || netmask > 32))) {
- return "Fehlerhafte IPv4-Adresse/Netzmaske.";
+ return I18n.CONFIGURATOR.getString("NetRules.Message.error.incorrectIPv4AddressOrNetmask");
}
}
}
@@ -574,13 +576,6 @@ public class NetrulesConfigurator extends NetrulesConfiguratorLayout implements
class NetrulesConfiguratorLayout extends JPanel {
private static final long serialVersionUID = 5266120380443817325L;
- private final static String STR_RULES_DESCRIPTION = "Wenn Sie den Internetzugriff deaktiviert haben,"
- + " können Sie hier Ausnahmen definieren (Whitelist)."
- + " Bitte definieren Sie Ihre Regeln im Format\n<host> <port> <in|out>.\n"
- + "Sie können Port 0 angeben, was sämtlichen TCP und UDP Ports eines Hosts entspricht.";
- private final static String STR_RULES_ADD = "Wenn Sie Internetzugriff aktivieren,"
- + " hat diese Liste den gegenteiligen Effekt (Blacklist).";
- private final static String STR_TITLE = "Netzwerkregeln";
protected final JTextPane tpNetworkRules;
protected final JButton btnCheckRules;
@@ -592,19 +587,19 @@ class NetrulesConfiguratorLayout extends JPanel {
new Insets(5, 5, 5, 5));
// middle panel for network rules
- this.setBorder(BorderFactory.createTitledBorder(STR_TITLE));
+ this.setBorder(BorderFactory.createTitledBorder(I18n.CONFIGURATOR.getString("NetRules.TitledBorder.title")));
tpNetworkRules = new JTextPane();
resetTabStops();
grid
- .add(new WordWrapLabel(STR_RULES_DESCRIPTION), 2)
+ .add(new WordWrapLabel(I18n.CONFIGURATOR.getString("NetRules.Label.description.text")), 2)
.fill(true, false).expand(true, false);
grid.nextRow();
grid
- .add(new WordWrapLabel(STR_RULES_ADD))
+ .add(new WordWrapLabel(I18n.CONFIGURATOR.getString("NetRules.Label.add.text")))
.fill(true, false).expand(true, false);
- btnCheckRules = new JButton("Regeln überprüfen");
+ btnCheckRules = new JButton(I18n.CONFIGURATOR.getString("NetRules.Button.checkRules.text"));
grid.add(btnCheckRules);
grid.nextRow();
@@ -614,7 +609,7 @@ class NetrulesConfiguratorLayout extends JPanel {
.fill(true, true).expand(true, true);
grid.nextRow();
- btnShowPresets = new JButton("Vordefinierte Regelsets...");
+ btnShowPresets = new JButton(I18n.CONFIGURATOR.getString("NetRules.Button.showPresets.text"));
grid.add(btnShowPresets, 2).anchor(GridBagConstraints.LINE_END);
grid.nextRow();
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java
index 77f2e381..95c45282 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/NetshareConfigurator.java
@@ -38,6 +38,7 @@ import org.openslx.dozmod.gui.control.table.CheckListTable.Wrapper;
import org.openslx.dozmod.gui.control.table.NetshareTable;
import org.openslx.dozmod.gui.control.table.QScrollPane;
import org.openslx.dozmod.gui.helper.GridManager;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.thrift.cache.MetaDataCache;
import org.openslx.dozmod.util.FormatHelper;
@@ -79,7 +80,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
chkIsPrinter.setEnabled(editable);
chkShowPass.setEnabled(editable);
if (editable)
- btnAdd.setText("Ändern");
+ btnAdd.setText(I18n.CONFIGURATOR.getString("NetShare.Button.add.text.0"));
// clear the contents of the fields and return, if no share was selected.
if (item == null) {
@@ -145,7 +146,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
input.path = tfSharePath.getText();
if (input.path == null || input.path.isEmpty()) {
- lblError.setText("Kein Pfad angegeben!");
+ lblError.setText(I18n.CONFIGURATOR.getString("NetShare.Label.error.noPath"));
return;
}
String inputShareName = tfShareName.getText();
@@ -156,7 +157,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
NetShareAuth inputNetShareAuth = cboNetshareAuth
.getItemAt(cboNetshareAuth.getSelectedIndex());
if (inputNetShareAuth == null) {
- lblError.setText("Kein Authentifizierungstyp angegeben!");
+ lblError.setText(I18n.CONFIGURATOR.getString("NetShare.Label.error.noAuth"));
return;
}
input.auth = inputNetShareAuth;
@@ -170,7 +171,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
input.username = tfUsername.getText();
input.password = new String(tfPassword.getPassword());
if (input.username.isEmpty()) {
- lblError.setText("Kein Nutzername angegeben!");
+ lblError.setText(I18n.CONFIGURATOR.getString("NetShare.Label.error.noUsername"));
return;
}
break;
@@ -179,7 +180,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
break;
}
if (input == null) {
- lblError.setText("Fehlerhafte Eingabe");
+ lblError.setText(I18n.CONFIGURATOR.getString("NetShare.Label.error.incorrectInput"));
LOGGER.debug("Bad input, aborting.");
return;
}
@@ -189,7 +190,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
.getItemAt(cboNetshareMountPoint.getSelectedIndex());
if (!chkIsPrinter.isSelected()) {
if (inputMountPoint == null) {
- lblError.setText("Kein Laufwerk angegeben!");
+ lblError.setText(I18n.CONFIGURATOR.getString("NetShare.Label.error.noMountPoint"));
return;
}
input.mountpoint = String.valueOf(inputMountPoint);
@@ -201,10 +202,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
// which we might want to implement one day...
if (input.password != null && !input.password.isEmpty()) {
if (!Gui.showMessageBox(
- "Das eingebene Passwort wird im Klartext gespeichert "
- + "und ist in der VM für jeden Nutzer sichtbar.\n"
- + "Verwenden Sie auf keinen Fall sicherheitskritische Passwörter!"
- + "\n\nMöchten Sie diesen Netzlaufwerk trotzdem hinzufügen?",
+ I18n.CONFIGURATOR.getString("NetShare.Message.yesNo.password"),
MessageType.QUESTION_YESNO, LOGGER, null)) {
return;
}
@@ -218,7 +216,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
if (oldEntry != null && oldList.contains(oldEntry)) {
// editing existing one, delete it from the internal data
if (!oldList.remove(oldEntry)) {
- lblError.setText("Änderung fehlgeschlagen!");
+ lblError.setText(I18n.CONFIGURATOR.getString("NetShare.Label.error.changeFailed"));
LOGGER.error("Failed to remove selected share for replacement: " + oldEntry);
return;
}
@@ -228,7 +226,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
// creating a new one, either way add it to the list and update
// the table, if its not present already
if (oldList.contains(newEntry)) {
- lblError.setText("Existiert bereits!");
+ lblError.setText(I18n.CONFIGURATOR.getString("NetShare.Label.error.alreadyExists"));
LOGGER.error("Network share already in the list, aborting.");
return;
}
@@ -287,7 +285,7 @@ public class NetshareConfigurator extends NetshareConfiguratorLayout {
cboNetshareMountPoint.setSelectedItem(null);
chkIsPrinter.setSelected(false);
chkShowPass.setSelected(false);
- btnAdd.setText("Hinzufügen");
+ btnAdd.setText(I18n.CONFIGURATOR.getString("NetShare.Button.add.text.1"));
}
public List<NetShare> getState() {
@@ -335,10 +333,6 @@ class NetshareConfiguratorLayout extends JPanel {
private static final long serialVersionUID = 6479525981542743622L;
- private final static String txtNetshareDesc = "<html>Hier können Sie Netzlaufwerke angeben,"
- + " die automatisch beim Start der Veranstaltung eingebunden werden sollen."
- + " Der Platzhalter <em>%loginuser%</em> wird im Pfad durch den Loginnamen des Nutzers ersetzt.</html>";
-
protected final JLabel lblError;
protected final NetshareTable tblNetshare = new NetshareTable();
protected final JTextField tfSharePath, tfShareName, tfUsername;
@@ -369,7 +363,8 @@ class NetshareConfiguratorLayout extends JPanel {
public NetshareConfiguratorLayout() {
GridManager grid = new GridManager(this, 3, true, new Insets(3, 3, 3, 3));
// top info panel
- grid.add(new JLabel(txtNetshareDesc), 3).fill(true, false).expand(true, false);
+ grid.add(new JLabel(I18n.CONFIGURATOR.getString("NetShare.Label.description.text")), 3)
+ .fill(true, false).expand(true, false);
grid.nextRow();
// middle netshare list
grid.add(new QScrollPane(tblNetshare), 3).fill(true, true).expand(true, true);
@@ -377,17 +372,18 @@ class NetshareConfiguratorLayout extends JPanel {
JPanel pnlNewShare = new JPanel();
GridManager gridNewShare = new GridManager(pnlNewShare, 6, true, new Insets(0, 3, 0, 3));
- pnlNewShare.setBorder(BorderFactory.createTitledBorder("Eigenes Netzlaufwerk definieren"));
+ pnlNewShare.setBorder(BorderFactory.createTitledBorder(
+ I18n.CONFIGURATOR.getString("NetShare.TitledBorder.newShare.title")));
JPanel pnlSharePath = new JPanel();
pnlSharePath.setLayout(new BoxLayout(pnlSharePath, BoxLayout.LINE_AXIS));
- gridNewShare.add(new QLabel("Pfad"));
+ gridNewShare.add(new QLabel(I18n.CONFIGURATOR.getString("NetShare.Label.sharePath.text")));
tfSharePath = new JTextField();
pnlSharePath.add(tfSharePath);
pnlSharePath.add(Box.createGlue());
pnlSharePath.add(Box.createHorizontalStrut(5));
- chkIsPrinter = new JCheckBox("Drucker");
+ chkIsPrinter = new JCheckBox(I18n.CONFIGURATOR.getString("NetShare.CheckBox.isPrinter.text"));
pnlSharePath.add(chkIsPrinter);
pnlSharePath.add(Box.createHorizontalStrut(5));
gridNewShare.add(pnlSharePath, 5).fill(true, false).expand(true, false);
@@ -399,30 +395,30 @@ class NetshareConfiguratorLayout extends JPanel {
pnlShareName.setLayout(new BoxLayout(pnlShareName, BoxLayout.LINE_AXIS));
pnlShareName.add(tfShareName);
pnlShareName.add(Box.createHorizontalStrut(3));
- pnlShareName.add(new QLabel("Laufwerk"));
+ pnlShareName.add(new QLabel(I18n.CONFIGURATOR.getString("NetShare.Label.shareMountPoint.text")));
pnlShareName.add(Box.createHorizontalStrut(3));
pnlShareName.add(cboNetshareMountPoint);
- gridNewShare.add(new QLabel("Anzeigename"));
+ gridNewShare.add(new QLabel(I18n.CONFIGURATOR.getString("NetShare.Label.shareName.text")));
gridNewShare.add(pnlShareName, 5).fill(true, false).expand(true, false);
gridNewShare.nextRow();
- gridNewShare.add(new QLabel("Authentifizierung"));
+ gridNewShare.add(new QLabel(I18n.CONFIGURATOR.getString("NetShare.Label.shareAuth.text")));
gridNewShare.add(cboNetshareAuth, 5).fill(true, false).expand(true, false);
gridNewShare.nextRow();
- gridNewShare.add(new QLabel("Benutzername"));
+ gridNewShare.add(new QLabel(I18n.CONFIGURATOR.getString("NetShare.Label.username.text")));
tfUsername = new JTextField(20);
gridNewShare.add(tfUsername, 2).fill(true, false).expand(true, false);
- gridNewShare.add(new QLabel("Passwort"));
+ gridNewShare.add(new QLabel(I18n.CONFIGURATOR.getString("NetShare.Label.password.text")));
tfPassword = new JPasswordField(20);
gridNewShare.add(tfPassword, 2).fill(true, false).expand(true, false);
gridNewShare.nextRow();
- chkShowPass = new JCheckBox("Passwort anzeigen");
+ chkShowPass = new JCheckBox(I18n.CONFIGURATOR.getString("NetShare.CheckBox.showPassword.text"));
gridNewShare.add(Box.createGlue(), 5);
gridNewShare.add(chkShowPass).anchor(GridBagConstraints.EAST);
gridNewShare.nextRow();
grid.add(pnlNewShare, 3).fill(true, false).expand(true, false);
grid.nextRow();
- btnAdd = new JButton("Hinzufügen");
- btnDel = new JButton("Entfernen");
+ btnAdd = new JButton(I18n.CONFIGURATOR.getString("NetShare.Button.add.text.1"));
+ btnDel = new JButton(I18n.CONFIGURATOR.getString("NetShare.Button.delete.text"));
lblError = new QLabel("");
lblError.setForeground(Color.RED);
grid.add(lblError).fill(true, false).expand(true, false);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/StartupConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/StartupConfigurator.java
index 16267690..eadc7339 100755
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/StartupConfigurator.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/configurator/StartupConfigurator.java
@@ -41,6 +41,7 @@ import org.openslx.dozmod.gui.control.ComboBox.ComboBoxRenderer;
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.MessageType;
import org.openslx.dozmod.thrift.Session;
import org.openslx.dozmod.thrift.cache.MetaDataCache;
@@ -96,11 +97,12 @@ public class StartupConfigurator extends StartupConfiguratorLayout {
private void showRunscriptSelector() {
if (scripts == null) {
- Gui.showMessageBox("Wah wah wah! Null scripts", MessageType.ERROR, null, null);
+ Gui.showMessageBox(I18n.CONFIGURATOR.getString("Startup.Message.error.noScripts"),
+ MessageType.ERROR, null, null);
return;
}
final JDialog dialog = new JDialog(SwingUtilities.getWindowAncestor(this),
- "Auswahl", ModalityType.APPLICATION_MODAL);
+ I18n.CONFIGURATOR.getString("Startup.Dialog.title"), ModalityType.APPLICATION_MODAL);
JPanel pane = new JPanel();
pane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW)
.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel");
@@ -116,7 +118,8 @@ public class StartupConfigurator extends StartupConfiguratorLayout {
dialog.setMinimumSize(dd);
dialog.setPreferredSize(dd);
GridManager grid = new GridManager(pane, 3, true, new Insets(2, 2, 2, 2));
- grid.add(new WordWrapLabel("Vordefinierte Startskripte:"), 3).fill(true, false);
+ grid.add(new WordWrapLabel(I18n.CONFIGURATOR.getString("Startup.Label.predefinedScripts.text")), 3)
+ .fill(true, false);
grid.nextRow();
final Map<ButtonModel, Integer> mapper = new HashMap<>();
boolean haveDisabled = false;
@@ -135,15 +138,14 @@ public class StartupConfigurator extends StartupConfiguratorLayout {
}
}
if (haveDisabled) {
- grid.add(new WordWrapLabel("Ausgegraute Elemente sind mit dem zur"
- + " Veranstaltung gehörendem Betriebssystem nicht kompatibel."), 3)
+ grid.add(new WordWrapLabel(I18n.CONFIGURATOR.getString("Startup.Label.greyedOutElements.text")), 3)
.fill(true, false);
grid.nextRow();
}
grid.add(Box.createVerticalGlue(), 3).expand(true, true).fill(true, true);
grid.nextRow();
- JButton btnCancel = new JButton("Abbrechen");
- JButton btnOk = new JButton("Speichern");
+ JButton btnCancel = new JButton(I18n.CONFIGURATOR.getString("Startup.Button.cancel.text"));
+ JButton btnOk = new JButton(I18n.CONFIGURATOR.getString("Startup.Button.ok.text"));
grid.add(Box.createHorizontalGlue()).expand(true, true).fill(true, true);
grid.add(btnCancel);
grid.add(btnOk);
@@ -386,8 +388,6 @@ class StartupConfiguratorLayout extends JPanel {
private static final long serialVersionUID = 648729071828404053L;
- private final static String RUN_SCRIPT_HELP = "Ein hier eingetragenes Skript wird nach dem Start"
- + " der VM automatisch ausgeführt.";
protected final QLabel lblError;
protected final JTextArea taRunScript;
protected final ComboBox<RunscriptType> cboRunscriptType;
@@ -397,7 +397,7 @@ class StartupConfiguratorLayout extends JPanel {
public StartupConfiguratorLayout() {
GridManager grid = new GridManager(this, 2, true, new Insets(5, 5, 5, 5));
- grid.add(new QLabel("Audio"));
+ grid.add(new QLabel(I18n.CONFIGURATOR.getString("Startup.Label.audio.text")));
cboSoundState = new ComboBox<>(new ComboBoxRenderer<SoundState>() {
@Override
public String renderItem(SoundState item) {
@@ -411,7 +411,7 @@ class StartupConfiguratorLayout extends JPanel {
grid.add(Box.createVerticalStrut(4), 2);
grid.nextRow();
- grid.add(new WordWrapLabel(RUN_SCRIPT_HELP, false, true), 2)
+ grid.add(new WordWrapLabel(I18n.CONFIGURATOR.getString("Startup.Label.description.text"), false, true), 2)
.fill(true, false).expand(true, false);
grid.nextRow();
@@ -427,7 +427,7 @@ class StartupConfiguratorLayout extends JPanel {
cboRunscriptType.setModel(new DefaultComboBoxModel<RunscriptType>(
RunscriptType.values()));
cboRunscriptType.setEditable(true);
- grid.add(new QLabel("Dateinamenserweiterung: ")).fill(false, false)
+ grid.add(new QLabel(I18n.CONFIGURATOR.getString("Startup.Label.scriptType.text"))).fill(false, false)
.expand(false, false);
grid.add(cboRunscriptType).fill(true, false)
.expand(true, false);
@@ -442,7 +442,7 @@ class StartupConfiguratorLayout extends JPanel {
}
});
cboRunscriptVisibility.setModel(new DefaultComboBoxModel<RunscriptVisibility>(RunscriptVisibility.values()));
- grid.add(new QLabel("Sichtbarkeit: ")).fill(false, false)
+ grid.add(new QLabel(I18n.CONFIGURATOR.getString("Startup.Label.visibility.text"))).fill(false, false)
.expand(false, false);
grid.add(cboRunscriptVisibility).fill(true, false)
.expand(true, false);
@@ -457,7 +457,7 @@ class StartupConfiguratorLayout extends JPanel {
grid.add(scpRunScript, 2).fill(true, true).expand(true, true);
grid.nextRow();
- btnPredefinedScripts = new JButton("Vordefinierte Skripte...");
+ btnPredefinedScripts = new JButton(I18n.CONFIGURATOR.getString("Startup.Button.predefinedScripts.text"));
grid.add(btnPredefinedScripts, 2).anchor(GridBagConstraints.LINE_END);
grid.nextRow();
@@ -475,7 +475,8 @@ class StartupConfiguratorLayout extends JPanel {
enum RunscriptType {
- SHELL("Shellskript", "sh"), BATCH("Windows-Batch", "bat");
+ SHELL(I18n.CONFIGURATOR.getString("Startup.ScriptType.shell"), "sh"),
+ BATCH(I18n.CONFIGURATOR.getString("Startup.ScriptType.batch"), "bat");
public final String displayName;
public final String extension;
@@ -492,7 +493,9 @@ enum RunscriptType {
}
enum RunscriptVisibility {
- NORMAL("Normal", 1), MINIMIZED("Minimiert", 2), HIDDEN("Versteckt", 0);
+ NORMAL(I18n.CONFIGURATOR.getString("Startup.ScriptVisibility.normal"), 1),
+ MINIMIZED(I18n.CONFIGURATOR.getString("Startup.ScriptVisibility.minimized"), 2),
+ HIDDEN(I18n.CONFIGURATOR.getString("Startup.ScriptVisibility.hidden"), 0);
public final String displayName;
public final int value;
@@ -504,7 +507,9 @@ enum RunscriptVisibility {
}
enum SoundState {
- DEFAULT("Vorgabe des Pools", -1), MUTED("Stummschalten", 1), UNMUTED("Aktivieren", 0);
+ DEFAULT(I18n.CONFIGURATOR.getString("Startup.SoundState.default"), -1),
+ MUTED(I18n.CONFIGURATOR.getString("Startup.SoundState.muted"), 1),
+ UNMUTED(I18n.CONFIGURATOR.getString("Startup.SoundState.unmuted"), 0);
public final String displayName;
public final int value;
diff --git a/dozentenmodul/src/main/properties/i18n/configurator.properties b/dozentenmodul/src/main/properties/i18n/configurator.properties
new file mode 100644
index 00000000..4e13df38
--- /dev/null
+++ b/dozentenmodul/src/main/properties/i18n/configurator.properties
@@ -0,0 +1,124 @@
+# ImagePermissionConfigurator
+ImagePermission.Button.addUser.text=Benutzer hinzufügen
+ImagePermission.Button.removeUser.text=Benutzer entfernen
+ImagePermission.Button.addUser.caption=Hinzufügen
+
+# LdapFilterConfigurator
+LdapFilter.Button.add.text.0=Ändern
+LdapFilter.Message.error.noAttribute=Kein Attribut angegeben
+LdapFilter.Message.error.entryAlreadyExists=Eintrag bereits vorhanden
+LdapFilter.Button.add.text.1=Hinzufügen
+
+# LdapFilterConfiguratorLayout
+LdapFilter.Label.info.text=Geben Sie hier LDAP Filter ein, die die Sichtbarkeit \
+ der Veranstaltung abhängig vom angemeldeten Benutzer einschränken. Eine Veranstaltung \
+ ist sichtbar, sobald einer der angegebenen Filter zutrifft. Zusätzliche Raumbeschränkungen \
+ greifen weiterhin.
+LdapFilter.Button.delete.text=Entfernen
+LdapFilter.TitledBorder.newShare.title=Eigene Filter definieren
+LdapFilter.Label.attribute.text=Attribut
+LdapFilter.Label.value.text=Wert
+
+# LecturePermissionConfigurator
+LecturePermission.Button.addUser.text=Benutzer hinzufügen
+LecturePermission.Button.removeUser.text=Benutzer entfernen
+LecturePermission.Button.addUser.caption=Hinzufügen
+
+# NetRulesConfigurator
+NetRules.Message.error.noPredefinedRules=Wah wah wah! Null preset list
+NetRules.Dialog.dialog.title=Auswahl
+NetRules.Label.predefinedRules.text=Vordefinierte Regelsets:
+NetRules.Button.cancel.text=Abbrechen
+NetRules.Button.ok.text=Speichern
+NetRules.Message.error.tooManyFields=Zeile {0}: Zu viele Felder.\n
+NetRules.Message.error.tooFewFields=Zeile {0}: Zu wenig Felder.\n
+NetRules.Message.error.invalidNetDirection=Zeile {0}: Ungültige Richtung. Bitte nutzen Sie 'IN' bzw. 'OUT'.\n
+NetRules.Message.error.invalidPort=Zeile {0}: Ungültiger Port. Gültiger Bereich ist 0-65535.\n
+NetRules.Message.error.checkResWithLineNo=Zeile {0}: {1}\n
+NetRules.Message.error.evaluatingNetRules=Fehler beim Auswerten der angegebenen Netzwerkregeln.\n\n{0}\
+ \nBitte geben Sie die Regeln zeilenweise im Format\n\
+ <host> <port> <IN|OUT>\nan.
+NetRules.Message.error.hostnameTooLong=Hostname ist zu lang.
+NetRules.Message.error.invalidNetmask=Ungültige Netzmaske.
+NetRules.Message.error.IPv6BeginOrEndWithColon=IPv6-Adresse darf nicht mit einem Doppelpunkt beginnen oder enden.
+NetRules.Message.error.IPv6MoreThanOneCompressedPart=IPv6-Adresse darf nicht mehr als einen komprimierten Teil enthalten.
+NetRules.Message.error.IPv6GreaterThan128Bits=IPv6 Netzmaske kann nicht größer 128 Bit sein.
+NetRules.Message.error.IPv6TooManyHextets=IPv6-Adresse enthält zu viele Hextets.
+NetRules.Message.error.IPv6InvalidHextet=IPv6-Adresse enthält ungültiges Hextet.
+NetRules.Message.error.IPv6NonHexadecimalCharacters=IPv6-Adresse enthält nicht-hexadezimale Zeichen.
+NetRules.Message.error.incorrectIPv6AddressOrNetmask=Fehlerhafte IPv6-Adresse/Netzmaske.
+NetRules.Message.error.IPv4GreaterThan32Bits=IPv4 Netzmaske kann nicht größer 32 Bit sein.
+NetRules.Message.error.domainLabelLongerThan63Characters=Domain-Ebene {0} länger als 63 Zeichen.
+NetRules.Message.error.incorrectIPv4AddressOrNetmask=Fehlerhafte IPv4-Adresse/Netzmaske.
+
+# NetRulesConfiguratorLayout
+NetRules.TitledBorder.title=Netzwerkregeln
+NetRules.Label.description.text=Wenn Sie den Internetzugriff deaktiviert haben, \
+ können Sie hier Ausnahmen definieren (Whitelist). \
+ Bitte definieren Sie Ihre Regeln im Format\n<host> <port> <in|out>.\n\
+ Sie können Port 0 angeben, was sämtlichen TCP und UDP Ports eines Hosts entspricht.
+NetRules.Label.add.text=Wenn Sie Internetzugriff aktivieren, \
+ hat diese Liste den gegenteiligen Effekt (Blacklist).
+NetRules.Button.checkRules.text=Regeln überprüfen
+NetRules.Button.showPresets.text=Vordefinierte Regelsets...
+
+# NetShareConfigurator
+NetShare.Button.add.text.0=Ändern
+NetShare.Label.error.noPath=Kein Pfad angegeben!
+NetShare.Label.error.noAuth=Kein Authentifizierungstyp angegeben!
+NetShare.Label.error.noUsername=Kein Nutzername angegeben!
+NetShare.Label.error.incorrectInput=Fehlerhafte Eingabe
+NetShare.Label.error.noMountPoint=Kein Laufwerk angegeben!
+NetShare.Message.yesNo.password=Das eingegebene Passwort wird im Klartext gespeichert \
+ und ist in der VM für jeden Nutzer sichtbar.\n\
+ Verwenden Sie auf keinen Fall sicherheitskritische Passwörter!\
+ \n\nMöchten Sie diesen Netzlaufwerk trotzdem hinzufügen?
+NetShare.Label.error.changeFailed=Änderung fehlgeschlagen!
+NetShare.Label.error.alreadyExists=Existiert bereits!
+NetShare.Button.add.text.1=Hinzufügen
+
+# NetShareConfiguratorLayout
+NetShare.Label.description.text=<html>Hier können Sie Netzlaufwerke angeben, \
+ die automatisch beim Start der Veranstaltung eingebunden werden sollen. \
+ Der Platzhalter <em>%loginuser%</em> wird im Pfad durch den Loginnamen des Nutzers ersetzt.</html>
+NetShare.TitledBorder.newShare.title=Eigenes Netzlaufwerk definieren
+NetShare.Label.sharePath.text=Pfad
+NetShare.CheckBox.isPrinter.text=Drucker
+NetShare.Label.shareMountPoint.text=Laufwerk
+NetShare.Label.shareName.text=Anzeigename
+NetShare.Label.shareAuth.text=Authentifizierung
+NetShare.Label.username.text=Benutzername
+NetShare.Label.password.text=Passwort
+NetShare.CheckBox.showPassword.text=Passwort anzeigen
+NetShare.Button.delete.text=Entfernen
+
+# StartupConfigurator
+Startup.Message.error.noScripts=Wah wah wah! Null scripts
+Startup.Dialog.title=Auswahl
+Startup.Label.predefinedScripts.text=Vordefinierte Startskripte:
+Startup.Label.greyedOutElements.text=Ausgegraute Elemente sind mit dem zur \
+ Veranstaltung gehörendem Betriebssystem nicht kompatibel.
+Startup.Button.cancel.text=Abbrechen
+Startup.Button.ok.text=Speichern
+
+# StartupConfiguratorLayout
+Startup.Label.audio.text=Audio
+Startup.Label.description.text=Ein hier eingetragenes Skript wird nach dem Start \
+ der VM automatisch ausgeführt.
+Startup.Label.scriptType.text=Dateinamenserweiterung:
+Startup.Label.visibility.text=Sichtbarkeit:
+Startup.Button.predefinedScripts.text=Vordefinierte Skripte...
+
+# RunscriptType
+Startup.ScriptType.shell=Shellskript
+Startup.ScriptType.batch=Windows-Batch
+
+# RunscriptVisibility
+Startup.ScriptVisibility.normal=Normal
+Startup.ScriptVisibility.minimized=Minimiert
+Startup.ScriptVisibility.hidden=Versteckt
+
+# SoundState
+Startup.SoundState.default=Vorgabe des Pools
+Startup.SoundState.muted=Stummschalten
+Startup.SoundState.unmuted=Aktivieren \ No newline at end of file
diff --git a/dozentenmodul/src/main/properties/i18n/configurator_en_US.properties b/dozentenmodul/src/main/properties/i18n/configurator_en_US.properties
new file mode 100644
index 00000000..ecb5e7e7
--- /dev/null
+++ b/dozentenmodul/src/main/properties/i18n/configurator_en_US.properties
@@ -0,0 +1,124 @@
+# ImagePermissionConfigurator
+ImagePermission.Button.addUser.text=Add user
+ImagePermission.Button.removeUser.text=Delete user
+ImagePermission.Button.addUser.caption=Add
+
+# LdapFilterConfigurator
+LdapFilter.Button.add.text.0=Change
+LdapFilter.Message.error.noAttribute=No attribute given
+LdapFilter.Message.error.entryAlreadyExists=Entry already exists
+LdapFilter.Button.add.text.1=Add
+
+# LdapFilterConfiguratorLayout
+LdapFilter.Label.info.text=Enter LDAP filters here, that restrict the visibility \
+ of the lecture depending on the logged-in user. A lecture \
+ is visible as soon as one of the given filters applies. Additional room restrictions \
+ still apply.
+LdapFilter.Button.delete.text=Delete
+LdapFilter.TitledBorder.newShare.title=Define own filters
+LdapFilter.Label.attribute.text=Attribute
+LdapFilter.Label.value.text=Value
+
+# LecturePermissionConfigurator
+LecturePermission.Button.addUser.text=Add user
+LecturePermission.Button.removeUser.text=Delete user
+LecturePermission.Button.addUser.caption=Add
+
+# NetRulesConfigurator
+NetRules.Message.error.noPredefinedRules=Wah wah wah! Null preset list
+NetRules.Dialog.dialog.title=Selection
+NetRules.Label.predefinedRules.text=Predefined rules:
+NetRules.Button.cancel.text=Cancel
+NetRules.Button.ok.text=Save
+NetRules.Message.error.tooManyFields=Line {0}: too many fields.\n
+NetRules.Message.error.tooFewFields=Line {0}: too few fields.\n
+NetRules.Message.error.invalidNetDirection=Line {0}: Invalid direction. Please use 'IN' or 'OUT'.\n
+NetRules.Message.error.invalidPort=Line {0}: Invalid port. Valid range is 0-65535.\n
+NetRules.Message.error.checkResWithLineNo=Line {0}: {1}\n
+NetRules.Message.error.evaluatingNetRules=Error while evaluating the given network rules.\n\n{0}\
+ \nPlease enter the rules line by line in the following format\n\
+ <host> <port> <IN|OUT>
+NetRules.Message.error.hostnameTooLong=Hostname too long.
+NetRules.Message.error.invalidNetmask=Invalid netmask.
+NetRules.Message.error.IPv6BeginOrEndWithColon=IPv6 address must not begin or end with colon.
+NetRules.Message.error.IPv6MoreThanOneCompressedPart=IPv6 address must not contain more than one compressed part.
+NetRules.Message.error.IPv6GreaterThan128Bits=IPv6 netmask cannot be greater than 128 Bits.
+NetRules.Message.error.IPv6TooManyHextets=IPv6 address contains too many hextets.
+NetRules.Message.error.IPv6InvalidHextet=IPv6 address contains invalid hextet.
+NetRules.Message.error.IPv6NonHexadecimalCharacters=IPv6 address contains non-hexadecimal characters.
+NetRules.Message.error.incorrectIPv6AddressOrNetmask=Incorrect IPv6 address/netmask.
+NetRules.Message.error.IPv4GreaterThan32Bits=IPv4 netmask cannot be greater then 32 Bits.
+NetRules.Message.error.domainLabelLongerThan63Characters=Domain label {0} longer than 63 characters.
+NetRules.Message.error.incorrectIPv4AddressOrNetmask=Incorrect IPv4 address/netmask.
+
+# NetRulesConfiguratorLayout
+NetRules.TitledBorder.title=Network rules
+NetRules.Label.description.text=If you have disabled internet access, \
+ you can define exceptions here (Whitelist). \
+ Please define your rules in the following format\n<host> <port> <in|out>.\n\
+ You can specify port 0, which corresponds to all TCP and UDP ports of a host.
+NetRules.Label.add.text=If you enable internet access, \
+ this list has the opposite effect (Blacklist).
+NetRules.Button.checkRules.text=Check rules
+NetRules.Button.showPresets.text=Predefined rules...
+
+# NetShareConfigurator
+NetShare.Button.add.text.0=Change
+NetShare.Label.error.noPath=No path given!
+NetShare.Label.error.noAuth=No authentication type given!
+NetShare.Label.error.noUsername=No username given!
+NetShare.Label.error.incorrectInput=Incorrect input
+NetShare.Label.error.noMountPoint=No mount point given!
+NetShare.Message.yesNo.password=The entered password will be stored in plain text \
+ and will be visible in the VM for all users.\n\
+ Please do not use any security critical passwords here!\
+ \n\nDo you want to add this network drive anyway?
+NetShare.Label.error.changeFailed=Change failed!
+NetShare.Label.error.alreadyExists=Already exists!
+NetShare.Button.add.text.1=Add
+
+# NetShareConfiguratorLayout
+NetShare.Label.description.text=<html>Here you can specify network drives \
+ that are to be included automatically when the lecture starts. \
+ The placeholder <em>%loginuser%</em> will be replaced in the path by the login name of the user.</html>
+NetShare.TitledBorder.newShare.title=Define own network drive
+NetShare.Label.sharePath.text=Path
+NetShare.CheckBox.isPrinter.text=Printer
+NetShare.Label.shareMountPoint.text=Mount point
+NetShare.Label.shareName.text=Display name
+NetShare.Label.shareAuth.text=Authentication
+NetShare.Label.username.text=Username
+NetShare.Label.password.text=Password
+NetShare.CheckBox.showPassword.text=Show password
+NetShare.Button.delete.text=Delete
+
+# StartupConfigurator
+Startup.Message.error.noScripts=Wah wah wah! Null scripts
+Startup.Dialog.title=Selection
+Startup.Label.predefinedScripts.text=Predefined scripts:
+Startup.Label.greyedOutElements.text=Greyed out elements are not compatible with the \
+ operating system belonging to the lecture.
+Startup.Button.cancel.text=Cancel
+Startup.Button.ok.text=Save
+
+# StartupConfiguratorLayout
+Startup.Label.audio.text=Audio
+Startup.Label.description.text=A script entered here is executed automatically \
+ after the start of the VM.
+Startup.Label.scriptType.text=Filename extension:
+Startup.Label.visibility.text=Visibility:
+Startup.Button.predefinedScripts.text=Predefined scripts...
+
+# RunscriptType
+Startup.ScriptType.shell=Shell script
+Startup.ScriptType.batch=Windows batch
+
+# RunscriptVisibility
+Startup.ScriptVisibility.normal=Normal
+Startup.ScriptVisibility.minimized=Minimized
+Startup.ScriptVisibility.hidden=Hidden
+
+# SoundState
+Startup.SoundState.default=Default of the pool
+Startup.SoundState.muted=Mute
+Startup.SoundState.unmuted=Unmute \ No newline at end of file