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); } }
/// <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); } }
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); } }
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)); }
/// <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); } }