fix: Fixes language casing and adds localization reset command (#1703)

This commit is contained in:
Kamron Batman 2024-03-09 11:02:56 -08:00 committed by GitHub
parent 1147a80b34
commit b5342a82e1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 31 additions and 1 deletions

View file

@ -28,7 +28,7 @@ public static class Localization
public const string FallbackLanguage = "enu";
private static Dictionary<int, LocalizationEntry> _fallbackEntries;
private static Dictionary<string, Dictionary<int, LocalizationEntry>> _localizations = new();
private static readonly Dictionary<string, Dictionary<int, LocalizationEntry>> _localizations = new();
public static void Configure()
{
@ -44,6 +44,7 @@ public static class Localization
public static void Add(string lang, int number, string text)
{
lang = lang.ToLower();
var entry = new LocalizationEntry(lang, number, text);
if (!_localizations.TryGetValue(lang, out var entries))
{
@ -60,6 +61,7 @@ public static class Localization
public static bool Remove(string lang, int number)
{
lang = lang.ToLower();
if (!_localizations.TryGetValue(lang, out var entries) || !entries.Remove(number))
{
return false;
@ -73,11 +75,18 @@ public static class Localization
return true;
}
public static void Clear()
{
_localizations.Clear();
_fallbackEntries = null;
}
public static Dictionary<int, LocalizationEntry> LoadClilocs(string lang) =>
LoadClilocs(lang, Core.FindDataFile($"cliloc.{lang}", false));
private static Dictionary<int, LocalizationEntry> LoadClilocs(string lang, string file)
{
lang = lang.ToLower();
Dictionary<int, LocalizationEntry> entries = _localizations[lang] = new Dictionary<int, LocalizationEntry>();
if (lang == FallbackLanguage)
{
@ -145,6 +154,7 @@ public static class Localization
/// <returns>True if the entry exists, otherwise false.</returns>
public static bool TryGetLocalization(string lang, int number, out LocalizationEntry entry)
{
lang = lang.ToLower();
if (lang != FallbackLanguage)
{
if (!_localizations.TryGetValue(lang, out var entries))

View file

@ -0,0 +1,20 @@
namespace Server.Commands;
public static class ResetLocalization
{
public static void Configure()
{
CommandSystem.Register("ResetLocalization", AccessLevel.Developer, ResetLocalization_OnCommand);
}
[Usage("ResetLocalization [<command>]")]
[Aliases("ResetLoc")]
[Description(
"Clears the localization table. Cliloc will be reloaded the next time they are used for that language."
)]
private static void ResetLocalization_OnCommand(CommandEventArgs e)
{
Localization.Clear();
e.Mobile.SendMessage("Localization table cleared.");
}
}

Binary file not shown.