diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2023-04-12 12:16:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-12 12:16:45 +0200 |
commit | 50a72e7a83a16d183a264e969a73cdbc7fb808f4 (patch) | |
tree | 013456110621c36edb3fa0d1bb77906ba8d4e013 /modules/translation | |
parent | Make Release Download URLs predictable (#23891) (diff) | |
download | forgejo-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.go | 14 |
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() }) } } |