summaryrefslogtreecommitdiffstats
path: root/pkg/i18n/i18n.go
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/i18n/i18n.go')
-rw-r--r--pkg/i18n/i18n.go72
1 files changed, 38 insertions, 34 deletions
diff --git a/pkg/i18n/i18n.go b/pkg/i18n/i18n.go
index e209d55c5..898a13906 100644
--- a/pkg/i18n/i18n.go
+++ b/pkg/i18n/i18n.go
@@ -1,7 +1,7 @@
package i18n
import (
- "github.com/Sirupsen/logrus"
+ "github.com/sirupsen/logrus"
"github.com/cloudfoundry/jibber_jabber"
"github.com/nicksnyder/go-i18n/v2/i18n"
"golang.org/x/text/language"
@@ -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
@@ -82,17 +61,42 @@ func (l *Localizer) GetLanguage() string {
// add translation file(s)
func addBundles(log *logrus.Logger, i18nBundle *i18n.Bundle) {
- err := addPolish(i18nBundle)
- if err != nil {
- log.Fatal(err)
+ fs := []func(*i18n.Bundle) error{
+ addPolish,
+ addDutch,
+ addEnglish,
}
- err = addDutch(i18nBundle)
- if err != nil {
- log.Fatal(err)
+
+ for _, f := range fs {
+ if err := f(i18nBundle); err != nil {
+ log.Fatal(err)
+
+ }
}
- err = addEnglish(i18nBundle)
- if err != nil {
- log.Fatal(err)
+}
+
+// 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,
+ }
}