# IStartupLocaleSelector

> Selects the locale to activate when the localization system initializes at startup.

## Definition

* **Type:** Interface
* **Namespace:** [Unity.Localization](/engine/6000.7/script-reference/unity/localization.md)
* **Assembly:** UnityEngine.LocalizationRuntimeModule

```csharp
public interface IStartupLocaleSelector
```

## Remarks

Implement this interface to control which [Locale](/engine/6000.7/script-reference/unity/localization/locale.md) becomes the selected locale on startup. During [LocalizationSettings.InitializeAsync](/engine/6000.7/script-reference/unity/localization/localizationsettings/initializeasync.md) the configured selectors are evaluated in order and the first non-null result is used; if every selector returns null the system falls back to [LocalizationSettings.ProjectLocale](/engine/6000.7/script-reference/unity/localization/localizationsettings/projectlocale.md). Register selectors through [LocalizationSettings.StartupSelectors](/engine/6000.7/script-reference/unity/localization/localizationsettings/startupselectors.md). Built-in implementations include [CommandLineLocaleSelector](/engine/6000.7/script-reference/unity/localization/commandlinelocaleselector.md), [SystemLocaleSelector](/engine/6000.7/script-reference/unity/localization/systemlocaleselector.md), and [PlayerPrefLocaleSelector](/engine/6000.7/script-reference/unity/localization/playerpreflocaleselector.md).

Additional Resources: [LocalizationSettings](/engine/6000.7/script-reference/unity/localization/localizationsettings.md), [Locale](/engine/6000.7/script-reference/unity/localization/locale.md)

A selector that picks a locale from a value read at startup.

## Examples

```csharp
using Unity.Localization;
using UnityEngine;

namespace Unity.Localization.Samples
{
    public class SaveFileLocaleSelectorExample : IStartupLocaleSelector
    {
        public Locale GetStartupLocale(LocalizationSettings settings)
        {
            string code = PlayerPrefs.GetString("preferred-language"); // for example "fr"
            return string.IsNullOrEmpty(code)
                ? null
                : settings?.GetLocale(new LocaleIdentifier(code));
        }
    }
}
```

## Methods

| Method                                                                                                            | Description                                                          |
| ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------- |
| [GetStartupLocale](/engine/6000.7/script-reference/unity/localization/istartuplocaleselector/getstartuplocale.md) | Returns the locale to select, or null to defer to the next selector. |
