private static async System.Threading.Tasks.Task TestTextTranslation(string baseUrl, ClassiiiUser classiiiUser) { string[] text = new string[] { "hello" }; TextTranslationOption option = new TextTranslationOption { FieldId = 1, TargetLang = "ja", SourceLang = "en" }; TextTranslationClient textTranslationClient = new TextTranslationClient(baseUrl); // 同期テキスト翻訳 TextTranslationResult[] ret = await textTranslationClient.TranslateTextBySyncModeAsync(classiiiUser, option, text); Debug.Assert(ret.Length == 1); Debug.Assert(ret[0].sourceText == "hello"); Debug.Assert(ret[0].translatedText == "こんにちは"); // 非同期テキスト翻訳 TranslateTextByAsyncModeFlow flow = new TranslateTextByAsyncModeFlow(baseUrl); ret = await flow.TranslateFlowAsync(classiiiUser, option, text); Debug.Assert(ret.Length == 1); Debug.Assert(ret[0].sourceText == "hello"); Debug.Assert(ret[0].translatedText == "こんにちは"); }
public async Task <string> TranslateTextByAsyncModeAsync( RozettaApiUser rozettaApiUser, TextTranslationOption option, string[] text) { string url = baseUrl + "/translate/async"; string jwtToken = await HttpUtils.GenerateJwtDataAsync( rozettaApiUser.AccessKey, rozettaApiUser.SecretKey, this.defautDuration, this.jwtTokenRequestUrl); Dictionary <string, object> headers = HttpUtils.BuildJwtHeaders(jwtToken); Dictionary <string, object> body = BuildBody(option, rozettaApiUser.ContractId, text); var content = await HttpUtils.SendAsync(HttpMethod.Post, url, headers, body); var byteArray = await content.ReadAsByteArrayAsync(); var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length); var definition = new { status = "", data = new { queueId = "" } }; var serverResp = JsonConvert.DeserializeAnonymousType(responseString, definition); if (serverResp.status != ResponseStatus.Success) { throw new Exception("text translation failed"); } return(serverResp.data.queueId); }
private static Dictionary <string, object> BuildBody(TextTranslationOption option, string contractId, string[] text) { Dictionary <string, object> body = new Dictionary <string, object>(); body.Add("fieldId", option.FieldId.ToString()); body.Add("targetLang", option.TargetLang); body.Add("sourceLang", option.SourceLang); body.Add("text", text); if (contractId != null) { body.Add("contractId", contractId); } if (option.AutoSplit != null) { body.Add("autoSplit", option.AutoSplit); } if (option.Type != null) { body.Add("type", option.Type); } if (option.RemoveFakeLineBreak != null) { body.Add("removeFakeLineBreak", option.RemoveFakeLineBreak); } return(body); }
public async Task <TextTranslationResult[]> TranslateTextBySyncModeAsync( ClassiiiUser classiiiUser, TextTranslationOption option, string[] text) { string url = baseUrl + "/translate"; Dictionary <string, object> headers = HttpUtils.BuildHeaders(classiiiUser, url); Dictionary <string, object> body = BuildBody(option, classiiiUser.ContractId, text); var content = await HttpUtils.SendAsync(HttpMethod.Post, url, headers, body); var byteArray = await content.ReadAsByteArrayAsync(); var responseString = Encoding.UTF8.GetString(byteArray, 0, byteArray.Length); var definition = new { status = "", data = new { taskId = "", translationResult = new TextTranslationResult[] { } } }; var serverResp = JsonConvert.DeserializeAnonymousType(responseString, definition); if (serverResp.status != ResponseStatus.Success) { throw new Exception("text translation failed"); } return(serverResp.data.translationResult); }
private static async System.Threading.Tasks.Task TestUserDictionary(string baseUrl, RozettaApiUser rozettaApiUser) { UserDictionaryClient userDictionaryClient = new UserDictionaryClient(baseUrl); UserDictionaryItem item = new UserDictionaryItem { fromLang = "en", fromText = "hello", toLang = "ja", toText = "おはよう" }; bool bRet; string[] text = new string[] { "hello" }; TextTranslationOption option = new TextTranslationOption { FieldId = 1, SourceLang = "en", TargetLang = "ja" }; TextTranslationClient textTranslationClient = new TextTranslationClient(baseUrl); TextTranslationResult[] textTranslationResults; UserDictionaryItem[] userDictionaryItems; // ユーザー辞書を登録 bRet = await userDictionaryClient.AddUserDictionaryItemAsync(rozettaApiUser, item); Debug.Assert(bRet); // ユーザー辞書を取得 userDictionaryItems = await userDictionaryClient.GetUserDictionaryAsync(rozettaApiUser); Debug.Assert(userDictionaryItems.Length == 1); Debug.Assert(userDictionaryItems[0] == item); // ユーザー辞書を確認 ----------------------------------------------------- textTranslationResults = await textTranslationClient.TranslateTextBySyncModeAsync(rozettaApiUser, option, text); Debug.Assert(textTranslationResults.Length == 1); Debug.Assert(textTranslationResults[0].sourceText == "hello"); Debug.Assert(textTranslationResults[0].translatedText == "おはよう"); // ユーザー辞書を確認 ----------------------------------------------------- end // ユーザー辞書を削除 bRet = await userDictionaryClient.DeleteUserDictionaryItemAsync(rozettaApiUser, userDictionaryItems[0].id); Debug.Assert(bRet); // ユーザー辞書数を確認 userDictionaryItems = await userDictionaryClient.GetUserDictionaryAsync(rozettaApiUser); Debug.Assert(userDictionaryItems.Length == 0); }
public async Task <TextTranslationResult[]> TranslateFlowAsync(ClassiiiUser classiiiUser, TextTranslationOption option, string[] text) { this.classiiiUser = classiiiUser; this.queueId = await client.TranslateTextByAsyncModeAsync(classiiiUser, option, text); if (aTimer != null) { StopTimer(aTimer); } aTimer = new System.Timers.Timer(); aTimer.Interval = Interval; aTimer.Elapsed += OnTimedEvent; aTimer.AutoReset = true; aTimer.Enabled = true; while (!done) { Thread.Sleep(1000); } return(result); }