Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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);
                }
            }
        }
Exemplo n.º 4
0
        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);
                }
            }
        }