From c2a3e38194c7bb4ca1ea62f033e633e597e09be4 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Mon, 7 Feb 2022 15:43:53 +0800 Subject: [PATCH] Fix the missing i18n key for update checker (#18646) --- modules/translation/translation.go | 12 ++++++++++++ options/locale/locale_en-US.ini | 1 + services/cron/tasks.go | 7 +++++++ 3 files changed, 20 insertions(+) diff --git a/modules/translation/translation.go b/modules/translation/translation.go index 2dce6e16b9..977f2cdc23 100644 --- a/modules/translation/translation.go +++ b/modules/translation/translation.go @@ -39,6 +39,18 @@ func AllLangs() []LangType { return allLangs } +// TryTr tries to do the translation, if no translation, it returns (format, false) +func TryTr(lang, format string, args ...interface{}) (string, bool) { + s := i18n.Tr(lang, format, args...) + // now the i18n library is not good enough and we can only use this hacky method to detect whether the transaction exists + idx := strings.IndexByte(format, '.') + defaultText := format + if idx > 0 { + defaultText = format[idx+1:] + } + return s, s != defaultText +} + // InitLocales loads the locales func InitLocales() { i18n.Reset() diff --git a/options/locale/locale_en-US.ini b/options/locale/locale_en-US.ini index 7a291cd75c..e91016bdc0 100644 --- a/options/locale/locale_en-US.ini +++ b/options/locale/locale_en-US.ini @@ -2436,6 +2436,7 @@ dashboard.last_gc_pause = Last GC Pause dashboard.gc_times = GC Times dashboard.delete_old_actions = Delete all old actions from database dashboard.delete_old_actions.started = Delete all old actions from database started. +dashboard.update_checker = Update checker users.user_manage_panel = User Account Management users.new_account = Create User Account diff --git a/services/cron/tasks.go b/services/cron/tasks.go index 07da2fe8d6..070fb6e9e1 100644 --- a/services/cron/tasks.go +++ b/services/cron/tasks.go @@ -17,6 +17,7 @@ import ( "code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" + "code.gitea.io/gitea/modules/translation" ) var ( @@ -121,6 +122,12 @@ func GetTask(name string) *Task { // RegisterTask allows a task to be registered with the cron service func RegisterTask(name string, config Config, fun func(context.Context, *user_model.User, Config) error) error { log.Debug("Registering task: %s", name) + + i18nKey := "admin.dashboard." + name + if _, ok := translation.TryTr("en-US", i18nKey); !ok { + return fmt.Errorf("translation is missing for task %q, please add translation for %q", name, i18nKey) + } + _, err := setting.GetCronSettings(name, config) if err != nil { log.Error("Unable to register cron task with name: %s Error: %v", name, err)