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