Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 131cfb8068 |
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"io/fs"
|
"io/fs"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/text/language"
|
"golang.org/x/text/language"
|
||||||
@@ -16,7 +17,8 @@ import (
|
|||||||
var defaultLanguage = language.Russian
|
var defaultLanguage = language.Russian
|
||||||
|
|
||||||
var (
|
var (
|
||||||
builder *catalog.Builder
|
initOnce sync.Once
|
||||||
|
builder *catalog.Builder
|
||||||
|
|
||||||
supportedLanguages []language.Tag
|
supportedLanguages []language.Tag
|
||||||
supportedLanguagesMap = map[string]struct{}{}
|
supportedLanguagesMap = map[string]struct{}{}
|
||||||
@@ -43,21 +45,27 @@ func TryTranslate(ctx context.Context, obj interface{}) (string, bool) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Init(fs fs.ReadDirFS) error {
|
func Init(fs fs.ReadDirFS) error {
|
||||||
if builder != nil {
|
var err error
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
initCatalog, err := internal.InitBuilder(fs)
|
initOnce.Do(func() {
|
||||||
if err != nil {
|
if builder != nil {
|
||||||
return errors.Wrap(err, "init catalog")
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
builder = initCatalog
|
initCatalog, err := internal.InitBuilder(fs)
|
||||||
|
if err != nil {
|
||||||
|
err = errors.Wrap(err, "init catalog")
|
||||||
|
|
||||||
// Fill the local cache
|
return
|
||||||
GetLanguages()
|
}
|
||||||
|
|
||||||
return nil
|
builder = initCatalog
|
||||||
|
|
||||||
|
// Fill the local cache
|
||||||
|
GetLanguages()
|
||||||
|
})
|
||||||
|
|
||||||
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetPrinter(lang language.Tag) *message.Printer {
|
func GetPrinter(lang language.Tag) *message.Printer {
|
||||||
|
|||||||
Reference in New Issue
Block a user