ferdiunal/laravel-translator 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

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

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.3 through 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 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 我们能提供哪些服务?
定制开发 / 二次开发

基于 ferdiunal/laravel-translator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 110
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 6
  • 点击次数: 31
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 6
  • Watchers: 1
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2025-03-24