Go语言实现自定义i18n功能

相关代码已开源: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)
}

运行结果:
example

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值