>백엔드 개발 >Golang >go 언어를 사용하여 중국어 및 영어 번역용 Baidu 번역 API 구현

go 언어를 사용하여 중국어 및 영어 번역용 Baidu 번역 API 구현

WBOY
WBOY원래의
2023-08-05 08:57:181403검색

Go 언어를 사용하여 중국어 및 영어 번역용 바이두 번역 API 구현

1. 소개

인터넷의 발달로 사람들 간의 의사소통이 점점 더 빈번해지고, 서로 다른 언어 간의 의사소통 문제가 점차 두드러지고 있습니다. . 이 문제를 해결하기 위해 Baidu는 중국어와 영어를 즉시 번역할 수 있는 강력한 번역 API를 제공합니다. 이 기사에서는 Go 언어를 사용하여 Baidu Translation API를 호출하는 방법을 소개하고 해당 코드 예제를 제공합니다.

2. 준비

먼저 Baidu 개발자 플랫폼에서 번역 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
}

마지막으로 번역 기능을 테스트하기 위해 메인 기능을 구현해야 합니다.

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

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

4. 결과 실행

터미널에서 다음 명령을 실행합니다.

go run main.go

프로그램은 Baidu Translation API를 호출하여 "Hello, World!"를 중국어로 번역한 후 결과를 인쇄합니다.

5. 요약

이 글에서는 Go 언어를 사용하여 중국어 및 영어 번역용 바이두 번역 API를 구현하는 방법을 자세히 소개합니다. Baidu Translation API를 호출하면 서로 다른 언어 간의 즉각적인 번역을 쉽게 달성할 수 있습니다. 이 글이 도움이 되셨으면 좋겠습니다. 읽어주셔서 감사합니다!

위 내용은 go 언어를 사용하여 중국어 및 영어 번역용 Baidu 번역 API 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.