liberusoftware/localization-core
Localization Core is a Laravel package offering foundational localization infrastructure for multi-language applications. It supports locale management and translation organization, giving developers a base for consistent localization across PHP projects.
Architecture fit. localization-core is scoped as a Liberu module, not a general-purpose i18n library. The name (module-localization-core) and the "for Liberu applications" framing signal a service-provider package that assumes Liberu's module conventions, config layout, and likely its own user/tenant model. Inside a Liberu-based application it should drop in cleanly; outside that ecosystem, expect to spend time reverse-engineering implicit assumptions. The functional scope is unusually broad for one package — locale resolution (negotiation), preferences (persistence), propagation (request/job/response context), and UI direction (LTR/RTL) are four separable concerns bundled together, which means partial adoption may be difficult. If we only need resolution + preferences, we may end up carrying the whole bundle.
Integration feasibility. MIT license removes legal friction, and Composer installation into a Laravel app is a known quantity. The real cost is discoverability: with 0 stars and 0 dependents, we are the first external integrator. There is no corpus of Stack Overflow answers, no third-party tutorials, and no community to sanity-check behavior against. Integration effort therefore depends almost entirely on whether the repository ships README usage examples, published config, and a service-provider contract we can read. Budget a source-reading spike before committing to an estimate.
Technical risk.
App::setLocale/Lang, plus established packages for route-based localization and Accept-Language negotiation, cover part of this ground. Adopting this package means accepting a narrower maintenance pool than the alternatives.Key questions.
user_locale/preferences schema, and does that schema assume a specific user or tenant model?Accept-Language negotiation and fallback chains, or delegate to an existing package?Read on the scores. The overall score of ~19.9 against an opportunity score of ~43.5 is the tell: the problem is high-value and recurring (i18n and RTL are perennial roadmap items), but the artifact has no traction. That combination argues for a time-boxed pilot, not a platform decision.
Stack fit. Assume Laravel 10–12 on PHP 8.2+ until verified against composer.json. The package should be additive — a service provider, publishable config, and probably middleware. Verify it does not hijack the framework's locale handling in a way that breaks existing __() calls; if it does, isolate it behind our own thin façade.
Migration path. Do not call the package directly from controllers, models, or Blade. Wrap it in an internal LocaleService (or a small adapter interface) that exposes only the operations we need: resolveForRequest(), preferenceFor(User), setPreference(), direction(). That façade costs an afternoon and buys us a swap path to Laravel-native primitives or an established package if the dependency stalls. If the package owns migrations, run them in a dedicated migration and keep our own preference columns or tables where feasible so we are not locked into its schema.
Compatibility checks before writing code.
composer why-not against our current framework pin.setLocale calls, and translation packages to map collisions.Sequencing.
Maintenance. Treat this as a vendored dependency. Plan for the realistic case that upstream goes quiet: fork to an internal namespace on first adoption, or at minimum mirror the repository and pin the exact version with a lockfile. Assign a named owner. Review the diff before any version bump; with zero dependents, a patch release is not a signal of safety.
Support. There is no community to escalate to. Internal engineers will be the support tier, which means onboarding documentation is our responsibility, not the maintainer's. Write a one-page internal runbook covering how locale is resolved, where preferences are stored, and how to force a locale for debugging.
Scaling.
Failure modes to plan for.
Ramp-up. Low for a Laravel developer reading the source — the domain is familiar and the surface is small. Budget roughly one engineer-week for the first developer to become genuinely confident, most of it spent on propagation semantics rather than the API. Frontend contributors need separate ramp-up for RTL conventions, and QA needs a test matrix per locale and direction. Do not assume the package's UI-direction handling removes frontend work; it flags direction, it does not mirror your CSS.
Bottom line. Viable as a time-boxed pilot inside a Liberu-aligned application, behind an internal façade, with a named owner and a pinned version. Not viable as the strategic foundation for multi-locale, multi-tenant localization without a fork-and-own decision and a documented exit path to Laravel-native primitives. The opportunity score is high because localization is genuinely underserved in our roadmap; the package score is low because this specific artifact is unproven. Fund the spike, not the commitment.
How can I help you explore Laravel packages today?