private static void ApplySourceLanguage(TranslationRequest request, IRestQueryParameterBuilder queryParamBuilder)
 {
     request.SourceLanguage.Evaluate(
         language =>
     {
         queryParamBuilder.WithQueryParameter("source_lang", language.Code);
     });
 }
 private static void ApplyIgnoreMarkup(TranslationRequest request, IRestQueryParameterBuilder queryParamBuilder)
 {
     request.IgnoreMarkup.Evaluate(
         markup =>
     {
         queryParamBuilder
         .WithQueryParameter("tag_handling", "xml")
         .WithQueryParameter("ignore_tags", IgnoreForTranslationMarkup.DeeplIgnoreTag);
     });
 }
        internal void ApplyIgnoreMarkUp(IRestQueryParameterBuilder builder)
        {
            IgnoreMarkup.Evaluate(markup =>
            {
                TextParts.ForEach(part => part.ReplaceTextmarks(markup.BeginTag, IgnoreForTranslationMarkup.IgnoreBeginTag));
                TextParts.ForEach(part => part.ReplaceTextmarks(markup.EndTag, IgnoreForTranslationMarkup.IgnoreEndTag));

                builder
                .WithQueryParameter("tag_handling", "xml")
                .WithQueryParameter("ignore_tags", IgnoreForTranslationMarkup.IgnoreTag);
            });
        }
        private static void ApplyTextParts(TranslationRequest request, IRestQueryParameterBuilder queryParamBuilder)
        {
            request.TextParts.ForEach(
                tp =>
            {
                var textToSend = request.IgnoreMarkup.Evaluate(
                    markup => tp.Text
                    .Replace(markup.EndTag, IgnoreForTranslationMarkup.DeeplIgnoreEndTag)
                    .Replace(markup.BeginTag, IgnoreForTranslationMarkup.DeeplIgnoreBeginTag),
                    () => tp.Text);

                queryParamBuilder.WithQueryParameter("text", textToSend);
            });
        }