Maison  >  Article  >  développement back-end  >  Comment utiliser Golang pour implémenter la prise en charge multilingue des applications Web

Comment utiliser Golang pour implémenter la prise en charge multilingue des applications Web

王林
王林original
2023-06-24 12:25:402041parcourir

Avec les progrès continus de la mondialisation, le besoin de multilingue devient de plus en plus courant, et la prise en charge multilingue des applications Web est également devenue un problème que les développeurs doivent prendre en compte. Golang, en tant que langage de programmation efficace et facile à utiliser, peut également bien résoudre ce problème. Dans cet article, nous verrons comment implémenter la prise en charge multilingue des applications Web à l'aide de Golang.

1. Principes de base de la prise en charge multilingue

La clé de la prise en charge multilingue des applications Web réside dans la manière d'identifier et de stocker le texte dans différentes langues. Une pratique courante consiste à utiliser le schéma d'internationalisation (Internationalisation, en abrégé i18n) pour faire référence à des ressources textuelles dans différentes langues en spécifiant des identifiants spécifiques dans le programme. Lorsque le programme est en cours d'exécution, le contenu textuel requis est lu à partir du fichier de ressources texte correspondant en fonction des paramètres de langue de l'utilisateur pour obtenir une prise en charge multilingue.

2. Utilisez go-i18n pour obtenir une prise en charge multilingue

Dans Golang, il existe de nombreuses façons d'obtenir une prise en charge multilingue. Parmi elles, go-i18n est une très excellente bibliothèque open source, qui fournit un ensemble de méthodes. pour le traitement des fonctions et des types spécialisés internationaux, et prend en charge les formats de fichiers de ressources texte dans plusieurs langues, telles que JSON, YAML, etc.

Voici les étapes de base pour implémenter le support multilingue à l'aide de go-i18n :

  1. Installer go-i18n

À l'aide de l'outil go get fourni par Golang, vous pouvez facilement installer la bibliothèque go-i18n dans la ligne de commande :

go get -u github.com/nicksnyder/go-i18n/v2/i18n
  1. Préparer les fichiers de ressources texte

En utilisant la bibliothèque go-i18n, nous devons préparer des fichiers de ressources texte dans différentes langues. Ces fichiers sont généralement stockés au format JSON ou YAML, un pour chaque langue.

Supposons que nous ayons deux langues à prendre en charge, à savoir l'anglais (en) et le chinois (zh), alors nous devrions préparer deux fichiers nommés respectivement en.json et zh.json. Ces fichiers doivent être stockés dans le même répertoire, le répertoire où se trouve le programme comme répertoire racine.

Voici un exemple de contenu de en.json :

{
    "greeting": "Hello, World!",
    "welcome": "Welcome, {{.Name}}!"
}

Voici un exemple de contenu de zh.json :

{
    "greeting": "你好,世界!",
    "welcome": "欢迎,{{.Name}}!"
}

Parmi eux, salutation et bienvenue sont les deux identifiants de texte que nous utiliserons dans le programme, {{ .Name }} est un espace réservé qui sera remplacé par un contenu spécifique dans le programme.

  1. Charger les fichiers de ressources texte

Lorsque le programme démarre, nous devons charger en mémoire les fichiers de ressources texte pour toutes les langues prises en charge. Ceci peut être réalisé en utilisant la fonction LoadFiles fournie par go-i18n :

func LoadMessages() error {
    files := []string{"en.json", "zh.json"}
    for _, f := range files {
        absPath := path.Join(".", "locales", f) // 按照指定目录结构来存放文本资源文件
        if err := i18n.LoadTranslationFile(absPath); err != nil {
            return err
        }
    }
    return nil
}

Dans le code ci-dessus, nous stockons le fichier de ressources texte dans un répertoire nommé "locales". Bien entendu, vous pouvez également choisir d’autres structures de répertoires.

  1. Utilisation des ressources texte

Maintenant, nous avons chargé en mémoire les fichiers de ressources texte pour toutes les langues prises en charge. Ensuite, lorsque cela est nécessaire dans le programme, il suffit d'appeler la fonction fournie par go-i18n et de spécifier l'identifiant de texte à utiliser et la variable d'environnement de la langue de l'utilisateur pour obtenir dynamiquement la ressource texte correspondante.

func homeHandler(w http.ResponseWriter, r *http.Request) {
    userLang := r.Header.Get("Accept-Language")
    localizer := i18n.NewLocalizer(i18n.MustLoadTranslations("locales"), userLang)

    greeting := localizer.MustLocalize(&i18n.LocalizeConfig{
        DefaultMessage: &i18n.Message{
            ID: "greeting",
            Other: "Hello, World!",
        },
    })

    welcome := localizer.MustLocalize(&i18n.LocalizeConfig{
        DefaultMessage: &i18n.Message{
            ID:    "welcome",
            Other: "Welcome, {{.Name}}!",
        },
        TemplateData: map[string]interface{}{
            "Name": "John Doe",
        },
    })

    fmt.Fprintln(w, greeting, welcome)
}

Dans le code ci-dessus, nous obtenons d'abord le paramètre de langue de l'utilisateur à partir de l'en-tête de la requête HTTP et créons un objet de localisation de langue à l'aide de la fonction NewLocalizer. Ensuite, via la fonction MustLocalize, spécifiez le contenu spécifique de l'identifiant de texte et de l'espace réservé à utiliser, et obtenez la ressource texte correspondante. Ici, nous utilisons MustLocalize au lieu de Localize car nous devons nous assurer que le programme sera traduit correctement et toute erreur doit être signalée immédiatement.

À ce stade, nous avons implémenté avec succès le support multilingue pour les applications Web écrites en Golang !

3. Résumé

Dans cet article, nous avons exploré comment utiliser Golang pour implémenter la prise en charge multilingue des applications Web. En utilisant la bibliothèque go-i18n, nous pouvons facilement préparer, charger et utiliser des fichiers de ressources texte pour obtenir une prise en charge multilingue. J'espère que cet article pourra vous aider à mieux comprendre les principes de base des solutions d'internationalisation et à mieux comprendre la prise en charge multilingue dans Golang.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn