Guest User

Untitled

a guest
Jan 10th, 2021
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. using System;
  2. using System.IO;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5.  
  6. public class LocalizationManager : MonoBehaviour
  7. {
  8. private string currentLanguage;
  9. private Dictionary<string, string> localizedText;
  10. public static bool isReady = false;
  11.  
  12. public delegate void ChangeLangText();
  13. public event ChangeLangText OnLanguageChanged;
  14.  
  15. void Awake()
  16. {
  17. if (!PlayerPrefs.HasKey("Language"))
  18. {
  19. if (Application.systemLanguage == SystemLanguage.Russian || Application.systemLanguage == SystemLanguage.Ukrainian || Application.systemLanguage == SystemLanguage.Belarusian)
  20. {
  21. PlayerPrefs.SetString("Language", "ru_RU");
  22. }
  23. else
  24. {
  25. PlayerPrefs.SetString("Language", "en_US");
  26. }
  27. }
  28. currentLanguage = PlayerPrefs.GetString("Language");
  29.  
  30. LoadLocalizedText(currentLanguage);
  31. }
  32.  
  33. public void LoadLocalizedText(string langName)
  34. {
  35. string path = Application.streamingAssetsPath + "/Languages/" + langName + ".json";
  36.  
  37. string dataAsJson;
  38.  
  39. if (Application.platform == RuntimePlatform.Android)
  40. {
  41. WWW reader = new WWW(path);
  42. while (!reader.isDone) { }
  43.  
  44. dataAsJson = reader.text;
  45. }
  46. else
  47. {
  48. dataAsJson = File.ReadAllText(path);
  49. }
  50.  
  51. LocalizationData loadedData = JsonUtility.FromJson<LocalizationData>(dataAsJson);
  52.  
  53. localizedText = new Dictionary<string, string>();
  54. for (int i = 0; i < loadedData.items.Length; i++)
  55. {
  56. localizedText.Add(loadedData.items[i].key, loadedData.items[i].value);
  57. }
  58.  
  59. PlayerPrefs.SetString("Language", langName);
  60. currentLanguage = PlayerPrefs.GetString("Language");
  61. isReady = true;
  62.  
  63. OnLanguageChanged?.Invoke();
  64. }
  65.  
  66. public string GetLocalizedValue(string key)
  67. {
  68. if (localizedText.ContainsKey(key))
  69. {
  70. return localizedText[key];
  71. }
  72. else
  73. {
  74. throw new Exception("Localized text with key \"" + key + "\" not found");
  75. }
  76. }
  77.  
  78. public string CurrentLanguage
  79. {
  80. get
  81. {
  82. return currentLanguage;
  83. }
  84. set
  85. {
  86. PlayerPrefs.SetString("Language", value);
  87. currentLanguage = PlayerPrefs.GetString("Language");
  88. }
  89. }
  90. public bool IsReady
  91. {
  92. get
  93. {
  94. return isReady;
  95. }
  96. }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment