Beispiel #1
0
        private void Initialize(
            string segmentedSource,
            string segmentedTarget,
            string alignment,
            SegmentationMethod segmentationMethod,
            string targetCode)
        {
            this.SegmentedSourceSentence = segmentedSource.Split(' ');

            this.SegmentedTranslation             = segmentedTarget.Split(' ');
            this.SegmentedAlignmentSourceToTarget = TranslationPair.ParseAlignmentString(
                alignment,
                SegmentedSourceSentence.Length - 1,
                SegmentedTranslation.Length - 1,
                false);

            this.SegmentedAlignmentTargetToSource = TranslationPair.ParseAlignmentString(
                alignment,
                SegmentedTranslation.Length - 1,
                SegmentedSourceSentence.Length - 1,
                true);

            this.AlignmentString = alignment;
            this.Segmentation    = segmentationMethod;
        }
        internal static TranslationPair FetchTranslationFromDb(string sourceText, string model, string targetLanguage)
        {
            TranslationPair translationPair = null;

            if (OpusCatMTEngineSettings.Default.CacheMtInDatabase)
            {
                try
                {
                    translationPair = FetchTranslationFromSqliteDb(sourceText, model, targetLanguage);
                }
                catch (Exception ex)
                {
                    Log.Error(ex.ToString());
                    translationPair = null;
                }
            }

            if (translationPair == null)
            {
                TranslationDbHelper.shortTermMtStorage.TryGetValue(
                    new Tuple <string, string>(sourceText, model), out translationPair);
            }

            return(translationPair);
        }
        private void WriteToTranslationDb(object sender, EventArgs e, IEnumerable <string> input, FileInfo spInput, FileInfo transAndAlign)
        {
            Queue <string> inputQueue
                = new Queue <string>(input);

            if (transAndAlign.Exists)
            {
                using (var reader = transAndAlign.OpenText())
                {
                    while (!reader.EndOfStream)
                    {
                        var line       = reader.ReadLine();
                        var sourceLine = inputQueue.Dequeue();
                        var transPair  = new TranslationPair(sourceLine, line, this.segmentation, this.TargetCode);
                        TranslationDbHelper.WriteTranslationToDb(sourceLine, transPair, this.SystemName, this.segmentation, this.TargetCode);
                    }
                }
            }
        }
 internal static void WriteTranslationToDb(
     string sourceText,
     TranslationPair translation,
     string model,
     SegmentationMethod segmentationMethod,
     string targetLanguage)
 {
     TranslationDbHelper.shortTermMtStorage.GetOrAdd(new Tuple <string, string>(sourceText, model), translation);
     if (OpusCatMTEngineSettings.Default.CacheMtInDatabase)
     {
         try
         {
             TranslationDbHelper.WriteTranslationToSqliteDb(sourceText, translation, model, segmentationMethod, targetLanguage);
         }
         catch (Exception ex)
         {
             Log.Error(ex.ToString());
             TranslationDbHelper.SetupTranslationDb();
         }
     }
 }
        private static void WriteTranslationToSqliteDb(
            string sourceText,
            TranslationPair translation,
            string model,
            SegmentationMethod segmentationMethod,
            string targetLanguage)
        {
            var translationDb = new FileInfo(HelperFunctions.GetOpusCatDataPath(OpusCatMTEngineSettings.Default.TranslationDBName));

            if (translationDb.Length == 0)
            {
                translationDb.Delete();
            }

            if (!translationDb.Exists)
            {
                TranslationDbHelper.CreateTranslationDb();
            }

            using (var m_dbConnection = new SQLiteConnection($"Data Source={translationDb};Version=3;"))
            {
                m_dbConnection.Open();

                using (SQLiteCommand insert =
                           new SQLiteCommand(
                               "INSERT or REPLACE INTO translations (sourcetext, translation, segmentedsource, segmentedtranslation, alignment, model, additiondate, segmentationmethod, targetlanguage) VALUES (@sourcetext,@translation,@segmentedsource,@segmentedtranslation,@alignment,@model,CURRENT_TIMESTAMP,@segmentationmethod,@targetlanguage)", m_dbConnection))
                {
                    insert.Parameters.Add(new SQLiteParameter("@sourcetext", sourceText));
                    insert.Parameters.Add(new SQLiteParameter("@translation", translation.Translation));
                    insert.Parameters.Add(new SQLiteParameter("@segmentedsource", String.Join(" ", translation.SegmentedSourceSentence)));
                    insert.Parameters.Add(new SQLiteParameter("@segmentedtranslation", String.Join(" ", translation.SegmentedTranslation)));
                    insert.Parameters.Add(new SQLiteParameter("@alignment", translation.AlignmentString));
                    insert.Parameters.Add(new SQLiteParameter("@model", model));
                    insert.Parameters.Add(new SQLiteParameter("@segmentationmethod", segmentationMethod.ToString()));
                    insert.Parameters.Add(new SQLiteParameter("@targetlanguage", targetLanguage));
                    insert.ExecuteNonQuery();
                }
            }
        }
Beispiel #6
0
 internal void UpdateTranslation(TranslationPair result)
 {
     this.TranslationBox.Document.Blocks.Clear();
     this.TranslationBox.Document.Blocks.Add(new Paragraph(new Run(result.Translation)));
 }