Yes it works. My findings so far:
1) Turn filters into middleware according to these templates... https://github.com/laravel/laravel/tree/develop/app/Http/Middleware; every filter (of which I used to have several in one class as methods called via @ from FilterServiceProvider) will become a middleware class of its own that implements the Illuminate\Contracts\Routing\Middleware contract = interface and thus features one handle method where you put your logic; for the class you can choose whatever name and namespace you please (e.g. "LocalesFilter" if you want to stick to the "filter" term, App\Http\Filters namespace instead of App\Http\Middleware possible likewise if you're feeling retro).
2) Register the new middlewares in the $middleware property in AppServiceProvider whereby you give them an alias that points to the class path/namespace ('localesFilter' => 'App\Http\Middleware\LocalesFilter'); that $middleware property is referred to as "route middleware" by Taylor in the docblock, which seems to be mostly synonymous with before filter.
3) Refer to your new middlewares f.k.a. filters in routes.php [unless you're using annotations, I don't] as ['middleware' => ['localesFilter', 'your_ex-filter2', ...] where you used to have ['before' => ['localesFilter', 'your_filter2', ...]. Here you have to use the "middleware" key as it points to the respective property in your AppServiceProvider, which cannot be renamed as it appears to be hard-coded in the base Illuminate\Foundation\Support\Providers\AppServiceProvider that yours extends.
This should do it. One thing I've noticed so far: My filters up until here did not necessarily return anything as per some condition (e.g., turn filter on/off via custom config file). PhpStorm referred to those constructs as "code smell" or "inconsistent return point"... :) In any case, once filters become middleware, you need to make them return a response no matter what or you'll land at an empty page.