aboutsummaryrefslogtreecommitdiffstats
path: root/services/cron
diff options
context:
space:
mode:
authorGusted <williamzijl7@hotmail.com>2022-06-26 16:19:22 +0200
committerGitHub <noreply@github.com>2022-06-26 22:19:22 +0800
commit5d3f99c7c6d0f2c304dc13c6fa6aa675daf310cc (patch)
treeb44b05216bef3051123cd6b2fd9495cee1b91ece /services/cron
parent711cbcce8d6a193f5738c45861d11cb86b412ec7 (diff)
downloadgitea-5d3f99c7c6d0f2c304dc13c6fa6aa675daf310cc.tar.gz
gitea-5d3f99c7c6d0f2c304dc13c6fa6aa675daf310cc.zip
Make better use of i18n (#20096)
* Prototyping * Start work on creating offsets * Modify tests * Start prototyping with actual MPH * Twiddle around * Twiddle around comments * Convert templates * Fix external languages * Fix latest translation * Fix some test * Tidy up code * Use simple map * go mod tidy * Move back to data structure - Uses less memory by creating for each language a map. * Apply suggestions from code review Co-authored-by: delvh <dev.lh@web.de> * Add some comments * Fix tests * Try to fix tests * Use en-US as defacto fallback * Use correct slices * refactor (#4) * Remove TryTr, add log for missing translation key * Refactor i18n - Separate dev and production locale stores. - Allow for live-reloading in dev mode. Co-authored-by: zeripath <art27@cantab.net> * Fix live-reloading & check for errors * Make linter happy * live-reload with periodic check (#5) * Fix tests Co-authored-by: delvh <dev.lh@web.de> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com> Co-authored-by: zeripath <art27@cantab.net>
Diffstat (limited to 'services/cron')
-rw-r--r--services/cron/cron.go3
-rw-r--r--services/cron/setting.go12
-rw-r--r--services/cron/tasks.go8
3 files changed, 12 insertions, 11 deletions
diff --git a/services/cron/cron.go b/services/cron/cron.go
index ebbcd75b6d..8e19e04416 100644
--- a/services/cron/cron.go
+++ b/services/cron/cron.go
@@ -13,6 +13,7 @@ import (
"code.gitea.io/gitea/modules/graceful"
"code.gitea.io/gitea/modules/process"
"code.gitea.io/gitea/modules/sync"
+ "code.gitea.io/gitea/modules/translation"
"github.com/gogs/cron"
)
@@ -63,7 +64,7 @@ type TaskTableRow struct {
task *Task
}
-func (t *TaskTableRow) FormatLastMessage(locale string) string {
+func (t *TaskTableRow) FormatLastMessage(locale translation.Locale) string {
if t.Status == "finished" {
return t.task.GetConfig().FormatMessage(locale, t.Name, t.Status, t.LastDoer)
}
diff --git a/services/cron/setting.go b/services/cron/setting.go
index 9b59a562f7..eb13242e94 100644
--- a/services/cron/setting.go
+++ b/services/cron/setting.go
@@ -7,7 +7,7 @@ package cron
import (
"time"
- "code.gitea.io/gitea/modules/translation/i18n"
+ "code.gitea.io/gitea/modules/translation"
)
// Config represents a basic configuration interface that cron task
@@ -15,7 +15,7 @@ type Config interface {
IsEnabled() bool
DoRunAtStart() bool
GetSchedule() string
- FormatMessage(locale, name, status, doer string, args ...interface{}) string
+ FormatMessage(locale translation.Locale, name, status, doer string, args ...interface{}) string
DoNoticeOnSuccess() bool
}
@@ -69,9 +69,9 @@ func (b *BaseConfig) DoNoticeOnSuccess() bool {
// FormatMessage returns a message for the task
// Please note the `status` string will be concatenated with `admin.dashboard.cron.` and `admin.dashboard.task.` to provide locale messages. Similarly `name` will be composed with `admin.dashboard.` to provide the locale name for the task.
-func (b *BaseConfig) FormatMessage(locale, name, status, doer string, args ...interface{}) string {
+func (b *BaseConfig) FormatMessage(locale translation.Locale, name, status, doer string, args ...interface{}) string {
realArgs := make([]interface{}, 0, len(args)+2)
- realArgs = append(realArgs, i18n.Tr(locale, "admin.dashboard."+name))
+ realArgs = append(realArgs, locale.Tr("admin.dashboard."+name))
if doer == "" {
realArgs = append(realArgs, "(Cron)")
} else {
@@ -81,7 +81,7 @@ func (b *BaseConfig) FormatMessage(locale, name, status, doer string, args ...in
realArgs = append(realArgs, args...)
}
if doer == "" {
- return i18n.Tr(locale, "admin.dashboard.cron."+status, realArgs...)
+ return locale.Tr("admin.dashboard.cron."+status, realArgs...)
}
- return i18n.Tr(locale, "admin.dashboard.task."+status, realArgs...)
+ return locale.Tr("admin.dashboard.task."+status, realArgs...)
}
diff --git a/services/cron/tasks.go b/services/cron/tasks.go
index 2252ad21e2..c26e47e0ce 100644
--- a/services/cron/tasks.go
+++ b/services/cron/tasks.go
@@ -94,7 +94,7 @@ func (t *Task) RunWithUser(doer *user_model.User, config Config) {
doerName = doer.Name
}
- ctx, _, finished := pm.AddContext(baseCtx, config.FormatMessage("en-US", t.Name, "process", doerName))
+ ctx, _, finished := pm.AddContext(baseCtx, config.FormatMessage(translation.NewLocale("en-US"), t.Name, "process", doerName))
defer finished()
if err := t.fun(ctx, doer, config); err != nil {
@@ -114,7 +114,7 @@ func (t *Task) RunWithUser(doer *user_model.User, config Config) {
t.LastDoer = doerName
t.lock.Unlock()
- if err := admin_model.CreateNotice(ctx, admin_model.NoticeTask, config.FormatMessage("en-US", t.Name, "cancelled", doerName, message)); err != nil {
+ if err := admin_model.CreateNotice(ctx, admin_model.NoticeTask, config.FormatMessage(translation.NewLocale("en-US"), t.Name, "cancelled", doerName, message)); err != nil {
log.Error("CreateNotice: %v", err)
}
return
@@ -127,7 +127,7 @@ func (t *Task) RunWithUser(doer *user_model.User, config Config) {
t.lock.Unlock()
if config.DoNoticeOnSuccess() {
- if err := admin_model.CreateNotice(ctx, admin_model.NoticeTask, config.FormatMessage("en-US", t.Name, "finished", doerName)); err != nil {
+ if err := admin_model.CreateNotice(ctx, admin_model.NoticeTask, config.FormatMessage(translation.NewLocale("en-US"), t.Name, "finished", doerName)); err != nil {
log.Error("CreateNotice: %v", err)
}
}
@@ -148,7 +148,7 @@ func RegisterTask(name string, config Config, fun func(context.Context, *user_mo
log.Debug("Registering task: %s", name)
i18nKey := "admin.dashboard." + name
- if _, ok := translation.TryTr("en-US", i18nKey); !ok {
+ if value := translation.NewLocale("en-US").Tr(i18nKey); value == i18nKey {
return fmt.Errorf("translation is missing for task %q, please add translation for %q", name, i18nKey)
}