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); }
/// <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()); }
public void AddTranslate(TranslateCode code, string translateResult) { //Add it into Karaoke object Lyric.Translates.Add(code, new LyricTranslate(translateResult)); }