diff --git a/files_to_translate.txt b/files_to_translate.txt index 3a2f07f7f..a777efbbf 100644 --- a/files_to_translate.txt +++ b/files_to_translate.txt @@ -1 +1,2 @@ -HTTPInterface/LoginPage.cpp \ No newline at end of file +HTTPInterface/LoginPage.cpp +model/Session.cpp \ No newline at end of file diff --git a/src/LOCALE/de_DE.mo b/src/LOCALE/de_DE.mo index 6228ab9e6..2d88410dc 100644 Binary files a/src/LOCALE/de_DE.mo and b/src/LOCALE/de_DE.mo differ diff --git a/src/LOCALE/de_DE.po b/src/LOCALE/de_DE.po index cf0547d0d..91e6c125f 100644 --- a/src/LOCALE/de_DE.po +++ b/src/LOCALE/de_DE.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-12 15:55+0100\n" -"PO-Revision-Date: 2019-11-12 15:57+0100\n" +"POT-Creation-Date: 2019-11-16 09:16+0100\n" +"PO-Revision-Date: 2019-11-16 09:52+0100\n" "Language-Team: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -18,43 +18,105 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "Language: de_DE\n" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:46 -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:62 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:53 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:69 msgid "Login" -msgstr "Anmeldung" +msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:46 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:53 msgid "E-Mail or password isn't right, please try again!" -msgstr "E-Mail oder Passwort nicht korrekt, bitte versuche es erneut!" +msgstr "" +"E-Mail und Passwort Kombination stimmen nicht, bitte versuche es erneut. " -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:49 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:56 msgid "Account" msgstr "Konto" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:49 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:56 msgid "E-Mail Address not checked, do you already get one?" -msgstr "E-Mail Adresse wurde noch nicht bestätigt, hast du schon eine E-Mail erhalten?" +msgstr "" +"E-Mail Adresse wurde noch nicht überprüft. Hast du schon in deine E-Mails " +"geschaut? Bitte schau auch in dein Spam-Verzeichnis nach." -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:62 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:69 msgid "Username and password are needed!" -msgstr "Benutzernamen und Passwort müssen angegeben werden!" +msgstr "E-Mail und Passwort werden benötigt!" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:78 -msgid "Please give you email and password for login." -msgstr "Bitte gebe deine Zugangsdaten ein um dich einzuloggen." - -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:80 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:112 +#: model/Session.cpp:138 model/Session.cpp:162 msgid "E-Mail" -msgstr "E-Mail" +msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:84 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:115 msgid "Password" msgstr "Passwort" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:90 -msgid "You haven't any account yet? Please follow the link to create one." -msgstr "Du hast noch keinen Account? Dann folge dem Link um dir einen anzulegen." +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:117 +msgid " Login " +msgstr "" -#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:91 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:119 +msgid "You haven't any account yet? Please follow the link to create one." +msgstr "Du hast noch kein Konto?" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:120 msgid "Create New Account" -msgstr "Neuen Account anlegen" +msgstr "Anmelden" + +#: model/Session.cpp:130 +msgid "Vorname" +msgstr "" + +#: model/Session.cpp:130 model/Session.cpp:134 +msgid "" +"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen " +"<>&;" +msgstr "" + +#: model/Session.cpp:134 +msgid "Nachname" +msgstr "" + +#: model/Session.cpp:138 +msgid "Bitte gebe eine gültige E-Mail Adresse an." +msgstr "" + +#: model/Session.cpp:162 +msgid "Für diese E-Mail Adresse gibt es bereits einen Account" +msgstr "" + +#: model/Session.cpp:210 +msgid "Gradido: E-Mail Verification" +msgstr "" + +#: model/Session.cpp:280 model/Session.cpp:287 model/Session.cpp:558 +msgid "E-Mail Verification" +msgstr "" + +#: model/Session.cpp:280 +msgid "" +"Der Code stimmt nicht, bitte überprüfe ihn nochmal oder " +"registriere dich erneut oder wende dich an den Server-Admin" +msgstr "" + +#: model/Session.cpp:287 +msgid "Falscher Code für aktiven Login" +msgstr "" + +#: model/Session.cpp:420 model/Session.cpp:671 +msgid "Benutzer" +msgstr "" + +#: model/Session.cpp:420 +msgid "" +"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und " +"versuche es nochmal." +msgstr "" + +#: model/Session.cpp:558 +msgid "Konnte keinen passenden Account finden." +msgstr "" + +#: model/Session.cpp:671 +msgid "Kein gültiger Benutzer, bitte logge dich erneut ein." +msgstr "" diff --git a/src/LOCALE/en_GB.mo b/src/LOCALE/en_GB.mo new file mode 100644 index 000000000..1df441dac Binary files /dev/null and b/src/LOCALE/en_GB.mo differ diff --git a/src/LOCALE/en_GB.po b/src/LOCALE/en_GB.po new file mode 100644 index 000000000..dd84f64f6 --- /dev/null +++ b/src/LOCALE/en_GB.po @@ -0,0 +1,121 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-11-16 09:16+0100\n" +"PO-Revision-Date: 2019-11-16 09:51+0100\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Poedit 2.2.4\n" +"Last-Translator: \n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"Language: en_GB\n" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:53 +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:69 +msgid "Login" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:53 +msgid "E-Mail or password isn't right, please try again!" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:56 +msgid "Account" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:56 +msgid "E-Mail Address not checked, do you already get one?" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:69 +msgid "Username and password are needed!" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:112 +#: model/Session.cpp:138 model/Session.cpp:162 +msgid "E-Mail" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:115 +msgid "Password" +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:117 +msgid " Login " +msgstr "" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:119 +msgid "You haven't any account yet? Please follow the link to create one." +msgstr "Don't have an account yet?" + +#: F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp:120 +msgid "Create New Account" +msgstr "Sign Up" + +#: model/Session.cpp:130 +msgid "Vorname" +msgstr "Firstname" + +#: model/Session.cpp:130 model/Session.cpp:134 +msgid "" +"Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen " +"<>&;" +msgstr "Please enter your Name. At least 3 Character, without <>& and ;" + +#: model/Session.cpp:134 +msgid "Nachname" +msgstr "Lastname" + +#: model/Session.cpp:138 +msgid "Bitte gebe eine gültige E-Mail Adresse an." +msgstr "Please enter a valid email." + +#: model/Session.cpp:162 +msgid "Für diese E-Mail Adresse gibt es bereits einen Account" +msgstr "This email has an account already." + +#: model/Session.cpp:210 +msgid "Gradido: E-Mail Verification" +msgstr "" + +#: model/Session.cpp:280 model/Session.cpp:287 model/Session.cpp:558 +msgid "E-Mail Verification" +msgstr "" + +#: model/Session.cpp:280 +msgid "" +"Der Code stimmt nicht, bitte überprüfe ihn nochmal oder " +"registriere dich erneut oder wende dich an den Server-Admin" +msgstr "" +"The email verification code isn't correct. Please check at spell errors " +"and try again or ask the server admin." + +#: model/Session.cpp:287 +msgid "Falscher Code für aktiven Login" +msgstr "Wrong Code for active Login." + +#: model/Session.cpp:420 model/Session.cpp:671 +msgid "Benutzer" +msgstr "User" + +#: model/Session.cpp:420 +msgid "" +"Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und " +"versuche es nochmal." +msgstr "Error by deleting the account. Please re-login and try again." + +#: model/Session.cpp:558 +msgid "Konnte keinen passenden Account finden." +msgstr "This Account didn't seem to exist." + +#: model/Session.cpp:671 +msgid "Kein gültiger Benutzer, bitte logge dich erneut ein." +msgstr "Invalid User, please re-login." diff --git a/src/cpp/Gradido_LoginServer.cpp b/src/cpp/Gradido_LoginServer.cpp index fc497c47b..2abf55f3a 100644 --- a/src/cpp/Gradido_LoginServer.cpp +++ b/src/cpp/Gradido_LoginServer.cpp @@ -100,7 +100,8 @@ int Gradido_LoginServer::main(const std::vector& args) { // ********** logging ************************************ std::string log_Path = "/var/log/grd_login/"; -#ifdef _WIN32 || _WIN64 +//#ifdef _WIN32 +#if defined(_WIN32) || defined(_WIN64) log_Path = "./"; #endif @@ -130,7 +131,12 @@ int Gradido_LoginServer::main(const std::vector& args) // *************** load from config ******************************************** std::string cfg_Path = Poco::Path::config() + "grd_login/"; - loadConfiguration(cfg_Path + "grd_login.properties"); + try { + loadConfiguration(cfg_Path + "grd_login.properties"); + } + catch (Poco::Exception& ex) { + errorLog.error("error loading config: %s", ex.displayText()); + } unsigned short port = (unsigned short)config().getInt("HTTPServer.port", 9980); unsigned short json_port = (unsigned short)config().getInt("JSONServer.port", 1201); diff --git a/src/cpp/HTTPInterface/CheckEmailPage.cpp b/src/cpp/HTTPInterface/CheckEmailPage.cpp index 483e27b21..ef21375fd 100644 --- a/src/cpp/HTTPInterface/CheckEmailPage.cpp +++ b/src/cpp/HTTPInterface/CheckEmailPage.cpp @@ -59,7 +59,7 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; - responseStream << "\n"; + responseStream << "\n"; responseStream << "Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -110,7 +110,7 @@ void CheckEmailPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/CheckTransactionPage.cpp b/src/cpp/HTTPInterface/CheckTransactionPage.cpp index d75e2a8a8..fe9cff5e6 100644 --- a/src/cpp/HTTPInterface/CheckTransactionPage.cpp +++ b/src/cpp/HTTPInterface/CheckTransactionPage.cpp @@ -93,7 +93,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request, responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -144,7 +144,7 @@ void CheckTransactionPage::handleRequest(Poco::Net::HTTPServerRequest& request, responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/ConfigPage.cpp b/src/cpp/HTTPInterface/ConfigPage.cpp index 9bd7d854a..257a9afc8 100644 --- a/src/cpp/HTTPInterface/ConfigPage.cpp +++ b/src/cpp/HTTPInterface/ConfigPage.cpp @@ -31,7 +31,7 @@ void ConfigPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net: responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -82,7 +82,7 @@ void ConfigPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net: responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/DashboardPage.cpp b/src/cpp/HTTPInterface/DashboardPage.cpp index 197094852..73fa4913a 100644 --- a/src/cpp/HTTPInterface/DashboardPage.cpp +++ b/src/cpp/HTTPInterface/DashboardPage.cpp @@ -47,7 +47,7 @@ void DashboardPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::N responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -98,7 +98,7 @@ void DashboardPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::N responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/Error500Page.cpp b/src/cpp/HTTPInterface/Error500Page.cpp index 78fdadb2f..54759e514 100644 --- a/src/cpp/HTTPInterface/Error500Page.cpp +++ b/src/cpp/HTTPInterface/Error500Page.cpp @@ -46,7 +46,7 @@ void Error500Page::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -97,7 +97,7 @@ void Error500Page::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/LoginPage.cpp b/src/cpp/HTTPInterface/LoginPage.cpp index b87318b59..881dbe05a 100644 --- a/src/cpp/HTTPInterface/LoginPage.cpp +++ b/src/cpp/HTTPInterface/LoginPage.cpp @@ -13,6 +13,7 @@ #include "Poco/Net/HTTPServerParams.h" #include "Poco/Logger.h" #include "../SingletonManager/SessionManager.h" +#include "../SingletonManager/LanguageManager.h" #line 1 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" @@ -27,10 +28,14 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: if (_compressResponse) response.set("Content-Encoding", "gzip"); Poco::Net::HTMLForm form(request, request.stream()); -#line 15 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" +#line 16 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" const char* pageName = "Login"; auto sm = SessionManager::getInstance(); + auto lm = LanguageManager::getInstance(); + + auto lang = chooseLanguage(request); + auto langCatalog = lm->getFreeCatalog(lang); if(!form.empty()) { auto email = form.get("login-email", ""); @@ -40,7 +45,9 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: auto session = sm->getSession(request); if(!session) { session = sm->getNewSession(); - + session->setLanguageCatalog(langCatalog); + // get language + // first check url, second check language header // for debugging client ip auto client_ip = request.clientAddress(); std::string clientIpString = "client ip: "; @@ -59,10 +66,10 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: switch(userState) { case USER_EMPTY: case USER_PASSWORD_INCORRECT: - addError(new Error(gettext("Login"), gettext("E-Mail or password isn't right, please try again!"))); + addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("E-Mail or password isn't right, please try again!"))); break; case USER_EMAIL_NOT_ACTIVATED: - session->addError(new Error(gettext("Account"), gettext("E-Mail Address not checked, do you already get one?"))); + session->addError(new Error(langCatalog->gettext("Account"), langCatalog->gettext("E-Mail Address not checked, do you already get one?"))); response.redirect(ServerConfig::g_serverPath + "/checkEmail"); return; case USER_NO_KEYS: @@ -75,7 +82,7 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: } } else { - addError(new Error(gettext("Login"), gettext("Username and password are needed!"))); + addError(new Error(langCatalog->gettext("Login"), langCatalog->gettext("Username and password are needed!"))); } } else { @@ -94,64 +101,26 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); responseStream << "\n"; - responseStream << "\n"; responseStream << "\n"; - responseStream << "\n"; + responseStream << "css/loginServer/style.css\">\n"; responseStream << "\n"; responseStream << "\n"; responseStream << "
\n"; responseStream << "\t

