Symfony bundle provides a simple way to manage system translations.
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]
];
Create danilovl_translator.yaml in you packages folder.
danilovl_translator:
enabled: true
enabledAutoAdminRefreshCache: true
enabledDashboardController: true
locale: [en, ru]
domain: [messages,validators]
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
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.
Parameters locale, domain is available in configuration danilovl_translator.
You cannot use parameters other than the ones provided.
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
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
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
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
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
The TranslatorBundle is open-sourced software licensed under the MIT license.
How can I help you explore Laravel packages today?