setLocale方法适用于布局中的翻译,但不适用于成品组件内部的翻译



我在Laravel项目中尝试实现翻译系统时遇到了一个问题。

在布局文件layout.php中,我在生成内容之前设置了语言:

<?php
App::setLocale(session()->get('language'));
?>

它似乎适用于后面的@lang指令(放在layout.php中(

在这些之后,我将页面的内容如下:

@yield('content')

但是文件中扩展布局的@lang指令(并且有"content"部分(不起作用。

可能是什么问题?

App::setLocale()不是持久的,区域设置在运行时仅适用于当前请求。您可以创建一个中间件,并在中间件的句柄函数中对每个请求强制执行区域设置

App::setLocale( session('app_locale', 'fallback_language') );

然后在appHttpKernel.php下的web组注册语言中间件后的StartSession中间件如下。

protected $middleware = [
...
AppHttpMiddlewareLanguageMiddleware::class,
...
];

签出这篇文章,https://mydnic.be/post/laravel-5-and-his-fcking-non-persistent-app-setlocale其Laravel 5,但概念相同。

最新更新