outhebox/laravel-translations
Pros:
translations), enabling querying, filtering, and versioning—critical for multilingual apps with dynamic content.can('edit-translations')) integrate seamlessly with Laravel’s gates/policies.Cons:
Laravel 12 Compatibility:
Kernel.php changes needed)./admin/translations vs. Wayfinder’s routes).vite:manifest path issues).Database Schema:
translations table is straightforward (key, locale, value, group).Authentication/Authorization:
// app/Policies/TranslationPolicy.php
public function edit(User $user): bool { return $user->can('edit-translations'); }
| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| UI Conflicts | Medium | Audit existing Inertia routes to avoid /admin/translations clashes. |
| Performance | High | Add Redis caching for translation fetches in high-traffic apps. |
| Schema Lock-in | Low | Extend the translations table with custom columns (e.g., context, priority). |
| Testing Gaps | Medium | Write Pest tests for translation extraction/import logic (see package’s tests/). |
| Upgrade Risk | Low | Package is actively maintained (last release: 2026-04-07). |
/admin/translations route doesn’t conflict with Wayfinder’s generated routes.vite:manifest path issues if using Vite 5+.composer require outhebox/laravel-translations
php artisan vendor:publish --tag="laravel-translations-migrations"
php artisan migrate
php artisan vendor:publish --tag="laravel-translations-config"
config/laravel-translations.php for:
['en', 'es', 'fr']).['auth', 'validation']).// app/Providers/AuthServiceProvider.php
Gate::define('edit-translations', fn(User $user) => $user->isAdmin());
routes/web.php:
Route::middleware(['auth', 'can:edit-translations'])->group(function () {
Route::get('/admin/translations', [TranslationController::class, 'index'])->name('translations.index');
});
<Link href={route('translations.index')} className="text-blue-500">
Manage Translations
</Link>
| Component | Compatibility | Notes |
|---|---|---|
| Laravel 12 | ✅ Full | Uses Laravel’s new middleware/app.php structure. |
| Inertia.js v2 | ✅ Full | Supports deferred props, React 19, and TypeScript. |
| Tailwind CSS v4 | ✅ Full | UI uses Tailwind v4 (compatible with project). |
| PHP 8.4 | ✅ Full | Uses constructor promotion, enums, and strict types. |
| Wayfinder | ⚠️ Partial | May conflict with /admin/translations route. |
| Filament/Spatie | ❌ No | UI is Inertia-based; would require custom integration. |
TranslationSeeder).translations table (e.g., add context, priority columns).tests/Extraction/).How can I help you explore Laravel packages today?