// To get localization settings:LocalizationSettings localizationSettings =LocalizationSettings.Instance;// You can get available languages as:List<SystemLanguage> availableLanguages =localizationSettings.AvailableLanguages;// To access Google auth file:TextAsset authFile =localizationSettings.GoogleAuthenticationFile;
Localization Manager
// You can get current language:SystemLanguage currentLanguage =Localization.Instance.CurrentLanguage;// or you can set current language:Localization.Instance.CurrentLanguage=SystemLanguage.English;// or set by system language:Localization.Instance.SetSystemLanguage();// or set by default language defined in LocalizationSettings (first item is the default language):Localization.Instance.SetDefaultLanguage();// Register application locale changed event:Localization.Instance.LocaleChanged+= (object sender,LocaleChangedEventArgs e) =>{Debug.Log("Application locale has changed from "+e.PreviousLanguage+" to "+e.CurrentLanguage);};
Use Localization.Instance if only if application is playing. See Application.isPlaying.
Extending Custom Localized Asset
Creating custom localized asset is involved simple steps:
Extend class from LocalizedAsset<T>, enter your asset type for generic parameter:
Your custom localized asset automatically registered under Localization Explorer -> Createmenu if you set menuName property of CreateAssetMenu attribute as "GameToolkit/Localization/<your_asset_name>"
Create serializable asset item by extending LocaleItem<T>, enter your asset type for generic parameter again (it is necessary for the Unity to serialize object):
Congratulations! You have a custom localized asset that can use your game.
Extending Custom Localized Asset Behaviour
If you want to extend localized asset behavior, you have two options:
If you want to implement completely custom behavior, you should extend from LocalizedAssetBehaviour.
If you want to create generic component & property based behavior for your custom localized asset, then you should extend from LocalizedGenericAssetBehaviour.
1. Extending from LocalizedAssetBehaviour
You must extend your class from LocalizedAssetBehaviour and override the TryUpdateComponentLocalization() appropriately. This method is invoked every-time when game starts or application language has changed. You should update the component property with your custom localized asset's value.
publicclassMyLocalizedAssetBehaviour:LocalizedAssetBehaviour{publicMyLocalizedCustomAsset LocalizedAsset;protectedoverrideboolTryUpdateComponentLocalization(bool isOnValidate) { // Update the specified property with current value.... =LocalizedAsset.Value; // or using safe value getter.... =GetValueOrDefault(LocalizedAsset); // If component is updated successfully.returntrue; }}
2. Extending from LocalizedGenericAssetBehaviour<TAsset, TType>
The only step you need to take is the extend from LocalizedGenericAssetBehaviour and specify your custom asset type for the first generic parameter, and specify your asset value type as the second generic parameter. That's it!