package locale import ( "embed" "encoding/json" "fmt" "path/filepath" ) // Embed all locale JSON files inside binary //go:embed i18n/*.json var localeFS embed.FS // Load all languages on startup func LoadAll() error { files, err := localeFS.ReadDir("i18n") if err != nil { return fmt.Errorf("locale: cannot read embedded FS: %w", err) } for _, f := range files { name := f.Name() path := filepath.Join("i18n", name) data, err := localeFS.ReadFile(path) if err != nil { return fmt.Errorf("locale: failed to read %s: %w", name, err) } var b Bundle if err := json.Unmarshal(data, &b); err != nil { return fmt.Errorf("locale: failed to parse %s: %w", name, err) } lang := Lang(b.Locale) register(lang, b) } return nil }