) var _ = Describe("i18n.Init() function", func() { var ( configRepo configuration.ReadWriter ) BeforeEach(func() { i18n.Resources_path = filepath.Join("cf", "i18n", "test_fixtures") configRepo = testconfig.NewRepositoryWithDefaults() }) Describe("When a user has a locale configuration set", func() { Context("creates a valid T function", func() { BeforeEach(func() { configRepo.SetLocale("en_US") }) It("returns a usable T function for simple strings", func() { T := i18n.Init(configRepo) Ω(T).ShouldNot(BeNil()) translation := T("Hello world!") Ω("Hello world!").Should(Equal(translation)) }) It("returns a usable T function for complex strings (interpolated)", func() { T := i18n.Init(configRepo) Ω(T).ShouldNot(BeNil()) translation := T("Deleting domain {{.DomainName}} as {{.Username}}...", map[string]interface{}{"DomainName": "foo.com", "Username": "******"})
) BeforeEach(func() { configRepo = testconfig.NewRepositoryWithDefaults() oldResourcesPath = i18n.GetResourcesPath() i18n.Resources_path = filepath.Join("cf", "i18n", "test_fixtures") }) JustBeforeEach(func() { T = i18n.Init(configRepo) }) Describe("When a user has a locale configuration set", func() { It("panics when the translation files cannot be loaded", func() { i18n.Resources_path = filepath.Join("should", "not", "be_valid") configRepo.SetLocale("en_us") init := func() { i18n.Init(configRepo) } Ω(init).Should(Panic(), "loading translations from an invalid path should panic") }) It("Panics if the locale is not valid", func() { configRepo.SetLocale("abc_def") init := func() { i18n.Init(configRepo) } Ω(init).Should(Panic(), "loading translations from an invalid path should panic") }) Context("when the locale is set to french", func() { BeforeEach(func() { configRepo.SetLocale("fr_FR")
}) Context("--locale flag", func() { It("stores the locale value when --locale [locale] is provided", func() { runCommand("--locale", "zh_CN") Expect(configRepo.Locale()).Should(Equal("zh_CN")) }) It("informs the user of known locales if an unknown locale is provided", func() { runCommand("--locale", "foo_BAR") Expect(ui.Outputs).To(ContainSubstrings( []string{"known locales are"}, []string{"en_US"}, []string{"fr_FR"}, )) }) Context("when the locale is already set", func() { BeforeEach(func() { configRepo.SetLocale("fr_FR") Expect(configRepo.Locale()).Should(Equal("fr_FR")) }) It("clears the locale when the '--locale clear' flag is provided", func() { runCommand("--locale", "CLEAR") Expect(configRepo.Locale()).Should(Equal("")) }) }) }) })