Beispiel #1
0
        public void InteractiveTranslate(IReadOnlyList <string> segment, out WordGraph smtWordGraph, out TranslationResult ruleResult)
        {
            Load();

            smtWordGraph  = _smtEngine.GetWordGraph(segment);
            ruleResult    = _ruleEngine?.Translate(segment);
            _lastUsedTime = DateTime.Now;
        }
Beispiel #2
0
        public static IReadOnlyList <string> TranslateWord(this ITranslationEngine engine, string sourceWord)
        {
            TranslationResult result = engine.Translate(new[] { sourceWord });

            if (result.WordSources.Any(s => s == TranslationSources.None))
            {
                return(new string[0]);
            }
            return(result.TargetSegment);
        }
		private int translateSingle(
			string appID,
			string appID2,
			ITranslationEngine ti,
			DataTable table,
			string refLanguageCode,
			DataColumn column,
			int refValueIndex,
			string raw,
			BackgroundWorker bw,
			int delayMilliseconds,
			string prefixSuccess,
			int translationSuccessCount,
			ref int translationErrorCount,
			bool continueOnErrors,
			string prefixError,
			ref int translationCount)
		{
			if (column != null)
			{
				foreach (DataRow row in table.Rows)
				{
					if (row != null)
					{
						if (bw.CancellationPending)
						{
							throw new OperationCanceledException();
						}

						var text = row[column] as string;
						if (!string.IsNullOrEmpty(text) && text.Trim().Length > 0)
						{
							continue;
						}

						// http://www.codeproject.com/KB/aspnet/ZetaResourceEditor.aspx?msg=3367544#xx3367544xx
						if (FileGroup.IsInternalRow(row))
						{
							continue;
						}

						var sourceText =
							row[refValueIndex] as string;

						if (string.IsNullOrEmpty(sourceText))
						{
							continue;
						}

						if (delayMilliseconds > 0)
						{
							Thread.Sleep(delayMilliseconds);
						}

						try
						{
							var destinationText =
								prefixSuccess +
								ti.Translate(
									appID, appID2,
									sourceText,
									ti.MapCultureToSourceLanguageCode(
										appID, appID2,
										CultureHelper.CreateCultureErrorTolerant(refLanguageCode)),
									ti.MapCultureToDestinationLanguageCode(
										appID, appID2,
										CultureHelper.CreateCultureErrorTolerant(raw)),
									_project.TranslationWordsToProtect,
									_project.TranslationWordsToRemove);

							row[column] = destinationText;

							translationSuccessCount++;
						}
						catch (Exception x)
						{
							translationErrorCount++;

							if (continueOnErrors)
							{
								var destinationText = prefixError + x.Message;

								if (row[column] != null)
								{
									row[column] = destinationText;
								}
							}
							else
							{
								throw;
							}
						}

						translationCount++;
					}
				}
			}
			return translationSuccessCount;
		}
        private int translateSingle(
            string appID,
            ITranslationEngine ti,
            DataTable table,
            string refLanguageCode,
            DataColumn column,
            int refValueIndex,
            string raw,
            BackgroundWorker bw,
            int delayMilliseconds,
            string prefixSuccess,
            bool useExistingTranslations,
            bool useExistingTranslationsOnly,
            InMemoryTranslationSnapshot imss,
            int translationSuccessCount,
            ref int translationErrorCount,
            bool continueOnErrors,
            string prefixError,
            ref int translationCount,
            ref int internallyExistingTranslationTranslatedSuccessCount)
        {
            if (column != null)
            {
                foreach (DataRow row in table.Rows)
                {
                    if (row != null)
                    {
                        if (bw.CancellationPending)
                        {
                            throw new OperationCanceledException();
                        }

                        var text = row[column] as string;
                        if (!string.IsNullOrEmpty(text) && text.Trim().Length > 0)
                        {
                            continue;
                        }

                        // http://www.codeproject.com/KB/aspnet/ZetaResourceEditor.aspx?msg=3367544#xx3367544xx
                        if (FileGroup.IsInternalRow(row))
                        {
                            continue;
                        }

                        var sourceText = row[refValueIndex] as string;

                        if (string.IsNullOrEmpty(sourceText))
                        {
                            continue;
                        }

                        if (delayMilliseconds > 0)
                        {
                            Thread.Sleep(delayMilliseconds);
                        }

                        try
                        {
                            var sourceLanguageCode = ti.MapCultureToSourceLanguageCode(
                                appID,
                                CultureHelper.CreateCultureErrorTolerant(refLanguageCode));
                            var destinationLanguageCode = ti.MapCultureToDestinationLanguageCode(
                                appID,
                                CultureHelper.CreateCultureErrorTolerant(raw));

                            var doIt = true;

                            // Ggf. aus Cache holen.
                            if (useExistingTranslations)
                            {
                                var dstText = imss?.GetTranslation(refLanguageCode, raw, sourceText);
                                if (dstText != null)
                                {
                                    row[column] = dstText;

                                    translationSuccessCount++;
                                    internallyExistingTranslationTranslatedSuccessCount++;

                                    doIt = false;
                                }
                            }

                            if (!useExistingTranslationsOnly && doIt)
                            {
                                var destinationText =
                                    prefixSuccess +
                                    ti.Translate(
                                        appID,
                                        sourceText,
                                        sourceLanguageCode,
                                        destinationLanguageCode,
                                        _project.TranslationWordsToProtect,
                                        _project.TranslationWordsToRemove);

                                row[column] = destinationText;

                                // Merken für ggf. nächsten Durchlauf.
                                if (useExistingTranslations)
                                {
                                    imss?.AddTranslation(refLanguageCode, raw, sourceText, destinationText);
                                }

                                translationSuccessCount++;
                            }
                        }
                        catch (Exception x)
                        {
                            translationErrorCount++;

                            if (continueOnErrors)
                            {
                                var destinationText = prefixError + x.Message;

                                if (row[column] != null)
                                {
                                    row[column] = destinationText;
                                }
                            }
                            else
                            {
                                throw;
                            }
                        }

                        translationCount++;
                    }
                }
            }

            return(translationSuccessCount);
        }
