示例#1
0
        private static void OnCurrentLanguageChanged()
        {
            var currentLanguage = Language.currentLanguage;

            if (currentLanguage is null)
            {
                return;
            }

            _originalTokens.Clear();
            _originalTokens.AddRange(currentLanguage.stringsByToken);

            currentLanguage.stringsByToken = currentLanguage.stringsByToken.ReplaceAndAddRange(GenericTokens);

            if (LanguageSpecificTokens.TryGetValue(currentLanguage.name, out var languageSpecificDic))
            {
                currentLanguage.stringsByToken = currentLanguage.stringsByToken.ReplaceAndAddRange(languageSpecificDic);
            }

            GenericOverlays.Clear();
            LanguageSpecificOverlays.Clear();
            onSetupLanguageOverlays?.Invoke();

            currentLanguage.stringsByToken = currentLanguage.stringsByToken.ReplaceAndAddRange(GenericOverlays);

            if (LanguageSpecificOverlays.TryGetValue(currentLanguage.name, out var languageSpecificOverlayDic))
            {
                currentLanguage.stringsByToken = currentLanguage.stringsByToken.ReplaceAndAddRange(languageSpecificOverlayDic);
            }
        }
示例#2
0
        /// <summary>
        /// Adds a single languagetoken and value to a specific language
        /// </summary>
        /// <param name="key">Token the game asks</param>
        /// <param name="value">Value it gives back</param>
        /// <param name="language">Language you want to add this to</param>
        public static void Add(string key, string value, string language)
        {
            if (!LanguageSpecificTokens.ContainsKey(language))
            {
                LanguageSpecificTokens.Add(language, new Dictionary <string, string>());
            }

            if (LanguageSpecificTokens[language].ContainsKey(key))
            {
                GenericTokens[key] = value;
            }
            else
            {
                LanguageSpecificTokens[language].Add(key, value);
            }
        }
示例#3
0
        private static void OnCurrentLanguageChanged()
        {
            var currentLanguage = Language.currentLanguage;

            if (currentLanguage is null)
            {
                return;
            }

            currentLanguage.stringsByToken = currentLanguage.stringsByToken.ReplaceAndAddRange(GenericTokens);

            if (LanguageSpecificTokens.TryGetValue(currentLanguage.name, out var languageSpecificDic))
            {
                currentLanguage.stringsByToken = currentLanguage.stringsByToken.ReplaceAndAddRange(languageSpecificDic);
            }
        }
示例#4
0
        private static string Language_GetString_string_string(On.RoR2.Language.orig_GetString_string_string orig, string token, string language)
        {
            if (LanguageSpecificTokens.ContainsKey(language))
            {
                if (LanguageSpecificTokens[language].ContainsKey(token))
                {
                    return(LanguageSpecificTokens[language][token]);
                }
            }

            if (GenericTokens.ContainsKey(token))
            {
                return(GenericTokens[token]);
            }

            return(orig(token, language));
        }
示例#5
0
        /// <summary>
        /// Adds a single languagetoken and value to a specific language
        /// </summary>
        /// <param name="key">Token the game asks</param>
        /// <param name="value">Value it gives back</param>
        /// <param name="language">Language you want to add this to</param>
        public static void Add(string?key, string?value, string?language)
        {
            if (!Loaded)
            {
                throw new InvalidOperationException($"{nameof(LanguageAPI)} is not loaded. Please use [{nameof(R2APISubmoduleDependency)}(nameof({nameof(LanguageAPI)})]");
            }
            if (!LanguageSpecificTokens.ContainsKey(language))
            {
                LanguageSpecificTokens.Add(language, new Dictionary <string, string>());
            }

            if (LanguageSpecificTokens[language].ContainsKey(key))
            {
                R2API.Logger.LogDebug($"Overriding token {key} in {language} dictionary");
                LanguageSpecificTokens[language][key] = value;
            }
            else
            {
                LanguageSpecificTokens[language].Add(key, value);
            }
        }