summaryrefslogtreecommitdiffstats
path: root/dozentenmodul/src/main
diff options
context:
space:
mode:
authorMürsel Türk2020-07-07 12:06:02 +0200
committerMürsel Türk2020-07-07 12:06:02 +0200
commit42953d4f03816ea466d0d3161d93e4c3545b5741 (patch)
treecb9784e44d8099b9c4f4257c8703c3ffffd42d16 /dozentenmodul/src/main
parent[client] Add resource bundle files for window/layout classes. Update the wind... (diff)
downloadtutor-module-42953d4f03816ea466d0d3161d93e4c3545b5741.tar.gz
tutor-module-42953d4f03816ea466d0d3161d93e4c3545b5741.tar.xz
tutor-module-42953d4f03816ea466d0d3161d93e4c3545b5741.zip
[client] Add resource bundle files for window classes. Update the window classes accordingly.
Diffstat (limited to 'dozentenmodul/src/main')
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/BwIdmLinkWindow.java18
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ConfigWindow.java9
-rwxr-xr-xdozentenmodul/src/main/java/org/openslx/dozmod/gui/window/GenericNoticeWindow.java9
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java77
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java13
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java10
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java9
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java52
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java36
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LocationSelectionWindow.java5
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java47
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/SatelliteListWindow.java4
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java7
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java6
-rw-r--r--dozentenmodul/src/main/properties/i18n/window.properties142
-rw-r--r--dozentenmodul/src/main/properties/i18n/window_en_US.properties142
16 files changed, 440 insertions, 146 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/BwIdmLinkWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/BwIdmLinkWindow.java
index d24378ab..9e804812 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/BwIdmLinkWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/BwIdmLinkWindow.java
@@ -21,6 +21,7 @@ import org.openslx.dozmod.Branding;
import org.openslx.dozmod.authentication.ShibbolethEcp;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.helper.GridManager;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.util.DesktopEnvironment;
@@ -29,11 +30,6 @@ import org.openslx.dozmod.util.DesktopEnvironment;
*/
@SuppressWarnings("serial")
public class BwIdmLinkWindow extends JDialog implements UiFeedback {
- private static final String title = "Registrierung erforderlich";
- private static final String infoText = "<html><body style='width:100%'>"
- + "Sie sind nicht bei " + Branding.getServiceName() + " registriert. "
- + "Bitte rufen Sie die angegebene Seite auf um sich zu registrieren und versuchen Sie es erneut."
- + "</body></html>";
protected JButton btnLink;
protected JButton OkButton;
@@ -44,8 +40,8 @@ public class BwIdmLinkWindow extends JDialog implements UiFeedback {
* Don't use this, use static function open instead!
*/
public BwIdmLinkWindow(Frame modalParent) {
- super(modalParent, title, modalParent != null ? ModalityType.APPLICATION_MODAL
- : ModalityType.MODELESS);
+ super(modalParent, I18n.WINDOW.getString("BwIdmLink.Dialog.title", Branding.getServiceName()),
+ modalParent != null ? ModalityType.APPLICATION_MODAL : ModalityType.MODELESS);
final BwIdmLinkWindow me = this;
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
@@ -57,13 +53,13 @@ public class BwIdmLinkWindow extends JDialog implements UiFeedback {
GridManager grid = new GridManager(contentPanel, 1);
// infotext
- JLabel infoLabel = new JLabel(infoText);
- infoLabel.setBorder(BorderFactory.createTitledBorder("Hinweis"));
+ JLabel infoLabel = new JLabel(I18n.WINDOW.getString("BwIdmLink.Label.info.text"));
+ infoLabel.setBorder(BorderFactory.createTitledBorder(I18n.WINDOW.getString("BwIdmLink.Label.info.title")));
grid.add(infoLabel).fill(true, true).expand(true, true).anchor(GridBagConstraints.CENTER);
grid.nextRow();
// button for opening the link
- btnLink = new JButton("Seite im Browser öffnen");
+ btnLink = new JButton(I18n.WINDOW.getString("BwIdmLink.Button.link.text"));
btnLink.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
@@ -92,7 +88,7 @@ public class BwIdmLinkWindow extends JDialog implements UiFeedback {
bottomPane.add(Box.createHorizontalGlue());
// close/ok button
- OkButton = new JButton("Schließen");
+ OkButton = new JButton(I18n.WINDOW.getString("BwIdmLink.Button.ok.text"));
OkButton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
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 c8c0d9d0..73bfe4a0 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
@@ -18,6 +18,7 @@ import org.openslx.dozmod.Config;
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.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.ConfigWindowLayout;
@@ -66,7 +67,7 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti
chkSendMeMail.setSelected(false);
}
chkSendMeMail.addActionListener(this);
- lblYourAddress.setText("Ihre Adresse ist " + Session.getEMail());
+ lblYourAddress.setText(I18n.WINDOW.getString("Config.Label.yourAddress.text", Session.getEMail()));
}
// -- END USER CONFIG --
@@ -167,7 +168,7 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti
userConfig = ThriftManager.getSatClient().getUserConfig(Session.getSatelliteToken());
} catch (TException e) {
ThriftError.showMessage(this, LOGGER, e,
- "Konnte die benutzerspezifische Konfiguration nicht vom Satelliten holen");
+ I18n.WINDOW.getString("Config.Message.error.couldNotGetUserConfFromSat"));
}
return userConfig;
}
@@ -181,7 +182,7 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti
userConfig = config;
} catch (TException e) {
ThriftError.showMessage(this, LOGGER, e,
- "Konnte die benutzerspezifische Konfiguration nicht auf dem Satelliten speichern");
+ I18n.WINDOW.getString("Config.Message.error.couldNotSaveUserConfOnSat"));
return false;
}
return true;
@@ -223,7 +224,7 @@ public class ConfigWindow extends ConfigWindowLayout implements UiFeedback, Acti
if (restartRequired) {
// let the user know he needs to restart for the changes to apply
- Gui.showMessageBox(this, "Die Änderungen werden erst nach einem Programmneustart wirksam.",
+ Gui.showMessageBox(this, I18n.WINDOW.getString("Config.Message.info.restartNeededToApplyChanges"),
MessageType.INFO, null, null);
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/GenericNoticeWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/GenericNoticeWindow.java
index 94492d7f..09b22948 100755
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/GenericNoticeWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/GenericNoticeWindow.java
@@ -13,6 +13,7 @@ import javax.swing.JScrollBar;
import org.apache.log4j.Logger;
import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.GenericNoticeWindowLayout;
@@ -50,7 +51,7 @@ public abstract class GenericNoticeWindow extends GenericNoticeWindowLayout impl
});
if (!shouldBeShown) {
chkAgreeBox.setVisible(false);
- btnContinue.setText("Schließen");
+ btnContinue.setText(I18n.WINDOW.getString("GenericNotice.Button.continue.text"));
btnContinue.setEnabled(true);
} else {
disclaimerPanel.getVerticalScrollBar().addAdjustmentListener(new AdjustmentListener() {
@@ -86,10 +87,8 @@ public abstract class GenericNoticeWindow extends GenericNoticeWindowLayout impl
*/
private void closeWindow() {
if (shouldBeShown) {
- if (Gui.showMessageBox(me,
- "Wenn diesen rechtlichen Hinweis nicht akzeptieren, können Sie die Software nicht verwenden! "
- + "Sind Sie sicher, dass sie abbrechen wollen?", MessageType.QUESTION_YESNO,
- LOGGER, null)) {
+ if (Gui.showMessageBox(me, I18n.WINDOW.getString("GenericNotice.Message.yesNo.closeWindow"),
+ MessageType.QUESTION_YESNO, LOGGER, null)) {
System.exit(ABORT);
}
} else {
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
index 211ff1b7..17b9b3db 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageDetailsWindow.java
@@ -46,11 +46,7 @@ import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.changemonitor.AbstractControlWrapper;
import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor;
import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.TextNotEmptyConstraint;
-import org.openslx.dozmod.gui.helper.DateTimeHelper;
-import org.openslx.dozmod.gui.helper.ExpiryDateChooser;
-import org.openslx.dozmod.gui.helper.MessageType;
-import org.openslx.dozmod.gui.helper.PopupMenu;
-import org.openslx.dozmod.gui.helper.UiFeedback;
+import org.openslx.dozmod.gui.helper.*;
import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback;
import org.openslx.dozmod.gui.window.layout.ImageDetailsWindowLayout;
import org.openslx.dozmod.gui.wizard.ImageUpdateWizard;
@@ -125,11 +121,11 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
/**
* Popup menu items
*/
- private final JMenuItem mnuNewLecture = new JMenuItem("Neue Veranstaltung");
- private final JMenuItem mnuDownload = new JMenuItem("Download");
- private final JMenuItem mnuVmConfig = new JMenuItem("VM-Konfiguration");
- private final JMenuItem mnuDelete = new JMenuItem("Löschen");
- private final JMenuItem mnuExtendExpiryDate = new JMenuItem("Ablaufzeitpunkt verlängern");
+ private final JMenuItem mnuNewLecture = new JMenuItem(I18n.WINDOW.getString("ImageDetails.MenuItem.newLecture.text"));
+ private final JMenuItem mnuDownload = new JMenuItem(I18n.WINDOW.getString("ImageDetails.MenuItem.download.text"));
+ private final JMenuItem mnuVmConfig = new JMenuItem(I18n.WINDOW.getString("ImageDetails.MenuItem.vmConfig.text"));
+ private final JMenuItem mnuDelete = new JMenuItem(I18n.WINDOW.getString("ImageDetails.MenuItem.delete.text"));
+ private final JMenuItem mnuExtendExpiryDate = new JMenuItem(I18n.WINDOW.getString("ImageDetails.MenuItem.extendExpirationDate.text"));
private DialogChangeMonitor changeMonitor;
@@ -220,13 +216,12 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
public void userAdded(UserInfo user, UserListWindow window) {
window.dispose();
if (Gui.showMessageBox(me,
- "Sind Sie sicher, dass sie die Besitzerrechte an "
- + "einen anderen Benutzer übertragen wollen?",
+ I18n.WINDOW.getString("ImageDetails.Message.yesNo.changeOwner"),
MessageType.QUESTION_YESNO, LOGGER, null))
setImageOwner(user);
}
- }, "Besitzer festlegen", image.ownerId);
+ }, I18n.WINDOW.getString("ImageDetails.Button.changeOwner.caption"), image.ownerId);
}
});
@@ -337,16 +332,17 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
tblVersions.addMouseListener(ma);
// add controls to change monitor to handle user actions
- changeMonitor.add(txtTitle).addConstraint(new TextNotEmptyConstraint("Name darf nicht leer sein"));
- changeMonitor.add(txtDescription)
- .addConstraint(new TextNotEmptyConstraint("Beschreibung darf nicht leer sein"));
+ changeMonitor.add(txtTitle).addConstraint(new TextNotEmptyConstraint(
+ I18n.WINDOW.getString("ImageDetails.TextField.title.error")));
+ changeMonitor.add(txtDescription).addConstraint(new TextNotEmptyConstraint(
+ I18n.WINDOW.getString("ImageDetails.TextField.description.error")));
changeMonitor.add(txtTags);
changeMonitor.addFixedCombo(cboOperatingSystem, Comparators.operatingSystem)
.addConstraint(new DialogChangeMonitor.ValidationConstraint<OperatingSystem>() {
public String checkStateValid(OperatingSystem userInput) {
if (userInput != null && MetaDataCache.getOsById(userInput.osId) != null) // validating OS coming from the cache makes no sense?
return null;
- return "Ungültiges Betriebssystem ausgewählt!";
+ return I18n.WINDOW.getString("ImageDetails.ComboBox.OS.error");
}
});
changeMonitor.addFixedCombo(cboShareMode, null)
@@ -354,7 +350,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
public String checkStateValid(ShareMode userInput) {
if (userInput != null)
return null;
- return "Ungültiges Betriebssystem ausgewählt!";
+ return I18n.WINDOW.getString("ImageDetails.ComboBox.shareMode.error");
}
});
changeMonitor.add(chkIsTemplate);
@@ -415,8 +411,9 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
@Override
public void run() {
if (machineDescription == null) {
- Gui.showMessageBox("Konnte VM-Konfiguration nicht abrufen.", MessageType.ERROR,
- LOGGER, null);
+ Gui.showMessageBox(
+ I18n.WINDOW.getString("ImageDetails.Message.error.couldNotRetrieveVMConfig"),
+ MessageType.ERROR, LOGGER, null);
return;
}
@@ -482,8 +479,9 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
if (!actionHandler.setImageOwner(image.getImageBaseId(), user)) {
return;
}
- Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user), MessageType.INFO,
- null, null);
+ Gui.showMessageBox(me,
+ I18n.WINDOW.getString("ImageDetails.Message.info.setImageOwner", FormatHelper.userName(user)),
+ MessageType.INFO, null, null);
makeEditable(false);
refresh(true);
}
@@ -496,13 +494,13 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
// 04.2018: bail if we the user tries to publish a non-vmware image.
if (Session.hasFeature(Feature.MULTIPLE_HYPERVISORS) && !TConst.VIRT_VMWARE.equals(image.virtId)) {
Gui.showMessageBox(
- MetaDataCache.getVirtualizerById(image.virtId).virtName
- + " ist derzeit nicht für den öffentlichen Austausch freigegeben.",
+ I18n.WINDOW.getString("ImageDetails.Message.error.publishNonVMWareImage",
+ MetaDataCache.getVirtualizerById(image.virtId).virtName),
MessageType.ERROR, null, null);
return;
}
if (changeMonitor.isCurrentlyModified()) {
- if (Gui.showMessageBox("Sie haben unspeicherte Änderungen, wollen Sie diese erst speichern?",
+ if (Gui.showMessageBox(I18n.WINDOW.getString("ImageDetails.Message.yesNo.currentlyModified"),
MessageType.QUESTION_YESNO, null, null)) {
if (!saveChangesInternal()) {
return;
@@ -510,7 +508,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
}
}
// let the user confirm or abort
- if (!Gui.showMessageBox("Wollen Sie diese VM wirklich landesweit veröffentlichen?",
+ if (!Gui.showMessageBox(I18n.WINDOW.getString("ImageDetails.Message.yesNo.confirmOrAbort"),
MessageType.QUESTION_YESNO, null, null))
return;
// start upload to masterserver
@@ -523,10 +521,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
image.latestVersionId);
} catch (TException e1) {
ThriftError.showMessage(me, LOGGER, e1,
- "Upload der VM auf den Masterserver fehlgeschlagen."
- + " Prüfen Sie, ob Sie bei der Registrierung dem landesweiten VM-Austausch zugestimmt haben.\n"
- + " Sie können dies hier überprüfen:\n"
- + DesktopEnvironment.Link.REGISTER_BWIDM.uri.toString() + "\n\n");
+ I18n.WINDOW.getString("ImageDetails.Message.error.uploadFailed",
+ DesktopEnvironment.Link.REGISTER_BWIDM.uri.toString()));
return;
}
Gui.asyncExec(new Runnable() {
@@ -535,10 +531,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
MainWindow.addPassiveTransfer(transferId, image.imageName, true);
// Inform user
Gui.showMessageBox(ImageDetailsWindow.this,
- "Die Übertragung läuft direkt zwischen Satellitenserver und"
- + " dem " + Branding.getServiceName() + " Zentral-Server.\n"
- + "Wenn Sie die " + Branding.getApplicationName() + " schließen, wird der Transfer trotzdem"
- + "weiterlaufen.",
+ I18n.WINDOW.getString("ImageDetails.Message.info.passiveTransfer",
+ Branding.getServiceName(), Branding.getApplicationName()),
MessageType.INFO, null, null);
}
});
@@ -591,7 +585,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
LOGGER.info("Successfully saved new metadata");
} catch (TException e) {
ThriftError.showMessage(me, LOGGER, e,
- "Konnte aktualisierte Metadaten nicht an den Server übermitteln");
+ I18n.WINDOW.getString("ImageDetails.Message.error.saveChangesInternal"));
return false;
}
@@ -617,7 +611,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
LOGGER.info("Successfully saved new custom permissions");
} catch (TException e) {
ThriftError.showMessage(me, LOGGER, e,
- "Konnte geänderte Berechtigungen nicht an den Server übermitteln");
+ I18n.WINDOW.getString("ImageDetails.Message.error.saveCustomPermissions"));
return false;
}
return true;
@@ -630,7 +624,8 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
*/
private void performImageDownload(ImageVersionDetails selected) {
if (selected.getVersionId() == null) {
- Gui.showMessageBox(this, "Ausgewählte Version ist ungültig", MessageType.ERROR, null, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("ImageDetails.Message.error.performImageDownload"),
+ MessageType.ERROR, null, null);
return;
}
// using actionHandler here is not needed, as this ThriftAction works for downloads
@@ -698,12 +693,12 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
count++;
} catch (TException e) {
ThriftError.showMessage(this, LOGGER, e,
- "Konnte Ablaufdatum der Version " + img.versionId + " nicht verlängern.");
+ I18n.WINDOW.getString("ImageDetails.Message.error.extendVersionExpiry", img.versionId));
}
}
if (count > 0) {
- Gui.showMessageBox(this, "Erfolgreich verlängerte Abbilder: " + count, MessageType.INFO, null,
- null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("ImageDetails.Message.info.extendVersionExpiry", count),
+ MessageType.INFO, null, null);
refresh(true);
}
}
@@ -882,7 +877,7 @@ public class ImageDetailsWindow extends ImageDetailsWindowLayout implements UiFe
*/
private boolean safeClose() {
if (changeMonitor.isCurrentlyModified()
- && !Gui.showMessageBox(me, "Änderungen werden verworfen, wollen Sie wirklich schließen?",
+ && !Gui.showMessageBox(me, I18n.WINDOW.getString("ImageDetails.Message.yesNo.safeClose"),
MessageType.QUESTION_YESNO, null, null))
return false;
dispose();
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
index 50034bf0..b2904280 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImageListWindow.java
@@ -24,6 +24,7 @@ import org.openslx.bwlp.thrift.iface.ImageSummaryRead;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.control.table.ImageTable;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.PopupMenu;
import org.openslx.dozmod.gui.window.ImageDetailsWindow.ImageUpdatedCallback;
@@ -62,10 +63,10 @@ public class ImageListWindow extends ImageListWindowLayout implements DownloadCa
/**
* Popup menu items
*/
- private final JMenuItem popupItemNewLecture = new JMenuItem("Neue Veranstaltung");
- private final JMenuItem popupItemEdit = new JMenuItem("Detailansicht");
- private final JMenuItem popupItemDelete = new JMenuItem("Löschen");
- private final JMenuItem popupItemDownload = new JMenuItem("Download");
+ private final JMenuItem popupItemNewLecture = new JMenuItem(I18n.WINDOW.getString("ImageList.MenuItem.newLecture.text"));
+ private final JMenuItem popupItemEdit = new JMenuItem(I18n.WINDOW.getString("ImageList.MenuItem.edit.text"));
+ private final JMenuItem popupItemDelete = new JMenuItem(I18n.WINDOW.getString("ImageList.MenuItem.delete.text"));
+ private final JMenuItem popupItemDownload = new JMenuItem(I18n.WINDOW.getString("ImageList.MenuItem.download.text"));
/**
* Constructor
@@ -251,7 +252,7 @@ public class ImageListWindow extends ImageListWindowLayout implements DownloadCa
if (image == null)
return false;
if (image.getLatestVersionId() == null) {
- Gui.showMessageBox(me, "Die gewählte VM besitzt keine gültige Image-Version",
+ Gui.showMessageBox(me, I18n.WINDOW.getString("ImageList.Message.error.hasLatestVersion"),
MessageType.ERROR, null, null);
return false;
}
@@ -379,7 +380,7 @@ public class ImageListWindow extends ImageListWindowLayout implements DownloadCa
}
}
if (failedToDeleteAll) {
- Gui.showMessageBox("Folgende images konnten nicht gelöscht werden: " + builder.toString(),
+ Gui.showMessageBox(I18n.WINDOW.getString("ImageList.Message.info.deleteImages", builder.toString()),
MessageType.INFO, LOGGER, null);
}
ctlImageListViewer.refreshList(deletedAtLeastOne, 1000);
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java
index b02b5cf7..079329c7 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/ImagePublishedWindow.java
@@ -31,6 +31,7 @@ import org.openslx.dozmod.Branding;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.control.table.ListTable.ListModel;
+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.gui.helper.UiFeedback;
@@ -113,15 +114,14 @@ public class ImagePublishedWindow extends ImagePublishedWindowLayout implements
transferToken = ThriftManager.getSatClient()
.requestImageReplication(Session.getSatelliteToken(), item.latestVersionId);
} catch (TException ex) {
- ThriftError.showMessage(me, LOGGER, ex, "Could not start download");
+ ThriftError.showMessage(me, LOGGER, ex,
+ I18n.WINDOW.getString("ImagePublished.Message.error.satDownload"));
return;
}
MainWindow.addPassiveTransfer(transferToken, item.imageName, false);
Gui.showMessageBox(ImagePublishedWindow.this,
- "Die Übertragung läuft direkt zwischen Satellitenserver und"
- + " dem " + Branding.getServiceName() + " Zentral-Server.\n"
- + "Wenn Sie die " + Branding.getApplicationName() + " schließen, wird der Transfer trotzdem"
- + "weiterlaufen.",
+ I18n.WINDOW.getString("ImagePublished.Message.info.satDownload", Branding.getServiceName(),
+ Branding.getApplicationName()),
MessageType.INFO, null, null);
}
});
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java
index a2654896..41532b6f 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureChangeImage.java
@@ -19,6 +19,7 @@ import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor;
import org.openslx.dozmod.gui.changemonitor.GenericControlWindow;
import org.openslx.dozmod.gui.control.table.ImageTable;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.LectureChangeImageLayout;
@@ -78,10 +79,12 @@ public class LectureChangeImage extends LectureChangeImageLayout implements UiFe
dispose();
} else {
if (!image.isValid) {
- Gui.showMessageBox(LectureChangeImage.this, "Ausgewählte VM ist ungültig!", MessageType.ERROR,
- LOGGER, null);
+ Gui.showMessageBox(LectureChangeImage.this,
+ I18n.WINDOW.getString("LectureChangeImage.Message.error.imageInvalid"),
+ MessageType.ERROR, LOGGER, null);
} else {
- Gui.showMessageBox(LectureChangeImage.this, "Keine Rechte zum Verlinken auf die ausgewählte VM.",
+ Gui.showMessageBox(LectureChangeImage.this,
+ I18n.WINDOW.getString("LectureChangeImage.Message.error.canNotLinkToVM"),
MessageType.ERROR, LOGGER, null);
}
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
index 19e30fff..62cf10cc 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureDetailsWindow.java
@@ -41,6 +41,7 @@ import org.openslx.dozmod.gui.changemonitor.DialogChangeMonitor.ValidationConstr
import org.openslx.dozmod.gui.configurator.NetrulesConfigurator.StateWrapper;
import org.openslx.dozmod.gui.configurator.StartupConfigurator.StartupSettings;
import org.openslx.dozmod.gui.helper.DateTimeHelper;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.UserListWindow.UserAddedCallback;
@@ -149,7 +150,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
public String checkStateValid(ImageVersionDetails userInput) {
if (userInput != null && userInput.isValid)
return null;
- return "Keine/Ungültige VM-Version ausgewählt";
+ return I18n.WINDOW.getString("LectureDetails.ComboBox.versions.error");
}
});
// Create constraint for date start/end
@@ -162,9 +163,10 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
Date start = DateTimeHelper.getDateFrom(dtpStartDate, spnStartTime);
Date end = DateTimeHelper.getDateFrom(dtpEndDate, spnEndTime);
if (!end.after(start))
- return "Enddatum darf nicht vor dem Startdatum liegen";
+ return I18n.WINDOW.getString("LectureDetails.Message.error.endAfterStart");
if (end.after(maxValidity))
- return "Enddatum liegt nach dem " + FormatHelper.shortDate(maxValidity);
+ return I18n.WINDOW.getString("LectureDetails.Message.error.endAfterMaxValidity",
+ FormatHelper.shortDate(maxValidity));
return null;
}
};
@@ -175,13 +177,16 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
changeMonitor.add(chkIsActive);
changeMonitor.add(chkCustomPermAdmin);
changeMonitor.add(chkCustomPermEdit);
- changeMonitor.add(txtTitle).addConstraint(new TextNotEmptyConstraint("Veranstaltungsname darf nicht leer sein"));
- changeMonitor.add(txtDescription).addConstraint(new TextNotEmptyConstraint("Beschreibung darf nicht leer sein"));
+ changeMonitor.add(txtTitle).addConstraint(new TextNotEmptyConstraint(
+ I18n.WINDOW.getString("LectureDetails.TextField.title.error")));
+ changeMonitor.add(txtDescription).addConstraint(new TextNotEmptyConstraint(
+ I18n.WINDOW.getString("LectureDetails.TextField.description.error")));
changeMonitor.add(dtpEndDate).addConstraint(dateRangeValidator);
changeMonitor.add(dtpStartDate).addConstraint(dateRangeValidator);
changeMonitor.add(spnEndTime).addConstraint(dateRangeValidator);
changeMonitor.add(spnStartTime).addConstraint(dateRangeValidator);
- changeMonitor.add(ctlNetrulesConfigurator).addConstraint(new NotNullConstraint<StateWrapper>("Fehlerhafte Netzwerkregeln"));
+ changeMonitor.add(ctlNetrulesConfigurator).addConstraint(new NotNullConstraint<StateWrapper>(
+ I18n.WINDOW.getString("LectureDetails.NetRulesConfigurator.error")));
changeListenerPermissions = changeMonitor.add(ctlPermissionManager);
ctlLocationSelector.addToChangeMonitor(changeMonitor);
ctlRunscriptConfigurator.addToChangeMonitor(changeMonitor);
@@ -252,12 +257,11 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
@Override
public void userAdded(UserInfo user, UserListWindow window) {
window.dispose();
- if (Gui.showMessageBox(me, "Sind Sie sicher, dass sie die Besitzerrechte an "
- + "einen anderen Account übertragen wollen?", MessageType.QUESTION_YESNO,
- LOGGER, null))
+ if (Gui.showMessageBox(me, I18n.WINDOW.getString("LectureDetails.Message.yesNo.changeOwner"),
+ MessageType.QUESTION_YESNO, LOGGER, null))
setLectureOwner(user);
}
- }, "Besitzer festlegen", lecture.ownerId);
+ }, I18n.WINDOW.getString("LectureDetails.Button.changeOwner.caption"), lecture.ownerId);
}
});
@@ -386,7 +390,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
// now enable the tabs the user can see given its permissions
toggleEditable(true);
// and always switch to the "About" tab
- pnlTabs.setSelectedIndex(pnlTabs.indexOfTab("Übersicht"));
+ pnlTabs.setSelectedIndex(pnlTabs.indexOfTab(I18n.WINDOW_LAYOUT.getString("LectureDetails.Tab.info.title")));
setVisible(true);
changeMonitor.reset();
}
@@ -435,8 +439,9 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
return;
}
// success
- Gui.showMessageBox(me, "Besitzrechte übertragen an " + FormatHelper.userName(user), MessageType.INFO,
- null, null);
+ Gui.showMessageBox(me,
+ I18n.WINDOW.getString("LectureDetails.Message.info.setLectureOwner", FormatHelper.userName(user)),
+ MessageType.INFO, null, null);
toggleEditable(false);
String lectureId = lecture.getLectureId();
synchronized (me) {
@@ -451,7 +456,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
*/
private void performImageDownload() {
if (image == null) {
- Gui.showMessageBox(this, "VM ungültig.", MessageType.ERROR, null, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("LectureDetails.Message.error.imageInvalid"),
+ MessageType.ERROR, null, null);
return;
}
btnDownloadImage.setEnabled(false);
@@ -459,7 +465,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
for (ImageVersionDetails version : image.versions) {
if (version.versionId.equals(lecture.imageVersionId)) {
if (!version.isValid) {
- Gui.showMessageBox(this, "Ungültige VM-Version gewählt", MessageType.ERROR, null, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("LectureDetails.Message.error.imageVersionInvalid"),
+ MessageType.ERROR, null, null);
return;
}
versionSize = version.fileSize;
@@ -467,8 +474,8 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
}
}
if (versionSize == 0) {
- Gui.showMessageBox(this, "Fehler bei der Abfrage der Größe des VM-Abbildes.", MessageType.ERROR, null,
- null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("LectureDetails.Message.error.imageVersionFileSizeInvalid"),
+ MessageType.ERROR, null, null);
return;
}
ThriftActions.initDownload(JOptionPane.getFrameForComponent(this), lecture.imageVersionId,
@@ -552,7 +559,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
LOGGER.info("Successfully saved new metadata");
} catch (TException e) {
ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e,
- "Fehler beim Speichern der Veranstaltung!");
+ I18n.WINDOW.getString("LectureDetails.Message.error.saveChangesInternal"));
return false;
}
@@ -578,7 +585,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
return true;
} catch (TException e) {
ThriftError.showMessage(JOptionPane.getFrameForComponent(this), LOGGER, e,
- "Fehler beim Übertragen der Berechtigungen!");
+ I18n.WINDOW.getString("LectureDetails.Message.error.saveCustomPermissions"));
}
return false;
}
@@ -599,10 +606,9 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
// analyse time stuff to see if its valid
if (end > start)
return true;
- String msg = "Start der Veranstaltung ist nach dem Enddatum!";
+ String msg = I18n.WINDOW.getString("LectureDetails.Message.error.isPeriodValid");
if (feedback) {
- Gui.showMessageBox(me, msg, MessageType.ERROR,
- LOGGER, null);
+ Gui.showMessageBox(me, msg, MessageType.ERROR, LOGGER, null);
}
lblError.setText(msg);
return false;
@@ -683,7 +689,7 @@ public class LectureDetailsWindow extends LectureDetailsWindowLayout implements
*/
private void safeClose() {
if (changeMonitor.isCurrentlyModified()
- && !Gui.showMessageBox(me, "Änderungen werden verworfen, wollen Sie wirklich schließen?",
+ && !Gui.showMessageBox(me, I18n.WINDOW.getString("LectureDetails.Message.yesNo.safeClose"),
MessageType.QUESTION_YESNO, null, null))
return;
synchronized(me) {
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
index 31ff7702..b89de75a 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LectureListWindow.java
@@ -35,6 +35,7 @@ import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.control.table.ListTable.ListModel;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.PopupMenu;
import org.openslx.dozmod.gui.helper.TextChangeListener;
@@ -65,32 +66,32 @@ public class LectureListWindow extends LectureListWindowLayout {
// Filter types as an enum
public enum FilterType {
- ALL("Alle anzeigen", null),
- OWN("Nur eigene/zugewiesene anzeigen", new RowFilter<ListModel<LectureSummary>, Integer>() {
+ ALL(I18n.WINDOW.getString("LectureList.FilterType.all"), null),
+ OWN(I18n.WINDOW.getString("LectureList.FilterType.own"), new RowFilter<ListModel<LectureSummary>, Integer>() {
public boolean include(Entry<? extends ListModel<LectureSummary>, ? extends Integer> entry) {
LectureSummary lecture = entry.getModel().getModelRow(entry.getIdentifier());
return lecture.userPermissions.admin || lecture.ownerId.equals(Session.getUserId());
}
}),
- ACTIVE("Nur aktive anzeigen", new RowFilter<ListModel<LectureSummary>, Integer>() {
+ ACTIVE(I18n.WINDOW.getString("LectureList.FilterType.active"), new RowFilter<ListModel<LectureSummary>, Integer>() {
public boolean include(Entry<? extends ListModel<LectureSummary>, ? extends Integer> entry) {
LectureSummary lecture = entry.getModel().getModelRow(entry.getIdentifier());
return lecture.isEnabled && lecture.endTime > Util.unixTime();
}
}),
- EDITABLE("Nur editierbare anzeigen", new RowFilter<ListModel<LectureSummary>, Integer>() {
+ EDITABLE(I18n.WINDOW.getString("LectureList.FilterType.editable"), new RowFilter<ListModel<LectureSummary>, Integer>() {
public boolean include(Entry<? extends ListModel<LectureSummary>, ? extends Integer> entry) {
LectureSummary lecture = entry.getModel().getModelRow(entry.getIdentifier());
return LecturePerms.canEdit(lecture);
}
}),
- EXPIRING("Bald auslaufende anzeigen", new RowFilter<ListModel<LectureSummary>, Integer>() {
+ EXPIRING(I18n.WINDOW.getString("LectureList.FilterType.expiring"), new RowFilter<ListModel<LectureSummary>, Integer>() {
public boolean include(Entry<? extends ListModel<LectureSummary>, ? extends Integer> entry) {
LectureSummary lecture = entry.getModel().getModelRow(entry.getIdentifier());
return Math.abs(lecture.endTime - Util.unixTime()) < 86400 * 7;
}
}),
- EXAMS("Prüfungsveranstaltungen anzeigen", new RowFilter<ListModel<LectureSummary>, Integer>() {
+ EXAMS(I18n.WINDOW.getString("LectureList.FilterType.exams"), new RowFilter<ListModel<LectureSummary>, Integer>() {
public boolean include(Entry<? extends ListModel<LectureSummary>, ? extends Integer> entry) {
LectureSummary lecture = entry.getModel().getModelRow(entry.getIdentifier());
return lecture.isExam;
@@ -135,11 +136,11 @@ public class LectureListWindow extends LectureListWindowLayout {
/**
* Popup menu items
*/
- private JMenuItem popupItemNew = new JMenuItem("Neu");
- private JMenuItem popupItemEdit = new JMenuItem("Detailansicht");
- private JMenuItem popupItemLinked = new JMenuItem("VM-Details anzeigen");
- private JMenuItem popupItemDownload = new JMenuItem("Verlinkte VM herunterladen");
- private JMenuItem popupItemDelete = new JMenuItem("Löschen");
+ private JMenuItem popupItemNew = new JMenuItem(I18n.WINDOW.getString("LectureList.MenuItem.new.text"));
+ private JMenuItem popupItemEdit = new JMenuItem(I18n.WINDOW.getString("LectureList.MenuItem.edit.text"));
+ private JMenuItem popupItemLinked = new JMenuItem(I18n.WINDOW.getString("LectureList.MenuItem.linked.text"));
+ private JMenuItem popupItemDownload = new JMenuItem(I18n.WINDOW.getString("LectureList.MenuItem.download.text"));
+ private JMenuItem popupItemDelete = new JMenuItem(I18n.WINDOW.getString("LectureList.MenuItem.delete.text"));
public LectureListWindow() {
super();
@@ -212,8 +213,7 @@ public class LectureListWindow extends LectureListWindowLayout {
if (lecture == null)
return;
if (e.getSource().equals(popupItemNew)) {
- if (Gui.showMessageBox(me, "Um eine Veranstaltung zu erstellen, "
- + "müssen Sie eine VM auswählen. Zur VM-Auswahl wechseln?",
+ if (Gui.showMessageBox(me, I18n.WINDOW.getString("LectureList.Message.yesNo.switchView"),
MessageType.QUESTION_YESNO, LOGGER, null)) {
MainWindow.showPage(ImageListWindow.class);
}
@@ -263,7 +263,8 @@ public class LectureListWindow extends LectureListWindowLayout {
public void mouseClicked(MouseEvent e) {
if (SwingUtilities.isLeftMouseButton(e) && e.getClickCount() == 2) {
if (!Session.canListImages()) {
- Gui.showMessageBox("Ihnen fehlen die benötigten Berechtigungen.", MessageType.ERROR, LOGGER, null);
+ Gui.showMessageBox(I18n.WINDOW.getString("LectureList.Message.error.canNotListImages"),
+ MessageType.ERROR, LOGGER, null);
return;
}
openLectureDetails(tblLectures.getSelectedItem());
@@ -402,12 +403,13 @@ public class LectureListWindow extends LectureListWindowLayout {
for (LectureSummary lecture : fLectures.keySet()) {
builder.append("\n\n");
builder.append(lecture.lectureName + " \n" );
- builder.append("Begründung: " + fLectures.get(lecture).getLocalizedMessage());
+ builder.append(I18n.WINDOW.getString("LectureList.Message.error.deleteLecture",
+ fLectures.get(lecture).getLocalizedMessage()));
LOGGER.error("Couldn't delete lecture " + lecture.lectureName + ", reason:", fLectures.get(lecture) );
// TODO Should the exception be printed in the debugger or is this to much information?
}
- Gui.showMessageBox("Folgende Veranstaltungen konnten nicht gelöscht werden: "
- + builder.toString(), MessageType.INFO, LOGGER, null);
+ Gui.showMessageBox(I18n.WINDOW.getString("LectureList.Message.info.deleteLectures",
+ builder.toString()), MessageType.INFO, LOGGER, null);
}
}
});
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LocationSelectionWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LocationSelectionWindow.java
index bf818cf5..b8eb653d 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LocationSelectionWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LocationSelectionWindow.java
@@ -9,6 +9,7 @@ import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.Gui.GuiCallable;
import org.openslx.dozmod.gui.control.JCheckBoxTree.CheckChangeEvent;
import org.openslx.dozmod.gui.control.JCheckBoxTree.CheckChangeEventListener;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.LocationSelectionWindowLayout;
@@ -56,7 +57,7 @@ public class LocationSelectionWindow extends LocationSelectionWindowLayout imple
if (tempIntList != null
&& tempIntList.size() > Session.getSatelliteConfig().maxLocationsPerLecture) {
ctlLocationSelector.setSelectedLocationsAsIds(tempIntList);
- Gui.showMessageBox("Bitten reduzieren Sie die Anzahl gewählter Orte",
+ Gui.showMessageBox(I18n.WINDOW.getString("LocationSelection.Message.warning.saveChanges"),
MessageType.WARNING, null, null);
return;
}
@@ -73,7 +74,7 @@ public class LocationSelectionWindow extends LocationSelectionWindowLayout imple
if (tempIntList != null) {
if (tempIntList.size() > Session.getSatelliteConfig().maxLocationsPerLecture) {
// add error
- lblError.setText("Zu viele Orte ausgewählt!");
+ lblError.setText(I18n.WINDOW.getString("LocationSelection.Message.error.locationSelector"));
} else {
lblError.setText("");
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
index a6601ea7..94ee10e4 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java
@@ -36,6 +36,7 @@ import org.openslx.dozmod.authentication.TestAccountAuthenticator;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.MainWindow;
import org.openslx.dozmod.gui.activity.UpdatePanel;
+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.gui.window.layout.LoginWindowLayout;
@@ -74,9 +75,6 @@ public class LoginWindow extends LoginWindowLayout {
// authentication method to use for login attempts
protected LoginType loginType = null;
- // text constants
- private final String NO_USERNAME = "Kein Benutzername angegeben!";
- private final String NO_PASSWORD = "Kein Passwort angegeben!";
private boolean forceCustomSatellite = false;
@@ -298,12 +296,12 @@ public class LoginWindow extends LoginWindowLayout {
private void doLogin() {
// sanity check on loginType.
if (loginType == null) {
- Gui.showMessageBox(this, "Bitte wählen Sie eine Authentifizierungsart.", MessageType.ERROR,
- LOGGER, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("Login.Message.error.noLoginType"),
+ MessageType.ERROR, LOGGER, null);
return;
}
if (loginType == LoginType.ECP && cboOrganization.getSelectedIndex() == -1) {
- Gui.showMessageBox(this, "Bitte wählen Sie ihre Organisation als 'Identity Provider'.",
+ Gui.showMessageBox(this, I18n.WINDOW.getString("Login.Message.error.noOrganization"),
MessageType.ERROR, LOGGER, null);
cboOrganization.requestFocusInWindow();
return;
@@ -313,11 +311,11 @@ public class LoginWindow extends LoginWindowLayout {
final String password = String.copyValueOf(txtPassword.getPassword());
// login clicked, lets first read the fields
if (username.isEmpty()) {
- Gui.showMessageBox(this, NO_USERNAME, MessageType.ERROR, LOGGER, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("Login.Message.error.noUsername"), MessageType.ERROR, LOGGER, null);
return;
}
if (password.isEmpty()) {
- Gui.showMessageBox(this, NO_PASSWORD, MessageType.ERROR, LOGGER, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("Login.Message.error.noPassword"), MessageType.ERROR, LOGGER, null);
return;
}
@@ -342,30 +340,32 @@ public class LoginWindow extends LoginWindowLayout {
});
return;
case IDENTITY_PROVIDER_ERROR:
- Gui.showMessageBox(me, "IdP Error", MessageType.ERROR, LOGGER, null);
+ Gui.showMessageBox(me, I18n.WINDOW.getString("Login.Message.error.authIdentityProvider"),
+ MessageType.ERROR, LOGGER, null);
break;
case SERVICE_PROVIDER_ERROR:
// here if we have t != null then we have not received a token
// if we have t, then the token is invalid.
- Gui.showMessageBox(me, "Invalid token from the service provider!", MessageType.ERROR,
- LOGGER, t);
+ Gui.showMessageBox(me, I18n.WINDOW.getString("Login.Message.error.authServiceProvider"),
+ MessageType.ERROR, LOGGER, t);
break;
case UNREGISTERED_ERROR:
LOGGER.error("User not registered!");
BwIdmLinkWindow.open((JFrame) SwingUtilities.getWindowAncestor(me));
break;
case INVALID_URL_ERROR:
- Gui.showMessageBox(me, "ECP Authenticator says: Invalid URL.", MessageType.ERROR, LOGGER,
- t);
+ Gui.showMessageBox(me, I18n.WINDOW.getString("Login.Message.error.authInvalidURL"),
+ MessageType.ERROR, LOGGER, t);
break;
case GENERIC_ERROR:
default:
if (t == null || !t.getClass().equals(RuntimeException.class)) {
- Gui.showMessageBox(me, "Internal error!", MessageType.ERROR, null, t);
+ Gui.showMessageBox(me, I18n.WINDOW.getString("Login.Message.error.authInternal"),
+ MessageType.ERROR, null, t);
} else {
- Gui.showMessageBox(me, "Der Masterserver hat den Loginversuch mit der"
- + " folgenden Nachricht abgewiesen:\n\n"
- + t.getMessage(), MessageType.ERROR, null, null);
+ Gui.showMessageBox(me,
+ I18n.WINDOW.getString("Login.Message.error.authMasterServer", t.getMessage()),
+ MessageType.ERROR, null, null);
}
break;
}
@@ -383,10 +383,12 @@ public class LoginWindow extends LoginWindowLayout {
authenticator = new TestAccountAuthenticator();
break;
case DIRECT_CONNECT:
- Gui.showMessageBox(this, "Not yet implemented", MessageType.ERROR, LOGGER, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("Login.Message.error.loginTypeDirectConnect"),
+ MessageType.ERROR, LOGGER, null);
return;
default:
- Gui.showMessageBox(this, "No login type selected!", MessageType.ERROR, LOGGER, null);
+ Gui.showMessageBox(this, I18n.WINDOW.getString("Login.Message.error.loginTypeDefault"),
+ MessageType.ERROR, LOGGER, null);
return;
}
@@ -401,10 +403,11 @@ public class LoginWindow extends LoginWindowLayout {
authenticator.login(finalUsername, password, authenticatorCallback);
return;
} catch (TException e) {
- ThriftError.showMessage(LoginWindow.this, LOGGER, e, "Anmeldung fehlgeschlagen");
+ ThriftError.showMessage(LoginWindow.this, LOGGER, e,
+ I18n.WINDOW.getString("Login.Message.error.loginFailed"));
} catch (Exception e) {
- Gui.showMessageBox(LoginWindow.this, "Anmeldung fehlgeschlagen", MessageType.ERROR,
- LOGGER, e);
+ Gui.showMessageBox(LoginWindow.this, I18n.WINDOW.getString("Login.Message.error.loginFailed"),
+ MessageType.ERROR, LOGGER, e);
}
enableLogin(true);
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/SatelliteListWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/SatelliteListWindow.java
index e3f68295..2674dc9a 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/SatelliteListWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/SatelliteListWindow.java
@@ -17,6 +17,7 @@ import org.openslx.bwlp.thrift.iface.UserInfo;
import org.openslx.dozmod.Config;
import org.openslx.dozmod.gui.Gui;
import org.openslx.dozmod.gui.Gui.GuiCallable;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.SatelliteListWindowLayout;
@@ -108,7 +109,8 @@ public class SatelliteListWindow extends SatelliteListWindowLayout implements Ui
}
dispose();
} else {
- Gui.showMessageBox(rootPane, "Kein Satellit ausgewählt", MessageType.ERROR, null, null);
+ Gui.showMessageBox(rootPane, I18n.WINDOW.getString("SatelliteList.Message.error.noSatellite"),
+ MessageType.ERROR, null, null);
}
}
});
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java
index 36bea427..cb207d34 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtConfigEditorWindow.java
@@ -15,6 +15,7 @@ import java.util.TreeSet;
import org.apache.log4j.Logger;
import org.openslx.dozmod.gui.Gui;
+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.gui.helper.UiFeedback;
@@ -115,13 +116,13 @@ public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout impleme
if (!filteredSet.equals(unfilteredSet)) {
unfilteredSet.removeAll(filteredSet);
// not equals, means there was some invalid input
- String errorText = "Invalide Eingaben:\n";
+ String errorText = I18n.WINDOW.getString("VirtConfigEditor.Message.error.invalidInputTitle");
for (String s : unfilteredSet) {
errorText += s + "\n";
}
// TODO: Somehow this always triggers for vbox
errorText += System.lineSeparator()
- + "Wollen Sie trotzdem speichern? (Die invaliden Zeilen werden dabei automatisch gelöscht.)";
+ + I18n.WINDOW.getString("VirtConfigEditor.Message.error.invalidInputText");
if (!Gui.showMessageBox(errorText, MessageType.ERROR_RETRY, LOGGER, null))
return;
}
@@ -163,7 +164,7 @@ public class VirtConfigEditorWindow extends VirtConfigEditorWindowLayout impleme
private void safeClose() {
if (originalMachineDescription.equals(pnlEditor.getText()) || Gui.showMessageBox(me,
- "Ihre Änderungen, in diesem Fenster, werden verloren gehen, wollen Sie trotzdem abbrechen?",
+ I18n.WINDOW.getString("VirtConfigEditor.Message.yesNo.safeClose"),
MessageType.QUESTION_YESNO, null, null))
dispose();
}
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java
index 072d648e..b6584b8e 100644
--- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java
+++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/VirtDropDownConfigEditorWindow.java
@@ -9,6 +9,7 @@ import java.nio.ByteBuffer;
import org.apache.log4j.Logger;
import org.openslx.dozmod.gui.Gui;
+import org.openslx.dozmod.gui.helper.I18n;
import org.openslx.dozmod.gui.helper.MessageType;
import org.openslx.dozmod.gui.helper.UiFeedback;
import org.openslx.dozmod.gui.window.layout.VirtDropDownConfigEditorWindowLayout;
@@ -187,8 +188,7 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind
cboMaxUsbSpeed.setSelectedItem(usbSpeed);
} catch (IllegalArgumentException e) {
// TODO improve user message
- Gui.showMessageBox("Sie haben beim letzten Konfigurieren \n"
- + "einen falschen Eintrag eingespeichert. \n" + "Die VM wird nicht starten!",
+ Gui.showMessageBox(I18n.WINDOW.getString("VirtDropDownConfigEditor.Message.warning.initializeComboBoxes"),
MessageType.WARNING, null, e);
}
}
@@ -220,7 +220,7 @@ public class VirtDropDownConfigEditorWindow extends VirtDropDownConfigEditorWind
private void safeClose() {
if (!hasChanged() || Gui.showMessageBox(me,
- "Wollen Sie wirklich abbrechen?\n" + "Ihre Änderungen werden verworfen.",
+ I18n.WINDOW.getString("VirtDropDownConfigEditor.Message.yesNo.safeClose"),
MessageType.QUESTION_YESNO, null, null)) {
dispose();
}
diff --git a/dozentenmodul/src/main/properties/i18n/window.properties b/dozentenmodul/src/main/properties/i18n/window.properties
new file mode 100644
index 00000000..a37f4b8c
--- /dev/null
+++ b/dozentenmodul/src/main/properties/i18n/window.properties
@@ -0,0 +1,142 @@
+# BwIdmLinkWindow
+BwIdmLink.Dialog.title=Registrierung erforderlich
+BwIdmLink.Label.info.title=Hinweis
+BwIdmLink.Label.info.text=<html><body style='width:100%'>\
+ Sie sind nicht bei {0} registriert. \
+ Bitte rufen Sie die angegebene Seite auf um sich zu registrieren und versuchen Sie es erneut.\
+ </body></html>
+BwIdmLink.Button.link.text=Seite im Browser öffnen
+BwIdmLink.Button.ok.text=Schließen
+
+# ConfigWindow
+Config.Label.yourAddress.text=Ihre Adresse ist {0}
+Config.Message.error.couldNotGetUserConfFromSat=Konnte die benutzerspezifische Konfiguration nicht \
+ vom Satelliten holen
+Config.Message.error.couldNotSaveUserConfOnSat=Konnte die benutzerspezifische Konfiguration nicht \
+ auf dem Satelliten speichern
+Config.Message.info.restartNeededToApplyChanges=Die Änderungen werden erst nach einem Programmneustart wirksam.
+
+# GenericNoticeWindow
+GenericNotice.Button.continue.text=Schließen
+GenericNotice.Message.yesNo.closeWindow=Wenn Sie diesen rechtlichen Hinweis nicht akzeptieren, \
+ können Sie die Software nicht verwenden! \
+ Sind Sie sicher, dass Sie abbrechen wollen?
+
+# ImageDetailsWindow
+ImageDetails.MenuItem.newLecture.text=Neue Veranstaltung
+ImageDetails.MenuItem.download.text=Download
+ImageDetails.MenuItem.vmConfig.text=VM-Konfiguration
+ImageDetails.MenuItem.delete.text=Löschen
+ImageDetails.MenuItem.extendExpirationDate.text=Ablaufzeitpunkt verlängern
+ImageDetails.Message.yesNo.changeOwner=Sind Sie sicher, dass sie die Besitzerrechte an \
+ einen anderen Benutzer übertragen wollen?
+ImageDetails.Button.changeOwner.caption=Besitzer festlegen
+ImageDetails.TextField.title.error=Name darf nicht leer sein
+ImageDetails.TextField.description.error=Beschreibung darf nicht leer sein
+ImageDetails.ComboBox.OS.error=Ungültiges Betriebssystem ausgewählt!
+ImageDetails.ComboBox.shareMode.error=Ungültiges Betriebssystem ausgewählt!
+ImageDetails.Message.error.couldNotRetrieveVMConfig=Konnte VM-Konfiguration nicht abrufen.
+ImageDetails.Message.info.setImageOwner=Besitzrechte übertragen an {0}
+ImageDetails.Message.error.publishNonVMWareImage={0} ist derzeit nicht für den öffentlichen Austausch freigegeben.
+ImageDetails.Message.yesNo.currentlyModified=Sie haben unspeicherte Änderungen, wollen Sie diese erst speichern?
+ImageDetails.Message.yesNo.confirmOrAbort=Wollen Sie diese VM wirklich landesweit veröffentlichen?
+ImageDetails.Message.error.uploadFailed=Upload der VM auf den Masterserver fehlgeschlagen. \
+ Prüfen Sie, ob Sie bei der Registrierung dem landesweiten VM-Austausch zugestimmt haben.\n \
+ Sie können dies hier überprüfen:\n \
+ {0} \n\n
+ImageDetails.Message.info.passiveTransfer=Die Übertragung läuft direkt zwischen Satellitenserver und \
+ dem {0} Zentral-Server.\n Wenn Sie die {1} schließen, wird der Transfer trotzdem weiterlaufen.
+ImageDetails.Message.error.saveChangesInternal=Konnte aktualisierte Metadaten nicht an den Server übermitteln
+ImageDetails.Message.error.saveCustomPermissions=Konnte geänderte Berechtigungen nicht an den Server übermitteln
+ImageDetails.Message.error.performImageDownload=Ausgewählte Version ist ungültig
+ImageDetails.Message.error.extendVersionExpiry=Konnte Ablaufdatum der Version {0} nicht verlängern.
+ImageDetails.Message.info.extendVersionExpiry=Erfolgreich verlängerte Abbilder: {0}
+ImageDetails.Message.yesNo.safeClose=Änderungen werden verworfen, wollen Sie wirklich schließen?
+
+# ImageListWindow
+ImageList.MenuItem.newLecture.text=Neue Veranstaltung
+ImageList.MenuItem.edit.text=Detailansicht
+ImageList.MenuItem.delete.text=Löschen
+ImageList.MenuItem.download.text=Download
+ImageList.Message.error.hasLatestVersion=Die gewählte VM besitzt keine gültige Image-Version
+ImageList.Message.info.deleteImages=Folgende images konnten nicht gelöscht werden: {0}
+
+# ImagePublishedWindow
+ImagePublished.Message.error.satDownload=Could not start download
+ImagePublished.Message.info.satDownload=Die Übertragung läuft direkt zwischen Satellitenserver und \
+ dem {0} Zentral-Server.\n Wenn Sie die {1} schließen, wird der Transfer trotzdem weiterlaufen.
+
+# LectureChangeImage
+LectureChangeImage.Message.error.imageInvalid=Ausgewählte VM ist ungültig!
+LectureChangeImage.Message.error.canNotLinkToVM=Keine Rechte zum Verlinken auf die ausgewählte VM.
+
+# LectureDetailsWindow
+LectureDetails.ComboBox.versions.error=Keine/Ungültige VM-Version ausgewählt
+LectureDetails.Message.error.endAfterStart=Enddatum darf nicht vor dem Startdatum liegen
+LectureDetails.Message.error.endAfterMaxValidity=Enddatum liegt nach dem {0}
+LectureDetails.TextField.title.error=Veranstaltungsname darf nicht leer sein
+LectureDetails.TextField.description.error=Beschreibung darf nicht leer sein
+LectureDetails.NetRulesConfigurator.error=Fehlerhafte Netzwerkregeln
+LectureDetails.Message.yesNo.changeOwner=Sind Sie sicher, dass sie die Besitzerrechte an \
+ einen anderen Account übertragen wollen?
+LectureDetails.Button.changeOwner.caption=Besitzer festlegen
+LectureDetails.Message.info.setLectureOwner=Besitzrechte übertragen an {0}
+LectureDetails.Message.error.imageInvalid=VM ungültig.
+LectureDetails.Message.error.imageVersionInvalid=Ungültige VM-Version gewählt
+LectureDetails.Message.error.imageVersionFileSizeInvalid=Fehler bei der Abfrage der Größe des VM-Abbildes.
+LectureDetails.Message.error.saveChangesInternal=Fehler beim Speichern der Veranstaltung!
+LectureDetails.Message.error.saveCustomPermissions=Fehler beim Übertragen der Berechtigungen!
+LectureDetails.Message.error.isPeriodValid=Start der Veranstaltung ist nach dem Enddatum!
+LectureDetails.Message.yesNo.safeClose=Änderungen werden verworfen, wollen Sie wirklich schließen?
+
+# LectureListWindow
+LectureList.FilterType.all=Alle anzeigen
+LectureList.FilterType.own=Nur eigene/zugewiesene anzeigen
+LectureList.FilterType.active=Nur aktive anzeigen
+LectureList.FilterType.editable=Nur editierbare anzeigen
+LectureList.FilterType.expiring=Bald auslaufende anzeigen
+LectureList.FilterType.exams=Prüfungsveranstaltungen anzeigen
+LectureList.MenuItem.new.text=Neu
+LectureList.MenuItem.edit.text=Detailansicht
+LectureList.MenuItem.linked.text=VM-Details anzeigen
+LectureList.MenuItem.download.text=Verlinkte VM herunterladen
+LectureList.MenuItem.delete.text=Löschen
+LectureList.Message.yesNo.switchView=Um eine Veranstaltung zu erstellen, \
+ müssen Sie eine VM auswählen. Zur VM-Auswahl wechseln?
+LectureList.Message.error.canNotListImages=Ihnen fehlen die benötigten Berechtigungen.
+LectureList.Message.error.deleteLecture=Begründung: {0}
+LectureList.Message.info.deleteLectures=Folgende Veranstaltungen konnten nicht gelöscht werden: {0}
+
+# LocationSelectionWindow
+LocationSelection.Message.warning.saveChanges=Bitten reduzieren Sie die Anzahl gewählter Orte
+LocationSelection.Message.error.locationSelector=Zu viele Orte ausgewählt!
+
+# LoginWindow
+Login.Message.error.noLoginType=Bitte wählen Sie eine Authentifizierungsart.
+Login.Message.error.noOrganization=Bitte wählen Sie ihre Organisation als 'Identity Provider'.
+Login.Message.error.noUsername=Kein Benutzername angegeben!
+Login.Message.error.noPassword=Kein Passwort angegeben!
+Login.Message.error.authIdentityProvider=IdP Error
+Login.Message.error.authServiceProvider=Invalid token from the service provider!
+Login.Message.error.authInvalidURL=ECP Authenticator says: Invalid URL.
+Login.Message.error.authInternal=Internal error!
+Login.Message.error.authMasterServer=Der Masterserver hat den Loginversuch mit der \
+ folgenden Nachricht abgewiesen:\n\n{0}
+Login.Message.error.loginTypeDirectConnect=Not yet implemented
+Login.Message.error.loginTypeDefault=No login type selected!
+Login.Message.error.loginFailed=Anmeldung fehlgeschlagen
+
+# SatelliteListWindow
+SatelliteList.Message.error.noSatellite=Kein Satellit ausgewählt
+
+# VirtConfigEditorWindow
+VirtConfigEditor.Message.error.invalidInputTitle=Invalide Eingaben:\n
+VirtConfigEditor.Message.error.invalidInputText=Wollen Sie trotzdem speichern? (Die invaliden Zeilen werden \
+ dabei automatisch gelöscht.)
+VirtConfigEditor.Message.yesNo.safeClose=Ihre Änderungen, in diesem Fenster, werden verloren gehen, \
+ wollen Sie trotzdem abbrechen?
+
+# VirtDropDownConfigEditorWindow
+VirtDropDownConfigEditor.Message.warning.initializeComboBoxes=Sie haben beim letzten Konfigurieren \n\
+ einen falschen Eintrag eingespeichert. \nDie VM wird nicht starten!
+VirtDropDownConfigEditor.Message.yesNo.safeClose=Wollen Sie wirklich abbrechen?\nIhre Änderungen werden verworfen. \ No newline at end of file
diff --git a/dozentenmodul/src/main/properties/i18n/window_en_US.properties b/dozentenmodul/src/main/properties/i18n/window_en_US.properties
new file mode 100644
index 00000000..b2a762ad
--- /dev/null
+++ b/dozentenmodul/src/main/properties/i18n/window_en_US.properties
@@ -0,0 +1,142 @@
+# BwIdmLinkWindow
+BwIdmLink.Dialog.title=Registration required
+BwIdmLink.Label.info.title=Note
+BwIdmLink.Label.info.text=<html><body style='width:100%'>\
+ You are not registered at {0}. \
+ Please go to the specified page to register and try again.\
+ </body></html>
+BwIdmLink.Button.link.text=Open page in browser
+BwIdmLink.Button.ok.text=Close
+
+# ConfigWindow
+Config.Label.yourAddress.text=Your address is {0}
+Config.Message.error.couldNotGetUserConfFromSat=Could not get the user specific configuration \
+ from the satellite
+Config.Message.error.couldNotSaveUserConfOnSat=Could not save the user specific configuration \
+ on the satellite
+Config.Message.info.restartNeededToApplyChanges=The changes only become effective after a program restart.
+
+# GenericNoticeWindow
+GenericNotice.Button.continue.text=Close
+GenericNotice.Message.yesNo.closeWindow=If you do not accept this legal notice, \
+ you cannot use the software! \
+ Are you sure you want to cancel?
+
+# ImageDetailsWindow
+ImageDetails.MenuItem.newLecture.text=New lecture
+ImageDetails.MenuItem.download.text=Download
+ImageDetails.MenuItem.vmConfig.text=VM Configuration
+ImageDetails.MenuItem.delete.text=Delete
+ImageDetails.MenuItem.extendExpirationDate.text=Extend expiry date
+ImageDetails.Message.yesNo.changeOwner=Are you sure you want to transfer \
+ the owner rights to another user?
+ImageDetails.Button.changeOwner.caption=Set owner
+ImageDetails.TextField.title.error=Name must not be empty
+ImageDetails.TextField.description.error=Description must not be empty
+ImageDetails.ComboBox.OS.error=Invalid operating system selected!
+ImageDetails.ComboBox.shareMode.error=Invalid operating system selected!
+ImageDetails.Message.error.couldNotRetrieveVMConfig=Could not retrieve VM configuration.
+ImageDetails.Message.info.setImageOwner=Transfer ownership rights to {0}
+ImageDetails.Message.error.publishNonVMWareImage={0} is currently not released for public exchange.
+ImageDetails.Message.yesNo.currentlyModified=You have unsaved changes, do you want to save them first?
+ImageDetails.Message.yesNo.confirmOrAbort=Do you really want to publish this VM nationwide?
+ImageDetails.Message.error.uploadFailed=Upload of the VM to the master server failed. \
+ Please check whether you agreed to the nationwide VM exchange when registering.\n \
+ You can check this here:\n \
+ {0} \n\n
+ImageDetails.Message.info.passiveTransfer=The transfer runs directly between the satellite server and \
+ the {0} central server.\n If you close the {1}, the transfer will continue anyway.
+ImageDetails.Message.error.saveChangesInternal=Could not submit updated metadata to the server
+ImageDetails.Message.error.saveCustomPermissions=Could not submit changed permissions to the server
+ImageDetails.Message.error.performImageDownload=Selected version is invalid
+ImageDetails.Message.error.extendVersionExpiry=Could not extend expiry date of version {0}.
+ImageDetails.Message.info.extendVersionExpiry=Successfully extended images: {0}
+ImageDetails.Message.yesNo.safeClose=Changes will be discarded, do you really want to close?
+
+# ImageListWindow
+ImageList.MenuItem.newLecture.text=New lecture
+ImageList.MenuItem.edit.text=Detail view
+ImageList.MenuItem.delete.text=Delete
+ImageList.MenuItem.download.text=Download
+ImageList.Message.error.hasLatestVersion=The selected VM has no valid image version
+ImageList.Message.info.deleteImages=The following images could not be deleted: {0}
+
+# ImagePublishedWindow
+ImagePublished.Message.error.satDownload=Could not start download
+ImagePublished.Message.info.satDownload=The transfer runs directly between the satellite server and \
+ the {0} central server.\n If you close the {1}, the transfer will continue anyway.
+
+# LectureChangeImage
+LectureChangeImage.Message.error.imageInvalid=Selected VM is invalid!
+LectureChangeImage.Message.error.canNotLinkToVM=No permissions to link to the selected VM.
+
+# LectureDetailsWindow
+LectureDetails.ComboBox.versions.error=No/invalid VM version selected
+LectureDetails.Message.error.endAfterStart=End date must not be before the start date
+LectureDetails.Message.error.endAfterMaxValidity=End date is after the {0}
+LectureDetails.TextField.title.error=Lecture name must not be empty
+LectureDetails.TextField.description.error=Description must not be empty
+LectureDetails.NetRulesConfigurator.error=Incorrect network rules
+LectureDetails.Message.yesNo.changeOwner=Are you sure you want to transfer \
+ the owner rights to another user?
+LectureDetails.Button.changeOwner.caption=Set owner
+LectureDetails.Message.info.setLectureOwner=Transfer ownership rights to {0}
+LectureDetails.Message.error.imageInvalid=VM invalid.
+LectureDetails.Message.error.imageVersionInvalid=Invalid VM version selected
+LectureDetails.Message.error.imageVersionFileSizeInvalid=Error while querying the size of the VM image.
+LectureDetails.Message.error.saveChangesInternal=Error while saving the lecture!
+LectureDetails.Message.error.saveCustomPermissions=Error while transferring of permissions!
+LectureDetails.Message.error.isPeriodValid=Start of the lecture is after the end date!
+LectureDetails.Message.yesNo.safeClose=Changes will be discarded, do you really want to close?
+
+# LectureListWindow
+LectureList.FilterType.all=Show all
+LectureList.FilterType.own=Show only own/assigned ones
+LectureList.FilterType.active=Show active only
+LectureList.FilterType.editable=Show editable only
+LectureList.FilterType.expiring=Show soon expiring
+LectureList.FilterType.exams=Show exams
+LectureList.MenuItem.new.text=New
+LectureList.MenuItem.edit.text=Detail view
+LectureList.MenuItem.linked.text=Show VM Details
+LectureList.MenuItem.download.text=Download linked VM
+LectureList.MenuItem.delete.text=Delete
+LectureList.Message.yesNo.switchView=To create a lecture, \
+ you have to select a VM. Switch to VM selection?
+LectureList.Message.error.canNotListImages=You do not have the required permissions.
+LectureList.Message.error.deleteLecture=Reason: {0}
+LectureList.Message.info.deleteLectures=The following lectures could not be deleted: {0}
+
+# LocationSelectionWindow
+LocationSelection.Message.warning.saveChanges=Please reduce the number of selected locations
+LocationSelection.Message.error.locationSelector=Too many places selected!
+
+# LoginWindow
+Login.Message.error.noLoginType=Please select an authentication type.
+Login.Message.error.noOrganization=Please select your organization as 'Identity Provider'.
+Login.Message.error.noUsername=No username given!
+Login.Message.error.noPassword=No password given!
+Login.Message.error.authIdentityProvider=IdP Error
+Login.Message.error.authServiceProvider=Invalid token from the service provider!
+Login.Message.error.authInvalidURL=ECP Authenticator says: Invalid URL.
+Login.Message.error.authInternal=Internal error!
+Login.Message.error.authMasterServer=The master server has rejected the login attempt \
+ with the following message:\n\n{0}
+Login.Message.error.loginTypeDirectConnect=Not yet implemented
+Login.Message.error.loginTypeDefault=No login type selected!
+Login.Message.error.loginFailed=Login failed
+
+# SatelliteListWindow
+SatelliteList.Message.error.noSatellite=No satellite selected
+
+# VirtConfigEditorWindow
+VirtConfigEditor.Message.error.invalidInputTitle=Invalid inputs:\n
+VirtConfigEditor.Message.error.invalidInputText=Do you still want to save? (The invalid lines will be \
+ deleted automatically.)
+VirtConfigEditor.Message.yesNo.safeClose=Your changes in this window will be lost, \
+ do you still want to cancel?
+
+# VirtDropDownConfigEditorWindow
+VirtDropDownConfigEditor.Message.warning.initializeComboBoxes=You saved an incorrect entry \n\
+ during the last configuration. \nThe VM will not start!
+VirtDropDownConfigEditor.Message.yesNo.safeClose=Do you really want to cancel?\nYour changes will be discarded. \ No newline at end of file