marshmallow / translated-com
此包为您提供了轻松将 Laravel 应用程序连接到 Translated.com 的功能。
Requires
- php: ^7.4|^8.0
README
Laravel Translated.com
此包为您提供了轻松将 Laravel 应用程序连接到 Translated.com 的功能。
安装
Composer
您可以通过 Composer 安装此包
composer require marshmallow/translated-com php artisan migrate php artisan marshmallow:resource TranslatedComOrder TranslatedCom php artisan marshmallow:resource TranslatedComConfirmation TranslatedCom php artisan marshmallow:resource TranslatedComResult TranslatedCom
下一步;发布配置
php artisan vendor:publish --provider="Marshmallow\\TranslatedCom\\TranslatedComServiceProvider"
请确保 Translated.com 可以对处理响应的路由进行 POST 请求,通过将其添加到 VerifyCsrfToken
中间件的 $except
数组中来实现。
protected $except = [ '/translated-com/callback' ];
资源使用
您的模型
您可以从您的模型在 Translated.com 中创建订单。您需要为此准备您的模型。您需要确保此包知道您的模型上哪些列应该进行翻译以及列中的数据类型。此外,您还需要实现 TranslatedCom
特性。
use Marshmallow\TranslatedCom\Objects\DataFormat; use Marshmallow\TranslatedCom\Traits\TranslatedCom; class Page extends Model { use TranslatedCom; protected $translated_com = [ 'name' => DataFormat::PLAINTEXT, 'layout' => DataFormat::FLEX, 'content' => DataFormat::HTML, ]; }
一旦您的模型实现准备就绪,您就可以像下面的示例一样获取此模型并创建订单。
$page = Page::first(); $page->createTranslationOrders();
您也可以通过调用作为数组的设置方法来覆盖配置中的默认值。请参阅下面的示例
$page->createTranslationOrders([ 'setSourceLanguage' => ['DE'], 'setTargetLanguage' => ['ES'], 'setEndpoint' => ['https://marshmallow.dev'], 'setOutputFormat' => [OutputFormat::JSON], 'setUsername' => ['stef@marshmallow.dev'], 'setPassword' => ['mr-mallow-2021'], 'setSandbox' => [true], 'setJobType' => [JobType::PROFESSIONAL], 'setProjectName' => ['Marshmallow'], 'setDataFormat' => [DataFormat::PLAINTEXT], ]);
灵活
如果您正在使用灵活包,您需要将上面的相同逻辑添加到您的灵活布局中。请确保您在模型实现中使用 DataFormat::FLEX
,这样我们就可以知道我们需要获取灵活信息。
use Marshmallow\TranslatedCom\Objects\DataFormat; use Marshmallow\TranslatedCom\Traits\TranslatedCom; class ContentWithLeftTitleLayout extends MarshmallowLayout { use TranslatedCom; protected $translated_com = [ 'title' => DataFormat::PLAINTEXT, 'content' => DataFormat::HTML, ]; }
手动使用
获取报价
首先,您创建一个新的报价。在 Translated.com 开始翻译您的文本之前,您必须确认此报价。此请求将返回 API 的完整响应。这是出于以下原因:您可能没有在配置中启用数据库选项。由于您获得了完整的响应,您可以对其进行任何操作。
use Marshmallow\TranslatedCom\Facades\TranslatedCom; /** * The response of the Translated.com api * * @var \Illuminate\Http\Client\Response */ $response = TranslatedCom::qoute('Test string')->run();
接受报价
一旦完成报价,您需要确认/接受它以便进行翻译。使用以下命令来完成此操作。此请求将返回 API 的完整响应。这是出于以下原因:您可能没有在配置中启用数据库选项。由于您获得了完整的响应,您可以对其进行任何操作。
use Marshmallow\TranslatedCom\Facades\TranslatedCom; /** * The response of the Translated.com api * * @var \Illuminate\Http\Client\Response */ $response = TranslatedCom::confirm($pid = 10000)->run();
获取翻译
一旦 Translated.com 翻译了您的文本,它们将向您的服务器发送响应。默认情况下,这将发送到您的应用程序的 /translated-com/callback
URL,但这可以在您的配置文件中更改。如果您要更改此并自己处理响应,您应该使用以下逻辑来实现。
Translated.com 将向配置文件中提供的 URL 发送 POST 请求,并包含以下数据
{ "text": "VGVzdCBzdHJpbmc=", "pid": "36078716", "t": "Dutch" }
事件
当收到翻译时,此包将触发 TranslationRecieved
事件。您可以监听此事件并在翻译完成时执行任何所需的操作。在您的 EventServiceProvider
中监听此事件。
use Marshmallow\TranslatedCom\Events\TranslationRecieved; protected $listen = [ //... TranslationRecieved::class => [ // Your listeners ], ];
您将有以下公共变量可以访问。
namespace App\Listeners; use Marshmallow\TranslatedCom\Events\TranslationRecieved; class TranslatedComSandboxListener { public function handle(TranslationRecieved $event) { /** * The order that was send to Translated.com * * @var Marshmallow\TranslatedCom\Models\Order */ $event->order; /** * The confirmation that was send to Translated.com * * @var Marshmallow\TranslatedCom\Models\Confirmation */ $event->confirmation; /** * The result that was received from Translated.com * * @var Marshmallow\TranslatedCom\Models\Result */ $event->result; } }
测试运行
如果您想创建一个测试运行来验证您的回调是否正常工作,可以使用以下命令。
php artisan translated-com:test
方法
以下是我们列出的所有公共方法,您可以使用这些方法向翻译请求添加更多数据或覆盖配置文件的行为。
报价
以下是你可以使用的方法来丰富你的翻译数据。当你创建一个报价时,大多数这些字段都是通过配置文件填充的,所以请参考配置文件以查看是否可以直接使用它。
$quote->setText(string $text); $quote->setSourceLanguage(string $source_language); $quote->setTargetLanguage(string $target_language); $quote->setTargetLanguages(array $target_language); $quote->setProjectName(string $project_name); $quote->setJobType(string $job_type); $quote->setWordCount(int $word_count); $quote->setDataFormat(string $data_format); $quote->setTranslationMemory(string $translation_memory); $quote->setEndpoint(string $endpoint = null); $quote->setSubject(string $subject); $quote->setInstructions(string $instruction); $quote->setUsername(string $username); $quote->setPassword(string $password); $quote->setOutputFormat(string $output_format = null);
确认
以下列出了您可以使用的丰富翻译数据的方法。在创建确认信息时,您需要将它们添加到构造函数中,这样这些方法将默认运行。
$confirm->setProjectIdentifier(int $project_identifier); $confirm->setConfirmationFlag(bool $confirmation_flag);
更新日志
请参阅更新日志获取最近更改的更多信息。
安全
如果您发现任何与安全相关的问题,请通过电子邮件stef@marshmallow.dev联系,而不是使用问题跟踪器。
鸣谢
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。