Esempio n. 1
0
        /// <summary>
        /// Check if the Translation service is ready to use, with a valid client ID and secret
        /// </summary>
        /// <returns>true if ready, false if not</returns>
        public static bool IsTranslationServiceReady()
        {
            switch (authMode)
            {
            case AuthMode.Azure:
                try
                {
                    AzureAuthToken authTokenSource = new AzureAuthToken(_ClientID);
                    string         headerValue     = authTokenSource.GetAccessToken();
                }
                catch { return(false); }
                break;

            case AuthMode.AppId:
                try
                {
                    var bind = new BasicHttpBinding {
                        Name = "BasicHttpBinding_LanguageService"
                    };
                    var epa = new EndpointAddress(_EndPointAddress.Replace("https:", "http:") + "/V2/soap.svc");
                    LanguageServiceClient client = new LanguageServiceClient(bind, epa);
                    string[] languages           = new string[1];
                    languages[0] = "en";
                    client.GetLanguageNames(GetHeaderValue(), "en", languages, false);
                }
                catch { return(false); }
                break;

            default:
                return(false);
            }
            return(true);
        }
Esempio n. 2
0
        /// <summary>
        /// Gets a token for the specified subscription.
        /// </summary>
        /// <returns>The encoded JWT token prefixed with the string "Bearer ".</returns>
        /// <remarks>
        /// This method uses a cache to limit the number of request to the token service. A fresh token
        /// can be re-used during its lifetime of 10 minutes. After a successful request to the token
        /// service, this method caches the access token. Subsequent invocations of the method return the
        /// cached token for the next 8 minutes. After 8 minutes, a new token is fetched from the token
        /// service and the cache is updated.
        /// </remarks>
        public static async Task <string> GetAccessTokenAsync(string key, string tokenUri = ServiceUrl)
        {
            AzureAuthToken azureAuthToken;

            // Re-use the cached AzureAuthToken if there is one.
            if (_tokens.ContainsKey(key))
            {
                azureAuthToken = _tokens[key];
                if ((DateTime.Now - azureAuthToken.LastUpdateTime) > TokenCacheDuration)
                {
                    // Current token value expires; lets create a new one
                    azureAuthToken.StoredTokenValue = await GenerateTokenAsync(key, tokenUri);
                }
            }
            else
            {
                // There is not an Object associated to the key,
                // create a new one an put in into the dictionary
                var tokenValue = await GenerateTokenAsync(key, tokenUri);

                azureAuthToken = new AzureAuthToken(key, tokenValue);
                _tokens.Add(key, azureAuthToken);
            }

            return(azureAuthToken.StoredTokenValue);
        }
Esempio n. 3
0
        public static async Task <string> TranslateText(string Text, string sourceLanguage, string destinationLanguage)
        {
            string         text           = Text;
            string         from           = sourceLanguage;
            string         to             = destinationLanguage;
            string         uri            = "https://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + HttpUtility.UrlEncode(text) + "&from=" + from + "&to=" + to;
            string         translation    = "";
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);
            string         subKey         = System.Configuration.ConfigurationManager.AppSettings["TranslatorKey"];

            var    authTokenSource = new AzureAuthToken(subKey);
            string authToken;

            authToken = await authTokenSource.GetAccessTokenAsync();

            httpWebRequest.Headers.Add("Authorization", authToken);
            using (WebResponse response = await httpWebRequest.GetResponseAsync())
                using (Stream stream = response.GetResponseStream())
                {
                    DataContractSerializer dcs = new DataContractSerializer(Type.GetType("System.String"));
                    translation = (string)dcs.ReadObject(stream);
                }

            return(translation);
        }
        /// <summary>
        /// Breaks a piece of text into sentences and returns an array containing the lengths in each sentence.
        /// </summary>
        /// <param name="text">The text to analyze and break.</param>
        /// <param name="languageID">The language identifier to use.</param>
        /// <returns>An array of integers representing the lengths of the sentences. The length of the array is the number of sentences, and the values are the length of each sentence.</returns>
        public static int[] BreakSentences(string text, string languageID)
        {
            var bind = new BasicHttpBinding
            {
                Name                   = "BasicHttpBinding_LanguageService",
                OpenTimeout            = TimeSpan.FromMinutes(5),
                CloseTimeout           = TimeSpan.FromMinutes(5),
                ReceiveTimeout         = TimeSpan.FromMinutes(5),
                MaxReceivedMessageSize = int.MaxValue,
                MaxBufferPoolSize      = int.MaxValue,
                MaxBufferSize          = int.MaxValue,
                Security               =
                    new BasicHttpSecurity {
                    Mode = BasicHttpSecurityMode.Transport
                }
            };

            var epa = new EndpointAddress("https://api.microsofttranslator.com/V2/soap.svc");

            TranslatorService.LanguageServiceClient client = new LanguageServiceClient(bind, epa);
            AzureAuthToken authTokenSource = new AzureAuthToken(_ClientID);
            string         headerValue     = authTokenSource.GetAccessToken();

            return(client.BreakSentences(headerValue, text, languageID));
        }
        /// <summary>
        /// Call once to initialize the static variables
        /// </summary>
        public static void Initialize()
        {
            LoadCredentials();
            if (!IsTranslationServiceReady())
            {
                return;
            }
            var bind = new BasicHttpBinding {
                Name = "BasicHttpBinding_LanguageService"
            };
            var epa = new EndpointAddress("http://api.microsofttranslator.com/V2/soap.svc");
            LanguageServiceClient client          = new LanguageServiceClient(bind, epa);
            AzureAuthToken        authTokenSource = new AzureAuthToken(_ClientID);
            string headerValue = authTokenSource.GetAccessToken();

            string[] languages     = client.GetLanguagesForTranslate(headerValue);
            string[] languagenames = client.GetLanguageNames(headerValue, "en", languages, false);
            for (int i = 0; i < languages.Length; i++)
            {
                if (!AvailableLanguages.ContainsKey(languages[i]))
                {
                    AvailableLanguages.Add(languages[i], languagenames[i]);
                }
            }
            client.Close();
        }
