github.com/cloudfoundry/cli@v7.1.0+incompatible/util/ui/i18n_test.go (about) 1 package ui_test 2 3 import ( 4 . "code.cloudfoundry.org/cli/util/ui" 5 "code.cloudfoundry.org/cli/util/ui/uifakes" 6 7 . "github.com/onsi/ginkgo" 8 . "github.com/onsi/ginkgo/extensions/table" 9 . "github.com/onsi/gomega" 10 ) 11 12 var _ = Describe("i18n", func() { 13 var fakeConfig *uifakes.FakeConfig 14 15 BeforeEach(func() { 16 fakeConfig = new(uifakes.FakeConfig) 17 }) 18 19 Describe("GetTranslationFunc", func() { 20 DescribeTable("defaults to english", 21 func(locale string) { 22 fakeConfig.LocaleReturns(locale) 23 24 translationFunc, err := GetTranslationFunc(fakeConfig) 25 Expect(err).ToNot(HaveOccurred()) 26 27 Expect(translationFunc("\nApp started\n")).To(Equal("\nApp started\n")) 28 }, 29 30 Entry("when left blank", ""), 31 Entry("when given gibberish", "asdfasfsadfsadfsadfa"), 32 Entry("when given an unsupported language", "pt-PT"), 33 ) 34 35 When("the config file is set", func() { 36 DescribeTable("returns the correct language translationFunc", 37 func(locale string, expectedTranslation string) { 38 fakeConfig.LocaleReturns(locale) 39 40 translationFunc, err := GetTranslationFunc(fakeConfig) 41 Expect(err).ToNot(HaveOccurred()) 42 43 Expect(translationFunc("\nApp started\n")).To(Equal(expectedTranslation)) 44 }, 45 46 Entry("German", "de-DE", "\nApp gestartet\n"), 47 Entry("English", "en-US", "\nApp started\n"), 48 Entry("Spanish", "es-ES", "\nApp iniciada\n"), 49 Entry("French", "fr-FR", "\nApplication démarrée\n"), 50 Entry("Italian", "it-IT", "\nApplicazione avviata\n"), 51 Entry("Japanese", "ja-JP", "\nアプリが開始されました\n"), 52 Entry("Korean", "ko-KR", "\n앱 시작됨\n"), 53 Entry("Brazilian Portuguese", "pt-BR", "\nApp iniciado\n"), 54 Entry("Chinese (Simplified)", "zh-HANS", "\n应用程序已启动\n"), 55 Entry("Chinese (Traditional)", "zh-HANT", "\n已啟動應用程式\n"), 56 57 // The following locales use the zh-hant translations 58 Entry("Chinese (Traditional and using Taiwanese terms)", "zh-TW", "\n已啟動應用程式\n"), 59 Entry("Chinese (Traditional and using Hong Kong terms)", "zh-HK", "\n已啟動應用程式\n"), 60 ) 61 62 When("provided keys to iterpolate", func() { 63 BeforeEach(func() { 64 fakeConfig.LocaleReturns("fr-FR") 65 }) 66 67 It("interpolates them properly", func() { 68 translationFunc, err := GetTranslationFunc(fakeConfig) 69 Expect(err).ToNot(HaveOccurred()) 70 translated := translationFunc("\nApp {{.AppName}} was started using this command `{{.Command}}`\n", map[string]interface{}{ 71 "AppName": "some-app-name", 72 "Command": "some-command-name", 73 }) 74 Expect(translated).To(Equal("\nL'application some-app-name a été démarrée avec la commande `some-command-name`\n")) 75 }) 76 }) 77 }) 78 79 When("the translation does not have a value", func() { 80 It("uses the id for the translation", func() { 81 translationFunc, err := GetTranslationFunc(fakeConfig) 82 Expect(err).ToNot(HaveOccurred()) 83 translated := translationFunc("api version:") 84 Expect(translated).To(Equal("api version:")) 85 }) 86 }) 87 }) 88 89 Describe("ParseLocale", func() { 90 DescribeTable("returns the correct language translationFunc", 91 func(locale string, expectedLocale string) { 92 Expect(ParseLocale(locale)).To(Equal(expectedLocale)) 93 }, 94 95 Entry("German with underscore and caps", "DE_DE", "de-de"), 96 Entry("German", "de-DE", "de-de"), 97 Entry("English", "en-US", "en-us"), 98 Entry("Spanish", "es-ES", "es-es"), 99 Entry("French", "fr-FR", "fr-fr"), 100 Entry("Italian", "it-IT", "it-it"), 101 Entry("Japanese", "ja-JP", "ja-jp"), 102 Entry("Korean", "ko-KR", "ko-kr"), 103 Entry("Brazilian Portuguese", "pt-BR", "pt-br"), 104 Entry("Chinese (Simplified)", "zh-HANS", "zh-hans"), 105 Entry("Chinese (Traditional)", "zh-HANT", "zh-hant"), 106 107 // The following locales use the zh-hant translations 108 Entry("Chinese (Traditional and using Taiwanese terms)", "zh-TW", "zh-hant"), 109 Entry("Chinese (Traditional and using Hong Kong terms)", "zh-HK", "zh-hant"), 110 ) 111 }) 112 })