Heim  >  Fragen und Antworten  >  Hauptteil

Verwenden Sie laravel-translatable, um Laravel-Artikel in einer bestimmten Sprache zu erhalten.

<p>Ich verwende die laravel-translatable-Bibliothek, um ein mehrsprachiges Website-System zu entwickeln. In dieser Webanwendung gibt es kein Frontend und Daten werden über die API gelesen und geschrieben. Das Problem, mit dem ich konfrontiert bin, besteht darin, dass ich nicht alle in der Datenbank gespeicherten Datensätze in einer oder mehreren Sprachen abrufen kann. Aus der Tabelle „Blog“ erhalte ich beispielsweise alle Datensätze mit den Titeln Englisch und Französisch. In der Dokumentation zu dieser Bibliothek wird dies nicht ausdrücklich erwähnt, und ich konnte es mit dem Code, den ich ausprobiert habe, nicht beheben. Hier sind Codebeispiele, die ich ausprobiert habe, aber keines hat mein Problem gelöst: </p> <pre class="brush:php;toolbar:false;">Route::get('/', function () { return Response()->json( DB::table('Blogs') ->get() ->filter(function ($blog) { return $blog->getTranslations('title', ['en']); }) ); }); Route::get('/', function () { return Response()->json( DB::table('Blogs') ->get() ->filter(function ($blog) { return Collect(json_decode($blog->title))->has('en'); }) ); }); Route::get('/', function () { return Response()->json(Blog::titleEqualsEn()->get(), 200); });<span style="font-family:'sans serif, tahoma, verdana, helvetica';"><span style="white-space:nowrap;"</span></ span></pre> <p><br /></p>
P粉598140294P粉598140294416 Tage vor530

Antworte allen(1)Ich werde antworten

  • P粉541565322

    P粉5415653222023-08-01 10:27:03

    你可以通过创建一个中间件来处理每个请求的语言环境,就像这个例子一样:

    public function handle(Request $request, Closure $next)
        {
            $locales = ['en', 'fr'];
    
            if($request->has('lang') && in_array($request->input('lang'), $locales)){
                App::setLocale($request->input('lang'));
            }
            return $next($request);
        }

    之后,你可以很容易地将你想要的语言环境作为查询字符串传递给你的端点。

    GET http://localhost:8000/api/users?lang=en

    此外,请确保使用Eloquent模型而不是查询构建器。

    Antwort
    0
  • StornierenAntwort