mirror of
https://github.com/osukey/osukey.git
synced 2025-08-04 07:06:35 +09:00
Merge pull request #21746 from peppy/fix-language-update
Closes https://github.com/ppy/osu/issues/21744
This commit is contained in:
@ -87,18 +87,21 @@ namespace osu.Game.Overlays.FirstRunSetup
|
|||||||
});
|
});
|
||||||
|
|
||||||
frameworkLocale = frameworkConfig.GetBindable<string>(FrameworkSetting.Locale);
|
frameworkLocale = frameworkConfig.GetBindable<string>(FrameworkSetting.Locale);
|
||||||
|
frameworkLocale.BindValueChanged(_ => onLanguageChange());
|
||||||
|
|
||||||
localisationParameters = localisation.CurrentParameters.GetBoundCopy();
|
localisationParameters = localisation.CurrentParameters.GetBoundCopy();
|
||||||
localisationParameters.BindValueChanged(p =>
|
localisationParameters.BindValueChanged(_ => onLanguageChange(), true);
|
||||||
{
|
}
|
||||||
var language = LanguageExtensions.GetLanguageFor(frameworkLocale.Value, p.NewValue);
|
|
||||||
|
|
||||||
// Changing language may cause a short period of blocking the UI thread while the new glyphs are loaded.
|
private void onLanguageChange()
|
||||||
// Scheduling ensures the button animation plays smoothly after any blocking operation completes.
|
{
|
||||||
// Note that a delay is required (the alternative would be a double-schedule; delay feels better).
|
var language = LanguageExtensions.GetLanguageFor(frameworkLocale.Value, localisationParameters.Value);
|
||||||
updateSelectedDelegate?.Cancel();
|
|
||||||
updateSelectedDelegate = Scheduler.AddDelayed(() => updateSelectedStates(language), 50);
|
// Changing language may cause a short period of blocking the UI thread while the new glyphs are loaded.
|
||||||
}, true);
|
// Scheduling ensures the button animation plays smoothly after any blocking operation completes.
|
||||||
|
// Note that a delay is required (the alternative would be a double-schedule; delay feels better).
|
||||||
|
updateSelectedDelegate?.Cancel();
|
||||||
|
updateSelectedDelegate = Scheduler.AddDelayed(() => updateSelectedStates(language), 50);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateSelectedStates(Language language)
|
private void updateSelectedStates(Language language)
|
||||||
|
@ -44,10 +44,13 @@ namespace osu.Game.Overlays.Settings.Sections.General
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
localisationParameters.BindValueChanged(p
|
frameworkLocale.BindValueChanged(_ => updateSelection());
|
||||||
=> languageSelection.Current.Value = LanguageExtensions.GetLanguageFor(frameworkLocale.Value, p.NewValue), true);
|
localisationParameters.BindValueChanged(_ => updateSelection(), true);
|
||||||
|
|
||||||
languageSelection.Current.BindValueChanged(val => frameworkLocale.Value = val.NewValue.ToCultureCode());
|
languageSelection.Current.BindValueChanged(val => frameworkLocale.Value = val.NewValue.ToCultureCode());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateSelection() =>
|
||||||
|
languageSelection.Current.Value = LanguageExtensions.GetLanguageFor(frameworkLocale.Value, localisationParameters.Value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user