/// <inheritdoc />
        public void TranslateText(TranslateTextEventHandler eventHandler, string key, string textToTranslate, string languageFrom, string languageTo)
        {
            if (IsInitialized == false)
            {
                Debug.LogError("The translator is not initialized! Aborting process");
                return;
            }
            if (eventHandler == null)
            {
                Debug.LogError("There's no valid event handler set to translate text! Aborting process");
                return;
            }
            if (textToTranslate == string.Empty || languageFrom == string.Empty || languageTo == string.Empty)
            {
                Debug.LogError("Invalid values to translate! Aborting process");
                return;
            }

            Debug.Log("Translating key:" + key + ", from:" + languageFrom + ", to:" + languageTo);

#pragma warning disable CS0618 // Тип или член устарел
            string url = "http://api.microsofttranslator.com/v2/Http.svc/Translate?text=" + WWW.EscapeURL(EscapeLinebreaks(textToTranslate)) + "&from=" + languageFrom + "&to=" + languageTo;
#pragma warning restore CS0618 // Тип или член устарел
            WebRequest translationWebRequest = HttpWebRequest.Create(url);
            translationWebRequest.Headers["Authorization"] = headerValue;


            TranslateTextData translateTextData = new TranslateTextData();
            translateTextData.dictionaryKey         = key;
            translateTextData.translationWebRequest = translationWebRequest;
            translateTextData.eventHandler          = eventHandler;

            translationWebRequest.BeginGetResponse(new AsyncCallback(ReadTranslateTextResponse), translateTextData);
        }
        void ReadTranslateTextResponse(IAsyncResult asyncResult)
        {
            TranslateTextData translationData = null;
            HttpWebRequest    request         = null;
            HttpWebResponse   response        = null;

            try
            {
                translationData = asyncResult.AsyncState as TranslateTextData;
                request         = translationData.translationWebRequest as HttpWebRequest;
                response        = request.EndGetResponse(asyncResult) as HttpWebResponse;

                using (Stream streamResponse = response.GetResponseStream())
                {
                    string translatedValue = string.Empty;
                    using (XmlReader reader = XmlReader.Create(streamResponse))
                    {
                        reader.Read();
                        reader.Read();
                        translatedValue = reader.Value;
                    }

                    Debug.Log("Successfully translated key:" + translationData.dictionaryKey + "!");
                    if (translationData.eventHandler != null)
                    {
                        translationData.eventHandler(true, translationData.dictionaryKey, translatedValue);
                    }
                    translationData.eventHandler = null;
                }
            }
            catch (WebException exception)
            {
                Debug.LogError("Failed to translate text! error: " + exception.Message);
                using (Stream streamResponse = exception.Response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(streamResponse))
                    {
                        Debug.LogError(reader.ReadToEnd());
                    }
                }
                if (translationData.eventHandler != null)
                {
                    translationData.eventHandler(false, string.Empty, string.Empty);
                }
                translationData.eventHandler = null;
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                    response = null;
                }
            }
        }