Exemplo n.º 1
0
        private void loadLocaleIntern(string localeId, bool setLocale, string prefix, string packagePrefix)
        {
            KlyteUtils.doLog($"{GetType()} localeId: {localeId}");
            string load = Singleton <R> .instance.loadResourceString("UI.i18n." + localeId + ".properties");

            if (load == null)
            {
                KlyteUtils.doLog("File UI.i18n." + localeId + ".properties not found. Probably this translation doesn't exists for this mod.");
                load = "";
            }
            var locale = KlyteUtils.GetPrivateField <Locale>(LocaleManager.instance, "m_Locale");

            Locale.Key k;


            foreach (var myString in load.Split(lineSeparator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries))
            {
                if (myString.StartsWith(commentChar))
                {
                    continue;
                }
                if (!myString.Contains(kvSeparator))
                {
                    continue;
                }
                bool   noPrefix  = myString.StartsWith(ignorePrefixChar);
                var    array     = myString.Split(kvSeparator.ToCharArray(), 2);
                string value     = array[1];
                int    idx       = 0;
                string localeKey = null;
                if (array[0].Contains(idxSeparator))
                {
                    var arrayIdx = array[0].Split(idxSeparator.ToCharArray());
                    if (!int.TryParse(arrayIdx[1], out idx))
                    {
                        continue;
                    }
                    array[0] = arrayIdx[0];
                }
                if (array[0].Contains(localeKeySeparator))
                {
                    array     = array[0].Split(localeKeySeparator.ToCharArray());
                    localeKey = array[1];
                }

                k = new Locale.Key()
                {
                    m_Identifier = noPrefix ? array[0].Substring(1) : prefix + array[0],
                    m_Key        = localeKey,
                    m_Index      = idx
                };
                if (!locale.Exists(k))
                {
                    locale.AddLocalizedString(k, value.Replace("\\n", "\n"));
                }
            }

            if (localeId != "en")
            {
                loadLocaleIntern("en", false, prefix, packagePrefix);
            }
            if (setLocale)
            {
                language = localeId;
            }
        }