Filament Translation Manager
#Filament Translation Manager
Edit your application's translations from the Filament panel — including the lines of every installed package (Filament itself, your plugins, validation…) — find the keys missing in each locale, and export the result back to lang/ so it lives in Git.
Built on jeffersongoncalves/laravel-translation-manager: the lang files stay the source of truth and the panel only stores overrides, laid over the files at runtime.
#Why another translation manager
- Vendor translations, not only yours. Package namespaces (
filament-panels::,filament-actions::, any plugin) are scanned and editable, nested groups (pages/dashboard) included. Exporting writes them tolang/vendor/{package}/…, the files Laravel already lays over the package's own. - Files stay the source of truth. No import step that copies everything into the database: unedited keys keep coming from the files, so a
composer updatethat changes a package's wording is picked up. - Missing keys per locale, from the table filter.
- Filament 3, 4 and 5, one branch each.
#Compatibility
| Branch | Filament | Package version |
|---|---|---|
| 1.x | 3.x | ^1.0 |
| 2.x | 4.x | ^2.0 |
| 3.x | 5.x | ^3.0 |
#Installation
composer require jeffersongoncalves/filament-translation-manager:"^3.0"
php artisan migrate
php artisan translation-manager:scan
#Usage
Add the plugin to your panel provider:
use JeffersonGoncalves\Filament\TranslationManager\TranslationManagerPlugin; public function panel(Panel $panel): Panel { return $panel ->plugins([ TranslationManagerPlugin::make(), ]); }
Then open Translations:
| Feature | |
|---|---|
| Table | One row per key: namespace (app for your own lines), group (json for lang/{locale}.json), key and the value per locale. Overridden values are highlighted. Locale columns other than the current and fallback locale are hidden by default — toggle them on. |
| Search | Matches keys, file values and overrides. |
| Filters | Namespace, missing in a locale, overridden or not. |
| Edit | A field per locale; the placeholder shows the file value. Leave a field empty to keep the file value. |
| Revert to file | Drops the overrides of a line. |
| Scan lang files | Re-reads the files (after adding keys or installing packages). Overrides are never touched. |
| Export to lang files | Writes the overrides into lang/ (all or some locales), optionally removing them from the database afterwards. |
#Customization
TranslationManagerPlugin::make() ->navigationGroup('Settings') ->navigationSort(10),
Locales, scanned namespaces, table name and cache store are configured in laravel-translation-manager — see its configuration. Excluding the big Filament namespaces you don't plan to edit keeps the table small:
// config/translation-manager.php 'namespaces' => [ 'include' => [], 'exclude' => ['filament-forms', 'filament-tables', 'filament-query-builder'], ],
#Authorization
The resource follows Filament's usual rules: register a policy for JeffersonGoncalves\TranslationManager\Models\TranslationLine to decide who may view and edit translations.
#Requirements
- PHP 8.2 or higher
- Filament 5.x
#Testing
composer test
#Changelog
Please see CHANGELOG for more information on what has changed recently.
#Contributing
Please see CONTRIBUTING for details.
#Security Vulnerabilities
Please review our security policy on how to report security vulnerabilities.
#Credits
#License
The MIT License (MIT). Please see License File for more information.