Пример #1
0
        public TransFormOver()
        {
            InitializeComponent();

            Init();
            tc = InitializeTranslatorContainer();
        }
Пример #2
0
        public IList <SubtitleTools.Common.ISO639.Language> GetSupportedLanguages()
        {
            var translatorContainer = new TranslatorContainer(ServiceUri)
            {
                Credentials = new NetworkCredential(AccountKey, AccountKey)
            };
            var languagesForTranslationList = translatorContainer.GetLanguagesForTranslation().Execute().ToList();

            var iso639LanguagesCodes = new LanguagesCodes();
            var supportedLanguages   = new List <SubtitleTools.Common.ISO639.Language>();

            foreach (var item in languagesForTranslationList)
            {
                var lang         = iso639LanguagesCodes.FirstOrDefault(x => x.ISO639.Equals(item.Code, StringComparison.InvariantCultureIgnoreCase));
                var languageName = lang == null ? item.Code : lang.LanguageName;
                supportedLanguages.Add(new SubtitleTools.Common.ISO639.Language
                {
                    ISO639        = item.Code,
                    LanguageName  = languageName,
                    IdSubLanguage = lang == null ? string.Empty : lang.IdSubLanguage,
                    ISO6393166_1  = lang == null ? string.Empty : lang.ISO6393166_1
                });
            }
            return(supportedLanguages);
        }
Пример #3
0
        private static TranslatorContainer CreateTranslatorContainer()
        {
            var serviceUri         = new Uri(ConfigurationManager.ConnectionStrings["TranslationServices"].ConnectionString);
            var serviceCredentials = new NetworkCredential(ConfigurationManager.AppSettings["TranslationServicesKey"],
                                                           ConfigurationManager.AppSettings["TranslationServicesKey"]);
            var result = new TranslatorContainer(serviceUri)
            {
                Credentials = serviceCredentials
            };

            return(result);
        }
Пример #4
0
        private static TranslatorContainer InitializeTranslatorContainer()
        {
            // this is the service root uri for the Microsoft Translator service
            System.Uri serviceRootUri = new Uri("https://api.datamarket.azure.com/Bing/MicrosoftTranslator/");

            // this is the Account Key I generated for this app
            string accountKey = bingAccountKey;

            // throw new Exception("Invalid Account Key");

            TranslatorContainer newTc = new TranslatorContainer(serviceRootUri);

            newTc.Credentials = new NetworkCredential(accountKey, accountKey);
            return(newTc);
        }
Пример #5
0
        //bing 번역기로부터 번역문 얻기
        private static Translation TranslateString(TranslatorContainer tc, string inputString, string transCode, string resultCode)
        {
            System.Data.Services.Client.DataServiceQuery <MORT.TransFormOver.Translation> translationQuery = tc.Translate(inputString, resultCode, transCode);

            // Call the query and get the results as a List
            System.Collections.Generic.List <MORT.TransFormOver.Translation> translationResults = translationQuery.Execute().ToList();

            // Verify there was a result
            if (translationResults.Count() <= 0)
            {
                return(null);
            }

            // In case there were multiple results, pick the first one
            Translation translationResult = translationResults.First();

            return(translationResult);
        }
Пример #6
0
        /// <summary>
        /// Uses the TranslatorContainer to translate inputString from sourceLanguage
        /// to targetLanguage.
        /// </summary>
        /// <param name="tc">The TranslatorContainer to use</param>
        /// <param name="inputString">The string to translate</param>
        /// <param name="sourceLanguage">The Language Code to use in interpreting the input string.</param>
        /// <param name="targetLanguage">The Language Code to translate the input string to.</param>
        /// <returns>The translated string, or null if no translation results were found.</returns>
        private static Translation TranslateString(TranslatorContainer tc, string inputString, DetectedLanguage sourceLanguage, Language targetLanguage)
        {
            // Generate the query
            var translationQuery = tc.Translate(inputString, targetLanguage.Code, sourceLanguage.Code);

            // Call the query and get the results as a List
            var translationResults = translationQuery.Execute().ToList();

            // Verify there was a result
            if (translationResults.Count() <= 0)
            {
                return(null);
            }

            // In case there were multiple results, pick the first one
            var translationResult = translationResults.First();

            return(translationResult);
        }
