artem-alekseev / yandex-translate
Yandex Translate
v1.0.3
2025-02-05 13:07 UTC
Requires
- php: ^8.1
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
- spatie/laravel-translatable: ^6.10
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.64
README
YandexTranslate — это библиотека для взаимодействия с API Яндекс.Переводчика, позволяющая легко интегрировать возможности машинного перевода в ваши приложения.
Возможности
- Поддержка множества языков
- Перевод текста
- Автоматический перевод моделей (Использует пакет spatie/laravel-translatable)
Установка
Необходимые зависимости
PHP 8.1+
Laravel 9+
MySQL 5.7 или выше
Установите библиотеку с помощью Composer:
composer require artem-alekseev/yandex-translate
php artisan vendor:publish --tag=yandex-translate
Сконфигурируйте .env файл
YANDEX_TRANSLATE_API_KEY=Ваш API ключ из Yandex Cloud
YANDEX_TRANSLATE_LOCALES=ru,en,zh (Необходимо для автоматичесткого перевода)
YANDEX_TRANSLATE_API_URL=https://translate... (Не обязательный)
YANDEX_TRANSLATE_FOLDER_ID=dg3g4th56wwr6hs6r (Не обязательный)
YANDEX_TRANSLATE_FORMAT=FORMAT_UNSPECIFIED (Не обязательный)
Использование
Для использования автоматического перевода
В вашу модель необходимо добавить трейт YandexTranslate\HasTranslations
и указать какие поля необходимо перевести
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use YandexTranslate\HasTranslations;
class Example extends Model
{
use HasTranslations;
protected $fillable = [
'title',
'description',
];
/**
* Поля которые будут автоматически переведены при
* сохранении или обновлении сущности
*/
public $translatable = [
'title',
'description',
];
}
Перевод запускатся в очередях (Если они у вас не в режиме sync) для запуска очередей используйте команду
php artisan queue:work --queue=translate
Простое использование
<?php
namespace App\Http\Controllers;
use YandexTranslate\Enums\FormatEnum;
use YandexTranslate\Enums\LanguageEnum;
use YandexTranslate\Facades\Translatable;
class ExampleController extends Controller
{
public function index()
{
$text = Translatable::enableSpellChecker() //Не обязательный
->setFormat(FormatEnum::HTML) //Не обязательный
->setSourceLanguage(LanguageEnum::RUSSIAN) //Не обязательный
->translate(LanguageEnum::ENGLISH, 'Переведи мне этот текст');
return response()->json(['data' => $text]);
}
}
License
The MIT License (MIT). Please see License File for more information.