static void Main(string[] args) { var cId = ConfigurationManager.AppSettings["IdColumn"]; var cFrom = ConfigurationManager.AppSettings["FromColumn"]; var cTo = ConfigurationManager.AppSettings["ToColumn"]; var tableName = ConfigurationManager.AppSettings["TableName"]; //填充需要翻译的 var inputContent = FillTranslationList(tableName, cId, cFrom, cTo); //var listener = new HttpListener(); //listener.Prefixes.Add("http://127.0.0.1:23333/"); //listener.Start(); var clientId = ConfigurationManager.AppSettings["ClientId"]; var clientSecret = ConfigurationManager.AppSettings["ClientSecret"]; var auth = new AdmAuthentication(clientId, clientSecret); //翻译 using (var connection = new OleDbConnection(ConfigurationManager.ConnectionStrings["Default"].ConnectionString)) { connection.Open(); Parallel.For(0, inputContent.Count, index => { TranslateAndSave(inputContent, index, auth, connection, tableName, cTo); }); } Console.WriteLine("按回车键退出"); Console.ReadLine(); }
private static void TranslateAndSave(List <Tuple <int, string> > inputContent, int index, AdmAuthentication auth, OleDbConnection connection, string tableName, string cTo) { var id = inputContent[index].Item1; var text = inputContent[index].Item2; if (string.IsNullOrEmpty(text)) { return; } if (ContainsHtmlLabel(text)) { Console.WriteLine("({0}/{1}){2}\t{3}", ++finishedCount, inputContent.Count, text, text); } else { var client = new TranslateService.LanguageServiceClient(); try { var token = auth.GetAccessToken(); var fromLang = ConfigurationManager.AppSettings["FromLanguage"]; var toLang = ConfigurationManager.AppSettings["ToLanguage"]; var result = client.Translate("Bearer " + token.access_token, text, fromLang, toLang, "text/plain", "general"); using (var command = connection.CreateCommand()) { command.CommandText = string.Format(@"Update {0} Set {1}='{2}' Where ID={3}", tableName, cTo, result.Replace("'", "''"), id); command.ExecuteNonQuery(); } Console.WriteLine("({0}/{1}){2}\t{3}", ++finishedCount, inputContent.Count, text, result); } catch { Console.WriteLine("({0}/{1}){2}\t{3}", ++finishedCount, inputContent.Count, text, text); } } }
private static void TranslateAndSave(List<Tuple<int, string>> inputContent, int index, AdmAuthentication auth, OleDbConnection connection, string tableName, string cTo) { var id = inputContent[index].Item1; var text = inputContent[index].Item2; if (string.IsNullOrEmpty(text)) return; if (ContainsHtmlLabel(text)) { Console.WriteLine("({0}/{1}){2}\t{3}", ++finishedCount, inputContent.Count, text, text); } else { var client = new TranslateService.LanguageServiceClient(); try { var token = auth.GetAccessToken(); var fromLang = ConfigurationManager.AppSettings["FromLanguage"]; var toLang = ConfigurationManager.AppSettings["ToLanguage"]; //How to: https://msdn.microsoft.com/en-us/library/ff512437.aspx //maybe we can use TranslateArray here to get a better performance var result = client.Translate("Bearer " + token.access_token, text, fromLang, toLang, "text/plain", "general", null); using (var command = connection.CreateCommand()) { command.CommandText = string.Format(@"Update {0} Set {1}='{2}' Where ID={3}", tableName, cTo, result.Replace("'", "''"), id); command.ExecuteNonQuery(); } Console.WriteLine("({0}/{1}){2}\t{3}", ++finishedCount, inputContent.Count, text, result); } catch { Console.WriteLine("({0}/{1}){2}\t{3}", ++finishedCount, inputContent.Count, text, text); } } }