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

Pluralize Bundle Laravel Package

mrgoodbytes8667/pluralize-bundle

A lightweight Symfony bundle that adds straightforward pluralization helpers to PHP applications. Easily convert singular English words into correct plural forms for labels, messages, and dynamic content, with a simple service-ready API that keeps text generation clean and consistent.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit

  • Unchanged by v2.2.0. This remains a Symfony bundle, not a Laravel package: it registers a Twig extension proxying Illuminate\Support\Pluralizer. There is still no service provider, so Laravel auto-discovery will not wire it up.
  • The overlap with platform-native capability is unchanged and, if anything, sharpened: Laravel ships Str::plural() / Str::singular() plus Blade @choice; Symfony ships Symfony\Component\String\Inflector\EnglishInflector; Twig ships |trans with ICU plural rules. Because v2.2.0 targets Symfony 7, the adopting app is by definition on a symfony/string version that already contains EnglishInflector — the gap the package fills is narrower than before, not wider.
  • The cross-framework impurity remains the core objection: pulling illuminate/support into a Symfony 7 app imports collections, contracts, macroable, and conditionable to obtain one string function, and that import is now being carried forward onto a newer framework major rather than removed.

Integration feasibility

  • Mechanically unchanged: composer require, bundle registration in config/bundles.php (Symfony) or manual Twig extension registration via TwigBridge (Laravel). Sub-half-day proof of concept.
  • Symfony 7 support is a compatibility enabler, not a functional one. It does not reduce the build-vs-buy comparison against a ~30-line in-house Twig extension, and at that size the dependency still carries more governance cost than implementation cost.
  • The release does confirm the maintainer will do the work of tracking framework majors, which is a real (if small) credit to the buy side of the ledger. It is the only argument v2.2.0 adds.

Technical risk

  • License remains NOASSERTION — unresolved and untouched by this release. This is still a hard compliance gate until legal clears the LICENSE file, and still an automatic SCA/SBOM flag. Nothing in a Symfony 7 compatibility bump changes this.
  • Maintenance signal improved, materially: the prior "last release December 2023, unmaintained" finding is now superseded. The maintainer shipped a framework-major compatibility release. Revised characterization: low-activity single-maintainer project that is responsive to framework majors but not to feature or defect work. Still bus factor of one, still no visible security response path, still 0 stars / 0 dependents.
  • Constraint risk partially retired: the Symfony constraint now demonstrably tracks framework majors, so a Symfony 8 upgrade is plausible rather than blocked. Two unknowns remain and are the ones that actually bite: the declared PHP floor and the illuminate/support range. A narrow illuminate/support constraint is still the most likely source of a late-surfacing composer update conflict — and note it now resolves a newer illuminate tree into a Symfony 7 app, which is a larger foreign payload than before, not a smaller one.
  • Correctness risk unchanged and still the worst failure class: the pluralizer is English-only and rule-based; non-English locales and irregular/uncountable nouns produce wrong output without erroring. v2.2.0 does not add locale guards, count-awareness, or number formatting.
  • New, minor: framework-major upgrades now imply a release-schedule dependency on this single maintainer. v2.2.0 evidences they meet it, but the coupling is real and would not exist with an internal extension.

Key questions

  1. What license is actually declared in the repository, and is it compatible with commercial/closed-source distribution? (unchanged, still blocking)
  2. What are the PHP and illuminate/support constraints at v2.2.0? The Symfony side is now answered (7.x supported); these two are not.
  3. Does the extension take a count and format the number, or does it only pluralize a bare string? (unchanged by this release — assume still bare-string)
  4. Is Twig in use at all? If the app is Blade-only, this is a non-starter regardless of version.
  5. Is the app single-locale English? If not, does any pluralization belong in the template at all, or in the translation layer?
  6. Can we fork, vendor, or reimplement to eliminate both the third-party dependency and the cross-framework one?

Integration Approach

Stack fit

Unchanged criteria, with the version now satisfiable on modern stacks. Fits only when all three hold: Twig is the template engine, the app is English-only (or pluralization is deliberately out of scope for i18n), and no translation/pluralization layer exists. Fails if the app is Blade-only, multi-locale, or already uses ICU |trans plural rules — in that case this package actively fights the existing architecture.

Migration path

