Compare commits

..

2 Commits

Author SHA1 Message Date
23c4458d9b Merge pull request 'Version 1.2.0' (#4) from develop into main
Reviewed-on: #4
2024-12-10 22:00:04 +05:00
7e05777385
Add LogDriver for translation with configuration support.
Introduced a new LogDriver for logging translation operations. Updated the README and configuration file to include support for the LogDriver and its associated limits. This feature enables the use of a logging-based translation driver for testing and debugging purposes.
2024-12-10 21:54:11 +05:00
3 changed files with 75 additions and 1 deletions

View File

@ -5,7 +5,10 @@
# Параметры в **.env**: # Параметры в **.env**:
### TRANSLATE_SERVICE ### TRANSLATE_SERVICE
По умолчанию через какой сервис обращаться за переводом. На данный момент доступен только один сервис - **yandex**. По умолчанию через какой сервис обращаться за переводом. На данный момент доступен только сервисы - **yandex**, **log**.
**yandex** - https://yandex.cloud/ru/services/translate<br>
**log** - для проверки и внедрения в свой продукт.
### TRANSLATE_YANDEX_FOLDER_ID ### TRANSLATE_YANDEX_FOLDER_ID
ID folder. Код можно увидеть в адресе console.yandex.cloud/folders/**{тут будет код}**. ID folder. Код можно увидеть в адресе console.yandex.cloud/folders/**{тут будет код}**.
@ -23,6 +26,16 @@ ID folder. Код можно увидеть в адресе console.yandex.cloud
### TRANSLATE_YANDEX_LIMIT_MAX_SYMBOLS ### TRANSLATE_YANDEX_LIMIT_MAX_SYMBOLS
Максимальное количество символов за один запрос. Если превышает, то делится на две части и делает по очереди два запроса. По умолчанию стоит 9000 символов. **На данный момент работает только перевод через систему очередей.** Максимальное количество символов за один запрос. Если превышает, то делится на две части и делает по очереди два запроса. По умолчанию стоит 9000 символов. **На данный момент работает только перевод через систему очередей.**
### TRANSLATE_LOG_LIMIT_MAX_REQUEST
Максимальное количество запросов в период, который указан в TRANSLATE_YANDEX_LIMIT_RATE_SECONDS. По умолчанию 20 запросов в секунду. **На данный момент работает только перевод через систему очередей.**
### TRANSLATE_LOG_LIMIT_RATE_SECONDS
Период в котором считается максимальное количество запросов. По умолчанию стоит секунда. **На данный момент работает только перевод через систему очередей.**
### TRANSLATE_LOG_LIMIT_MAX_SYMBOLS
Максимальное количество символов за один запрос. Если превышает, то делится на две части и делает по очереди два запроса. По умолчанию стоит 9000 символов. **На данный момент работает только перевод через систему очередей.**
# Методы # Методы
### Перевести обычный текст ### Перевести обычный текст
> \KorElf\TranslateLaravel\Facades\Translate::translateText( > \KorElf\TranslateLaravel\Facades\Translate::translateText(

View File

@ -35,5 +35,16 @@ return [
], ],
], ],
], ],
'log' => [
'driver' => '\KorElf\TranslateLaravel\Translate\LogDriver',
'config' => [
'limit' => [
'max_request' => (int) env('TRANSLATE_LOG_LIMIT_MAX_REQUEST', 20),
'rate_seconds' => (int) env('TRANSLATE_LOG_LIMIT_RATE_SECONDS', 1),
'max_symbols' => (int) env('TRANSLATE_LOG_LIMIT_MAX_SYMBOLS', 9000),
],
],
],
], ],
]; ];

View File

@ -0,0 +1,50 @@
<?php declare(strict_types=1);
namespace KorElf\TranslateLaravel\Translate;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Support\Facades\Log;
use KorElf\TranslateLaravel\Contracts\Translate;
use KorElf\TranslateLaravel\DTO\Languages;
final class LogDriver implements Translate
{
/**
* @throws BindingResolutionException
*/
public static function init(Application $app, array $config = []): Translate
{
return new self(
$app->make(Log::class),
);
}
public function __construct(
private readonly Log $log
) { }
public function translateText(array|string $text, string $targetLanguageCode, ?string $sourceLanguageCode = null): string|array
{
$this->log::info('Translate text', ['text' => $text, 'targetLanguageCode' => $targetLanguageCode, 'sourceLanguageCode' => $sourceLanguageCode]);
return $text;
}
public function translateHtml(array|string $text, string $targetLanguageCode, ?string $sourceLanguageCode = null): string|array
{
$this->log::info('Translate html', ['text' => $text, 'targetLanguageCode' => $targetLanguageCode, 'sourceLanguageCode' => $sourceLanguageCode]);
return $text;
}
public function listLanguages(): Languages
{
$languages = new Languages();
$languages->add('ru', 'Russian');
$languages->add('en', 'English');
$languages->add('de', 'Deutsch');
return $languages;
}
}