From 6674a4c6e6f9076573b835624abf943fa2d43457 Mon Sep 17 00:00:00 2001 From: Noah Pilarski Date: Sat, 27 Apr 2024 20:42:27 -0400 Subject: [PATCH] Upper/Lower extensions for translations --- .../ShipLog/ShipLogStarChartMode.cs | 2 +- NewHorizons/Handlers/TranslationHandler.cs | 2 +- .../SignalPatches/AudioSignalPatches.cs | 5 +- NewHorizons/Utility/DebugTools/DebugReload.cs | 2 +- .../Utility/DebugTools/Menu/DebugMenu.cs | 2 +- NewHorizons/Utility/NewHorizonExtensions.cs | 61 +++++++++++++++++++ 6 files changed, 68 insertions(+), 6 deletions(-) diff --git a/NewHorizons/Components/ShipLog/ShipLogStarChartMode.cs b/NewHorizons/Components/ShipLog/ShipLogStarChartMode.cs index a1d466eb..57d48c35 100644 --- a/NewHorizons/Components/ShipLog/ShipLogStarChartMode.cs +++ b/NewHorizons/Components/ShipLog/ShipLogStarChartMode.cs @@ -282,7 +282,7 @@ namespace NewHorizons.Components.ShipLog var name = UniqueIDToName(shipLogEntryCard.name); - var warpNotificationDataText = TranslationHandler.GetTranslation("WARP_LOCKED", TranslationHandler.TextType.UI).Replace("{0}", name.ToUpper()); + var warpNotificationDataText = TranslationHandler.GetTranslation("WARP_LOCKED", TranslationHandler.TextType.UI).Replace("{0}", name.ToUpperFixed()); _warpNotificationData = new NotificationData(warpNotificationDataText); NotificationManager.SharedInstance.PostNotification(_warpNotificationData, true); diff --git a/NewHorizons/Handlers/TranslationHandler.cs b/NewHorizons/Handlers/TranslationHandler.cs index c2f49ebf..b90bb870 100644 --- a/NewHorizons/Handlers/TranslationHandler.cs +++ b/NewHorizons/Handlers/TranslationHandler.cs @@ -189,7 +189,7 @@ namespace NewHorizons.Handlers { var uiTable = TextTranslation.Get().m_table.theUITable; - var text = GetTranslation(rawText, TextType.UI).ToUpper(); + var text = GetTranslation(rawText, TextType.UI).ToUpperFixed(); var key = uiTable.Keys.Max() + 1; try diff --git a/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs b/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs index 9f1aacfe..58beba59 100644 --- a/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs +++ b/NewHorizons/Patches/SignalPatches/AudioSignalPatches.cs @@ -2,6 +2,7 @@ using HarmonyLib; using NewHorizons.Builder.Props.Audio; using NewHorizons.External; using NewHorizons.Handlers; +using NewHorizons.Utility; using System; using UnityEngine; @@ -17,7 +18,7 @@ namespace NewHorizons.Patches.SignalPatches var customSignalName = SignalBuilder.GetCustomSignalName(name); if (!string.IsNullOrEmpty(customSignalName)) { - __result = TranslationHandler.GetTranslation(customSignalName, TranslationHandler.TextType.UI, false).ToUpper(); + __result = TranslationHandler.GetTranslation(customSignalName, TranslationHandler.TextType.UI, false).ToUpperFixed(); return false; } return true; @@ -68,7 +69,7 @@ namespace NewHorizons.Patches.SignalPatches var customName = SignalBuilder.GetCustomFrequencyName(frequency); if (!string.IsNullOrEmpty(customName)) { - if (NewHorizonsData.KnowsFrequency(customName)) __result = TranslationHandler.GetTranslation(customName, TranslationHandler.TextType.UI, false).ToUpper(); + if (NewHorizonsData.KnowsFrequency(customName)) __result = TranslationHandler.GetTranslation(customName, TranslationHandler.TextType.UI, false).ToUpperFixed(); else __result = UITextLibrary.GetString(UITextType.SignalFreqUnidentified); return false; } diff --git a/NewHorizons/Utility/DebugTools/DebugReload.cs b/NewHorizons/Utility/DebugTools/DebugReload.cs index cd067d98..c40d76b8 100644 --- a/NewHorizons/Utility/DebugTools/DebugReload.cs +++ b/NewHorizons/Utility/DebugTools/DebugReload.cs @@ -15,7 +15,7 @@ namespace NewHorizons.Utility.DebugTools public static void InitializePauseMenu(IPauseMenuManager pauseMenu) { - _reloadButton = pauseMenu.MakeSimpleButton(TranslationHandler.GetTranslation("Reload Configs", TranslationHandler.TextType.UI).ToUpper(), 3, true); + _reloadButton = pauseMenu.MakeSimpleButton(TranslationHandler.GetTranslation("Reload Configs", TranslationHandler.TextType.UI).ToUpperFixed(), 3, true); _reloadButton.OnSubmitAction += ReloadConfigs; UpdateReloadButton(); } diff --git a/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs b/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs index 92e77893..882b9cee 100644 --- a/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs +++ b/NewHorizons/Utility/DebugTools/Menu/DebugMenu.cs @@ -89,7 +89,7 @@ namespace NewHorizons.Utility.DebugTools.Menu public static void InitializePauseMenu(IPauseMenuManager pauseMenu) { - pauseMenuButton = pauseMenu.MakeSimpleButton(TranslationHandler.GetTranslation("Toggle Dev Tools Menu", TranslationHandler.TextType.UI).ToUpper(), 3, true); + pauseMenuButton = pauseMenu.MakeSimpleButton(TranslationHandler.GetTranslation("Toggle Dev Tools Menu", TranslationHandler.TextType.UI).ToUpperFixed(), 3, true); _instance?.InitMenu(); } diff --git a/NewHorizons/Utility/NewHorizonExtensions.cs b/NewHorizons/Utility/NewHorizonExtensions.cs index c34182e1..63593ba2 100644 --- a/NewHorizons/Utility/NewHorizonExtensions.cs +++ b/NewHorizons/Utility/NewHorizonExtensions.cs @@ -7,6 +7,7 @@ using Newtonsoft.Json; using OWML.Utils; using System; using System.Collections.Generic; +using System.Globalization; using System.IO; using System.Linq; using System.Reflection; @@ -69,6 +70,66 @@ namespace NewHorizons.Utility return 0; } + public static string ToLanguageName(this TextTranslation.Language language) + { + switch (language) + { + case TextTranslation.Language.UNKNOWN: + case TextTranslation.Language.TOTAL: + case TextTranslation.Language.ENGLISH: + return "English"; + case TextTranslation.Language.SPANISH_LA: + return "Spanish"; + case TextTranslation.Language.GERMAN: + return "German"; + case TextTranslation.Language.FRENCH: + return "French"; + case TextTranslation.Language.ITALIAN: + return "Italian"; + case TextTranslation.Language.POLISH: + return "Polish"; + case TextTranslation.Language.PORTUGUESE_BR: + return "Portuguese (Brazil)"; + case TextTranslation.Language.JAPANESE: + return "Japanese"; + case TextTranslation.Language.RUSSIAN: + return "Russian"; + case TextTranslation.Language.CHINESE_SIMPLE: + return "Chinese (Simplified)"; + case TextTranslation.Language.KOREAN: + return "Korean"; + case TextTranslation.Language.TURKISH: + return "Turkish"; + default: + return language.ToString().Replace("_", " ").ToLowerInvariant().ToTitleCase(); + } + } + + public static CultureInfo ToCultureInfo(this TextTranslation.Language language) + { + return CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(culture => culture.DisplayName == language.ToLanguageName()) ?? CultureInfo.CurrentCulture; + } + + public static string ToUpperFixed(this string str) + { + return str.ToUpper(TextTranslation.Get().m_language); + } + + public static string ToLowerFixed(this string str) + { + return str.ToLower(TextTranslation.Get().m_language); + } + + public static string ToUpper(this string str, TextTranslation.Language language) + { + return str.ToUpper(language.ToCultureInfo()); + } + + public static string ToLower(this string str, TextTranslation.Language language) + { + return str.ToLower(language.ToCultureInfo()); + } + public static string ToCamelCase(this string str) { StringBuilder strBuilder = new StringBuilder(str);