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