diff options
author | Nick Snyder <nickdsnyder@gmail.com> | 2015-10-09 03:07:18 +0300 |
---|---|---|
committer | Nick Snyder <nickdsnyder@gmail.com> | 2015-10-09 03:07:18 +0300 |
commit | e89b669dd6cf08115d1eaee6c127bb13081fb20f (patch) | |
tree | ebdba3c695453a7fb0e030077548e1aac0fe6057 | |
parent | a97d9e61302069288b30e05516351e8a2fa7259f (diff) | |
parent | 7ba418104b3f77ee05274c8de966d9c4ab871e53 (diff) |
Merge pull request #39 from dennisfaust/masterv1.3.0
Add LanguageTags and LanguageTranslationIDs functions
-rw-r--r-- | i18n/bundle/bundle.go | 18 | ||||
-rw-r--r-- | i18n/bundle/bundle_test.go | 28 | ||||
-rw-r--r-- | i18n/i18n.go | 10 |
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...)) |