Пример #1
0
        private void Setup(bool providerAdded = false)
        {
            if (MtCloudApplicationInitializer.CurrentViewDetector.View != Helpers.CurrentViewDetector.CurrentView.EditorView)
            {
                return;
            }

            var projectInProcessing = MtCloudApplicationInitializer.GetProjectInProcessing();

            if (MtCloudApplicationInitializer.EditorController.ActiveDocument?.Project !=
                projectInProcessing)
            {
                return;
            }

            var currentProvider = MtCloudApplicationInitializer.GetCurrentProjectProvider();

            var visibility = currentProvider != null && currentProvider.Options.SendFeedback && (GetTpStatus() || providerAdded);

            SwitchVisibility(visibility);

            if (currentProvider is null)
            {
                return;
            }
            try
            {
                Application.Current?.Dispatcher?.Invoke(
                    () => RateIt.SetTranslationService(currentProvider.TranslationService));
            }
            catch
            {
                // catch all; unable to locate the controller
            }
        }
        public ITranslationProvider CreateTranslationProvider(Uri translationProviderUri, string translationProviderState,
                                                              ITranslationProviderCredentialStore credentialStore)
        {
            var currentProjProvider = MtCloudApplicationInitializer.GetCurrentProjectProvider();

            if (currentProjProvider != null)
            {
                MtCloudApplicationInitializer.SetTranslationService(null, currentProjProvider.TranslationService);
                return(currentProjProvider);
            }

            var connectionService = new ConnectionService(StudioInstance.GetActiveForm(), new VersionService(),
                                                          StudioInstance.GetLanguageCloudIdentityApi(), MtCloudApplicationInitializer.Client);

            var credential       = connectionService.GetCredential(credentialStore);
            var connectionResult = connectionService.EnsureSignedIn(credential);

            if (!connectionResult.Item1)
            {
                throw new TranslationProviderAuthenticationException(PluginResources.Message_Invalid_credentials);
            }
            connectionService.SaveCredential(credentialStore);

            MtCloudApplicationInitializer.SetTranslationService(connectionService, null);

            var languageProvider = new LanguageProvider();
            var provider         = new SdlMTCloudTranslationProvider(translationProviderUri, translationProviderState,
                                                                     MtCloudApplicationInitializer.TranslationService, languageProvider);

            MtCloudApplicationInitializer.AddCurrentProjectProvider(provider);

            return(provider);
        }