public ParserResult Parse(string input, int scope, IReadOnlyTextTranslationCache cache) { var reader = new StringReader(input); bool containsTranslatable = false; var template = new StringBuilder(input.Length); var args = new List <ArgumentedUntranslatedTextInfo>(); var arg = 'A'; string line = null; while ((line = reader.ReadLine()) != null) { if (!string.IsNullOrEmpty(line)) { if (cache.IsTranslatable(line, true, scope)) { // template it! containsTranslatable = true; var key = "[[" + (arg++) + "]]"; template.Append(key).Append('\n'); args.Add(new ArgumentedUntranslatedTextInfo { Info = new UntranslatedTextInfo(line) }); } else { // add it //containsTranslated = true; template.Append(line).Append('\n'); } } else { // add new line template.Append('\n'); } } if (!containsTranslatable) { return(null); } if (!input.EndsWith("\r\n") && !input.EndsWith("\n")) { template.Remove(template.Length - 1, 1); } if (args.Count > 1) { return(new ParserResult(ParserResultOrigin.GameLogTextParser, input, template.ToString(), false, false, false, true, args)); } return(null); }
public bool IsTranslatable(string text, bool isToken, int scope) { return(_first.IsTranslatable(text, isToken, scope) || (_first.AllowFallback && _second.IsTranslatable(text, isToken, scope))); }
public ParserResult Parse(string input, int scope, IReadOnlyTextTranslationCache cache) { var reader = new StringReader(input); bool containsTranslatable = false; //bool containsTranslated = false; var template = new StringBuilder(input.Length); var args = new Dictionary <string, string>(); var reverseArgs = new Dictionary <string, string>(); var arg = 'A'; string line = null; while ((line = reader.ReadLine()) != null) { if (!string.IsNullOrEmpty(line)) { if (cache.IsTranslatable(line, true, scope)) { // template it! containsTranslatable = true; if (reverseArgs.TryGetValue(line, out var existingKey)) { template.Append(existingKey).Append('\n'); } else { var key = "[[" + (arg++) + "]]"; template.Append(key).Append('\n'); args.Add(key, line); reverseArgs[line] = key; } } else { // add it //containsTranslated = true; template.Append(line).Append('\n'); } } else { // add new line template.Append('\n'); } } if (!containsTranslatable) { return(null); } if (!input.EndsWith("\r\n") && !input.EndsWith("\n")) { template.Remove(template.Length - 1, 1); } if (args.Count > 1) { return(new ParserResult(ParserResultOrigin.GameLogTextParser, input, template.ToString(), false, false, false, true, args)); } return(null); }