前端传递的字符串转国际化tag
zh, _ := language.ParseBase("zh") // 语言
CN, _ := language.ParseRegion("CN") // 地区
zhLngTag, _ := language.Compose(zh, CN)
tag := language.MustParse(e.tag)
经过测试,中国语言存在中文Chinese,简体SimplifiedChinese,繁体TraditionalChinese
通过一下方式测试可以查看到,繁体的默认地址是台湾
fmt.Println(language.SimplifiedChinese.Base())
fmt.Println(language.TraditionalChinese.Region())
zh-CHS 是单纯的简体中文。
zh-CHT 是单纯的繁体中文。
zh-Hans和zh-CHS相同相对应。
zh-Hant和zh-CHT相同相对应。
以上时zh-CHS/zh-Hans 和 zh-CHT/zh-Hant的关系。
然后是
zh-CN 简体中文,中华人民共和国
zh-HK 繁体中文,香港特别行政区
zh-MO 繁体中文,澳门特别行政区
zh-SG 繁体中文,新加坡-
zh-SG 简体中文,新加坡
zh-TW 繁体中文,台湾
读取配置文件
package config
import (
"encoding/json"
"fmt"
"golang.org/x/text/language"
"golang.org/x/text/message"
"os"
)
type LangageConfigguration struct {
SimplifiedChinese []LangageEntity `json:"simplifiedChinese"`
TraditionalChinese []LangageEntity `json:"traditionalChinese"`
English []LangageEntity `json:"english"`
}
type LangageEntity struct {
Key string `json:"key"`
Value string `json:"value"`
}
func LocalLangageConfigguration() {
info, err := os.Stat("resources/config/")
if os.IsExist(err) {
fmt.Println("base config path 目录信息出错")
panic("The path is not existed:")
}
if !info.IsDir() {
panic("The path is not dir, please check:")
}
configFile, err := os.Open("resources/config/langage.json")
if err != nil {
logger.Error("本地nacos配置文件加载失败:", err)
}
jsonParse := json.NewDecoder(configFile)
var langageConfig LangageConfigguration
err = jsonParse.Decode(&langageConfig)
if err != nil {
logger.Error("nacos配置文件转换失败:", err)
}
setMsg(langageConfig)
}
func setMsg(langageConfig LangageConfigguration) {
simplifiedChinese := langageConfig.SimplifiedChinese
if len(simplifiedChinese) > 0 {
setm(language.SimplifiedChinese, simplifiedChinese)
}
traditionalChinese := langageConfig.TraditionalChinese
if len(traditionalChinese) > 0 {
setm(language.TraditionalChinese, traditionalChinese)
}
english := langageConfig.English
if len(english) > 0 {
setm(language.AmericanEnglish, english)
}
}
var SimplifiedChinese *message.Printer
var TraditionalChinese *message.Printer
var EnUS *message.Printer
func setm(tag language.Tag, list []LangageEntity) {
for _, v := range list {
message.SetString(tag, v.Key, v.Value)
}
SimplifiedChinese = message.NewPrinter(language.SimplifiedChinese)
TraditionalChinese = message.NewPrinter(language.TraditionalChinese)
EnUS = message.NewPrinter(language.AmericanEnglish)
}
设计一个nacos配置的读取和监听
在这里插入代码片
将配置信息进行初始化配置
处理单复数问题和是否存在问题,这个在有些情况不需要输出两个占位符内容,有时候是英文的单复数问题。
package main
func init() {
//根据参数处理不同的返回语句
message.Set(language.English, "APP_COUNT",
plural.Selectf(1, "%d",
"=1", "I have an apple",
"=2", "I have two apples",
"other", "I have %[1]d apples",
))
}
func main() {
fmt.Println("placehold中的条件判断-------------------")
// 条件判断
p.Printf("APP_COUNT", 1)
fmt.Println()
p.Printf("APP_COUNT", 2)
p.Println()
}