ferdiunal/laravel-translator
Composer 安装命令:
composer require ferdiunal/laravel-translator
包简介
This package allows you to use freely available online translation tools in your project.
关键字:
README 文档
README
Laravel Translator
English | Türkçe
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
- PHP
^8.2— Laravel 13 combinations require PHP^8.3through Laravel's framework constraints. - Laravel 10, 11, 12, or 13.
Installation
composer require ferdiunal/laravel-translator
Publish the configuration file:
php artisan vendor:publish --provider="Ferdiunal\LaravelTranslator\LaravelTranslatorServiceProvider"
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
Canonical provider keys:
| Provider | Canonical key | Legacy/compatible alias |
|---|---|---|
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
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
Custom provider classes must extend Ferdiunal\LaravelTranslator\Translators\Translator.
<?php declare(strict_types=1); namespace App\Translators; use Ferdiunal\LaravelTranslator\Translators\Translator; final class AcmeTranslator extends Translator { public function handle(string $source, string $target, string $text): string { return "[$source>$target] $text"; } public function icon(): string { return 'https://example.com/icon.svg'; } public function key(): string { return 'acme'; } public function title(): string { return 'Acme'; } /** @return array{icon: string, key: string, title: string} */ public function toArray(): array { return [ 'icon' => $this->icon(), 'key' => $this->key(), 'title' => $this->title(), ]; } }
config/translator.php:
'providers' => [ 'acme' => [ 'driver' => App\Translators\AcmeTranslator::class, 'enabled' => true, 'title' => 'Acme', 'icon' => 'https://example.com/icon.svg', 'aliases' => ['legacyAcme'], ], ],
Usage:
$translated = LaravelTranslator::translate('acme', 'en', 'tr', 'Hello');
Disabling or overriding providers
Disable a built-in provider:
'providers' => [ 'openai' => [ 'enabled' => false, ], ],
Override built-in provider metadata or driver:
'providers' => [ 'openai' => [ 'driver' => App\Translators\CustomOpenAITranslator::class, 'title' => 'Company OpenAI Proxy', 'default_base_url' => 'https://ai.example.com/v1', 'enabled' => true, ], ],
Invalid custom provider classes throw InvalidTranslatorProviderException; unknown or disabled providers throw UnsupportedTranslatorException.
Using OpenAI-compatible endpoints
The OpenAI provider supports OpenAI-compatible endpoints through OPENAI_BASE_URL:
OPENAI_API_KEY=your-api-key OPENAI_BASE_URL=https://openrouter.ai/api/v1 OPENAI_MODEL=openai/gpt-4o-mini
Tests and quality gates
composer validate --strict
composer format:check
composer analyse
composer test -- --ci
Single command:
composer ci
The CI matrix is designed to cover PHP 8.2/8.3/8.4/8.5 and Laravel 10/11/12/13 combinations.
License
The MIT License (MIT). Please see License File for more information.
ferdiunal/laravel-translator 适用场景与选型建议
ferdiunal/laravel-translator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 110 次下载、GitHub Stars 达 6, 最近一次更新时间为 2025 年 03 月 24 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「google-translate」 「laravel-translator」 「ferdiunal」 「deepl-translate」 「nlpcloud-translate」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 ferdiunal/laravel-translator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 ferdiunal/laravel-translator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 ferdiunal/laravel-translator 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
A Translation package for Laravel 9 with database and cache support
A Translation package for Laravel with database and cache support
A Translation package for Laravel 9 with database and cache support. Fork of the package Waavi Translation.
A Translation package for Laravel 5 with database and cache support
Translations Manager extension to use Google translation crawling to auto translate your __(), trans() fn
Fork of waavi/translation package with fixes. A Translation package for Laravel 5 with database and cache support
统计信息
- 总下载量: 110
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 6
- 点击次数: 31
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2025-03-24
