Why Intl?

@beforesemicolon/intl gives component-first applications a predictable localization layer.

It combines:

Everything is explicit, so you can reason about where and how localization changes.

Why this over framework i18n adapters

With Intl:

What to read first

Core mental model

Use <intl-locale> to define a boundary. Everything inside that boundary uses the same runtime configuration:

Use components for visible output. Use helper APIs where formatting should stay in code.

When the boundary is the root of your page, add update-document so document language and direction stay aligned with runtime state.

edit this doc