Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Jstranslations Bundle Laravel Package

funddy/jstranslations-bundle

A Symfony bundle that exposes application translations to JavaScript, letting front-end code reuse the same translation catalog as server-side templates. It helps keep client-side and server-side messages in sync with minimal setup and configuration.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Frames the underlying job-to-be-done, not the package. The real decision this surfaces is: how do we keep one source of truth for user-facing copy when the UI is split between server-rendered templates and client-side JavaScript? Duplicate dictionaries drift, and drift shows up as mismatched copy, broken pluralization, and inconsistent locale switching — a visible quality signal to customers.
  • Roadmap input for i18n/l10n investment. Any plan to add locales, a client-side locale switcher without a full page reload, or JS-heavy surfaces (SPA, Inertia, Livewire/Alpine, React/Vue islands) requires a translation bridge. This package remains a useful prior-art reference for scoping that work, not a candidate to ship — and v2.0.3 slightly improves it in that narrow role, since the author is at least tracking Symfony's current Translator contract.
  • A clear build-vs-buy data point — still landing on "build." 8 stars, zero dependents, and a release history that went effectively dormant for roughly a decade. v2.0.3 is a single patch that updates the Translator interface to a newer Symfony version — one signature change, no feature work, no modernization of the approach. For a capability this central to UX, single-commit maintenance is indistinguishable from no maintenance for planning purposes: there is no security-patch path and no community to absorb breakage.
  • Release hygiene as a decision input. v2.0.3 is a patch-level release that changes an interface signature. That's a SemVer smell: if we ever vendored this, we could not rely on version constraints to protect us, and we'd have to pin and effectively fork it. Worth flagging as evidence about release discipline, not just release count.
  • Corrects a stack assumption early. This is a Symfony bundle, not a Laravel package. If the evaluation was queued because someone assumed Laravel compatibility, that's a cheap correction now versus a wasted sprint later. Note that the v2.0.3 change makes the bundle more Symfony-version-coupled, not less.
  • Supports a make-vs-reuse comparison against current first-party options. For Symfony: Symfony UX Translator and BazingaJsTranslationBundle. For Laravel: built-in lang/*.json publishing consumed through Vite, shared Inertia props, or __() exposed to the bundle. These are maintained and already align with framework upgrade paths.
  • Concrete use cases to prioritize once a bridge exists: client-side form validation messages, toast/flash copy rendered in JS, pluralized counts, date/number formatting parity between server and client, and marketing-page locale switching.

When to Consider This Package

Adopt only in one narrow case: you are maintaining a legacy Symfony application that already depends on this bundle, and removing it is riskier this quarter than keeping it. Even then, treat it as technical debt with a scheduled migration — not a foundation. New caveat from v2.0.3: because a patch release moved the Translator interface forward, verify it doesn't break against your pinned Symfony version before upgrading. If you're on an older Symfony line, this "minor" bump may behave as a breaking change for you.

Look elsewhere — or build in-house — in essentially every other situation:

  • You are on Laravel. It is a Symfony bundle; it does not solve your problem. Use Laravel's native translation files exported at build time (Vite), or Inertia shared props. Roughly a one-to-two day spike.
  • You need active maintenance or a CVE response path. A decade of dormancy punctuated by one interface patch fails any reasonable supply-chain review. There is no evidence of a triage or security process.
  • You need predictable upgrade semantics. Patch-level interface changes mean you cannot trust version constraints; you'd own the fork.
  • You need modern i18n semantics. ICU/CLDR plural rules, gender, RTL, locale-aware number/currency/date formatting. The underlying design predates broad CLDR support and will not match Intl behavior on the client.
  • You need TypeScript types or per-locale code splitting. Shipping every locale's strings to every user inflates bundle size; modern approaches split per locale or fetch on demand.
  • You need a supported upgrade path. v2.0.3 tracks a newer Symfony Translator interface but does not modernize the delivery mechanism, packaging, or supported Symfony/PHP matrix.
  • You want the translations available to a design-system or component library, where the format contract matters more than the delivery mechanism.

How to Pitch It (Stakeholders)

For executives (one paragraph): We evaluated a package that would let our JavaScript reuse the server's translation catalog. The underlying problem is real and worth solving — fragmented copy across server and client hurts quality and slows every localization launch. The package itself is not viable: it sat dormant for roughly a decade, has effectively no user base, and is built for a different framework than ours. A single small patch has since appeared (v2.0.3) that bumps an interface to a newer Symfony version — no features, no modernization — so the maintenance and security liability is unchanged. Recommendation: do not adopt; fund a short internal spike (~1–2 days) to wire our existing translation files into the front-end build, keeping one source of truth.

For engineering (the ask): Do not add this dependency. It's a Symfony bundle with ~8 stars and 0 dependents. The one recent signal, v2.0.3, is a patch-level change to the Translator interface — which also tells us version constraints won't protect us. Instead, spike a native approach: export lang/ files at build time through Vite (or share them via Inertia props), expose a small t() helper, and keep a single source of truth. Success criteria for the spike: locale switch without a reload, pluralized strings correct on both sides, per-locale bundles (no shipping all locales), and no duplicated copy. If the spike underdelivers, re-evaluate against Symfony UX Translator (if the stack changes) or a maintained JS i18n runtime — not against this package. If someone cites v2.0.3 as evidence of a revival, point at the diff size, the SemVer mismatch, and the absence of dependents to catch regressions.

Bottom line: the requirement is legitimate; this package is not the answer. Score of 0.07 with zero dependents stands. A single interface-bump patch after a decade of dormancy is not a maintenance story — it's a reminder that nobody is downstream to notice if it breaks. Spend the effort on first-party primitives instead.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings
coleus/apps
seampact/laravel
emmyconceptng/laravel-ng-postcode
jjsquady/round-robin
skyraptor/chatter
edlugz/sasapay
abbasudo/artisan-route