go-vise

Constrained Size Output Virtual Machine
Info | Log | Files | Refs | README | LICENSE

commit 349bb87d6b9646be56da97cff81a74c03a71362b
parent 3a212f6626650acab306e2f5568e75f4d2326be9
Author: lash <dev@holbrook.no>
Date:   Thu,  2 Jan 2025 08:32:00 +0000

Add separate menu domain in resource gettext

Diffstat:
Mdev/walk/main.go | 4++--
Mresource/gettext.go | 20++++++++++++--------
Mresource/gettext_test.go | 28++++++++++++++++++++++++++--
Atestdata/testlocale/eng/menu.po | 9+++++++++
Rtestdata/testlocale/nor/default.po -> testdata/testlocale/nor/menu.po | 0
5 files changed, 49 insertions(+), 12 deletions(-)

diff --git a/dev/walk/main.go b/dev/walk/main.go @@ -58,12 +58,12 @@ func(tr *translator) ensureFileNameFor(ln lang.Language) (string, error) { func(tr *translator) Close() error { var s string var err error - for k, v := range(tr.langs) { + for _, v := range(tr.langs) { o, ok := tr.w[v.Code] if ok { err = o.Close() if err != nil { - s += fmt.Sprintf("\nclose error %s: %v", k, err) + s += fmt.Sprintf("\nclose error %s: %v", v.Code, err) } } } diff --git a/resource/gettext.go b/resource/gettext.go @@ -8,17 +8,20 @@ import ( "git.defalsify.org/vise.git/lang" ) +const ( + templateDomain = "default" + menuDomain = "menu" +) + type PoResource struct { path string - domain string defaultLanguage lang.Language tr map[string]*gotext.Locale } -func NewPoResource(defaultLanguage lang.Language, path string, domain string) *PoResource { +func NewPoResource(defaultLanguage lang.Language, path string) *PoResource { o := &PoResource { path: path, - domain: domain, defaultLanguage: defaultLanguage, tr: make(map[string]*gotext.Locale), } @@ -27,12 +30,13 @@ func NewPoResource(defaultLanguage lang.Language, path string, domain string) *P func(p *PoResource) WithLanguage(ln lang.Language) *PoResource { o := gotext.NewLocale(p.path, ln.Code) - o.AddDomain(p.domain) + o.AddDomain(menuDomain) + o.AddDomain(templateDomain) p.tr[ln.Code] = o return p } -func(p *PoResource) get(ctx context.Context, sym string) (string, error) { +func(p *PoResource) get(ctx context.Context, sym string, domain string) (string, error) { s := sym ln, ok := lang.LanguageFromContext(ctx) if !ok { @@ -41,15 +45,15 @@ func(p *PoResource) get(ctx context.Context, sym string) (string, error) { o, ok := p.tr[ln.Code] if ok { logg.TraceCtxf(ctx, "poresource get", "sym", sym, "ln", ln, "path", p.path, "o", o) - s = o.Get(sym) + s = o.GetD(domain, sym) } return s, nil } func(p *PoResource) GetMenu(ctx context.Context, sym string) (string, error) { - return p.get(ctx, sym) + return p.get(ctx, sym, menuDomain) } func(p *PoResource) GetTemplate(ctx context.Context, sym string) (string, error) { - return p.get(ctx, sym) + return p.get(ctx, sym, templateDomain) } diff --git a/resource/gettext_test.go b/resource/gettext_test.go @@ -13,7 +13,7 @@ func TestPoGet(t *testing.T) { if err != nil { t.Fatal(err) } - rs := NewPoResource(ln, testlocale.LocaleDir, "default") + rs := NewPoResource(ln, testlocale.LocaleDir) ctx := context.WithValue(context.Background(), "Language", ln) ln, err = lang.LanguageFromCode("eng") @@ -26,11 +26,19 @@ func TestPoGet(t *testing.T) { if err != nil { t.Fatal(err) } - if s != "fu" { t.Fatalf("expected 'fu', got '%s'", s) } + s, err = rs.GetTemplate(ctx, "foo") + if err != nil { + t.Fatal(err) + } + if s != "foo" { + t.Fatalf("expected 'foo', got '%s'", s) + } + + // eng now ctx = context.WithValue(context.Background(), "Language", ln) @@ -46,6 +54,22 @@ func TestPoGet(t *testing.T) { if err != nil { t.Fatal(err) } + if s != "bar" { + t.Fatalf("expected 'bar', got '%s'", s) + } + + s, err = rs.GetMenu(ctx, "inky") + if err != nil { + t.Fatal(err) + } + if s != "pinky" { + t.Fatalf("expected 'pinky', got '%s'", s) + } + + s, err = rs.GetTemplate(ctx, "bar") + if err != nil { + t.Fatal(err) + } if s != "baz" { t.Fatalf("expected 'baz', got '%s'", s) } diff --git a/testdata/testlocale/eng/menu.po b/testdata/testlocale/eng/menu.po @@ -0,0 +1,9 @@ +msgid "" +msgstr "" + "Content-Type: text/plain; charset=UTF-8\n" + "Language: eng\n" + +msgid "" + "inky" +msgstr "" + "pinky" diff --git a/testdata/testlocale/nor/default.po b/testdata/testlocale/nor/menu.po