From 7081046b5f3665860b65eb0c0c12eb77a3994727 Mon Sep 17 00:00:00 2001
From: a1012112796 <1012112796@qq.com>
Date: Wed, 2 Jun 2021 03:12:50 +0800
Subject: [PATCH] Fix language switch for install page (#16043)

Signed-off-by: a1012112796 <1012112796@qq.com>
---
 routers/install.go        | 9 +++++++++
 routers/routes/install.go | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/routers/install.go b/routers/install.go
index 30340e99cd..6c460a887d 100644
--- a/routers/install.go
+++ b/routers/install.go
@@ -21,6 +21,7 @@ import (
 	"code.gitea.io/gitea/modules/log"
 	"code.gitea.io/gitea/modules/setting"
 	"code.gitea.io/gitea/modules/templates"
+	"code.gitea.io/gitea/modules/translation"
 	"code.gitea.io/gitea/modules/user"
 	"code.gitea.io/gitea/modules/util"
 	"code.gitea.io/gitea/modules/web"
@@ -61,6 +62,8 @@ func InstallInit(next http.Handler) http.Handler {
 				"DbOptions":     setting.SupportedDatabases,
 				"i18n":          locale,
 				"Language":      locale.Language(),
+				"Lang":          locale.Language(),
+				"AllLangs":      translation.AllLangs(),
 				"CurrentURL":    setting.AppSubURL + req.URL.RequestURI(),
 				"PageStartTime": startTime,
 				"TmplLoadTimes": func() string {
@@ -69,6 +72,12 @@ func InstallInit(next http.Handler) http.Handler {
 				"PasswordHashAlgorithms": models.AvailableHashAlgorithms,
 			},
 		}
+		for _, lang := range translation.AllLangs() {
+			if lang.Lang == locale.Language() {
+				ctx.Data["LangName"] = lang.Name
+				break
+			}
+		}
 		ctx.Req = context.WithContext(req, &ctx)
 		next.ServeHTTP(resp, ctx.Req)
 	})
diff --git a/routers/routes/install.go b/routers/routes/install.go
index 2a2c8f1d2b..0918da1a4b 100644
--- a/routers/routes/install.go
+++ b/routers/routes/install.go
@@ -103,7 +103,7 @@ func InstallRoutes() *web.Route {
 	r.Get("/", routers.Install)
 	r.Post("/", web.Bind(forms.InstallForm{}), routers.InstallPost)
 	r.NotFound(func(w http.ResponseWriter, req *http.Request) {
-		http.Redirect(w, req, setting.AppURL, 302)
+		http.Redirect(w, req, setting.AppURL, http.StatusFound)
 	})
 	return r
 }