langsys/langsys-php-laravel
Laravel integration for LangSys translation management. Adds middleware, helpers, Blade directives, and Artisan commands to fetch, cache, and serve localized strings from LangSys, simplifying multilingual Laravel apps and keeping translations synced with your LangSys project.
Assessment status: Initial assessment based on the v1.0.0 release notes only; no code audit, benchmarks, or prior assessment exists.
langsys/langsys-php, not a standalone translation platform. It fits Laravel 10–12 applications that already use or are evaluating Langsys and want one catalog shared across PHP, Blade, Inertia SSR, and JS SDKs. The t() helper, @t directive, locale middleware, pending-registration flush, optional response middleware, and Inertia prop sharing map to common Laravel rendering patterns.ext-intl requirement is a real platform prerequisite; official php:8.x-fpm images do not bundle it, so most containerized deployments need a base-image change. The package depends on langsys/langsys-php ^1.3 and, for SSR plus hydration, langsys-js-typescript >=0.6.2. Configuration, credential handling, service-provider discovery, and cache/queue behavior are not detailed in the release notes and must be confirmed before commitment.FlushPendingRegistrations rely on terminate, queue workers, or Octane listeners in all supported modes? How is “one coverage mode per project” enforced? Does automatic mode handle streamed, compressed, JSON, Livewire, and Inertia responses safely? What observability exists for lookup failures, skipped registrations, and catalog pollution? What are the cache/TTL, timeout, retry, and data-residency semantics? What is the support and upgrade policy for a v1.0.0 package?TPM recommendation: Conditional pilot. Use tagged mode first in a non-critical Laravel surface; do not enable automatic response translation until catalog hygiene, exclusion rules, middleware ordering, and performance are proven.
ext-intl to the runtime image, pin PHP/Laravel/package versions, install the package, configure Langsys credentials, register DetectLocale, and apply @t/t() to a bounded pilot surface. Leave TranslateResponse disabled. Add InertiaSsrProps::share() only if the app uses Inertia SSR. Validate phrase registration in staging before expanding coverage. Treat automatic mode as a separate, later project with explicit exclusion attributes (translate="no" / data-notrans) and a catalog-cleanup plan. Rollback should be low-risk because fallbacks render base-language phrases, but middleware and directive removal should be feature-flagged.ext-intl, upstream PHP SDK ^1.3, and JS SDK >=0.6.2 for SSR hydration. Check the actual FPM image, Octane version, middleware priority, response types, and any existing translation or locale middleware. Automatic mode needs additional compatibility checks for streaming, compression, CSP, and non-HTML responses.ext-intl and base-image compatibility. 2) Install and configure the package in a staging Laravel app. 3) Wire locale detection and verify BCP 47/normalized locale behavior. 4) Pilot tagged @t/t() on a few pages. 5) Verify pending phrase registration, including under Octane. 6) Add Inertia SSR sharing if applicable. 7) Only then evaluate automatic mode with exclusions, load tests, and catalog QA. 8) Canary to production with translation-failure dashboards.^1.3, JS SDK minimums for SSR, and ext-intl. Pin versions and track upstream releases. The one-mode-per-project rule needs ongoing engineering governance because a well-intentioned middleware addition can pollute a catalog shared by every Langsys SDK.ext-intl, credential/configuration failures, Octane flush behavior, and catalog pollution cleanup.ext-intl blocks runtime. Enabling both coverage modes risks catalog pollution and degraded translations across all SDKs. Middleware ordering can produce incorrect locale or double translation. Automatic mode may interact badly with streamed, compressed, or non-HTML responses, and may register PII or translated output if exclusions are wrong. Octane workers may not flush pending registrations without the listener. Translation lookup failures should degrade safely, but silent degradation can hide coverage gaps.How can I help you explore Laravel packages today?