chicken_dy/Assets/Scripts/Core/Language/LanguageConfig.cs

90 lines
2.1 KiB
C#
Raw Normal View History

2022-01-26 07:46:33 +00:00
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(menuName = "LanguageConfig")]
public class LanguageConfig : ConfigBase<LanguageConfig>
{
public bool IsDebug = false;
[SerializeField] LanguageType DebugLang = LanguageType.Chinese;
[SerializeField] LanguageType DefaultLang = LanguageType.English;
[SerializeField] List<LanguageItem> Items;
public LanguageType LangType
{
get
{
if (IsDebug)
{
return DebugLang;
}
LanguageType tLangType = DefaultLang;
if (Application.systemLanguage == SystemLanguage.Chinese || Application.systemLanguage == SystemLanguage.ChineseSimplified || Application.systemLanguage == SystemLanguage.ChineseTraditional)
{
tLangType = LanguageType.Chinese;
}
else if (Application.systemLanguage == SystemLanguage.Japanese)
{
tLangType = LanguageType.Japanese;
}
return tLangType;
}
}
public string GetText(string pKey)
{
LanguageItem tItem = Items.Find((pItem) => pItem.Key.Equals(pKey));
if (tItem != null)
{
return tItem.GetString(LangType);
}
return pKey;
}
[Serializable]
class LanguageItem
{
public string Key;
public LangString[] LangStrs;
public string GetString(LanguageType pLangType)
{
for (int i = 0; i < LangStrs.Length; i++)
{
if (LangStrs[i].LangType == pLangType)
return LangStrs[i].LString;
}
return Key;
}
}
[Serializable]
public class LangString
{
public LanguageType LangType;
public string LString;
}
[Serializable]
public class LangSprite
{
public LanguageType LangType;
public Sprite LSprite;
}
public enum LanguageType
{
Chinese = 0,
English,
Japanese
}
}