public TermInjectorTranslationProviderConfDialog(TermInjectorTranslationOptions options, IWin32Window owner) { this.provider = null; this.Options = options; this.owner = owner; InitializeComponent(); UpdateDialog(); }
public TermInjectorTranslationProviderLanguageDirection(TermInjectorTranslationProvider provider, LanguagePair languages) { #region "Instantiate" _provider = provider; _languageDirection = languages; _options = _provider.Options; _matchCase = _options.MatchCase == "true" ? true : false; #endregion }
/// <summary> /// Show the plug-in settings form when the user is adding the translation provider plug-in /// through the GUI of SDL Trados Studio /// </summary> /// <param name="owner"></param> /// <param name="languagePairs"></param> /// <param name="credentialStore"></param> /// <returns></returns> #region "Browse" public ITranslationProvider[] Browse(IWin32Window owner, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { TermInjectorTranslationOptions defaultTranslationOptions = new TermInjectorTranslationOptions(); //These are the default advanced settings, they can be changed in the dialog defaultTranslationOptions.TokenBoundaryCharacters = " .,!?\"'-;:(){}<>|"; defaultTranslationOptions.TermAdditionSeparator = "¤"; defaultTranslationOptions.Delimiter = "Tab"; defaultTranslationOptions.UseBoundaryCharacters = "true"; TermInjectorTranslationProviderConfDialog dialog = new TermInjectorTranslationProviderConfDialog(defaultTranslationOptions, owner); if (dialog.ShowDialog(owner) == DialogResult.OK) { if (dialog.Options.TMFileName == "") { MessageBox.Show("Translation memory field was empty. TermInjector translation provider was not added, as it requires an underlying translation memory to function."); return(null); } if (!File.Exists(dialog.Options.TMFileName)) { MessageBox.Show("Specified translation memory does not exist", "TermInjector"); return(null); } if (languagePairs.Length > 1) { MessageBox.Show("TermInjector should not be used with multiple language pairs. If there are several language pairs in the project, select a language pair, select \"Use different translation providers for this language pair\" and add TermInjector as a translation provider only for the selected language pair.", "TermInjector"); return(null); } //Assign GUID to prevent duplicate instances dialog.Options.InstanceGUID = Guid.NewGuid().ToString(); TermInjectorTranslationProvider testProvider = new TermInjectorTranslationProvider(dialog.Options); if (!testProvider.FileTM.SupportsLanguageDirection(languagePairs[0])) { MessageBox.Show("Selected translation memory does not support the selected language direction (" + languagePairs[0] + "). TermInjector will not function unless a TM supporting the selected language direction is selected in the options", "TermInjector"); return(null); } return(new ITranslationProvider[] { testProvider }); } return(null); }
public ITranslationProvider CreateTranslationProvider(Uri translationProviderUri, string translationProviderState, ITranslationProviderCredentialStore credentialStore) { var createOptions = new TermInjectorTranslationOptions(translationProviderUri); if (createOptions.UseBoundaryCharacters == null) { createOptions.UseBoundaryCharacters = "true"; } if (createOptions.InstanceGUID == null) { createOptions.InstanceGUID = Guid.NewGuid().ToString(); } TermInjectorTranslationProvider tp; //Don't create the provider if it is already active if (activeProviders.ContainsKey(createOptions.InstanceGUID)) { if (activeProviders[createOptions.InstanceGUID] != null) { return(activeProviders[createOptions.InstanceGUID]); } else { tp = new TermInjectorTranslationProvider(new TermInjectorTranslationOptions(translationProviderUri)); activeProviders[createOptions.InstanceGUID] = tp; return(tp); } } if (!SupportsTranslationProviderUri(translationProviderUri)) { throw new Exception("Cannot handle URI."); } //if (TermInjectorTranslationProviderFactory.activeProviders.ContainsKey(translationProviderUri. //Uri has not been added tp = new TermInjectorTranslationProvider(new TermInjectorTranslationOptions(translationProviderUri)); activeProviders.Add(createOptions.InstanceGUID, tp); return(tp); }
/// <summary> /// If the plug-in settings can be changed by the user, /// SDL Trados Studio will display a Settings button. /// By clicking this button, users raise the plug-in user interface, /// in which they can modify any applicable settings, in our implementation /// the delimiter character and the list file name. /// </summary> /// <param name="owner"></param> /// <param name="translationProvider"></param> /// <param name="languagePairs"></param> /// <param name="credentialStore"></param> /// <returns></returns> #region "Edit" public bool Edit(IWin32Window owner, ITranslationProvider translationProvider, LanguagePair[] languagePairs, ITranslationProviderCredentialStore credentialStore) { TermInjectorTranslationProvider editProvider = translationProvider as TermInjectorTranslationProvider; if (editProvider == null) { return(false); } string oldFileName = editProvider.Options.GlossaryFileName; string oldRegexFileName = editProvider.Options.RegexFileName; string oldMatchCase = editProvider.Options.MatchCase; string oldDelimiter = editProvider.Options.Delimiter; string oldTMName = editProvider.Options.TMFileName; TermInjectorTranslationProviderConfDialog dialog = new TermInjectorTranslationProviderConfDialog(editProvider.Options, editProvider, owner); if (dialog.ShowDialog(owner) == DialogResult.OK) { if (dialog.Options.TMFileName == "") { MessageBox.Show("Translation memory field is empty. Previous translation memory will be used."); return(false); } //If the TM has been changed, check that the new TM exists and has the correct languages if (oldTMName != dialog.Options.TMFileName) { if (!File.Exists(dialog.Options.TMFileName)) { MessageBox.Show("Specified translation memory does not exist", "TermInjector"); return(false); } var fileTM = new FileBasedTranslationMemory(dialog.Options.TMFileName); if (!fileTM.SupportsLanguageDirection(languagePairs[0])) { MessageBox.Show("Selected translation memory does not support the selected language direction (" + languagePairs[0] + "). Previous translation memory will be used", "TermInjector"); return(false); } //The checks passed, so update the TM in the provider editProvider.loadTM(); } //If the glossary file, case matching setting, regex setting or delimiter setting is changed, the tries should be reloaded if (oldFileName != dialog.Options.GlossaryFileName || oldMatchCase != dialog.Options.MatchCase || oldRegexFileName != dialog.Options.RegexFileName || oldDelimiter != dialog.Options.Delimiter) { try { editProvider.loadTries(); } catch (Exception e) { MessageBox.Show(e.Message); } editProvider.initializeVisitors(); } //Everything is fine, so we can update the provider options editProvider.Options = dialog.Options; return(true); } return(false); }