diff --git a/PKHeX.Core/Editing/LocalizeUtil.cs b/PKHeX.Core/Editing/LocalizeUtil.cs
new file mode 100644
index 000000000..46b3000a4
--- /dev/null
+++ b/PKHeX.Core/Editing/LocalizeUtil.cs
@@ -0,0 +1,32 @@
+using System.Threading.Tasks;
+
+namespace PKHeX.Core
+{
+ public static class LocalizeUtil
+ {
+ ///
+ /// Initializes PKHeX's runtime strings to the specified language.
+ ///
+ /// 2-char language ID
+ /// Save data (optional)
+ /// Permit illegal things (items, only)
+ public static void InitializeStrings(string lang, SaveFile? sav = null, bool hax = false)
+ {
+ var str = GameInfo.Strings = GameInfo.GetStrings(lang);
+ if (sav != null)
+ GameInfo.FilteredSources = new FilteredGameDataSource(sav, GameInfo.Sources, hax);
+
+ // Update Legality Analysis strings
+ LegalityAnalysis.MoveStrings = str.movelist;
+ LegalityAnalysis.SpeciesStrings = str.specieslist;
+
+ // Update Legality Strings
+ Task.Run(() =>
+ {
+ RibbonStrings.ResetDictionary(str.ribbons);
+ Util.SetLocalization(typeof(LegalityCheckStrings), lang);
+ Util.SetLocalization(typeof(MessageStrings), lang);
+ });
+ }
+ }
+}
diff --git a/PKHeX.WinForms/MainWindow/Main.cs b/PKHeX.WinForms/MainWindow/Main.cs
index 145b79a39..83a772932 100644
--- a/PKHeX.WinForms/MainWindow/Main.cs
+++ b/PKHeX.WinForms/MainWindow/Main.cs
@@ -917,7 +917,7 @@ private void ChangeMainLanguage(object sender, EventArgs e)
Menu_Options.DropDown.Close();
- InitializeStrings();
+ LocalizeUtil.InitializeStrings(CurrentLanguage, C_SAV.SAV, HaX);
WinFormsUtil.TranslateInterface(this, CurrentLanguage); // Translate the UI to language.
if (C_SAV.SAV != null)
{
@@ -928,26 +928,6 @@ private void ChangeMainLanguage(object sender, EventArgs e)
Text = GetProgramTitle(sav);
}
}
-
- private void InitializeStrings()
- {
- string l = CurrentLanguage;
- GameInfo.Strings = GameInfo.GetStrings(l);
- if (C_SAV.SAV != null)
- GameInfo.FilteredSources = new FilteredGameDataSource(C_SAV.SAV, GameInfo.Sources, HaX);
-
- // Update Legality Strings
- Task.Run(() => {
- var lang = Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName.Substring(0, 2);
- Util.SetLocalization(typeof(LegalityCheckStrings), lang);
- Util.SetLocalization(typeof(MessageStrings), lang);
- RibbonStrings.ResetDictionary(GameInfo.Strings.ribbons);
- });
-
- // Update Legality Analysis strings
- LegalityAnalysis.MoveStrings = GameInfo.Strings.movelist;
- LegalityAnalysis.SpeciesStrings = GameInfo.Strings.specieslist;
- }
#endregion
#region //// PKX WINDOW FUNCTIONS ////