PHP code example of minhyung / laravel-translator

1. Go to this page and download the library: Download minhyung/laravel-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/ */

    

minhyung / laravel-translator example snippets


// config/translator.php
'translators' => [
    'deepl'  => ['driver' => 'deepl',  'key' => env('DEEPL_AUTH_KEY')],
    'google' => ['driver' => 'google', 'key' => env('GOOGLE_TRANSLATE_KEY')],
    'claude' => ['driver' => 'claude', 'key' => env('ANTHROPIC_API_KEY'), 'model' => 'claude-haiku-4-5'],
    'openai' => ['driver' => 'openai', 'key' => env('OPENAI_API_KEY'), 'model' => 'gpt-5.4-mini'],

    // OpenAI-compatible endpoints: same driver, different base_url
    'gemini' => [
        'driver'   => 'openai',
        'base_url' => 'https://generativelanguage.googleapis.com/v1beta/openai',
        'key'      => env('GEMINI_API_KEY'),
        'model'    => 'gemini-3-flash-preview',
    ],
    'deepseek' => [
        'driver'   => 'openai',
        'base_url' => 'https://api.deepseek.com/v1',
        'key'      => env('DEEPSEEK_API_KEY'),
        'model'    => 'deepseek-v4-flash',
        'options'  => [
            // DeepSeek V4 enables "thinking" by default; disable it for translation.
            'extra_body' => ['thinking' => ['type' => 'disabled']],
        ],

        // 'headers' => ['X-Tenant' => 'acme'], // extra HTTP headers
    ],
],

'libretranslate' => [
    'driver'   => 'libretranslate',
    'base_url' => env('LIBRETRANSLATE_URL', 'http://localhost:5000'),
    'key'      => env('LIBRETRANSLATE_API_KEY'), // optional
],

'google' => [
    'driver'      => 'google',
    'version'     => 3,
    'project_id'  => env('GOOGLE_CLOUD_PROJECT'),
    'location'    => 'global',
    'credentials' => env('GOOGLE_APPLICATION_CREDENTIALS'), // service-account JSON path; null = ADC
],

'azure' => [
    'driver' => 'azure',
    'key'    => env('AZURE_TRANSLATOR_KEY'),
    'region' => env('AZURE_TRANSLATOR_REGION'), // e.g. "koreacentral"; optional for global keys
],

'amazon' => [
    'driver' => 'amazon',
    'region' => env('AWS_DEFAULT_REGION', 'us-east-1'),
    'key'    => env('AWS_ACCESS_KEY_ID'),     // optional
    'secret' => env('AWS_SECRET_ACCESS_KEY'), // optional
],

Translator::via('claude')->translate('Hello', 'ko'); // result's ->translator is "claude"

use Minhyung\LaravelTranslator\Facades\Translator;

$result = Translator::translate('Hello, world!', 'ko');

$result->text;               // "안녕하세요, 세상!"
$result->detectedSourceLang; // "en"
$result->translator;         // "deepl"
(string) $result;            // the translated text (Stringable)

Translator::translate('How are you?', 'de', 'en', ['formality' => 'less']);

$results = Translator::translateBatch(
    ['greeting' => 'Hello', 'farewell' => 'Goodbye'],
    'ko',
);

$results['greeting']->text; // "안녕하세요"
$results['farewell']->text; // "안녕히 가세요"

$results = Translator::translateInto(['ko', 'ja', 'es'], 'Hello'); // keyed by target

$results['ko']->text; // "안녕하세요"
$results['ja']->text; // "こんにちは"

Translator::via('google')->translate('Hello', 'ko');

// Per-call options
Translator::via('openai')->translate('Hello', 'ko', 'en', [
    'temperature'   => 0.0,
    'system_prompt' => 'Translate from {source} into {target}. Keep it formal.',
]);

$translator = Translator::build([
    'driver' => 'openai',
    'base_url' => 'https://api.deepseek.com/v1',
    'key'   => $tenant->deepseek_key,
    'model' => 'deepseek-v4-flash',
]);

$translator->translate('Hello', 'ko');

use Minhyung\LaravelTranslator\Contracts\Translator;

public function __construct(private Translator $translator) {}

use Minhyung\LaravelTranslator\Facades\Translator;

$detection = Translator::via('google')->detect('Bonjour le monde');

$detection->language;   // "fr"
$detection->confidence; // 0.98 (0–1, when the provider reports it)
(string) $detection;    // "fr"

foreach (Translator::via('deepl')->languages() as $language) {
    $language->code;   // "EN-US"
    $language->name;   // "English (American)"
    $language->source; // can be a source language?
    $language->target; // can be a target language?
}

use Minhyung\LaravelTranslator\Facades\Translator;

// Create one from a source-term => target-term map.
$glossary = Translator::via('deepl')->createGlossary(
    name: 'product-terms',
    sourceLang: 'en',
    targetLang: 'ko',
    entries: ['cookie' => '쿠키', 'cache' => '캐시'],
);

$glossary->id;          // provider identifier
$glossary->entryCount;  // 2
$glossary->targetLangs; // ['ko']  (Amazon terminologies may list several)
$glossary->ready;       // usable for translation yet?

Translator::via('deepl')->glossaries();              // list all
Translator::via('deepl')->glossary($glossary->id);   // fetch one
Translator::via('deepl')->glossaryEntries($id);      // ['cookie' => '쿠키', ...]
Translator::via('deepl')->deleteGlossary($id);

Translator::via('deepl')->translate('Clear the cache', 'ko', 'en', [
    'glossary' => $glossary->id,
]);

'openai' => [
    'driver' => 'openai',
    'key'    => env('OPENAI_API_KEY'),
    'model'  => 'gpt-5.4-mini',
    'retry'  => ['times' => 3, 'sleep' => 200], // or just: 'retry' => 3
],

// config/translator.php
'default' => 'safe',

'translators' => [
    'deepl'  => ['driver' => 'deepl',  'key' => env('DEEPL_AUTH_KEY')],
    'claude' => ['driver' => 'claude', 'key' => env('ANTHROPIC_API_KEY'), 'model' => 'claude-haiku-4-5'],

    'safe' => [
        'driver'      => 'fallback',
        'translators' => ['deepl', 'claude'],
    ],
],

Translator::translate('Hello', 'ko'); // if deepl fails, try claude

Translator::queue('Hello', 'ko', 'en');                 // default translator
Translator::via('deepl')->queue('Hello', 'ko');         // a specific one
Translator::via('deepl')->queueBatch(['Hello', 'Bye'], 'ko');

use Illuminate\Support\Facades\Queue;
use Minhyung\LaravelTranslator\Jobs\TranslateJob;

Queue::fake();
Translator::queue('Hello', 'ko');
Queue::assertPushed(TranslateJob::class);

use Illuminate\Support\Facades\Event;
use Minhyung\LaravelTranslator\Events\TranslationCompleted;

Event::listen(function (TranslationCompleted $event) {
    logger()->info("Translated via {$event->translator}: {$event->result->text}");
});

use Minhyung\LaravelTranslator\TranslatorManager;

app(TranslatorManager::class)->extend('papago', function ($container, $name, $config) {
    return new \App\Translation\PapagoDriver($config['key'], $name); // implements Contracts\Driver
});

// config/translator.php
'translators' => [
    'papago' => ['driver' => 'papago', 'key' => env('PAPAGO_KEY')],
],

use Minhyung\LaravelTranslator\Facades\Translator;

$fake = Translator::fake([
    'Hello' => '안녕하세요',           // map source => translation (unknown texts echo)
]);
// or: Translator::fake(fn (string $text, string $target) => "[$target] $text");

// ... exercise code that translates ...

$fake->assertTranslated('Hello');
$fake->assertTranslated('Hello', fn (array $r) => $r['target'] === 'ko'); // match a predicate
$fake->assertTranslatedTimes('Hello', 1);
$fake->assertNotTranslated('Goodbye');
$fake->assertNothingTranslated();
$fake->assertTranslatedCount(1);
bash
php artisan vendor:publish --tag=translator-config
bash
php artisan translator:translate "Hello, world!" ko
# 안녕하세요, 세상!

# pick a translator and source language
php artisan translator:translate "Hello" ko --via=claude --from=en

# full result (text, detected source, translator, ...) as JSON
php artisan translator:translate "Hello" ko --json
bash
php artisan translator:doctor

# also attempt a live translation through each translator
php artisan translator:doctor --ping