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" .}} + + + +
+
+
+

Über Libremail

+
+
+

Was tun wir?

+

Wir hosten Ihre E-Mails, so wie GMail oder Yahoo mail. Aber ohne Werbung und ohne Ihre Daten zu verkaufen.

+
+

Wieso Libremail?

+

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.

+
+

Von wem?

+

Libremail liegt auf einem sicherem Server und wird von Maximilian Möhring betrieben. +

+
+

Wie sicher ist es?

+

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. +

+
+

Warum? Wie verdient Ihr Geld?

+

Weil es Spaß macht und es nützlich ist. Libremail ist nicht dafür gebaut worden um Geld zu machen. +

+
+

Wie erstelle ich eine neue Adresse?

+

Schauen Sie hier nach.

+
+

Garantie

+

+ 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. +

+
+
+
+
+{{template "footer.html"}} diff --git a/views/header.html b/views/header.html index b41727d..c461e82 100644 --- a/views/header.html +++ b/views/header.html @@ -14,8 +14,5 @@ - diff --git a/views/howto_de.html b/views/howto_de.html new file mode 100644 index 0000000..3f1ae53 --- /dev/null +++ b/views/howto_de.html @@ -0,0 +1,43 @@ +{{template "header.html"}} +{{template "navbar_de.html"}} +{{template "alert.html" .}} + +
+
+
+

How to

+
+

Neue Adresse

+

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. +

+
+

Eigene Domain

+

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. +

+
+

Login

+

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. +

+
+

Passwort ändern

+

+ 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. +

+
+
+
+
+{{template "footer.html"}} diff --git a/views/index_de.html b/views/index_de.html new file mode 100644 index 0000000..810bae4 --- /dev/null +++ b/views/index_de.html @@ -0,0 +1,51 @@ +{{template "header.html"}} +{{template "navbar_de.html"}} +{{template "alert.html" .}} + +
+
+

Libremail

+

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!

+

Lese mehr »

+
+
+
+
+
+

Schnell & Einfach

+

Nur 2 Klicke nötig
+ Wähle Sie eine freie Adresse und registrieren Sie sich.

+

Registrieren »

+
+
+

Sicher

+

Wir nutzen moderne Verschlüsselungsalgorithmen und erzwingen eine sichere Kommunikation.

+

Über uns »

+
+
+

Features

+

Alles was man braucht, IMAP, POP3 und Webmail inklusive.

+

Features »

+
+
+
+
+

Eigene Domain

+

Sie besitzen eine Domain? Wir kümmerns uns gerne um Ihre E-Mail setup. Setzen Sie ihr DNS und bekommen Sie alles auf einmal.

+

Lese wie es geht »

+
+
+

Open Source

+

Wir nutzen nur freie und Open Source software. Sie können auch alles selber hosten.

+

Lies über uns »

+
+
+

Lese mehr...

+

Folgen Sie meinem Blog und finden Sie mehr Projekte, an denen ich arbeite.

+

Folge mir »

+
+
+
+{{template "footer.html"}} diff --git a/views/login.html b/views/login.html deleted file mode 100644 index ee22eca..0000000 --- a/views/login.html +++ /dev/null @@ -1,45 +0,0 @@ -{{template "header.html"}} -{{template "navbar.html"}} -{{template "alert.html" .}} - - -
-
-
-
- - -
- Login! -
- - -
- -
- -
-
- - -
- -
- -
-
- - -
- -
- -
-
- -
-
- -
-
-{{template "footer.html"}} diff --git a/views/navbar.html b/views/navbar.html index a4a595d..78658d4 100644 --- a/views/navbar.html +++ b/views/navbar.html @@ -25,6 +25,9 @@