func SupportedLocales() []string { assetNames := resources.AssetNames() locales := make([]string, len(assetNames)) for i := range assetNames { locales[i] = strings.TrimSuffix(path.Base(assetNames[i]), resourceSuffix) } return locales }
func supportedLanguages() []*language.Language { assetNames := resources.AssetNames() languages := []*language.Language{} for _, assetName := range assetNames { assetLocale := strings.TrimSuffix(path.Base(assetName), resourceSuffix) languages = append(languages, language.Parse(assetLocale)...) } return languages }
func Init(config core_config.Reader) go_i18n.TranslateFunc { sources := []string{ config.Locale(), os.Getenv(lcAll), os.Getenv(lang), defaultLocale, } assetNames := resources.AssetNames() for _, source := range sources { if source == "" { continue } for _, l := range language.Parse(source) { if l.Tag == zhTW || l.Tag == zhHK { l.Tag = zhHant } for _, assetName := range assetNames { assetLocale := strings.ToLower(strings.Replace(path.Base(assetName), underscore, hyphen, -1)) if strings.HasPrefix(assetLocale, l.Tag) { assetBytes, err := resources.Asset(assetName) if err != nil { panic(fmt.Sprintf("Could not load asset '%s': %s", assetName, err.Error())) } err = go_i18n.ParseTranslationFileBytes(assetName, assetBytes) if err != nil { panic(fmt.Sprintf("Could not load translations '%s': %s", assetName, err.Error())) } T, err := go_i18n.Tfunc(source) if err == nil { return T } } } } } panic("Unable to find suitable translation") }
func Init(config LocalReader) go_i18n.TranslateFunc { loadAsset("cf/i18n/resources/" + defaultLocale + resourceSuffix) defaultTfunc := go_i18n.MustTfunc(defaultLocale) assetNames := resources.AssetNames() sources := []string{ config.Locale(), os.Getenv(lcAll), os.Getenv(lang), } for _, source := range sources { if source == "" { continue } for _, l := range language.Parse(source) { if l.Tag == zhTW || l.Tag == zhHK { l.Tag = zhHant } for _, assetName := range assetNames { assetLocale := strings.ToLower(strings.Replace(path.Base(assetName), underscore, hyphen, -1)) if strings.HasPrefix(assetLocale, l.Tag) { loadAsset(assetName) t := go_i18n.MustTfunc(source) return func(translationID string, args ...interface{}) string { if translated := t(translationID, args...); translated != translationID { return translated } return defaultTfunc(translationID, args...) } } } } } return defaultTfunc }