How to use

At the top level, a Manager is responsible for keeping track of your exporters.

Obtain Manager

The translation exporter Manger can be obtained via the TranslationsExporterManagerTrait.

use Aedart\Translation\Traits\TranslationsExporterManagerTrait;

class MyController
{
    use TranslationsExporterManagerTrait;
    
    public function index()
    {
        $manager = $this->getTranslationsExporterManager();
        
        // ..remaining not shown...
    }
}

Once you have your manager, you can request an Exporter instance, which will perform the actual exporting of translations.

$exporter = $manager->profile(); // Default profile

To obtain a specific Exporter, specify the profile name as argument.

$exporter = $manager->profile('lang_js');

Export Translations

To export the application's translations, invoke the export() method. It accepts the following arguments:

  • string|array $locales (optional) Locales to export. Wildcard (*) = all locales.
  • string|array $groups (optional) Groups to export. Wildcard (*) = all groups, incl. namespaced groups, e.g. 'courier::messages'.
// All available translations, for all locales...
$all = $exporter->export();

// English translations only...
$englishOnly = $exporter->export('en');

// En-uk, of the auth and validation groups
$uk = $exporter->export('en-uk', [ 'auth', 'validation' ]);

// Namespaced group (from a package)...
$acme = $exporter->export('be', 'acme::users');

The output of the export() method depends on the chosen profile's driver.

Paths and Translations

Available locales and groups are automatically detected, based on the paths option (in your config/translations-exporter.php), as well as registered namespaced translations and paths to JSON files, in Laravel's translation loader.

If you wish to export translations from 3rd party packages, then you have the following options:

  1. Register 3rd party service provider to load translations.
  2. Publish packages' resource (if translations are published)
  3. Or, manual registration of translations (see below)

To use translations from packages, without having to register their service providers, you can register them in the configuration:

<?php

return [
    // ...previous not shown...
    
    /*
    |--------------------------------------------------------------------------
    | Namespaces and Json
    |--------------------------------------------------------------------------
    |
    | Register namespaced translations and paths to JSON translations. Use this
    | when you want to use 3rd part translations without having to register
    | their service providers.
    */

    'namespaces' => [
        'acme' => realpath(__DIR__ . '/../vendor/acme/package/lang'),
    ],

    'json' => [
        realpath(__DIR__ . '/../vendor/acme/package/lang')
    ],

    // ...remaining not shown ...
];

Consequently, when you manually register namespaced translations and paths to JSON translations, then these will be made available in your application!