using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; namespace I2.Loc { [AddComponentMenu("I2/Localization/Localize Dropdown")] public class LocalizeDropdown : MonoBehaviour { public void Start() { LocalizationManager.OnLocalizeEvent += this.OnLocalize; this.OnLocalize(); } public void OnDestroy() { LocalizationManager.OnLocalizeEvent -= this.OnLocalize; } private void OnEnable() { if (this._Terms.Count == 0) { this.FillValues(); } this.OnLocalize(); } public void OnLocalize() { if (!base.enabled || base.gameObject == null || !base.gameObject.activeInHierarchy) { return; } if (string.IsNullOrEmpty(LocalizationManager.CurrentLanguage)) { return; } this.UpdateLocalization(); } private void FillValues() { Dropdown component = base.GetComponent(); if (component == null && I2Utils.IsPlaying()) { return; } foreach (Dropdown.OptionData optionData in component.options) { this._Terms.Add(optionData.text); } } public void UpdateLocalization() { Dropdown component = base.GetComponent(); if (component == null) { return; } component.options.Clear(); foreach (string term in this._Terms) { string translation = LocalizationManager.GetTranslation(term, true, 0, true, false, null, null); component.options.Add(new Dropdown.OptionData(translation)); } component.RefreshShownValue(); } public List _Terms = new List(); } }