首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# 實現英文整句翻譯:調用有道/百度/Google 翻譯 API 完整示例

     編輯:程式設計綜合問答

方案選型

API優點缺點適用場景
有道智雲免費額度大、文檔全、支援批量需註冊開發者、簽名算法略繁瑣國內項目、商業化
百度翻譯開放平台免費額度高、SDK 完善需企業認證提額國內項目
Google Cloud Translation質量最高、語種最全需科學上網、按字符收費國際化產品、高質量需求
微軟 Azure Translator企業級、支援自定義術語收費、需 Azure 訂閱企業級應用

有道翻譯 API 完整調用示例(C#)

using System;
using System.Net.Http;
using System.Text;
using System.Security.Cryptography;
using System.Web;
using Newtonsoft.Json;

public class YoudaoTranslator {
    private readonly string _appKey;
    private readonly string _appSecret;
    private static readonly HttpClient _http = new HttpClient();

    public YoudaoTranslator(string appKey, string appSecret) {
        _appKey = appKey;
        _appSecret = appSecret;
    }

    public async Task<string> TranslateAsync(string text, string from = "en", string to = "zh-CHS") {
        var salt = Guid.NewGuid().ToString("N");
        var curtime = DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString();
        var input = text.Length > 20 ? text.Substring(0, 10) + text.Length + text.Substring(text.Length - 10) : text;
        var signStr = _appKey + input + salt + curtime + _appSecret;
        var sign = ComputeHash(signStr);

        var param = new Dictionary<string, string> {
            ["q"] = text, ["from"] = from, ["to"] = to,
            ["appKey"] = _appKey, ["salt"] = salt, ["sign"] = sign,
            ["signType"] = "v3", ["curtime"] = curtime
        };

        var content = new FormUrlEncodedContent(param);
        var resp = await _http.PostAsync("https://openapi.youdao.com/api", content);
        var json = await resp.Content.ReadAsStringAsync();
        dynamic result = JsonConvert.DeserializeObject(json);
        return string.Join("\n", result.translation);
    }

    private string ComputeHash(string input) {
        using (var sha256 = SHA256.Create()) {
            var bytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(input));
            return BitConverter.ToString(bytes).Replace("-", "").ToLower();
        }
    }
}

// 用法
var translator = new YoudaoTranslator("YOUR_APP_KEY", "YOUR_APP_SECRET");
string chinese = await translator.TranslateAsync("Hello, how are you?");
Console.WriteLine(chinese);  // 輸出:你好,你最近怎麼樣?

關鍵點

  • 簽名算法:v3 版需 appKey + input + salt + curtime + appSecret SHA256。
  • 輸入長度:單次請求建議 < 5000 字符,長文本分段翻譯。
  • 異步調用:UI 線程不阻塞,WinForms 用 async/await,WPF 同理。
  • 錯誤處理:捕獲 HttpRequestException、解析 errorCode(101 簽名錯、102 AppKey 無效、401 額度盡)。

免費替代:調用瀏覽器內置翻譯(非官方)

若無預算,可用 WebView2 加載 https://translate.google.com/?sl=en&tl=zh-CN&text=... 並注入 JS 獲取結果,**但穩定性差、易被風控,不建議生產使用**。

總結

C# 整句翻譯**首選官方翻譯 API(有道/百度/Google/Azure)**,簽名認證、異步調用、錯誤碼處理樣樣俱全。示例代碼可直接集成到 WinForms/WPF/ASP.NET Core,註冊 Key 即用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved