Vous pouvez utiliser https://github.com/nicksnyder/go-i18n/
Ensuite, dans votre projet, vous devez créer un dossier appelé i18n/et utiliser une fonction comme ceci:
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))
}
}
ensuite à utiliser, importer le package et appeler la fonction :
T, _ := i18n.Tfunc("es-AR", "en-US")
fmt.Printf(T("key"))
Chaque fichier dans le dossier i18n est un .json
Exemple:
en-US.json
[
{
"id": "key",
"translation": "Hello World"
}
]
es-AR.json
[
{
"id": "key",
"translation": "Hola Mundo"
}
]
trop large, trop de questions, dont certaines sont très sur des opinions, dont certains êtes à la recherche d'une ressource hors site ... cette question devrait être fermée pour plusieurs raisons. – Adrian
Je suis d'accord, désolé pour cela, modifié ma question. –
Question demande toujours des recommandations pour une ressource hors site, encore hors sujet pour SO. – Adrian