Files
2026-03-04 10:03:45 +08:00

131 lines
2.8 KiB
C#

using System.Collections.Generic;
using I2.Loc;
using UnityEngine;
public class LanguageManager : MonoBehaviour
{
private static LanguageManager instance;
public List<string> languagesList;
public string currentLanguage;
public static LanguageManager Instance => instance;
private void Awake()
{
if (instance == null)
{
instance = this;
Object.DontDestroyOnLoad(base.gameObject);
}
else if (instance != this)
{
Object.Destroy(base.gameObject);
}
}
private void Start()
{
languagesList = new List<string>();
languagesList = LocalizationManager.GetAllLanguages();
currentLanguage = LocalizationManager.CurrentLanguage;
if (!PlayerPrefs.HasKey("IsSetLanguageManual"))
{
switch (Application.systemLanguage)
{
case SystemLanguage.Polish:
SetLanguage(0);
break;
case SystemLanguage.English:
SetLanguage(1);
break;
case SystemLanguage.Ukrainian:
SetLanguage(2);
break;
case SystemLanguage.Russian:
SetLanguage(3);
break;
case SystemLanguage.German:
SetLanguage(4);
break;
case SystemLanguage.French:
SetLanguage(5);
break;
case SystemLanguage.Italian:
SetLanguage(6);
break;
case SystemLanguage.Portuguese:
SetLanguage(7);
break;
case SystemLanguage.Spanish:
SetLanguage(8);
break;
case SystemLanguage.Chinese:
case SystemLanguage.ChineseSimplified:
case SystemLanguage.ChineseTraditional:
SetLanguage(9);
break;
case SystemLanguage.Japanese:
SetLanguage(10);
break;
case SystemLanguage.Turkish:
SetLanguage(11);
break;
case SystemLanguage.Dutch:
SetLanguage(12);
break;
case SystemLanguage.Korean:
SetLanguage(13);
break;
default:
SetLanguage(1);
break;
}
}
}
public void SetLanguage(int languageIndex)
{
LocalizationManager.CurrentLanguage = languagesList[languageIndex];
currentLanguage = languagesList[languageIndex];
Debug.Log("Set language: " + currentLanguage);
}
public string GetText(string key)
{
List<string> list = new List<string>();
list = LocalizationManager.GetCategories();
for (int i = 0; i < list.Count; i++)
{
string text = "";
text = ((!(list[i] == "Default")) ? LocalizationManager.GetTranslation(list[i] + "/" + key) : LocalizationManager.GetTranslation(key));
if (!string.IsNullOrEmpty(text))
{
return text;
}
}
return "";
}
public string GetMonthName(int nr)
{
return nr switch
{
1 => GetText("JANUARY"),
2 => GetText("FEBRUARY"),
3 => GetText("MARCH"),
4 => GetText("APRIL"),
5 => GetText("MAY"),
6 => GetText("JUNE"),
7 => GetText("JULY"),
8 => GetText("AUGUST"),
9 => GetText("SEPTEMBER"),
10 => GetText("OCTOBER"),
11 => GetText("NOVEMBER"),
12 => GetText("DECEMBER"),
_ => nr.ToString(),
};
}
}