summaryrefslogtreecommitdiffstats
path: root/modules/translation
diff options
context:
space:
mode:
authorwxiaoguang <wxiaoguang@gmail.com>2023-04-12 12:16:45 +0200
committerGitHub <noreply@github.com>2023-04-12 12:16:45 +0200
commit50a72e7a83a16d183a264e969a73cdbc7fb808f4 (patch)
tree013456110621c36edb3fa0d1bb77906ba8d4e013 /modules/translation
parentMake Release Download URLs predictable (#23891) (diff)
downloadforgejo-50a72e7a83a16d183a264e969a73cdbc7fb808f4.tar.xz
forgejo-50a72e7a83a16d183a264e969a73cdbc7fb808f4.zip
Use a general approach to access custom/static/builtin assets (#24022)
The idea is to use a Layered Asset File-system (modules/assetfs/layered.go) For example: when there are 2 layers: "custom", "builtin", when access to asset "my/page.tmpl", the Layered Asset File-system will first try to use "custom" assets, if not found, then use "builtin" assets. This approach will hugely simplify a lot of code, make them testable. Other changes: * Simplify the AssetsHandlerFunc code * Simplify the `gitea embedded` sub-command code --------- Co-authored-by: Jason Song <i@wolfogre.com> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'modules/translation')
-rw-r--r--modules/translation/translation.go14
1 files changed, 5 insertions, 9 deletions
diff --git a/modules/translation/translation.go b/modules/translation/translation.go
index 3165390c32..331da0f965 100644
--- a/modules/translation/translation.go
+++ b/modules/translation/translation.go
@@ -13,7 +13,6 @@ import (
"code.gitea.io/gitea/modules/options"
"code.gitea.io/gitea/modules/setting"
"code.gitea.io/gitea/modules/translation/i18n"
- "code.gitea.io/gitea/modules/watcher"
"golang.org/x/text/language"
)
@@ -58,7 +57,7 @@ func InitLocales(ctx context.Context) {
refreshLocales := func() {
i18n.ResetDefaultLocales()
- localeNames, err := options.Dir("locale")
+ localeNames, err := options.AssetFS().ListFiles("locale", true)
if err != nil {
log.Fatal("Failed to list locale files: %v", err)
}
@@ -118,13 +117,10 @@ func InitLocales(ctx context.Context) {
})
if !setting.IsProd {
- watcher.CreateWatcher(ctx, "Locales", &watcher.CreateWatcherOpts{
- PathsCallback: options.WalkLocales,
- BetweenCallback: func() {
- lock.Lock()
- defer lock.Unlock()
- refreshLocales()
- },
+ go options.AssetFS().WatchLocalChanges(ctx, func() {
+ lock.Lock()
+ defer lock.Unlock()
+ refreshLocales()
})
}
}