Beispiel #5
0
        private int translateSingle(
            string appID,
            string appID2,
            ITranslationEngine ti,
            DataTable table,
            string refLanguageCode,
            DataColumn column,
            int refValueIndex,
            string raw,
            BackgroundWorker bw,
            int delayMilliseconds,
            string prefixSuccess,
            int translationSuccessCount,
            ref int translationErrorCount,
            bool continueOnErrors,
            string prefixError,
            ref int translationCount)
        {
            if (column != null)
            {
                foreach (DataRow row in table.Rows)
                {
                    if (row != null)
                    {
                        if (bw.CancellationPending)
                        {
                            throw new OperationCanceledException();
                        }

                        var text = row[column] as string;
                        if (!string.IsNullOrEmpty(text) && text.Trim().Length > 0)
                        {
                            continue;
                        }

                        // http://www.codeproject.com/KB/aspnet/ZetaResourceEditor.aspx?msg=3367544#xx3367544xx
                        if (FileGroup.IsInternalRow(row))
                        {
                            continue;
                        }

                        var sourceText =
                            row[refValueIndex] as string;

                        if (string.IsNullOrEmpty(sourceText))
                        {
                            continue;
                        }

                        if (delayMilliseconds > 0)
                        {
                            Thread.Sleep(delayMilliseconds);
                        }

                        try
                        {
                            var destinationText =
                                prefixSuccess +
                                ti.Translate(
                                    appID, appID2,
                                    sourceText,
                                    ti.MapCultureToSourceLanguageCode(
                                        appID, appID2,
                                        CultureHelper.CreateCultureErrorTolerant(refLanguageCode)),
                                    ti.MapCultureToDestinationLanguageCode(
                                        appID, appID2,
                                        CultureHelper.CreateCultureErrorTolerant(raw)),
                                    _project.TranslationWordsToProtect,
                                    _project.TranslationWordsToRemove);

                            row[column] = destinationText;

                            translationSuccessCount++;
                        }
                        catch (Exception x)
                        {
                            translationErrorCount++;

                            if (continueOnErrors)
                            {
                                var destinationText = prefixError + x.Message;

                                if (row[column] != null)
                                {
                                    row[column] = destinationText;
                                }
                            }
                            else
                            {
                                throw;
                            }
                        }

                        translationCount++;
                    }
                }
            }
            return(translationSuccessCount);
        }