private IEnumerator TranslateBaidu(string text, string fromCulture, string toCulture, TranslationData translation) { fromCulture = fromCulture.ToLower(); toCulture = toCulture.ToLower(); translation.ProcessedText = text; translation.State = TranslationState.Failed; // From http://blog.csdn.net/u014571132/article/details/53334930 string salt = System.DateTime.Now.Millisecond.ToString(); string md5 = CreateMD5(_appId + text + salt + _appSecret); string url = String.Format("http://api.fanyi.baidu.com/api/trans/vip/translate?q={0}&from={1}&to={2}&appid={3}&salt={4}&sign={5}", WWW.EscapeURL(text), fromCulture, toCulture, _appId, salt, md5); var headers = new Dictionary <string, string> { { "User-Agent", "Mozilla/5.0" }, { "Accept-Charset", "UTF-8" } }; var www = new WWW(url, null, headers); yield return(www); if (www.error != null) { Logger.LogError(www.error); yield break; } string result = string.Empty; var jsonResult = JsonFx.Json.JsonReader.Deserialize <TranslationResult>(www.text); Logger.Log(www.text); for (int i = 0; i < jsonResult.trans_result.Length; i++) { // Only add non-japanese chars to prevent repeated translation foreach (char ch in jsonResult.trans_result[i].dst) { if (!AutoTranslatePlugin.is_japanese_char(ch)) { result += ch; } } } result = result.Replace("\\n", ""); Logger.Log($"Got Translation from Baidu: {result}", Level.Debug); translation.Translation = result; translation.State = TranslationState.Finished; }