summaryrefslogtreecommitdiffstats
path: root/pkg/i18n/i18n.go
diff options
context:
space:
mode:
authorAnthony HAMON <anthony.hamon@iadvize.com>2018-08-20 21:04:04 +0200
committerAnthony HAMON <anthony.hamon@iadvize.com>2018-08-20 21:12:42 +0200
commite4070ccb4f2de10f873561a0794bbae1a0513a29 (patch)
tree8a831c234f5bafd3a788e7cd15ab269259b0270f /pkg/i18n/i18n.go
parent3c0fb9b32461ae2fe4e71eeeda95583bd64a812a (diff)
rewrite language detection, rewrite tests
Diffstat (limited to 'pkg/i18n/i18n.go')
-rw-r--r--pkg/i18n/i18n.go53
1 files changed, 29 insertions, 24 deletions
diff --git a/pkg/i18n/i18n.go b/pkg/i18n/i18n.go
index e209d55c5..e46cb3fcb 100644
--- a/pkg/i18n/i18n.go
+++ b/pkg/i18n/i18n.go
@@ -18,33 +18,12 @@ type Localizer struct {
}
// NewLocalizer creates a new Localizer
-func NewLocalizer(log *logrus.Logger) (*Localizer, error) {
+func NewLocalizer(log *logrus.Logger) *Localizer {
+ userLang := detectLanguage(jibber_jabber.DetectLanguage)
- // detect the user's language
- userLang, err := jibber_jabber.DetectLanguage()
- if err != nil {
- if err.Error() != "Could not detect Language" {
- return nil, err
- }
- userLang = "C"
- }
log.Info("language: " + userLang)
- // create a i18n bundle that can be used to add translations and other things
- i18nBundle := &i18n.Bundle{DefaultLanguage: language.English}
-
- addBundles(log, i18nBundle)
-
- // return the new localizer that can be used to translate text
- i18nLocalizer := i18n.NewLocalizer(i18nBundle, userLang)
-
- localizer := &Localizer{
- i18nLocalizer: i18nLocalizer,
- language: userLang,
- Log: log,
- }
-
- return localizer, nil
+ return setupLocalizer(log, userLang)
}
// Localize handels the translations
@@ -96,3 +75,29 @@ func addBundles(log *logrus.Logger, i18nBundle *i18n.Bundle) {
}
}
+
+// detectLanguage extracts user language from environment
+func detectLanguage(langDetector func() (string, error)) string {
+ if userLang, err := langDetector(); err == nil {
+ return userLang
+ }
+
+ return "C"
+}
+
+// setupLocalizer creates a new localizer using given userLang
+func setupLocalizer(log *logrus.Logger, userLang string) *Localizer {
+ // create a i18n bundle that can be used to add translations and other things
+ i18nBundle := &i18n.Bundle{DefaultLanguage: language.English}
+
+ addBundles(log, i18nBundle)
+
+ // return the new localizer that can be used to translate text
+ i18nLocalizer := i18n.NewLocalizer(i18nBundle, userLang)
+
+ return &Localizer{
+ i18nLocalizer: i18nLocalizer,
+ language: userLang,
+ Log: log,
+ }
+}