Пример #7
0
        private string TranslateWithBing(string text, LanguageInfo from, LanguageInfo to, TranslateApi api)
        {
            if (!_bingTranslatorEnabled)
            {
                return(null);
            }

            if (api != TranslateApi.Bing && api != TranslateApi.All)
            {
                return(null);
            }

            string result;

            try
            {
                if (_bingTranslator == null)
                {
                    _bingTranslator =
                        new TranslatorContainer(new Uri(ConfigurationManager.AppSettings["TranslatorAddress"]))
                    {
                        Credentials = new NetworkCredential(
                            ConfigurationManager.AppSettings["TranslatorAccount"],
                            ConfigurationManager.AppSettings["TranslatorAccountKey"])
                    };

                    _bingTranslator.Timeout = (int)_bingTimeout;
                }

                var translationResult =
                    _bingTranslator.Translate(text, to.BingTranslatorCode, @from.BingTranslatorCode).ToList();

                result = translationResult.Select(t => t.Text).Aggregate((current, next) => current + ", " + next);
            }
            catch (Exception ex)
            {
                Log.LogException(ex);
                result = Resources.Res.TranslationError;
            }

            return(Resources.Res.Bing + result);
        }
Пример #8
0
        /// <summary>
        /// Concatenates the input arguments into a single string
        /// </summary>
        /// <param name="args">The args array passed into Main</param>
        /// <returns>the concatonated result string</returns>
        private static TranslatorContainer InitializeTranslatorContainer()
        {
            // this is the service root uri for the Microsoft Translator service
            var serviceRootUri = new Uri("https://api.datamarket.azure.com/Bing/MicrosoftTranslator/");

            // this is the Account Key I generated for this app
            var accountKey = "XM5qyTSXAh7JxjRC0rxr5fAT9pkMoSRJUQXI589aj/g";

            // Replace the account key above with your own and then delete
            // the following line of code. You can get your own account key
            // for from here: https://datamarket.azure.com/account/keys
            //throw new Exception("Invalid Account Key");

            // the TranslatorContainer gives us access to the Microsoft Translator services
            var tc = new TranslatorContainer(serviceRootUri);

            // Give the TranslatorContainer access to your subscription
            tc.Credentials = new NetworkCredential(accountKey, accountKey);
            return(tc);
        }
Пример #9
0
        /// <summary>
        /// Asks the service represented by the TranslatorContainer for a list
        /// of all supported languages and then picks one at random.
        /// </summary>
        /// <param name="tc">The TranslatorContainer to use.</param>
        /// <returns>A randomly selected Language.</returns>
        private static Language PickRandomLanguage(TranslatorContainer tc)
        {
            // Used to generate a random index
            var random = new Random();

            // Generate the query
            var languagesForTranslationQuery = tc.GetLanguagesForTranslation();

            // Call the query to get the results as an Array
            var availableLanguages = languagesForTranslationQuery.Execute().ToArray();

            // Generate a random index between 0 and the total number of items in the array
            var randomIndex = random.Next(availableLanguages.Count());

            // Select the randomIndex'th value from the array
            var selectedLanguage = availableLanguages[10];

            //  selectedLanguage = "en";

            return(selectedLanguage);
        }
        public string Translate(string translateMe, CultureInfo fromCultureInfo, CultureInfo toCultureInfo)
        {
            if (fromCultureInfo == null)
            {
                throw new ArgumentNullException("fromCultureInfo is null");
            }
            if (toCultureInfo == null)
            {
                throw new ArgumentNullException("toCultureInfo is null");
            }

            if (string.IsNullOrEmpty(translateMe))
            {
                return(translateMe);
            }

            string sourceLanguage = fromCultureInfo.TwoLetterISOLanguageName;
            string targetLanguage = toCultureInfo.TwoLetterISOLanguageName;

            TranslatorContainer tc = new TranslatorContainer(new System.Uri(SERVICE_URL));

            tc.Credentials = new System.Net.NetworkCredential(_username, _password);

            var translationQuery = tc.Translate(translateMe, targetLanguage, sourceLanguage);

            List <Microsoft.Translation> translationResults = translationQuery.Execute().ToList();

            // Verify there was a result
            if (translationResults.Count() <= 0)
            {
                return(null);
            }

            // In case there were multiple results, pick the first one
            Microsoft.Translation translationResult = translationResults.First();

            return(translationResult.Text);
        }
