tempest/intl
Internationalization toolkit for Laravel: locale-aware formatting for dates, numbers, currencies, and translations. Ships multilingual apps with consistent output across locales, wrapping PHP's intl extension in a tidy, framework-friendly API.
symfony/translation, symfony/intl, Laravel's Lang/Number/Carbon stack, native ext-intl), or leans on a framework-sibling component.Consider it when all of the following hold:
Look elsewhere when:
Lang, __()/@lang, Pluralizer, Number, Carbon, and ext-intl beneath), all wired into the container, validation, mail, and Blade. A Tempest component sits outside that pipeline, cannot inherit it transparently, and would require a custom service provider plus hand-bound value objects. For a Laravel codebase the integration friction buys you no benefit over symfony/intl or native intl.Bottom line: treat this as a watch, not an adopt, unless Tempest is already in the stack — in which case it is the natural default.
For executives (one paragraph): We evaluated tempest/intl, a small MIT-licensed internationalization component distributed as a read-only split of the Tempest PHP framework's monorepo. It is a technical enabler for multi-language and locale-aware formatting — currency, dates, pluralization — a prerequisite for the market-expansion work on our roadmap. It is not a strategic bet or a vendor relationship: it is a low-cost, low-commitment building block with no adoption outside its parent framework and no commercial backing. My recommendation is to keep it on the radar and revisit only if we pursue the Tempest evaluation; it should not, on its own, influence roadmap timing. Localization can proceed on the established Laravel/Symfony path without it.
For engineering: Single-purpose, Composer-installable, MIT-licensed i18n component — a thin, ergonomic wrapper over PHP's intl extension. Versioned in lockstep with the Tempest monorepo; this repo is a distribution mirror, so file issues and read docs upstream, and expect split lag between an upstream fix and its appearance here. Zero dependents means no community validation — budget for reading the source and writing our own tests around locale negotiation and formatting edge cases. If we are not on Tempest, the switching cost of adopting a foreign-framework component likely exceeds the cost of using symfony/intl or calling ext-intl/Laravel's Number directly. On a Laravel codebase specifically, the realistic fit is narrow: use it at most as a typed value-object layer for currency/number/locale formatting inside a bounded module, behind our own CurrencyFormatter/LocaleResolver interfaces, never as the translation layer — the blast radius across validation, mail, and Blade is disproportionate to any gain.
Ask: No decision required today. Confirm whether Tempest is a live candidate for Q3/Q4 stack work. If yes, I will scope a one-sprint spike covering locale coverage, formatting correctness versus native intl, and LOC saved; the default is the incumbent unless the spike shows a material, measurable advantage. If no, we close this and proceed with the established Laravel/Symfony i18n path for the localization initiative.
How can I help you explore Laravel packages today?