mirror of
https://github.com/go-gitea/gitea
synced 2025-07-29 13:48:36 +00:00
Refactor locale&string&template related code (#29165)
Clarify when "string" should be used (and be escaped), and when "template.HTML" should be used (no need to escape) And help PRs like #29059 , to render the error messages correctly.
This commit is contained in:
@@ -100,7 +100,7 @@ func List(ctx *context.Context) {
|
||||
}
|
||||
wf, err := model.ReadWorkflow(bytes.NewReader(content))
|
||||
if err != nil {
|
||||
workflow.ErrMsg = ctx.Locale.Tr("actions.runs.invalid_workflow_helper", err.Error())
|
||||
workflow.ErrMsg = ctx.Locale.TrString("actions.runs.invalid_workflow_helper", err.Error())
|
||||
workflows = append(workflows, workflow)
|
||||
continue
|
||||
}
|
||||
@@ -115,7 +115,7 @@ func List(ctx *context.Context) {
|
||||
continue
|
||||
}
|
||||
if !allRunnerLabels.Contains(ro) {
|
||||
workflow.ErrMsg = ctx.Locale.Tr("actions.runs.no_matching_online_runner_helper", ro)
|
||||
workflow.ErrMsg = ctx.Locale.TrString("actions.runs.no_matching_online_runner_helper", ro)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
@@ -168,8 +168,8 @@ func ViewPost(ctx *context_module.Context) {
|
||||
Link: run.RefLink(),
|
||||
}
|
||||
resp.State.Run.Commit = ViewCommit{
|
||||
LocaleCommit: ctx.Tr("actions.runs.commit"),
|
||||
LocalePushedBy: ctx.Tr("actions.runs.pushed_by"),
|
||||
LocaleCommit: ctx.Locale.TrString("actions.runs.commit"),
|
||||
LocalePushedBy: ctx.Locale.TrString("actions.runs.pushed_by"),
|
||||
ShortSha: base.ShortSha(run.CommitSHA),
|
||||
Link: fmt.Sprintf("%s/commit/%s", run.Repo.Link(), run.CommitSHA),
|
||||
Pusher: pusher,
|
||||
@@ -194,7 +194,7 @@ func ViewPost(ctx *context_module.Context) {
|
||||
resp.State.CurrentJob.Title = current.Name
|
||||
resp.State.CurrentJob.Detail = current.Status.LocaleString(ctx.Locale)
|
||||
if run.NeedApproval {
|
||||
resp.State.CurrentJob.Detail = ctx.Locale.Tr("actions.need_approval_desc")
|
||||
resp.State.CurrentJob.Detail = ctx.Locale.TrString("actions.need_approval_desc")
|
||||
}
|
||||
resp.State.CurrentJob.Steps = make([]*ViewJobStep, 0) // marshal to '[]' instead fo 'null' in json
|
||||
resp.Logs.StepsLog = make([]*ViewStepLog, 0) // marshal to '[]' instead fo 'null' in json
|
||||
|
@@ -104,9 +104,9 @@ func CherryPickPost(ctx *context.Context) {
|
||||
message := strings.TrimSpace(form.CommitSummary)
|
||||
if message == "" {
|
||||
if form.Revert {
|
||||
message = ctx.Tr("repo.commit.revert-header", sha)
|
||||
message = ctx.Locale.TrString("repo.commit.revert-header", sha)
|
||||
} else {
|
||||
message = ctx.Tr("repo.commit.cherry-pick-header", sha)
|
||||
message = ctx.Locale.TrString("repo.commit.cherry-pick-header", sha)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -126,7 +126,7 @@ func setCsvCompareContext(ctx *context.Context) {
|
||||
return CsvDiffResult{nil, ""}
|
||||
}
|
||||
|
||||
errTooLarge := errors.New(ctx.Locale.Tr("repo.error.csv.too_large"))
|
||||
errTooLarge := errors.New(ctx.Locale.TrString("repo.error.csv.too_large"))
|
||||
|
||||
csvReaderFromCommit := func(ctx *markup.RenderContext, blob *git.Blob) (*csv.Reader, io.Closer, error) {
|
||||
if blob == nil {
|
||||
|
@@ -262,9 +262,9 @@ func editFilePost(ctx *context.Context, form forms.EditRepoFileForm, isNewFile b
|
||||
message := strings.TrimSpace(form.CommitSummary)
|
||||
if len(message) == 0 {
|
||||
if isNewFile {
|
||||
message = ctx.Tr("repo.editor.add", form.TreePath)
|
||||
message = ctx.Locale.TrString("repo.editor.add", form.TreePath)
|
||||
} else {
|
||||
message = ctx.Tr("repo.editor.update", form.TreePath)
|
||||
message = ctx.Locale.TrString("repo.editor.update", form.TreePath)
|
||||
}
|
||||
}
|
||||
form.CommitMessage = strings.TrimSpace(form.CommitMessage)
|
||||
@@ -415,7 +415,7 @@ func DiffPreviewPost(ctx *context.Context) {
|
||||
}
|
||||
|
||||
if diff.NumFiles == 0 {
|
||||
ctx.PlainText(http.StatusOK, ctx.Tr("repo.editor.no_changes_to_show"))
|
||||
ctx.PlainText(http.StatusOK, ctx.Locale.TrString("repo.editor.no_changes_to_show"))
|
||||
return
|
||||
}
|
||||
ctx.Data["File"] = diff.Files[0]
|
||||
@@ -482,7 +482,7 @@ func DeleteFilePost(ctx *context.Context) {
|
||||
|
||||
message := strings.TrimSpace(form.CommitSummary)
|
||||
if len(message) == 0 {
|
||||
message = ctx.Tr("repo.editor.delete", ctx.Repo.TreePath)
|
||||
message = ctx.Locale.TrString("repo.editor.delete", ctx.Repo.TreePath)
|
||||
}
|
||||
form.CommitMessage = strings.TrimSpace(form.CommitMessage)
|
||||
if len(form.CommitMessage) > 0 {
|
||||
@@ -691,7 +691,7 @@ func UploadFilePost(ctx *context.Context) {
|
||||
if dir == "" {
|
||||
dir = "/"
|
||||
}
|
||||
message = ctx.Tr("repo.editor.upload_files_to_dir", dir)
|
||||
message = ctx.Locale.TrString("repo.editor.upload_files_to_dir", dir)
|
||||
}
|
||||
|
||||
form.CommitMessage = strings.TrimSpace(form.CommitMessage)
|
||||
|
@@ -1036,7 +1036,7 @@ func renderErrorOfTemplates(ctx *context.Context, errs map[string]error) string
|
||||
})
|
||||
if err != nil {
|
||||
log.Debug("render flash error: %v", err)
|
||||
flashError = ctx.Tr("repo.issues.choose.ignore_invalid_templates")
|
||||
flashError = ctx.Locale.TrString("repo.issues.choose.ignore_invalid_templates")
|
||||
}
|
||||
return flashError
|
||||
}
|
||||
@@ -1655,7 +1655,7 @@ func ViewIssue(ctx *context.Context) {
|
||||
}
|
||||
ghostMilestone := &issues_model.Milestone{
|
||||
ID: -1,
|
||||
Name: ctx.Tr("repo.issues.deleted_milestone"),
|
||||
Name: ctx.Locale.TrString("repo.issues.deleted_milestone"),
|
||||
}
|
||||
if comment.OldMilestoneID > 0 && comment.OldMilestone == nil {
|
||||
comment.OldMilestone = ghostMilestone
|
||||
@@ -1672,7 +1672,7 @@ func ViewIssue(ctx *context.Context) {
|
||||
|
||||
ghostProject := &project_model.Project{
|
||||
ID: -1,
|
||||
Title: ctx.Tr("repo.issues.deleted_project"),
|
||||
Title: ctx.Locale.TrString("repo.issues.deleted_project"),
|
||||
}
|
||||
|
||||
if comment.OldProjectID > 0 && comment.OldProject == nil {
|
||||
|
@@ -56,12 +56,12 @@ func GetContentHistoryList(ctx *context.Context) {
|
||||
for _, item := range items {
|
||||
var actionText string
|
||||
if item.IsDeleted {
|
||||
actionTextDeleted := ctx.Locale.Tr("repo.issues.content_history.deleted")
|
||||
actionTextDeleted := ctx.Locale.TrString("repo.issues.content_history.deleted")
|
||||
actionText = "<i data-history-is-deleted='1'>" + actionTextDeleted + "</i>"
|
||||
} else if item.IsFirstCreated {
|
||||
actionText = ctx.Locale.Tr("repo.issues.content_history.created")
|
||||
actionText = ctx.Locale.TrString("repo.issues.content_history.created")
|
||||
} else {
|
||||
actionText = ctx.Locale.Tr("repo.issues.content_history.edited")
|
||||
actionText = ctx.Locale.TrString("repo.issues.content_history.edited")
|
||||
}
|
||||
|
||||
username := item.UserName
|
||||
|
@@ -123,7 +123,7 @@ func TestDeleteLabel(t *testing.T) {
|
||||
assert.EqualValues(t, http.StatusOK, ctx.Resp.Status())
|
||||
unittest.AssertNotExistsBean(t, &issues_model.Label{ID: 2})
|
||||
unittest.AssertNotExistsBean(t, &issues_model.IssueLabel{LabelID: 2})
|
||||
assert.Equal(t, ctx.Tr("repo.issues.label_deletion_success"), ctx.Flash.SuccessMsg)
|
||||
assert.EqualValues(t, ctx.Tr("repo.issues.label_deletion_success"), ctx.Flash.SuccessMsg)
|
||||
}
|
||||
|
||||
func TestUpdateIssueLabel_Clear(t *testing.T) {
|
||||
|
@@ -79,7 +79,7 @@ func NewDiffPatchPost(ctx *context.Context) {
|
||||
// `message` will be both the summary and message combined
|
||||
message := strings.TrimSpace(form.CommitSummary)
|
||||
if len(message) == 0 {
|
||||
message = ctx.Tr("repo.editor.patch")
|
||||
message = ctx.Locale.TrString("repo.editor.patch")
|
||||
}
|
||||
|
||||
form.CommitMessage = strings.TrimSpace(form.CommitMessage)
|
||||
|
@@ -315,7 +315,7 @@ func ViewProject(ctx *context.Context) {
|
||||
}
|
||||
|
||||
if boards[0].ID == 0 {
|
||||
boards[0].Title = ctx.Tr("repo.projects.type.uncategorized")
|
||||
boards[0].Title = ctx.Locale.TrString("repo.projects.type.uncategorized")
|
||||
}
|
||||
|
||||
issuesMap, err := issues_model.LoadIssuesFromBoardList(ctx, boards)
|
||||
@@ -633,7 +633,7 @@ func MoveIssues(ctx *context.Context) {
|
||||
board = &project_model.Board{
|
||||
ID: 0,
|
||||
ProjectID: project.ID,
|
||||
Title: ctx.Tr("repo.projects.type.uncategorized"),
|
||||
Title: ctx.Locale.TrString("repo.projects.type.uncategorized"),
|
||||
}
|
||||
} else {
|
||||
board, err = project_model.GetBoard(ctx, ctx.ParamsInt64(":boardID"))
|
||||
|
@@ -723,7 +723,7 @@ func PrepareViewPullInfo(ctx *context.Context, issue *issues_model.Issue) *git.C
|
||||
type pullCommitList struct {
|
||||
Commits []pull_service.CommitInfo `json:"commits"`
|
||||
LastReviewCommitSha string `json:"last_review_commit_sha"`
|
||||
Locale map[string]string `json:"locale"`
|
||||
Locale map[string]any `json:"locale"`
|
||||
}
|
||||
|
||||
// GetPullCommits get all commits for given pull request
|
||||
@@ -741,7 +741,7 @@ func GetPullCommits(ctx *context.Context) {
|
||||
}
|
||||
|
||||
// Get the needed locale
|
||||
resp.Locale = map[string]string{
|
||||
resp.Locale = map[string]any{
|
||||
"lang": ctx.Locale.Language(),
|
||||
"show_all_commits": ctx.Tr("repo.pulls.show_all_commits"),
|
||||
"stats_num_commits": ctx.TrN(len(commits), "repo.activity.git_stats_commit_1", "repo.activity.git_stats_commit_n", len(commits)),
|
||||
|
@@ -219,9 +219,9 @@ func SubmitReview(ctx *context.Context) {
|
||||
if issue.IsPoster(ctx.Doer.ID) {
|
||||
var translated string
|
||||
if reviewType == issues_model.ReviewTypeApprove {
|
||||
translated = ctx.Tr("repo.issues.review.self.approval")
|
||||
translated = ctx.Locale.TrString("repo.issues.review.self.approval")
|
||||
} else {
|
||||
translated = ctx.Tr("repo.issues.review.self.rejection")
|
||||
translated = ctx.Locale.TrString("repo.issues.review.self.rejection")
|
||||
}
|
||||
|
||||
ctx.Flash.Error(translated)
|
||||
|
@@ -38,7 +38,7 @@ func UpdateAvatarSetting(ctx *context.Context, form forms.AvatarForm) error {
|
||||
defer r.Close()
|
||||
|
||||
if form.Avatar.Size > setting.Avatar.MaxFileSize {
|
||||
return errors.New(ctx.Tr("settings.uploaded_avatar_is_too_big", form.Avatar.Size/1024, setting.Avatar.MaxFileSize/1024))
|
||||
return errors.New(ctx.Locale.TrString("settings.uploaded_avatar_is_too_big", form.Avatar.Size/1024, setting.Avatar.MaxFileSize/1024))
|
||||
}
|
||||
|
||||
data, err := io.ReadAll(r)
|
||||
@@ -47,7 +47,7 @@ func UpdateAvatarSetting(ctx *context.Context, form forms.AvatarForm) error {
|
||||
}
|
||||
st := typesniffer.DetectContentType(data)
|
||||
if !(st.IsImage() && !st.IsSvgImage()) {
|
||||
return errors.New(ctx.Tr("settings.uploaded_avatar_not_a_image"))
|
||||
return errors.New(ctx.Locale.TrString("settings.uploaded_avatar_not_a_image"))
|
||||
}
|
||||
if err = repo_service.UploadAvatar(ctx, ctxRepo, data); err != nil {
|
||||
return fmt.Errorf("UploadAvatar: %w", err)
|
||||
|
@@ -68,7 +68,7 @@ func SettingsProtectedBranch(c *context.Context) {
|
||||
}
|
||||
|
||||
c.Data["PageIsSettingsBranches"] = true
|
||||
c.Data["Title"] = c.Tr("repo.settings.protected_branch") + " - " + rule.RuleName
|
||||
c.Data["Title"] = c.Locale.TrString("repo.settings.protected_branch") + " - " + rule.RuleName
|
||||
|
||||
users, err := access_model.GetRepoReaders(c, c.Repo.Repository)
|
||||
if err != nil {
|
||||
|
@@ -739,7 +739,7 @@ func checkHomeCodeViewable(ctx *context.Context) {
|
||||
}
|
||||
}
|
||||
|
||||
ctx.NotFound("Home", fmt.Errorf(ctx.Tr("units.error.no_unit_allowed_repo")))
|
||||
ctx.NotFound("Home", fmt.Errorf(ctx.Locale.TrString("units.error.no_unit_allowed_repo")))
|
||||
}
|
||||
|
||||
func checkCitationFile(ctx *context.Context, entry *git.TreeEntry) {
|
||||
|
@@ -714,7 +714,7 @@ func NewWikiPost(ctx *context.Context) {
|
||||
wikiName := wiki_service.UserTitleToWebPath("", form.Title)
|
||||
|
||||
if len(form.Message) == 0 {
|
||||
form.Message = ctx.Tr("repo.editor.add", form.Title)
|
||||
form.Message = ctx.Locale.TrString("repo.editor.add", form.Title)
|
||||
}
|
||||
|
||||
if err := wiki_service.AddWikiPage(ctx, ctx.Doer, ctx.Repo.Repository, wikiName, form.Content, form.Message); err != nil {
|
||||
@@ -766,7 +766,7 @@ func EditWikiPost(ctx *context.Context) {
|
||||
newWikiName := wiki_service.UserTitleToWebPath("", form.Title)
|
||||
|
||||
if len(form.Message) == 0 {
|
||||
form.Message = ctx.Tr("repo.editor.update", form.Title)
|
||||
form.Message = ctx.Locale.TrString("repo.editor.update", form.Title)
|
||||
}
|
||||
|
||||
if err := wiki_service.EditWikiPage(ctx, ctx.Doer, ctx.Repo.Repository, oldWikiName, newWikiName, form.Content, form.Message); err != nil {
|
||||
|
Reference in New Issue
Block a user