private string PostProcessTranslation(UntranslatedText key, string translatedText, bool useTranslatorFriendlyArgs)
        {
            var hasTranslation = !string.IsNullOrEmpty(translatedText);

            if (hasTranslation)
            {
                translatedText = key.FixTranslatedText(translatedText, useTranslatorFriendlyArgs);
                translatedText = key.LeadingWhitespace + translatedText + key.TrailingWhitespace;

                if (Settings.Language == Settings.Romaji && Settings.RomajiPostProcessing != TextPostProcessing.None)
                {
                    translatedText = RomanizationHelper.PostProcess(translatedText, Settings.RomajiPostProcessing);
                }
                else if (Settings.TranslationPostProcessing != TextPostProcessing.None)
                {
                    translatedText = RomanizationHelper.PostProcess(translatedText, Settings.TranslationPostProcessing);
                }

                foreach (var kvp in Settings.Postprocessors)
                {
                    translatedText = translatedText.Replace(kvp.Key, kvp.Value);
                }

                if (Settings.ForceSplitTextAfterCharacters > 0)
                {
                    translatedText = translatedText.SplitToLines(Settings.ForceSplitTextAfterCharacters, '\n', ' ', ' ');
                }
            }

            return(translatedText);
        }
Esempio n. 2
0
        private string PostProcessTranslation(UntranslatedText key, string translatedText)
        {
            var hasTranslation = !string.IsNullOrEmpty(translatedText);

            if (hasTranslation)
            {
                translatedText = key.FixTranslatedText(translatedText);
                translatedText = key.LeadingWhitespace + translatedText + key.TrailingWhitespace;

                if (Settings.Language == Settings.Romaji && Settings.RomajiPostProcessing != TextPostProcessing.None)
                {
                    translatedText = RomanizationHelper.PostProcess(translatedText, Settings.RomajiPostProcessing);
                }
                else if (Settings.TranslationPostProcessing != TextPostProcessing.None)
                {
                    translatedText = RomanizationHelper.PostProcess(translatedText, Settings.TranslationPostProcessing);
                }

                if (Settings.ForceSplitTextAfterCharacters > 0)
                {
                    translatedText = translatedText.SplitToLines(Settings.ForceSplitTextAfterCharacters, '\n', ' ', ' ');
                }
            }

            return(translatedText);
        }
Esempio n. 3
0
        public void Can_Replace_WideNumerics_With_AsciiNumerics(string originalText, string expectedText)
        {
            var result = RomanizationHelper.ReplaceWideCharacters(originalText);

            Assert.Equal(expectedText, result);
        }
Esempio n. 4
0
        public string GetTranslationFromParts(Func <UntranslatedTextInfo, string> getTranslation)
        {
            bool ok     = true;
            var  result = new StringBuilder(TranslationTemplate);

            if (Match != null)
            {
                var groups     = Match.Groups;
                var groupNames = Regex.GetGroupNames();
                var len        = groupNames.Length;
                for (int j = len - 1; j > 0; j--)
                {
                    var groupName       = groupNames[j];
                    var ignoreTranslate = groupName.EndsWith(IgnoredNameEnding);
                    int.TryParse(groupName, NumberStyles.None, CultureInfo.InvariantCulture, out var groupIndex);

                    Group  group;
                    string replacement;
                    if (groupIndex != 0)
                    {
                        group       = groups[groupIndex];
                        replacement = "$" + groupIndex;
                    }
                    else
                    {
                        group       = groups[groupName];
                        replacement = "${" + groupName + "}";
                    }

                    if (group.Success) // was matched
                    {
                        var value       = group.Value;
                        var translation = ignoreTranslate
                     ? RomanizationHelper.PostProcess(value, Settings.RegexPostProcessing)
                     : getTranslation(new UntranslatedTextInfo(value));
                        if (translation != null)
                        {
                            result = result.Replace(replacement, translation);
                        }
                        else
                        {
                            ok = false;
                        }
                    }
                    else
                    {
                        result = result.Replace(replacement, string.Empty);
                    }
                }
            }
            else
            {
                foreach (var kvp in Arguments)
                {
                    var translation = getTranslation(kvp.Info);
                    if (translation != null)
                    {
                        result = result.Replace(kvp.Key, translation);
                    }
                    else
                    {
                        ok = false;
                    }
                }
            }

            if (ok)
            {
                return(result.ToString());
            }
            return(null);
        }