jetstreamlabs/zora
Zora is a Laravel package from Jetstream Labs that simplifies adding AI-powered features to your application. It offers a clean, developer-friendly API and sensible defaults so you can integrate intelligent workflows quickly while keeping your code expressive.
lang/ files and push it into the frontend build, or do we let the JS layer own its own message catalogues? Zora bets on the former — one authority, two consumers. That is a structural choice with long tail consequences for who edits copy and when it ships.lang/** to JSON. Zora is a pre-built version of that ~100-line script. The real decision is dependency vs. internal utility, not package vs. no solution.Adopt when:
__() already works server-side, so lang/ is an established convention your team understands.Look elsewhere when:
| syntax, or per-locale number and date formatting — pair vue-i18n, next-intl, or FormatJS with your own extraction instead.spatie/laravel-translation-loader.@lang and skip this entirely./api/translations endpoint. Simpler to reason about, at the cost of payload size and cache-busting work.For executives: this is translation plumbing, not a localization platform. It lets us reuse the copy we already maintain in the Laravel backend inside the JavaScript frontend, so the same string isn't written, translated, and maintained twice. The cost is an afternoon spike and effectively zero infrastructure; the return is eliminating a class of drift bugs where the server says one thing and the UI says another. It does not give us translation management, translator workflows, or locale-aware formatting — those remain separate roadmap items if we pursue multi-language seriously.
For engineering: a small, MIT-licensed Laravel package that moves lang/ files into the Vite/Mix asset pipeline as JSON consumable by Vue or React. It replaces the hand-rolled export script most teams write. Caveats are real: 14 stars, one maintainer, last release March 2024. Recommend pinning the version, isolating it behind a single adapter module, and keeping a ~30-line artisan fallback that dumps lang/ to JSON so we can drop the dependency in an hour if needed.
Recommendation: run a timeboxed spike on one low-risk surface — client-side validation messages and toast copy — and measure whether it removes duplicate string maintenance. Decide on the broader i18n direction (bundled vs. TMS-driven) only after that, because the two paths have very different cost profiles and this package only serves the first.
How can I help you explore Laravel packages today?