func initWithUserLocale(packageName, i18nDirname string) (string, error) { userLocale, err := jibber_jabber.DetectIETF() if err != nil { userLocale = DEFAULT_LOCALE } language, err := jibber_jabber.DetectLanguage() if err != nil { language = DEFAULT_LANGUAGE } userLocale = strings.Replace(userLocale, "-", "_", 1) err = loadFromAsset(packageName, i18nDirname, userLocale, language) if err != nil { locale := SUPPORTED_LOCALES[language] if locale == "" { userLocale = DEFAULT_LOCALE } else { userLocale = locale } err = loadFromAsset(packageName, i18nDirname, userLocale, language) } return userLocale, err }
func loadFromAsset(packageName, assetPath, locale string) error { language, err := jibber_jabber.DetectLanguage() if err != nil { return err } 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 (detector *JibberJabberDetector) DetectLanguage() (string, error) { return jibber_jabber.DetectLanguage() }