public void SelectCulture(String culture) {
if (culture == ":null:") {
culture = CultureInfo.InstalledUICulture.Name;
}
// List all our resources
var dictionaryList = new List<ResourceDictionary>(Current.Resources.MergedDictionaries);
// We want our specific culture
String requestedCulture = $"Locale.{culture}.xaml";
ResourceDictionary resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString == "/BetterExplorer;component/Translation/" + requestedCulture);
if (resourceDictionary == null) {
// If not found, we select our default language
requestedCulture = "DefaultLocale.xaml";
resourceDictionary = dictionaryList.FirstOrDefault(d => d.Source.OriginalString == "/BetterExplorer;component/Translation/" + requestedCulture);
}
// If we have the requested resource, remove it from the list and place at the end.\
// Then this language will be our string table to use.
if (resourceDictionary != null) {
Current.Resources.MergedDictionaries.Remove(resourceDictionary);
Current.Resources.MergedDictionaries.Add(resourceDictionary);
}
// Inform the threads of the new culture
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(culture);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(culture);
}