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 TranslationLanguageInfo[] GetSourceLanguages(string appID, string appID2)
        {
            if (_names == null)
            {
                try
                {
                    protectWSCall(
                        delegate
                    {
                        var at    = BingTranslationHelper.GetAccessToken(appID, appID2);
                        var names = BingTranslationHelper.GetLanguagesForTranslate(at);

                        var result = new List <TranslationLanguageInfo>();

                        // ReSharper disable LoopCanBeConvertedToQuery
                        foreach (var iso6391Code in names)
                        // ReSharper restore LoopCanBeConvertedToQuery
                        {
                            var ci = IntelligentGetCultureInfo(iso6391Code);

                            if (ci != null)
                            {
                                result.Add(
                                    new TranslationLanguageInfo
                                {
                                    LanguageCode     = iso6391Code,
                                    UserReadableName = ci.DisplayName,
                                });
                            }
                        }

                        _names = result.ToArray();
                    });
                }
                catch (WebException x)
                {
                    LogCentral.Current.LogError(@"Error while getting source languages. Ignoring.", x);
                    return(new TranslationLanguageInfo[] { });
                }
            }

            return(_names);
        }
        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);
            }
        }