mirror of
https://github.com/knah/VRCMelonAssistant.git
synced 2024-10-01 09:36:35 +13:00
76 lines
2.7 KiB
C#
76 lines
2.7 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using ModAssistant.Pages;
|
|
|
|
namespace ModAssistant
|
|
{
|
|
class Languages
|
|
{
|
|
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", "sv", "zh" };
|
|
private static IEnumerable<CultureInfo> availableCultures;
|
|
|
|
public static void LoadLanguages()
|
|
{
|
|
var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
|
|
|
|
// Get CultureInfo for any of the available translations
|
|
availableCultures = allCultures.Where(cultureInfo => availableLanguageCodes.Any(code => code.Equals(cultureInfo.Name)));
|
|
|
|
string savedLanguageCode = Properties.Settings.Default.LanguageCode;
|
|
if (!LoadLanguage(savedLanguageCode))
|
|
{
|
|
// If no language code was saved, load system language
|
|
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(languageCode));
|
|
}
|
|
}
|
|
|
|
public static ResourceDictionary LanguagesDict
|
|
{
|
|
get
|
|
{
|
|
return Application.Current.Resources.MergedDictionaries[1];
|
|
}
|
|
}
|
|
|
|
public static bool LoadLanguage(string languageCode)
|
|
{
|
|
if (string.IsNullOrEmpty(languageCode)) return false;
|
|
try
|
|
{
|
|
LanguagesDict.Source = new Uri($"Localisation/{languageCode}.xaml", UriKind.Relative);
|
|
LoadedLanguage = languageCode;
|
|
return true;
|
|
}
|
|
catch (IOException)
|
|
{
|
|
if (languageCode.Contains("-"))
|
|
{
|
|
return LoadLanguage(languageCode.Split('-').First());
|
|
}
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
}
|