Esempio n. 6
0
        async Task <string> _init(string subsKey)
        {
            var bearer = _checkCache(subsKey);

            if (bearer == null)
            {
                var authTokenSource = new AzureAuthToken(subsKey);

                try
                {
                    bearer = await authTokenSource.GetAccessTokenAsync();

                    _setCache(subsKey, bearer);
                }

                catch (HttpRequestException)
                {
                    switch (authTokenSource.RequestStatusCode)
                    {
                    case HttpStatusCode.Unauthorized:
                        Console.WriteLine("Request to token service is not authorized (401). Check that the Azure subscription key is valid.");
                        break;

                    case HttpStatusCode.Forbidden:
                        Console.WriteLine("Request to token service is not authorized (403). For accounts in the free-tier, check that the account quota is not exceeded.");
                        break;
                    }
                    throw;
                }
            }

            return(bearer);
        }
 public MainWindow()
 {
     InitializeComponent();
     tokenProvider = new AzureAuthToken(TEXT_TRANSLATION_API_SUBSCRIPTION_KEY);
     GetLanguagesForTranslate();                                           //List of languages that can be translated
     GetLanguageNamesMethod(tokenProvider.GetAccessToken(), friendlyName); //Friendly name of languages that can be translated
     GetLanguagesForSpeakMethod(tokenProvider.GetAccessToken());           //List of languages that have a synthetic voice for text to speech
     enumLanguages();                                                      //Create the drop down list of langauges
 }
Esempio n. 8
0
        public void Initialize()
        {
            Uri issueTokenUri = new Uri("https://westeurope.api.cognitive.microsoft.com/sts/v1.0/issuetoken");

            ISubscriptionKeyProvider provider = new SubscriptionKeyEnviromentVariableProvider("SpeechServiceSubscriptionKey");
            var auth = new AzureAuthToken(provider, issueTokenUri);

            _accessToken = auth.GetAccessToken();
        }
 /// <summary>
 /// Check if the Translation service is ready to use, with a valid client ID and secret
 /// </summary>
 /// <returns>true if ready, false if not</returns>
 public static bool IsTranslationServiceReady()
 {
     try
     {
         AzureAuthToken authTokenSource = new AzureAuthToken(_ClientID);
         string         headerValue     = authTokenSource.GetAccessToken();
     }
     catch { return(false); }
     return(true);
 }
Esempio n. 10
0
        public MainWindow()
        {
            InitializeComponent();
            tokenProvider = new AzureAuthToken(TEXT_TRANSLATION_API_SUBSCRIPTION_KEY);
            var languageCodes          = TranslateApi.GetLanguageCodesForTranslate(tokenProvider.GetAccessToken());
            var languageCodesAndTitles = TranslateApi.GetLanguageNamesMethod(tokenProvider.GetAccessToken(), languageCodes);

            //List of languages that have a synthetic voice for text to speech
            speakLanguages = TranslateApi.GetLanguagesForSpeakMethod(tokenProvider.GetAccessToken());
            PopulateLanguagesComboBox(languageCodesAndTitles); //Create the drop down list of langauges
        }
