use ElSchneider\MagicTranslator\Events\BeforeEntryTranslation;
Event::listen(BeforeEntryTranslation::class, function ($event) {
// $event->entry — the source entry
// $event->targetSite — target locale handle
// $event->units — mutable array of TranslationUnit objects
});
use ElSchneider\MagicTranslator\Events\AfterEntryTranslation;
Event::listen(AfterEntryTranslation::class, function ($event) {
// $event->entry — the source entry
// $event->targetSite — target locale handle
// $event->translatedData — mutable array of translated entry data
});
use ElSchneider\MagicTranslator\Contracts\TranslationService;
use ElSchneider\MagicTranslator\Data\TranslationUnit;
class GoogleTranslateService implements TranslationService
{
public function translate(array $units, string $sourceLocale, string $targetLocale): array
{
// $units is an array of TranslationUnit objects
// Return the same array with translatedText set on each unit
return array_map(fn (TranslationUnit $unit) => $unit->withTranslation(
$this->callGoogleApi($unit->text, $sourceLocale, $targetLocale)
), $units);
}
}