mirror of
https://github.com/knah/VRCMelonAssistant.git
synced 2024-05-17 19:02:18 +12:00
Fix'd localizations not loading correctly
This commit is contained in:
parent
fe2fcfb7f9
commit
6327c197fb
|
@ -34,6 +34,7 @@ namespace ModAssistant
|
|||
{
|
||||
// Set SecurityProtocol to prevent crash with TLS
|
||||
System.Net.ServicePointManager.SecurityProtocol |= SecurityProtocolType.Tls12;
|
||||
Languages.LoadLanguages();
|
||||
|
||||
if (ModAssistant.Properties.Settings.Default.UpgradeRequired)
|
||||
{
|
||||
|
@ -136,7 +137,12 @@ namespace ModAssistant
|
|||
}
|
||||
else
|
||||
{
|
||||
Languages.LoadLanguage(args[1]);
|
||||
if (Languages.LoadLanguage(args[1]))
|
||||
{
|
||||
ModAssistant.Properties.Settings.Default.LanguageCode = args[1];
|
||||
ModAssistant.Properties.Settings.Default.Save();
|
||||
Languages.UpdateUI(args[1]);
|
||||
}
|
||||
}
|
||||
|
||||
args = Shift(args, 2);
|
||||
|
|
|
@ -14,10 +14,10 @@ namespace ModAssistant
|
|||
{
|
||||
public static string LoadedLanguage { get; private set; }
|
||||
public static List<CultureInfo> LoadedLanguages { get => availableCultures.ToList(); }
|
||||
|
||||
public static bool FirstRun = true;
|
||||
private static string[] availableLanguageCodes = { "de", "en", "fr", "it", "ko", "nl", "ru", "zh" };
|
||||
|
||||
private static IEnumerable<CultureInfo> availableCultures;
|
||||
|
||||
public static void LoadLanguages()
|
||||
{
|
||||
var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
|
||||
|
@ -26,28 +26,27 @@ namespace ModAssistant
|
|||
availableCultures = allCultures.Where(cultureInfo => availableLanguageCodes.Any(code => code.Equals(cultureInfo.Name)));
|
||||
|
||||
string savedLanguageCode = Properties.Settings.Default.LanguageCode;
|
||||
|
||||
if (savedLanguageCode.Length == 0)
|
||||
if (!LoadLanguage(savedLanguageCode))
|
||||
{
|
||||
// If no language code was saved, load system language
|
||||
savedLanguageCode = CultureInfo.CurrentUICulture.Name.Split('-').First();
|
||||
}
|
||||
else if (!availableLanguageCodes.Any(code => code.Equals(savedLanguageCode)))
|
||||
{
|
||||
// If language code isn't supported, load English instead
|
||||
savedLanguageCode = "en";
|
||||
if (!LoadLanguage(CultureInfo.CurrentUICulture.Name))
|
||||
{
|
||||
LoadLanguage("en");
|
||||
}
|
||||
}
|
||||
UpdateUI(LoadedLanguage);
|
||||
}
|
||||
|
||||
public static void UpdateUI(string languageCode)
|
||||
{
|
||||
if (Options.Instance != null && Options.Instance.LanguageSelectComboBox != null)
|
||||
{
|
||||
Options.Instance.LanguageSelectComboBox.ItemsSource = availableCultures.Select(cultureInfo => cultureInfo.NativeName).ToList();
|
||||
Options.Instance.LanguageSelectComboBox.SelectedIndex = LoadedLanguages.FindIndex(cultureInfo => cultureInfo.Name.Equals(savedLanguageCode)); ;
|
||||
Options.Instance.LanguageSelectComboBox.SelectedIndex = LoadedLanguages.FindIndex(cultureInfo => cultureInfo.Name.Equals(languageCode));
|
||||
}
|
||||
|
||||
LoadLanguage(savedLanguageCode);
|
||||
}
|
||||
|
||||
private static ResourceDictionary LanguagesDict
|
||||
public static ResourceDictionary LanguagesDict
|
||||
{
|
||||
get
|
||||
{
|
||||
|
@ -55,21 +54,22 @@ namespace ModAssistant
|
|||
}
|
||||
}
|
||||
|
||||
public static void LoadLanguage(string languageCode)
|
||||
public static bool LoadLanguage(string languageCode)
|
||||
{
|
||||
if (string.IsNullOrEmpty(languageCode)) return false;
|
||||
try
|
||||
{
|
||||
LanguagesDict.Source = new Uri($"Localisation/{languageCode}.xaml", UriKind.Relative);
|
||||
Properties.Settings.Default.LanguageCode = languageCode;
|
||||
Properties.Settings.Default.Save();
|
||||
LoadedLanguage = languageCode;
|
||||
return true;
|
||||
}
|
||||
catch (IOException)
|
||||
{
|
||||
if (languageCode.Contains("-"))
|
||||
{
|
||||
LoadLanguage(languageCode.Split('-').First());
|
||||
return LoadLanguage(languageCode.Split('-').First());
|
||||
}
|
||||
// Can't load language file
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -65,8 +65,6 @@ namespace ModAssistant
|
|||
Themes.LoadThemes();
|
||||
Themes.FirstLoad(Properties.Settings.Default.SelectedTheme);
|
||||
|
||||
Languages.LoadLanguages();
|
||||
|
||||
Task.Run(() => LoadVersionsAsync());
|
||||
|
||||
if (!Properties.Settings.Default.Agreed || string.IsNullOrEmpty(Properties.Settings.Default.LastTab))
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Net;
|
||||
using System.Net.Http;
|
||||
|
@ -344,7 +345,20 @@ namespace ModAssistant.Pages
|
|||
// Get the matching language from the LoadedLanguages array, then try and use it
|
||||
var languageName = (sender as ComboBox).SelectedItem.ToString();
|
||||
var selectedLanguage = Languages.LoadedLanguages.Find(language => language.NativeName.CompareTo(languageName) == 0);
|
||||
Languages.LoadLanguage(selectedLanguage.Name);
|
||||
if (Languages.LoadLanguage(selectedLanguage.Name))
|
||||
{
|
||||
Properties.Settings.Default.LanguageCode = selectedLanguage.Name;
|
||||
Properties.Settings.Default.Save();
|
||||
if (Languages.FirstRun)
|
||||
{
|
||||
Languages.FirstRun = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
Process.Start(Utils.ExePath, App.Arguments);
|
||||
Application.Current.Dispatcher.Invoke(() => { Application.Current.Shutdown(); });
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue