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); }
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); }
public void Can_Replace_WideNumerics_With_AsciiNumerics(string originalText, string expectedText) { var result = RomanizationHelper.ReplaceWideCharacters(originalText); Assert.Equal(expectedText, result); }
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); }