Esempio n. 11
0
        public static async Task <string> TranslateAsync(String input)
        {
            var translatorService = new MSTranslator.LanguageServiceClient();

            var authTokenSource = new AzureAuthToken(SubscriptionKey);
            var token           = string.Empty;

            //TODO: Try catch here
            token = await authTokenSource.GetAccessTokenAsync();

            //return "hello baby";
            return(translatorService.Translate(token, input, "zh-CHT", "zh-CHS", "text/plain", "general", string.Empty));
        }
        private static string GetHeaderValue()
        {
            string headerValue = null;

            if (authMode == AuthMode.Azure)
            {
                AzureAuthToken authTokenSource = new AzureAuthToken(_AzureKey);
                headerValue = authTokenSource.GetAccessToken();
            }
            else
            {
                headerValue = appid;
            }
            return(headerValue);
        }
        private static string GetHeaderValue()
        {
            string headerValue = null;

            if (authMode == AuthMode.Azure)
            {
                AzureAuthToken authTokenSource = new AzureAuthToken(_AzureKey, UseAzureGovernment ? AuthServiceUrlGov : AuthServiceUrlPublic);
                headerValue = authTokenSource.GetAccessToken();
            }
            else
            {
                headerValue = appid;
            }
            return(headerValue);
        }
        /// <summary>
        /// Connect to the server before sending audio
        /// It will get the authentication credentials and add it to the header
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public async Task Connect(string from, string to, string voice, OnSpeechTranslateResult onSpeechTranslateResult, OnTextToSpeechData onTextToSpeechData)
        {
            this.webSocket               = new MessageWebSocket();
            this.onTextToSpeechData      = onTextToSpeechData;
            this.onSpeechTranslateResult = onSpeechTranslateResult;

            // Get Azure authentication token
            var tokenProvider = new AzureAuthToken(this.clientSecret);
            var bearerToken   = await tokenProvider.GetAccessTokenAsync();

            this.webSocket.SetRequestHeader("Authorization", bearerToken);

            var url = String.Format(SpeechTranslateUrl, from, to, voice == null ? String.Empty : "&features=texttospeech&voice=" + voice);

            this.webSocket.MessageReceived += WebSocket_MessageReceived;

            // setup the data writer
            this.dataWriter           = new DataWriter(this.webSocket.OutputStream);
            this.dataWriter.ByteOrder = ByteOrder.LittleEndian;
            this.dataWriter.WriteBytes(GetWaveHeader());

            // connect to the service
            await this.webSocket.ConnectAsync(new Uri(url));

            // flush the dataWriter periodically
            this.timer = new Timer(async(s) =>
            {
                if (this.dataWriter.UnstoredBufferLength > 0)
                {
                    try
                    {
                        await this.dataWriter.StoreAsync();
                    }
                    catch (Exception e)
                    {
                        this.onSpeechTranslateResult(new Result()
                        {
                            Status = "DataWriter Failed: " + e.Message
                        });
                    }
                }

                // reset the timer
                this.timer.Change(TimeSpan.FromMilliseconds(250), Timeout.InfiniteTimeSpan);
            },
                                   null, TimeSpan.FromMilliseconds(250), Timeout.InfiniteTimeSpan);
        }
