public string[] TranslateArray(
            string appID,
            string appID2,
            string[] texts,
            string sourceLanguageCode,
            string destinationLanguageCode,
            string[] wordsToProtect,
            string[] wordsToRemove)
        {
            var dic =
                new List <MyTuple <string, string> >
            {
                new MyTuple <string, string>(@"source", sourceLanguageCode),
                new MyTuple <string, string>(@"target", destinationLanguageCode),
            };

            // ReSharper disable LoopCanBeConvertedToQuery
            foreach (var text in texts)
            // ReSharper restore LoopCanBeConvertedToQuery
            {
                dic.Add(
                    new MyTuple <string, string>(
                        @"q",
                        TranslationHelper.ProtectWords(
                            TranslationHelper.RemoveWords(text, wordsToRemove), wordsToProtect)));
            }

            var json =
                makeRestCallPost(
                    appID,
                    @"https://www.googleapis.com/language/translate/v2",
                    dic);

            // --

            var result = new List <string>();

            var nodes = json.SelectNodes(@"/root/data/translations/translatedText");

            if (nodes != null)
            {
// ReSharper disable LoopCanBeConvertedToQuery
                foreach (XmlNode xmlNode in nodes)
// ReSharper restore LoopCanBeConvertedToQuery
                {
                    var translatedText = xmlNode.InnerText;

                    result.Add(
                        TranslationHelper.UnprotectWords(
                            translatedText,
                            wordsToProtect));
                }
            }

            return(result.ToArray());
        }
        public string[] TranslateArray(
            string appID,
            string appID2,
            string[] texts,
            string sourceLanguageCode,
            string destinationLanguageCode,
            string[] wordsToProtect,
            string[] wordsToRemove)
        {
            if (texts == null || texts.Length <= 0)
            {
                return(texts);
            }
            else
            {
                var result = new List <string>();

                protectWSCall(
                    delegate
                {
                    var at  = BingTranslationHelper.GetAccessToken(appID, appID2);
                    var raw =
                        BingTranslationHelper.TranslateArray(
                            at,
                            sourceLanguageCode,
                            destinationLanguageCode,
                            TranslationHelper.ProtectWords(
                                TranslationHelper.RemoveWords(
                                    texts,
                                    wordsToRemove),
                                wordsToProtect));

                    foreach (var response in raw)
                    {
                        if (StringExtensionMethods.IsNullOrWhiteSpace(response.Error))
                        {
                            result.Add(TranslationHelper.UnprotectWords(response.Translation, wordsToProtect));
                        }
                        else
                        {
                            result.Add(FileGroup.DefaultTranslationErrorPrefix + @" " + response.Error);
                        }
                    }
                });

                return(result.ToArray());
            }
        }
        public string Translate(
            string appID,
            string appID2,
            string text,
            string sourceLanguageCode,
            string destinationLanguageCode,
            string[] wordsToProtect,
            string[] wordsToRemove)
        {
            var json =
                makeRestCallPost(
                    appID,
                    @"https://www.googleapis.com/language/translate/v2",
                    new List <MyTuple <string, string> >
            {
                new MyTuple <string, string>(@"source", sourceLanguageCode),
                new MyTuple <string, string>(@"target", destinationLanguageCode),
                new MyTuple <string, string>(
                    @"q",
                    TranslationHelper.ProtectWords(
                        TranslationHelper.RemoveWords(text, wordsToRemove), wordsToProtect))
            });

            //var responseStatusNode = json.SelectSingleNode(@"/root/data/responseStatus");
            //var statusCode = ConvertHelper.ToInt32(
            //    responseStatusNode == null
            //        ? string.Empty
            //        : responseStatusNode.InnerText);

            var translatedTextNode = json.SelectSingleNode(@"/root/data/translations/translatedText");

            //var responseDetailsNode = json.SelectSingleNode(@"/root/data/responseDetails");

            return
                (TranslationHelper.UnprotectWords(
                     //statusCode == 200
                     (translatedTextNode == null ? string.Empty : translatedTextNode.InnerText),
                     //: (responseDetailsNode == null ? string.Empty : responseDetailsNode.InnerText),
                     wordsToProtect));
        }
        public string Translate(
            string appID,
            string appID2,
            string text,
            string sourceLanguageCode,
            string destinationLanguageCode,
            string[] wordsToProtect,
            string[] wordsToRemove)
        {
            if (StringExtensionMethods.IsNullOrWhiteSpace(text))
            {
                return(text);
            }
            else
            {
                var result = string.Empty;

                protectWSCall(
                    delegate
                {
                    var at = BingTranslationHelper.GetAccessToken(appID, appID2);
                    result =
                        TranslationHelper.UnprotectWords(
                            BingTranslationHelper.Translate(
                                at,
                                sourceLanguageCode,
                                destinationLanguageCode,
                                TranslationHelper.ProtectWords(
                                    TranslationHelper.RemoveWords(
                                        text,
                                        wordsToRemove),
                                    wordsToProtect)).Translation,
                            wordsToProtect);
                });

                return(result);
            }
        }