示例#1
0
        /// <summary>
        /// Add the translation Result into DataBase
        /// </summary>
        /// <param name="transResult">Translation Result</param>
        /// <returns>Just added Result's EntryID</returns>
        public int AddResult(TranslationResult transResult)
        {
            string procName = "usp_AddTranslationToCache";

            SqlParameter[] cmdParms = new SqlParameter[]{
                new SqlParameter("@EntryText", SqlDbType.NVarChar),
                new SqlParameter("@LangFromID", SqlDbType.Int),
                new SqlParameter("@LangToID", SqlDbType.Int),
                new SqlParameter("@TranslationText", SqlDbType.NVarChar),
                new SqlParameter("@AccountID", SqlDbType.Int)
            };

            cmdParms[0].Value = transResult.SourceTransText;
            cmdParms[1].Value = transResult.LangFromID;
            cmdParms[2].Value = transResult.LangToID;
            cmdParms[3].Value = transResult.TranslationText;
            cmdParms[4].Value = transResult.AccountID;

            try
            {
                return SQLHelper.ExecuteReturnQueryProc(connnectionString, procName, cmdParms);
            }
            catch (SqlException ex)
            {
                throw ex;
            }
        }
        private TranslationResult TranslateUsingDataBase(TranslationRequest translationRequest)
        {
            TranslationResult transResult = null;
            try
            {
                TranslationEntry entry = trans.Translate(translationRequest);
                if (entry != null && !String.IsNullOrEmpty(entry.TranslationText.Trim()))
                {
                    AddLog(entry.EntryID, true);

                    transResult = new TranslationResult()
                    {
                        SourceTransText = translationRequest.SourceTransText.Replace("]A;", "\n"),
                        TranslationText = entry.TranslationText,
                        DetectLanguage = translationRequest.DetectLanguage,
                        LangFromID = translationRequest.LangFromID,
                        LangToID = translationRequest.LangToID,
                        AccountID = TranslatorServiceClient.Account.AccountID,
                        WhereFrom = entry.EntryID > 0 ? Enum.Parse(typeof(TranslationSourceEnum), entry.SourceID.ToString()).ToString() : TranslationSourceEnum.BingWeb.ToString()
                    };
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return transResult;
        }
        private TranslationResult TranslateFromBing(TranslationRequest translationRequest)
        {
            string fromLang = translationRequest.LangFrom;
            string toLang = translationRequest.LangTo;

            //As to match with SCCM (SCCM contains "PTB" and "PTG", but Bing only contains "PTG") , so "ptb" is manual added in DataBae Languages table.
            //Only translate with "pt" by Bing, no matter what user choose "ptb" or "pt". If translate Using DataBase, the language will be base on user choosed.
            fromLang = fromLang == "ptb" ? "pt" : fromLang;
            toLang = toLang == "ptb" ? "pt" : toLang;

            string translation = _transClient.Translate(appId, translationRequest.TransText, fromLang, toLang, contentType, category);

            TranslationResult transResult = new TranslationResult()
            {
                SourceTransText = translationRequest.SourceTransText,
                TranslationText = translation,
                DetectLanguage = translationRequest.DetectLanguage,
                LangFromID = translationRequest.LangFromID,
                LangToID = translationRequest.LangToID,
                AccountID = TranslatorServiceClient.Account.AccountID,
                WhereFrom = TranslationSourceEnum.BingWeb.ToString()
            };

            if (IsAccessDB == true && !ConfigSetting.OnlyTranslateFromBing && fromLang != toLang && transResult.SourceTransText != transResult.TranslationText && translationRequest.TransText.Length <= 256) // 256 match with 'TranslationEntries' table's 'EntryText' column's size
            {
                int entryId = trans.AddResult(transResult);//Add Result to DataBase
                AddLog(entryId, false);
            }

            return transResult;
        }
 private void TranslationComplete(TranslationResult transResult)
 {
     if (ConfigSetting.Mini)
     {
         floatBox.FontColor = Brushes.Black;
         floatBox.Translation = transResult.TranslationText;
     }
     SetAutoDetectedLanguageName(cboFrom, transResult.DetectLanguage);
     SetValueFrom(transResult.SourceTransText);
     SetValueTo(transResult.TranslationText);
     SetStatusLabelValue(tsslblWhere, "From : " + transResult.WhereFrom, Brushes.Black);
     SetStatusLabelValue(tsslblException, "");
     SetRichTextBoxValue(rtxtProperties, "");
 }