Esempio n. 15
0
        private void TranslateBtn_Clicked(object sender, EventArgs e)
        {
            AzureAuthToken azureAuthToken = new AzureAuthToken("731cf5d466e543409989ce06c9499979");
            var            authToken      = azureAuthToken.GetAccessToken();

            LanguageDetector languageDetector = new LanguageDetector(authToken);
            var lang = languageDetector.Detect(toTranslate.Text);

            Translator translator = new Translator(authToken);
            var        result     = translator.Translate(toTranslate.Text, lang, languagePicker.SelectedItem.ToString());

            translated.Text = result;

            App.Database.SaveItem(new Models.Translation {
                FromLang = languagePicker.SelectedItem.ToString(), ToLang = lang, FromText = toTranslate.Text, ToText = result
            });
        }
        public static UserTranslation[] GetUserTranslations(string fromlanguage, string tolanguage, int skip, int count)
        {
            var bind = new BasicHttpBinding
            {
                Name                   = "BasicHttpBinding_LanguageService",
                OpenTimeout            = TimeSpan.FromMinutes(5),
                CloseTimeout           = TimeSpan.FromMinutes(5),
                ReceiveTimeout         = TimeSpan.FromMinutes(5),
                MaxReceivedMessageSize = int.MaxValue,
                MaxBufferPoolSize      = int.MaxValue,
                MaxBufferSize          = int.MaxValue,
                Security               =
                    new BasicHttpSecurity {
                    Mode = BasicHttpSecurityMode.Transport
                }
            };

            var epa = new EndpointAddress("https://api.microsofttranslator.com/v2/beta/ctfreporting.svc");

            CtfReportingService.CtfReportingServiceClient client = new CtfReportingService.CtfReportingServiceClient(bind, epa);
            AzureAuthToken authTokenSource = new AzureAuthToken(_ClientID);
            string         headerValue     = authTokenSource.GetAccessToken();

            CtfReportingService.UserTranslation[] usertranslations = new CtfReportingService.UserTranslation[count];

            usertranslations = client.GetUserTranslations(headerValue, string.Empty, fromlanguage, tolanguage, 0, 10, string.Empty, string.Empty, DateTime.MinValue, DateTime.MaxValue, skip, count, true);

            UserTranslation[] usertranslationsreturn = new UserTranslation[count];
            usertranslationsreturn.Initialize();

            for (int i = 0; i < usertranslations.Length; i++)
            {
                usertranslationsreturn[i].CreatedDateUtc = usertranslations[i].CreatedDateUtc;
                usertranslationsreturn[i].From           = usertranslations[i].From;
                usertranslationsreturn[i].OriginalText   = usertranslations[i].OriginalText;
                usertranslationsreturn[i].To             = usertranslations[i].To;
                usertranslationsreturn[i].TranslatedText = usertranslations[i].TranslatedText;
                usertranslationsreturn[i].Rating         = usertranslations[i].Rating;
                usertranslationsreturn[i].Uri            = usertranslations[i].Uri;
                usertranslationsreturn[i].User           = usertranslations[i].User;
            }

            return(usertranslationsreturn);
        }
Esempio n. 17
0
        public async Task <string> TranslatorDetect(string content)
        {
            string returnContentType = string.Empty;
            var    authTokenSource   = new AzureAuthToken(strAzureAuthToken);
            string authToken;

            authToken = await authTokenSource.GetAccessTokenAsync();

            string         uri            = "https://api.microsofttranslator.com/v2/Http.svc/Detect?text=" + content;
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);

            httpWebRequest.Headers.Add("Authorization", authToken);
            using (WebResponse response = httpWebRequest.GetResponse())
                using (Stream stream = response.GetResponseStream())
                {
                    DataContractSerializer dcs = new DataContractSerializer(Type.GetType("System.String"));
                    returnContentType = (string)dcs.ReadObject(stream);
                }
            return(returnContentType);
        }
