sergeil/extjslocalization-bundle
A Symfony bundle for integrating Ext JS localization with your application. It helps expose translated locale data and wire Ext JS i18n resources into Symfony's translation workflow, keeping front-end Ext JS labels and messages aligned with server-side locale settings.
Architecture fit. sergeil/extjslocalization-bundle is a Symfony2 bundle, not a framework-agnostic library. Its entire integration surface is Symfony-specific: it registers itself through SliExtJsLocalizationBundle in AppKernel, exposes configuration under the sli_ext_js_localization key, and hooks into Symfony's DI container, asset pipeline, and Twig templating. Laravel has no Bundle concept — the equivalent seam is a ServiceProvider with config/publish and a Blade/Vite asset directive. The underlying domain logic (mapping Ext JS class-level locale overrides into a JS dictionary consumable by Ext JS's Ext.Loader/override mechanism) is portable, but nothing in the package's wiring is. From a TPM perspective, treat this as source material for a reimplementation, not a dependency.
Integration feasibility. Low as-is, moderate as a port. The package's own deliverable is essentially a build step — walk the Ext JS class namespace, emit per-locale JS override files, and serve/publish them. That logic is 100–300 lines and could be lifted. Everything else (bundle class, DI extension, compiler passes, Assetic/Twig filters) must be discarded. There is no Composer-friendly, framework-neutral entry point to consume directly.
Technical risk. Materially high, and concentrated in abandonment rather than code quality:
build.xml, workspace packages) supersedes the per-bundle asset-publishing pattern this package assumes. Even if the PHP side were ported, the client-side contract is dated.symfony/symfony ~2.x, likely PHP 5.5+ syntax, possibly PSR-0) will conflict with a Laravel 10/11 stack on PHP 8.2+.Key questions.
Stack fit. Poor out of the box; workable as a vendored extraction. A Laravel-native replacement would have three components: (a) a config file (config/extjs-localization.php) declaring source namespaces, locale list, and output path; (b) an artisan command or build-pipeline step that scans Ext JS classes and emits resources/js/extjs/locales/{locale}.js; (c) a Blade directive or Vite entry that loads the active locale bundle. That is a clean, testable, ~1-week build and eliminates the Symfony coupling entirely.
Migration path. Do not attempt to composer require this into a Laravel app — expect constraint conflicts and a Bundle class that references Symfony\Component\HttpKernel\Bundle\Bundle. Instead:
LocaleDictionaryBuilder).ServiceProvider + config publish + artisan command calling the extracted builder. No Symfony imports remain.php artisan vendor:publish for config; Vite or public/ copy for emitted JS; cache-bust via a hash in the filename rather than Symfony's asset helper.Compatibility. Assume the source is PHP 5.x-era and Symfony 2.x-coupled; expect PSR-0 autoloading, deprecated constructs, and possible each()/create_function() usage that breaks on PHP 8. Treat extraction as a rewrite of ~60% of the lines. Also verify the emitted locale format against our Ext JS version — the override format is stable but not perfectly so across 4.x/6.x/7.x.
Sequencing.
sergeil/SliExtJsLocalizationBundle for audit purposes.Maintenance. The dependency is abandoned; maintenance is entirely ours the moment it enters the tree. That is acceptable only if we accept ownership explicitly. Budget: near-zero ongoing if we ship the extracted Laravel package we control; indefinite and unbounded if we try to keep the Symfony bundle patched against a modern PHP runtime. The fork should live in our namespace with our CI, our PHPStan level, and our release cadence — not as a pinned commit of an unmaintained upstream.
Support. No maintainer, no issue triage, no security channel. The 1-star / 0-dependent profile means there is no community to escalate to. Internal support burden falls on whichever team owns localization — assign that owner as a precondition, not an afterthought. Document the extraction decision in an ADR so future maintainers understand why the code exists in our namespace.
Scaling. The generator is a build-time concern and scales fine — it is I/O over source files, cheap to run per-locale and trivially parallelizable. The real scaling question is client-side: N locales × M Ext JS classes yields N×M emitted overrides, and naive inclusion of all locales bloats the client payload. Mitigate by emitting per-locale bundles and loading only the active one; add a hashed filename for long-lived caching. Runtime cost is negligible; the cost is build time as class count and locale count grow, which is linear and acceptable.
Failure modes.
Ramp-up. Low for a mid-level Laravel engineer if extraction is done first: the resulting package is a config file, one artisan command, and a Blade/Vite directive — a day to learn. Ramp-up on the original bundle is disproportionately high (Symfony 2 mental model, DI compiler passes, Assetic) and yields knowledge that is worthless elsewhere. This asymmetry is the strongest single argument for extracting rather than integrating. Estimate 1.5–2 engineer-weeks total for discovery, extraction, Laravel wrapper, tests, and a one-locale pilot — contingent on the retirement question coming back "Ext JS is staying."
How can I help you explore Laravel packages today?