private void Awake() { if (this.Language) { this.Language.Clear(); string[] availableTranslations = UiTranslationDatabase.GetAvailableTranslations(); Texture[] availableTranslationsIcons = UiTranslationDatabase.GetAvailableTranslationsIcons(); for (int i = 0; i < availableTranslations.Length; i++) { this.Language.AddItem(availableTranslations[i], availableTranslationsIcons[i], null); } EventDelegate.Add(this.Language.onChange, new EventDelegate.Callback(this.OnLanguageChange)); } this.BeginIgnoreEvents(); }
public static Texture[] GetAvailableTranslationsIcons() { UiTranslationDatabase.GetAvailableTranslations(); return(UiTranslationDatabase.Instance._availableTranslationsIcons); }
public static void SetLanguage(string lang) { UiTranslationDatabase.GetAvailableTranslations(); if (string.Equals(lang, "TRANSLATIONDEBUG", StringComparison.InvariantCultureIgnoreCase)) { UiTranslationDatabase.Instance.Data = (from d in UiTranslationDatabase.Instance.DataEnglish where !string.IsNullOrEmpty(d.Value) select d).ToDictionary((KeyValuePair <string, string> i) => i.Key, (KeyValuePair <string, string> i) => "{" + i.Key + "}"); UiTranslationDatabase.Instance.DataCaps = (from d in UiTranslationDatabase.Instance.DataEnglish where !string.IsNullOrEmpty(d.Value) select d).ToDictionary((KeyValuePair <string, string> i) => i.Key, (KeyValuePair <string, string> i) => "{{" + i.Key + "}}"); EventRegistry.Game.Publish(TfEvent.LanguageSet, null); return; } if (!UiTranslationDatabase.Instance._availableTranslations.Contains(lang)) { Debug.LogError("Unknown lang: " + lang + " fallback to English"); lang = "English"; } if (lang != UiTranslationDatabase.Instance._language || UiTranslationDatabase.Instance.Data == null) { string language = UiTranslationDatabase.Instance._language; UiTranslationDatabase.Instance._language = lang; try { string filename = UiTranslationDatabase.Instance.Filename; Dictionary <string, string> source; if (Path.IsPathRooted(filename)) { if (!File.Exists(filename)) { Debug.LogError("Missing lang file: " + filename); return; } source = JsonMapper.ToObject <Dictionary <string, string> >(File.ReadAllText(filename)); } else { string path = Application.dataPath + "/../" + UiTranslationDatabase.TranslationsPath; if (!Directory.Exists(path)) { Debug.LogError("Missing lang file: " + filename); return; } source = JsonMapper.ToObject <Dictionary <string, string> >(File.ReadAllText(Application.dataPath + "/../" + filename)); } UiTranslationDatabase.Instance.Data = (from d in source where !string.IsNullOrEmpty(d.Value) select d).ToDictionary((KeyValuePair <string, string> i) => i.Key, (KeyValuePair <string, string> i) => i.Value); UiTranslationDatabase.Instance.DataCaps = new Dictionary <string, string>(); foreach (KeyValuePair <string, string> keyValuePair in UiTranslationDatabase.Instance.DataEnglish) { if (!UiTranslationDatabase.Instance.Data.ContainsKey(keyValuePair.Key)) { UiTranslationDatabase.Instance.Data.Add(keyValuePair.Key, keyValuePair.Value); } if (!UiTranslationDatabase.Instance.DataCaps.ContainsKey(keyValuePair.Key)) { UiTranslationDatabase.Instance.DataCaps.Add(keyValuePair.Key, UiTranslationDatabase.Instance.Data[keyValuePair.Key].ToUpper()); } } PlayerPreferences.Language = lang; PlayerPreferences.Save(); } catch (Exception exception) { Debug.LogException(exception); UiTranslationDatabase.Instance._language = language; return; } UiTranslationDatabase.OriginalVersion = (UiTranslationDatabase.Instance._language == "English"); EventRegistry.Game.Publish(TfEvent.LanguageSet, null); } }