41 lines
1.3 KiB
PHP
41 lines
1.3 KiB
PHP
<?php
|
|
namespace app\queue\translation\service;
|
|
|
|
// use Webman\RedisQueue\Client;
|
|
use Webman\RedisQueue\Redis;
|
|
|
|
class TranslationService
|
|
{
|
|
|
|
// 配置
|
|
protected $config = [];
|
|
|
|
public function __construct()
|
|
{
|
|
$this->config = getConfig('/queue/translation/config/trans.php');
|
|
}
|
|
|
|
/**
|
|
* 异步排队所有语种的翻译任务
|
|
*
|
|
* @param string $entityType 实体名,如 'vehicle'
|
|
* @param int $entityId 主表 ID
|
|
* @param string $sourceLocale 源语种,如 'zh'
|
|
* @param array $sourceFields 源语种字段 ['name'=>…,'condition_desc'=>…]
|
|
* @param array $clientFields 前端已传翻译 ['en'=>[...], …]
|
|
*/
|
|
public function queueTranslations(string $entityType, int $entityId, string $sourceLocale, array $sourceFields, array $clientFields = []): void
|
|
{
|
|
foreach ($this->config['locales'] as $locale) {
|
|
$payload = [
|
|
'entityType' => $entityType,
|
|
'entityId' => $entityId,
|
|
'locale' => $locale,
|
|
'sourceLocale' => $sourceLocale,
|
|
'sourceFields' => $sourceFields,
|
|
'clientFields' => $clientFields[$locale] ?? [],
|
|
];
|
|
Redis::send('transTask', $payload);
|
|
}
|
|
}
|
|
} |