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

Laravel Translation Loader Laravel Package

novius/laravel-translation-loader

Load Laravel translations from the database instead of language files, with a custom translation loader that lets you manage and edit strings at runtime. Part of Novius's Laravel packages.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Build vs. buy for translation management. This package answers a narrow but recurring question: do we build an in-app translation editor, or wire one up? It provides the storage and loader layer (DB or other sources) behind Laravel's existing Translator, so the only thing left to build is the admin UI. That converts a multi-sprint "translation CMS" project into a UI task plus a package integration.
  • Decoupling copy changes from releases. If marketing, support, or regional ops need to change strings without a deploy, DB-backed translations are the enabling mechanism. This is a roadmap decision (do we invest in content velocity?) as much as a technical one — the package is the cheap version of that bet.
  • Per-tenant and per-context overrides. Multi-tenant SaaS, white-label deployments, and marketplaces routinely need "same product, different words per customer." Storing translations in the database makes tenant-scoped overrides a data problem rather than a code-fork problem. The "or other sources" loader abstraction matters here: the same interface can front a tenant table, a file source, or a remote service later.
  • Overriding vendor/package strings. Any product that ships with third-party packages eventually needs to reword their UI text. DB-backed translation loading makes those overrides first-class and auditable instead of scattered across lang/vendor files.
  • Localization as a roadmap item. If expansion into new locales is on the roadmap, this decides where translations live. Retrofitting DB storage later is doable but involves migrating every string and every workflow, so the decision is cheapest at the start of a localization push.
  • Admin/ops surface ownership. Storing translations in the DB implies someone owns them. That's an org decision — who gets edit rights, what the review flow is, whether changes are audited — and it should be made deliberately, because "anyone with admin access can change production copy" is a governance choice, not just a feature.
  • Fork strategy as an explicit decision. This is a maintained adaptation of Spatie's laravel-translation-loader, not the original. Choosing it means choosing a fork: the PM should record why the fork is preferred (maintenance cadence, added loaders, agency support relationship) so that the choice is revisitable rather than accidental.

When to Consider This Package

Consider it when several of these are true:

  • You need runtime-editable translations — an admin screen, a support tool, or an internal console — rather than file-only lang/ strings.
  • You have a multi-tenant or white-label model where the same codebase serves different wording per customer.
  • You want to override package/vendor translations without editing vendor directories.
  • Your team is standard-Laravel and wants to stay on the framework's Translator API rather than adopt a full TMS or a heavyweight localization platform.
  • You are comfortable owning a thin integration layer and can absorb the maintenance yourself if the upstream fork goes quiet.
  • You need a pluggable source story — DB now, something else (cache, remote, file) later — and want the loader boundary defined up front.

Look elsewhere (or use Spatie upstream directly, or build a small custom repository) when:

  • Static file translations are sufficient. If nobody outside engineering will ever edit copy, the database adds a query path and a migration for no user-visible gain.
  • Adoption and support risk are unacceptable. One star and zero dependents mean effectively no community validation: no Stack Overflow corpus, no third-party blog posts, no peer reference customers. For a system of record, that bus factor needs an internal owner named in advance.
  • Performance is tightly budgeted. Translation lookups happen on nearly every render. Verify the caching behavior and warm-up strategy before committing, especially on high-traffic, many-locale surfaces.
  • You need translation workflow, not translation storage. Review cycles, translator assignments, TM/glossary, machine translation, locale QA — those are a TMS integration, and this package stops well short.
  • You need vendor SLAs or a commercial support contract. An agency-maintained fork is not that.
  • The fork may drift. Because it tracks an upstream, you should confirm the divergence policy and your own upgrade path to/from Spatie's original before adopting.

How to Pitch It (Stakeholders)

For executives: Localization and copy changes are currently engineering work — every wording tweak is a commit, a review, and a release. This package moves translations into the database behind a thin, swappable layer, so non-engineers can edit product copy, regional teams can adapt wording, and per-customer overrides become configuration instead of code. The cost is small and the integration is reversible: it sits on top of Laravel's standard translation system, so we can replace it without rewriting feature code. The honest caveat is maturity — it's an adaptation of a well-known open-source package, with a very small user base — so I'd recommend adopting it with an internal owner named and a documented fallback to the upstream package or a short in-house implementation. Treat it as a low-cost enabler of a content-velocity and localization roadmap, not as infrastructure we depend on without a contingency.

For engineering: It's an adapter, not a framework. It gives you a database-backed loader for Laravel's Translator plus an abstraction for additional sources, so __() calls stay unchanged and the storage becomes swappable. Two things to settle before we commit: (1) it's a maintained fork of Spatie's original, so we pick a version, pin it, and note the divergence and our exit path; (2) we need a caching and invalidation story before it goes near a hot rendering path. If either of those turns out to be awkward, a small custom translation repository is a contained fallback — the blast radius is one loader binding.

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.
ignibyte/aic-framework
glavweb/data-schema-bundle
glavweb/datagrid-bundle
tacticmedia/scim-server
uni-method/frame
neika-ai/sdk
adachsoft/php-code-style
pharaonic/laravel-notification-dependencies
beautinow/translug
dev-brainiac/bot-cloaked
octoberrain/html
octoberrain/extension
octoberrain/exception
octoberrain/contracts
adachsoft/api-version-bundle
cgv/localized-resource
noith/settings
kda/laravel-package
kda/filament-dynamic-navigation
bypersoft/signbox