Locale Extensions (#852)

## Improvements

- Now uses selected language instead of system language when making
strings fully uppercase or lowercase in translations
This commit is contained in:
xen-42 2024-04-30 18:01:17 -04:00 committed by GitHub
commit 0cf6fd0a77
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 73 additions and 7 deletions

View File

@ -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);

View File

@ -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

View File

@ -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;
}

View File

@ -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();
}

View File

@ -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();
}

View File

@ -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,70 @@ 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("_", " ").ToTitleCase();
}
}
public static CultureInfo ToCultureInfo(this TextTranslation.Language language)
{
return CultureInfo.GetCultures(CultureTypes.AllCultures).FirstOrDefault(culture =>
{
var name = language.ToLanguageName();
return culture.EnglishName == name || culture.NativeName.ToTitleCase() == name;
}) ?? 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);
@ -78,7 +143,7 @@ namespace NewHorizons.Utility
public static string ToTitleCase(this string str)
{
StringBuilder strBuilder = new StringBuilder(str);
StringBuilder strBuilder = new StringBuilder(str.ToLowerInvariant());
strBuilder[0] = strBuilder[0].ToString().ToUpperInvariant().ToCharArray()[0];
return strBuilder.ToString();
}