58 lines
1.6 KiB
PHP
58 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Modules\Core\Localization;
|
|
|
|
use Illuminate\Support\Facades\Event;
|
|
use Modules\Core\Localization\Events\TranslationCreated;
|
|
use Modules\Core\Localization\Events\TranslationDeleted;
|
|
use Modules\Core\Localization\Events\TranslationUpdated;
|
|
use Spatie\TranslationLoader\LanguageLine;
|
|
|
|
class TranslationService
|
|
{
|
|
public function create(string $group, string $key, array $text): LanguageLine
|
|
{
|
|
$languageLine = LanguageLine::create([
|
|
'group' => $group,
|
|
'key' => $key,
|
|
'text' => $text,
|
|
]);
|
|
|
|
Event::dispatch(new TranslationCreated($languageLine));
|
|
|
|
return $languageLine;
|
|
}
|
|
|
|
public function update(LanguageLine $languageLine, string $group, string $key, array $text): LanguageLine
|
|
{
|
|
// Callers (e.g. Filament's EditRecord) may hand us a model instance
|
|
// already filled with the new form values in memory — refresh from the
|
|
// database first so $old reflects what's actually persisted, not what's
|
|
// about to be written.
|
|
$persisted = $languageLine->fresh();
|
|
|
|
$old = [
|
|
'group' => $persisted->group,
|
|
'key' => $persisted->key,
|
|
'text' => $persisted->text,
|
|
];
|
|
|
|
$languageLine->update([
|
|
'group' => $group,
|
|
'key' => $key,
|
|
'text' => $text,
|
|
]);
|
|
|
|
Event::dispatch(new TranslationUpdated($languageLine, $old));
|
|
|
|
return $languageLine;
|
|
}
|
|
|
|
public function delete(LanguageLine $languageLine): void
|
|
{
|
|
$languageLine->delete();
|
|
|
|
Event::dispatch(new TranslationDeleted($languageLine));
|
|
}
|
|
}
|