PHP code example of el-schneider / statamic-magic-translator

1. Go to this page and download the library: Download el-schneider/statamic-magic-translator library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

el-schneider / statamic-magic-translator example snippets


// config/statamic/magic-translator.php

'exclude_blueprints' => [
    'pages.redirect', // exact blueprint
    'blog.*',         // all blueprints in a collection
],

'deepl' => [
    'api_key' => env('DEEPL_API_KEY'),
    'formality' => 'default', // 'more', 'less', 'prefer_more', 'prefer_less'
    'glossary' => env('DEEPL_GLOSSARY_ID'),
    'overrides' => [
        'de' => ['formality' => 'prefer_more', 'glossary' => 'glossary-id-for-german'],
    ],
],

// config/statamic/magic-translator.php
'custom_fieldtypes' => [
    'aardvark_seo_meta_title' => 'plain',
    'my_addon_body' => 'markdown',
],

// config/statamic/magic-translator.php

'prism' => [
    'prompts' => [
        'system' => 'magic-translator::prompts.system',
        'user' => 'magic-translator::prompts.user',
        'overrides' => [
            'de' => ['system' => 'magic-translator::prompts.system-de'],
            'ja' => ['system' => 'magic-translator::prompts.system-ja'],
        ],
    ],
],

use ElSchneider\MagicTranslator\Events\BeforeEntryTranslation;

Event::listen(BeforeEntryTranslation::class, function ($event) {
    // $event->entry — the source entry
    // $event->targetSite — target locale handle
    // $event->units — mutable array of TranslationUnit objects
});

use ElSchneider\MagicTranslator\Events\AfterEntryTranslation;

Event::listen(AfterEntryTranslation::class, function ($event) {
    // $event->entry — the source entry
    // $event->targetSite — target locale handle
    // $event->translatedData — mutable array of translated entry data
});

use ElSchneider\MagicTranslator\Contracts\TranslationService;
use ElSchneider\MagicTranslator\Data\TranslationUnit;

class GoogleTranslateService implements TranslationService
{
    public function translate(array $units, string $sourceLocale, string $targetLocale): array
    {
        // $units is an array of TranslationUnit objects
        // Return the same array with translatedText set on each unit
        return array_map(fn (TranslationUnit $unit) => $unit->withTranslation(
            $this->callGoogleApi($unit->text, $sourceLocale, $targetLocale)
        ), $units);
    }
}

$this->app->bind(TranslationService::class, GoogleTranslateService::class);
bash
php artisan vendor:publish --tag=statamic-magic-translator-config
bash
php please statamic:magic-translator:translate [options]
bash
php please statamic:magic-translator:translate --collection=pages --to=de --to=fr --dispatch-jobs -n
bash
php please statamic:magic-translator:translate --entry=abc-123
bash
php artisan queue:work
bash
php artisan vendor:publish --tag=statamic-magic-translator-views