commit 38f78d180b9364bc169ab6c19c7dc08e90d80324
parent c1a81c4a0e18f33aa442a8894ce4da8855d10dc9
Author: lash <dev@holbrook.no>
Date: Thu, 2 Jan 2025 12:29:59 +0000
Skip default language translations, use node for reference
Diffstat:
2 files changed, 36 insertions(+), 35 deletions(-)
diff --git a/dev/gettext/export/main.go b/dev/gettext/export/main.go
@@ -93,7 +93,7 @@ func(tr *translator) menuFunc(sym string) error {
ctx := context.WithValue(tr.ctx, "Language", ln)
s, err := tr.rs.GetMenu(ctx, sym)
if err != nil {
- logg.DebugCtxf(ctx, "template not found", "sym", s)
+ logg.DebugCtxf(ctx, "menu not found", "sym", s)
continue
}
if s != sym {
@@ -212,6 +212,7 @@ func main() {
}
for k, v := range(debug.NodeIndex) {
+ logg.Tracef("processing node", "sym", k)
err = tr.nodeFunc(&v)
if err != nil {
fmt.Fprintf(os.Stderr, "translate process error for node %s: %v", k, err)
diff --git a/dev/gettext/import/main.go b/dev/gettext/import/main.go
@@ -42,10 +42,6 @@ func newTranslator(ctx context.Context, rs resource.Resource, outPath string, ne
}
}
-func(tr *translator) applyLanguage(node *debug.Node) {
-
-}
-
func(tr *translator) ensureFileNameFor(ln lang.Language, domain string) (string, error) {
fileName := domain + ".po"
p := path.Join(tr.d, ln.Code)
@@ -82,35 +78,37 @@ func(tr *translator) Close() error {
return err
}
-func(tr *translator) process(s string) error {
- return nil
-}
-
func(tr *translator) menuFunc(sym string) error {
var v string
+ var def string
- for k, w := range(tr.mw) {
+ for _, ln := range(tr.langs) {
var s string
- ln, err := lang.LanguageFromCode(k)
+ w := tr.mw[ln.Code]
ctx := context.WithValue(tr.ctx, "Language", ln)
r, err := tr.rs.GetMenu(ctx, sym)
for _, v = range(strings.Split(r, "\n")) {
s += fmt.Sprintf("\t\"%s\"\n", v)
}
- s = fmt.Sprintf(`msgid ""
- "%s"
+ if def == "" {
+ def = s
+ continue
+ }
+ s = fmt.Sprintf(`#: vise_menu.%s
+msgid ""
+%s
msgstr ""
%s
-`, sym, s)
+`, sym, def, s)
if err == nil {
- logg.DebugCtxf(tr.ctx, "menu translation found", "node", sym)
+ logg.TraceCtxf(tr.ctx, "menu translation found", "node", sym, "lang", ln)
_, err = w.Write([]byte(s))
if err != nil {
return err
}
} else {
- logg.DebugCtxf(tr.ctx, "no menuitem translation found", "node", sym)
+ logg.DebugCtxf(tr.ctx, "no menuitem translation found", "node", sym, "lang", ln)
}
}
return nil
@@ -118,47 +116,49 @@ msgstr ""
// TODO: DRY; merge with menuFunc
func(tr *translator) nodeFunc(node *debug.Node) error {
- for k, w := range(tr.w) {
+ var def string
+ for _, ln := range(tr.langs) {
var s string
- ln, err := lang.LanguageFromCode(k)
+ w, ok := tr.w[ln.Code]
+ if !ok {
+ return fmt.Errorf("missing writer for lang: %s", ln.Code)
+ }
ctx := context.WithValue(tr.ctx, "Language", ln)
r, err := tr.rs.GetTemplate(ctx, node.Name)
- for i, v := range(strings.Split(r, "\n")) {
- if tr.newline {
+ if err == nil {
+ logg.TraceCtxf(tr.ctx, "template found", "lang", ln, "node", node.Name)
+ for i, v := range(strings.Split(r, "\n")) {
if i > 0 {
- s += "\\n\"\n"
- } else if len(s) > 0 {
- s += "\"\n"
+ if tr.newline {
+ s += fmt.Sprintf("\t\"\\n\"\n")
+ }
}
- s += fmt.Sprintf("\t\"%s", v)
- } else {
s += fmt.Sprintf("\t\"%s\"\n", v)
}
- }
- if tr.newline {
- if len(s) > 0 {
- s += "\"\n"
+ if def == "" {
+ def = s
+ continue
}
- }
- s = fmt.Sprintf(`msgid ""
- "%s"
+ s = fmt.Sprintf(`#: vise_node.%s
+msgid ""
+%s
msgstr ""
%s
-`, node.Name, s)
- if err == nil {
+`, node.Name, def, s)
_, err = w.Write([]byte(s))
if err != nil {
return err
}
} else {
- logg.DebugCtxf(tr.ctx, "no template found", "node", node.Name)
+ logg.DebugCtxf(tr.ctx, "no template found", "node", node.Name, "lang", ln)
}
}
return nil
}
func(tr *translator) AddLang(ln lang.Language) error {
+ tr.langs = append(tr.langs, ln)
s := fmt.Sprintf(`msgid ""
msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"