/// <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); }
/// <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); }
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(); }
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 }
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); }
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 }
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); }
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); }
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); }
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; }
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); } }
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)); }
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); }
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); }
public ITranslator Keys(string[] keys) { this.keys = keys; authTokenSource = new AzureAuthToken(keys[currentTokenIndex]); return(this); }
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); } }
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; } } }
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()); } }
public Translator(string apiKey) { _authToken = new AzureAuthToken(apiKey); _postProcessor = new PostProcessTranslator(); }