1. Создайте scope для модели Locale аля
public function scopeOfLocale(Builder $builder, $locale = 'en'){
return $builder->where('code', '=', $locale);
}
2. Создайте middleware аля AddLocaleScope
public function handle($request, Closure $next)
{
Locale::addGlobalScope('locale', function (Builder $builder){
$builder->ofLocale(app()->getLocale());
});
}
И вешайте их на все контроллеры где нужна подгрузка локали.
Можно другой вариант. Привести отношения у модели Category
public function locales(){
return $this->hasMany(Locale::class);
}
public function current_locale(){
return $this->hasOne(Locale::class)->ofLocale(app()->getLocale());
}
И юзать когда нужна текущая локаль
$categories = Category::with('current_locale')->get();
И когда нужны все локали
$categories = Category::with('locales')->get();