forked from toolshed/abra
@ -18,9 +18,11 @@ var assetFS embed.FS
|
|||||||
var (
|
var (
|
||||||
DefaultLocale = "en"
|
DefaultLocale = "en"
|
||||||
Locale = DefaultLocale
|
Locale = DefaultLocale
|
||||||
|
_, Mo = LoadLocale()
|
||||||
|
G = Mo.Get
|
||||||
)
|
)
|
||||||
|
|
||||||
func LoadLocale() *gotext.Mo {
|
func LoadLocale() (string, *gotext.Mo) {
|
||||||
entries, err := assetFS.ReadDir("locales")
|
entries, err := assetFS.ReadDir("locales")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("i18n: unable to read embedded locales directory: %s", err)
|
log.Fatalf("i18n: unable to read embedded locales directory: %s", err)
|
||||||
@ -49,7 +51,7 @@ func LoadLocale() *gotext.Mo {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if Locale == DefaultLocale {
|
if Locale == DefaultLocale {
|
||||||
return gotext.NewMo()
|
return Locale, gotext.NewMo()
|
||||||
}
|
}
|
||||||
|
|
||||||
b, err := assetFS.ReadFile(fmt.Sprintf("locales/%s.mo", Locale))
|
b, err := assetFS.ReadFile(fmt.Sprintf("locales/%s.mo", Locale))
|
||||||
@ -60,7 +62,5 @@ func LoadLocale() *gotext.Mo {
|
|||||||
mo := gotext.NewMo()
|
mo := gotext.NewMo()
|
||||||
mo.Parse(b)
|
mo.Parse(b)
|
||||||
|
|
||||||
return mo
|
return Locale, mo
|
||||||
}
|
}
|
||||||
|
|
||||||
var G = LoadLocale().Get
|
|
||||||
|
|||||||
21
pkg/i18n/i18n_test.go
Normal file
21
pkg/i18n/i18n_test.go
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
package i18n_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"coopcloud.tech/abra/pkg/i18n"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLoadLocale(t *testing.T) {
|
||||||
|
originalLang := os.Getenv("LANG")
|
||||||
|
os.Setenv("LANG", "es_ES.UTF-8")
|
||||||
|
t.Cleanup(func() {
|
||||||
|
os.Setenv("LANG", originalLang)
|
||||||
|
})
|
||||||
|
|
||||||
|
locale, _ := i18n.LoadLocale()
|
||||||
|
if locale != "es" {
|
||||||
|
t.Fatalf("expected 'es', locale was '%s'", locale)
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user