public TermInjectorTranslationProviderConfDialog(TermInjectorTranslationOptions options, IWin32Window owner)
 {
     this.provider = null;
     this.Options  = options;
     this.owner    = owner;
     InitializeComponent();
     UpdateDialog();
 }
コード例 #2
0
 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);
        }
コード例 #4
0
        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);
        }