using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; using UnityEngine.UI; namespace I2.Loc { [AddComponentMenu("I2/Localization/SetLanguage Dropdown")] public class SetLanguageDropdown : MonoBehaviour { private void OnEnable() { Dropdown component = base.GetComponent(); if (component == null) { return; } string currentLanguage = LocalizationManager.CurrentLanguage; if (LocalizationManager.Sources.Count == 0) { LocalizationManager.UpdateSources(); } List allLanguages = LocalizationManager.GetAllLanguages(true); component.ClearOptions(); component.AddOptions(allLanguages); component.value = allLanguages.IndexOf(currentLanguage); component.onValueChanged.RemoveListener(new UnityAction(this.OnValueChanged)); component.onValueChanged.AddListener(new UnityAction(this.OnValueChanged)); } private void OnValueChanged(int index) { Dropdown component = base.GetComponent(); if (index < 0) { index = 0; component.value = index; } LocalizationManager.CurrentLanguage = component.options[index].text; } } }