-
Notifications
You must be signed in to change notification settings - Fork 20
Scripting Reference
H. Ibrahim Penekli edited this page Feb 2, 2018
·
5 revisions
// 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 -> Createmenu if you setmenuNameproperty ofCreateAssetMenuattribute 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.