Laravel - 如何为 API 动态设置语言?

Laravel - How to set lang dynamically for API?

我有一个端点可以切换语言:

{{base_url}}/localize/{lang}

所以,控制器

class LocalizationController 
{
 if (!is_null($lang) && !empty($lang)) {
       App::setLocale(request('lang'));
   }
}

但是,它似乎不适用于 API。非常感谢您的帮助,如果您有任何想法,请帮助我。

我更喜欢使用 headers 来完成该任务。 创建新的中间件并检查所有请求。

namespace App\Http\Middleware;

use Closure;

class Localization
{
    protected const ALLOWED_LOCALIZATIONS = ['en', 'es', 'ru'];
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $localization = $request->header('Accept-Language');
        $localization = in_array($localization, self::ALLOWED_LOCALIZATIONS, true) ? $localization : 'en';
        app()->setLocale($localization);

        return $next($request);
    }
}

您可以选择自己的本地化类型,例如 enen_US 或其他。 然后只需将 header 添加到您的所有请求中,例如:Accept-Language: es