2017-08-25 2 views
-1

J'ai une application web écrite en golang, et j'ai l'intention de la rendre disponible dans plus d'une langue, j'ai jeté un coup d'oeil à plusieurs paquets l18n disponibles, mais certaines choses n'étaient pas claires pour moi.Golang web app localisation

Quels paquets seraient idéaux pour déterminer les paramètres régionaux des utilisateurs et charger le site en conséquence? Aimez-vous les préférences ou l'emplacement du navigateur?

+1

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

+0

Je suis d'accord, désolé pour cela, modifié ma question. –

+0

Question demande toujours des recommandations pour une ressource hors site, encore hors sujet pour SO. – Adrian

Répondre

0

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" 
    } 
]