Esempio n. 18
0
        public async Task <string> TranslatorExecute(string from, string to, string content)
        {
            string returnContent   = string.Empty;
            var    authTokenSource = new AzureAuthToken(strAzureAuthToken);
            string authToken;

            authToken = await authTokenSource.GetAccessTokenAsync();

            string         uri            = "https://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + HttpUtility.UrlEncode(content) + "&from=" + from + "&to=" + to;
            HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(uri);

            httpWebRequest.Headers.Add("Authorization", authToken);
            using (WebResponse res = httpWebRequest.GetResponse())
                using (Stream stream = res.GetResponseStream())
                {
                    DataContractSerializer dcs = new DataContractSerializer(Type.GetType("System.String"));
                    returnContent = (string)dcs.ReadObject(stream);
                }
            return(returnContent);
        }
        /// <summary>
        /// Breaks a piece of text into sentences and returns an array containing the lengths in each sentence.
        /// </summary>
        /// <param name="text">The text to analyze and break.</param>
        /// <param name="languageID">The language identifier to use.</param>
        /// <returns>An array of integers representing the lengths of the sentences. The length of the array is the number of sentences, and the values are the length of each sentence.</returns>
        async public static Task <int[]> BreakSentencesAsync(string text, string languageID)
        {
            var bind = new BasicHttpBinding
            {
                Name                   = "BasicHttpBinding_LanguageService",
                OpenTimeout            = TimeSpan.FromMinutes(5),
                CloseTimeout           = TimeSpan.FromMinutes(5),
                ReceiveTimeout         = TimeSpan.FromMinutes(5),
                MaxReceivedMessageSize = int.MaxValue,
                MaxBufferPoolSize      = int.MaxValue,
                MaxBufferSize          = int.MaxValue,
                Security               =
                    new BasicHttpSecurity {
                    Mode = BasicHttpSecurityMode.Transport
                }
            };

            var epa = new EndpointAddress("https://api.microsofttranslator.com/V2/soap.svc");

            TranslatorService.LanguageServiceClient client = new LanguageServiceClient(bind, epa);
            AzureAuthToken authTokenSource = new AzureAuthToken(_ClientID);
            string         headerValue     = authTokenSource.GetAccessToken();

            int[] result = { 0 };
            try
            {
                Task <int[]> BSTask = client.BreakSentencesAsync(headerValue, text, languageID);
                result = await BSTask;
            }
            catch
            {
                for (int i = 1; i <= 10; i++)
                {
                    Thread.Sleep(5000 * i);
                    Task <int[]> BSTask = client.BreakSentencesAsync(headerValue, text, languageID);
                    result = await BSTask;
                }
            }
            return(result);
        }
        /// <summary>
        /// Test if a given category value is a valid category in the system
        /// </summary>
        /// <param name="category">Category ID</param>
        /// <returns>True if the category is valid</returns>
        public static bool IsCategoryValid(string category)
        {
            if (category == string.Empty)
            {
                return(true);
            }
            if (category == "")
            {
                return(true);
            }

            AzureAuthToken authTokenSource = new AzureAuthToken(_ClientID);

            bool returnvalue = true;

            //it may take a while until the category is loaded on server
            for (int i = 0; i < 3; i++)
            {
                try
                {
                    string headerValue = authTokenSource.GetAccessToken();
                    var    bind        = new BasicHttpBinding {
                        Name = "BasicHttpBinding_LanguageService"
                    };
                    var epa = new EndpointAddress("http://api.microsofttranslator.com/V2/soap.svc");
                    LanguageServiceClient client = new LanguageServiceClient(bind, epa);
                    client.Translate(headerValue, "Test", "en", "fr", "text/plain", category);
                    returnvalue = true;
                    break;
                }
                catch {
                    returnvalue = false;
                    Thread.Sleep(1000);
                    continue;
                }
            }
            return(returnvalue);
        }
        /// <summary>
        /// Adds a translation to Microsoft Translator's translation memory.
        /// </summary>
        /// <param name="originalText">Required. A string containing the text to translate from. The string has a maximum length of 1000 characters.</param>
        /// <param name="translatedText">Required. A string containing translated text in the target language. The string has a maximum length of 2000 characters. </param>
        /// <param name="from">Required. A string containing the language code of the source language. Must be a valid culture name. </param>
        /// <param name="to">Required. A string containing the language code of the target language. Must be a valid culture name. </param>
        /// <param name="rating">Optional. An int representing the quality rating for this string. Value between -10 and 10. Defaults to 1. </param>
        /// <param name="user">Required. A string used to track the originator of the submission. </param>
        public static void AddTranslation(string originalText, string translatedText, string from, string to, int rating, string user)
        {
            var bind = new BasicHttpBinding
            {
                Name                   = "BasicHttpBinding_LanguageService",
                OpenTimeout            = TimeSpan.FromMinutes(5),
                CloseTimeout           = TimeSpan.FromMinutes(5),
                ReceiveTimeout         = TimeSpan.FromMinutes(5),
                MaxReceivedMessageSize = int.MaxValue,
                MaxBufferPoolSize      = int.MaxValue,
                MaxBufferSize          = int.MaxValue,
                Security               =
                    new BasicHttpSecurity {
                    Mode = BasicHttpSecurityMode.Transport
                }
            };

            var epa = new EndpointAddress("https://api.microsofttranslator.com/V2/soap.svc");

            TranslatorService.LanguageServiceClient client = new LanguageServiceClient(bind, epa);
            AzureAuthToken authTokenSource = new AzureAuthToken(_ClientID);
            string         headerValue     = authTokenSource.GetAccessToken();

            try
            {
                client.AddTranslation(headerValue, originalText, translatedText, from, to, rating, "text/plain", _CategoryID, user, string.Empty);
            }
            catch
            {
                for (int i = 0; i < 3; i++)
                {
                    Thread.Sleep(500);
                    client.AddTranslation(headerValue, originalText, translatedText, from, to, rating, "text/plain", _CategoryID, user, string.Empty);
                }
            }
            return;
        }