Пример #11
0
        private static DetectedLanguage DetectSourceLanguage(TranslatorContainer tc, string inputString)
        {
            // calling Detect gives us a DataServiceQuery which we can use to call the service
            var translateQuery = tc.Detect(inputString);

            // since this is a console application, we do not want to do an asynchronous
            // call to the service. Otherwise, the program thread would likely terminate
            // before the result came back, causing our app to appear broken.
            var detectedLanguages = translateQuery.Execute().ToList();

            // since the result of the query is a list, there might be multiple
            // detected languages. In practice, however, I have only seen one.
            // Some input strings, 'hi' for example, are obviously valid in
            // English but produce other results, suggesting that the service
            // only returns the first result.
            if (detectedLanguages.Count() > 1)
            {
                Console.WriteLine("Possible source languages:");

                foreach (var language in detectedLanguages)
                {
                    Console.WriteLine("\t" + language.Code);
                }

                Console.WriteLine();
            }

            // only continue if the Microsoft Translator identified the source language
            // if there are multiple, let's go with the first.
            if (detectedLanguages.Count() > 0)
            {
                return(detectedLanguages.First());
            }
            else
            {
                return(null);
            }
        }
Пример #12
0
        public string AutoTranslateSync(string untranslatedPhraseText, string untranslatedPhraseLanguage, string targetLanguageText)
        {
            //PREPARE THE TRANSLATOR CONTAINER (TRANSLATION SERVICE CLIENT)
            var serviceRootUri = new Uri(CommonResources.AzureServiceRootUriAddress);
//#if DEBUG
            var accountKey = CommonResources.LearnLanguagesAccountKey;
//#else
//      string accountKey = (string)System.Windows.Application.Current.Resources[CommonResources.AzureLearnLanguagesAccountKey];
//#endif
            TranslatorContainer translatorContainer = new TranslatorContainer(serviceRootUri);

            translatorContainer.Credentials = new NetworkCredential(accountKey, accountKey);

            //TURN THE LANGUAGE TEXTS INTO LANGUAGE CODES THAT SERVICE UNDERSTANDS
            var fromLanguageCode = TranslationHelper.GetLanguageCode(untranslatedPhraseLanguage);
            var toLanguageCode   = TranslationHelper.GetLanguageCode(targetLanguageText);

            //BUILDS THE TRANSLATION QUERY
            var translationQuery = translatorContainer.Translate(untranslatedPhraseText,
                                                                 toLanguageCode,
                                                                 fromLanguageCode);

            //ACTUALLY EXECUTE THE TRANSLATION QUERY
            var translations = translationQuery.Execute().ToList();

            //INTERPRET THE TRANSLATION RESULTS
            if (translations.Count > 0)
            {
                var translationText = translations.First().Text;
                //RETURN TRANSLATION (FIRST TRANSLATION, IF MULTIPLE EXIST)
                return(translationText);
            }
            else
            {
                //RETURN EMPTY STRING
                return(string.Empty);
            }
        }
Пример #13
0
        private void translateItem(int itemId)
        {
            try
            {
                if (string.IsNullOrWhiteSpace(_data[itemId].Dialog))
                {
                    return;
                }

                LogWindow.AddMessage(LogType.Info, "Translating: " + _data[itemId].Dialog);

                var translatorContainer = new TranslatorContainer(ServiceUri)
                {
                    Credentials = new NetworkCredential(AccountKey, AccountKey)
                };
                var result = translatorContainer.Translate(_data[itemId].Dialog.Trim(), _targetLanguage, _sourceLanguage).Execute().ToList().FirstOrDefault();
                if (result == null)
                {
                    return;
                }

                _data[itemId].Dialog = result.Text;

                LogWindow.AddMessage(LogType.Info, "Result: " + _data[itemId].Dialog);
            }
            catch (Exception ex)
            {
                LogWindow.AddMessage(LogType.Error, ex.Message);
                if (ex.InnerException != null &&
                    ex.InnerException.Message.Contains("has an invalid pattern of characters"))
                {
                    LogWindow.AddMessage(LogType.Error, ex.InnerException.Message + " -> This language is not supported.");
                }
                StopTranslation = true;
            }
        }
Пример #14
0
        public void setBingAccountKey(string newKey)
        {
            bingAccountKey = newKey;

            tc = InitializeTranslatorContainer();
        }
Пример #15
0
        //    TextBox translatedTextBox;

        private void Initalize()
        {
            serviceUri          = new Uri(SERVICE_ROOT_URL);
            context             = new TranslatorContainer(serviceUri);
            context.Credentials = new NetworkCredential(CUSTOMER_ID, PRIMARY_ACCOUNT_KEY);
        }