public int Translate(out TranslatedMessage translatedMessage, string text, TranslateLanguage destinationLanguage, TranslateLanguage sourceLanguage = TranslateLanguage.None, TranslateType type = TranslateType.Chat, ProfanityType profanity = ProfanityType.Off, bool postProfanity = false, int timeout = 0) { return(Translate(out translatedMessage, text, GetTranslatedLanguage(destinationLanguage), GetTranslatedLanguage(sourceLanguage), type, profanity, postProfanity, timeout)); }
private int Translate(out TranslatedMessage translatedMessage, string text, string destinationLanguage, string sourceLanguage = "", TranslateType type = TranslateType.Chat, ProfanityType profanity = ProfanityType.Off, bool postProfanity = false, int timeout = 0) { translatedMessage = null; TCPClient client = GetCoreClient(); if (client == null) { return(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_CONNECTION); } Quest quest = new Quest("translate"); quest.Param("text", text); quest.Param("dst", destinationLanguage); if (sourceLanguage.Length > 0) { quest.Param("src", sourceLanguage); } if (type == TranslateType.Mail) { quest.Param("type", "mail"); } else { quest.Param("type", "chat"); } switch (profanity) { case ProfanityType.Stop: quest.Param("profanity", "stop"); break; case ProfanityType.Censor: quest.Param("profanity", "censor"); break; case ProfanityType.Off: quest.Param("profanity", "off"); break; } quest.Param("postProfanity", postProfanity); Answer answer = client.SendQuest(quest, timeout); if (answer.IsException()) { return(answer.ErrorCode()); } try { translatedMessage = new TranslatedMessage { source = answer.Want <string>("source"), target = answer.Want <string>("target"), sourceText = answer.Want <string>("sourceText"), targetText = answer.Want <string>("targetText") }; return(fpnn.ErrorCode.FPNN_EC_OK); } catch (Exception) { return(fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE); } }
//-- Action<TranslatedMessage, errorCode> private bool Translate(Action <TranslatedMessage, int> callback, string text, string destinationLanguage, string sourceLanguage = "", TranslateType type = TranslateType.Chat, ProfanityType profanity = ProfanityType.Off, bool postProfanity = false, int timeout = 0) { TCPClient client = GetCoreClient(); if (client == null) { return(false); } Quest quest = new Quest("translate"); quest.Param("text", text); quest.Param("dst", destinationLanguage); if (sourceLanguage.Length > 0) { quest.Param("src", sourceLanguage); } if (type == TranslateType.Mail) { quest.Param("type", "mail"); } else { quest.Param("type", "chat"); } switch (profanity) { case ProfanityType.Stop: quest.Param("profanity", "stop"); break; case ProfanityType.Censor: quest.Param("profanity", "censor"); break; case ProfanityType.Off: quest.Param("profanity", "off"); break; } quest.Param("postProfanity", postProfanity); return(client.SendQuest(quest, (Answer answer, int errorCode) => { TranslatedMessage tm = null; if (errorCode == fpnn.ErrorCode.FPNN_EC_OK) { try { tm = new TranslatedMessage(); tm.source = answer.Want <string>("source"); tm.target = answer.Want <string>("target"); tm.sourceText = answer.Want <string>("sourceText"); tm.targetText = answer.Want <string>("targetText"); } catch (Exception) { errorCode = fpnn.ErrorCode.FPNN_EC_CORE_INVALID_PACKAGE; } } callback(tm, errorCode); }, timeout)); }