Esempio n. 22
0
        private static async Task MainAsync()
        {
            string key = "ad4ad4c1cf0640b68a518a34b31c29a5";

            try
            {
                if (string.IsNullOrWhiteSpace(key))
                {
                    throw new ArgumentException("The subscription key has not been provided.");
                }

                var authTokenSource = new AzureAuthToken(key.Trim());
                try
                {
                    authTokenTranslate = await authTokenSource.GetAccessTokenAsync();
                }
                catch (HttpRequestException)
                {
                    if (authTokenSource.RequestStatusCode == HttpStatusCode.Unauthorized)
                    {
                        Console.WriteLine("Request to token service is not authorized (401). Check that the Azure subscription key is valid.");
                        return;
                    }
                    if (authTokenSource.RequestStatusCode == HttpStatusCode.Forbidden)
                    {
                        Console.WriteLine("Request to token service is not authorized (403). For accounts in the free-tier, check that the account quota is not exceeded.");
                        return;
                    }
                    throw;
                }
            }
            catch (ArgumentException ex)
            {
                Console.WriteLine("Error:\n  {0}\n", ex.Message);
            }
        }
Esempio n. 23
0
        private static async Task <string> Translate(string text, TranslationSetting activeSetting)
        {
            var    authTokenSource = new AzureAuthToken(activeSetting.SubscriptionKey.Trim());
            string authToken;

            try
            {
                authToken = await authTokenSource.GetAccessTokenAsync();
            }
            catch (HttpRequestException)
            {
                if (authTokenSource.RequestStatusCode == HttpStatusCode.Unauthorized)
                {
                    throw new ApplicationException("Request to token service is not authorized (401). Check that the Azure subscription key is valid.");
                }
                if (authTokenSource.RequestStatusCode == HttpStatusCode.Forbidden)
                {
                    throw new ApplicationException("Request to token service is not authorized (403). For accounts in the free-tier, check that the account quota is not exceeded.");
                }
                throw;
            }

            return(TranslateApi.Translate(authToken, text, activeSetting.From, activeSetting.To, activeSetting.Category));
        }
Esempio n. 24
0
        private async Task <string> AuthoizeService(string key)
        {
            var    authTokenSource = new AzureAuthToken(key.Trim());
            string authToken;

            try
            {
                authToken = await authTokenSource.GetAccessTokenAsync();
            }
            catch (HttpRequestException)
            {
                if (authTokenSource.RequestStatusCode == HttpStatusCode.Unauthorized)
                {
                    return("Request to token service is not authorized (401). Check that the Azure subscription key is valid.");
                }
                if (authTokenSource.RequestStatusCode == HttpStatusCode.Forbidden)
                {
                    return("Request to token service is not authorized (403). For accounts in the free-tier, check that the account quota is not exceeded.");
                }
                throw;
            }

            return(authToken);
        }
Esempio n. 25
0
        private void btnTransl_Click(object sender, EventArgs e)
        {
            tokenProvider = new AzureAuthToken(tbAuthkey.Text);
            string languageCode = cbLang.Text;

            // languageCodesAndTitles.TryGetValue(cbLang.Text, out languageCode); //get the language code from the dictionary based on the selection in the combobox

            if (languageCode == null || languageCode.Equals(""))  //in case no language is selected.
            {
                languageCode = "en";
                LogOut.Text  = "Inglês por defeito";
            }
            else
            {
                LogOut.Text = string.Empty;
            }


            //*****BEGIN CODE TO MAKE THE CALL TO THE TRANSLATOR SERVICE TO PERFORM A TRANSLATION FROM THE USER TEXT ENTERED

            string txtToTranslate = tbT2t.Text;

            tbTransl.Text = translate(txtToTranslate, languageCode);
        }
Esempio n. 26
0
 public ITranslator Keys(string[] keys)
 {
     this.keys       = keys;
     authTokenSource = new AzureAuthToken(keys[currentTokenIndex]);
     return(this);
 }
