Translation Manager plugin screenshot
Dark mode ready
Multilingual support
Supports v5.x

Translation Manager

benriadh1/laravel-filament-translation-manager is a Filament v5 plugin that adds a clean translation management page with inline editing, filtering, prefix tabs, and optional status widget support.

Tags: Kit
Supported versions:
5.x
Riadh Ben Ali avatar Author: Riadh Ben Ali

Documentation

Latest Version on Packagist Total Downloads

A Filament v5 translation management plugin for browsing, filtering, and updating Laravel translation keys from inside your admin panel, with inline editing, missing-translation workflows, prefix tabs, and optional status widget support.

Release version: 1.1.0

#Highlights

  • Dedicated Translation Manager page in Filament navigation
  • Inline editing with Save and Cancel actions
  • Search by translation key and translation content
  • Multi-select filters for groups and locales
  • Only show missing translations workflow
  • Prefix tabs with per-group missing and total counters
  • Optional dashboard widget for missing translation count
  • Publishable config, views, and package language files
  • English and French package UI translations
  • Sensible locale fallback using app.locale and app.fallback_locale

#Requirements

  • PHP ^8.2
  • Filament ^5.0

#Install

composer require benriadh1/laravel-filament-translation-manager

Optional publish commands:

php artisan vendor:publish --tag=benriadh-filament-translation-manager-config
php artisan vendor:publish --tag=benriadh-filament-translation-manager-lang
php artisan vendor:publish --tag=benriadh-filament-translation-manager-views

#Register In Panel

use Benriadh1\FilamentTranslationManager\BenriadhFilamentTranslationManagerPlugin;
use Filament\Panel;

public function panel(Panel $panel): Panel
{
    return $panel->plugins([
        BenriadhFilamentTranslationManagerPlugin::make(),
    ]);
}

#Quick Start

After installation, open your Filament panel and go to Translation Manager.

By default, the package will:

  • use filament-translation-manager.locales when configured
  • otherwise fall back to app.locale and app.fallback_locale
  • scan your Laravel translation groups
  • let your team search, filter, and update translations inline

This makes it useful for day-to-day content maintenance as well as translation QA before release.

#Config Model

Main config file: config/filament-translation-manager.php

<?php

use Filament\Support\Icons\Heroicon;

return [
    'locales' => [],
    'gate' => null,
    'ignore_groups' => [],
    'navigation_sort' => null,
    'navigation_group' => 'benriadh-filament-translation-manager::messages.navigation_group',
    'prefix_tabs' => [
        'sys' => 'System',
        'acc' => 'Accounting',
    ],
    'widget' => [
        'enabled' => false,
        'gate' => null,
        'sort' => null,
    ],
    'navigation_icon' => Heroicon::OutlinedLanguage,
];

Core keys:

  • locales: Managed locales. If empty, the package uses app.locale and app.fallback_locale.
  • gate: Laravel ability used to authorize access to the manager page.
  • ignore_groups: Translation groups excluded from the manager and widget counts.
  • navigation_sort: Navigation sort order in Filament.
  • navigation_group: Sidebar group label, as a translation key or plain string.
  • prefix_tabs: Translation groups shown as dedicated quick-access tabs.
  • widget: Controls the optional missing-translations widget.
  • navigation_icon: Navigation icon for the page. Set null to hide it.

#Common Configuration Examples

#Managed locales

'locales' => ['en', 'fr', 'de'],

#Authorization

'gate' => 'manage-translations',

#Ignore framework or system groups

'ignore_groups' => ['pagination', 'passwords'],

#Navigation placement

'navigation_group' => 'Settings',
'navigation_sort' => 90,

#Hide the navigation icon

'navigation_icon' => null,

#Prefix Tabs

Prefix tabs help surface important translation groups such as sys, acc, or any module-specific group used across your application.

Simple list format:

'prefix_tabs' => ['sys', 'acc'],

Custom label format:

'prefix_tabs' => [
    'sys' => 'System Core',
    'acc' => 'Accounting',
],

When a configured group exists in your language files, the manager shows:

  • a dedicated tab for that group
  • the total number of keys in that group
  • the number of missing translations for the selected locales

Groups included in prefix tabs are separated from the default All listing so high-priority translation sets are easier to review.

#Translation Status Widget

Enable the widget to display the current number of missing translations:

'widget' => [
    'enabled' => true,
    'gate' => 'manage-translations',
    'sort' => 10,
],

Notes:

  • If widget.gate is null, the widget falls back to the main gate value.
  • Ignored groups are excluded from the widget count.
  • The widget uses the same resolved locales as the manager page.

#Example Workflow

Imagine your application has a translation group called sys for shared UI labels used in a Companies resource.

#lang/en/sys.php

<?php

return [
    'companies' => [
        'title' => 'Companies',
        'fields' => [
            'name' => 'Company name',
            'email' => 'Email',
        ],
        'actions' => [
            'create' => 'Create company',
            'edit' => 'Edit company',
        ],
    ],
];

#Use the keys in your Filament resource

<?php

use Filament\Forms\Components\TextInput;
use Filament\Schemas\Schema;

public static function form(Schema $schema): Schema
{
    return $schema->components([
        TextInput::make('name')
            ->label(__('sys.companies.fields.name'))
            ->required(),
        TextInput::make('email')
            ->label(__('sys.companies.fields.email'))
            ->email(),
    ]);
}

#Add a dedicated tab for that group

'prefix_tabs' => [
    'sys' => 'SYS',
],

Now the sys group appears as its own tab in Translation Manager, making those labels easier to audit and complete.

#Localization

The package ships with UI translations for:

  • resources/lang/en/messages.php
  • resources/lang/fr/messages.php

Publish them if you want to customize wording for your project:

php artisan vendor:publish --tag=benriadh-filament-translation-manager-lang

#Inspiration

  • Plugin concept inspired by Laravel Filament Chained Translation Manager

#License

MIT. See LICENSE.md.