Page 1 of 1

[HOWTO] How To: Tie Menu Framework to Localization Package

Posted: Thu Nov 14, 2024 7:42 pm
by Tony Li
If you're using the free Menu Framework addon available on the Extras page and also using Unity's Localization Package, you may want the Menu Framework's Options menu > Language dropdown to set the Localization Package's locale. To do this:

1. Add the DialogueSystemLocalizationPackageBridge component to your Dialogue Manager.

2. Make a subclass of the Menu System's Options class. Override the SetLanguageByIndex() method (at the bottom of the script) to set the Localization Package's Locale. When you set the Localization Package's Locale, the DialogueSystemLocalizationPackageBridge will automatically set the Dialogue System's localization, too.
OptionsWithLocalizationPackage.cs

Code: Select all

using UnityEngine;
using UnityEngine.Localization;
using UnityEngine.Localization.Settings;
namespace PixelCrushers.DialogueSystem.MenuSystem
{
    public class OptionsWithLocalizationPackage : Options
    {
        base.SetLanguageByIndex(index);
        
        // Get the available locales from Unity's Localization Package:
        var locales = LocalizationSettings.AvailableLocales.Locales;
        
        if (0 <= index && index < locales.Count)
        {
            // Set the selected locale:
            LocalizationSettings.SelectedLocale = locales[index];
        }
        else
        {
            Debug.LogWarning("Invalid language index.");
        }
    }
}
3. On your Menu System prefab, use your subclass in place of the original Options class. You can replace it in place to retain inspector assignments.