danilovl / translator-bundle
Symfony bundle provides simple management of system translations.
Installs: 116
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 1
Forks: 1
Open Issues: 0
Type:symfony-bundle
pkg:composer/danilovl/translator-bundle
Requires
- php: ^8.5
- doctrine/doctrine-bundle: ^3.0
- doctrine/orm: ^3
- easycorp/easyadmin-bundle: ^4.27.6
- symfony/console: ^8.0
- symfony/event-dispatcher: ^8.0
- symfony/framework-bundle: ^8.0
- symfony/http-kernel: ^8.0
- symfony/translation: ^8.0
- symfony/yaml: ^8.0
- twig/twig: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.92.5
- phpstan/extension-installer: ^1.4.3
- phpstan/phpstan: ^2.1.33
- phpstan/phpstan-symfony: ^2.0.9
- phpunit/phpunit: ^12.5.6
README
TranslatorBundle
About
Symfony bundle provides a simple way to manage system translations.
Features
- Save YAML translations in a database table.
- Command to generate cached translations.
- Command to synchronize translations from YAML to the database table.
- Command to synchronize translations from the database table to YAML.
- EasyAdmin interface to manage translations.
- Automatically refresh cache when translations are changed in the admin panel.
Requirements
- PHP 8.5 or higher
- Symfony 8.0 or higher
- MySQL
- EasyAdmin
- Only YAML translation file extensions and MySQL database are supported.
1. Installation
Install danilovl/translator-bundle package by Composer:
composer require danilovl/translator-bundle
Add the TranslatorBundle to your application's bundles if it does not add automatically:
<?php // config/bundles.php return [ // ... Danilovl\TranslatorBundle\TranslatorBundle::class => ['all' => true] ];
2. Configuration
2.1 Bundle configuration options
Create danilovl_translator.yaml in you packages folder.
danilovl_translator: enabled: true enabledAutoAdminRefreshCache: true enabledDashboardController: true locale: [en, ru] domain: [messages,validators]
2.2 Doctrine entity mapping
Add entity mapping to doctrine.yaml in packages folder.
orm: mappings: Danilovl\TranslatorBundle: is_bundle: false type: attribute dir: "%kernel.project_dir%/vendor/danilovl/translator-bundle/src/Entity/" prefix: 'Danilovl\TranslatorBundle\Entity'
Then update you database schema by command.
php bin/console doctrine:schema:update --force php bin/console doctrine:schema:update --dump-sql
2.2 Easy admin
If you want to use the built-in DashboardController, you should enable it in the configuration enabledDashboardController: true.
Then the admin interface will be available at the URL /admin/danilovl/translator.
If you want to use your own DashboardController or custom routing, you can add the route to your project routes routes.yaml.
3. Usage command
Parameters locale, domain is available in configuration danilovl_translator.
You cannot use parameters other than the ones provided.
3.1 Generate translation
Generate cache translations.
php bin/console danilovl:translator:generate-translation php bin/console danilovl:translator:generate-translation --locale=en php bin/console danilovl:translator:generate-translation --locale=en --locale=ru
3.2 Migrate translation to database
Delete all translations in the database and insert new ones.
Command has argument strategy with value full|only-new|git-diff|database-diff
Command has options mode with value migrate|dump, locale, domain.
By default mode is migrate, dump show you sql query.
php bin/console danilovl:translator:migration-to-database full php bin/console danilovl:translator:migration-to-database full php bin/console danilovl:translator:migration-to-database full --locale=en php bin/console danilovl:translator:migration-to-database full --locale=en --domain=messages php bin/console danilovl:translator:migration-to-database full --domain=messages php bin/console danilovl:translator:migration-to-database full --mode=dump php bin/console danilovl:translator:migration-to-database full --mode=dump --locale=en php bin/console danilovl:translator:migration-to-database full --mode=dump --domain=messages php bin/console danilovl:translator:migration-to-database full --mode=dump --locale=en --locale=ru --domain=messages
Insert only new translations that do not already exist in the database.
php bin/console danilovl:translator:migration-to-database only-new php bin/console danilovl:translator:migration-to-database only-new --locale=en php bin/console danilovl:translator:migration-to-database only-new --locale=en --locale=ru --domain=messages php bin/console danilovl:translator:migration-to-database only-new --domain=messages php bin/console danilovl:translator:migration-to-database only-new --mode=dump php bin/console danilovl:translator:migration-to-database only-new --mode=dump --locale=en php bin/console danilovl:translator:migration-to-database only-new --mode=dump --locale=en -domain=messages
Generate update, delete, insert sql query by git diff. Compare the current file with the last version.
php bin/console danilovl:translator:migration-to-database git-diff php bin/console danilovl:translator:migration-to-database git-diff --locale=en php bin/console danilovl:translator:migration-to-database git-diff --locale=en --domain=messages php bin/console danilovl:translator:migration-to-database git-diff --mode=dump php bin/console danilovl:translator:migration-to-database git-diff --locale=en
Generate update,delete,insert sql queries by comparing the current file with the database.
php bin/console danilovl:translator:migration-to-database database-diff php bin/console danilovl:translator:migration-to-database database-diff --locale=en php bin/console danilovl:translator:migration-to-database database-diff --locale=en --domain=messages php bin/console danilovl:translator:migration-to-database database-diff --mode=dump php bin/console danilovl:translator:migration-to-database database-diff --locale=en
3.3 Migrate translation from database to file
Generate translation yaml file.
Command has option strategy with value flatten|dotNested, mode with value migrate|dump, locale, domain.
By default strategy is flatten.
By default mode is migrate, dump show you yaml content.
php bin/console danilovl:translator:migration-from-database php bin/console danilovl:translator:migration-from-database --strategy=flatten php bin/console danilovl:translator:migration-from-database --strategy=dotNested php bin/console danilovl:translator:migration-from-database --strategy=flatten --locale=en php bin/console danilovl:translator:migration-from-database --strategy=flatten --locale=en --locale=ru --domain=messages php bin/console danilovl:translator:migration-from-database --strategy=flatten --domain=messages php bin/console danilovl:translator:migration-from-database --strategy=flatten --mode=dump php bin/console danilovl:translator:migration-from-database --strategy=dotNested --mode=dump --locale=en php bin/console danilovl:translator:migration-from-database --strategy=dotNested --mode=dump --locale=en -domain=messages
3.4 Change translation file format
Format flatten
app.text.common.A: A app.text.common.B: B app.text.common.C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml flatten
Format dotNested
app: text: common: A: A B: B C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml dotNested
3.5 Change translation file order
Order ASC.
app.text.common.B: B app.text.common.A: A app.text.common.C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml flatten ASC
Result:
app.text.common.A: A app.text.common.B: B app.text.common.C: C
Order DESC.
app.text.common.B: B app.text.common.A: A app.text.common.C: C
php bin/console danilovl:translator:transform-to-format messages.en.yaml flatten DESC
Result:
app.text.common.C: C app.text.common.B: B app.text.common.A: A
License
The TranslatorBundle is open-sourced software licensed under the MIT license.