carlin / laravel-translate-drives
百度、阿里云翻译和谷歌翻译驱动程序包,开箱即用
v1.0.0
2024-07-20 09:07 UTC
Requires
- carlin/translate-drives: ^1.0
- laravel/framework: >=8
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