# `Localize.Supervisor`
[🔗](https://github.com/elixir-localize/localize/blob/v0.35.0/lib/localize/supervisor.ex#L1)

The `:localize` runtime supervisor.

Owns the small set of processes the library needs at runtime — the
data loader, the locale loader (which owns the locale-validation
ETS table), the cache sweeper, the format cache, and the collation
ICU table — and runs the one-time post-start work that interns
every supplemental atom and resolves the configured
`:supported_locales`.

By default this supervisor is started automatically when the
`:localize` OTP application boots, so callers do not need to start
it themselves. Applications that prefer to manage Localize's
lifecycle alongside their own processes can disable that auto-start
and mount this supervisor as a child of their own tree instead.

## Manual supervision

Mark the dependency as `runtime: false` in `mix.exs` so the OTP
application is not auto-started:

    # mix.exs
    def deps do
      [
        {:localize, "~> 0.33", runtime: false}
      ]
    end

Then add the supervisor to your application's tree:

    # lib/my_app/application.ex
    def start(_type, _args) do
      children = [
        MyApp.Repo,
        Localize.Supervisor,
        MyAppWeb.Endpoint
      ]

      Supervisor.start_link(children, strategy: :one_for_one)
    end

Place `Localize.Supervisor` after any process that loads compile-time
config Localize depends on (typically none) and before any process
that calls Localize functions at startup (formatters, importers,
background workers).

See `guides/supervision.md` for a more detailed walk-through.

# `child_spec`

```elixir
@spec child_spec(keyword()) :: Supervisor.child_spec()
```

Default child spec.

Lets callers add `Localize.Supervisor` (or `{Localize.Supervisor, []}`)
directly to their own application's `children` list.

# `start_link`

```elixir
@spec start_link(keyword()) :: Supervisor.on_start()
```

Starts the Localize supervisor.

### Arguments

* `options` is a keyword list. Currently no options are honoured —
  the argument exists so callers can use the
  `{Localize.Supervisor, []}` child-spec shape without surprise.

### Returns

* `{:ok, pid}` on success.

* `{:error, reason}` if startup fails.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
