相关代码已开源:github传送门
Internationalization,取开头和结尾字母,算一下字母数18,组合一下就是i18n,这是一个约定俗称的叫法。在其他语言中,做国际化的相关包一般也会以这个名字命名。internationalization,取开头和结尾字母,算一下字母数18,组合一下就是i18n,这是一个约定俗称的叫法。在其他语言中,做国际化的相关包一般也会以这个名字命名。
为了使开发的软件能够国际化,需要做各种语言的适配,但是不可能对不同语言进行开发不同的页面或是接口。因此我们需要对文字的部分进行处理,常见的方法就是,建立不同语言的文件,他们记录着一些词语在不同语言下的翻译,通过关键词索引来完成对应。当要使用的时候,通过调用不同语言文件里的索引就可以引用出来。
自定义语言配置文件格式:
这两个文件的目录若未指定,默认是在源码目录的i18n文件夹里面
en.toml (英文)
hi = "Hello"
world = "World"
zh.toml (中文)
hi = "你好"
world = "世界"
使用示例:
package main
import (
"fmt"
"github.com/Scorpio69t/goi18n"
)
func main() {
// Output:
// Goi18n.New: &{Path:main.go Language:zh}
g := goi18n.New(&goi18n.Option{
Path: "i18n",
Language: "en",
})
// fmt.Printf("Goi18n.New: %#v\n", g)
// chinese
hi := g.Translate("zh", "hi")
world := g.Translate("zh", "world")
fmt.Printf("%s %s!\n", hi, world)
// english
hi = g.T("hi")
world = g.T("world")
fmt.Printf("%s %s!\n", hi, world)
}
运行结果: