diff --git a/binaries/data/mods/public/gui/locale/locale.js b/binaries/data/mods/public/gui/locale/locale.js
index 446c27f765..9d34929fa9 100644
--- a/binaries/data/mods/public/gui/locale/locale.js
+++ b/binaries/data/mods/public/gui/locale/locale.js
@@ -19,22 +19,31 @@ function init()
var localeText = Engine.GetGUIObjectByName("localeText");
localeText.caption = currentLocale;
- return new Promise(closePageCallback =>
+ const cancel = new Promise(closePageCallback =>
{
- Engine.GetGUIObjectByName("cancelButton").onPress = closePageCallback;
+ Engine.GetGUIObjectByName("cancelButton").onPress = closePageCallback.bind(undefined, false);
});
+
+ return Promise.race([ cancel, applySelectedLocale() ]);
}
function applySelectedLocale()
{
- var localeText = Engine.GetGUIObjectByName("localeText");
- if (!Engine.SaveLocale(localeText.caption))
+ return new Promise(closePageCallback =>
{
- warn("Selected locale could not be saved in the configuration!");
- return;
- }
- Engine.ReevaluateCurrentLocaleAndReload();
- Engine.SwitchGuiPage("page_pregame.xml");
+ Engine.GetGUIObjectByName("apply").onPress = () =>
+ {
+ var localeText = Engine.GetGUIObjectByName("localeText");
+ if (!Engine.SaveLocale(localeText.caption))
+ {
+ warn("Selected locale could not be saved in the configuration!");
+ return;
+ }
+
+ Engine.ReevaluateCurrentLocaleAndReload();
+ closePageCallback(true);
+ };
+ });
}
function languageSelectionChanged()
diff --git a/binaries/data/mods/public/gui/locale/locale.xml b/binaries/data/mods/public/gui/locale/locale.xml
index 0015c485df..9e8f3bf69b 100644
--- a/binaries/data/mods/public/gui/locale/locale.xml
+++ b/binaries/data/mods/public/gui/locale/locale.xml
@@ -41,9 +41,8 @@
openAdvancedMenu();
-
diff --git a/binaries/data/mods/public/gui/pregame/MainMenuItems.js b/binaries/data/mods/public/gui/pregame/MainMenuItems.js
index 01c24bb565..daa1efc0c1 100644
--- a/binaries/data/mods/public/gui/pregame/MainMenuItems.js
+++ b/binaries/data/mods/public/gui/pregame/MainMenuItems.js
@@ -312,9 +312,14 @@ export const mainMenuItems = [
{
"caption": translate("Language"),
"tooltip": translate("Choose the language of the game."),
- "onPress": () =>
+ "onPress": async(closePageCallback) =>
{
- Engine.OpenChildPage("page_locale.xml");
+ if (!await Engine.OpenChildPage("page_locale.xml"))
+ return;
+
+ closePageCallback({ [Engine.openRequest]: {
+ "page": "page_pregame.xml"
+ } });
}
},
{