Skip to content

Scripting Reference

H. Ibrahim Penekli edited this page Feb 2, 2018 · 5 revisions

Localization Settings

// 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);
};

Extending Custom Localized Asset

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 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):

[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.

Clone this wiki locally