package i18n import ( "embed" "fmt" ) //go:embed locales/*.json var localeFiles embed.FS // catalogFS is the raw JSON for each locale in Supported, read once at // package init time (see i18n.go's init). Keeping the embed.FS read // here, separate from the JSON-decoding in init, means adding a // locale is purely data: list it in Supported above, drop its file // under locales/, and this loop picks it up — no new Go code. var catalogFS = func() map[Locale][]byte { out := make(map[Locale][]byte, len(Supported)) for _, info := range Supported { data, err := localeFiles.ReadFile(fmt.Sprintf("locales/%s.json", info.Code)) if err != nil { panic(fmt.Sprintf("i18n: locale %q listed in Supported but locales/%s.json is missing: %v", info.Code, info.Code, err)) } out[info.Code] = data } return out }()