mirror of
https://github.com/go-gitea/gitea
synced 2025-08-08 18:48:21 +00:00
Refactor i18n, use Locale to provide i18n/translation related functions (#18648)
* remove unnecessary web context data fields, and unify the i18n/translation related functions to `Locale` * in development, show an error if a translation key is missing * remove the unnecessary loops `for _, lang := range translation.AllLangs()` for every request, which improves the performance slightly * use `ctx.Locale.Language()` instead of `ctx.Data["Lang"].(string)` * add more comments about how the Locale/LangType fields are used
This commit is contained in:
@@ -71,25 +71,16 @@ func Init(next http.Handler) http.Handler {
|
||||
Render: rnd,
|
||||
Session: session.GetSession(req),
|
||||
Data: map[string]interface{}{
|
||||
"i18n": locale,
|
||||
"Title": locale.Tr("install.install"),
|
||||
"PageIsInstall": true,
|
||||
"DbTypeNames": getDbTypeNames(),
|
||||
"i18n": locale,
|
||||
"Language": locale.Language(),
|
||||
"Lang": locale.Language(),
|
||||
"AllLangs": translation.AllLangs(),
|
||||
"CurrentURL": setting.AppSubURL + req.URL.RequestURI(),
|
||||
"PageStartTime": startTime,
|
||||
|
||||
"PasswordHashAlgorithms": user_model.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)
|
||||
})
|
||||
|
@@ -255,7 +255,7 @@ func renderBlame(ctx *context.Context, blameParts []git.BlamePart, commitNames m
|
||||
commitCnt++
|
||||
|
||||
// User avatar image
|
||||
commitSince := timeutil.TimeSinceUnix(timeutil.TimeStamp(commit.Author.When.Unix()), ctx.Data["Lang"].(string))
|
||||
commitSince := timeutil.TimeSinceUnix(timeutil.TimeStamp(commit.Author.When.Unix()), ctx.Locale.Language())
|
||||
|
||||
var avatar string
|
||||
if commit.User != nil {
|
||||
|
@@ -29,7 +29,7 @@ func GetContentHistoryOverview(ctx *context.Context) {
|
||||
return
|
||||
}
|
||||
|
||||
lang := ctx.Data["Lang"].(string)
|
||||
lang := ctx.Locale.Language()
|
||||
editedHistoryCountMap, _ := issuesModel.QueryIssueContentHistoryEditedCountMap(db.DefaultContext, issue.ID)
|
||||
ctx.JSON(http.StatusOK, map[string]interface{}{
|
||||
"i18n": map[string]interface{}{
|
||||
@@ -55,17 +55,17 @@ func GetContentHistoryList(ctx *context.Context) {
|
||||
// render history list to HTML for frontend dropdown items: (name, value)
|
||||
// name is HTML of "avatar + userName + userAction + timeSince"
|
||||
// value is historyId
|
||||
lang := ctx.Data["Lang"].(string)
|
||||
lang := ctx.Locale.Language()
|
||||
var results []map[string]interface{}
|
||||
for _, item := range items {
|
||||
var actionText string
|
||||
if item.IsDeleted {
|
||||
actionTextDeleted := i18n.Tr(lang, "repo.issues.content_history.deleted")
|
||||
actionTextDeleted := ctx.Locale.Tr("repo.issues.content_history.deleted")
|
||||
actionText = "<i data-history-is-deleted='1'>" + actionTextDeleted + "</i>"
|
||||
} else if item.IsFirstCreated {
|
||||
actionText = i18n.Tr(lang, "repo.issues.content_history.created")
|
||||
actionText = ctx.Locale.Tr("repo.issues.content_history.created")
|
||||
} else {
|
||||
actionText = i18n.Tr(lang, "repo.issues.content_history.edited")
|
||||
actionText = ctx.Locale.Tr("repo.issues.content_history.edited")
|
||||
}
|
||||
timeSinceText := timeutil.TimeSinceUnix(item.EditedUnix, lang)
|
||||
results = append(results, map[string]interface{}{
|
||||
|
Reference in New Issue
Block a user