public void SetCurrentLanguage(TranslateCode code)
 {
     //change show translage type
     foreach (var single in Items)
     {
         single.ChangeLanguage(code);
     }
 }
        public async void Translate(TranslateCode sourceLangeCode, TranslateCode targetLangCode, string translateString)
        {
            try
            {
                var transpateApi = new GoogleTranslateApi();
                var result       = await transpateApi.Translate(sourceLangeCode, targetLangCode, new List <string> {
                    translateString
                });

                var translateText = result.FirstOrDefault()?.TranslatedText;

                OnTranslateSuccess?.Invoke(this, translateText);
            }
            catch (Exception e)
            {
                OnTranslateFail?.Invoke(this, e.Message);
            }
        }
        /// <summary>
        ///     translte list
        /// </summary>
        /// <param name="code"></param>
        /// <param name="translateListString"></param>
        /// <returns></returns>
        public async Task <List <Objects.Lyric> > Translate(TranslateCode code, List <Objects.Lyric> translateListString)
        {
            var listTranslate = new List <Objects.Lyric>();
            var result        = await romajiServerApi.Translate(code, translateListString.Select(x => x.Text).ToList());

            //convert each sentence
            foreach (var single in result)
            {
                var singleTranslate = new Objects.Lyric();

                //convert from Translatersult to lyruc
                for (var i = 0; i < single.Result.Count; i++)
                {
                    var character = single.Result[i];

                    //romaji
                    if (singleTranslate is IHasRomaji romajiLyric)
                    {
                        romajiLyric.Romaji.Add(i, new RomajiText
                        {
                            Text = character.Romaji
                        });
                    }

                    //means it is kanji
                    if (character.Type == 0)
                    {
                        if (singleTranslate is IHasFurigana furiganaLyric)
                        {
                            furiganaLyric.Furigana.Add(i, new FuriganaText
                            {
                                Text = character.Katakana
                            });
                        }
                    }
                }

                listTranslate.Add(singleTranslate);
            }

            return(listTranslate);
        }
        /// <summary>
        ///     translate multi string
        /// </summary>
        /// <param name="sourceLangeCode"></param>
        /// <param name="targetLangCode"></param>
        /// <param name="translateListString"></param>
        public async void Translate(TranslateCode sourceLangeCode, TranslateCode targetLangCode, List <string> translateListString)
        {
            try
            {
                var transpateApi = new GoogleTranslateApi();
                var result       = await transpateApi.Translate(sourceLangeCode, targetLangCode, translateListString);

                var returnString = new List <string>();
                foreach (var single in result)
                {
                    returnString.Add(single.TranslatedText);
                }

                OnTranslateMultiStringSuccess?.Invoke(this, returnString);
            }
            catch (Exception e)
            {
                OnTranslateFail?.Invoke(this, e.Message);
            }
        }
        /// <summary>
        ///     translte list
        ///     TODO : 或許之後考慮使用皮皮牌的
        ///     <see cref="WebRequest" />
        /// </summary>
        /// <param name="sourceLangeCode"></param>
        /// <param name="translateListString"></param>
        /// <returns></returns>
        public async Task <List <TranslateResult> > Translate(TranslateCode code, List <string> translateListString)
        {
            //split the translate
            var listTranslate = translateListString.Split(10);

            var listCollection = new List <TranslateResult>();

            foreach (var singleTranslateProcess in listTranslate)
            {
                var parameter = new List <KeyValuePair <string, string> >();
                foreach (var singleLyric in singleTranslateProcess)
                {
                    parameter.Add(new KeyValuePair <string, string>("str", singleLyric));
                }

                var result = await GetObjectApi <List <TranslateResult> >("/translate/jp/list", parameter);

                listCollection.AddRange(result);
            }

            return(listCollection);
        }
Example #6
0
        /// <summary>
        ///     translate api
        /// </summary>
        /// <param name="sourceLangeCode"></param>
        /// <param name="targetLangCode"></param>
        /// <param name="translateListString"></param>
        /// <returns></returns>
        public async Task <List <Translation> > Translate(TranslateCode sourceLangeCode, TranslateCode targetLangCode, List <string> translateListString)
        {
            var listTranslate = new List <Translation>();

            var translateTime = translateListString.Count / MaxThanslateSentenceAtTime + 1;

            for (var i = 0; i < translateTime; i++)
            {
                var startIndex             = i * MaxThanslateSentenceAtTime;
                var count                  = (i + 1) * MaxThanslateSentenceAtTime >= translateListString.Count ? translateListString.Count - startIndex : MaxThanslateSentenceAtTime;
                var partialTranslateString = translateListString.GetRange(startIndex, count);

                var url = "https://translation.googleapis.com/language/translate/";
                url += "v2?key=" + ApiKey;
                url += "&source=" + LangToCodeDictionary[sourceLangeCode];
                url += "&target=" + LangToCodeDictionary[targetLangCode];

                foreach (var singleString in partialTranslateString)
                {
                    url += "&q=" + singleString;
                }

                var client = new WebClient();
                client.Encoding = Encoding.UTF8;

                var json = await client.DownloadStringTaskAsync(url);

                var rootObject = JsonConvert.DeserializeObject <RootObject>(json);

                var listParttranslateResult = rootObject.Data.Translations;

                listTranslate.AddRange(listParttranslateResult);
            }

            return(listTranslate);
        }
 /// <summary>
 ///     translte list
 /// </summary>
 /// <param name="code"></param>
 /// <param name="translateListString"></param>
 /// <returns></returns>
 public async Task <Objects.Lyric> Translate(TranslateCode code, Objects.Lyric translateListString)
 {
     return((await Translate(code, new List <Objects.Lyric> {
         translateListString
     })).FirstOrDefault());
 }
Example #8
0
 public void AddTranslate(TranslateCode code, string translateResult)
 {
     //Add it into Karaoke object
     Lyric.Translates.Add(code, new LyricTranslate(translateResult));
 }