示例#1
0
 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));
 }
示例#2
0
        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);
            }
        }
示例#3
0
        //-- 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));
        }