ホームページ  >  記事  >  バックエンド開発  >  Go 言語を使用して中国語と英語の翻訳のための Baidu 翻訳 API を実装する

Go 言語を使用して中国語と英語の翻訳のための Baidu 翻訳 API を実装する

WBOY
WBOYオリジナル
2023-08-05 08:57:181344ブラウズ

Go 言語を使用して中国語と英語の翻訳に Baidu Translation API を実装する

1. はじめに

インターネットの発展に伴い、人々の間のコミュニケーションはますます頻繁になり、異なる言語を使用する人々の間でのコミュニケーションはますます頻繁になり、従業員間のコミュニケーションの問題もますます顕著になってきています。この問題を解決するために、Baidu は中国語と英語の間で即時翻訳を実現できる強力な翻訳 API を提供しています。この記事では、Go 言語を使用して Baidu Translation API を呼び出す方法と、対応するコード例を紹介します。

2. 準備

まず、Baidu Developer Platform で翻訳 API アプリケーションを作成し、対応する API キーと秘密キーを取得する必要があります。プロジェクトのルート ディレクトリに config.json ファイルを作成して、この機密情報を保存します。

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

3. コードの実装

まず、対応するパッケージとツールを導入する必要があります。

package main

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

次に、署名を生成する関数を実装する必要があります。具体的な生成ルールは次のとおりです:

  1. リクエスト パラメーターをキーごとにアルファベット順に並べ替えます。
  2. 要求された元の文字列を秘密キーで結合し、MD5 暗号化を実行します。
  3. 暗号化された文字列を大文字に変換します。

以下は、対応するコードの実装です:

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)
}

次に、HTTP リクエストを送信し、対応する翻訳結果を取得する関数を実装する必要があります。

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
}

最後に、翻訳関数をテストするために main 関数を実装する必要があります。

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

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

4. 実行結果

ターミナルで次のコマンドを実行します:

go run main.go

プログラムは Baidu 翻訳 API を呼び出して、「Hello, World!」を中国語に翻訳します。そして結果を印刷します。

5. 概要

この記事では、Go 言語を使用して中国語と英語の翻訳用の Baidu Translation API を実装する方法を詳しく紹介します。 Baidu Translation API を呼び出すことで、異なる言語間の即時翻訳を簡単に実現できます。この記事があなたのお役に立てば幸いです、読んでいただきありがとうございます!

以上がGo 言語を使用して中国語と英語の翻訳のための Baidu 翻訳 API を実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。