Laravel——语言包

若是其余语言没有定义,会默认的查找en下的定义php

建立语言包

resources/lang下建立须要的语言文件夹,如jp,默认是en。而后建立语言包文件前端

trans.phpjson

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.phpapp

class SwitchLanguage
{
   public function handle($request, Closure $next)
   {
       $lang = $_SERVER['HTTP_X_LANGUAGE'] ?? 'jp';
       app()->setLocale($lang);
       return $next($request);
   }
}
复制代码

注册路由中间件ui

Kernel.phpthis

'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',
   ];
}
复制代码
相关文章
相关标签/搜索