Esempio n. 27
0
        private async Task ProcessOneRequest(string line, TranslationPair[] translations)
        {
            if (++requests % 10 == 0)
            {
                Console.WriteLine($"[{DateTime.UtcNow}]: {requests} was processed");
            }

            if (from == "ru")
            {
                line = new string(TranscryptLine(line).ToArray());
            }

            var beginningIndex = currentTokenIndex;
            var succeeded      = false;

            do
            {
                string authToken = await GetToken();

                if (!string.IsNullOrEmpty(authToken))
                {
                    try
                    {
                        var text = HttpUtility.UrlEncode(line);
                        var uri  = new Uri("https://api.microsofttranslator.com/v2/http.svc/Translate?text=" + $"{text}&from={from}&to={to}");

                        using (var request = new HttpRequestMessage())
                        {
                            request.Method     = HttpMethod.Get;
                            request.RequestUri = uri;
                            request.Headers.TryAddWithoutValidation("Authorization", authToken);
                            var response = await http.SendAsync(request);

                            response.EnsureSuccessStatusCode();
                            var stream = await response.Content.ReadAsStreamAsync();

                            DataContractSerializer dcs = new DataContractSerializer(Type.GetType("System.String"));
                            string translation         = (string)dcs.ReadObject(stream);

                            var lines = translation.Split(new string[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries);
                            for (var i = 0; i < lines.Length; i++)
                            {
                                translations[i].Translation = lines[i];
                            }

                            succeeded = true;
                        }
                    }
                    catch (Exception ex)
                    {
                        var errorMessage = $"Exception {ex.Message} of type {ex.GetType()} at {Environment.NewLine}{ex.StackTrace}";
                        Console.WriteLine($"[{DateTime.UtcNow}]: {errorMessage}");
                        errors.Add($"{line} was failed with:{errors}");
                    }
                }

                if (!succeeded)
                {
                    Console.WriteLine($"[{DateTime.UtcNow}]: Switching to the next key with index {++currentTokenIndex}");

                    currentTokenIndex = (byte)(currentTokenIndex == keys.Length
                        ? 0
                        : currentTokenIndex);
                    authTokenSource = new AzureAuthToken(keys[currentTokenIndex]);
                }
            }while (!succeeded && beginningIndex != currentTokenIndex);

            foreach (var trans in translations)
            {
                allTranslations.Add(trans);
            }
        }
Esempio n. 28
0
        public static async Task TranslateTexts(List <string> texts, string sourceLanguage, string destinationLanguage)
        {
            string subKey = System.Configuration.ConfigurationManager.AppSettings["TranslatorKey"];
            var    from   = sourceLanguage;
            var    to     = destinationLanguage;

            var uri  = "https://api.microsofttranslator.com/v2/Http.svc/TranslateArray";
            var body = "<TranslateArrayRequest>" +
                       "<AppId />" +
                       "<From>{0}</From>" +
                       "<Options>" +
                       " <Category xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                       "<ContentType xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\">{1}</ContentType>" +
                       "<ReservedFlags xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                       "<State xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                       "<Uri xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                       "<User xmlns=\"http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2\" />" +
                       "</Options>" +
                       "<Texts>";

            foreach (string text in texts)
            {
                body += "<string xmlns=\"http://schemas.microsoft.com/2003/10/Serialization/Arrays\">" + text + "</string>";
            }

            body += "</Texts>" +
                    "<To>{2}</To>" +
                    "</TranslateArrayRequest>";

            string requestBody = string.Format(body, from, "text/plain", to);

            using (var client = new HttpClient())
                using (var request = new HttpRequestMessage())
                {
                    request.Method     = HttpMethod.Post;
                    request.RequestUri = new Uri(uri);
                    request.Content    = new StringContent(requestBody, Encoding.UTF8, "text/xml");

                    var    authTokenSource = new AzureAuthToken(subKey);
                    string authToken;
                    authToken = await authTokenSource.GetAccessTokenAsync();

                    request.Headers.Add("Authorization", authToken);
                    var response = await client.SendAsync(request);

                    var responseBody = await response.Content.ReadAsStringAsync();

                    switch (response.StatusCode)
                    {
                    case HttpStatusCode.OK:
                        Console.WriteLine("Request status is OK. Result of translate array method is:");
                        var doc = XDocument.Parse(responseBody);
                        var ns  = XNamespace.Get("http://schemas.datacontract.org/2004/07/Microsoft.MT.Web.Service.V2");
                        var sourceTextCounter = 0;
                        foreach (XElement xe in doc.Descendants(ns + "TranslateArrayResponse"))
                        {
                            foreach (var node in xe.Elements(ns + "TranslatedText"))
                            {
                                if (sourceTextCounter < texts.Count)
                                {
                                    texts[sourceTextCounter] = node.Value;
                                }
                            }
                            sourceTextCounter++;
                        }
                        break;

                    default:
                        Console.WriteLine("Request status code is: {0}.", response.StatusCode);
                        Console.WriteLine("Request error message: {0}.", responseBody);
                        break;
                    }
                }
        }
Esempio n. 29
0
        private void buttonTranslateTag_Click(object sender, EventArgs e)
        {
            LogOut.Text = "initiating connection";
            SqlConnection myConnection = new SqlConnection("user id=wit5@k22x2gwhfr;" +
                                                           "password=@worldit2008;server=tcp:k22x2gwhfr.database.windows.net;" +
                                                           "Trusted_Connection=false;" +
                                                           "Encrypt=true;" +
                                                           "database=DESCUBRA_BD;" +
                                                           "MultipleActiveResultSets=True;" +
                                                           "connection timeout=120");
            //Data Source = tcp:k22x2gwhfr.database.windows.net,1433; Initial Catalog = DESCUBRA_BD; User ID = wit5@k22x2gwhfr; Password = @worldit2008
            SqlConnection mySecondConnection = new SqlConnection("user id=wit5@k22x2gwhfr;" +
                                                                 "password=@worldit2008;server=tcp:k22x2gwhfr.database.windows.net;" +
                                                                 "Trusted_Connection=false;" +
                                                                 "Encrypt=true;" +
                                                                 "database=DESCUBRA_BD;" +
                                                                 "MultipleActiveResultSets=True;" +
                                                                 "connection timeout=120");

            try
            {
                myConnection.Open();
                mySecondConnection.Open();
            }
            catch (Exception ex)
            {
                tbTransl.Text = ex.ToString() + "   falha abrir connection";
                MessageBox.Show("falha abrir connection");
            }
            MessageBox.Show("This operation will make changes to your database.\n\rAre you sure you want to continue?");
            try
            {
                SqlDataReader myReader  = null;
                SqlCommand    myCommand = new SqlCommand("select * from tbl_translate_tag where language_id=1", myConnection);
                myReader = myCommand.ExecuteReader();
                System.Collections.ArrayList sqlCommandList = new System.Collections.ArrayList();


                tokenProvider = new AzureAuthToken(tbAuthkey.Text);
                //*****BEGIN CODE TO MAKE THE CALLS TO THE TRANSLATOR SERVICE TO PERFORM A TRANSLATION for each row*****
                tbTransl.Text  = String.Empty;
                tbTransl2.Text = String.Empty;
                tbTransl3.Text = String.Empty;
                tbTransl4.Text = String.Empty;

                string languageCode = "";
                int    lID;
                int    tag_id;
                string queryUpdate = "";
                string name        = "";
                int    rows_Affected;

                while (myReader.Read())
                {
                    lID          = Convert.ToInt32(myReader["language_id"]);
                    tag_id       = Convert.ToInt32(myReader["tag_id"]);
                    languageCode = "en";

                    string     valName     = "";
                    SqlCommand nameCommand = new SqlCommand("SELECT name FROM dbo.tbl_translate_tag WHERE language_id = 2 AND tag_id = " + tag_id, mySecondConnection);
                    try{
                        valName = (string)nameCommand.ExecuteScalar().ToString();
                    }
                    catch (NullReferenceException ex)
                    {
                        valName = " ";
                    }
                    if (valName.Length < 4 || valName.Equals(null) || valName.Equals(""))
                    {
                        name = translate(myReader["name"].ToString(), languageCode);
                        if (name.Equals(""))
                        {
                            name = null;
                        }
                        tbTransl.Text += name;
                        tbTransl.Text += System.Environment.NewLine;
                    }
                    else
                    {
                        name = valName;
                    }

                    if (valName.Length < 4 || valName.Equals(null) || valName.Equals(""))
                    {
                        queryUpdate = "BEGIN TRAN " +
                                      "IF EXISTS (SELECT * FROM dbo.tbl_translate_tag WHERE language_id = 2 AND tag_id = " + tag_id + " ) " +
                                      "BEGIN " +
                                      "UPDATE tbl_translate_tag" + " " +
                                      "SET " +
                                      "name = " + "'" + name + "'" + " " +
                                      "WHERE language_id = " + 2 + " " +
                                      "AND tag_id = " + tag_id + " " +
                                      " END" +
                                      " ELSE" +
                                      " BEGIN " +
                                      "INSERT INTO tbl_translate_tag" + " " +
                                      "VALUES ( " + tag_id + ", " + "2, '" + name + "') " +
                                      "END " +
                                      "COMMIT TRAN";

                        sqlCommandList.Add(queryUpdate);
                    }
                }
                myConnection.Close();

                LogOut.Text = sqlCommandList.Count.ToString() + "rows translated";

                myConnection.Open();
                foreach (string _cmd in sqlCommandList)
                {
                    SqlCommand updateRow = new SqlCommand(_cmd, myConnection);
                    rows_Affected = updateRow.ExecuteNonQuery();
                }
                myConnection.Close();
                mySecondConnection.Close();
                MessageBox.Show("Update concluded");
            }
            catch (Exception ex)
            {
                LogOut.Text = ex.ToString() + "   falha ler colunas";
                myConnection.Close();
                mySecondConnection.Close();
                MessageBox.Show("   falha ler colunas, " + ex.ToString());
            }
        }
Esempio n. 30
0
 public Translator(string apiKey)
 {
     _authToken     = new AzureAuthToken(apiKey);
     _postProcessor = new PostProcessTranslator();
 }