public void SetLanguage(string languageID) { m_currentLanguageID = null; if (ReadLanguageFile(languageID) || DoLanguageExist(languageID)) { m_currentLanguageID = languageID; } else { int indexOf_ = languageID.IndexOf('_'); if (indexOf_ > 0) { string fallbackLangID = languageID.Substring(0, indexOf_); if (ReadLanguageFile(fallbackLangID) || DoLanguageExist(fallbackLangID)) { m_currentLanguageID = fallbackLangID; } } } if (string.IsNullOrEmpty(m_currentLanguageID)) { m_currentLanguageID = DEFAULT_LANGUAGE_ID; if (!DoLanguageExist(DEFAULT_LANGUAGE_ID)) { ReadLanguageFile(DEFAULT_LANGUAGE_ID); } } if (m_languages.ContainsKey(m_currentLanguageID)) { m_currentLanguage = m_languages[m_currentLanguageID]; } }
private bool ReadLanguageFile(string languageId) { string fileName = BASEFILENAME + languageId + FILEEXTENSION; string templateFileName = Path.Combine(FILEFOLDER, Path.GetFileNameWithoutExtension(fileName)); TextAsset asset = ((TextAsset)Resources.Load(templateFileName)); if (asset != null) { string fileJSON = asset.text; LocalisedLanguage newLanguage = new LocalisedLanguage(); try { Hashtable data = JSON.JsonDecode(fileJSON) as Hashtable; newLanguage.ParseJsonData(data); } catch (Exception je) { UnityEngine.Debug.Log("The text file is not in JSON format, " + je.ToString()); } if (m_languages.ContainsKey(newLanguage.ID)) { if (newLanguage.Version > m_languages[newLanguage.ID].Version) { m_languages.Remove(newLanguage.ID); m_languages.Add(newLanguage.ID, newLanguage); return(true); } } else { m_languages.Add(newLanguage.ID, newLanguage); return(true); } } return(false); }