mirror of
https://github.com/achiez/NebulaAuth-Steam-Desktop-Authenticator-by-Achies.git
synced 2026-07-26 23:01:43 +00:00
121 lines
3.3 KiB
C#
121 lines
3.3 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Reflection;
|
|
using System.Text;
|
|
using CodingSeb.Localization;
|
|
using CodingSeb.Localization.Loaders;
|
|
|
|
namespace NebulaAuth.Core;
|
|
|
|
public static class LocManager
|
|
{
|
|
public const string CODE_BEHIND_PATH_PART = "CodeBehind";
|
|
public const string COMMON_PATH_PART = "Common";
|
|
private const string LOC_DIR = "Localization";
|
|
|
|
public static void SetApplicationLocalization(LocalizationLanguage language)
|
|
{
|
|
Loc.Instance.CurrentLanguage = GetLanguageCode(language);
|
|
//Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(GetLanguageCode(language));
|
|
//Thread.CurrentThread.CurrentCulture= CultureInfo.GetCultureInfo(GetLanguageCode(language));
|
|
}
|
|
|
|
public static string GetCurrentLanguageCode()
|
|
{
|
|
return Loc.Instance.CurrentLanguage;
|
|
}
|
|
|
|
public static string GetLanguageCode(LocalizationLanguage language)
|
|
{
|
|
return language switch
|
|
{
|
|
LocalizationLanguage.English => "en",
|
|
LocalizationLanguage.Russian => "ru",
|
|
LocalizationLanguage.Ukrainian => "uk",
|
|
LocalizationLanguage.ChineseSimplified => "zh",
|
|
LocalizationLanguage.French => "fr",
|
|
LocalizationLanguage.Spanish => "es",
|
|
LocalizationLanguage.Turkish => "tr",
|
|
LocalizationLanguage.Kazakh => "kk",
|
|
_ => throw new ArgumentOutOfRangeException(nameof(language), language, null)
|
|
};
|
|
}
|
|
|
|
|
|
public static void Init()
|
|
{
|
|
Loc.Instance.LogOutMissingTranslations = true;
|
|
|
|
LocalizationLoader.Instance.FileLanguageLoaders.Add(new JsonFileLoader());
|
|
|
|
ReloadFiles();
|
|
}
|
|
|
|
public static void ReloadFiles()
|
|
{
|
|
var baseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)!;
|
|
var path = Path.Combine(baseDir, LOC_DIR);
|
|
LocalizationLoader.Instance.AddDirectory(path);
|
|
}
|
|
|
|
public static string? GetCodeBehind(params string[] path)
|
|
{
|
|
return GetConcat(CODE_BEHIND_PATH_PART, path);
|
|
}
|
|
|
|
public static string GetCodeBehindOrDefault(string def, params string[] path)
|
|
{
|
|
return GetCodeBehind(path) ?? def;
|
|
}
|
|
|
|
public static string? GetCommon(params string[] path)
|
|
{
|
|
return GetConcat(COMMON_PATH_PART, path);
|
|
}
|
|
|
|
public static string GetCommonOrDefault(string def, params string[] path)
|
|
{
|
|
return GetCommon(path) ?? def;
|
|
}
|
|
|
|
|
|
public static string? Get(params string[] path)
|
|
{
|
|
var sb = new StringBuilder();
|
|
foreach (var part in path)
|
|
{
|
|
sb.Append('.');
|
|
sb.Append(part);
|
|
}
|
|
|
|
sb.Remove(0, 1);
|
|
var fullPath = sb.ToString();
|
|
var message = Loc.Tr(fullPath, "~|*ABSENT|~");
|
|
return message == "~|*ABSENT|~" ? null : message;
|
|
}
|
|
|
|
public static string GetOrDefault(string def, params string[] path)
|
|
{
|
|
return Get(path) ?? def;
|
|
}
|
|
|
|
private static string? GetConcat(string first, string[] path)
|
|
{
|
|
var newArray = new string[path.Length + 1];
|
|
newArray[0] = first;
|
|
Array.Copy(path, 0, newArray, 1, path.Length);
|
|
return Get(newArray);
|
|
}
|
|
}
|
|
|
|
public enum LocalizationLanguage
|
|
{
|
|
English,
|
|
Russian,
|
|
Ukrainian,
|
|
ChineseSimplified,
|
|
French,
|
|
Spanish,
|
|
Turkish,
|
|
Kazakh
|
|
} |