carlin/laravel-translate-drives

百度、阿里云翻译和谷歌翻译驱动程序包,开箱即用

v1.0.0 2024-07-20 09:07 UTC

This package is auto-updated.

Last update: 2024-09-20 09:28:29 UTC


README

简体中文 🇨🇳

翻译驱动程序包使用教程

环境要求

  • PHP >= 8.0

安装

composer require carlin/laravel-translate-drives

发布配置

php artisan vendor:publish --provider="Carlin\LaravelTranslateDrives\TranslateDrivesServiceProvider"

使用

百度

use Carlin\LaravelTranslateDrives\Facades\TranslateManager;

$query = '我喜欢你的冷态度 :test';
$res = TranslateManager::baidu()->translate($query, LangCode::EN);
$res->getDst(); //translate text
$res->getSrc(); //origin text
$res->getOriginal(); //original result

//Custom configuration
$res = TranslateManager::baidu(['app_id'=>'', 'app_key'=>''])->translate($query, LangCode::EN);

谷歌

use Carlin\LaravelTranslateDrives\Facades\TranslateManager;

$query = '我喜欢你的冷态度 :test';
$res = TranslateManager::google()->translate($query, LangCode::EN);

阿里云

use Carlin\LaravelTranslateDrives\Facades\TranslateManager;

$query = '我喜欢你的冷态度 :test';
$res = TranslateManager::alibabaCloud()->translate($query, LangCode::EN);

//Custom configuration
$res = TranslateManager::alibabaCloud(['app_id'=>'', 'app_key'=>''])->translate($query, LangCode::EN);

自定义驱动

use Carlin\TranslateDrives\Providers\AbstractProvider;
use Carlin\LaravelTranslateDrives\Facades\TranslateManager;
class MyTranslateDriver extends AbstractProvider
{
    public function __construct(?string $app_id = null, ?string $app_key = null, array $config = [])
    {
        parent::__construct($app_id, $app_key, $config);
        
        //you code
    }

    protected function handlerTranslate(string $query, string $to = LangCode::EN, string $from = LangCode::AUTO): Translate
    {
        //you translation code
        return new Translate([
            'src'=>'',
            'dst'=>'',
        ]);
    }
    protected function mapTranslateResult(array $translateResult): array
    {
        //you translate Result code
        return [

        ];
    }
}

$query = '我喜欢你的冷态度 :test';
$res = TranslateManager::extend('my_driver', function ($allConfig) {
    $config = $allConfig['drives']['my_driver'] ?? [];
    //you configuration code
    return new MyTranslateDriver(config:$config);
})->driver('my_driver')->translate($query);

保留参数

preserveParameters() 方法允许你在进行翻译时保留字符串中的某些参数。这在处理本地化文件或模板引擎时非常有用,其中需要排除特定的占位符以进行翻译。

默认正则是 /:(\w+)/,它涵盖了以 : 开头的参数。这适用于翻译 Laravel 和其他框架的语言文件。您也可以传递自定义正则表达式来修改参数语法。

use Carlin\LaravelTranslateDrives\Facades\TranslateManager;
use Carlin\TranslateDrives\Supports\Provider;
use Carlin\TranslateDrives\Supports\LangCode;

$query = '我喜欢你的冷态度 :test';
$res = TranslateManager::google()->preserveParameters()->translate($query, LangCode::EN); //I like your cold attitude :test

或使用自定义正则表达式

use Carlin\LaravelTranslateDrives\Facades\TranslateManager;
use Carlin\TranslateDrives\Supports\Provider;
use Carlin\TranslateDrives\Supports\LangCode;

$query = '我喜欢你的冷态度 {{test}}';
$res = TranslateManager::google()->preserveParameters('/\{\{([^}]+)\}\}/')->translate($query, LangCode::EN); //I like your cold attitude :test

如果您有更好的翻译驱动程序,请随时提交 PR