Prefer reimplementation over adoption — and v2.2.0 marginally strengthens this, because a Symfony 7 host is guaranteed to have symfony/string available:

  • Symfony app (incl. Symfony 7): use EnglishInflector from symfony/string, already a transitive dependency, no illuminate/* import, natively constraint-aligned with the framework. Wrap it in a small Twig extension.
  • Laravel app with TwigBridge: wrap Str::plural() directly in a local Twig extension; the framework already owns the dependency.
  • If the package is genuinely wanted: adopt v2.2.0 (the first release whose Symfony constraint is current), pin the exact version, and still assume you own the code. Do not depend on upstream for defect fixes — this release demonstrates cadence on framework majors, not on bugs.

Compatibility

Evaluate against v2.2.0, not v2.1.1 — the earlier constraint check is stale. Run composer why-not mrgoodbytes8667/pluralize-bundle <php-version> and inspect composer.json directly. Confirm the Symfony 7 constraint, the Twig version range overlapping the app's constraint, and specifically the illuminate/support range against the next framework major.

Sequencing

  1. License and security review — compliance gate, do this first, it can still end the evaluation. Unchanged and still step one.
  2. Confirm Twig usage and enumerate the actual template call sites that need pluralization.
  3. Spike an internal Twig extension behind a feature flag (~1 day).
  4. Decide: internal extension (default), vendored fork (only if the package does something non-obvious — it does not), or adopt as-is (now marginally more defensible than at v2.1.1, still rarely justified).
  5. Add tests for irregulars (child/children, person/people), uncountables (sheep, data), zero/one boundary, and an explicit locale guard or assertion that the app is English-only.

Operational Impact

Maintenance

Effectively self-maintained for defects; periodically refreshed for framework majors by upstream. Revised budget: expect to own any bug fix yourself, but expect to spend roughly zero effort on Symfony-major compatibility. Dependabot/SCA noise from an illuminate/support transitive tree inside a Symfony app remains, and now resolves a newer illuminate tree on Symfony 7.

Support

No SLA, no issue triage expectation, no CVE process. Single maintainer, active as of v2.2.0 but with a historically sparse release history. Treat any defect as yours to fix; treat framework-major compatibility as plausibly handled.

Scaling

Negligible and unchanged. In-process, static, no I/O, no state — Twig compiles the extension once, and rendering cost is immeasurable next to template compilation and DB access. No capacity planning or profiling required. The pluralizer's rule tables are tiny.

Failure modes

  • Loud: Unknown "pluralize" filter at render time if the bundle is not registered in the kernel — a 500 on every affected template.
  • Loud but delayed: Composer constraint conflict mid-upgrade, most plausibly from illuminate/support or PHP rather than Symfony, which v2.2.0 now covers.
  • Silent: incorrect plural forms for irregular or uncountable nouns, and systematically wrong output for any non-English locale. No exception, no log line — just bad copy shipped to users. Unaddressed by this release.
  • Process: license/SCA flag gating a release pipeline or failing an audit after code has already merged.
  • Schedule coupling (new): a future Symfony major now depends on a single-maintainer release landing in time. Evidenced as manageable at v2.2.0, not eliminated.

Ramp-up

Under an hour. Unchanged. The cost is governance and correctness, not learning curve.

Verdict: low opportunity score still stands, but the reasoning must be corrected. v2.2.0 is a signal release, not a feature release: it retires the "unmaintained / stalled cadence" objection and the Symfony-major constraint risk, while leaving the license unresolved, the illuminate/support coupling intact, the cross-framework architectural impurity intact, and every correctness gap (no count-awareness, English-only, no number formatting) untouched. The honest position is that the package is now safe to depend on and still not worth depending on: a Symfony 7 host already has symfony/string and EnglishInflector one file away. Reimplement the filter internally against symfony/string or Str::plural() — same functionality, none of the license, dependency, or locale risk.

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.
middlewares/firewall
qubiqx/montapacking
nyoncode/laravel-package-console
pnscripts/filament-broadquill-lite
pnscripts/laravel-sentfold-lite
vleap/mx-sdk-laravel-internal
twidpay/utils
htetmyathlaing/scout-elasticsearch-driver
artisan-toolbox/front-awesome
ls/client-assistant
users-au/laravel-client
robertmarney/lara-hierarchial-collections
simonschaufi/rule-doc-generator
emissaoja/emissaoja
blackbricksoftware/gravityforms-civicrm-form-processor
al-rahabi/fancy-crud
jinas/dhivatar-component
mltstephane/laravel-quality
bernskiold/laravel-talentlms
bernskioldmedia/laravel-form-architect