Maison >développement back-end >Golang >Utilisation du langage Go pour implémenter l'API de traduction Baidu pour la traduction en chinois et en anglais

Utilisation du langage Go pour implémenter l'API de traduction Baidu pour la traduction en chinois et en anglais

WBOY
WBOYoriginal
2023-08-05 08:57:181403parcourir

Utilisez le langage Go pour implémenter l'API de traduction Baidu pour la traduction en chinois et en anglais

1. Introduction

Avec le développement d'Internet, la communication entre les personnes est devenue de plus en plus fréquente et les problèmes de communication entre différentes langues sont progressivement devenus importants . Pour résoudre ce problème, Baidu fournit une API de traduction puissante qui permet d'obtenir une traduction instantanée entre le chinois et l'anglais. Cet article explique comment utiliser le langage Go pour appeler l'API de traduction Baidu et donne des exemples de code correspondants.

2. Préparation

Tout d'abord, nous devons créer une application API de traduction sur la plateforme de développement Baidu et obtenir la clé API et la clé secrète correspondantes. Créez un fichier config.json dans le répertoire racine du projet pour enregistrer ces informations sensibles.

{
  "APIKey": "your_api_key",
  "SecretKey": "your_secret_key"
}

3. Implémentation du code

Tout d'abord, nous devons présenter les packages et outils correspondants.

package main

import (
    "crypto/md5"
    "encoding/hex"
    "encoding/json"
    "fmt"
    "io/ioutil"
    "net/http"
    "net/url"
    "strings"
    "time"
)

Ensuite, nous devons implémenter une fonction pour générer des signatures. Les règles de génération spécifiques sont les suivantes :

  1. Trier les paramètres de la requête par ordre alphabétique par clé.
  2. Splice la chaîne originale demandée avec la clé secrète et effectuez le cryptage MD5.
  3. Convertissez la chaîne cryptée en majuscule.

Voici l'implémentation du code correspondante :

func generateSign(query string, salt string, secretKey string) string {
    h := md5.New()
    h.Write([]byte(secretKey + query + salt))
    sign := hex.EncodeToString(h.Sum(nil))
    return strings.ToUpper(sign)
}

Ensuite, nous devons implémenter une fonction pour envoyer des requêtes HTTP et obtenir les résultats de traduction correspondants.

func translate(query string, from string, to string) string {
    // 加载API Key和Secret Key
    configFile, err := ioutil.ReadFile("config.json")
    if err != nil {
        panic("Failed to read config file.")
    }

    var config struct {
        APIKey    string `json:"APIKey"`
        SecretKey string `json:"SecretKey"`
    }

    err = json.Unmarshal(configFile, &config)
    if err != nil {
        panic("Failed to parse config file.")
    }

    // 构造请求参数
    params := url.Values{}
    params.Set("q", query)
    params.Set("from", from)
    params.Set("to", to)
    params.Set("appid", config.APIKey)

    // 生成salt和sign
    salt := fmt.Sprintf("%d", time.Now().UnixNano())
    sign := generateSign(query, salt, config.SecretKey)

    // 构造请求URL
    apiURL := fmt.Sprintf("https://fanyi-api.baidu.com/api/trans/vip/translate?%s&salt=%s&sign=%s", params.Encode(), salt, sign)

    // 发送HTTP请求
    resp, err := http.Get(apiURL)
    if err != nil {
        panic("Failed to send request to Baidu Translate API.")
    }
    defer resp.Body.Close()

    // 解析响应体
    body, err := ioutil.ReadAll(resp.Body)
    if err != nil {
        panic("Failed to read response body.")
    }

    // 解析JSON数据
    var data struct {
        TransResult []struct {
            Src string `json:"src"`
            Dst string `json:"dst"`
        } `json:"trans_result"`
    }

    err = json.Unmarshal(body, &data)
    if err != nil {
        panic("Failed to parse response body.")
    }

    // 获取翻译结果
    translation := data.TransResult[0].Dst

    return translation
}

Enfin, nous devons implémenter une fonction principale pour tester la fonction de traduction.

func main() {
    query := "Hello, World!"
    from := "auto"
    to := "zh"

    translation := translate(query, from, to)
    fmt.Println(translation)
}

4. Exécution des résultats

Exécutez la commande suivante dans le terminal :

go run main.go

Le programme appellera l'API de traduction Baidu pour traduire "Hello, World en chinois!", puis imprimera les résultats.

5. Résumé

Cet article présente en détail comment utiliser le langage Go pour implémenter l'API de traduction Baidu pour la traduction en chinois et en anglais. En appelant l'API Baidu Translation, nous pouvons facilement réaliser une traduction instantanée entre différentes langues. J'espère que cet article vous sera utile, merci d'avoir lu !

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