package lib import ( "os" "path/filepath" "gopkg.in/yaml.v3" ) var translations = make(map[string]map[string]string) // TranslateInit loads translation files from the given directory func TranslateInit(langDir string) { files, err := os.ReadDir(langDir) if err != nil { return } for _, f := range files { if filepath.Ext(f.Name()) != ".yaml" { continue } lang := f.Name()[:len(f.Name())-5] data, err := os.ReadFile(filepath.Join(langDir, f.Name())) if err != nil { continue } var t map[string]string if yaml.Unmarshal(data, &t) == nil { translations[lang] = t } } } // T translates a key to the given language, falling back to English func T(lang, key string) string { if t, ok := translations[lang]; ok { if s, ok := t[key]; ok { return s } } if t, ok := translations["en"]; ok { if s, ok := t[key]; ok { return s } } return "[" + key + "]" } // CategoryTranslate returns the translated category name func CategoryTranslate(cat int, lang string) string { return T(lang, CategoryKey(cat)) } // DossierLanguage returns the language for a dossier, defaulting to "en" func DossierLanguage(dossierID string) string { if dossierID == "" { return "en" } d, err := DossierGet(nil, dossierID) // nil ctx = internal operation if err != nil || d.Language == "" { return "en" } return d.Language }