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.