public string Get(string original, bool addIfMissing = true) { if (string.IsNullOrWhiteSpace(original)) { return(""); } if (!localizedTexts.TryGetValue(original, out string translated)) { if (addIfMissing) { #if !UNITY_WEBGL using (StreamWriter sw = new StreamWriter(languageFilePath, true, Encoding.Unicode)) { sw.WriteLine(TsvHelper.Escape(original) + delimiters); } #endif localizedTexts.Add(original, null); } return(original); } else if (string.IsNullOrWhiteSpace(translated)) { return(original); } return(translated); }
private void ReadTranslations(StreamReader sr, int column) { int languageCount = languages.Count; int lastLanguage = languageCount - 1; string line; MatchCollection matches; while ((line = sr.ReadLine()) != null) { if (string.IsNullOrWhiteSpace(line)) { continue; } matches = TsvHelper.regex.Matches(line); while (matches.Count < languageCount || (matches[lastLanguage].Groups[1].Value == "\"" && !matches[lastLanguage].Groups[0].Value.EndsWith("\""))) { string extraLine = sr.ReadLine(); if (extraLine == null) { return; } line += "\n" + extraLine; matches = TsvHelper.regex.Matches(line); } string original = matches[0].Groups[2].Value; if (string.IsNullOrWhiteSpace(original)) { continue; } if (matches.Count <= column) { continue; } string translated = matches[column].Groups[2].Value; if (line[0] == '\"') { original = TsvHelper.Unescape(original); translated = TsvHelper.Unescape(translated); } if (!localizedTexts.ContainsKey(original)) { localizedTexts.Add(original, translated); } else { Debug.LogWarning("Duplicate line:" + original); } } }