我有一个端点来切换语言:
{{base_url}}/localize/{lang}
所以,控制器
class LocalizationController
{
if (!is_null($lang) && !empty($lang)) {
App::setLocale(request('lang'));
}
}
但是,它似乎不适用于 API。如果您有任何想法,我非常感谢您的帮助,请帮助我。
我有一个端点来切换语言:
{{base_url}}/localize/{lang}
所以,控制器
class LocalizationController
{
if (!is_null($lang) && !empty($lang)) {
App::setLocale(request('lang'));
}
}
但是,它似乎不适用于 API。如果您有任何想法,我非常感谢您的帮助,请帮助我。
我更喜欢使用标题来完成该任务。创建新的中间件并检查所有请求。
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
oren_US
或其他。然后只需将标头添加到您的所有请求中,例如:Accept-Language: es