diff --git a/_examples/i18n/i18n-template/locales/el-GR/user.ini b/_examples/i18n/i18n-template/locales/el-GR/user.ini new file mode 100644 index 00000000..0c05c6dc --- /dev/null +++ b/_examples/i18n/i18n-template/locales/el-GR/user.ini @@ -0,0 +1,5 @@ +[forms] +member = μέλος +register = Γίνε {{tr "forms.member" }} +registered = εγγεγραμμένοι +registered_members = Υπάρχουν {{ concat (plural (tr "forms.member") .count) (tr "forms.registered") }} \ No newline at end of file diff --git a/_examples/i18n/i18n-template/locales/en-US/user.ini b/_examples/i18n/i18n-template/locales/en-US/user.ini new file mode 100644 index 00000000..32329ca5 --- /dev/null +++ b/_examples/i18n/i18n-template/locales/en-US/user.ini @@ -0,0 +1,5 @@ +[forms] +member = member +register = Become a {{tr "forms.member" }} +registered = registered +registered_members = There are {{ concat (plural (tr "forms.member") .count) (tr "forms.registered") }} \ No newline at end of file diff --git a/_examples/i18n/i18n-template/main.go b/_examples/i18n/i18n-template/main.go index 8b2c93ce..9969fffb 100644 --- a/_examples/i18n/i18n-template/main.go +++ b/_examples/i18n/i18n-template/main.go @@ -1,6 +1,7 @@ package main import ( + "strings" "text/template" "github.com/kataras/iris/v12" @@ -36,22 +37,35 @@ func newApp() *iris.Application { // pluralize words based on the given language. return pluralize.Pluralize(word, count, true) }, + "uppercase": func(word string) string { + return strings.ToUpper(word) + }, + "concat": func(words ...string) string { + return strings.Join(words, " ") + }, } } - app.I18n.Load("./locales/*/*.yml", "en-US", "el-GR") + app.I18n.Load("./locales/*/*", "en-US", "el-GR") app.Get("/", func(ctx iris.Context) { text := ctx.Tr("HiDogs", iris.Map{ "count": 2, - }) // prints "Hi 2 dogs". + }) // en-US: prints "Hi 2 dogs". ctx.WriteString(text) }) app.Get("/singular", func(ctx iris.Context) { text := ctx.Tr("HiDogs", iris.Map{ "count": 1, - }) // prints "Hi 1 dog". + }) // en-US: prints "Hi 1 dog". + ctx.WriteString(text) + }) + + app.Get("/members", func(ctx iris.Context) { + text := ctx.Tr("forms.registered_members", iris.Map{ + "count": 42, + }) // en-US: prints "There are 42 members registered". ctx.WriteString(text) }) diff --git a/_examples/i18n/i18n-template/main_test.go b/_examples/i18n/i18n-template/main_test.go index 0cc24db1..8861803f 100644 --- a/_examples/i18n/i18n-template/main_test.go +++ b/_examples/i18n/i18n-template/main_test.go @@ -14,6 +14,8 @@ func TestI18nLoaderFuncMap(t *testing.T) { Body().Equal("Hi 2 dogs") e.GET("/singular").Expect().Status(httptest.StatusOK). Body().Equal("Hi 1 dog") + e.GET("/members").Expect().Status(httptest.StatusOK). + Body().Equal("There are 42 members registered") e.GET("/").WithHeader("Accept-Language", "el").Expect().Status(httptest.StatusOK). Body().Equal("Γειά 2 σκυλί") }