90 lines
2.1 KiB
C#
90 lines
2.1 KiB
C#
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).Replace('~', '\n');
|
|
}
|
|
|
|
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
|
|
}
|
|
}
|
|
|