前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go语言实现自定义i18n功能

Go语言实现自定义i18n功能

作者头像
程序员小涛
发布2021-12-28 08:52:00
5770
发布2021-12-28 08:52:00
举报
文章被收录于专栏:涛的程序人生涛的程序人生

相关代码已开源:github传送门

Internationalization,取开头和结尾字母,算一下字母数18,组合一下就是i18n,这是一个约定俗称的叫法。在其他语言中,做国际化的相关包一般也会以这个名字命名。GitHub - ExcitingFrog/go-pangu: rest api web server based on go(High availability, high security, high performance)internationalization,取开头和结尾字母,算一下字母数18,组合一下就是i18n,这是一个约定俗称的叫法。在其他语言中,做国际化的相关包一般也会以这个名字命名。

为了使开发的软件能够国际化,需要做各种语言的适配,但是不可能对不同语言进行开发不同的页面或是接口。因此我们需要对文字的部分进行处理,常见的方法就是,建立不同语言的文件,他们记录着一些词语在不同语言下的翻译,通过关键词索引来完成对应。当要使用的时候,通过调用不同语言文件里的索引就可以引用出来。

自定义语言配置文件格式: 这两个文件的目录若未指定,默认是在源码目录的i18n文件夹里面 en.toml (英文)

代码语言:javascript
复制
hi = "Hello"
world = "World"

zh.toml (中文)

代码语言:javascript
复制
hi = "你好"
world = "世界"

使用示例:

代码语言:javascript
复制
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
example
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档