usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Localization;usingUnityEngine.Localization.Settings;usingUnityEngine.ResourceManagement.AsyncOperations;publicclassLanguageManager:MonoBehaviour{AsyncOperationHandle m_InitializeOperation;privateLocale _chineseLocale;privateLocale _englishLocale;voidStart(){// SelectedLocaleAsync will ensure that the locales have been initialized and a locale has been selected.
m_InitializeOperation = LocalizationSettings.SelectedLocaleAsync;if(m_InitializeOperation.IsDone){InitializeCompleted(m_InitializeOperation);}else{
m_InitializeOperation.Completed += InitializeCompleted;}}voidInitializeCompleted(AsyncOperationHandle obj){var locales = LocalizationSettings.AvailableLocales.Locales;for(int i =0; i < locales.Count;++i){var locale = locales[i];if(locale.LocaleName =="Chinese (Simplified) (zh)"){
_chineseLocale = locale;}elseif(locale.LocaleName =="English (en)"){
_englishLocale = locale;}}}publicvoidSwitchChinese(){
LocalizationSettings.Instance.SetSelectedLocale(_chineseLocale);}publicvoidSwitchEnglish(){
LocalizationSettings.Instance.SetSelectedLocale(_englishLocale);}}
usingSystem.Collections;usingUnityEngine.ResourceManagement.AsyncOperations;usingUnityEngine;usingUnityEngine.Localization.Settings;usingUnityEngine.UI;publicclassTestLocalization:MonoBehaviour{publicText text;voidStart(){StartCoroutine(LoadStrings());}IEnumeratorLoadStrings(){// A string table may not be immediately available such as during initialization of the localization system or when a table has not been loaded yet.var loadingOperation = LocalizationSettings.StringDatabase.GetTableAsync("UITestTable");yieldreturn loadingOperation;if(loadingOperation.Status == AsyncOperationStatus.Succeeded){var stringTable = loadingOperation.Result;
text.text = stringTable.GetEntry("ui_Test").GetLocalizedString();}else{
Debug.LogError("Could not load String Table\n"+ loadingOperation.OperationException.ToString());}}}