public WWW Import_Google_CreateWWWcall(bool ForceUpdate, bool justCheck) { if (!HasGoogleSpreadsheet()) { return(null); } string savedVersion = PersistentStorage.GetSetting_String("I2SourceVersion_" + GetSourcePlayerPrefName(), Google_LastUpdatedVersion); if (savedVersion.Length > 19) // Check for corruption { savedVersion = string.Empty; } #if !UNITY_EDITOR if (IsNewerVersion(savedVersion, Google_LastUpdatedVersion)) { Google_LastUpdatedVersion = savedVersion; } #endif string query = string.Format("{0}?key={1}&action=GetLanguageSource&version={2}", LocalizationManager.GetWebServiceURL(this), Google_SpreadsheetKey, ForceUpdate ? "0" : Google_LastUpdatedVersion); #if UNITY_EDITOR if (justCheck) { query += "&justcheck=true"; } #endif WWW www = new WWW(query); return(www); }
public void Import_Google_FromCache() { if (GoogleUpdateFrequency == eGoogleUpdateFrequency.Never) { return; } if (!I2Utils.IsPlaying()) { return; } string PlayerPrefName = GetSourcePlayerPrefName(); string I2SavedData = PersistentStorage.LoadFile(PersistentStorage.eFileType.Persistent, "I2Source_" + PlayerPrefName + ".loc", false); if (string.IsNullOrEmpty(I2SavedData)) { return; } if (I2SavedData.StartsWith("[i2e]", StringComparison.Ordinal)) { I2SavedData = StringObfucator.Decode(I2SavedData.Substring(5, I2SavedData.Length - 5)); } //--[ Compare with current version ]----- bool shouldUpdate = false; string savedSpreadsheetVersion = Google_LastUpdatedVersion; if (PersistentStorage.HasSetting("I2SourceVersion_" + PlayerPrefName)) { savedSpreadsheetVersion = PersistentStorage.GetSetting_String("I2SourceVersion_" + PlayerPrefName, Google_LastUpdatedVersion); // Debug.Log (Google_LastUpdatedVersion + " - " + savedSpreadsheetVersion); shouldUpdate = IsNewerVersion(Google_LastUpdatedVersion, savedSpreadsheetVersion); } if (!shouldUpdate) { PersistentStorage.DeleteFile(PersistentStorage.eFileType.Persistent, "I2Source_" + PlayerPrefName + ".loc", false); PersistentStorage.DeleteSetting("I2SourceVersion_" + PlayerPrefName); return; } if (savedSpreadsheetVersion.Length > 19) // Check for corruption from previous versions { savedSpreadsheetVersion = string.Empty; } Google_LastUpdatedVersion = savedSpreadsheetVersion; //Debug.Log ("[I2Loc] Using Saved (PlayerPref) data in 'I2Source_"+PlayerPrefName+"'" ); Import_Google_Result(I2SavedData, eSpreadsheetUpdateMode.Replace); }
static void SelectStartupLanguage() { if (Sources.Count == 0) { return; } // Use the system language if there is a source with that language, // or pick any of the languages provided by the sources string SavedLanguage = PersistentStorage.GetSetting_String("I2 Language", string.Empty); string SysLanguage = GetCurrentDeviceLanguage(); // Try selecting the System Language // But fallback to the first language found if the System Language is not available in any source if (!string.IsNullOrEmpty(SavedLanguage) && HasLanguage(SavedLanguage, Initialize: false, SkipDisabled: true)) { SetLanguageAndCode(SavedLanguage, GetLanguageCode(SavedLanguage)); return; } if (!Sources [0].IgnoreDeviceLanguage) { // Check if the device language is supported. // Also recognize when not region is set ("English (United State") will be used if sysLanguage is "English") string ValidLanguage = GetSupportedLanguage(SysLanguage, true); if (!string.IsNullOrEmpty(ValidLanguage)) { SetLanguageAndCode(ValidLanguage, GetLanguageCode(ValidLanguage), false); return; } } //--[ Use first language that its not disabled ]----------- for (int i = 0, imax = Sources.Count; i < imax; ++i) { if (Sources[i].mLanguages.Count > 0) { for (int j = 0; j < Sources[i].mLanguages.Count; ++j) { if (Sources[i].mLanguages[j].IsEnabled()) { SetLanguageAndCode(Sources[i].mLanguages[j].Name, Sources[i].mLanguages[j].Code, false); return; } } } } }
// When JustCheck is true, importing from google will not download any data, just detect if the Spreadsheet is up-to-date public void Import_Google(bool ForceUpdate, bool justCheck) { if (!ForceUpdate && GoogleUpdateFrequency == eGoogleUpdateFrequency.Never) { return; } if (!I2Utils.IsPlaying()) { return; } #if UNITY_EDITOR if (justCheck && GoogleInEditorCheckFrequency == eGoogleUpdateFrequency.Never) { return; } #endif #if UNITY_EDITOR var updateFrequency = GoogleInEditorCheckFrequency; #else var updateFrequency = GoogleUpdateFrequency; #endif string PlayerPrefName = GetSourcePlayerPrefName(); if (!ForceUpdate && updateFrequency != eGoogleUpdateFrequency.Always) { #if UNITY_EDITOR string sTimeOfLastUpdate = UnityEditor.EditorPrefs.GetString("LastGoogleUpdate_" + PlayerPrefName, ""); #else string sTimeOfLastUpdate = PersistentStorage.GetSetting_String("LastGoogleUpdate_" + PlayerPrefName, ""); #endif DateTime TimeOfLastUpdate; try { if (DateTime.TryParse(sTimeOfLastUpdate, out TimeOfLastUpdate)) { double TimeDifference = (DateTime.Now - TimeOfLastUpdate).TotalDays; switch (updateFrequency) { case eGoogleUpdateFrequency.Daily: if (TimeDifference < 1) { return; } break; case eGoogleUpdateFrequency.Weekly: if (TimeDifference < 8) { return; } break; case eGoogleUpdateFrequency.Monthly: if (TimeDifference < 31) { return; } break; case eGoogleUpdateFrequency.OnlyOnce: return; } } } catch (Exception) { } } #if UNITY_EDITOR UnityEditor.EditorPrefs.SetString("LastGoogleUpdate_" + PlayerPrefName, DateTime.Now.ToString()); #else PersistentStorage.SetSetting_String("LastGoogleUpdate_" + PlayerPrefName, DateTime.Now.ToString()); #endif //--[ Checking google for updated data ]----------------- CoroutineManager.Start(Import_Google_Coroutine(justCheck)); }