Login Server in Entwicklung

\n"; - responseStream << "\t

Alpha 0.5.1

\n"; + responseStream << "\t

Alpha 0.6.1

\n"; responseStream << "
\n"; responseStream << ""; // end include header.cpsp responseStream << "\n"; - responseStream << "
\n"; - responseStream << "\t
\n"; - responseStream << "\t\t

Login

\n"; - responseStream << "\t\t"; -#line 75 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << " \"logo\"\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "\t\t "; +#line 90 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" responseStream << ( getErrorsHtml() ); responseStream << "\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\tLogin\n"; - responseStream << "\t\t\t

"; -#line 78 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" - responseStream << ( gettext("Please give you email and password for login.") ); + responseStream << "

\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " gettext("E-Mail") ); + responseStream << "\" />\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " gettext("Password") ); + responseStream << "\" />\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "

"; +#line 119 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" + responseStream << ( langCatalog->gettext("You haven't any account yet? Please follow the link to create one.") ); responseStream << "

\n"; - responseStream << "\t\t\t

\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t

\n"; - responseStream << "\t\t\t

\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t\t\n"; - responseStream << "\t\t\t

\n"; - responseStream << "\t\t\t\n"; - responseStream << "\t\t
\n"; - responseStream << "\t\t\n"; - responseStream << "\t\t

