2025-11-18 09:18:48 +08:00
|
|
|
using System.Collections;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Newtonsoft.Json;
|
|
|
|
|
using UnityEngine;
|
2026-04-20 08:31:41 +08:00
|
|
|
|
2026-04-16 14:57:19 +08:00
|
|
|
namespace Kill.Managers
|
2025-11-18 09:18:48 +08:00
|
|
|
{
|
|
|
|
|
public class LanguageManager : MonoBehaviour
|
|
|
|
|
{
|
|
|
|
|
public static LanguageManager Instance;
|
2026-04-20 08:31:41 +08:00
|
|
|
|
2025-11-18 09:18:48 +08:00
|
|
|
[System.Serializable]
|
|
|
|
|
public struct Language
|
|
|
|
|
{
|
|
|
|
|
public string key;
|
|
|
|
|
public string zh;
|
|
|
|
|
public string en;
|
|
|
|
|
}
|
2026-04-20 08:31:41 +08:00
|
|
|
|
2025-11-18 09:18:48 +08:00
|
|
|
List<Language> languageList;
|
2026-04-20 08:31:41 +08:00
|
|
|
|
2025-11-18 09:18:48 +08:00
|
|
|
[System.Serializable]
|
|
|
|
|
public enum LanguageType
|
|
|
|
|
{
|
|
|
|
|
Chinese,
|
|
|
|
|
English
|
|
|
|
|
}
|
2026-04-20 08:31:41 +08:00
|
|
|
|
2025-11-18 09:18:48 +08:00
|
|
|
void Awake()
|
|
|
|
|
{
|
|
|
|
|
Instance = this;
|
|
|
|
|
}
|
2026-04-20 08:31:41 +08:00
|
|
|
|
2025-11-18 09:18:48 +08:00
|
|
|
public LanguageType languageType = LanguageType.English;
|
2026-04-20 08:31:41 +08:00
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 根据系统语言自动设置 App 语言
|
|
|
|
|
/// 只有简体中文和繁体中文显示中文,其他全部显示英文
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void SetLanguageBySystem()
|
|
|
|
|
{
|
|
|
|
|
SystemLanguage systemLanguage = Application.systemLanguage;
|
|
|
|
|
Debug.Log($"系统语言: {systemLanguage}");
|
|
|
|
|
|
|
|
|
|
if (systemLanguage == SystemLanguage.Chinese ||
|
|
|
|
|
systemLanguage == SystemLanguage.ChineseSimplified ||
|
|
|
|
|
systemLanguage == SystemLanguage.ChineseTraditional)
|
|
|
|
|
{
|
|
|
|
|
languageType = LanguageType.Chinese;
|
|
|
|
|
Debug.Log("设置语言为: 中文");
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
languageType = LanguageType.English;
|
|
|
|
|
Debug.Log("设置语言为: 英文");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 手动设置语言
|
|
|
|
|
/// </summary>
|
|
|
|
|
public void SetLanguage(LanguageType type)
|
|
|
|
|
{
|
|
|
|
|
languageType = type;
|
|
|
|
|
Debug.Log($"手动设置语言为: {type}");
|
|
|
|
|
}
|
2025-11-18 09:18:48 +08:00
|
|
|
public async Task Init()
|
|
|
|
|
{
|
|
|
|
|
TextAsset textAsset = await LoadRes.Instance.LoadAssetAsync<TextAsset>("language", "language.json");
|
|
|
|
|
languageList = JsonConvert.DeserializeObject<List<Language>>(textAsset.text);
|
|
|
|
|
}
|
|
|
|
|
public string GetLanguage(string key)
|
|
|
|
|
{
|
|
|
|
|
int index = languageList.FindIndex(x => x.key == key);
|
|
|
|
|
if(index<0||index>=languageList.Count)
|
|
|
|
|
index=0;
|
|
|
|
|
if (languageType == LanguageType.Chinese)
|
|
|
|
|
return languageList[index].zh;
|
|
|
|
|
else
|
|
|
|
|
return languageList[index].en;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|