using Thousandto.Core.Base; using System; using System.Collections.Generic; using System.IO; using System.Net; using System.Text; using JSONNode = UnityEngine.Gonbest.MagicCube.JSONNode; namespace Thousandto.Code.Logic { public class Translator { static string host = "https://api.cognitive.microsofttranslator.com"; static string path = "/translate?api-version=3.0"; // NOTE: Replace this example key with a valid subscription key. static string key = "06e4adadda08414fb5031f0c56d83849"; static Dictionary dic = new Dictionary() { {LanguageConstDefine.CH, "zh-Hans" }, {LanguageConstDefine.TW, "zh-Hant" }, {LanguageConstDefine.TH, "th" }, {LanguageConstDefine.KR, "ko" }, {LanguageConstDefine.EN, "en" }, {LanguageConstDefine.JP, "ja" }, {LanguageConstDefine.VIE, "vi" } }; public static string Translate(string text = "Hello Dinghuaqiang", string lang = LanguageConstDefine.CH) { string params_ = ""; if (dic.ContainsKey(lang)) params_ = string.Format("&to={0}", dic[lang]); else params_ = "&to=zh-Hans"; string uri = host + path + params_; string str = string.Format("[{{\"Text\":\"{0}\"}}]", text); byte[] data = Encoding.UTF8.GetBytes(str); HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri); request.Method = "POST"; ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback(CheckValidationResult); request.ContentType = "application/json; charset=UTF-8"; request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"; request.Headers.Add("Ocp-Apim-Subscription-Key", key); Stream newStream = request.GetRequestStream(); // Send the data. newStream.Write(data, 0, data.Length); newStream.Close(); // Get response HttpWebResponse myResponse = (HttpWebResponse)request.GetResponse(); StreamReader reader = new StreamReader(myResponse.GetResponseStream(), Encoding.UTF8); string content = reader.ReadToEnd(); JSONNode json = JSONNode.Parse(content); JSONNode noticeData = json[0]; JSONNode transData = noticeData["translations"]; string lanStr = ""; var itor = transData.Childs.GetEnumerator(); while (itor.MoveNext()) { var child = itor.Current["text"]; if (child == null || child.Value == null) continue; lanStr = child.Value; } return lanStr; } public static bool CheckValidationResult(object sender, System.Security.Cryptography.X509Certificates.X509Certificate certificate, System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors errors) { // Always accept return true; //总是接受 } } }