"; -#line 90 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" - responseStream << ( gettext("You haven't any account yet? Please follow the link to create one.") ); - responseStream << "

\n"; - responseStream << "\t\t"; -#line 91 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" - responseStream << ( gettext("Create New Account") ); + responseStream << " "; +#line 120 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\login.cpsp" + responseStream << ( langCatalog->gettext("Create New Account") ); responseStream << "\n"; - responseStream << "\t
\n"; - responseStream << "\t\n"; - responseStream << "\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << " \n"; + responseStream << "
\n"; + responseStream << "

© Ripple Inc 2019

\n"; + responseStream << "
\n"; + responseStream << " \n"; // begin include footer.cpsp responseStream << "\t
\n"; responseStream << "\t\t\t"; @@ -208,6 +211,10 @@ void LoginPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Net:: responseStream << ( mTimeProfiler.string() ); responseStream << "\n"; responseStream << "\t
\n"; + responseStream << "\t\n"; responseStream << "\n"; responseStream << ""; // end include footer.cpsp diff --git a/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp b/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp index bfc25a0bc..bf6899205 100644 --- a/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp +++ b/src/cpp/HTTPInterface/PageRequestMessagedHandler.cpp @@ -1,2 +1,33 @@ #include "PageRequestMessagedHandler.h" +#include "Poco/Net/HTTPServerRequest.h" + +const Poco::RegularExpression PageRequestMessagedHandler::mDetectLanguageGET("^/(?:[a-zA-Z0-9_-]*)/(en|de)"); + +Languages PageRequestMessagedHandler::chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string post_lang /* = std::string("") */) +{ + + // from Form + Languages lang = LanguageManager::languageFromString(post_lang); + if (lang == LANG_NULL) { + // from URL + std::string uri = request.getURI(); + std::string lang_str; + mDetectLanguageGET.extract(uri, lang_str); + if (lang_str.size() > 0) { + lang = LanguageManager::languageFromString(lang_str); + } + else { + // from Header + /* + $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2); + $acceptLang = ['fr', 'it', 'en']; + $lang = in_array($lang, $acceptLang) ? $lang : 'en'; + */ + std::string accept_languages = request.get("HTTP_ACCEPT_LANGUAGE", ""); + printf("accept header: %s\n", accept_languages.data()); + } + } + + return lang; +} \ No newline at end of file diff --git a/src/cpp/HTTPInterface/PageRequestMessagedHandler.h b/src/cpp/HTTPInterface/PageRequestMessagedHandler.h index c1078f95e..e7450998a 100644 --- a/src/cpp/HTTPInterface/PageRequestMessagedHandler.h +++ b/src/cpp/HTTPInterface/PageRequestMessagedHandler.h @@ -1,12 +1,14 @@ #ifndef PAGE_REQUEST_MESSAGE_HANDLER_INCLUDED #define PAGE_REQUEST_MESSAGE_HANDLER_INCLUDED -//#include "../model/Session.h" +#include "../model/Session.h" #include "../lib/ErrorList.h" #include "../lib/Profiler.h" + +#include "../SingletonManager/LanguageManager.h" + #include "Poco/Net/HTTPRequestHandler.h" - - +#include "Poco/RegularExpression.h" class PageRequestMessagedHandler : public Poco::Net::HTTPRequestHandler, public ErrorList { @@ -17,6 +19,11 @@ public: //Poco::Net::HTTPRequestHandler* createRequestHandler(const Poco::Net::HTTPServerRequest& request); protected: + static const Poco::RegularExpression mDetectLanguageGET; + + inline const char* gettext(Session* session, const char* text) { if (!session || !session->getLanguageCatalog()) return text; return session->getLanguageCatalog()->gettext(text); } + Languages chooseLanguage(Poco::Net::HTTPServerRequest& request, std::string post_lang = std::string("")); + Profiler mTimeProfiler; }; diff --git a/src/cpp/HTTPInterface/PassphrasePage.cpp b/src/cpp/HTTPInterface/PassphrasePage.cpp index f1627d243..1dc132681 100644 --- a/src/cpp/HTTPInterface/PassphrasePage.cpp +++ b/src/cpp/HTTPInterface/PassphrasePage.cpp @@ -82,7 +82,7 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "\n"; responseStream << "\n"; responseStream << "\n"; - responseStream << "\n"; + responseStream << "\n"; responseStream << "Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -133,7 +133,7 @@ void PassphrasePage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco:: responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/RegisterPage.cpp b/src/cpp/HTTPInterface/RegisterPage.cpp index ab0636ba9..543b32bd2 100644 --- a/src/cpp/HTTPInterface/RegisterPage.cpp +++ b/src/cpp/HTTPInterface/RegisterPage.cpp @@ -65,7 +65,7 @@ void RegisterPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -116,7 +116,7 @@ void RegisterPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/SaveKeysPage.cpp b/src/cpp/HTTPInterface/SaveKeysPage.cpp index 644e389f4..86a4ced7a 100644 --- a/src/cpp/HTTPInterface/SaveKeysPage.cpp +++ b/src/cpp/HTTPInterface/SaveKeysPage.cpp @@ -100,7 +100,7 @@ void SaveKeysPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -151,7 +151,7 @@ void SaveKeysPage::handleRequest(Poco::Net::HTTPServerRequest& request, Poco::Ne responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h b/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h index 00afaff8c..d5b53b363 100644 --- a/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h +++ b/src/cpp/HTTPInterface/SessionHTTPRequestHandler.h @@ -5,13 +5,18 @@ #include "PageRequestMessagedHandler.h" + class SessionHTTPRequestHandler : public PageRequestMessagedHandler { public: SessionHTTPRequestHandler(Session* session) : mSession(session) {} - + protected: Session* mSession; + + + inline const char* gettext(const char* text) { if (!mSession || !mSession->getLanguageCatalog()) return text; return mSession->getLanguageCatalog()->gettext(text); } + }; diff --git a/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp b/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp index f278382ed..e38e7c829 100644 --- a/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp +++ b/src/cpp/HTTPInterface/UpdateUserPasswordPage.cpp @@ -70,7 +70,7 @@ void UpdateUserPasswordPage::handleRequest(Poco::Net::HTTPServerRequest& request responseStream << "<html>\n"; responseStream << "<head>\n"; responseStream << "<meta charset=\"UTF-8\">\n"; - responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n"; + responseStream << "<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, shrink-to-fit=no\">\n"; responseStream << "<title>Gradido Login Server: "; #line 9 "F:\\Gradido\\gradido_login_server\\src\\cpsp\\header.cpsp" responseStream << ( pageName ); @@ -121,7 +121,7 @@ void UpdateUserPasswordPage::handleRequest(Poco::Net::HTTPServerRequest& request responseStream << "<body>\n"; responseStream << "<div class=\"versionstring dev-info\">\n"; responseStream << "\t<p class=\"grd_small\">Login Server in Entwicklung</p>\n"; - responseStream << "\t<p class=\"grd_small\">Alpha 0.5.1</p>\n"; + responseStream << "\t<p class=\"grd_small\">Alpha 0.6.0</p>\n"; responseStream << "</div>\n"; responseStream << "<!--<nav class=\"grd-left-bar expanded\" data-topbar role=\"navigation\">\n"; responseStream << "\t<div class=\"grd-left-bar-section\">\n"; diff --git a/src/cpp/SingletonManager/LanguageManager.cpp b/src/cpp/SingletonManager/LanguageManager.cpp index 1d67c48c9..7d2bcb4ce 100644 --- a/src/cpp/SingletonManager/LanguageManager.cpp +++ b/src/cpp/SingletonManager/LanguageManager.cpp @@ -1,9 +1,24 @@ #include "LanguageManager.h" +#include "Poco/Path.h" +#include "Poco/File.h" + +#include <fstream> + LanguageCatalog::LanguageCatalog(Languages lang) : mReferenceCount(1), mCatalog(nullptr), mThisLanguage(lang) { // TODO: Catalog init code + std::string path = Poco::Path::config() + "grd_login/LOCALE/" + LanguageManager::filenameForLanguage(lang) + ".po"; + auto file = Poco::File(path); + if (file.exists()) { + + std::ifstream ifs(path + LanguageManager::filenameForLanguage(lang) + ".po"); + std::string po_file{ std::istreambuf_iterator<char>{ifs}, std::istreambuf_iterator<char>() }; + + mCatalog = new spirit_po::default_catalog(spirit_po::default_catalog::from_range(po_file)); + } + //spirit_po::default_catalog cat{ spirit_po::default_catalog::from_range(po_file) }; } LanguageCatalog::~LanguageCatalog() @@ -71,13 +86,34 @@ void LanguageManager::returnCatalog(LanguageCatalog* catalog) unlock(); } +std::string LanguageManager::filenameForLanguage(Languages lang) +{ + switch (lang) { + case LANG_DE: return "de_DE"; + case LANG_EN: return "en_GB"; + } + return "en_GB"; +} + +Languages LanguageManager::languageFromString(const std::string& language_key) +{ + if (language_key == "de") { + return LANG_DE; + } + if (language_key == "en") { + return LANG_EN; + } + return LANG_NULL; +} + Poco::AutoPtr<LanguageCatalog> LanguageManager::getFreeCatalog(Languages lang) { if (lang >= LANG_COUNT) { //printf("[LanguageManager::getFreeCatalog] invalid language: %d\n", lang); - mLogging.error("[LanguageManager::getFreeCatalog] invalid language: %d", lang); - return nullptr; + mLogging.information("[LanguageManager::getFreeCatalog] invalid language: %d, set to default (en_GB)", (int)lang); + //return nullptr; + lang = LANG_EN; } lock(); if (mFreeCatalogs[lang].size() > 0) { diff --git a/src/cpp/SingletonManager/LanguageManager.h b/src/cpp/SingletonManager/LanguageManager.h index 882e91de8..a40667edd 100644 --- a/src/cpp/SingletonManager/LanguageManager.h +++ b/src/cpp/SingletonManager/LanguageManager.h @@ -21,7 +21,8 @@ enum Languages { LANG_DE, LANG_EN, - LANG_COUNT + LANG_COUNT, + LANG_NULL }; class LanguageCatalog : protected UniLib::lib::MultithreadContainer @@ -37,7 +38,7 @@ public: // catalog overload api - inline const char * gettext(const char * msgid) { return mCatalog->gettext(msgid); } + inline const char * gettext(const char * msgid) { if (!mCatalog) return msgid; return mCatalog->gettext(msgid); } inline const char * ngettext(const char * msgid, const char * msgid_plural, spirit_po::uint plural) { return mCatalog->ngettext(msgid, msgid_plural, plural); } @@ -48,7 +49,7 @@ public: return mCatalog->npgettext(msgctxt, msgid, msgid_plural, plural); } - inline std::string gettext_str(const std::string & msgid) { return mCatalog->gettext_str(msgid); } + inline std::string gettext_str(const std::string & msgid) { if (!mCatalog) return msgid; return mCatalog->gettext_str(msgid); } inline std::string ngettext_str(const std::string & msgid, const std::string & msgid_plural, spirit_po::uint plural) { return mCatalog->ngettext_str(msgid, msgid_plural, plural); } @@ -77,6 +78,8 @@ public: Poco::AutoPtr<LanguageCatalog> getFreeCatalog(Languages lang); + static std::string filenameForLanguage(Languages lang); + static Languages languageFromString(const std::string& language_key); protected: LanguageManager(); diff --git a/src/cpp/model/Session.cpp b/src/cpp/model/Session.cpp index 9f1b2b8e7..e49b65c88 100644 --- a/src/cpp/model/Session.cpp +++ b/src/cpp/model/Session.cpp @@ -127,15 +127,15 @@ bool Session::createUser(const std::string& first_name, const std::string& last_ Profiler usedTime; auto sm = SessionManager::getInstance(); if (!sm->isValid(first_name, VALIDATE_NAME)) { - addError(new Error("Vorname", "Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen <>&;")); + addError(new Error(gettext("Vorname"), gettext("Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen <>&;"))); return false; } if (!sm->isValid(last_name, VALIDATE_NAME)) { - addError(new Error("Nachname", "Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen <>&;")); + addError(new Error(gettext("Nachname"), gettext("Bitte gebe einen Namen an. Mindestens 3 Zeichen, keines folgender Zeichen <>&;"))); return false; } if (!sm->isValid(email, VALIDATE_EMAIL)) { - addError(new Error("E-Mail", "Bitte gebe eine gültige E-Mail Adresse an.")); + addError(new Error(gettext("E-Mail"), gettext("Bitte gebe eine gültige E-Mail Adresse an."))); return false; } if (!sm->checkPwdValidation(password, this)) { @@ -159,7 +159,7 @@ bool Session::createUser(const std::string& first_name, const std::string& last_ select << "SELECT email from users where email = ?;", useRef(email); try { if (select.execute() > 0) { - addError(new Error("E-Mail", "Für diese E-Mail Adresse gibt es bereits einen Account")); + addError(new Error(gettext("E-Mail"), gettext("Für diese E-Mail Adresse gibt es bereits einen Account"))); return false; } } @@ -192,12 +192,13 @@ bool Session::createUser(const std::string& first_name, const std::string& last_ writeEmailVerification->setFinishCommand(new SessionStateUpdateCommand(SESSION_STATE_EMAIL_VERIFICATION_WRITTEN, this)); writeEmailVerification->scheduleTask(writeEmailVerification); - printf("LastName: %s\n", last_name.data()); + /*printf("LastName: %s\n", last_name.data()); for (int i = 0; i < last_name.size(); i++) { char c = last_name.data()[i]; - printf("%d ", c); + //printf("%d ", c); } - printf("\n\n"); + //printf("\n\n"); + */ // depends on writeUser because need user_id, write email verification into db auto message = new Poco::Net::MailMessage; @@ -206,7 +207,7 @@ bool Session::createUser(const std::string& first_name, const std::string& last_ message->setContentType(mt); message->addRecipient(Poco::Net::MailRecipient(Poco::Net::MailRecipient::PRIMARY_RECIPIENT, email)); - message->setSubject("Gradido: E-Mail Verification"); + message->setSubject(gettext("Gradido: E-Mail Verification")); std::stringstream ss; ss << "Hallo " << first_name << " " << last_name << "," << std::endl << std::endl; ss << "Du oder jemand anderes hat sich soeben mit dieser E-Mail Adresse bei Gradido registriert. " << std::endl; @@ -276,14 +277,14 @@ bool Session::updateEmailVerification(Poco::UInt64 emailVerificationCode) em->sendErrorsAsEmail(); } if (!updated_rows) { - addError(new Error("E-Mail Verification", "Der Code stimmt nicht, bitte überprüfe ihn nochmal oder registriere dich erneut oder wende dich an den Server-Admin")); + addError(new Error(gettext("E-Mail Verification"), gettext("Der Code stimmt nicht, bitte überprüfe ihn nochmal oder registriere dich erneut oder wende dich an den Server-Admin"))); printf("[%s] time: %s\n", funcName, usedTime.string().data()); return false; } } else { - addError(new Error("E-Mail Verification", "Falscher Code für aktiven Login")); + addError(new Error(gettext("E-Mail Verification"), gettext("Falscher Code für aktiven Login"))); printf("[%s] time: %s\n", funcName, usedTime.string().data()); return false; } @@ -416,12 +417,34 @@ bool Session::deleteUser() bResult = mSessionUser->deleteFromDB(); } if(!bResult) { - addError(new Error("Benutzer", "Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und versuche es nochmal.")); + addError(new Error(gettext("Benutzer"), gettext("Fehler beim Löschen des Accounts. Bitte logge dich erneut ein und versuche es nochmal."))); } return bResult; } +void Session::setLanguage(Languages lang) +{ + lock(); + if (mLanguageCatalog.isNull() || mLanguageCatalog->getLanguage() != lang) { + auto lm = LanguageManager::getInstance(); + mLanguageCatalog = lm->getFreeCatalog(lang); + } + unlock(); +} + +Languages Session::getLanguage() +{ + Languages lang = LANG_NULL; + lock(); + if (!mLanguageCatalog.isNull()) { + lang = mLanguageCatalog->getLanguage(); + } + unlock(); + return lang; +} + + /* SESSION_STATE_CRYPTO_KEY_GENERATED, SESSION_STATE_USER_WRITTEN, @@ -532,7 +555,7 @@ bool Session::loadFromEmailVerificationCode(Poco::UInt64 emailVerificationCode) em->sendErrorsAsEmail(); } if (rowCount < 1) { - addError(new Error("E-Mail Verification", "Konnte keinen passenden Account finden.")); + addError(new Error(gettext("E-Mail Verification"), gettext("Konnte keinen passenden Account finden."))); return false; } @@ -645,7 +668,7 @@ bool Session::generateKeys(bool savePrivkey, bool savePassphrase) validUser = false; } if (!validUser) { - addError(new Error("Benutzer", "Kein gültiger Benutzer, bitte logge dich erneut ein.")); + addError(new Error(gettext("Benutzer"), gettext("Kein gültiger Benutzer, bitte logge dich erneut ein."))); return false; } // delete passphrase after all went well diff --git a/src/cpp/model/Session.h b/src/cpp/model/Session.h index 235e6fc97..c317c3a30 100644 --- a/src/cpp/model/Session.h +++ b/src/cpp/model/Session.h @@ -16,6 +16,8 @@ #include "../lib/MultithreadContainer.h" #include "../tasks/ProcessingTransaction.h" +#include "../SingletonManager/LanguageManager.h" + #include "Poco/Thread.h" #include "Poco/Types.h" #include "Poco/DateTime.h" @@ -105,6 +107,12 @@ public: void finalizeTransaction(bool sign, bool reject); inline size_t getProcessingTransactionCount() { lock(); auto ret = mProcessingTransactions.size(); unlock(); return ret; } + inline LanguageCatalog* getLanguageCatalog() { return mLanguageCatalog.isNull() ? nullptr : mLanguageCatalog; } + void setLanguage(Languages lang); + inline void setLanguageCatalog(Poco::AutoPtr<LanguageCatalog> languageCatalog) { mLanguageCatalog = languageCatalog; } + Languages getLanguage(); + inline const char* gettext(const char* text) { if (mLanguageCatalog.isNull()) return text; return mLanguageCatalog->gettext(text); } + protected: void updateTimeout(); inline void setHandle(int newHandle) { mHandleId = newHandle; } @@ -129,6 +137,8 @@ private: bool mActive; std::list<Poco::AutoPtr<ProcessingTransaction>> mProcessingTransactions; Poco::AutoPtr<ProcessingTransaction> mCurrentActiveProcessingTransaction; + + Poco::AutoPtr<LanguageCatalog> mLanguageCatalog; }; diff --git a/src/cpsp/footer.cpsp b/src/cpsp/footer.cpsp index 138607f4d..42fcef91c 100644 --- a/src/cpsp/footer.cpsp +++ b/src/cpsp/footer.cpsp @@ -1,5 +1,6 @@ <div class="grd-time-used dev-info"> <%= mTimeProfiler.string() %> </div> + <script src="<%= ServerConfig::g_php_serverPath %>js/core.js"></script> </body> </html> \ No newline at end of file diff --git a/src/cpsp/header.cpsp b/src/cpsp/header.cpsp index b6306c541..a8c766b82 100644 --- a/src/cpsp/header.cpsp +++ b/src/cpsp/header.cpsp @@ -5,52 +5,14 @@ <html> <head> <meta charset="UTF-8"> -<meta name="viewport" content="width=device-width, initial-scale=1.0"> +<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <title>Gradido Login Server: <%= pageName %> - - - +

Login Server in Entwicklung

-

Alpha 0.5.1

+

Alpha 0.6.1