Weave Code
Code Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Translator Bundle Laravel Package

danilovl/translator-bundle

View on GitHub
Deep Wiki
Context7

phpunit downloads latest Stable Version license

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.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
sayedenam/sayed-dashboard
milito/query-filter
apiboxsym/user-bundle
apiboxsym/health-check-bundle
jayeshmepani/jpl-moshier-ephemeris-php
elnasnato/laraliveui
labrodev/rest-sdk
sampaui/sampaui
babelqueue/php-sdk
facebook/capi-param-builder-php
babelqueue/symfony
hamzi/corewatch
minionfactory/raw-hydrator
hexters/coinpayment
rjcodes/rjcms
act-training/laravel-permissions-manager
alimarchal/laravel-chart-of-accounts
babenkoivan/elastic-scout-driver
mkwebdesign/filament-watchdog-v5
renatomarinho/laravel-page-speed