carlin/translate-drives

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

v1.0.0 2024-07-20 08:00 UTC

This package is auto-updated.

Last update: 2024-09-20 08:40:42 UTC


README

简体中文 🇨🇳

翻译驱动包使用教程

环境要求

  • PHP >= 8.0

安装

composer require carlin/translate-drives

使用方法

百度

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

$configs = [
    'drives' => [
        Provider::BAIDU => [
            'app_id'  => 'xxx',
            'app_key' => 'xxx',
        ],
    ],
];
$manager = new TranslateManager($configs);
$query = '我喜欢你的冷态度 :test';
$res = $manager->driver(Provider::BAIDU)->translate($query, LangCode::EN);

//Simpler calling
$res = TranslateManager::baidu($you_config = [])->translate($query, LangCode::EN);

$res->getDst(); //translate text
$res->getSrc(); //origin text
$res->getOriginal(); //original result

谷歌

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

$configs = [
    'drives' => [
        Provider::GOOGLE => [],
    ],
];
$manager = new TranslateManager($configs);
$query = '我喜欢你的冷态度 :test';
$res = $manager->driver(Provider::GOOGLE)->translate($query, LangCode::EN);

//Simpler calling
$res = TranslateManager::google()->translate($query, LangCode::EN);

阿里云

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

$configs = [
    'drives' => [
        Provider::ALIBABA_CLOUD => [
            'app_id'  => 'xxx',
            'app_key' => 'xxx',
        ],
    ],
];
$manager = new TranslateManager($configs);
$query = '我喜欢你的冷态度 :test';
$res = $manager->driver(Provider::ALIBABA_CLOUD)->translate($query, LangCode::EN);

//Simpler calling
$res = TranslateManager::alibabaCloud($you_config = [])->translate($query, LangCode::EN);

自定义驱动

use Carlin\TranslateDrives\Providers\AbstractProvider;
use Carlin\TranslateDrives\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 [

        ];
    }
}

$configs = [
    'drives' => [
        'my_driver' => [
            'app_id'  => 'xxx',
            'app_key' => 'xxx',
        ],
    ],
];

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

保留参数

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

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

use Carlin\TranslateDrives\TranslateManager;
use Carlin\TranslateDrives\Supports\LangCode;

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

或使用自定义正则表达式

use Carlin\TranslateDrives\TranslateManager;
use Carlin\TranslateDrives\Supports\LangCode;


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

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