6 Commits
1.1.0 ... 1.2.1

Author SHA1 Message Date
083f7576ee Merge pull request 'Version 1.2.1' (#5) from develop into main
Reviewed-on: #5
2024-12-10 22:46:42 +05:00
5abddfbd57 Add .gitattributes file for export-ignore rules.
This ensures that the .git directory and .gitignore file are excluded when exporting the repository, improving distribution cleanliness. Including this file standardizes export behavior across clones.
2024-12-10 22:42:30 +05:00
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
2c026fd5ed Merge pull request 'Version 1.1.1' (#3) from develop into main
Reviewed-on: #3
2024-10-11 01:15:10 +05:00
4fdf7fd6f9 Relax PHP extension version constraints in composer.json.
Updated "ext-libxml" and "ext-dom" dependencies to accept any version. This change ensures broader compatibility across different environments without strictly requiring specific versions for these extensions.
2024-10-11 01:11:19 +05:00
5 changed files with 79 additions and 3 deletions

2
.gitattributes vendored Normal file
View File

@@ -0,0 +1,2 @@
.git export-ignore
.gitignore export-ignore

View File

@@ -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(

View File

@@ -22,8 +22,8 @@
"illuminate/support": "^10.0|^11.0",
"guzzlehttp/guzzle": "^7.0.1",
"web-token/jwt-framework": "^3.0",
"ext-libxml": "^2.11.7",
"ext-dom": "^2.11.7"
"ext-libxml": "*",
"ext-dom": "*"
},
"extra": {
"laravel": {

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;
}
}