TapLocalizeManager.cs 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. using UnityEngine;
  2. namespace TapSDK.Core
  3. {
  4. public class TapLocalizeManager
  5. {
  6. private static volatile TapLocalizeManager _instance;
  7. private static readonly object ObjLock = new object();
  8. public static TapLocalizeManager Instance
  9. {
  10. get
  11. {
  12. if (_instance != null) return _instance;
  13. lock (ObjLock)
  14. {
  15. if (_instance == null)
  16. {
  17. _instance = new TapLocalizeManager();
  18. }
  19. }
  20. return _instance;
  21. }
  22. }
  23. private TapTapLanguageType _language = TapTapLanguageType.Auto;
  24. private bool _regionIsCn;
  25. public static void SetCurrentRegion(bool isCn)
  26. {
  27. Instance._regionIsCn = isCn;
  28. }
  29. public static void SetCurrentLanguage(TapTapLanguageType language)
  30. {
  31. Instance._language = language;
  32. }
  33. public static TapTapLanguageType GetCurrentLanguage()
  34. {
  35. if (Instance._language != TapTapLanguageType.Auto) return Instance._language;
  36. Instance._language = GetSystemLanguage();
  37. if (Instance._language == TapTapLanguageType.Auto)
  38. {
  39. Instance._language = Instance._regionIsCn ? TapTapLanguageType.zh_Hans : TapTapLanguageType.en;
  40. }
  41. return Instance._language;
  42. }
  43. public static string GetCurrentLanguageString() {
  44. TapTapLanguageType lang = GetCurrentLanguage();
  45. switch (lang) {
  46. case TapTapLanguageType.zh_Hans:
  47. return "zh_CN";
  48. case TapTapLanguageType.en:
  49. return "en_US";
  50. case TapTapLanguageType.zh_Hant:
  51. return "zh_TW";
  52. case TapTapLanguageType.ja:
  53. return "ja_JP";
  54. case TapTapLanguageType.ko:
  55. return "ko_KR";
  56. case TapTapLanguageType.th:
  57. return "th_TH";
  58. case TapTapLanguageType.id:
  59. return "id_ID";
  60. default:
  61. return null;
  62. }
  63. }
  64. public static string GetCurrentLanguageString2() {
  65. TapTapLanguageType lang = GetCurrentLanguage();
  66. switch (lang) {
  67. case TapTapLanguageType.zh_Hans:
  68. return "zh-CN";
  69. case TapTapLanguageType.en:
  70. return "en-US";
  71. case TapTapLanguageType.zh_Hant:
  72. return "zh-TW";
  73. case TapTapLanguageType.ja:
  74. return "ja-JP";
  75. case TapTapLanguageType.ko:
  76. return "ko-KR";
  77. case TapTapLanguageType.th:
  78. return "th-TH";
  79. case TapTapLanguageType.id:
  80. return "id-ID";
  81. default:
  82. return null;
  83. }
  84. }
  85. private static TapTapLanguageType GetSystemLanguage()
  86. {
  87. var lang = TapTapLanguageType.Auto;
  88. var sysLanguage = Application.systemLanguage;
  89. switch (sysLanguage)
  90. {
  91. case SystemLanguage.ChineseSimplified:
  92. lang = TapTapLanguageType.zh_Hans;
  93. break;
  94. case SystemLanguage.English:
  95. lang = TapTapLanguageType.en;
  96. break;
  97. case SystemLanguage.ChineseTraditional:
  98. lang = TapTapLanguageType.zh_Hant;
  99. break;
  100. case SystemLanguage.Japanese:
  101. lang = TapTapLanguageType.ja;
  102. break;
  103. case SystemLanguage.Korean:
  104. lang = TapTapLanguageType.ko;
  105. break;
  106. case SystemLanguage.Thai:
  107. lang = TapTapLanguageType.th;
  108. break;
  109. case SystemLanguage.Indonesian:
  110. lang = TapTapLanguageType.id;
  111. break;
  112. }
  113. return lang;
  114. }
  115. }
  116. }