-1
我有一个用golang编写的网络应用程序,我打算让它以多种语言提供,我查看了多个可用的l18n软件包,但有些东西并不清楚。Golang网络应用本地化
哪些软件包可以理想地确定用户的语言环境并相应地加载网站?喜欢从浏览器首选项或位置?
我有一个用golang编写的网络应用程序,我打算让它以多种语言提供,我查看了多个可用的l18n软件包,但有些东西并不清楚。Golang网络应用本地化
哪些软件包可以理想地确定用户的语言环境并相应地加载网站?喜欢从浏览器首选项或位置?
您可以使用https://github.com/nicksnyder/go-i18n/
然后在你的项目,你必须创建一个名为的i18n文件夹/和使用这样的功能:
import (
"fmt"
"io/ioutil"
"github.com/nicksnyder/go-i18n/i18n"
)
func loadI18nFiles() {
files, _ := ioutil.ReadDir("i18n")
exists := false
for _, file := range files {
if err := i18n.LoadTranslationFile(fmt.Sprintf("i18n/%s", file.Name())); err != nil {
log.Errorf("i18n: error loading file %s. err: %s", file.Name(), err)
} else {
log.Infof("i18n: lang file %s loaded", file.Name())
}
# Check if you have a default language
if file.Name() == fmt.Sprintf("%s.json", "en-US") {
exists = true
}
}
if !exists {
panic(fmt.Sprintf("Hey! You can't use a default language (%s) that doesn't exists on i18n folder", props.DefaultLang))
}
}
即可使用,进口封装和调用功能:
T, _ := i18n.Tfunc("es-AR", "en-US")
fmt.Printf(T("key"))
I18N文件夹内的每个文件是一个上传.json
例子:
EN-US.json
[
{
"id": "key",
"translation": "Hello World"
}
]
ES-AR.json
[
{
"id": "key",
"translation": "Hola Mundo"
}
]
太广,太多的问题,其中有一些是高度意见为主,其中一些正在寻求一个非现场资源......这个问题应该由于多种原因而关闭。 – Adrian
我同意,对不起,修改了我的问题。 –
问题仍然要求为离线站点资源提供建议,仍然是SO的主题。 – Adrian