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);
 | 
						|
        }
 | 
						|
 | 
						|
        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
 | 
						|
    }
 | 
						|
}
 | 
						|
 |