- Is funddy/jstranslations-bundle compatible with Laravel?
- No. It is a Symfony bundle built around Symfony's translator service and bundle DI extension, with no Laravel service provider, Illuminate\Translation adapter, or Artisan surface. A Laravel app cannot meaningfully bind to it without a custom port, and v2.0.3 moves the package closer to Symfony's translator contract rather than toward framework-agnostic packaging.
- How do I install funddy/jstranslations-bundle?
- Install it with Composer and register it as a Symfony bundle in your application, then add the configuration needed to dump the desired catalogs. This is a Symfony bundle workflow, not a Laravel package discovery flow. Check the repository README for exact bundle registration and configuration keys before installing.
- Can I use this bundle with Laravel's translator or __() helper?
- No. The bundle is wired to Symfony's translator service and does not expose a seam into Illuminate\Translation\Translator, so Laravel's __() helper and lang files are not reused by it. You would need to write a Laravel-native exporter or use a Laravel-specific localization package instead.
- How does the bundle expose Symfony translations to JavaScript?
- It dumps Symfony translation catalogs into JavaScript files that can be loaded directly in the page, so front-end code can look up the same messages as server-side templates. The intended benefit is avoiding duplicated strings between PHP templates and client-side code. The exact generated API should be confirmed from the README because this listing only describes a simple lookup API.
- Does it support multiple locales and translation domains?
- Yes, the overview states that it supports multiple locales and per-domain catalogs. That matches Symfony's catalog structure, where messages are grouped by locale and domain. Front-end code should be able to load the generated files for the locales and domains it needs.
- What Symfony and PHP versions does v2.0.3 support?
- The v2.0.3 release note says the Translator interface was updated to the latest Symfony version, which plausibly implies Symfony 6 or 7 and PHP 8.1+, but no explicit constraints or CI matrix are provided. Treat those versions as unverified until you inspect composer.json. There is also no stated Laravel version support because this is not a Laravel package.
- Is v2.0.3 safe to pin in a production Symfony app?
- Be cautious. A patch release that reworks the Translator interface against a new Symfony major line looks like a compatibility break, which suggests either semver is not being followed or the interface is not treated as public surface. For Laravel adoption the question is moot, but Symfony teams should review the diff and lockfile before pinning.
- How should I test that JavaScript translations stay in sync?
- Generate the JS output for each locale and domain, then assert that expected messages appear and that lookup, interpolation, and pluralization return the same results as the Symfony side. Add this comparison to CI so catalog changes fail the build when the generated files drift. Laravel's testing helpers do not apply unless you have built a separate Laravel-native exporter.
- What are Laravel alternatives for using translations in JavaScript?
- Use Laravel's native lang files and export the needed messages to JSON or JavaScript through your own build step or endpoint, or choose a Laravel-specific localization package that integrates with Illuminate\Translation. This Symfony bundle is not a substitute because it has no Laravel service provider or translator adapter. The reusable idea is small enough that a native exporter is often the safer path.
- Is funddy/jstranslations-bundle actively maintained?
- The v2.0.3 release, tracking a modern Symfony translator interface, is evidence of recent maintenance and lowers the old abandonment concern compared with a 2015 snapshot. It is still a single-maintainer project with no visible release cadence, security policy, or issue-response commitment. One release is a data point, not a trend, and it does not create Laravel fit.