mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Fix system language code fetch issue
This commit is contained in:
parent
46c2c1f668
commit
abe943b693
1 changed files with 29 additions and 29 deletions
|
|
@ -23,19 +23,45 @@ namespace Flow.Launcher.Core.Resource
|
||||||
private const string Extension = ".xaml";
|
private const string Extension = ".xaml";
|
||||||
private readonly List<string> _languageDirectories = new List<string>();
|
private readonly List<string> _languageDirectories = new List<string>();
|
||||||
private readonly List<ResourceDictionary> _oldResources = new List<ResourceDictionary>();
|
private readonly List<ResourceDictionary> _oldResources = new List<ResourceDictionary>();
|
||||||
|
private readonly string SystemLanguageCode;
|
||||||
|
|
||||||
public Internationalization()
|
public Internationalization()
|
||||||
{
|
{
|
||||||
AddFlowLauncherLanguageDirectory();
|
AddFlowLauncherLanguageDirectory();
|
||||||
|
SystemLanguageCode = GetSystemLanguageCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void AddFlowLauncherLanguageDirectory()
|
private void AddFlowLauncherLanguageDirectory()
|
||||||
{
|
{
|
||||||
var directory = Path.Combine(Constant.ProgramDirectory, Folder);
|
var directory = Path.Combine(Constant.ProgramDirectory, Folder);
|
||||||
_languageDirectories.Add(directory);
|
_languageDirectories.Add(directory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static string GetSystemLanguageCode()
|
||||||
|
{
|
||||||
|
var availableLanguages = AvailableLanguages.GetAvailableLanguages();
|
||||||
|
|
||||||
|
// Retrieve the language identifiers for the current culture
|
||||||
|
var currentCulture = CultureInfo.CurrentCulture;
|
||||||
|
var twoLetterCode = currentCulture.TwoLetterISOLanguageName;
|
||||||
|
var threeLetterCode = currentCulture.ThreeLetterISOLanguageName;
|
||||||
|
var fullName = currentCulture.Name;
|
||||||
|
|
||||||
|
// Try to find a match in the available languages list
|
||||||
|
foreach (var language in availableLanguages)
|
||||||
|
{
|
||||||
|
var languageCode = language.LanguageCode;
|
||||||
|
|
||||||
|
if (string.Equals(languageCode, twoLetterCode, StringComparison.OrdinalIgnoreCase) ||
|
||||||
|
string.Equals(languageCode, threeLetterCode, StringComparison.OrdinalIgnoreCase) ||
|
||||||
|
string.Equals(languageCode, fullName, StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
return languageCode;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return DefaultLanguageCode;
|
||||||
|
}
|
||||||
|
|
||||||
internal void AddPluginLanguageDirectories(IEnumerable<PluginPair> plugins)
|
internal void AddPluginLanguageDirectories(IEnumerable<PluginPair> plugins)
|
||||||
{
|
{
|
||||||
|
|
@ -74,7 +100,7 @@ namespace Flow.Launcher.Core.Resource
|
||||||
var isSystem = false;
|
var isSystem = false;
|
||||||
if (languageCode == Constant.SystemLanguageCode)
|
if (languageCode == Constant.SystemLanguageCode)
|
||||||
{
|
{
|
||||||
languageCode = GetSystemLanguageCode();
|
languageCode = SystemLanguageCode;
|
||||||
isSystem = true;
|
isSystem = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -178,36 +204,10 @@ namespace Flow.Launcher.Core.Resource
|
||||||
public List<Language> LoadAvailableLanguages()
|
public List<Language> LoadAvailableLanguages()
|
||||||
{
|
{
|
||||||
var list = AvailableLanguages.GetAvailableLanguages();
|
var list = AvailableLanguages.GetAvailableLanguages();
|
||||||
list.Insert(0, new Language(Constant.SystemLanguageCode, AvailableLanguages.GetSystemTranslation(GetSystemLanguageCode())));
|
list.Insert(0, new Language(Constant.SystemLanguageCode, AvailableLanguages.GetSystemTranslation(SystemLanguageCode)));
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
private string GetSystemLanguageCode()
|
|
||||||
{
|
|
||||||
var availableLanguages = AvailableLanguages.GetAvailableLanguages();
|
|
||||||
|
|
||||||
// Retrieve the language identifiers for the current culture
|
|
||||||
var currentCulture = CultureInfo.CurrentCulture;
|
|
||||||
var twoLetterCode = currentCulture.TwoLetterISOLanguageName;
|
|
||||||
var threeLetterCode = currentCulture.ThreeLetterISOLanguageName;
|
|
||||||
var fullName = currentCulture.Name;
|
|
||||||
|
|
||||||
// Try to find a match in the available languages list
|
|
||||||
foreach (var language in availableLanguages)
|
|
||||||
{
|
|
||||||
var languageCode = language.LanguageCode;
|
|
||||||
|
|
||||||
if (string.Equals(languageCode, twoLetterCode, StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
string.Equals(languageCode, threeLetterCode, StringComparison.OrdinalIgnoreCase) ||
|
|
||||||
string.Equals(languageCode, fullName, StringComparison.OrdinalIgnoreCase))
|
|
||||||
{
|
|
||||||
return languageCode;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return DefaultLanguageCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
public string GetTranslation(string key)
|
public string GetTranslation(string key)
|
||||||
{
|
{
|
||||||
var translation = Application.Current.TryFindResource(key);
|
var translation = Application.Current.TryFindResource(key);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue