PHPackages                             ferdiunal/laravel-translator - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Localization &amp; i18n](/categories/localization)
4. /
5. ferdiunal/laravel-translator

ActiveLibrary[Localization &amp; i18n](/categories/localization)

ferdiunal/laravel-translator
============================

This package allows you to use freely available online translation tools in your project.

v1.3.0(1mo ago)6116[5 PRs](https://github.com/ferdiunal/laravel-translator/pulls)MITPHPPHP ^8.2CI passing

Since Sep 24Pushed 1mo ago1 watchersCompare

[ Source](https://github.com/ferdiunal/laravel-translator)[ Packagist](https://packagist.org/packages/ferdiunal/laravel-translator)[ Docs](https://github.com/ferdiunal/laravel-translator)[ Fund](https://buymeacoffee.com/ferdiunal)[ GitHub Sponsors](https://github.com/sponsors/ferdiunal)[ RSS](/packages/ferdiunal-laravel-translator/feed)WikiDiscussions main Synced today

READMEChangelog (9)Dependencies (35)Versions (16)Used By (0)

[![Laravel Translator](./art/logo.png)](./art/logo.png)

Laravel Translator
==================

[](#laravel-translator)

English | [Türkçe](README.TR.md)

A type-safe and extensible translation package for Laravel applications with multiple provider support.

Supported providers:

- Google Translate
- Bing Translator
- DeepL
- MyMemory
- NLP Cloud
- OpenAI / OpenAI-compatible custom base URLs

Requirements
------------

[](#requirements)

- PHP `^8.2` — Laravel 13 combinations require PHP `^8.3` through Laravel's framework constraints.
- Laravel 10, 11, 12, or 13.

Installation
------------

[](#installation)

```
composer require ferdiunal/laravel-translator
```

Publish the configuration file:

```
php artisan vendor:publish --provider="Ferdiunal\LaravelTranslator\LaravelTranslatorServiceProvider"
```

Basic usage
-----------

[](#basic-usage)

```
use Ferdiunal\LaravelTranslator\LaravelTranslator;

$translated = LaravelTranslator::translate(
    translator: 'google',
    source: 'en',
    target: 'tr',
    text: 'Hello World',
);
```

Facade:

```
use Ferdiunal\LaravelTranslator\Facades\LaravelTranslator;

$translated = LaravelTranslator::translate('openai', 'en', 'tr', 'Hello World');
```

Helper:

```
$translated = translator('deepl', 'en', 'tr', 'Hello World');
```

Resolving a provider instance:

```
$provider = LaravelTranslator::translator('mymemory');
$translated = $provider->run('en', 'tr', 'Hello :name');
```

`run()` preserves Laravel placeholders. Placeholders such as `:name` and `:count` are not translated, and characters such as `@` inside email addresses are not corrupted.

Provider keys and aliases
-------------------------

[](#provider-keys-and-aliases)

Canonical provider keys:

ProviderCanonical keyLegacy/compatible aliasGoogle`google`-Bing`bing`-DeepL`deepl`-MyMemory`mymemory``myMemory`NLP Cloud`nlpcloud``nlpCloud`OpenAI`openai`-Acronym and case differences are no longer resolved through runtime class-name guessing. Provider resolution uses an explicit registry, so names such as `OpenAI`, `DeepL`, `NLPCloud`, and `MyMemory` are not fragile on Linux or PSR-4 case-sensitive environments.

Get the list of active providers:

```
$providers = LaravelTranslator::providers();
```

Configuration
-------------

[](#configuration)

The published `config/translator.php` file contains these fields in summary:

```
return [
    'fallback' => [
        'throw' => env('TRANSLATOR_THROW_ON_FAILURE', false),
    ],

    'http' => [
        'timeout' => (int) env('TRANSLATOR_HTTP_TIMEOUT', 10),
        'connect_timeout' => (int) env('TRANSLATOR_HTTP_CONNECT_TIMEOUT', 5),
        'retry_times' => (int) env('TRANSLATOR_HTTP_RETRY_TIMES', 1),
        'retry_sleep_ms' => (int) env('TRANSLATOR_HTTP_RETRY_SLEEP_MS', 100),
    ],

    'providers' => [
        // Example for disabling a built-in provider:
        // 'openai' => ['enabled' => false],
    ],

    'deepl' => [
        'api_key' => env('DEEPL_API_KEY'),
    ],

    'nlpcloud' => [
        'api_key' => env('NLPCLOUD_API_KEY'),
        'model' => env('NLPCLOUD_MODEL', 'nllb-200-3-3b'),
    ],

    'openai' => [
        'api_key' => env('OPENAI_API_KEY'),
        'base_url' => env('OPENAI_BASE_URL', 'https://api.openai.com/v1'),
        'model' => env('OPENAI_MODEL', 'gpt-4o-mini'),
    ],
];
```

The package does not ship a default secret or API key. API keys must be provided through `.env`.

```
DEEPL_API_KEY=your-deepl-api-key
NLPCLOUD_API_KEY=your-nlpcloud-api-key
NLPCLOUD_MODEL=nllb-200-3-3b
OPENAI_API_KEY=your-openai-api-key
OPENAI_BASE_URL=https://api.openai.com/v1
OPENAI_MODEL=gpt-4o-mini
```

Adding a custom provider
------------------------

[](#adding-a-custom-provider)

Custom provider classes must extend `Ferdiunal\LaravelTranslator\Translators\Translator`.

```
