Use INI
files, simple i18n manager implement.
FileMode
, folder DirMode
; default is folder modeSprintfMode
replaces parameters via fmt.Sprintf
, ReplaceMode
uses strings.Replacer
go get github.com/gookit/i18n
lang/
en/
default.ini
...
zh-CN/
default.ini
...
import "github/gookit/i18n"
languages := map[string]string{
"en": "English",
"zh-CN": "简体中文",
// "zh-TW": "繁体中文",
}
// The default instance initialized directly here
i18n.Init("conf/lang", "en", languages)
// Create a custom new instance
// i18n.New(langDir string, defLang string, languages)
// i18n.NewEmpty()
// translate from special language
msg := i18n.Tr("en", "key")
// translate from default language
msg = i18n.DefTr("key")
// with arguments.
msg = i18n.DefTr("key1", "arg1", "arg2")
Use SprintfMode
(defaults):
# en.ini
desc = I am %s, age is %d
Usage with parameters like sprintf:
msg := i18n.Tr("en", "desc", "tom", 22)
// Output: "I am tom, age is 22"
Use ReplaceMode
:
# en.ini
desc = I am {name}, age is {age}
Usage with parameters:
// "name": "tom", "age": 22
msg := i18n.Tr("en", "desc", "name", "tom", "age", 22)
// Output: "I am tom, age is 22"
Usage with map[string]interface{}
params:
i18n.TransMode = i18n.ReplaceMode
msg := i18n.Tr("en", "desc", "desc", map[string]interface{}{
"name": "tom",
"age": 22,
})
// Output: "I am tom, age is 22"
go test -cover
Version | Tag | Published |
---|---|---|
v1.1.4-0.20210729033844-7172fdd29880 | 10mos ago | |
v1.1.4-0.20210622014532-883a348dc999 | 1yr ago | |
v1.1.4-0.20210208091153-58b38c0e919c | 1yr ago | |
v1.1.3 | 1yr ago |