若是其余语言没有定义,会默认的查找en下的定义php
resources/lang
下建立须要的语言文件夹,如jp,默认是en。而后建立语言包文件前端
trans.php
json
return [
//User
'user_name_required' => 'User name cannot be empty',
'user_name_between' => 'User name length 5-10 characters',
'user_name_unique' => 'User names must be unique',
'user_password_required' => 'Password cannot be empty',
'user_password_between' => 'Password length 5-10 characters',
'user_role_required' => 'Role cannot be empty',
//Role
'role_name_required' => 'Role name cannot be empty',
'role_name_unique' => 'Role names must be unique',
// DbException
2000 => 'Database operation exception',
2001 => 'Database insert failure',
2002 => 'Database update failure',
2003 => 'Database delete failure',
];
复制代码
经过前端头的X-Language,来判断是什么语言,并设置语言bash
SwitchLanguage.php
app
class SwitchLanguage
{
public function handle($request, Closure $next)
{
$lang = $_SERVER['HTTP_X_LANGUAGE'] ?? 'jp';
app()->setLocale($lang);
return $next($request);
}
}
复制代码
注册路由中间件ui
Kernel.php
this
'lang' => \App\Http\Middleware\SwitchLanguage::class,
复制代码
路由使用中间件spa
Route::middleware( 'lang')->group(function () {
});
复制代码
自定义异常能够经过异常码进行判断code
BaseException.php
中间件
public function __construct($code = 0, $message = '', $httpCode = 0, Throwable $previous = null)
{
$this->default_code = $code == 0 ? $this->default_code : $code;
$this->default_message = empty($message) ? trans("trans.$this->default_code") : $message;
$this->default_httpCode = $httpCode == 0 ? $this->default_httpCode : $httpCode;
parent::__construct($message, $code, $previous);
}
复制代码
Handler.php
if ($exception instanceof ValidationException) {
$message = $exception->validator->errors()->first();
return response()->json([
'code' => 1000,
'message' => trans("trans.$message"),
], 422);
}
复制代码
UserRequest.php
public function messages()
{
return [
'name.required' => 'user_name_required',
'name.between' => 'user_name_between',
'name.unique' => 'user_name_unique',
'password.required' => 'user_password_required',
'password.between' => 'user_password_between',
'role.required' => 'user_role_required',
];
}
复制代码