aboutsummaryrefslogtreecommitdiffhomepage
path: root/locale/locale_test.go
diff options
context:
space:
mode:
authorGravatar Frédéric Guillot <fred@miniflux.net>2017-11-19 21:10:04 -0800
committerGravatar Frédéric Guillot <fred@miniflux.net>2017-11-19 22:01:46 -0800
commit8ffb773f43c8dc54801ca1d111854e7e881c93c9 (patch)
tree38133a2fc612597a75fed1d13e5b4042f58a2b7e /locale/locale_test.go
First commit
Diffstat (limited to 'locale/locale_test.go')
-rw-r--r--locale/locale_test.go103
1 files changed, 103 insertions, 0 deletions
diff --git a/locale/locale_test.go b/locale/locale_test.go
new file mode 100644
index 0000000..baddd1e
--- /dev/null
+++ b/locale/locale_test.go
@@ -0,0 +1,103 @@
+// Copyright 2017 Frédéric Guillot. All rights reserved.
+// Use of this source code is governed by the Apache 2.0
+// license that can be found in the LICENSE file.
+package locale
+
+import "testing"
+
+func TestTranslateWithMissingLanguage(t *testing.T) {
+ translator := NewTranslator()
+ translation := translator.GetLanguage("en_US").Get("auth.username")
+
+ if translation != "auth.username" {
+ t.Errorf("Wrong translation, got %s", translation)
+ }
+}
+
+func TestTranslateWithExistingKey(t *testing.T) {
+ data := `{"auth.username": "Username"}`
+ translator := NewTranslator()
+ translator.AddLanguage("en_US", data)
+ translation := translator.GetLanguage("en_US").Get("auth.username")
+
+ if translation != "Username" {
+ t.Errorf("Wrong translation, got %s", translation)
+ }
+}
+
+func TestTranslateWithMissingKey(t *testing.T) {
+ data := `{"auth.username": "Username"}`
+ translator := NewTranslator()
+ translator.AddLanguage("en_US", data)
+ translation := translator.GetLanguage("en_US").Get("auth.password")
+
+ if translation != "auth.password" {
+ t.Errorf("Wrong translation, got %s", translation)
+ }
+}
+
+func TestTranslateWithMissingKeyAndPlaceholder(t *testing.T) {
+ translator := NewTranslator()
+ translator.AddLanguage("fr_FR", "")
+ translation := translator.GetLanguage("fr_FR").Get("Status: %s", "ok")
+
+ if translation != "Status: ok" {
+ t.Errorf("Wrong translation, got %s", translation)
+ }
+}
+
+func TestTranslatePluralWithDefaultRule(t *testing.T) {
+ data := `{"number_of_users": ["Il y a %d utilisateur (%s)", "Il y a %d utilisateurs (%s)"]}`
+ translator := NewTranslator()
+ translator.AddLanguage("fr_FR", data)
+ language := translator.GetLanguage("fr_FR")
+
+ translation := language.Plural("number_of_users", 1, 1, "some text")
+ expected := "Il y a 1 utilisateur (some text)"
+ if translation != expected {
+ t.Errorf(`Wrong translation, got "%s" instead of "%s"`, translation, expected)
+ }
+
+ translation = language.Plural("number_of_users", 2, 2, "some text")
+ expected = "Il y a 2 utilisateurs (some text)"
+ if translation != expected {
+ t.Errorf(`Wrong translation, got "%s" instead of "%s"`, translation, expected)
+ }
+}
+
+func TestTranslatePluralWithRussianRule(t *testing.T) {
+ data := `{"key": ["из %d книги за %d день", "из %d книг за %d дня", "из %d книг за %d дней"]}`
+ translator := NewTranslator()
+ translator.AddLanguage("ru_RU", data)
+ language := translator.GetLanguage("ru_RU")
+
+ translation := language.Plural("key", 1, 1, 1)
+ expected := "из 1 книги за 1 день"
+ if translation != expected {
+ t.Errorf(`Wrong translation, got "%s" instead of "%s"`, translation, expected)
+ }
+
+ translation = language.Plural("key", 2, 2, 2)
+ expected = "из 2 книг за 2 дня"
+ if translation != expected {
+ t.Errorf(`Wrong translation, got "%s" instead of "%s"`, translation, expected)
+ }
+
+ translation = language.Plural("key", 5, 5, 5)
+ expected = "из 5 книг за 5 дней"
+ if translation != expected {
+ t.Errorf(`Wrong translation, got "%s" instead of "%s"`, translation, expected)
+ }
+}
+
+func TestTranslatePluralWithMissingTranslation(t *testing.T) {
+ translator := NewTranslator()
+ translator.AddLanguage("fr_FR", "")
+ language := translator.GetLanguage("fr_FR")
+
+ translation := language.Plural("number_of_users", 2)
+ expected := "number_of_users"
+ if translation != expected {
+ t.Errorf(`Wrong translation, got "%s" instead of "%s"`, translation, expected)
+ }
+}