summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorraul2014-07-10 15:29:50 +0200
committerraul2014-07-10 15:29:50 +0200
commite2810bc15b98ea9744d0aab6c1f13c7385adbb2b (patch)
tree9ce684694292a17011d6f0fc0752d1fad248d001
parent[i18n] changed DB script to the new language notation (diff)
downloadslx-admin-e2810bc15b98ea9744d0aab6c1f13c7385adbb2b.tar.gz
slx-admin-e2810bc15b98ea9744d0aab6c1f13c7385adbb2b.tar.xz
slx-admin-e2810bc15b98ea9744d0aab6c1f13c7385adbb2b.zip
[i18n] reorganized the internationalization system
-rw-r--r--config.php2
-rw-r--r--inc/render.inc.php1
-rw-r--r--index.php3
-rw-r--r--lang/de/dialog-generic.json3
-rw-r--r--lang/de/flag.png (renamed from lang/german.png)bin483 -> 483 bytes
-rw-r--r--lang/de/main-menu-login.json13
-rw-r--r--lang/de/main-menu-logout.json13
-rw-r--r--lang/de/messagebox-error.json1
-rw-r--r--lang/de/messagebox-info.json1
-rw-r--r--lang/de/messagebox-success.json1
-rw-r--r--lang/de/messagebox-warning.json1
-rw-r--r--lang/de/messages-hardcoded.json13
-rw-r--r--lang/de/messages.json39
-rw-r--r--lang/de/minilinux/download.json1
-rw-r--r--lang/de/minilinux/filelist.json9
-rw-r--r--lang/de/page-adduser.json8
-rw-r--r--lang/de/page-baseconfig.json7
-rw-r--r--lang/de/page-login.json8
-rw-r--r--lang/de/page-main-guest.json5
-rw-r--r--lang/de/page-main.json10
-rw-r--r--lang/de/page-minilinux.json3
-rw-r--r--lang/de/page-news.json12
-rw-r--r--lang/de/page-remote-tgz-list.json5
-rw-r--r--lang/de/page-sysconfig-main.json17
-rw-r--r--lang/de/page-syslog.json10
-rw-r--r--lang/de/page-vmstore.json15
-rw-r--r--lang/de/pagenav.json1
-rw-r--r--lang/de/serversetup/ipaddress.json7
-rw-r--r--lang/de/serversetup/ipxe.json15
-rw-r--r--lang/de/sysconfig/ad-checkconnection.json5
-rw-r--r--lang/de/sysconfig/ad-finish.json7
-rw-r--r--lang/de/sysconfig/ad-start.json15
-rw-r--r--lang/de/sysconfig/cfg-finish.json4
-rw-r--r--lang/de/sysconfig/cfg-start.json7
-rw-r--r--lang/de/sysconfig/custom-filelist.json3
-rw-r--r--lang/de/sysconfig/custom-fileselect.json5
-rw-r--r--lang/de/sysconfig/custom-upload.json7
-rw-r--r--lang/de/sysconfig/start.json4
-rw-r--r--lang/de/systemstatus/_page.json8
-rw-r--r--lang/de/systemstatus/addresses.json1
-rw-r--r--lang/de/systemstatus/diskstat.json6
-rw-r--r--lang/de/systemstatus/services.json1
-rw-r--r--lang/de/systemstatus/systeminfo.json15
-rw-r--r--lang/de/vmstore/mount.json5
-rw-r--r--lang/dictionary.json10
-rw-r--r--lang/dictionary.php35
-rw-r--r--lang/en/dialog-generic.json3
-rw-r--r--lang/en/flag.png (renamed from lang/english.png)bin656 -> 656 bytes
-rw-r--r--lang/en/main-menu-login.json13
-rw-r--r--lang/en/main-menu-logout.json13
-rw-r--r--lang/en/messagebox-error.json3
-rw-r--r--lang/en/messagebox-info.json2
-rw-r--r--lang/en/messagebox-success.json2
-rw-r--r--lang/en/messagebox-warning.json2
-rw-r--r--lang/en/messages-hardcoded.json13
-rw-r--r--lang/en/messages.json39
-rw-r--r--lang/en/minilinux/download.json2
-rw-r--r--lang/en/minilinux/filelist.json9
-rw-r--r--lang/en/page-adduser.json8
-rw-r--r--lang/en/page-baseconfig.json7
-rw-r--r--lang/en/page-login.json8
-rw-r--r--lang/en/page-main-guest.json5
-rw-r--r--lang/en/page-main.json10
-rw-r--r--lang/en/page-minilinux.json3
-rw-r--r--lang/en/page-news.json12
-rw-r--r--lang/en/page-remote-tgz-list.json5
-rw-r--r--lang/en/page-sysconfig-main.json17
-rw-r--r--lang/en/page-syslog.json10
-rw-r--r--lang/en/page-vmstore.json15
-rw-r--r--lang/en/pagenav.json2
-rw-r--r--lang/en/serversetup/ipaddress.json7
-rw-r--r--lang/en/serversetup/ipxe.json15
-rw-r--r--lang/en/sysconfig/ad-checkconnection.json5
-rw-r--r--lang/en/sysconfig/ad-finish.json7
-rw-r--r--lang/en/sysconfig/ad-start.json15
-rw-r--r--lang/en/sysconfig/cfg-finish.json4
-rw-r--r--lang/en/sysconfig/cfg-start.json7
-rw-r--r--lang/en/sysconfig/custom-filelist.json3
-rw-r--r--lang/en/sysconfig/custom-fileselect.json5
-rw-r--r--lang/en/sysconfig/custom-upload.json7
-rw-r--r--lang/en/sysconfig/start.json4
-rw-r--r--lang/en/systemstatus/_page.json8
-rw-r--r--lang/en/systemstatus/addresses.json2
-rw-r--r--lang/en/systemstatus/diskstat.json6
-rw-r--r--lang/en/systemstatus/services.json2
-rw-r--r--lang/en/systemstatus/systeminfo.json15
-rw-r--r--lang/en/vmstore/mount.json5
-rw-r--r--lang/i18n.php47
-rw-r--r--lang/lang.php8
-rw-r--r--lang/lang.txt2
-rw-r--r--lang/pt/dialog-generic.json3
-rw-r--r--lang/pt/flag.png (renamed from lang/portuguese.png)bin1115 -> 1115 bytes
-rw-r--r--lang/pt/main-menu-login.json13
-rw-r--r--lang/pt/main-menu-logout.json13
-rw-r--r--lang/pt/messagebox-error.json1
-rw-r--r--lang/pt/messagebox-info.json1
-rw-r--r--lang/pt/messagebox-success.json1
-rw-r--r--lang/pt/messagebox-warning.json1
-rw-r--r--lang/pt/messages-hardcoded.json12
-rw-r--r--lang/pt/messages.json39
-rw-r--r--lang/pt/minilinux/download.json1
-rw-r--r--lang/pt/minilinux/filelist.json9
-rw-r--r--lang/pt/page-adduser.json8
-rw-r--r--lang/pt/page-baseconfig.json7
-rw-r--r--lang/pt/page-login.json8
-rw-r--r--lang/pt/page-main-guest.json5
-rw-r--r--lang/pt/page-main.json10
-rw-r--r--lang/pt/page-minilinux.json3
-rw-r--r--lang/pt/page-news.json12
-rw-r--r--lang/pt/page-remote-tgz-list.json5
-rw-r--r--lang/pt/page-sysconfig-main.json16
-rw-r--r--lang/pt/page-syslog.json10
-rw-r--r--lang/pt/page-vmstore.json15
-rw-r--r--lang/pt/pagenav.json1
-rw-r--r--lang/pt/serversetup/ipaddress.json7
-rw-r--r--lang/pt/serversetup/ipxe.json15
-rw-r--r--lang/pt/sysconfig/ad-checkconnection.json5
-rw-r--r--lang/pt/sysconfig/ad-finish.json7
-rw-r--r--lang/pt/sysconfig/ad-start.json15
-rw-r--r--lang/pt/sysconfig/cfg-finish.json4
-rw-r--r--lang/pt/sysconfig/cfg-start.json7
-rw-r--r--lang/pt/sysconfig/custom-filelist.json3
-rw-r--r--lang/pt/sysconfig/custom-fileselect.json5
-rw-r--r--lang/pt/sysconfig/custom-upload.json7
-rw-r--r--lang/pt/sysconfig/start.json4
-rw-r--r--lang/pt/systemstatus/_page.json8
-rw-r--r--lang/pt/systemstatus/addresses.json1
-rw-r--r--lang/pt/systemstatus/diskstat.json6
-rw-r--r--lang/pt/systemstatus/services.json1
-rw-r--r--lang/pt/systemstatus/systeminfo.json15
-rw-r--r--lang/pt/vmstore/mount.json5
-rw-r--r--templates/main-menu-login.html12
-rw-r--r--templates/main-menu-logout.html12
-rw-r--r--test.php5
134 files changed, 1019 insertions, 58 deletions
diff --git a/config.php b/config.php
index 1639c7c3..2fe7a78e 100644
--- a/config.php
+++ b/config.php
@@ -14,7 +14,7 @@ define('CONFIG_SQL_PASS', 'geheim');
define('CONFIG_SQL_FORCE_UTF8', false);
//define('CONFIG_SQL_DB', 'openslx');
-define('LANG',str_replace("\n", "", file_get_contents('lang/lang.txt')));
+define('LANG', $language);
define('CONFIG_TGZ_LIST_DIR', '/opt/openslx/configs');
diff --git a/inc/render.inc.php b/inc/render.inc.php
index 1b2409e9..1a34c45c 100644
--- a/inc/render.inc.php
+++ b/inc/render.inc.php
@@ -165,7 +165,6 @@ class Render
public static function parse($template, $params = false)
{
$dictionary = Dictionary::getArrayTemplate($template);
- //$dictionary = Dictionary::getArray();
if (is_array($params) || $params === false || is_null($params))
$params['token'] = Session::get('token');
return self::$mustache->render(self::getTemplate($template), array_merge($dictionary,$params));
diff --git a/index.php b/index.php
index 3bfd64ee..6a58e1ad 100644
--- a/index.php
+++ b/index.php
@@ -1,8 +1,9 @@
<?php
+require_once 'lang/i18n.php';
+
require_once 'config.php';
-require_once('lang/dictionary.php');
Dictionary::build();
require_once('inc/user.inc.php');
diff --git a/lang/de/dialog-generic.json b/lang/de/dialog-generic.json
new file mode 100644
index 00000000..af0c1dde
--- /dev/null
+++ b/lang/de/dialog-generic.json
@@ -0,0 +1,3 @@
+{
+ "lang_next":"Weiter"
+}
diff --git a/lang/german.png b/lang/de/flag.png
index e840992d..e840992d 100644
--- a/lang/german.png
+++ b/lang/de/flag.png
Binary files differ
diff --git a/lang/de/main-menu-login.json b/lang/de/main-menu-login.json
new file mode 100644
index 00000000..9e66c2ab
--- /dev/null
+++ b/lang/de/main-menu-login.json
@@ -0,0 +1,13 @@
+{
+ "lang_clientLog":"Client Log",
+ "lang_settings":"Einstellungen",
+ "lang_client":"Client",
+ "lang_localization":"Lokalisierung",
+ "lang_configurationVariables":"KonfigurationsVariablen",
+ "lang_server":"Server",
+ "lang_configurationBasic":"Grundkonfiguration",
+ "lang_vmLocation":"VM Speicherort",
+ "lang_news":"News",
+ "lang_login":"Anmelden",
+ "lang_language":"Sprachen"
+}
diff --git a/lang/de/main-menu-logout.json b/lang/de/main-menu-logout.json
new file mode 100644
index 00000000..7e2b91d1
--- /dev/null
+++ b/lang/de/main-menu-logout.json
@@ -0,0 +1,13 @@
+{
+ "lang_clientLog":"Client Log",
+ "lang_settings":"Einstellungen",
+ "lang_client":"Client",
+ "lang_localization":"Lokalisierung",
+ "lang_configurationVariables":"KonfigurationsVariablen",
+ "lang_server":"Server",
+ "lang_configurationBasic":"Grundkonfiguration",
+ "lang_vmLocation":"VM Speicherort",
+ "lang_news":"News",
+ "lang_logout":"Abmelden",
+ "lang_language":"Sprachen"
+}
diff --git a/lang/de/messagebox-error.json b/lang/de/messagebox-error.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/messagebox-error.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/messagebox-info.json b/lang/de/messagebox-info.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/messagebox-info.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/messagebox-success.json b/lang/de/messagebox-success.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/messagebox-success.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/messagebox-warning.json b/lang/de/messagebox-warning.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/messagebox-warning.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/messages-hardcoded.json b/lang/de/messages-hardcoded.json
new file mode 100644
index 00000000..0de5003d
--- /dev/null
+++ b/lang/de/messages-hardcoded.json
@@ -0,0 +1,13 @@
+{
+ "lang_unknwonTaskManager":"Unbekannter Taskmanager-Fehler",
+ "lang_configurationCompilation":"Konfiguration zusammenstellen",
+ "lang_moduleAdd":"Modul hinzufügen",
+ "lang_adAuthentication":"Active Directory Authentifizierung",
+ "lang_adModule":"Mit diesem Modul ist die Anmeldung an den Client PCs mit den Benutzerkonten eines Active Directory möglich. Je nach Konfiguration ist auch die Nutzung eines Benutzerverzeichnisses auf dem Client möglich.",
+ "lang_authentication":"Authentifizierung",
+ "lang_generic":"Generisch",
+ "lang_addCustomModuleInfo":"Mit einem Erweiterten Modul ist es möglich, beliebige Dateien zum Grundsystem hinzuzufügen Nutzen Sie dieses Modul, um z.B. spezielle Konfigurationsdateien auf den Client PCs zu verwenden, die sich nicht mit einem der anderen Wizards erstellen lässt. Das Hinzufügen eines Erweiterten Moduls erfordert in der Regel zumindest grundlegende Systemkenntnisse im Linuxbereich.",
+ "lang_addCustomModule":"Eigenes Modul hinzufügen",
+ "lang_days":"Tag(e)",
+ "lang_hours":"Stunde(n)"
+}
diff --git a/lang/de/messages.json b/lang/de/messages.json
new file mode 100644
index 00000000..21c5316f
--- /dev/null
+++ b/lang/de/messages.json
@@ -0,0 +1,39 @@
+{
+ "loginfail": "Benutzername oder Kennwort falsch",
+ "token": "Ungültiges Token. CSRF Angriff?",
+ "adduser-disabled": "Keine ausreichenden Rechte, um weitere Benutzer hinzuzufügen",
+ "password-mismatch": "Passwort und Passwortbestätigung stimmen nicht überein",
+ "empty-field": "Ein Feld wurde nicht ausgefüllt",
+ "adduser-success": "Benutzer erfolgreich hinzugefügt",
+ "no-permission": "Keine ausreichenden Rechte, um auf diese Seite zuzugreifen",
+ "settings-updated": "Einstellungen wurden aktualisiert",
+ "debug-mode": "Der Debug-Modus ist aktiv!",
+ "value-invalid": "Der Wert {{1}} ist ungültig für die Option {{0}} und wurde ignoriert",
+ "invalid-action": "Ungültige Aktion: {{0}}",
+ "remote-timeout": "Konnte Ressource {{0}} nicht herunterladen ({{1}})",
+ "remote-parse-failed": "Parsen der empfangenen Daten fehlgeschlagen ({{0}})",
+ "missing-file": "Es wurde keine Datei ausgewählt!",
+ "invalid-file": "Die Datei {{0}} existiert nicht!",
+ "upload-complete": "Upload von {{0}} war erfolgreich",
+ "upload-failed": "Upload schlug fehl: {{0}}",
+ "config-activated": "Konfiguration {{0}} wurde aktiviert",
+ "config-invalid": "Konfiguration mit ID {{0}} existiert nicht",
+ "error-write": "Fehler beim Schreiben von {{0}}",
+ "error-read": "Fehler beim Lesen von {{0}}",
+ "error-archive": "Korruptes Archiv oder nicht unterstütztes Format",
+ "error-rename": "Konnte {{0}} nicht in {{1}} umbenennen",
+ "error-nodir": "Das Verzeichnis {{0}} existiert nicht.",
+ "empty-archive": "Das Archiv enthält keine Dateien oder Verzeichnisse",
+ "error-extract": "Konnte Archiv nicht nach {{0}} entpacken - {{1}}",
+ "module-added": "Modul erfolgreich hinzugefügt",
+ "module-deleted": "Modul {{0}} wurde gelöscht",
+ "module-in-use": "Modul {{0}} wird noch durch Konfiguration {{1}} verwendet",
+ "taskmanager-error": "Verbindung zum Taskmanager fehlgeschlagen",
+ "taskmanager-format": "Taskmanager hat ungültige Daten zurückgeliefert",
+ "task-error": "Ausführung fehlgeschlagen: {{0}}",
+ "invalid-ip": "Kein Interface ist auf die Adresse {{0}} konfiguriert",
+ "news-set-success": "News erfolgreich aktualisiert",
+ "news-empty": "Es wurde keine News in der Datenbank gefunden",
+ "news-del-success": "News gelöscht",
+ "reboot-unconfirmed": "Sicherheitsabfrage zum Reboot nicht bestätigt"
+}
diff --git a/lang/de/minilinux/download.json b/lang/de/minilinux/download.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/minilinux/download.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/minilinux/filelist.json b/lang/de/minilinux/filelist.json
new file mode 100644
index 00000000..55d83912
--- /dev/null
+++ b/lang/de/minilinux/filelist.json
@@ -0,0 +1,9 @@
+{
+ "lang_canUpdate1":"Mindestens eine Komponente von",
+ "lang_canUpdate2":"kann aktualisiert werden. Für einen reibungslosen Betrieb wird empfohlen, alle Komponenten auf dem aktuellen Stand zu halten.",
+ "lang_update":"Aktualisieren",
+ "lang_systemUpdated":"Das System ist auf dem aktuellen Stand.",
+ "lang_actual":"Aktuell",
+ "lang_outdated":"Veraltet",
+ "lang_configurationPackageNotFound":"Keine Konfigurationspakete gefunden!"
+}
diff --git a/lang/de/page-adduser.json b/lang/de/page-adduser.json
new file mode 100644
index 00000000..509cb4a4
--- /dev/null
+++ b/lang/de/page-adduser.json
@@ -0,0 +1,8 @@
+{
+ "lang_createUser":"Benutzer anlegen",
+ "lang_username":"Benutzerkennung",
+ "lang_password":"Passwort",
+ "lang_confirmation":"Wiederholen",
+ "lang_fullName":"Vollständiger Name",
+ "lang_telephone":"Telefon"
+}
diff --git a/lang/de/page-baseconfig.json b/lang/de/page-baseconfig.json
new file mode 100644
index 00000000..61bf3e85
--- /dev/null
+++ b/lang/de/page-baseconfig.json
@@ -0,0 +1,7 @@
+{
+ "lang_basicConfiguration":"Basiskonfiguration",
+ "lang_help":"Hilfe",
+ "lang_close":"Schließen",
+ "lang_save":"Speichern",
+ "lang_reset":"Zurücksetzen"
+}
diff --git a/lang/de/page-login.json b/lang/de/page-login.json
new file mode 100644
index 00000000..3f41db8c
--- /dev/null
+++ b/lang/de/page-login.json
@@ -0,0 +1,8 @@
+{
+ "lang_enter":"Anmeldung",
+ "lang_username":"Benutzerkennung",
+ "lang_password":"Passwort",
+ "lang_rememberID":"Angemeldet bleiben",
+ "lang_login":"Anmelden",
+ "lang_register":"Registrieren"
+}
diff --git a/lang/de/page-main-guest.json b/lang/de/page-main-guest.json
new file mode 100644
index 00000000..6fb576fd
--- /dev/null
+++ b/lang/de/page-main-guest.json
@@ -0,0 +1,5 @@
+{
+ "lang_welcome":"Willkommen",
+ "lang_introGuest":"Dies ist das Administrations-Interface der lokalen bwLehrpool-Installation. Bitte authentifizieren Sie sich, um Einstellungen vorzunehmen.",
+ "lang_login":"Anmelden"
+}
diff --git a/lang/de/page-main.json b/lang/de/page-main.json
new file mode 100644
index 00000000..412a0ee5
--- /dev/null
+++ b/lang/de/page-main.json
@@ -0,0 +1,10 @@
+{
+ "lang_welcome":"Willkommen",
+ "lang_intro":"Dies ist die bwLehrpool Konfigurationsoberfläche.",
+ "lang_vmLocationNotSet":"Es ist noch kein Speicherort für die Virtuellen Maschinen festgelegt.",
+ "lang_configure":"Konfigurieren",
+ "lang_bootMenuWarning":"Das Bootmenü ist veraltet oder wurde noch nicht generiert.",
+ "lang_minilinuxMissing":"Wichtige Dateien der MiniLinux-Installation fehlen.",
+ "lang_systemConfigurationNotChosen":"Es wurde noch keine Systemkonfiguration ausgewählt.",
+ "lang_systemConfiguration":"Systemkonfiguration"
+}
diff --git a/lang/de/page-minilinux.json b/lang/de/page-minilinux.json
new file mode 100644
index 00000000..c8a965b1
--- /dev/null
+++ b/lang/de/page-minilinux.json
@@ -0,0 +1,3 @@
+{
+ "lang_listObtained":"Liste wird abgerufen..."
+}
diff --git a/lang/de/page-news.json b/lang/de/page-news.json
new file mode 100644
index 00000000..ba405033
--- /dev/null
+++ b/lang/de/page-news.json
@@ -0,0 +1,12 @@
+{
+ "lang_newsIntro":"Hier haben Sie die Möglichkeit, die von bwLehrpool-Clients angezeigten News zu editieren.",
+ "lang_activeNews":"Aktive News",
+ "lang_latestUpdate":"Letzte Aktualisierung",
+ "lang_title":"Titel",
+ "lang_content":"Inhalt",
+ "lang_save":"Speichern",
+ "lang_newsOld":"Alte News",
+ "lang_date":"Datum",
+ "lang_show":"Ansehen",
+ "lang_delete":"Löschen"
+}
diff --git a/lang/de/page-remote-tgz-list.json b/lang/de/page-remote-tgz-list.json
new file mode 100644
index 00000000..e45b45b6
--- /dev/null
+++ b/lang/de/page-remote-tgz-list.json
@@ -0,0 +1,5 @@
+{
+ "lang_systemConfiguration":"Systemkonfiguration",
+ "lang_centralConfiguration":"Zentral verfügbare Konfigurationen",
+ "lang_configurationPackageNotFound":"Keine Konfigurationspakete gefunden!"
+}
diff --git a/lang/de/page-sysconfig-main.json b/lang/de/page-sysconfig-main.json
new file mode 100644
index 00000000..8405a5d0
--- /dev/null
+++ b/lang/de/page-sysconfig-main.json
@@ -0,0 +1,17 @@
+{
+ "lang_availableSystem":"Verfügbare Systemkonfigurationen",
+ "lang_activate":"Aktivieren",
+ "lang_close":"Schließen",
+ "lang_systemConfigurationNotFound":"Keine Systemkonfigurationen gefunden.Erstellen Sie eine neue Konfiguration aus den unten aufgeführten Konfigurationsmodulen.",
+ "lang_systemConfigurationAlert":"Bevor Sie eine Systemkonfiguration erstellen können, müssen Sie zunächst ein Konfigurationsmodul erzeugen.",
+ "lang_newConfiguration":"Neue Konfiguration",
+ "lang_availableModules":"Verfügbare Konfigurationsmodule",
+ "lang_show":"Ansehen",
+ "lang_delete":"Löschen",
+ "lang_configurationModuleNotFound":"Keine Konfigurationsmodule gefunden!",
+ "lang_newModule":"Neues Modul",
+ "lang_systemConfiguration":"Systemkonfiguration",
+ "lang_helpSystemConfiguration":"Über eine Systemkonfiguration wird die grundlegende Lokalisierung des bwLehrpool-Systems durchgeführt. Dazu gehören Aspekte wie das Authentifizierungsverfahren für Benutzer (z.B. Active Directory, LDAP), Druckerkonfiguration, Home-Verzeichnisse, etc. Eine Systemkonfiguration setzt sich aus einem oder mehreren Konfigurationsmodulen zusammen, welche im unteren Bereich dieser Seite verwaltet werden können.",
+ "lang_moduleConfiguration":"Konfigurationsmodule",
+ "lang_helpModuleConfiguration":"Konfigurationsmodule sind die Bausteine, aus denen eine Systemkonfiguration erstellt wird. Hier lassen sich sowohl generische Module durch einen Wizard anlegen, als auch komplett eigene Module erstellen (fortgeschritten, Linuxkenntnisse erforderlich)."
+}
diff --git a/lang/de/page-syslog.json b/lang/de/page-syslog.json
new file mode 100644
index 00000000..ccfa3845
--- /dev/null
+++ b/lang/de/page-syslog.json
@@ -0,0 +1,10 @@
+{
+ "lang_clientLog":"Client Log",
+ "lang_filter":"Filter",
+ "lang_not":"not",
+ "lang_go":"Go",
+ "lang_when":"Wann",
+ "lang_client":"Client",
+ "lang_event":"Ereignis",
+ "lang_details":"Details"
+}
diff --git a/lang/de/page-vmstore.json b/lang/de/page-vmstore.json
new file mode 100644
index 00000000..ab42df35
--- /dev/null
+++ b/lang/de/page-vmstore.json
@@ -0,0 +1,15 @@
+{
+ "lang_vmLocation":"VM Speicherort",
+ "lang_vmLocationChoose":"Bitte wählen Sie, wo die Images der Virtuellen Maschinen gespeichert werden sollen.",
+ "lang_intern":"Intern",
+ "lang_noAdditionalInformation":"Keine Weitere Konfiguration notwendig",
+ "lang_readWrite":"Lese/Schreib-Zugangsdaten",
+ "lang_username":"Benutzerkennung",
+ "lang_password":"Passwort",
+ "lang_readOnly":"Nur-Lese-Zugangsdaten",
+ "lang_save":"Speichern",
+ "lang_close":"Schließen",
+ "lang_vmLocationHelp1":"Für Testzwecke können die VMs direkt auf dem Satellitenserver gespeichert werden. Sofern Sie jedoch die ausgelieferte Satelliten-vmdk betreiben bedenken Sie bitte, dass Sie dann nur ca. 100GB Speicher zur Verfügung haben.",
+ "lang_vmLocationHelp2":"Im Produktivbetrieb bietet es sich an, hierfür einen performanten Netzwerkspeicher zu benutzen. Dieser Netzwerkspeicher kann per NFS oder CIFS/SMB eingebunden werden. In jedem Fall muss sichergestellt werden, dass der Satellitenserver zum Hinzufügen neuer Virtueller Maschinen Schreibzugriff auf diesen Netzwerkspeicher hat. Bei der Nutzung von NFSv3 kann dies IP-Basiert eingerichtet werden, für die Nutzung von CIFS/SMB können Sie Zugangsdaten angaben, die zum Schreiben berechtigen.",
+ "lang_vmLocationHelp3":"Die bwLehrpool-Clients brauchen lediglich Lesezugriff auf den Netzwerkspeicher (und sollten aus Sicherheitsgründen auch wirklich nur lesen können). Bei CIFS/SMB erreichen Sie dies am einfachsten, indem Sie passwortlosen Gastzugriff mit Leserechten auf die Freigabe erlauben."
+}
diff --git a/lang/de/pagenav.json b/lang/de/pagenav.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/pagenav.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/serversetup/ipaddress.json b/lang/de/serversetup/ipaddress.json
new file mode 100644
index 00000000..8483a634
--- /dev/null
+++ b/lang/de/serversetup/ipaddress.json
@@ -0,0 +1,7 @@
+{
+ "lang_bootAddress":"Boot-Adresse des Servers",
+ "lang_chooseIP":"Bitte wählen Sie die IP-Adresse, über die der Server von den Clients zum Booten angesprochen werden soll.",
+ "lang_active":"Aktiv",
+ "lang_set":"Setzen",
+ "lang_bootHint":"Das Bootmenü muss nach einer Änderung der IP-Adresse neu generiert werden. In der Regel geschieht dies automatisch, der Vorgang kann in der Sektion Bootmenü allerdings auch manuell ausgelöst werden."
+}
diff --git a/lang/de/serversetup/ipxe.json b/lang/de/serversetup/ipxe.json
new file mode 100644
index 00000000..1653b617
--- /dev/null
+++ b/lang/de/serversetup/ipxe.json
@@ -0,0 +1,15 @@
+{
+ "lang_bootMenu":"Bootmenü",
+ "lang_bootInfo":"Hier können Anpassungen am Erscheinungsbild des Bootmenüs vorgenommen werden.",
+ "lang_bootBehavior":"Standard-Bootverhalten",
+ "lang_localHDD":"Lokale HDD",
+ "lang_menuDisplayTime":"Anzeigedauer des Menüs",
+ "lang_seconds":"Sekunden",
+ "lang_menuCustom":"Benutzerdefinierter Menüzusatz",
+ "lang_bootMenuCreate":"Bootmenü erzeugen",
+ "lang_menuCustomHint1":"Hier haben Sie die Möglichkeit, eigenen Menü-Code zum angezeigten PXE-Menü hinzuzufügen, um z.B. auf weitere PXE-Server zu verweisen. Das Format entspricht dem syslinux Menüformat.",
+ "lang_menuCustomHint2":"Sie können ein oder mehrere Einträge erzeugen. Wenn Sie einen Eintrag erzeugen möchten, der automatisch gestartet wird, wenn der Benutzer keine Auswahl tätigt, vergeben Sie als",
+ "lang_menuCustomHint3":"und wählen Sie als Standard-Bootverhalten ebenfalls my-entry.",
+ "lang_example":"Beispiel",
+ "lang_close":"Schließen"
+}
diff --git a/lang/de/sysconfig/ad-checkconnection.json b/lang/de/sysconfig/ad-checkconnection.json
new file mode 100644
index 00000000..aaa17c13
--- /dev/null
+++ b/lang/de/sysconfig/ad-checkconnection.json
@@ -0,0 +1,5 @@
+{
+ "lang_connectionWait":"Die Verbindung zum angegebenen AD-Server wird nun überprüft. Bitte haben Sie einen Moment Geduld.",
+ "lang_back":"Zurück",
+ "lang_skip":"Überspringen"
+}
diff --git a/lang/de/sysconfig/ad-finish.json b/lang/de/sysconfig/ad-finish.json
new file mode 100644
index 00000000..71b7cd24
--- /dev/null
+++ b/lang/de/sysconfig/ad-finish.json
@@ -0,0 +1,7 @@
+{
+ "lang_adStarted":"Der AD-Proxy wird nun konfiguriert und gestartet...",
+ "lang_generateModule":"Modul erzeugen",
+ "lang_restartWizard":"Assistent neustarten",
+ "lang_to":"Zur",
+ "lang_systemConfiguration":"Systemkonfiguration"
+}
diff --git a/lang/de/sysconfig/ad-start.json b/lang/de/sysconfig/ad-start.json
new file mode 100644
index 00000000..0bbb2120
--- /dev/null
+++ b/lang/de/sysconfig/ad-start.json
@@ -0,0 +1,15 @@
+{
+ "lang_adText1":"Zum Einrichten der Benutzerauthentifizierung über ein Active Directory wird neben der Adresse des anzusprechenden Servers ein dedizierter Benutzer im AD benötigt, über welchen das AD angesprochen wird.",
+ "lang_adText2":"Dieser Benutzer benötigt keine besonderen Rechte, Sie können diesem Benutzer zur Sicherheit auch die Rechte zum Anmelden entziehen. Der Benutzer muss lediglich ausreichende Berechtigungen haben, um einen LDAP-Bind am AD durchzuführen, und nach Benutzern zu suchen.",
+ "lang_adText3":"Im Folgenden muss der Distinguished Name des Benutzers angegeben werden. Diesen können Sie ermitteln, indem Sie das Kommandozeilenprogramm dsquery auf einem Domain Controller wie folgt aufrufen:",
+ "lang_adText4":"Nach Eingabe aller benötigten Daten wird im nächsten Schritt überprüft, ob die Kommunikation mit dem AD möglich ist.",
+ "lang_searchBase":"Suchbasis",
+ "lang_bindDN":"Bind DN",
+ "lang_password":"Passwort",
+ "lang_next":"Weiter",
+ "lang_userDirectory":"Benutzerverzeichnis",
+ "lang_userDirectoryInfo1":"Optionale Angabe: Wenn die Clients für die Benutzer ein eigenes Verzeichnis (Homeverzeichnis, Benutzerverzeichnis) von einem Server einbinden sollen, geben Sie bitte hier das Format in UNC-Notation an, also z.B. ",
+ "lang_userDirectoryInfo2":"%s ist dabei ein Platzhalter für den Login-Namen des Benutzers.",
+ "lang_userDirectoryInfo3":"Das Verzeichnis wird mit den gleichen Zugangsdaten eingebunden, die der Benutzer beim Login angibt. (D.h. kein Kerberos Support o.ä.)",
+ "lang_close":"Schließen"
+}
diff --git a/lang/de/sysconfig/cfg-finish.json b/lang/de/sysconfig/cfg-finish.json
new file mode 100644
index 00000000..83ec0e2b
--- /dev/null
+++ b/lang/de/sysconfig/cfg-finish.json
@@ -0,0 +1,4 @@
+{
+ "lang_configurationSuccess":"Die Konfiguration wurde erfolgreich erstellt.",
+ "lang_configurationActive":"Konfiguration aktivieren"
+}
diff --git a/lang/de/sysconfig/cfg-start.json b/lang/de/sysconfig/cfg-start.json
new file mode 100644
index 00000000..3bdbfca3
--- /dev/null
+++ b/lang/de/sysconfig/cfg-start.json
@@ -0,0 +1,7 @@
+{
+ "lang_name":"Name",
+ "lang_configuration":"Konfiguration",
+ "lang_configurationChoose":"Bitte wählen Sie, welche Module für diese Konfiguration verwendet werden sollen.",
+ "lang_new":"Neu",
+ "lang_next":"Weiter"
+}
diff --git a/lang/de/sysconfig/custom-filelist.json b/lang/de/sysconfig/custom-filelist.json
new file mode 100644
index 00000000..39ee3db5
--- /dev/null
+++ b/lang/de/sysconfig/custom-filelist.json
@@ -0,0 +1,3 @@
+{
+ "lang_back":"Zurück"
+}
diff --git a/lang/de/sysconfig/custom-fileselect.json b/lang/de/sysconfig/custom-fileselect.json
new file mode 100644
index 00000000..207a3b29
--- /dev/null
+++ b/lang/de/sysconfig/custom-fileselect.json
@@ -0,0 +1,5 @@
+{
+ "lang_moduleName":"Modulname",
+ "lang_checkFileContent":"Hier haben Sie die Möglichkeit, den Inhalt des Archivs noch einmal zu überprüfen.",
+ "lang_next":"Weiter"
+}
diff --git a/lang/de/sysconfig/custom-upload.json b/lang/de/sysconfig/custom-upload.json
new file mode 100644
index 00000000..baf85d4d
--- /dev/null
+++ b/lang/de/sysconfig/custom-upload.json
@@ -0,0 +1,7 @@
+{
+ "lang_customModuleInfo1":"Über ein benutzerdefiniertes Modul ist es möglich, beliebige Dateien zum Linux-Grundsystem, das auf den Clients gebootet wird, hinzuzufügen. Dazu kann ein Archiv mit einer Dateisystemstruktur hochgeladen werden, die in dieser Form 1:1 in das gebootete Linux extrahiert wird.",
+ "lang_customModuleInfo2":"Beispiel: Enthält das hochgeladene Archiv eine Datei etc/beispiel.conf, so wird auf einem gebooteten Client diese Datei als /etc/beispiel.conf zu finden sein.",
+ "lang_file":"Archiv",
+ "lang_supportedFiles":"Unterstützte Archivformate",
+ "lang_upload":"Hochladen"
+}
diff --git a/lang/de/sysconfig/start.json b/lang/de/sysconfig/start.json
new file mode 100644
index 00000000..21966836
--- /dev/null
+++ b/lang/de/sysconfig/start.json
@@ -0,0 +1,4 @@
+{
+ "lang_moduleChoose":"Bitte wählen Sie aus, welche Art Konfigurationsmodul Sie erstellen möchten.",
+ "lang_add":"Hinzufügen"
+}
diff --git a/lang/de/systemstatus/_page.json b/lang/de/systemstatus/_page.json
new file mode 100644
index 00000000..107a30f8
--- /dev/null
+++ b/lang/de/systemstatus/_page.json
@@ -0,0 +1,8 @@
+{
+ "lang_space":"Speicherplatz",
+ "lang_services":"Dienste",
+ "lang_addressConfiguration":"Adresskonfiguration",
+ "lang_system":"System",
+ "lang_maintenance":"Maintenance",
+ "lang_iAmSure":"Ja, ich bin sicher"
+}
diff --git a/lang/de/systemstatus/addresses.json b/lang/de/systemstatus/addresses.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/systemstatus/addresses.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/systemstatus/diskstat.json b/lang/de/systemstatus/diskstat.json
new file mode 100644
index 00000000..cce2a5fd
--- /dev/null
+++ b/lang/de/systemstatus/diskstat.json
@@ -0,0 +1,6 @@
+{
+ "lang_systemPartition":"Systempartition",
+ "lang_capacity":"Kapazität",
+ "lang_vmStore":"VM-Speicher",
+ "lang_vmStoreError":"Fehler beim Ermitteln des verfügbaren Speicherplatzes am VM-Speicherort. Bitte überprüfen Sie die Konfiguration."
+}
diff --git a/lang/de/systemstatus/services.json b/lang/de/systemstatus/services.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/de/systemstatus/services.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/de/systemstatus/systeminfo.json b/lang/de/systemstatus/systeminfo.json
new file mode 100644
index 00000000..3dc70229
--- /dev/null
+++ b/lang/de/systemstatus/systeminfo.json
@@ -0,0 +1,15 @@
+{
+ "lang_uptimeOS":"OS Uptime",
+ "lang_cpuLoad":"CPU-Last",
+ "lang_average":"Durchschnitt",
+ "lang_onlyOS":"Nur OS",
+ "lang_logicCPUs":"Logische CPUs",
+ "lang_notDetermined":"Konnte nicht ermittelt werden",
+ "lang_ramUsage":"RAM-Nutzung",
+ "lang_total":"Gesamt",
+ "lang_free":"Frei",
+ "lang_swapUsage":"swap-Nutzung",
+ "lang_occupied":"Belegt",
+ "lang_attention":"Achtung!",
+ "lang_swapWarning":"Es wird swap-Speicher genutzt. Dies kann ein Hinweis darauf sein, dass dem Satelliten-Server zu wenig physikalischer Speicher zur Verfügung steht. Im Falle von Performance-Problemen oder Instabilität des Servers sollten Sie erwägen, den Server mit mehr RAM auszustatten."
+}
diff --git a/lang/de/vmstore/mount.json b/lang/de/vmstore/mount.json
new file mode 100644
index 00000000..79307a23
--- /dev/null
+++ b/lang/de/vmstore/mount.json
@@ -0,0 +1,5 @@
+{
+ "lang_vmLocationConfiguration":"VM Speicherort wird konfiguriert",
+ "lang_configure":"Konfigurieren",
+ "lang_back":"Zurück"
+}
diff --git a/lang/dictionary.json b/lang/dictionary.json
index f89f59ba..c9194bf7 100644
--- a/lang/dictionary.json
+++ b/lang/dictionary.json
@@ -66,7 +66,7 @@
},
"lang_adText4": {
"english": "After entering all required data in the next step, it checks whether communication is possible with the AD.",
- "german": "Im Folgenden muss der Distinguished Name des Benutzers angegeben werden. Diesen können Sie ermitteln, indem Sie das Kommandozeilenprogramm dsquery auf einem Domain Controller wie folgt aufrufen:",
+ "german": "Nach Eingabe aller benötigten Daten wird im nächsten Schritt überprüft, ob die Kommunikation mit dem AD möglich ist.",
"portuguese": "Depois de inserir todos os dados necessários na próxima etapa, ela verifica se a comunicação é possível com o AD."
},
"lang_addressConfiguration": {
@@ -297,7 +297,7 @@
"lang_delete": {
"english": "Delete",
"german": "Löschen",
- "portuguese": "Deletar"
+ "portuguese": "Excluir"
},
"lang_details": {
"english": "Details",
@@ -397,7 +397,7 @@
"lang_introGuest": {
"english": "This is the administration interface of the local bwLehrpool intallation. Please authenticate yourself to adjust settings.",
"german": "Dies ist das Administrations-Interface der lokalen bwLehrpool-Installation. Bitte authentifizieren Sie sich, um Einstellungen vorzunehmen.",
- "portuguese": "Esta é a interface de administração da instalação local do bwLehrpool. Por favor, autentique-se para ajustar opções;"
+ "portuguese": "Esta é a interface de administração da instalação local do bwLehrpool. Por favor, autentique-se para ajustar opções."
},
"lang_latestUpdate": {
"english": "Latest update",
@@ -800,9 +800,9 @@
"portuguese": "Uma localização para a máquina virtual ainda não foi escolhida."
},
"lang_vmStore": {
- "english": "VM Store",
+ "english": "VM Storage",
"german": "VM-Speicher",
- "portuguese": "Loja da VM"
+ "portuguese": "Armazenamento da VM"
},
"lang_vmStoreError": {
"english": "Error when determining the available disk space on the VM location. Please check the configuration.",
diff --git a/lang/dictionary.php b/lang/dictionary.php
deleted file mode 100644
index e1281dd1..00000000
--- a/lang/dictionary.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-class Dictionary{
- private static $dictionary;
- private static $messageArray;
-
- function build(){
- self::$dictionary = self::sliceArray(json_decode(file_get_contents("lang/dictionary.json"),true));
- self::$messageArray = self::sliceArray(json_decode(file_get_contents("lang/translations/messages.json"),true));
- }
-
- public static function getArray(){
- return self::$dictionary;
- }
-
- public static function getArrayTemplate($template){
- return self::sliceArray(json_decode(file_get_contents("lang/translations/" . $template . ".json"),true));
- }
-
- public static function translate($string){
- return self::$dictionary[$string];
- }
-
- public static function getMessages(){
- return self::$messageArray;
- }
-
- private static function sliceArray($array){
- foreach($array as $key => $text){
- $array[$key] = $text[LANG];
- }
- return $array;
- }
-
-}
diff --git a/lang/en/dialog-generic.json b/lang/en/dialog-generic.json
new file mode 100644
index 00000000..330ef52c
--- /dev/null
+++ b/lang/en/dialog-generic.json
@@ -0,0 +1,3 @@
+{
+ "lang_next":"Next"
+}
diff --git a/lang/english.png b/lang/en/flag.png
index f9337dc5..f9337dc5 100644
--- a/lang/english.png
+++ b/lang/en/flag.png
Binary files differ
diff --git a/lang/en/main-menu-login.json b/lang/en/main-menu-login.json
new file mode 100644
index 00000000..588c7c13
--- /dev/null
+++ b/lang/en/main-menu-login.json
@@ -0,0 +1,13 @@
+{
+ "lang_clientLog":"Client Log",
+ "lang_settings":"Settings",
+ "lang_client":"Client",
+ "lang_localization":"Localization",
+ "lang_configurationVariables":"Configuration Variables",
+ "lang_server":"Server",
+ "lang_configurationBasic":"Basic Configuration",
+ "lang_vmLocation":"VM Location",
+ "lang_news":"News",
+ "lang_login":"Login",
+ "lang_language":"Language"
+}
diff --git a/lang/en/main-menu-logout.json b/lang/en/main-menu-logout.json
new file mode 100644
index 00000000..6116180f
--- /dev/null
+++ b/lang/en/main-menu-logout.json
@@ -0,0 +1,13 @@
+{
+ "lang_clientLog":"Client Log",
+ "lang_settings":"Settings",
+ "lang_client":"Client",
+ "lang_localization":"Localization",
+ "lang_configurationVariables":"Configuration Variables",
+ "lang_server":"Server",
+ "lang_configurationBasic":"Basic Configuration",
+ "lang_vmLocation":"VM Location",
+ "lang_news":"News",
+ "lang_logout":"Logout",
+ "lang_language":"Language"
+}
diff --git a/lang/en/messagebox-error.json b/lang/en/messagebox-error.json
new file mode 100644
index 00000000..0db3279e
--- /dev/null
+++ b/lang/en/messagebox-error.json
@@ -0,0 +1,3 @@
+{
+
+}
diff --git a/lang/en/messagebox-info.json b/lang/en/messagebox-info.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/lang/en/messagebox-info.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/lang/en/messagebox-success.json b/lang/en/messagebox-success.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/lang/en/messagebox-success.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/lang/en/messagebox-warning.json b/lang/en/messagebox-warning.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/lang/en/messagebox-warning.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/lang/en/messages-hardcoded.json b/lang/en/messages-hardcoded.json
new file mode 100644
index 00000000..6f1e6b5b
--- /dev/null
+++ b/lang/en/messages-hardcoded.json
@@ -0,0 +1,13 @@
+{
+ "lang_unknwonTaskManager":"Unknown Task Manager error",
+ "lang_configurationCompilation":"Compile configuration",
+ "lang_moduleAdd":"Add Module",
+ "lang_adAuthentication":"Active Directory Authentication",
+ "lang_adModule":"This module makes possible the application to the client PCs with the user accounts of an Active Directory. Depending on the configuration, the use of a user directory on the client is possible.",
+ "lang_authentication":"Authentication",
+ "lang_generic":"Generic",
+ "lang_addCustomModuleInfo":"With an extended module it is possible to add any files to the basic system that uses this module, for example to use specific configuration files, which can not be created with one of the other Wizards. Adding an Extended module usually requires at least basic knowledge of the Linux system.",
+ "lang_addCustomModule":"Add Custom Module",
+ "lang_days":"Day(s)",
+ "lang_hours":"Hour(s)"
+}
diff --git a/lang/en/messages.json b/lang/en/messages.json
new file mode 100644
index 00000000..0aecff38
--- /dev/null
+++ b/lang/en/messages.json
@@ -0,0 +1,39 @@
+{
+ "loginfail": "Username or Password incorrect",
+ "token": "Invalid token. CSRF attack?",
+ "adduser-disabled": "Insufficient privileges to add more users",
+ "password-mismatch": "Password and password confirmation do not match",
+ "empty-field": "A field was not filled",
+ "adduser-success": "User successfully added",
+ "no-permission": "No sufficient privileges to access this page",
+ "settings-updated": "Settings have been updated",
+ "debug-mode": "The debug mode is active!",
+ "value-invalid": "The value {{1}} is invalid for option {{0}} and has been ignored",
+ "invalid-action": "Invalid action: {{0}}",
+ "remote-timeout": "Could not download resource {{0}} ({{1}})",
+ "remote-parse-failed": "Parsing the received data failed ({{0}})",
+ "missing-file": "There was no file selected!",
+ "invalid-file": "The file {{0}} does not exist!",
+ "upload-complete": "Upload of {{0}} was successful",
+ "upload-failed": "Upload failed: {{0}}",
+ "config-activated": "Configuration {{0}} has been activated",
+ "config-invalid": "Configuration with id {{0}} does not exist",
+ "error-write": "Failed to write {{0}}",
+ "error-read": "Error reading {{0}}",
+ "error-archive": "Corrupted archive or unsupported format",
+ "error-rename": "Could not rename {{0}} into {{1}}",
+ "error-nodir": "The directory {{0}} does not exist.",
+ "empty-archive": "The archive contains no files or directories",
+ "error-extract": "Could not unpack archive {{0}} to {{1}}",
+ "module-added": "Module successfully added",
+ "module-deleted": "Module {{0}} was deleted",
+ "module-in-use": "Module {{0}} is still used by Configuration {{1}}",
+ "taskmanager-error": "Failed to connect to the Task Manager",
+ "taskmanager-format": "Task Manager has returned invalid data",
+ "task-error": "Execution failed: {{0}}",
+ "invalid-ip": "No interface is configured with the address {{0}}",
+ "news-set-success": "News updated successfully",
+ "news-empty": "There was no news found in the database",
+ "news-del-success": "News deleted",
+ "reboot-unconfirmed": "Confirmation prompt to reboot not confirmed"
+}
diff --git a/lang/en/minilinux/download.json b/lang/en/minilinux/download.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/lang/en/minilinux/download.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/lang/en/minilinux/filelist.json b/lang/en/minilinux/filelist.json
new file mode 100644
index 00000000..7c8c80b1
--- /dev/null
+++ b/lang/en/minilinux/filelist.json
@@ -0,0 +1,9 @@
+{
+ "lang_canUpdate1":"At least one component of",
+ "lang_canUpdate2":"can be updated. For a smooth operation, it is recommended to keep all components up to date.",
+ "lang_update":"Update",
+ "lang_systemUpdated":"The system is up to date.",
+ "lang_actual":"Actual",
+ "lang_outdated":"Outdated",
+ "lang_configurationPackageNotFound":"Configuration package not found!"
+}
diff --git a/lang/en/page-adduser.json b/lang/en/page-adduser.json
new file mode 100644
index 00000000..b4fae235
--- /dev/null
+++ b/lang/en/page-adduser.json
@@ -0,0 +1,8 @@
+{
+ "lang_createUser":"Create User",
+ "lang_username":"Username",
+ "lang_password":"Password",
+ "lang_confirmation":"Confirm Password",
+ "lang_fullName":"Full Name",
+ "lang_telephone":"Telephone"
+}
diff --git a/lang/en/page-baseconfig.json b/lang/en/page-baseconfig.json
new file mode 100644
index 00000000..715ae3e6
--- /dev/null
+++ b/lang/en/page-baseconfig.json
@@ -0,0 +1,7 @@
+{
+ "lang_basicConfiguration":"Basic Configuration",
+ "lang_help":"Help",
+ "lang_close":"Close",
+ "lang_save":"Save",
+ "lang_reset":"Reset"
+}
diff --git a/lang/en/page-login.json b/lang/en/page-login.json
new file mode 100644
index 00000000..596eeea1
--- /dev/null
+++ b/lang/en/page-login.json
@@ -0,0 +1,8 @@
+{
+ "lang_enter":"Enter",
+ "lang_username":"Username",
+ "lang_password":"Password",
+ "lang_rememberID":"Remember ID",
+ "lang_login":"Login",
+ "lang_register":"Register"
+}
diff --git a/lang/en/page-main-guest.json b/lang/en/page-main-guest.json
new file mode 100644
index 00000000..3c4b0518
--- /dev/null
+++ b/lang/en/page-main-guest.json
@@ -0,0 +1,5 @@
+{
+ "lang_welcome":"Welcome",
+ "lang_introGuest":"This is the administration interface of the local bwLehrpool intallation. Please authenticate yourself to adjust settings.",
+ "lang_login":"Login"
+}
diff --git a/lang/en/page-main.json b/lang/en/page-main.json
new file mode 100644
index 00000000..687c858c
--- /dev/null
+++ b/lang/en/page-main.json
@@ -0,0 +1,10 @@
+{
+ "lang_welcome":"Welcome",
+ "lang_intro":"This is the bwLehrpool configuration interface.",
+ "lang_vmLocationNotSet":"A location for the virtual machine is not set yet.",
+ "lang_configure":"Configure",
+ "lang_bootMenuWarning":"The boot menu is outdated or has not been generated.",
+ "lang_minilinuxMissing":"Important files from the mini Linux installation are missing.",
+ "lang_systemConfigurationNotChosen":"A system configuration has not been chosen yet.",
+ "lang_systemConfiguration":"System Configuration"
+}
diff --git a/lang/en/page-minilinux.json b/lang/en/page-minilinux.json
new file mode 100644
index 00000000..885a4d5c
--- /dev/null
+++ b/lang/en/page-minilinux.json
@@ -0,0 +1,3 @@
+{
+ "lang_listObtained":"List is obtained..."
+}
diff --git a/lang/en/page-news.json b/lang/en/page-news.json
new file mode 100644
index 00000000..58408261
--- /dev/null
+++ b/lang/en/page-news.json
@@ -0,0 +1,12 @@
+{
+ "lang_newsIntro":"Here you have the possibility to edit the news displayed to the bwLehrpool clients.",
+ "lang_activeNews":"Active News",
+ "lang_latestUpdate":"Latest update",
+ "lang_title":"Title",
+ "lang_content":"Content",
+ "lang_save":"Save",
+ "lang_newsOld":"Old News",
+ "lang_date":"Date",
+ "lang_show":"Show",
+ "lang_delete":"Delete"
+}
diff --git a/lang/en/page-remote-tgz-list.json b/lang/en/page-remote-tgz-list.json
new file mode 100644
index 00000000..7014de23
--- /dev/null
+++ b/lang/en/page-remote-tgz-list.json
@@ -0,0 +1,5 @@
+{
+ "lang_systemConfiguration":"System Configuration",
+ "lang_centralConfiguration":"Central configurations available",
+ "lang_configurationPackageNotFound":"Configuration package not found!"
+}
diff --git a/lang/en/page-sysconfig-main.json b/lang/en/page-sysconfig-main.json
new file mode 100644
index 00000000..1d33c98d
--- /dev/null
+++ b/lang/en/page-sysconfig-main.json
@@ -0,0 +1,17 @@
+{
+ "lang_availableSystem":"Available System Configuration",
+ "lang_activate":"Activate",
+ "lang_close":"Close",
+ "lang_systemConfigurationNotFound":"No system configurations found.\n Create a new configuration from the configuration modules listed below.",
+ "lang_systemConfigurationAlert":"Before you can create a system configuration, you must first create a configuration module.",
+ "lang_newConfiguration":"New Configuration",
+ "lang_availableModules":"Available Configuration Modules",
+ "lang_show":"Show",
+ "lang_delete":"Delete",
+ "lang_configurationModuleNotFound":"Configuration module not found!",
+ "lang_newModule":"New Module",
+ "lang_systemConfiguration":"System Configuration",
+ "lang_helpSystemConfiguration":"The fundamental localization of the bwLehrpool system is done through a system configuration. These include aspects such as the authentication method for users (eg Active Directory, LDAP), printer configuration, home directories, etc. A system configuration is composed of one or more configuration modules, which can be managed at the bottom of this page.",
+ "lang_moduleConfiguration":"Module Configuration",
+ "lang_helpModuleConfiguration":"Configuration modules are the building blocks from which a system configuration is created. Here you can create both generic modules by a wizard, as well as create completely custom modules (advanced Linux knowledge required)."
+}
diff --git a/lang/en/page-syslog.json b/lang/en/page-syslog.json
new file mode 100644
index 00000000..660e957f
--- /dev/null
+++ b/lang/en/page-syslog.json
@@ -0,0 +1,10 @@
+{
+ "lang_clientLog":"Client Log",
+ "lang_filter":"Filter",
+ "lang_not":"not",
+ "lang_go":"Go",
+ "lang_when":"When",
+ "lang_client":"Client",
+ "lang_event":"Event",
+ "lang_details":"Details"
+}
diff --git a/lang/en/page-vmstore.json b/lang/en/page-vmstore.json
new file mode 100644
index 00000000..924f9457
--- /dev/null
+++ b/lang/en/page-vmstore.json
@@ -0,0 +1,15 @@
+{
+ "lang_vmLocation":"VM Location",
+ "lang_vmLocationChoose":"Please choose where the images of virtual machines will be stored.",
+ "lang_intern":"Intern",
+ "lang_noAdditionalInformation":"No additional cofiguration required",
+ "lang_readWrite":"Read/Write Access",
+ "lang_username":"Username",
+ "lang_password":"Password",
+ "lang_readOnly":"Read-only Access",
+ "lang_save":"Save",
+ "lang_close":"Close",
+ "lang_vmLocationHelp1":"For test purposes, the VMs can be stored directly on the Satellite server. However, if you operate the delivered satellite vmdk please remember that you have only about 100GB of memory.",
+ "lang_vmLocationHelp2":"In productive operation, it makes sense for this to use a high-performance network storage. This network storage can be integrated via NFS or CIFS / SMB. In any case, it must be ensured that the satellite server has write access to this network storage to add a new Virtual Machine . When using NFSv3 this can be set up IP-based, for the use of CIFS / SMB, you can access data disclosures that would entitle them to write.",
+ "lang_vmLocationHelp3":"The bwLehrpool clients only need read access to the network storage (and for security reasons, really can only read). In CIFS / SMB You can do this most easily by allowing passwordless guest access with read access to the share."
+}
diff --git a/lang/en/pagenav.json b/lang/en/pagenav.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/lang/en/pagenav.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/lang/en/serversetup/ipaddress.json b/lang/en/serversetup/ipaddress.json
new file mode 100644
index 00000000..baa0240e
--- /dev/null
+++ b/lang/en/serversetup/ipaddress.json
@@ -0,0 +1,7 @@
+{
+ "lang_bootAddress":"Boot Address of the Server",
+ "lang_chooseIP":"Please select the IP address that the client server will use to boot.",
+ "lang_active":"Active",
+ "lang_set":"Set",
+ "lang_bootHint":"The Boot menu must be recreated after changing the IP address. Usually this is done automatically, but the process can also be triggered manually in the section of the boot menu."
+}
diff --git a/lang/en/serversetup/ipxe.json b/lang/en/serversetup/ipxe.json
new file mode 100644
index 00000000..31118860
--- /dev/null
+++ b/lang/en/serversetup/ipxe.json
@@ -0,0 +1,15 @@
+{
+ "lang_bootMenu":"Boot Menu",
+ "lang_bootInfo":"Here adjustments can be made to the appearance of the boot menu.",
+ "lang_bootBehavior":"Default Boot Behavior",
+ "lang_localHDD":"Local HDD",
+ "lang_menuDisplayTime":"Menu Display Time",
+ "lang_seconds":"Seconds",
+ "lang_menuCustom":"Custom Extra Menu",
+ "lang_bootMenuCreate":"Create Boot Menu",
+ "lang_menuCustomHint1":"Here you have the opportunity to add your own menu code to the displayed PXE menu, eg to refer to other PXE server. The format corresponds to the syslinux menu format.",
+ "lang_menuCustomHint2":"You can create one or more entries. If you want to create an entry that starts automatically when the user makes a selection, assign as",
+ "lang_menuCustomHint3":"and select as the default boot behavior my-entry as well.",
+ "lang_example":"Example",
+ "lang_close":"Close"
+}
diff --git a/lang/en/sysconfig/ad-checkconnection.json b/lang/en/sysconfig/ad-checkconnection.json
new file mode 100644
index 00000000..0cf328cd
--- /dev/null
+++ b/lang/en/sysconfig/ad-checkconnection.json
@@ -0,0 +1,5 @@
+{
+ "lang_connectionWait":"The connection to the specified AD server is now checked. Please wait a moment.",
+ "lang_back":"Back",
+ "lang_skip":"Skip"
+}
diff --git a/lang/en/sysconfig/ad-finish.json b/lang/en/sysconfig/ad-finish.json
new file mode 100644
index 00000000..7a37b800
--- /dev/null
+++ b/lang/en/sysconfig/ad-finish.json
@@ -0,0 +1,7 @@
+{
+ "lang_adStarted":"The AD-proxy is now configured and started ...",
+ "lang_generateModule":"Generate Module",
+ "lang_restartWizard":"Restart Wizard",
+ "lang_to":"To",
+ "lang_systemConfiguration":"System Configuration"
+}
diff --git a/lang/en/sysconfig/ad-start.json b/lang/en/sysconfig/ad-start.json
new file mode 100644
index 00000000..f451b7c0
--- /dev/null
+++ b/lang/en/sysconfig/ad-start.json
@@ -0,0 +1,15 @@
+{
+ "lang_adText1":"To set up user authentication through Active Directory, a dedicated user is required in AD next to the address of the server, which is addressed by the AD.",
+ "lang_adText2":"This user does not need special rights, you can follow this user to evade security and the rights to log on. The user only needs to have sufficient permissions to perform an LDAP Bind on AD, and search for users.",
+ "lang_adText3":"Next the distinguished name of the user must be specified. You can determine this by dsquery command line program on a domain controller as the following call:",
+ "lang_adText4":"After entering all required data in the next step, it checks whether communication is possible with the AD.",
+ "lang_searchBase":"Search Base",
+ "lang_bindDN":"Bind DN",
+ "lang_password":"Password",
+ "lang_next":"Next",
+ "lang_userDirectory":"User Directory",
+ "lang_userDirectoryInfo1":"Optional: If the clients should embed a separate directory (home directory, user directory) from a server for the user, please enter here the format in UNC notation, eg",
+ "lang_userDirectoryInfo2":"%s is a placeholder for the user's login name.",
+ "lang_userDirectoryInfo3":"The directory is loaded with the same credentials that the user specifies when login. (That is no Kerberos support, etc.)",
+ "lang_close":"Close"
+}
diff --git a/lang/en/sysconfig/cfg-finish.json b/lang/en/sysconfig/cfg-finish.json
new file mode 100644
index 00000000..96bcc23a
--- /dev/null
+++ b/lang/en/sysconfig/cfg-finish.json
@@ -0,0 +1,4 @@
+{
+ "lang_configurationSuccess":"The configuration has been successfully created.",
+ "lang_configurationActive":"Enable configuration"
+}
diff --git a/lang/en/sysconfig/cfg-start.json b/lang/en/sysconfig/cfg-start.json
new file mode 100644
index 00000000..9862cccd
--- /dev/null
+++ b/lang/en/sysconfig/cfg-start.json
@@ -0,0 +1,7 @@
+{
+ "lang_name":"Name",
+ "lang_configuration":"Configuration",
+ "lang_configurationChoose":"Please select which modules will be used for this configuration.",
+ "lang_new":"New",
+ "lang_next":"Next"
+}
diff --git a/lang/en/sysconfig/custom-filelist.json b/lang/en/sysconfig/custom-filelist.json
new file mode 100644
index 00000000..7118d3ed
--- /dev/null
+++ b/lang/en/sysconfig/custom-filelist.json
@@ -0,0 +1,3 @@
+{
+ "lang_back":"Back"
+}
diff --git a/lang/en/sysconfig/custom-fileselect.json b/lang/en/sysconfig/custom-fileselect.json
new file mode 100644
index 00000000..0dc89791
--- /dev/null
+++ b/lang/en/sysconfig/custom-fileselect.json
@@ -0,0 +1,5 @@
+{
+ "lang_moduleName":"Module Name",
+ "lang_checkFileContent":"Here you have the possibility to check the contents of the archive again.",
+ "lang_next":"Next"
+}
diff --git a/lang/en/sysconfig/custom-upload.json b/lang/en/sysconfig/custom-upload.json
new file mode 100644
index 00000000..88aa5470
--- /dev/null
+++ b/lang/en/sysconfig/custom-upload.json
@@ -0,0 +1,7 @@
+{
+ "lang_customModuleInfo1":"About a custom module, it is possible to add arbitrary files to a Linux system that is booted clients. For this purpose, an archive can be uploaded using a file system structure that is extracted in this form 1:1 in the booted Linux.",
+ "lang_customModuleInfo2":"Example: If the uploaded archive is the file etc/example.conf, this file will be located as /etc/example.conf to a booted client.",
+ "lang_file":"File",
+ "lang_supportedFiles":"Supported File Formats",
+ "lang_upload":"Upload"
+}
diff --git a/lang/en/sysconfig/start.json b/lang/en/sysconfig/start.json
new file mode 100644
index 00000000..bc44332d
--- /dev/null
+++ b/lang/en/sysconfig/start.json
@@ -0,0 +1,4 @@
+{
+ "lang_moduleChoose":"Please select which type of configuration module you want to create.",
+ "lang_add":"Add"
+}
diff --git a/lang/en/systemstatus/_page.json b/lang/en/systemstatus/_page.json
new file mode 100644
index 00000000..366aa808
--- /dev/null
+++ b/lang/en/systemstatus/_page.json
@@ -0,0 +1,8 @@
+{
+ "lang_space":"Space",
+ "lang_services":"Services",
+ "lang_addressConfiguration":"Address Configuration",
+ "lang_system":"System",
+ "lang_maintenance":"Maintenance",
+ "lang_iAmSure":"Yes, I am sure"
+}
diff --git a/lang/en/systemstatus/addresses.json b/lang/en/systemstatus/addresses.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/lang/en/systemstatus/addresses.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/lang/en/systemstatus/diskstat.json b/lang/en/systemstatus/diskstat.json
new file mode 100644
index 00000000..c405463d
--- /dev/null
+++ b/lang/en/systemstatus/diskstat.json
@@ -0,0 +1,6 @@
+{
+ "lang_systemPartition":"System Partition",
+ "lang_capacity":"Capacity",
+ "lang_vmStore":"VM Store",
+ "lang_vmStoreError":"Error when determining the available disk space on the VM location. Please check the configuration."
+}
diff --git a/lang/en/systemstatus/services.json b/lang/en/systemstatus/services.json
new file mode 100644
index 00000000..2c63c085
--- /dev/null
+++ b/lang/en/systemstatus/services.json
@@ -0,0 +1,2 @@
+{
+}
diff --git a/lang/en/systemstatus/systeminfo.json b/lang/en/systemstatus/systeminfo.json
new file mode 100644
index 00000000..15431a53
--- /dev/null
+++ b/lang/en/systemstatus/systeminfo.json
@@ -0,0 +1,15 @@
+{
+ "lang_uptimeOS":"OS Uptime",
+ "lang_cpuLoad":"CPU Load",
+ "lang_average":"Average",
+ "lang_onlyOS":"OS Only",
+ "lang_logicCPUs":"Logic CPUs",
+ "lang_notDetermined":"Could not be determined",
+ "lang_ramUsage":"RAM Usage",
+ "lang_total":"Total",
+ "lang_free":"Free",
+ "lang_swapUsage":"swap Usage",
+ "lang_occupied":"Occupied",
+ "lang_attention":"Attention!",
+ "lang_swapWarning":"Memory swap is being used. This may be an indication that the satellite server does not have enough physical memory available. In the case of performance problems or server instability you should consider equipping the server with more RAM."
+}
diff --git a/lang/en/vmstore/mount.json b/lang/en/vmstore/mount.json
new file mode 100644
index 00000000..4b8cd592
--- /dev/null
+++ b/lang/en/vmstore/mount.json
@@ -0,0 +1,5 @@
+{
+ "lang_vmLocationConfiguration":"VM location is configured",
+ "lang_configure":"Configure",
+ "lang_back":"Back"
+}
diff --git a/lang/i18n.php b/lang/i18n.php
new file mode 100644
index 00000000..82da12a1
--- /dev/null
+++ b/lang/i18n.php
@@ -0,0 +1,47 @@
+<?php
+
+class Dictionary{
+ private static $messageArray;
+
+ function build(){
+ self::$messageArray = json_decode(file_get_contents("lang/" . LANG . "/messages.json"),true);
+ }
+
+ public static function getArrayTemplate($template){
+ $language = array('lang'=>LANG);
+ return array_merge($language,json_decode(file_get_contents("lang/" . LANG . "/" . $template . ".json"),true));
+ }
+
+ public static function translate($string){
+ $hardcoded = json_decode(file_get_contents("lang/" . LANG . "/messages-hardcoded.json"),true);
+ return $hardcoded[$string];
+ }
+
+ public static function getMessages(){
+ return self::$messageArray;
+ }
+
+}
+ //Array containing the allowed languages for the website
+ $langArray = array("de","en","pt");
+
+ //Changes the language in case there is a request to
+ if(isset($_GET['lang']))
+ if(in_array($_GET['lang'],$langArray)){
+ setcookie('lang',$_GET['lang'],time()+60*60*24*30*12);
+ header('Location: ' . $_SERVER['HTTP_REFERER']);
+ }
+
+ //Default language
+ $language = 'en';
+
+ //Language from the browser
+ $langBrowser = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
+
+ //User language
+ if(isset($_COOKIE['lang']) && in_array($_COOKIE['lang'],$langArray)){
+ $language = $_COOKIE['lang'];
+ }else if(in_array($langBrowser,$langArray)){
+ $language = $langBrowser;
+ }
+?>
diff --git a/lang/lang.php b/lang/lang.php
deleted file mode 100644
index 401b91e5..00000000
--- a/lang/lang.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
- $langArray = array("english","german","portuguese");
- if(isset($_GET['lang']))
- if(in_array($_GET['lang'],$langArray))
- file_put_contents('lang.txt', $_GET['lang']);
- header('Location: ' . $_SERVER['HTTP_REFERER']);
-?>
diff --git a/lang/lang.txt b/lang/lang.txt
index fd5d49e2..9e3340ec 100644
--- a/lang/lang.txt
+++ b/lang/lang.txt
@@ -1 +1 @@
-portuguese \ No newline at end of file
+pt \ No newline at end of file
diff --git a/lang/pt/dialog-generic.json b/lang/pt/dialog-generic.json
new file mode 100644
index 00000000..949e3067
--- /dev/null
+++ b/lang/pt/dialog-generic.json
@@ -0,0 +1,3 @@
+{
+ "lang_next":"Próximo"
+}
diff --git a/lang/portuguese.png b/lang/pt/flag.png
index 78c57dea..78c57dea 100644
--- a/lang/portuguese.png
+++ b/lang/pt/flag.png
Binary files differ
diff --git a/lang/pt/main-menu-login.json b/lang/pt/main-menu-login.json
new file mode 100644
index 00000000..8fb057dd
--- /dev/null
+++ b/lang/pt/main-menu-login.json
@@ -0,0 +1,13 @@
+{
+ "lang_clientLog":"Log dos Clientes",
+ "lang_settings":"Opções",
+ "lang_client":"Cliente",
+ "lang_localization":"Localização",
+ "lang_configurationVariables":"Variáveis de Configuração",
+ "lang_server":"Servidor",
+ "lang_configurationBasic":"Comfiguração Básica",
+ "lang_vmLocation":"Localização da VM",
+ "lang_news":"Novidades",
+ "lang_login":"Entrar",
+ "lang_language":"Língua"
+}
diff --git a/lang/pt/main-menu-logout.json b/lang/pt/main-menu-logout.json
new file mode 100644
index 00000000..826bc849
--- /dev/null
+++ b/lang/pt/main-menu-logout.json
@@ -0,0 +1,13 @@
+{
+ "lang_clientLog":"Log dos Clientes",
+ "lang_settings":"Opções",
+ "lang_client":"Cliente",
+ "lang_localization":"Localização",
+ "lang_configurationVariables":"Variáveis de Configuração",
+ "lang_server":"Servidor",
+ "lang_configurationBasic":"Comfiguração Básica",
+ "lang_vmLocation":"Localização da VM",
+ "lang_news":"Novidades",
+ "lang_logout":"Sair",
+ "lang_language":"Língua"
+}
diff --git a/lang/pt/messagebox-error.json b/lang/pt/messagebox-error.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/messagebox-error.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/messagebox-info.json b/lang/pt/messagebox-info.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/messagebox-info.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/messagebox-success.json b/lang/pt/messagebox-success.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/messagebox-success.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/messagebox-warning.json b/lang/pt/messagebox-warning.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/messagebox-warning.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/messages-hardcoded.json b/lang/pt/messages-hardcoded.json
new file mode 100644
index 00000000..36cae997
--- /dev/null
+++ b/lang/pt/messages-hardcoded.json
@@ -0,0 +1,12 @@
+{
+ "lang_unknwonTaskManager":"Erro desconhecido do Gerenciador de Tarefas",
+ "lang_configurationCompilation":"Compilar configuração",
+ "lang_moduleAdd":"Adicionar Módulo",
+ "lang_adAuthentication":"Autenticação do Active Directory",
+ "lang_adModule":"Este módulo possibilita a aplicação para os computadores clientes com as contas de usuário de um Active Directory. Dependendo da configuração, o uso de um diretório de usuário no cliente é possível.",
+ "lang_authentication":"Autenticação",
+ "lang_generic":"Genérico",
+ "lang_addCustomModuleInfo":"Com um módulo estendido, é possível adicionar os arquivos para o sistema básico que usa este módulo, por exemplo, para usar arquivos de configuração específicas, que não podem ser criados com um dos outros assistentes. Adicionar um módulo estendido normalmente exige pelo menos um conhecimento básico do sistema Linux.",
+ "lang_days":"Dia(s)",
+ "lang_hours":"Hora(s)"
+}
diff --git a/lang/pt/messages.json b/lang/pt/messages.json
new file mode 100644
index 00000000..8ce40161
--- /dev/null
+++ b/lang/pt/messages.json
@@ -0,0 +1,39 @@
+{
+ "loginfail": "Nome de usuário ou senha incorreta",
+ "token": "Token inválido. Ataque CSRF?",
+ "adduser-disabled": "Privilégios insuficientes para adicionar mais usuários",
+ "password-mismatch": "Senha e confirmação de senha não são iguais",
+ "empty-field": "Um campo não foi preenchido",
+ "adduser-success": "Usuário adicionado com sucesso",
+ "no-permission": "Não há privilégios suficientes para acessar essa página",
+ "settings-updated": "As configurações foram atualizadas",
+ "debug-mode": "O modo de depuração está ativo!",
+ "value-invalid": "O valor {{1}} é inválido para opção {{0}} e foi ignorado",
+ "invalid-action": "Ação inválida: {{0}}",
+ "remote-timeout": "Não foi possível baixar o recurso {{0}} ({{1}})",
+ "remote-parse-failed": "Análise dos dados recebidos falhou ({{0}})",
+ "missing-file": "Não havia nenhum arquivo selecionado!",
+ "invalid-file": "O arquivo {{0}} não existe!",
+ "upload-complete": "Envio de {{0}} foi bem sucedido",
+ "upload-failed": "Envio falhou: {{0}}",
+ "config-activated": "Configuração {{0}} foi ativada",
+ "config-invalid": "Configuração com id {{0}} não existe",
+ "error-write": "Erro ao escrever {{0}}",
+ "error-read": "Erro ao ler {{0}}",
+ "error-archive": "Arquivo corrompido ou formato não suportado",
+ "error-rename": "Não foi possível renomear {{0}} em {{1}}",
+ "error-nodir": "O diretório {{0}} não existe.",
+ "empty-archive": "O arquivo não contém arquivos ou diretórios",
+ "error-extract": "Não foi possível descompactar arquivo {{0}} para {{1}}",
+ "module-added": "Módulo adicionado com sucesso",
+ "module-deleted": "Módulo {{0}} foi excluído",
+ "module-in-use": "Módulo {{0}} ainda é usado pela configuração {{1}}",
+ "taskmanager-error": "Falha ao conectar-se ao Gerenciador de Tarefas",
+ "taskmanager-format": "Gerenciador de Tarefas retornou dados inválidos",
+ "task-error": "Falha na execução: {{0}}",
+ "invalid-ip": "Nenhuma interface está configurada com o endereço {{0}}",
+ "news-set-success": "Notícia atualizada com sucesso",
+ "news-empty": "Não havia notícias no banco de dados",
+ "news-del-success": "Notícia excluída",
+ "reboot-unconfirmed": "Confirmação para reinicializar não foi confirmada"
+}
diff --git a/lang/pt/minilinux/download.json b/lang/pt/minilinux/download.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/minilinux/download.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/minilinux/filelist.json b/lang/pt/minilinux/filelist.json
new file mode 100644
index 00000000..caeb8a42
--- /dev/null
+++ b/lang/pt/minilinux/filelist.json
@@ -0,0 +1,9 @@
+{
+ "lang_canUpdate1":"Pelo menos um componente de",
+ "lang_canUpdate2":"pode ser atualizado. Para um bom funcionamento, recomenda-se manter todos os componentes atualizados.",
+ "lang_update":"Atualizar",
+ "lang_systemUpdated":"O sistema está atualizado.",
+ "lang_actual":"Atual",
+ "lang_outdated":"Desatualizado",
+ "lang_configurationPackageNotFound":"Pacote de configuração não encontrado!"
+}
diff --git a/lang/pt/page-adduser.json b/lang/pt/page-adduser.json
new file mode 100644
index 00000000..6d7524f4
--- /dev/null
+++ b/lang/pt/page-adduser.json
@@ -0,0 +1,8 @@
+{
+ "lang_createUser":"Criar Usuário",
+ "lang_username":"Nome de Usuário",
+ "lang_password":"Senha",
+ "lang_confirmation":"Confirmar Senha",
+ "lang_fullName":"Nome Completo",
+ "lang_telephone":"Telefone"
+}
diff --git a/lang/pt/page-baseconfig.json b/lang/pt/page-baseconfig.json
new file mode 100644
index 00000000..5669e5b9
--- /dev/null
+++ b/lang/pt/page-baseconfig.json
@@ -0,0 +1,7 @@
+{
+ "lang_basicConfiguration":"Configuração Básica",
+ "lang_help":"Ajuda",
+ "lang_close":"Fechar",
+ "lang_save":"Salvar",
+ "lang_reset":"Limpar"
+}
diff --git a/lang/pt/page-login.json b/lang/pt/page-login.json
new file mode 100644
index 00000000..3c40f982
--- /dev/null
+++ b/lang/pt/page-login.json
@@ -0,0 +1,8 @@
+{
+ "lang_enter":"Entrar",
+ "lang_username":"Nome de Usuário",
+ "lang_password":"Senha",
+ "lang_rememberID":"Lembrar Usuário",
+ "lang_login":"Entrar",
+ "lang_register":"Registrar"
+}
diff --git a/lang/pt/page-main-guest.json b/lang/pt/page-main-guest.json
new file mode 100644
index 00000000..d75b4c66
--- /dev/null
+++ b/lang/pt/page-main-guest.json
@@ -0,0 +1,5 @@
+{
+ "lang_welcome":"Bem-vindo",
+ "lang_introGuest":"Esta é a interface de administração da instalação local do bwLehrpool. Por favor, autentique-se para ajustar opções.",
+ "lang_login":"Entrar"
+}
diff --git a/lang/pt/page-main.json b/lang/pt/page-main.json
new file mode 100644
index 00000000..7bbf540d
--- /dev/null
+++ b/lang/pt/page-main.json
@@ -0,0 +1,10 @@
+{
+ "lang_welcome":"Bem-vindo",
+ "lang_intro":"Esta é a interface de configuração do bwLehrpool.",
+ "lang_vmLocationNotSet":"Uma localização para a máquina virtual ainda não foi escolhida.",
+ "lang_configure":"Configurar",
+ "lang_bootMenuWarning":"O menu de boot está desatualizado ou ainda não foi gerado.",
+ "lang_minilinuxMissing":"Arquivos importantes da instalação do minilinux estão faltando.",
+ "lang_systemConfigurationNotChosen":"Uma configuração de sistema ainda não foi escolhida.",
+ "lang_systemConfiguration":"Confguração do Sistema"
+}
diff --git a/lang/pt/page-minilinux.json b/lang/pt/page-minilinux.json
new file mode 100644
index 00000000..3d986230
--- /dev/null
+++ b/lang/pt/page-minilinux.json
@@ -0,0 +1,3 @@
+{
+ "lang_listObtained":"A lista é obtida..."
+}
diff --git a/lang/pt/page-news.json b/lang/pt/page-news.json
new file mode 100644
index 00000000..9e042920
--- /dev/null
+++ b/lang/pt/page-news.json
@@ -0,0 +1,12 @@
+{
+ "lang_newsIntro":"Aqui você tem a possibilidade de editar as novidades que são mostradas para os clientes do bwLehrpool.",
+ "lang_activeNews":"Novidades",
+ "lang_latestUpdate":"Última Atualização",
+ "lang_title":"Título",
+ "lang_content":"Conteúdo",
+ "lang_save":"Salvar",
+ "lang_newsOld":"Antigas",
+ "lang_date":"Data",
+ "lang_show":"Mostrar",
+ "lang_delete":"Excluir"
+}
diff --git a/lang/pt/page-remote-tgz-list.json b/lang/pt/page-remote-tgz-list.json
new file mode 100644
index 00000000..ed571f44
--- /dev/null
+++ b/lang/pt/page-remote-tgz-list.json
@@ -0,0 +1,5 @@
+{
+ "lang_systemConfiguration":"Confguração do Sistema",
+ "lang_centralConfiguration":"Configurações centrais disponíveis",
+ "lang_configurationPackageNotFound":"Pacote de configuração não encontrado!"
+}
diff --git a/lang/pt/page-sysconfig-main.json b/lang/pt/page-sysconfig-main.json
new file mode 100644
index 00000000..e40a277d
--- /dev/null
+++ b/lang/pt/page-sysconfig-main.json
@@ -0,0 +1,16 @@
+{
+ "lang_availableSystem":"Configurações de Sistema Disponíveis",
+ "lang_activate":"Ativar",
+ "lang_close":"Fechar",
+ "lang_systemConfigurationNotFound":"Nenhuma configuração de sistena encontrada. Crie uma nova configuração a partir dos módulos de configuração abaixo.",
+ "lang_systemConfigurationAlert":"Antes de criar uma configuração de sistema, você deve criar primeiro um módulo de configuração.",
+ "lang_newConfiguration":"Nova Configuração",
+ "lang_availableModules":"Módulos de Configuração Disponíveis",
+ "lang_show":"Mostrar",
+ "lang_delete":"Excluir",
+ "lang_configurationModuleNotFound":"Módulo de configuração não encontrado!",
+ "lang_newModule":"Novo Módulo",
+ "lang_systemConfiguration":"Confguração do Sistema",
+ "lang_helpSystemConfiguration":"A localização fundamental do sistema bwLehrpool é feita através de uma configuração de sistema. Isso inclui aspectos como o método de autenticação de usuários (por exemplo, Diretório Ativo, LDAP), configuração de impressora, diretórios home, etc. Uma configuração de sistema é composta por um ou mais módulo de configuração, que podem ser gerenciados na parte inferior da página.",
+ "lang_helpModuleConfiguration":"Módulos de configuração são as peças fundamentais para a criação de uma configuração de sistema. Aqui você pode criar tanto módulos genéricos através de nossa interface, tanto quanto criar módulos completamente customizados (é necessário conhecimento de Linux avançado)."
+}
diff --git a/lang/pt/page-syslog.json b/lang/pt/page-syslog.json
new file mode 100644
index 00000000..37dbdf3a
--- /dev/null
+++ b/lang/pt/page-syslog.json
@@ -0,0 +1,10 @@
+{
+ "lang_clientLog":"Log dos Clientes",
+ "lang_filter":"Filtro",
+ "lang_not":"não",
+ "lang_go":"Ir",
+ "lang_when":"Quando",
+ "lang_client":"Cliente",
+ "lang_event":"Evento",
+ "lang_details":"Detalhes"
+}
diff --git a/lang/pt/page-vmstore.json b/lang/pt/page-vmstore.json
new file mode 100644
index 00000000..669297fe
--- /dev/null
+++ b/lang/pt/page-vmstore.json
@@ -0,0 +1,15 @@
+{
+ "lang_vmLocation":"Localização da VM",
+ "lang_vmLocationChoose":"Por favor, escolha aonde as imagens das máquinas virtuais serão armazenadas.",
+ "lang_intern":"Iterna",
+ "lang_noAdditionalInformation":"Nenhuma configuração adicional necessária",
+ "lang_readWrite":"Acesso Leitura/Escrita",
+ "lang_username":"Nome de Usuário",
+ "lang_password":"Senha",
+ "lang_readOnly":"Acesso Somente Leitura",
+ "lang_save":"Salvar",
+ "lang_close":"Fechar",
+ "lang_vmLocationHelp1":"Para fins de teste, as VMs podem ser armazenados diretamente no servidor satélite. No entanto, se você operar o vmdk do satélite entregue por favor lembre-se que você tem apenas cerca de 100 GB de memória.",
+ "lang_vmLocationHelp2":"Em operação, faz sentido para este usar um armazenamento de rede de alto desempenho. Este armazenamento de rede pode ser integrado através de NFS ou CIFS / SMB. Em qualquer caso, deve-se assegurar de que o servidor de satélite tenha acesso de gravação para este armazenamento de rede para poder adicionar uma nova máquina virtual. Ao utilizar NFSv3 este pode ser configurado com base em IP, para o uso de CIFS / SMB, você pode acessar as divulgações de dados que lhe permitiria escrever.",
+ "lang_vmLocationHelp3":"Os clientes bwLehrpool só precisam ter acesso de leitura ao armazenamento de rede (e por razões de segurança, realmente só pode ler). Em CIFS / SMB Você pode fazer isso mais facilmente, permitindo o acesso a visitantes sem senha com acesso de leitura."
+}
diff --git a/lang/pt/pagenav.json b/lang/pt/pagenav.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/pagenav.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/serversetup/ipaddress.json b/lang/pt/serversetup/ipaddress.json
new file mode 100644
index 00000000..a14a05e7
--- /dev/null
+++ b/lang/pt/serversetup/ipaddress.json
@@ -0,0 +1,7 @@
+{
+ "lang_bootAddress":"Endereço Boot do Servidor",
+ "lang_chooseIP":"Por favor, selecione o endereço IP que o servidor do cliente utilizará realizar o boot.",
+ "lang_active":"Ativo",
+ "lang_set":"Conjunto",
+ "lang_bootHint":"O menu de boot deve ser recriado após alterar o endereço IP. Geralmente isso é feito automaticamente, mas o processo também pode ser acionado manualmente na seção do menu de boot."
+}
diff --git a/lang/pt/serversetup/ipxe.json b/lang/pt/serversetup/ipxe.json
new file mode 100644
index 00000000..e7cf87ce
--- /dev/null
+++ b/lang/pt/serversetup/ipxe.json
@@ -0,0 +1,15 @@
+{
+ "lang_bootMenu":"Menu de Boot",
+ "lang_bootInfo":"Aqui ajustes podem ser feitos na aparência do menu de boot.",
+ "lang_bootBehavior":"Comportamento Padrão de Boot",
+ "lang_localHDD":"HDD Local",
+ "lang_menuDisplayTime":"Tempo de Exibição do Menu",
+ "lang_seconds":"Segundos",
+ "lang_menuCustom":"Menu Adicional Customizado",
+ "lang_bootMenuCreate":"Criar Menu de Boot",
+ "lang_menuCustomHint1":"Aqui você tem a oportunidade de adicionar seu próprio código de menu para o menu PXE exibido, por exemplo, para se referir a outro servidor PXE. O formato corresponde ao formato de menu syslinux.",
+ "lang_menuCustomHint2":"Você pode criar uma ou mais entradas. Se você quiser criar uma entrada que é iniciada automaticamente quando o usuário faz uma seleção, atribua como",
+ "lang_menuCustomHint3":"e selecione como o comportamento de boot padrão também my-entry.",
+ "lang_example":"Exemplo",
+ "lang_close":"Fechar"
+}
diff --git a/lang/pt/sysconfig/ad-checkconnection.json b/lang/pt/sysconfig/ad-checkconnection.json
new file mode 100644
index 00000000..c3b59241
--- /dev/null
+++ b/lang/pt/sysconfig/ad-checkconnection.json
@@ -0,0 +1,5 @@
+{
+ "lang_connectionWait":"A conexão com o servidor AD especificado agora está checada. Por favor, aguarde um momento.",
+ "lang_back":"Voltar",
+ "lang_skip":"Pular"
+}
diff --git a/lang/pt/sysconfig/ad-finish.json b/lang/pt/sysconfig/ad-finish.json
new file mode 100644
index 00000000..1dd6b6d5
--- /dev/null
+++ b/lang/pt/sysconfig/ad-finish.json
@@ -0,0 +1,7 @@
+{
+ "lang_adStarted":"O AD-proxy está configurado e começou ...",
+ "lang_generateModule":"Gerar Módulo",
+ "lang_restartWizard":"Reiniciar Assistente",
+ "lang_to":"Para",
+ "lang_systemConfiguration":"Confguração do Sistema"
+}
diff --git a/lang/pt/sysconfig/ad-start.json b/lang/pt/sysconfig/ad-start.json
new file mode 100644
index 00000000..fb8da5df
--- /dev/null
+++ b/lang/pt/sysconfig/ad-start.json
@@ -0,0 +1,15 @@
+{
+ "lang_adText1":"Para configurar a autenticação de usuário por meio do Active Directory, um usuário dedicado é necessário no AD próximo ao endereço do servidor, que é endereçado pelo AD.",
+ "lang_adText2":"Este usuário não precisa de direitos especiais, você pode seguir este usuário para escapar da segurança e dos direitos para fazer logon. O usuário só precisa ter permissões suficientes para executar a ligação LDAP no AD, e procurar por usuários.",
+ "lang_adText3":"A seguir o nome distinto do usuário deve ser especificado. Você pode determinar isso pelo programa de linha de comando dsquery em um controlador de domínio como a seguinte chamada:",
+ "lang_adText4":"Depois de inserir todos os dados necessários na próxima etapa, ela verifica se a comunicação é possível com o AD.",
+ "lang_searchBase":"Base de Pesquisa",
+ "lang_bindDN":"Vincular DN",
+ "lang_password":"Senha",
+ "lang_next":"Próximo",
+ "lang_userDirectory":"Diretório de Usuário",
+ "lang_userDirectoryInfo1":"Opcional: Se os clientes devem incorporar um diretório separado (diretório home, diretório de usuário) de um servidor para o usuário, digite aqui o formato em notação UNC, por exemplo,",
+ "lang_userDirectoryInfo2":"%s é um marcador para o nome de login do usuário.",
+ "lang_userDirectoryInfo3":"O diretório é carregado com as mesmas credenciais que o usuário especifica quando entra. (Isto é, não há suporte Kerberos, etc)",
+ "lang_close":"Fechar"
+}
diff --git a/lang/pt/sysconfig/cfg-finish.json b/lang/pt/sysconfig/cfg-finish.json
new file mode 100644
index 00000000..51257ad2
--- /dev/null
+++ b/lang/pt/sysconfig/cfg-finish.json
@@ -0,0 +1,4 @@
+{
+ "lang_configurationSuccess":"A configuração foi criada com sucesso.",
+ "lang_configurationActive":"Ativar configuração"
+}
diff --git a/lang/pt/sysconfig/cfg-start.json b/lang/pt/sysconfig/cfg-start.json
new file mode 100644
index 00000000..6ced354f
--- /dev/null
+++ b/lang/pt/sysconfig/cfg-start.json
@@ -0,0 +1,7 @@
+{
+ "lang_name":"Nome",
+ "lang_configuration":"Configuração",
+ "lang_configurationChoose":"Por favor, selecione qual os módulos serão usados ​​para esta configuração.",
+ "lang_new":"Nova",
+ "lang_next":"Próxiimo"
+}
diff --git a/lang/pt/sysconfig/custom-filelist.json b/lang/pt/sysconfig/custom-filelist.json
new file mode 100644
index 00000000..1a08055a
--- /dev/null
+++ b/lang/pt/sysconfig/custom-filelist.json
@@ -0,0 +1,3 @@
+{
+ "lang_back":"Voltar"
+}
diff --git a/lang/pt/sysconfig/custom-fileselect.json b/lang/pt/sysconfig/custom-fileselect.json
new file mode 100644
index 00000000..a1e35f35
--- /dev/null
+++ b/lang/pt/sysconfig/custom-fileselect.json
@@ -0,0 +1,5 @@
+{
+ "lang_moduleName":"Nome do Módulo",
+ "lang_checkFileContent":"Aqui você tem a possibilidade de verificar o conteúdo do arquivo novamente.",
+ "lang_next":"Próximo"
+}
diff --git a/lang/pt/sysconfig/custom-upload.json b/lang/pt/sysconfig/custom-upload.json
new file mode 100644
index 00000000..2b351e6f
--- /dev/null
+++ b/lang/pt/sysconfig/custom-upload.json
@@ -0,0 +1,7 @@
+{
+ "lang_customModuleInfo1":"Sobre um módulo personalizado, é possível adicionar arquivos arbitrários para um sistema Linux que é inicializado clientes. Para isso, um arquivo pode ser carregado através de uma estrutura do sistema de arquivos que é extraído desta forma 1:1 no Linux inicializado.",
+ "lang_customModuleInfo2":"Exemplo: Se o arquivo enviado for etc/examplo.conf, este arquivo estará localizado em /etc/examplo.conf para um cliente inicializado.",
+ "lang_file":"Arquivo",
+ "lang_supportedFiles":"Formatos de Arquivos Suportados",
+ "lang_upload":"Carregar"
+}
diff --git a/lang/pt/sysconfig/start.json b/lang/pt/sysconfig/start.json
new file mode 100644
index 00000000..b28ba61b
--- /dev/null
+++ b/lang/pt/sysconfig/start.json
@@ -0,0 +1,4 @@
+{
+ "lang_moduleChoose":"Por favor, selecione qual tipo de módulo de configuração que você deseja criar.",
+ "lang_add":"Adicionar"
+}
diff --git a/lang/pt/systemstatus/_page.json b/lang/pt/systemstatus/_page.json
new file mode 100644
index 00000000..9134bd8d
--- /dev/null
+++ b/lang/pt/systemstatus/_page.json
@@ -0,0 +1,8 @@
+{
+ "lang_space":"Espaço",
+ "lang_services":"Serviços",
+ "lang_addressConfiguration":"Configuração do Endereço",
+ "lang_system":"Sistema",
+ "lang_maintenance":"Manutenção",
+ "lang_iAmSure":"Sim, eu tenho certeza"
+}
diff --git a/lang/pt/systemstatus/addresses.json b/lang/pt/systemstatus/addresses.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/systemstatus/addresses.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/systemstatus/diskstat.json b/lang/pt/systemstatus/diskstat.json
new file mode 100644
index 00000000..ab4e84be
--- /dev/null
+++ b/lang/pt/systemstatus/diskstat.json
@@ -0,0 +1,6 @@
+{
+ "lang_systemPartition":"Partição do Sistema",
+ "lang_capacity":"Capacidade",
+ "lang_vmStore":"Armazenamento da VM",
+ "lang_vmStoreError":"Erro ao determinar o espaço em disco disponível no local da VM. Por favor, verifique a configuração."
+}
diff --git a/lang/pt/systemstatus/services.json b/lang/pt/systemstatus/services.json
new file mode 100644
index 00000000..0967ef42
--- /dev/null
+++ b/lang/pt/systemstatus/services.json
@@ -0,0 +1 @@
+{}
diff --git a/lang/pt/systemstatus/systeminfo.json b/lang/pt/systemstatus/systeminfo.json
new file mode 100644
index 00000000..26208b7d
--- /dev/null
+++ b/lang/pt/systemstatus/systeminfo.json
@@ -0,0 +1,15 @@
+{
+ "lang_uptimeOS":"Tempo de Atividade do SO",
+ "lang_cpuLoad":"Carga da CPU",
+ "lang_average":"Média",
+ "lang_onlyOS":"Apenas SO",
+ "lang_logicCPUs":"CPUs Lógicas",
+ "lang_notDetermined":"Não foi possível determinar",
+ "lang_ramUsage":"Uso da RAM",
+ "lang_total":"Total",
+ "lang_free":"Livre",
+ "lang_swapUsage":"Uso do swap",
+ "lang_occupied":"Ocupado",
+ "lang_attention":"Atenção!",
+ "lang_swapWarning":"Swap de memória está sendo usado. Isso pode ser uma indicação de que o servidor de satélite não tem memória física suficiente disponível. No caso de problemas de desempenho ou instabilidade do servidor você deve considerar equipar o servidor com mais memória RAM."
+}
diff --git a/lang/pt/vmstore/mount.json b/lang/pt/vmstore/mount.json
new file mode 100644
index 00000000..6ad7ae73
--- /dev/null
+++ b/lang/pt/vmstore/mount.json
@@ -0,0 +1,5 @@
+{
+ "lang_vmLocationConfiguration":"Localização da VM é configurada",
+ "lang_configure":"configurar",
+ "lang_back":"Voltar"
+}
diff --git a/templates/main-menu-login.html b/templates/main-menu-login.html
index 55766622..e9459e90 100644
--- a/templates/main-menu-login.html
+++ b/templates/main-menu-login.html
@@ -27,11 +27,17 @@
</li>
<li><a href="?do=News">{{lang_news}}</a></li>
<li><a href="?do=SystemStatus">Status</a></li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><img src="lang/{{lang}}/flag.png"><b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li class="dropdown-header">{{lang_language}}</li>
+ <li><a href="index.php?lang=de"><img src="lang/de/flag.png"> Deutsch</a></li>
+ <li><a href="index.php?lang=en"><img src="lang/en/flag.png"> English</a></li>
+ <li><a href="index.php?lang=pt"><img src="lang/pt/flag.png"> Português</a></li>
+ </ul>
+ </li>
</ul>
<ul class="nav navbar-nav navbar-right">
- <li><a href="lang/lang.php?lang=english"><img src="lang/english.png"></a></li>
- <li><a href="lang/lang.php?lang=german"><img src="lang/german.png"></a></li>
- <li><a href="lang/lang.php?lang=portuguese"><img src="lang/portuguese.png"></a></li>
<li><a href="?do=Session&amp;action=login">{{lang_login}}</a></li>
</ul>
</div>
diff --git a/templates/main-menu-logout.html b/templates/main-menu-logout.html
index 6bee802d..eab8bfa1 100644
--- a/templates/main-menu-logout.html
+++ b/templates/main-menu-logout.html
@@ -27,11 +27,17 @@
</li>
<li><a href="?do=News">{{lang_news}}</a></li>
<li><a href="?do=SystemStatus">Status</a></li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle" data-toggle="dropdown"><img src="lang/{{lang}}/flag.png"><b class="caret"></b></a>
+ <ul class="dropdown-menu">
+ <li class="dropdown-header">{{lang_language}}</li>
+ <li><a href="index.php?lang=de"><img src="lang/de/flag.png"> Deutsch</a></li>
+ <li><a href="index.php?lang=en"><img src="lang/en/flag.png"> English</a></li>
+ <li><a href="index.php?lang=pt"><img src="lang/pt/flag.png"> Português</a></li>
+ </ul>
+ </li>
</ul>
<ul class="nav navbar-nav navbar-right">
- <li><a href="lang/lang.php?lang=english"><img src="lang/english.png"></a></li>
- <li><a href="lang/lang.php?lang=german"><img src="lang/german.png"></a></li>
- <li><a href="lang/lang.php?lang=portuguese"><img src="lang/portuguese.png"></a></li>
<li><a href="?do=Session&amp;action=logout&amp;token={{{token}}}"><b>{{user}}</b> ({{lang_logout}})</a></li>
</ul>
</div>
diff --git a/test.php b/test.php
new file mode 100644
index 00000000..7dc49f6d
--- /dev/null
+++ b/test.php
@@ -0,0 +1,5 @@
+<?php
+
+ $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
+ print_r($_COOKIE)
+?>