using System; using System.Collections; using Sirenix.OdinInspector; using UnityEngine.Localization.Settings; namespace BlueWater { public enum LocaleType { 한국어 = 0, English = 1 } public class LocalizationManager : Singleton { public bool IsInitialized; private bool _isChanging; private void Start() { var index = ES3.Load("Locale", GetCurrentLocaleIndex()); ChangeLocale((LocaleType)index, () => IsInitialized = true); } /// /// 0 - 한국어 /// 1 - 영어 /// /// [Button("언어 변경")] public void ChangeLocale(LocaleType localeType, Action completeEvent = null) { if (_isChanging) return; StartCoroutine(ChangeLocaleCoroutine(localeType, completeEvent)); } private IEnumerator ChangeLocaleCoroutine(LocaleType localeType, Action completeEvent) { _isChanging = true; yield return LocalizationSettings.InitializationOperation; LocalizationSettings.SelectedLocale = LocalizationSettings.AvailableLocales.Locales[(int)localeType]; ES3.Save("Locale", (int)localeType); _isChanging = false; completeEvent?.Invoke(); } public int GetCurrentLocaleIndex() { var selectedLocale = LocalizationSettings.SelectedLocale; var locales = LocalizationSettings.AvailableLocales.Locales; for (var i = 0; i < locales.Count; i++) { if (locales[i] == selectedLocale) { return i; } } return -1; } } }