Php 使用Laravel 5.3的多语言用户界面
我在做一个CRM,应该在不同的国家工作 这是我第一次使用Laravel,所以我有点困惑 我的数据库如下所示: 语言Php 使用Laravel 5.3的多语言用户界面,php,laravel,laravel-5,multilingual,Php,Laravel,Laravel 5,Multilingual,我在做一个CRM,应该在不同的国家工作 这是我第一次使用Laravel,所以我有点困惑 我的数据库如下所示: 语言 身份证 名字 简称(en、ru等) 字典 身份证 标签(登录、忘记密码等) 值(‘登录’、‘ББбб’等) 语言识别码 我想过这样工作: 如果用户转到so,它将通过以下步骤重定向他: 如果用户以前登录,并且其语言具有cookie 如果没有cookie,则通过其IP获取用户所在国家/地区 如果语言表中无法识别国家/地区的语言,请将用户重定向到config/app.ph
- 身份证
- 名字
- 简称(en、ru等)
- 身份证
- 标签(登录、忘记密码等)
- 值(‘登录’、‘ББбб’等)
- 语言识别码
Route::get('/{locale}', 'Auth\LoginController@showLoginForm');
Route::get('/{locale}/users/', 'UsersController@index');
Route::get('/{locale}/users/view/{id}', 'UsersController@viewUser');
public function showLoginForm($locale)
{
App::setLocale($locale);
return view('auth.login');
}
...
public function index($locale)
{
App::setLocale($locale);
return view('users.index');
}
...
控制器
Route::get('/{locale}', 'Auth\LoginController@showLoginForm');
Route::get('/{locale}/users/', 'UsersController@index');
Route::get('/{locale}/users/view/{id}', 'UsersController@viewUser');
public function showLoginForm($locale)
{
App::setLocale($locale);
return view('auth.login');
}
...
public function index($locale)
{
App::setLocale($locale);
return view('users.index');
}
...
我希望它在后台工作,而不需要我每次设置语言和路线
谢谢大家! 中间件可能是实现这一点的方法。由于您已经计划使用cookie存储用户的区域设置,您可以创建注册到web路由组(默认情况下应用于所有路由)的中间件 然后,在中间件类中,只需在App上调用setLocale方法并传递cookie
public function handle($request, Closure $next) {
App::setLocale($request->cookie('locale'));
return $next($request);
}
如果您以前没有使用过中间件,那么Laravel文档总是很棒的:。alex谢谢,我想我会从url中删除语言var,只使用Cookies。很高兴我能提供帮助,如果将来仍要使用语言变量,可以将路由封装在以区域设置为前缀的路由组中:
route::group(['prefix'=>'{locale}',function(){//routes here})代码>您可以只在该组中包含任何需要区域设置的路由,这样您就不必在每个方法中分配区域设置,而只需忽略它。我相信有更好的办法,但我现在想不出。亚历克斯,你是最好的!;)