README
¶
功能简介
- 使用简单,支持加载多个语言,多个文件
- 两种数据加载模式:单文件
FileMode
、文件夹DirMode
;默认是文件夹模式 - 支持设置默认语言,备用语言;当在默认语言数据没找到时,自动尝试到备用语言查找
- 支持参数替换,也有两种模式:
SprintfMode
通过fmt.Sprintf
替换参数,ReplaceMode
则使用strings.Replacer
替换
快速使用
lang/
en/
default.ini
...
zh-CN/
default.ini
...
初始化
import "github.com/abulo/ratel/v2/i18n"
languages := map[string]string{
"en": "English",
"zh-CN": "简体中文",
// "zh-TW": "繁体中文",
}
// 这里直接初始化的默认实例
i18n.Init("conf/lang", "en", languages)
// 或者创建自定义的新实例
// i18n.New(langDir string, defLang string, languages)
// i18n.NewEmpty()
翻译数据
// 从指定的语言翻译
msg := i18n.Tr("en", "key")
// 从默认语言翻译
msg = i18n.DefTr("key")
// with arguments.
msg = i18n.DefTr("key1", "arg1", "arg2")
参数替换模式
使用 SprintfMode
(defaults) 模式:
# en.ini
desc = I am %s, age is %d
按kv顺序传入参数使用:
msg := i18n.Tr("en", "desc", "name", "tom", "age", 22)
// Output: "I am tom, age is 22"
使用 ReplaceMode
替换模式:
# en.ini
desc = I am {name}, age is {age}
传入 map[string]interface{}
参数使用:
i18n.TransMode = i18n.ReplaceMode
msg := i18n.Tr("en", "desc", "desc", map[string]interface{}{
"name": "tom",
"age": 22,
})
// Output: "I am tom, age is 22"
Documentation
¶
Index ¶
- Constants
- func DefTr(key string, args ...interface{}) string
- func Dt(key string, args ...interface{}) string
- func T(lang string, key string, args ...interface{}) string
- func Tr(lang string, key string, args ...interface{}) string
- type I18n
- func (l *I18n) Add(lang string, name string)
- func (l *I18n) DefTr(key string, args ...interface{}) string
- func (l *I18n) DelLang(lang string) bool
- func (l *I18n) Dt(key string, args ...interface{}) string
- func (l *I18n) Export(lang string) string
- func (l *I18n) HasKey(lang, key string) (ok bool)
- func (l *I18n) HasLang(lang string) bool
- func (l *I18n) Init() *I18n
- func (l *I18n) Lang(lang string) *ini.Ini
- func (l *I18n) Languages() map[string]string
- func (l *I18n) LoadFile(lang string, file string) (err error)
- func (l *I18n) LoadString(lang string, data string) (err error)
- func (l *I18n) NewLang(lang string, name string)
- func (l *I18n) T(lang, key string, args ...interface{}) string
- func (l *I18n) Tr(lang, key string, args ...interface{}) string
Constants ¶
View Source
const ( // FileMode language name is file name. "en" -> "lang/en.ini" FileMode uint8 = 0 // DirMode language name is dir name, will load all file in the dir. "en" -> "lang/en/*.ini" DirMode uint8 = 1 // SprintfMode render message arguments by fmt.Sprintf SprintfMode uint8 = 0 // ReplaceMode render message arguments by string replace ReplaceMode uint8 = 1 )
FileMode ...
Variables ¶
This section is empty.
Functions ¶
Types ¶
type I18n ¶
type I18n struct { // mode for the load language files. // 0 single language file // 1 multi language directory LoadMode uint8 // TODO translate mode. // 0 sprintf // 1 replace TransMode uint8 // default language name. eg. "en" DefaultLang string // spare(fallback) language name. eg. "en" FallbackLang string // contains filtered or unexported fields }
I18n language manager
func NewWithInit ¶
NewWithInit a i18n instance and call init
func (*I18n) LoadFile ¶
LoadFile append data to a exist language Usage:
i18n.LoadFile("zh-CN", "path/to/zh-CN.ini")
func (*I18n) LoadString ¶
LoadString load language data form a string Usage:
i18n.Set("zh-CN", "name = blog")
Click to show internal directories.
Click to hide internal directories.