Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
            }
        }
    }