Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/gohugoio/go-i18n.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Snyder <nickdsnyder@gmail.com>2015-10-09 03:07:18 +0300
committerNick Snyder <nickdsnyder@gmail.com>2015-10-09 03:07:18 +0300
commite89b669dd6cf08115d1eaee6c127bb13081fb20f (patch)
treeebdba3c695453a7fb0e030077548e1aac0fe6057
parenta97d9e61302069288b30e05516351e8a2fa7259f (diff)
parent7ba418104b3f77ee05274c8de966d9c4ab871e53 (diff)
Merge pull request #39 from dennisfaust/masterv1.3.0
Add LanguageTags and LanguageTranslationIDs functions
-rw-r--r--i18n/bundle/bundle.go18
-rw-r--r--i18n/bundle/bundle_test.go28
-rw-r--r--i18n/i18n.go10
3 files changed, 56 insertions, 0 deletions
diff --git a/i18n/bundle/bundle.go b/i18n/bundle/bundle.go
index 28e65c6..38dbe3a 100644
--- a/i18n/bundle/bundle.go
+++ b/i18n/bundle/bundle.go
@@ -134,6 +134,24 @@ func (b *Bundle) Translations() map[string]map[string]translation.Translation {
return b.translations
}
+// LanguageTags returns the tags of all languages that that have been added.
+func (b *Bundle) LanguageTags() []string {
+ var tags []string
+ for k := range b.translations {
+ tags = append(tags, k)
+ }
+ return tags
+}
+
+// LanguageTranslationIDs returns the ids of all translations that have been added for a given language.
+func (b *Bundle) LanguageTranslationIDs(languageTag string) []string {
+ var ids []string
+ for id := range b.translations[languageTag] {
+ ids = append(ids, id)
+ }
+ return ids
+}
+
// MustTfunc is similar to Tfunc except it panics if an error happens.
func (b *Bundle) MustTfunc(pref string, prefs ...string) TranslateFunc {
tfunc, err := b.Tfunc(pref, prefs...)
diff --git a/i18n/bundle/bundle_test.go b/i18n/bundle/bundle_test.go
index cdbc368..b9c0a05 100644
--- a/i18n/bundle/bundle_test.go
+++ b/i18n/bundle/bundle_test.go
@@ -4,6 +4,9 @@ import (
"fmt"
"testing"
+ "reflect"
+ "sort"
+
"github.com/nicksnyder/go-i18n/i18n/language"
"github.com/nicksnyder/go-i18n/i18n/translation"
)
@@ -33,6 +36,31 @@ func TestMustTfunc(t *testing.T) {
New().MustTfunc("invalid")
}
+func TestLanguageTagsAndTranslationIDs(t *testing.T) {
+ b := New()
+ translationID := "translation_id"
+ englishLanguage := languageWithTag("en-US")
+ frenchLanguage := languageWithTag("fr-FR")
+ spanishLanguage := languageWithTag("es")
+ addFakeTranslation(t, b, englishLanguage, "English"+translationID)
+ addFakeTranslation(t, b, frenchLanguage, translationID)
+ addFakeTranslation(t, b, spanishLanguage, translationID)
+
+ tags := b.LanguageTags()
+ sort.Strings(tags)
+ compareTo := []string{englishLanguage.Tag, spanishLanguage.Tag, frenchLanguage.Tag}
+ if !reflect.DeepEqual(tags, compareTo) {
+ t.Errorf("LanguageTags() = %#v; expected: %#v", tags, compareTo)
+ }
+
+ ids := b.LanguageTranslationIDs(englishLanguage.Tag)
+ sort.Strings(ids)
+ compareTo = []string{"English" + translationID}
+ if !reflect.DeepEqual(ids, compareTo) {
+ t.Errorf("LanguageTranslationIDs() = %#v; expected: %#v", ids, compareTo)
+ }
+}
+
func TestTfuncAndLanguage(t *testing.T) {
b := New()
translationID := "translation_id"
diff --git a/i18n/i18n.go b/i18n/i18n.go
index 211a9d1..f968429 100644
--- a/i18n/i18n.go
+++ b/i18n/i18n.go
@@ -115,6 +115,16 @@ func AddTranslation(lang *language.Language, translations ...translation.Transla
defaultBundle.AddTranslation(lang, translations...)
}
+// LanguageTags returns the tags of all languages that have been added.
+func LanguageTags() []string {
+ return defaultBundle.LanguageTags()
+}
+
+// LanguageTranslationIDs returns the ids of all translations that have been added for a given language.
+func LanguageTranslationIDs(languageTag string) []string {
+ return defaultBundle.LanguageTranslationIDs(languageTag)
+}
+
// MustTfunc is similar to Tfunc except it panics if an error happens.
func MustTfunc(languageSource string, languageSources ...string) TranslateFunc {
return TranslateFunc(defaultBundle.MustTfunc(languageSource, languageSources...))