Laravel 通过 URL/Route 更改语言
Laravel change language via URL/Route
对 Laravel 来说相当新,我正在尝试添加一项功能,允许用户通过单击 header.blade.php 文件中的按钮在两种语言之间切换。到目前为止,我已经知道了,因此在相应的 lang 目录中有一个 test.php 文件,其中包含测试字符串,并且在手动设置时设法让 <p>{{__('test.test')}}</p>
显示正确的语言。目前我不确定这是否真的在调用路由来更新语言,或者我更新它的逻辑是否错误,因为我没有收到任何错误并且我正在使用 barryvdh/laravel-debugbar 进行调试。
我的按钮逻辑:
<button href="{{ url('language', config('app.locale') == 'en' ? 'fr' : 'en') }}">{{ config('app.locale') }}</button>
在routes/web.php:
Route::get('/language', 'LanguageController@show');
Route::post('/language/{lang}', 'LanguageController@update');
LanguageController.php,通过 php artisan make:controller 创建 --api
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LanguageController extends Controller
{
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return App::getLocale();
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//Tried the following
config(['app.locale' => $id]);
App::setlocale($id);
}
}
问题:
- 这是在运行时更新语言的正确方法吗?
- 如何判断我的 api 电话是否有人接听?
- 如何在模板 .vue 文件中实现此目的?
- 为该语言制作一个控制器是多余的吗?
- 如果更改语言环境,我按钮的内部 HTML 会发生变化吗?
- 在运行时影响配置文件是不好的做法吗?
--编辑--
我还应该提到,我为此制作控制器的唯一原因是因为我让 web.php 中的路由调用使用了一个函数,但是,他们说它们是 Closure 运行 php artisan route:list
并且我发现的研究我无法判断这是否正确
你走的路是对的,但是少了点东西。
您不能使用配置在运行时编辑语言。
在用户 Session 中保存本地语言并创建一个新的中间件以在每次请求时设置会话中保存的语言。
我发现这篇文章可以帮助你,localization-laravel
对 Laravel 来说相当新,我正在尝试添加一项功能,允许用户通过单击 header.blade.php 文件中的按钮在两种语言之间切换。到目前为止,我已经知道了,因此在相应的 lang 目录中有一个 test.php 文件,其中包含测试字符串,并且在手动设置时设法让 <p>{{__('test.test')}}</p>
显示正确的语言。目前我不确定这是否真的在调用路由来更新语言,或者我更新它的逻辑是否错误,因为我没有收到任何错误并且我正在使用 barryvdh/laravel-debugbar 进行调试。
我的按钮逻辑:
<button href="{{ url('language', config('app.locale') == 'en' ? 'fr' : 'en') }}">{{ config('app.locale') }}</button>
在routes/web.php:
Route::get('/language', 'LanguageController@show');
Route::post('/language/{lang}', 'LanguageController@update');
LanguageController.php,通过 php artisan make:controller 创建 --api
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class LanguageController extends Controller
{
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
return App::getLocale();
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//Tried the following
config(['app.locale' => $id]);
App::setlocale($id);
}
}
问题:
- 这是在运行时更新语言的正确方法吗?
- 如何判断我的 api 电话是否有人接听?
- 如何在模板 .vue 文件中实现此目的?
- 为该语言制作一个控制器是多余的吗?
- 如果更改语言环境,我按钮的内部 HTML 会发生变化吗?
- 在运行时影响配置文件是不好的做法吗?
--编辑--
我还应该提到,我为此制作控制器的唯一原因是因为我让 web.php 中的路由调用使用了一个函数,但是,他们说它们是 Closure 运行 php artisan route:list
并且我发现的研究我无法判断这是否正确
你走的路是对的,但是少了点东西。
您不能使用配置在运行时编辑语言。
在用户 Session 中保存本地语言并创建一个新的中间件以在每次请求时设置会话中保存的语言。
我发现这篇文章可以帮助你,localization-laravel