From 05e32cd6787f3f5a48192a5604c5bd3e8e3defc7 Mon Sep 17 00:00:00 2001 From: Horus3 Date: Mon, 23 Mar 2015 23:17:51 +0100 Subject: German translation. --- handler.go | 44 ++++++++++++++----------- main.go | 1 + server.go | 4 ++- utilities.go | 27 ++++++++++++++++ views/about_de.html | 54 +++++++++++++++++++++++++++++++ views/header.html | 3 -- views/howto_de.html | 43 ++++++++++++++++++++++++ views/index_de.html | 51 +++++++++++++++++++++++++++++ views/login.html | 45 -------------------------- views/navbar.html | 3 ++ views/navbar_de.html | 45 ++++++++++++++++++++++++++ views/password_de.html | 76 +++++++++++++++++++++++++++++++++++++++++++ views/register_de.html | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++ views/server_de.html | 80 +++++++++++++++++++++++++++++++++++++++++++++ views/user_de.html | 43 ++++++++++++++++++++++++ 15 files changed, 540 insertions(+), 67 deletions(-) create mode 100644 views/about_de.html create mode 100644 views/howto_de.html create mode 100644 views/index_de.html delete mode 100644 views/login.html create mode 100644 views/navbar_de.html create mode 100644 views/password_de.html create mode 100644 views/register_de.html create mode 100644 views/server_de.html create mode 100644 views/user_de.html diff --git a/handler.go b/handler.go index c99138e..f84dda0 100644 --- a/handler.go +++ b/handler.go @@ -16,18 +16,7 @@ func IndexHandler(w http.ResponseWriter, r *http.Request) { flash.Success = session.Flashes("success") session.Save(r, w) - /* - index := mainTempl.Lookup("index.html") - - err = index.ExecuteTemplate(w, "index.html", flash) - if err != nil { - log.Println(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - */ - - err = ExecTemplate("index.html", w, flash) + err = ExecTemplate("index", w, r, flash) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -47,7 +36,7 @@ func RegisterHandler(w http.ResponseWriter, r *http.Request) { flash.Success = session.Flashes("success") session.Save(r, w) - err = ExecTemplate("register.html", w, flash) + err = ExecTemplate("register", w, r, flash) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -115,7 +104,7 @@ func AboutHandler(w http.ResponseWriter, r *http.Request) { flash.Success = session.Flashes("success") session.Save(r, w) - err = ExecTemplate("about.html", w, flash) + err = ExecTemplate("about", w, r, flash) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -135,7 +124,7 @@ func ServerHandler(w http.ResponseWriter, r *http.Request) { flash.Success = session.Flashes("success") session.Save(r, w) - err = ExecTemplate("server.html", w, flash) + err = ExecTemplate("server", w, r, flash) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -155,7 +144,7 @@ func HowtoHandler(w http.ResponseWriter, r *http.Request) { flash.Success = session.Flashes("success") session.Save(r, w) - err = ExecTemplate("howto.html", w, flash) + err = ExecTemplate("howto", w, r, flash) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -175,7 +164,7 @@ func UserHandler(w http.ResponseWriter, r *http.Request) { flash.Success = session.Flashes("success") session.Save(r, w) - err = ExecTemplate("user.html", w, flash) + err = ExecTemplate("user", w, r, flash) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -195,7 +184,7 @@ func PasswordHandler(w http.ResponseWriter, r *http.Request) { flash.Success = session.Flashes("success") session.Save(r, w) - err = ExecTemplate("password.html", w, flash) + err = ExecTemplate("password", w, r, flash) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return @@ -246,3 +235,22 @@ func ChangePasswordHandler(w http.ResponseWriter, r *http.Request) { session.Save(r, w) http.Redirect(w, r, "/user", 302) } + +func ChangeLocaleHandler(w http.ResponseWriter, r *http.Request) { + err := r.ParseForm() + if err != nil { + log.Panic(err) + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + locale := r.URL.Query().Get("to") + + if len(locale) == 0 { + http.Redirect(w, r, "/", 302) + return + } + cookie := http.Cookie{Name: "lang", Value: locale} + http.SetCookie(w, &cookie) + http.Redirect(w, r, "/", 302) +} diff --git a/main.go b/main.go index c3222c6..5104d6e 100644 --- a/main.go +++ b/main.go @@ -42,6 +42,7 @@ func main() { r.HandleFunc("/password", PasswordHandler) r.HandleFunc("/changePassword", ChangePasswordHandler).Methods("POST") r.PathPrefix("/static/").Handler(http.StripPrefix("/static/", http.FileServer(http.Dir("./static")))) + r.HandleFunc("/locale", ChangeLocaleHandler) http.Handle("/", r) diff --git a/server.go b/server.go index dc95c51..5b29e50 100644 --- a/server.go +++ b/server.go @@ -47,7 +47,9 @@ func CreateNewEntry(email, password string) error { return nil } -func ExecTemplate(template string, w http.ResponseWriter, flash Flash) error { +func ExecTemplate(template string, w http.ResponseWriter, r *http.Request, flash Flash) error { + l := GetLanguage(r) + template = template + l + ".html" index := mainTempl.Lookup(template) err := index.ExecuteTemplate(w, template, flash) diff --git a/utilities.go b/utilities.go index 60423dc..4bf0b92 100644 --- a/utilities.go +++ b/utilities.go @@ -4,6 +4,9 @@ import ( "crypto/md5" "fmt" "io" + "log" + "net/http" + "strings" ) // Hashs and returns a string (md5) @@ -26,3 +29,27 @@ func CompareStrings(strs ...string) bool { } return true } + +func GetLanguage(r *http.Request) string { + c, err := r.Cookie("lang") + if err != nil { + log.Println("Cookie: lang", err) + } else { + if c.Value != "" { + if c.Value == "de" { + return "_" + c.Value + } else { + return "" + } + } + } + if len(r.Header["Accept-Language"]) == 0 { + return "" + } + lang := r.Header["Accept-Language"][0] + l := strings.TrimSpace(strings.Split(lang, ",")[0]) + if l == "de" { + return "_" + l + } + return "" +} diff --git a/views/about_de.html b/views/about_de.html new file mode 100644 index 0000000..bc7e970 --- /dev/null +++ b/views/about_de.html @@ -0,0 +1,54 @@ +{{template "header.html"}} +{{template "navbar_de.html"}} +{{template "alert.html" .}} + + + +
Wir hosten Ihre E-Mails, so wie GMail oder Yahoo mail. Aber ohne Werbung und ohne Ihre Daten zu verkaufen.
+Libremail ist jung, frei (ohne kommerzielle Absicht) und Open Source. Wenn Sie uns nicht vertrauen, setzen Sie sich es selber auf!
+
+ Außerdem legen wir Wert auf Sicherheit. Lesen Sie hier mehr.
Libremail liegt auf einem sicherem Server und wird von Maximilian Möhring betrieben. +
+Unser IMAP Login Server erzwingt TLS 1.0, 1.1 oder 1.2 mit Perfect Forward Secrecy.
+
Falls Sie interessiert sind, nur diese SSL ciphers sind zugelassen: ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
+
In Bezug auf eingehende E-Mails, das erzwingen von absoluter Sicherheit könnte unter Umständen einen entfernen Klienten daran hindern E-Mails zuzustellen. Deswegen überlauben wir für unseren SMTP Server immer noch das SSLv3 Protokoll. Auf der anderen Seite, SMTP war sowieso nie durch POODLE betroffen.
+
+
+ Beachtung: Weil Libremail auf unserem Server liegt können wir keine wahre Ende-zu-Ende Verschlüsselung erzwingen. Wir empfehlen aber trotzdem den Gebrauch von GnuPG.
+
Weil es Spaß macht und es nützlich ist. Libremail ist nicht dafür gebaut worden um Geld zu machen. +
+Schauen Sie hier nach.
++ ES WIRD KEINERLEI GARANTIE IN IRGENDEINER ART UND WEISE GEWÄHRLEISTET, SEI ES ERREICHBARKEIT, BACKUPS ODER MISSBRAUCH. JEDER NUTZER IST FÜR SEIN EIGENES VERHALTEN VERANTWORTLICH. +
+Um eine neue E-Mail Adresse auszufüllen folgen Sie diesem link.
+
+ Sie können email.iamfabulous.de oder user.iamfabulous.de als Basis nehmen, zum Beispiel 'post@email.iamfabulous.de' oder 'tidyupmyroom@user.iamfabulous.de' sind gültige Einträge.
+
+ Probieren Sie es aus. Wenn die Adresse schon vergeben ist, wird Ihnen eine Fehlermeldung mit mehr Informationen gezeigt.
+
Es ist möglich Libremail auch mit anderen Domains zu verwenden. Wenn Sie eine besitzen, dann können wir das E-Mail hosting für sie übernehmen.
+
+ Verlangt wird ein gültiger MX Eintrag in Ihrem DNS. MX bedeutet 'mail exchange' und ist ein spezieller Eintrag welcher auf den verantwortlichen Mail Server zeigt. Der korrekte Eintrag lautet mx.iamfabulous.de.
+
Am einfachsten ist es, wenn Sie unser Webmail benutzen. Sie finden es hier .
+
+ Benutzen Sie ihre volle E-Mail Adresse und ihr Passwort als Login.
+
+
+ Wenn Sie Ihren eigenen Klienten (Smartphone oder Thunderbird etc.) benutzen wollen, können Sie hier für Details zur Verbindung sehen.
+
+ Sie können einfach und bequem Ihr Passwort durch diese Webseite ändern. Sie benötigen dafür noch ihr altes Passwort.
+
+ Folgen Sie dafür einfach diesem Link.
+
Genervt from Spam? Sie brauchen nur ein E-Mail Adresse? Oder Sie besitzen eine eigene Domain und möchten darüber E-Mails versenden?
+ Sie sind genau richtig!
+
Komplett kostenlos und werbefrei!
Nur 2 Klicke nötig
+ Wähle Sie eine freie Adresse und registrieren Sie sich.
Wir nutzen moderne Verschlüsselungsalgorithmen und erzwingen eine sichere Kommunikation.
+ +Sie besitzen eine Domain? Wir kümmerns uns gerne um Ihre E-Mail setup. Setzen Sie ihr DNS und bekommen Sie alles auf einmal.
+ +Wir nutzen nur freie und Open Source software. Sie können auch alles selber hosten.
+ +Folgen Sie meinem Blog und finden Sie mehr Projekte, an denen ich arbeite.
+ +