-
Notifications
You must be signed in to change notification settings - Fork 19
Scripting Reference
[DEPRECATED] Please refer to new documentation
// 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;
// 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);
};
Creating custom localized asset is involved simple steps:
- Extend class from
LocalizedAsset<T>
, enter your asset type for generic parameter:
[CreateAssetMenu(fileName = "MyLocalizedCustomAsset", menuName = "GameToolkit/Localization/My Custom Asset")]
public class MyLocalizedCustomAsset : LocalizedAsset<MyCustomAsset>
-
Your custom localized asset automatically registered under
Localization Explorer -> Create
menu if you setmenuName
property ofCreateAssetMenu
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):
[Serializable]
private class MyCustomLocaleItem : LocaleItem<MyCustomAsset> { };
- Define locale items array with concrete type you declared:
[SerializeField]
private MyCustomLocaleItem[] m_LocaleItems = new MyCustomLocaleItem[1];
- Finally, implement getter method for getting locale items with the base class type:
public override LocaleItemBase[] LocaleItems { get { return m_LocaleItems; } }
Complete code:
using System;
using UnityEngine;
using GameToolkit.Localization;
[CreateAssetMenu(fileName = "MyLocalizedCustomAsset", menuName = "GameToolkit/Localization/My Custom Asset")]
public class MyLocalizedCustomAsset : LocalizedAsset<MyCustomAsset>
{
[Serializable]
private class MyCustomLocaleItem : LocaleItem<MyCustomAsset> { };
[SerializeField]
private MyCustomLocaleItem[] m_LocaleItems = new MyCustomLocaleItem[1];
public override LocaleItemBase[] LocaleItems { get { return m_LocaleItems; } }
}
Congratulation! You have a custom localized asset that can use your game.
If you want to extend localized asset behaviour, you have two options:
- If you want to implement completely custom behaviour, you should extend from
LocalizedAssetBehaviour
. - If you want to create component&property based behaviour for your custom localized asset, then you should extend from
LocalizedGenericAssetBehaviour
.
You must extend your class from LocalizedAssetBehaviour
and override the UpdateComponentValue()
appropriately. This method is invoked every-time when game starts or application language has changed. You sould update the component property with your custom localized asset's value.
public class MyLocalizedAssetBehaviour : LocalizedAssetBehaviour
{
public MyLocalizedCustomAsset LocalizedAsset;
protected override void UpdateComponentValue()
{
// Update the specified property with current value.
... = LocalizedAsset.Value;
}
}
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!
public class MyLocalizedAssetBehaviour : LocalizedGenericAssetBehaviour<MyLocalizedCustomAsset, MyCustomAsset>
{
}