tanki18n介绍

作者:

日语书

文章概述

该文章介绍了一个名为“tanki18n”的多语言支持包,该包提供输出到日志或标准输出的功能,包括Trans()、Printf()和Println()三个方法。语言文件是embed的,可以直接使用二进制包运行。该包已经开放源代码,可以在码云上访问。文章提供了一个简单例子,展示了如何使用该包输出不同语言的字符串。

关键要点

1.tanki18n 是一个多语言支持包,提供输出到日志或者标准输出的功能。

2.它提供了 Trans(), Printf(), Println() 三个方法,以及一个 Embed 的语言文件。

3.示例代码展示了如何使用该包,并且可以在码云上找到源代码。

4.使用该包可以方便地实现多语言输出,提高程序的可读性和可维护性。

介绍

tanki18n 包是一个多语言支持包,提供输出到日志或者标准输出的功能。它提供 Trans(), Printf(), Println()三个方法,Trans(), Printf()两个方法接收“语言key”和任何类型,任何数量的参数,签名func (i *I18n) Printf(key string, args ...any)。Println()方法则原样输出参数,签名func (i *I18n) Println(msg ...any),语言文件是 embed 的,这说明你编译后不用复制语言文件,单独一个二进制包即可运行。这个包已经开放源代码,有需要的朋友可以去码云 clone。

简单例子

创建文件 i18n/zh-CN.ini,输入内容

你好 = 你好: %s 

创建文件 i18n/en-US.ini,输入内容

你好 = Hello %s 

创建 main.go,输入内容

//embed多语言目录
//go:embed i18n
var i18nFS embed.FS

func main() {
	i18n, err := New(i18nFS, "zh-CN", "i18n", O_BOTH, "log.txt")
	if err != nil {
		fmt.Println(err)
	}
	i18n.Printf("你好", "甘耀通") //输出 你好:甘耀通

	i18n, err := New(i18nFS, "en-US", "i18n", O_BOTH, "log.txt")
	if err != nil {
		fmt.Println(err)
	}
	i18n.Printf("你好", "甘耀通") //输出 Hello 甘耀通
}

源代码已开放,感兴趣的朋友可以访问 码云 tanki18n