Merge pull request 'Version 1.2.0' (#4) from develop into main
Reviewed-on: #4
This commit is contained in:
commit
23c4458d9b
15
README.md
15
README.md
@ -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(
|
||||||
|
@ -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),
|
||||||
|
],
|
||||||
|
],
|
||||||
|
],
|
||||||
],
|
],
|
||||||
];
|
];
|
||||||
|
50
src/Translate/LogDriver.php
Normal file
50
src/Translate/LogDriver.php
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user