首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >处理多语种Go网络应用程序的标准/惯用方法是什么?

处理多语种Go网络应用程序的标准/惯用方法是什么?
EN

Stack Overflow用户
提问于 2018-07-03 04:42:44
回答 2查看 1.6K关注 0票数 6

我正在致力于一个网站,需要交付不同语言的网页,因为用户选择。例如,如果用户选择西班牙语作为首选语言,服务器应该以西班牙语发送网页的文本元素。

围棋中的标准方法是什么?我也很想知道你们在用什么方法。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-03 13:14:21

我总是使用一个映射并在它上定义一个函数,它返回给定键的文本:

代码语言:javascript
代码运行次数:0
运行
复制
type Texts map[string]string

func (t *Texts) Get(key string) string{
    return (*t)[key]
}

var texts = map[string]Texts{
    "de":Texts{
        "title":"Deutscher Titel",
    },
    "en":Texts{
        "title":"English title",
    },
}

func executeTemplate(lang string){
    tmpl, _ := template.New("example").Parse(`Title: {{.Texts.Get "title" }} `)
    tmpl.Execute(os.Stdout,struct{
        Texts Texts
    }{
        Texts: texts[lang],
    })
}
票数 6
EN

Stack Overflow用户

发布于 2018-07-03 15:58:05

如果用户的首选语言可能不可用,则可以使用Golang的文本/语言包将请求的语言与受支持的语言相匹配。

作为在Go博客中的这篇优秀文章中概述了,这种语言匹配是一个很重要的问题。

若要使用语言包,请创建一个包含支持语言片段的匹配器:

代码语言:javascript
代码运行次数:0
运行
复制
var serverLangs = []language.Tag{
    language.AmericanEnglish, // en-US fallback
    language.German,          // de
}

var matcher = language.NewMatcher(serverLangs)

然后匹配一种或多种首选语言。(首选语言可以基于用户的IP地址或Accept-Language报头。)

代码语言:javascript
代码运行次数:0
运行
复制
var userPrefs = []language.Tag{
    language.Make("gsw"), // Swiss German
    language.Make("fr"),  // French
}

tag, index, confidence := matcher.Match(sortLanguageTags(&langs, DescendingQuality)...)

要检索语言的相应文本,可以使用tag.String()方法:

代码语言:javascript
代码运行次数:0
运行
复制
type Translation map[string]string
type Translations map[string]Translation

translations := Translations{
        "knee": {
            language.German.String():          "knie",
            language.AmericanEnglish.String(): "knee",
        },
    }

fmt.Println(translations["knee"][tag.String()]) // prints "knie"
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51146794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档