// Update is called once per frame private void InitializeSettings() { // Create list of languages languages = new List <LangItem>(); // Create new List languages.Add(new LangItem("EN", SystemLanguage.English)); // Add English languages.Add(new LangItem("RU", SystemLanguage.Russian)); // Add Russian // Detect File Exists if (File.Exists(_settings_path)) // Language Settings File Exists // Here we load language settings from file { loadSettings(_settings_path); // Load from file and set to instance } else // No File, First Run // Here we detect user language for our scripts { settings = new LangSettingsModel(); // Create Lang Settings Model instance for manager settings.language = languages [0].code; // Default Language for (int i = 0; i < languages.Count; i++) // Each language items { if (Application.systemLanguage == languages [i].language) // Detected system language { settings.language = languages [i].code; // Set Language break; // Exit Loop } } // Now, we save detected language saveSettings(_settings_path, settings); } }
// Save Settings public void saveSettings(string path, LangSettingsModel data) { // Save Data to Base64 encoded text file string _json_data = JsonUtility.ToJson(data); // Convert Data to JSON byte[] _bytesToEncode = Encoding.UTF8.GetBytes(_json_data); // Encode to bytes string _encodedText = Convert.ToBase64String(_bytesToEncode); // Convert Encoded bytes to string File.WriteAllText(_settings_path, _encodedText); // Save datas to file }
// Load Language Settings public void loadSettings(string path) { // Load Data from Base64 encoded text file string _data = File.ReadAllText(path); // Read All Text byte[] _decodedBytes = Convert.FromBase64String(_data); // Decode Data string _decodedText = Encoding.UTF8.GetString(_decodedBytes); // Get Decoded Data to String settings = JsonUtility.FromJson <LangSettingsModel>(_decodedText); // Convert Data to instance by model }