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);
}
}
您可以选择自己的本地化类型,例如 en
或 en_US
或其他。
然后只需将 header 添加到您的所有请求中,例如:Accept-Language: es
我有一个端点可以切换语言:
{{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);
}
}
您可以选择自己的本地化类型,例如 en
或 en_US
或其他。
然后只需将 header 添加到您的所有请求中,例如:Accept-Language: es