func loadFromAsset(packageName, assetPath, locale, language string) error { assetName := locale + ".all.json" assetKey := filepath.Join(assetPath, language, packageName, assetName) byteArray, err := resources.Asset(assetKey) if err != nil { return err } if len(byteArray) == 0 { return errors.New(fmt.Sprintf("Could not load i18n asset: %v", assetKey)) } tmpDir, err := ioutil.TempDir("", "cloudfoundry_cli_i18n_res") if err != nil { return err } defer func() { os.RemoveAll(tmpDir) }() fileName, err := saveLanguageFileToDisk(tmpDir, assetName, byteArray) if err != nil { return err } go_i18n.MustLoadTranslationFile(fileName) os.RemoveAll(fileName) return nil }
func loadAsset(assetName string) { 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())) } }
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 loadFromAsset(locale string) error { assetName := locale + ".all.json" assetKey := filepath.Join(GetResourcesPath(), assetName) byteArray, err := resources.Asset(assetKey) if err != nil { return err } if len(byteArray) == 0 { return errors.New(fmt.Sprintf("Could not load i18n asset: %v", assetKey)) } _, err = os.Stat(os.TempDir()) if err != nil { if !os.IsExist(err) { return errors.New("Please make sure Temp dir exist - " + os.TempDir()) } else { return err } } tmpDir, err := ioutil.TempDir("", "cloudfoundry_cli_i18n_res") if err != nil { return err } defer func() { os.RemoveAll(tmpDir) }() fileName, err := saveLanguageFileToDisk(tmpDir, assetName, byteArray) if err != nil { return err } go_i18n.MustLoadTranslationFile(fileName) os.RemoveAll(fileName) return nil }