/// <summary> /// Used to do batch find-replace on a segment with tags. /// </summary> /// <param name="inSegment"></param> /// <param name="fileName"></param> /// <returns></returns> private Segment getEditedSegment(SegmentEditor editor, Segment inSegment) { Segment newSeg = new Segment(inSegment.Culture); foreach (SegmentElement element in inSegment.Elements) { System.Type elType = element.GetType(); if (elType.ToString() != "Sdl.LanguagePlatform.Core.Tag") //if other than tag, make string and edit it { string temp = editor.EditText(element.ToString()); newSeg.Add(temp); //add edited text to segment } else { newSeg.Add(element); //if tag just add the tag } } return(newSeg); }
/// <summary> /// Used to do batch find-replace on a string of plain text. /// </summary> /// <param name="sourcetext"></param> /// <param name="fileName"></param> /// <returns></returns> private string getEditedString(SegmentEditor editor, string sourcetext) { string result = editor.EditText(sourcetext); return result; }
/// <summary> /// Used to do batch find-replace on a segment with tags. /// </summary> /// <param name="inSegment"></param> /// <param name="fileName"></param> /// <returns></returns> private Segment getEditedSegment(SegmentEditor editor, Segment inSegment) { Segment newSeg = new Segment(inSegment.Culture); foreach (SegmentElement element in inSegment.Elements) { System.Type elType = element.GetType(); if (elType.ToString() != "Sdl.LanguagePlatform.Core.Tag") //if other than tag, make string and edit it { string temp = editor.EditText(element.ToString()); newSeg.Add(temp); //add edited text to segment } else { newSeg.Add(element); //if tag just add the tag } } return newSeg; }
public SearchResults SearchSegment(SearchSettings settings, Segment segment) { //FUTURE: consider making GT and MT lookup classes static utility classes Segment translation = new Segment(_languageDirection.TargetCulture);//this will be the target segment #region "SearchResultsObject" SearchResults results = new SearchResults(); results.SourceSegment = segment.Duplicate(); #endregion #region "Confirmation Level" if (!_options.ResendDrafts && inputTu.ConfirmationLevel != ConfirmationLevel.Unspecified) //i.e. if it's status is other than untranslated { //don't do the lookup, b/c we don't need to pay google to translate text already translated if we edit a segment translation.Add(PluginResources.TranslationLookupDraftNotResentMessage); //later get these strings from resource file results.Add(CreateSearchResult(segment, translation, segment.ToString())); return results; } #endregion // Look up the currently selected segment in the collection (normal segment lookup). #region "SegmentLookup" string sourceLang = SourceLanguage.ToString(); string targetLang = TargetLanguage.ToString(); string translatedText = ""; //a new seg avoids modifying the current segment object Segment newseg = segment.Duplicate(); //do preedit if checked bool sendTextOnly = _options.SendPlainTextOnly || !newseg.HasTags; if (!sendTextOnly) { //do preedit with tagged segment if (_options.UsePreEdit) { if (preLookupSegmentEditor == null) preLookupSegmentEditor = new SegmentEditor(_options.PreLookupFilename); newseg = getEditedSegment(preLookupSegmentEditor, newseg); } //return our tagged target segment MtTranslationProviderTagPlacer tagplacer = new MtTranslationProviderTagPlacer(newseg); ////tagplacer is constructed and gives us back a properly marked up source string for google if (_options.SelectedProvider == MtTranslationOptions.ProviderType.GoogleTranslate) { translatedText = LookupGT(tagplacer.PreparedSourceText, _options, "html"); } else if (_options.SelectedProvider == MtTranslationOptions.ProviderType.MicrosoftTranslator) { translatedText = LookupMST(tagplacer.PreparedSourceText, _options, "text/html"); } //now we send the output back to tagplacer for our properly tagged segment translation = tagplacer.GetTaggedSegment(translatedText).Duplicate(); //now do post-edit if that option is checked if (_options.UsePostEdit) { if (postLookupSegmentEditor == null) postLookupSegmentEditor = new SegmentEditor(_options.PostLookupFilename); translation = getEditedSegment(postLookupSegmentEditor, translation); } } else //only send plain text { string sourcetext = newseg.ToPlain(); //do preedit with string if (_options.UsePreEdit) { if (preLookupSegmentEditor == null) preLookupSegmentEditor = new SegmentEditor(_options.PreLookupFilename); sourcetext = getEditedString(preLookupSegmentEditor, sourcetext); //change our source segment so it gets sent back with modified text to show in translation results window that it was changed before sending newseg.Clear(); newseg.Add(sourcetext); } //now do lookup if (_options.SelectedProvider == MtTranslationOptions.ProviderType.GoogleTranslate) { translatedText = LookupGT(sourcetext, _options, "html"); //plain?? } else if (_options.SelectedProvider == MtTranslationOptions.ProviderType.MicrosoftTranslator) { translatedText = LookupMST(sourcetext, _options, "text/plain"); } //now do post-edit if that option is checked if (_options.UsePostEdit) { if (postLookupSegmentEditor == null) postLookupSegmentEditor = new SegmentEditor(_options.PostLookupFilename); translatedText = getEditedString(postLookupSegmentEditor, translatedText); } translation.Add(translatedText); } results.Add(CreateSearchResult(newseg, translation, newseg.ToPlain())); #endregion #region "Close" return results; #endregion }
/// <summary> /// Used to do batch find-replace on a string of plain text. /// </summary> /// <param name="sourcetext"></param> /// <param name="fileName"></param> /// <returns></returns> private string getEditedString(SegmentEditor editor, string sourcetext) { string result = editor.EditText(sourcetext); return(result); }
/// <summary> /// Performs the actual search by looping through the /// delimited segment pairs contained in the text file. /// Depening on the search mode, a segment lookup (with exact machting) or a source / target /// concordance search is done. /// </summary> /// <param name="settings"></param> /// <param name="segment"></param> /// <returns></returns> #region "SearchSegment" public SearchResults SearchSegment(SearchSettings settings, Segment segment) { //FUTURE: consider making GT and MT lookup classes static utility classes Segment translation = new Segment(_languageDirection.TargetCulture);//this will be the target segment #region "SearchResultsObject" SearchResults results = new SearchResults(); results.SourceSegment = segment.Duplicate(); #endregion #region "Confirmation Level" if (!_options.ResendDrafts && inputTu.ConfirmationLevel != ConfirmationLevel.Unspecified) //i.e. if it's status is other than untranslated { //don't do the lookup, b/c we don't need to pay google to translate text already translated if we edit a segment translation.Add(PluginResources.TranslationLookupDraftNotResentMessage); //later get these strings from resource file results.Add(CreateSearchResult(segment, translation, segment.ToString())); return(results); } #endregion // Look up the currently selected segment in the collection (normal segment lookup). #region "SegmentLookup" string sourceLang = SourceLanguage.ToString(); string targetLang = TargetLanguage.ToString(); string translatedText = ""; //a new seg avoids modifying the current segment object Segment newseg = segment.Duplicate(); //do preedit if checked bool sendTextOnly = _options.SendPlainTextOnly || !newseg.HasTags; if (!sendTextOnly) { //do preedit with tagged segment if (_options.UsePreEdit) { if (preLookupSegmentEditor == null) { preLookupSegmentEditor = new SegmentEditor(_options.PreLookupFilename); } newseg = getEditedSegment(preLookupSegmentEditor, newseg); } //return our tagged target segment MtTranslationProviderTagPlacer tagplacer = new MtTranslationProviderTagPlacer(newseg); ////tagplacer is constructed and gives us back a properly marked up source string for google if (_options.SelectedProvider == MtTranslationOptions.ProviderType.GoogleTranslate) { translatedText = LookupGT(tagplacer.PreparedSourceText, _options, "html"); } else if (_options.SelectedProvider == MtTranslationOptions.ProviderType.MicrosoftTranslator) { translatedText = LookupMST(tagplacer.PreparedSourceText, _options, "text/html"); } //now we send the output back to tagplacer for our properly tagged segment translation = tagplacer.GetTaggedSegment(translatedText).Duplicate(); //now do post-edit if that option is checked if (_options.UsePostEdit) { if (postLookupSegmentEditor == null) { postLookupSegmentEditor = new SegmentEditor(_options.PostLookupFilename); } translation = getEditedSegment(postLookupSegmentEditor, translation); } } else //only send plain text { string sourcetext = newseg.ToPlain(); //do preedit with string if (_options.UsePreEdit) { if (preLookupSegmentEditor == null) { preLookupSegmentEditor = new SegmentEditor(_options.PreLookupFilename); } sourcetext = getEditedString(preLookupSegmentEditor, sourcetext); //change our source segment so it gets sent back with modified text to show in translation results window that it was changed before sending newseg.Clear(); newseg.Add(sourcetext); } //now do lookup if (_options.SelectedProvider == MtTranslationOptions.ProviderType.GoogleTranslate) { translatedText = LookupGT(sourcetext, _options, "html"); //plain?? } else if (_options.SelectedProvider == MtTranslationOptions.ProviderType.MicrosoftTranslator) { translatedText = LookupMST(sourcetext, _options, "text/plain"); } //now do post-edit if that option is checked if (_options.UsePostEdit) { if (postLookupSegmentEditor == null) { postLookupSegmentEditor = new SegmentEditor(_options.PostLookupFilename); } translatedText = getEditedString(postLookupSegmentEditor, translatedText); } translation.Add(translatedText); } results.Add(CreateSearchResult(newseg, translation, newseg.ToPlain())); #endregion #region "Close" return(results); #endregion }