AtakanAtici config içinde bu amaçla sabit kullanmak pek uygun değil. Böyle durumlarda orjinal sütunu kullanmadan farklı isimde accessor kullanabilirsiniz, mesela şöyle yapabilirsiniz:
protected function statusName(): Attribute
{
return Attribute::make(
get: function(string $value, array $attributes) {
return $attributes['status'] === 1
? __('Active')
: __('Passive');
}
);
}
tr.json dosyasına Active ve Passive değerlerini girince $user->status_name
yaptığınızda size dile göre karşılığını verir.
API resources kullanıyorsanız resource içinde yine aynı şekilde çeviri yapabilirsiniz.
class UserResource extends JsonResource
{
public function toArray(Request $request): array
{
return [
'id' => $this->id,
'status' => $this->status,
'status_name' => $this->status === 1 // ya da accessor ile birlikte kullandığınızda $this->status_name
? __('Active')
: __('Passive'),
];
}
}
Diğer bir yol ise enum ve enum casting kullanmak:
enum UserStatus: int
{
case Active = 1;
case Passive = 0;
public function label(): string
{
return match($this) {
self::Active => __('Active'),
self::Passive => __('Passive'),
};
}
}
protected $casts = [
'status' => UserStatus::class,
];
$user->status->name; // Active
$user->status->value; // 1
$user->status->label(); // Aktif