Admin Translations is a translation manager package. It scans your codebase and stores all the translations in the database. Once stored it provides nice UI to manage stored translations. It defines a custom translation loader overriding default Laravel's one, so the translations are automatically loaded from the database.
It's heavily inspired by spatie/laravel-translation-loader
, which we originally wanted to use, but we were missing some important features (support for translation namespaces etc.). We have also inspired by themsaid/laravel-langman
with the scanning process.
Navigate your browser to the /admin/translations
and you should be able to see the translations manager.
If you don't see any translations, start with scanning the directories - click Re-scan translations button. By default app
and resources/views
folders are scanned (you can change this in the config admin-translations.scanned_directories
):
This is going to look your at your codebase and search for used translations (in all .php files). It supports these methods of retrieving the translations:
trans()
trans_choice()
__()
Lang::get()
Lang::choice()
Lang::trans()
Lang::transChoice()
Lang::getFromJson()
@lang()
@choice()
It automatically stores all new translations and it also soft-deletes all unused translations (they will be restored once they pop in again in your codebase).
Once scanned and saved manager is ready to use and you can edit any translation for every locale your application uses.
{info} You probably want to add command
php artisan admin-translations:scan-and-save
to your build process to automatically re-scan the codebase with every deploy.
Admin Translations provides the ability to export data in selected languages as .xlsx
file as shown bellow.
Admin Translations provides the ability to import data in selected language from .xlsx
file.
{warning} Imported file must have identical structure as generated in Translations export.
If you check Do not override existing translations
option only new translations will be imported. Otherwise if your import file contains conflicts with current version of translations, the import will ask you to resolve conflicts to choose which version of translations you want to store.