| 
									
										
										
										
											2022-05-23 13:39:59 +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) | 
					
						
							|  |  |  |  |         { | 
					
						
							| 
									
										
										
										
											2022-06-08 13:23:44 +00:00
										 |  |  |  |             return tItem.GetString(LangType).Replace('~', '\n'); | 
					
						
							| 
									
										
										
										
											2022-05-23 13:39:59 +00:00
										 |  |  |  |         } | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |         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 | 
					
						
							|  |  |  |  |     } | 
					
						
							|  |  |  |  | } | 
					
						
							|  |  |  |  | 
 |