gf/i18n/gi18n/gi18n_unit_test.go

169 lines
4.4 KiB
Go
Raw Normal View History

2021-01-17 21:46:25 +08:00
// Copyright GoFrame Author(https://goframe.org). All Rights Reserved.
2019-09-01 00:30:01 +08:00
//
// This Source Code Form is subject to the terms of the MIT License.
// If a copy of the MIT was not distributed with this file,
// You can obtain one at https://github.com/gogf/gf.
package gi18n_test
import (
"testing"
2019-09-04 19:23:19 +08:00
"github.com/gogf/gf/os/gres"
2019-09-01 00:30:01 +08:00
"github.com/gogf/gf/os/gtime"
"github.com/gogf/gf/util/gconv"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/i18n/gi18n"
"github.com/gogf/gf/debug/gdebug"
"github.com/gogf/gf/os/gfile"
"github.com/gogf/gf/test/gtest"
2019-09-04 19:23:19 +08:00
_ "github.com/gogf/gf/os/gres/testdata/data"
2019-09-01 00:30:01 +08:00
)
func Test_Basic(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2020-03-19 23:53:03 +08:00
i18n := gi18n.New(gi18n.Options{
Path: gdebug.TestDataPath("i18n"),
2019-09-01 00:30:01 +08:00
})
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("none")
t.Assert(i18n.T("{#hello}{#world}"), "{#hello}{#world}")
2019-09-01 00:30:01 +08:00
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("ja")
t.Assert(i18n.T("{#hello}{#world}"), "こんにちは世界")
2019-09-01 00:30:01 +08:00
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("zh-CN")
t.Assert(i18n.T("{#hello}{#world}"), "你好世界")
i18n.SetDelimiters("{$", "}")
t.Assert(i18n.T("{#hello}{#world}"), "{#hello}{#world}")
t.Assert(i18n.T("{$hello}{$world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2020-03-19 23:53:03 +08:00
i18n := gi18n.New(gi18n.Options{
Path: gdebug.TestDataPath("i18n-file"),
2019-09-01 00:30:01 +08:00
})
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("none")
t.Assert(i18n.T("{#hello}{#world}"), "{#hello}{#world}")
2019-09-01 00:30:01 +08:00
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("ja")
t.Assert(i18n.T("{#hello}{#world}"), "こんにちは世界")
2019-09-01 00:30:01 +08:00
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("zh-CN")
t.Assert(i18n.T("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2020-03-19 23:53:03 +08:00
i18n := gi18n.New(gi18n.Options{
2019-09-01 00:30:01 +08:00
Path: gdebug.CallerDirectory() + gfile.Separator + "testdata" + gfile.Separator + "i18n-dir",
})
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("none")
t.Assert(i18n.T("{#hello}{#world}"), "{#hello}{#world}")
2019-09-01 00:30:01 +08:00
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("ja")
t.Assert(i18n.T("{#hello}{#world}"), "こんにちは世界")
2019-09-01 00:30:01 +08:00
2020-03-19 23:53:03 +08:00
i18n.SetLanguage("zh-CN")
t.Assert(i18n.T("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
}
func Test_TranslateFormat(t *testing.T) {
2020-10-25 17:33:14 +08:00
// Tf
gtest.C(t, func(t *gtest.T) {
i18n := gi18n.New(gi18n.Options{
Path: gdebug.TestDataPath("i18n"),
})
i18n.SetLanguage("none")
2020-10-25 17:33:14 +08:00
t.Assert(i18n.Tf("{#hello}{#world} %d", 2020), "{#hello}{#world} 2020")
i18n.SetLanguage("ja")
2020-10-25 17:33:14 +08:00
t.Assert(i18n.Tf("{#hello}{#world} %d", 2020), "こんにちは世界 2020")
})
2020-10-25 17:33:14 +08:00
// Tfl
gtest.C(t, func(t *gtest.T) {
i18n := gi18n.New(gi18n.Options{
Path: gdebug.TestDataPath("i18n"),
})
t.Assert(i18n.Tfl("ja", "{#hello}{#world} %d", 2020), "こんにちは世界 2020")
t.Assert(i18n.Tfl("zh-CN", "{#hello}{#world} %d", 2020), "你好世界 2020")
})
}
2019-09-01 00:30:01 +08:00
func Test_DefaultManager(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
err := gi18n.SetPath(gdebug.TestDataPath("i18n"))
2020-03-19 22:56:12 +08:00
t.Assert(err, nil)
2019-09-01 00:30:01 +08:00
gi18n.SetLanguage("none")
2020-03-19 22:56:12 +08:00
t.Assert(gi18n.T("{#hello}{#world}"), "{#hello}{#world}")
2019-09-01 00:30:01 +08:00
gi18n.SetLanguage("ja")
2020-03-19 22:56:12 +08:00
t.Assert(gi18n.T("{#hello}{#world}"), "こんにちは世界")
2019-09-01 00:30:01 +08:00
gi18n.SetLanguage("zh-CN")
2020-03-19 22:56:12 +08:00
t.Assert(gi18n.T("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-09-01 00:30:01 +08:00
err := gi18n.SetPath(gdebug.CallerDirectory() + gfile.Separator + "testdata" + gfile.Separator + "i18n-dir")
2020-03-19 22:56:12 +08:00
t.Assert(err, nil)
2019-09-01 00:30:01 +08:00
gi18n.SetLanguage("none")
2020-03-19 22:56:12 +08:00
t.Assert(gi18n.Translate("{#hello}{#world}"), "{#hello}{#world}")
2019-09-01 00:30:01 +08:00
gi18n.SetLanguage("ja")
2020-03-19 22:56:12 +08:00
t.Assert(gi18n.Translate("{#hello}{#world}"), "こんにちは世界")
2019-09-01 00:30:01 +08:00
gi18n.SetLanguage("zh-CN")
2020-03-19 22:56:12 +08:00
t.Assert(gi18n.Translate("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
}
func Test_Instance(t *testing.T) {
2019-09-04 19:23:19 +08:00
gres.Dump()
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-09-01 00:30:01 +08:00
m := gi18n.Instance()
2019-09-04 19:23:19 +08:00
err := m.SetPath("i18n-dir")
2020-03-19 22:56:12 +08:00
t.Assert(err, nil)
2019-09-01 00:30:01 +08:00
m.SetLanguage("zh-CN")
2020-03-19 22:56:12 +08:00
t.Assert(m.T("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-09-01 00:30:01 +08:00
m := gi18n.Instance()
2020-03-19 22:56:12 +08:00
t.Assert(m.T("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
t.Assert(g.I18n().T("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
// Default language is: en
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
m := gi18n.Instance(gconv.String(gtime.TimestampNano()))
t.Assert(m.T("{#hello}{#world}"), "HelloWorld")
2019-09-01 00:30:01 +08:00
})
}
func Test_Resource(t *testing.T) {
2020-03-19 22:56:12 +08:00
gtest.C(t, func(t *gtest.T) {
2019-09-01 00:30:01 +08:00
m := g.I18n("resource")
2019-09-04 19:23:19 +08:00
err := m.SetPath("i18n-dir")
2020-03-19 22:56:12 +08:00
t.Assert(err, nil)
2019-09-01 00:30:01 +08:00
m.SetLanguage("none")
2020-03-19 22:56:12 +08:00
t.Assert(m.T("{#hello}{#world}"), "{#hello}{#world}")
2019-09-01 00:30:01 +08:00
m.SetLanguage("ja")
2020-03-19 22:56:12 +08:00
t.Assert(m.T("{#hello}{#world}"), "こんにちは世界")
2019-09-01 00:30:01 +08:00
m.SetLanguage("zh-CN")
2020-03-19 22:56:12 +08:00
t.Assert(m.T("{#hello}{#world}"), "你好世界")
2019-09-01 00:30:01 +08:00
})
}