Version 1.2.0 #4
							
								
								
									
										15
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								README.md
									
									
									
									
									
								
							@@ -5,7 +5,10 @@
 | 
			
		||||
# Параметры в **.env**:
 | 
			
		||||
 | 
			
		||||
### TRANSLATE_SERVICE
 | 
			
		||||
По умолчанию через какой сервис обращаться за переводом. На данный момент доступен только один сервис - **yandex**.
 | 
			
		||||
По умолчанию через какой сервис обращаться за переводом. На данный момент доступен только сервисы - **yandex**, **log**.
 | 
			
		||||
 | 
			
		||||
**yandex** - https://yandex.cloud/ru/services/translate<br>
 | 
			
		||||
**log** - для проверки и внедрения в свой продукт.
 | 
			
		||||
 | 
			
		||||
### TRANSLATE_YANDEX_FOLDER_ID
 | 
			
		||||
ID folder. Код можно увидеть в адресе console.yandex.cloud/folders/**{тут будет код}**.
 | 
			
		||||
@@ -23,6 +26,16 @@ ID folder. Код можно увидеть в адресе console.yandex.cloud
 | 
			
		||||
### TRANSLATE_YANDEX_LIMIT_MAX_SYMBOLS
 | 
			
		||||
Максимальное количество символов за один запрос. Если превышает, то делится на две части и делает по очереди два запроса. По умолчанию стоит 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(
 | 
			
		||||
 
 | 
			
		||||
@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user