TapCommon-Unity/Runtime/Public/TapLocalizeManager.cs

128 lines
3.9 KiB
C#
Raw Normal View History

2023-10-23 15:17:12 +08:00
using UnityEngine;
namespace TapTap.Common
{
public class TapLocalizeManager
{
private static volatile TapLocalizeManager _instance;
private static readonly object ObjLock = new object();
public static TapLocalizeManager Instance
{
get
{
if (_instance != null) return _instance;
lock (ObjLock)
{
if (_instance == null)
{
_instance = new TapLocalizeManager();
}
}
return _instance;
}
}
private TapLanguage _language = TapLanguage.AUTO;
private bool _regionIsCn;
public static void SetCurrentRegion(bool isCn)
{
Instance._regionIsCn = isCn;
}
public static void SetCurrentLanguage(TapLanguage language)
{
Instance._language = language;
}
public static TapLanguage GetCurrentLanguage()
{
if (Instance._language != TapLanguage.AUTO) return Instance._language;
Instance._language = GetSystemLanguage();
if (Instance._language == TapLanguage.AUTO)
{
Instance._language = Instance._regionIsCn ? TapLanguage.ZH_HANS : TapLanguage.EN;
}
return Instance._language;
}
public static string GetCurrentLanguageString() {
TapLanguage lang = GetCurrentLanguage();
switch (lang) {
case TapLanguage.ZH_HANS:
return "zh_CN";
case TapLanguage.EN:
return "en_US";
case TapLanguage.ZH_HANT:
return "zh_TW";
case TapLanguage.JA:
return "ja_JP";
case TapLanguage.KO:
return "ko_KR";
case TapLanguage.TH:
return "th_TH";
case TapLanguage.ID:
return "id_ID";
default:
return null;
}
}
public static string GetCurrentLanguageString2() {
TapLanguage lang = GetCurrentLanguage();
switch (lang) {
case TapLanguage.ZH_HANS:
return "zh-CN";
case TapLanguage.EN:
return "en-US";
case TapLanguage.ZH_HANT:
return "zh-TW";
case TapLanguage.JA:
return "ja-JP";
case TapLanguage.KO:
return "ko-KR";
case TapLanguage.TH:
return "th-TH";
case TapLanguage.ID:
return "id-ID";
default:
return null;
}
}
private static TapLanguage GetSystemLanguage()
{
var lang = TapLanguage.AUTO;
var sysLanguage = Application.systemLanguage;
switch (sysLanguage)
{
case SystemLanguage.ChineseSimplified:
lang = TapLanguage.ZH_HANS;
break;
case SystemLanguage.English:
lang = TapLanguage.EN;
break;
case SystemLanguage.ChineseTraditional:
lang = TapLanguage.ZH_HANT;
break;
case SystemLanguage.Japanese:
lang = TapLanguage.JA;
break;
case SystemLanguage.Korean:
lang = TapLanguage.KO;
break;
case SystemLanguage.Thai:
lang = TapLanguage.TH;
break;
case SystemLanguage.Indonesian:
lang = TapLanguage.ID;
break;
}
return lang;
}
}
}