From 90a8a075fbca4e3a2b0ec4c38055900f69bedb6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=85=94=E5=A7=AC=E6=A1=91?= Date: Thu, 7 Jan 2021 15:08:54 +0800 Subject: [PATCH] =?UTF-8?q?Translation=20rework=EF=BC=81=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Exceptions/Handler.php | 20 +- app/Http/Controllers/Admin/CertController.php | 6 +- .../Admin/Config/CountryController.php | 2 +- .../Controllers/Admin/CouponController.php | 2 +- .../Controllers/Admin/NodeAuthController.php | 2 +- .../Controllers/Admin/SystemController.php | 4 +- app/Http/Controllers/AdminController.php | 2 +- app/Http/Controllers/AuthController.php | 176 +++++------- app/Http/Controllers/PaymentController.php | 4 +- .../Controllers/User/AffiliateController.php | 14 +- .../Controllers/User/SubscribeController.php | 18 +- app/Http/Controllers/UserController.php | 234 ++++++++-------- app/Http/Middleware/isForbidden.php | 10 +- app/Http/Middleware/isSecurity.php | 4 +- app/Http/Requests/Auth/RegisterRequest.php | 16 -- app/Mail/sendVerifyCode.php | 2 +- app/Models/Invite.php | 6 +- app/Models/Order.php | 38 +-- app/Models/ReferralApply.php | 17 ++ app/Models/ReferralLog.php | 16 ++ app/Models/Ticket.php | 8 +- app/helpers.php | 6 +- composer.lock | 159 +++++------ config/geetest.php | 2 +- config/laravel-lang.php | 2 - resources/lang/en/auth.php | 145 +++++----- resources/lang/en/common.php | 85 ++++++ resources/lang/en/error.php | 44 ++- resources/lang/en/home.php | 203 -------------- resources/lang/en/pagination.php | 6 + resources/lang/en/passwords.php | 9 + resources/lang/en/user.php | 215 +++++++++++++++ resources/lang/en/validation.php | 134 ++++++++++ resources/lang/ja.json | 47 ---- resources/lang/ja/auth.php | 99 ------- resources/lang/ja/error.php | 17 -- resources/lang/ja/home.php | 200 -------------- resources/lang/ja/pagination.php | 17 -- resources/lang/ja/passwords.php | 20 -- resources/lang/ja/validation-inline.php | 138 ---------- resources/lang/ja/validation.php | 149 ----------- resources/lang/ko.json | 46 ---- resources/lang/ko/auth.php | 33 --- resources/lang/ko/error.php | 17 -- resources/lang/ko/home.php | 197 -------------- resources/lang/ko/pagination.php | 13 +- resources/lang/ko/passwords.php | 19 +- resources/lang/ko/validation-inline.php | 138 ---------- resources/lang/ko/validation.php | 217 +++++++-------- resources/lang/zh-CN.json | 46 ---- resources/lang/zh-CN/auth.php | 140 +++++----- resources/lang/zh-CN/common.php | 85 ++++++ resources/lang/zh-CN/error.php | 44 ++- resources/lang/zh-CN/home.php | 209 --------------- resources/lang/zh-CN/pagination.php | 13 +- resources/lang/zh-CN/passwords.php | 19 +- resources/lang/zh-CN/user.php | 215 +++++++++++++++ resources/lang/zh-CN/validation-inline.php | 138 ---------- resources/lang/zh-CN/validation.php | 253 ++++++++---------- resources/lang/zh-TW.json | 46 ---- resources/lang/zh-tw/auth.php | 74 ----- resources/lang/zh-tw/error.php | 18 -- resources/lang/zh-tw/home.php | 201 -------------- resources/lang/zh-tw/pagination.php | 17 -- resources/lang/zh-tw/passwords.php | 20 -- resources/lang/zh-tw/validation-inline.php | 138 ---------- resources/lang/zh-tw/validation.php | 179 ------------- resources/views/admin/aff/detail.blade.php | 8 +- resources/views/admin/aff/index.blade.php | 12 +- resources/views/admin/aff/rebate.blade.php | 8 +- resources/views/admin/article/index.blade.php | 6 +- resources/views/admin/config/config.blade.php | 30 +-- .../views/admin/config/emailFilter.blade.php | 4 +- resources/views/admin/config/system.blade.php | 168 +++++++----- resources/views/admin/coupon/index.blade.php | 14 +- resources/views/admin/inviteList.blade.php | 32 +-- resources/views/admin/layouts.blade.php | 8 +- resources/views/admin/logs/callback.blade.php | 4 +- .../views/admin/logs/notification.blade.php | 2 +- .../admin/logs/onlineIPMonitor.blade.php | 2 +- resources/views/admin/logs/order.blade.php | 8 +- resources/views/admin/logs/traffic.blade.php | 4 +- .../views/admin/logs/userBanHistory.blade.php | 4 +- .../admin/logs/userCreditHistory.blade.php | 4 +- .../views/admin/logs/userMonitor.blade.php | 6 +- .../views/admin/logs/userOnlineIP.blade.php | 4 +- .../views/admin/logs/userTraffic.blade.php | 4 +- .../views/admin/marketing/emailList.blade.php | 4 +- .../views/admin/marketing/pushList.blade.php | 2 +- resources/views/admin/node/auth.blade.php | 14 +- .../views/admin/node/cert/index.blade.php | 6 +- resources/views/admin/node/index.blade.php | 14 +- resources/views/admin/node/info.blade.php | 4 +- resources/views/admin/node/monitor.blade.php | 6 +- .../views/admin/permission/index.blade.php | 8 +- resources/views/admin/role/index.blade.php | 8 +- .../views/admin/rule/group/index.blade.php | 8 +- resources/views/admin/rule/index.blade.php | 14 +- resources/views/admin/rule/log.blade.php | 12 +- resources/views/admin/shop/index.blade.php | 8 +- .../views/admin/subscribe/index.blade.php | 6 +- resources/views/admin/ticket/index.blade.php | 32 +-- resources/views/admin/ticket/reply.blade.php | 20 +- resources/views/admin/tools/convert.blade.php | 4 +- .../views/admin/tools/decompile.blade.php | 4 +- resources/views/admin/user/export.blade.php | 4 +- .../views/admin/user/group/index.blade.php | 6 +- resources/views/admin/user/index.blade.php | 26 +- resources/views/admin/user/info.blade.php | 8 +- resources/views/auth/active.blade.php | 2 +- resources/views/auth/activeUser.blade.php | 18 +- resources/views/auth/captcha.blade.php | 4 +- resources/views/auth/error.blade.php | 17 +- resources/views/auth/free.blade.php | 14 +- resources/views/auth/layouts.blade.php | 32 +-- resources/views/auth/login.blade.php | 18 +- resources/views/auth/maintenance.blade.php | 31 +-- resources/views/auth/register.blade.php | 46 ++-- resources/views/auth/reset.blade.php | 17 +- resources/views/auth/resetPassword.blade.php | 12 +- resources/views/components/alert.blade.php | 2 +- resources/views/components/avatar.blade.php | 8 +- resources/views/emails/activeUser.blade.php | 4 +- resources/views/user/buy.blade.php | 52 ++-- .../user/components/help/tutorial.blade.php | 4 +- .../views/user/components/purchase.blade.php | 2 +- resources/views/user/help.blade.php | 36 +-- resources/views/user/index.blade.php | 152 +++++------ resources/views/user/invite.blade.php | 28 +- resources/views/user/invoiceDetail.blade.php | 64 ++--- resources/views/user/invoices.blade.php | 73 ++--- resources/views/user/layouts.blade.php | 67 ++--- resources/views/user/nodeList.blade.php | 21 +- resources/views/user/payment.blade.php | 20 +- resources/views/user/profile.blade.php | 32 +-- resources/views/user/referral.blade.php | 72 ++--- resources/views/user/replyTicket.blade.php | 24 +- resources/views/user/services.blade.php | 87 +++--- .../views/user/stripe-checkout.blade.php | 2 +- resources/views/user/ticketList.blade.php | 45 ++-- 140 files changed, 2275 insertions(+), 4114 deletions(-) create mode 100644 resources/lang/en/common.php delete mode 100644 resources/lang/en/home.php create mode 100644 resources/lang/en/pagination.php create mode 100644 resources/lang/en/passwords.php create mode 100644 resources/lang/en/user.php create mode 100644 resources/lang/en/validation.php delete mode 100644 resources/lang/ja.json delete mode 100644 resources/lang/ja/auth.php delete mode 100644 resources/lang/ja/error.php delete mode 100644 resources/lang/ja/home.php delete mode 100644 resources/lang/ja/pagination.php delete mode 100644 resources/lang/ja/passwords.php delete mode 100644 resources/lang/ja/validation-inline.php delete mode 100644 resources/lang/ja/validation.php delete mode 100644 resources/lang/ko.json delete mode 100644 resources/lang/ko/auth.php delete mode 100644 resources/lang/ko/error.php delete mode 100644 resources/lang/ko/home.php delete mode 100644 resources/lang/ko/validation-inline.php delete mode 100644 resources/lang/zh-CN.json create mode 100644 resources/lang/zh-CN/common.php delete mode 100644 resources/lang/zh-CN/home.php create mode 100644 resources/lang/zh-CN/user.php delete mode 100644 resources/lang/zh-CN/validation-inline.php delete mode 100644 resources/lang/zh-TW.json delete mode 100644 resources/lang/zh-tw/auth.php delete mode 100644 resources/lang/zh-tw/error.php delete mode 100644 resources/lang/zh-tw/home.php delete mode 100644 resources/lang/zh-tw/pagination.php delete mode 100644 resources/lang/zh-tw/passwords.php delete mode 100644 resources/lang/zh-tw/validation-inline.php delete mode 100644 resources/lang/zh-tw/validation.php diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 3510b674..c3ac2a86 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -79,46 +79,46 @@ class Handler extends ExceptionHandler Log::info('异常请求:'.$request->fullUrl().',IP:'.IP::getClientIp()); if ($request->ajax() || $request->wantsJson()) { - return Response::json(['status' => 'fail', 'message' => trans('error.MissingPage')], 404); + return Response::json(['status' => 'fail', 'message' => trans('error.missing_page')], 404); } - return Response::view('auth.error', ['message' => trans('error.MissingPage')], 404); + return Response::view('auth.error', ['message' => trans('error.missing_page')], 404); case $exception instanceof AuthenticationException: // 捕获身份校验异常 if ($request->ajax() || $request->wantsJson()) { - return Response::json(['status' => 'fail', 'message' => trans('error.Unauthorized')], 401); + return Response::json(['status' => 'fail', 'message' => trans('error.unauthorized')], 401); } - return Response::view('auth.error', ['message' => trans('error.Unauthorized')], 401); + return Response::view('auth.error', ['message' => trans('error.unauthorized')], 401); case $exception instanceof TokenMismatchException: // 捕获CSRF异常 if ($request->ajax() || $request->wantsJson()) { return Response::json([ 'status' => 'fail', - 'message' => trans('error.RefreshPage').''.trans('error.Refresh').'', + 'message' => trans('error.refresh_page').''.trans('error.refresh').'', ], 419); } return Response::view( 'auth.error', - ['message' => trans('error.RefreshPage').''.trans('error.Refresh').''], + ['message' => trans('error.refresh_page').''.trans('error.refresh').''], 419 ); case $exception instanceof ReflectionException: if ($request->ajax() || $request->wantsJson()) { - return Response::json(['status' => 'fail', 'message' => trans('error.SystemError')], 500); + return Response::json(['status' => 'fail', 'message' => trans('error.system')], 500); } - return Response::view('auth.error', ['message' => trans('error.SystemError')], 500); + return Response::view('auth.error', ['message' => trans('error.system')], 500); case $exception instanceof ErrorException: // 捕获系统错误异常 if ($request->ajax() || $request->wantsJson()) { return Response::json([ 'status' => 'fail', - 'message' => trans('error.SystemError').', '.trans('error.Visit').''.trans('error.log').'', + 'message' => trans('error.system').', '.trans('error.visit').''.trans('error.log').'', ], 500); } return Response::view( 'auth.error', - ['message' => trans('error.SystemError').', '.trans('error.Visit').''.trans('error.log').''], + ['message' => trans('error.system').', '.trans('error.visit').''.trans('error.log').''], 500 ); case $exception instanceof ConnectionException: diff --git a/app/Http/Controllers/Admin/CertController.php b/app/Http/Controllers/Admin/CertController.php index f2eb98fa..74b0291b 100644 --- a/app/Http/Controllers/Admin/CertController.php +++ b/app/Http/Controllers/Admin/CertController.php @@ -37,7 +37,7 @@ class CertController extends Controller public function store(CertRequest $request) { if ($cert = NodeCertificate::create($request->validated())) { - return redirect(route('admin.node.cert.edit', $cert))->with('successMsg', '生成成功'); + return redirect(route('admin.node.cert.edit', $cert))->with('successMsg', trans('common.generate_item', ['attribute' => trans('common.success')])); } return redirect()->back()->withInput()->withErrors('生成失败'); @@ -52,10 +52,10 @@ class CertController extends Controller public function update(CertRequest $request, NodeCertificate $cert) { if ($cert->update($request->validated())) { - return redirect()->back()->with('successMsg', '修改成功'); + return redirect()->back()->with('successMsg', trans('common.update_action', ['action' => trans('common.success')])); } - return redirect()->back()->withInput()->withErrors('修改失败'); + return redirect()->back()->withInput()->withErrors(trans('common.update_action', ['action' => trans('common.failed')])); } // 删除域名证书 diff --git a/app/Http/Controllers/Admin/Config/CountryController.php b/app/Http/Controllers/Admin/Config/CountryController.php index e00b115d..1cee9e2f 100644 --- a/app/Http/Controllers/Admin/Config/CountryController.php +++ b/app/Http/Controllers/Admin/Config/CountryController.php @@ -25,7 +25,7 @@ class CountryController extends Controller } if (Country::create($validator->validated())) { - return Response::json(['status' => 'success', 'message' => '生成成功']); + return Response::json(['status' => 'success', 'message' => trans('common.generate_item', ['attribute' => trans('common.success')])]); } return Response::json(['status' => 'fail', 'message' => '生成失败']); diff --git a/app/Http/Controllers/Admin/CouponController.php b/app/Http/Controllers/Admin/CouponController.php index 8c67eaa7..1a1950d1 100644 --- a/app/Http/Controllers/Admin/CouponController.php +++ b/app/Http/Controllers/Admin/CouponController.php @@ -71,7 +71,7 @@ class CouponController extends Controller Coupon::create($data); } - return Redirect::route('admin.coupon.index')->with('successMsg', '生成成功'); + return Redirect::route('admin.coupon.index')->with('successMsg', trans('common.generate_item', ['attribute' => trans('common.success')])); } catch (Exception $e) { Log::error('生成优惠券失败:'.$e->getMessage()); diff --git a/app/Http/Controllers/Admin/NodeAuthController.php b/app/Http/Controllers/Admin/NodeAuthController.php index 5933b641..ce531946 100644 --- a/app/Http/Controllers/Admin/NodeAuthController.php +++ b/app/Http/Controllers/Admin/NodeAuthController.php @@ -29,7 +29,7 @@ class NodeAuthController extends Controller $node->auth()->create(['key' => Str::random(), 'secret' => Str::random(8)]); }); - return Response::json(['status' => 'success', 'message' => '生成成功']); + return Response::json(['status' => 'success', 'message' => trans('common.generate_item', ['attribute' => trans('common.success')])]); } // 重置节点授权 diff --git a/app/Http/Controllers/Admin/SystemController.php b/app/Http/Controllers/Admin/SystemController.php index 49195fe2..0978c804 100644 --- a/app/Http/Controllers/Admin/SystemController.php +++ b/app/Http/Controllers/Admin/SystemController.php @@ -141,10 +141,10 @@ class SystemController extends Controller // 更新配置 if (Config::findOrFail($name)->update(['value' => $value])) { - return Response::json(['status' => 'success', 'message' => '修改成功']); + return Response::json(['status' => 'success', 'message' => trans('common.update_action', ['action' => trans('common.success')])]); } - return Response::json(['status' => 'fail', 'message' => '修改失败']); + return Response::json(['status' => 'fail', 'message' => trans('common.update_action', ['action' => trans('common.failed')])]); } // 推送通知测试 diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 32b1dfbe..a6c2468a 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -76,7 +76,7 @@ class AdminController extends Controller $obj->save(); } - return Response::json(['status' => 'success', 'message' => '生成成功']); + return Response::json(['status' => 'success', 'message' => trans('common.generate_item', ['attribute' => trans('common.success')])]); } // 导出邀请码 diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index f5d25005..90b0ea9e 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -53,13 +53,7 @@ class AuthController extends Controller public function login(Request $request) { - $validator = Validator::make($request->all(), [ - 'email' => 'required|email', - 'password' => 'required', - ], [ - 'email.required' => trans('auth.email_null'), - 'password.required' => trans('auth.password_null'), - ]); + $validator = Validator::make($request->all(), ['email' => 'required|email', 'password' => 'required']); if ($validator->fails()) { return Redirect::back()->withInput()->withErrors($validator->errors()); @@ -73,25 +67,26 @@ class AuthController extends Controller // 验证账号并创建会话 if (! Auth::attempt($validator->validated(), $request->input('remember'))) { - return Redirect::back()->withInput()->withErrors(trans('auth.login_error')); + return Redirect::back()->withInput()->withErrors(trans('auth.error.login_failed')); } $user = Auth::getUser(); if (! $user) { - return Redirect::back()->withInput()->withErrors(trans('auth.login_error')); + return Redirect::back()->withInput()->withErrors(trans('auth.error.login_error')); } // 校验普通用户账号状态 - if ($user->status < 0) { + if ($user->status === -1) { Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 - return Redirect::back()->withInput()->withErrors(trans('auth.login_ban', ['email' => sysConfig('webmaster_email')])); + return Redirect::back()->withInput()->withErrors(trans('auth.error.account_baned')); } if ($user->status === 0 && sysConfig('is_activate_account')) { Auth::logout(); // 强制销毁会话,因为Auth::attempt的时候会产生会话 - return Redirect::back()->withInput()->withErrors(trans('auth.active_tip').'【'.trans('auth.active_account').'】'); + return Redirect::back()->withInput()->withErrors(trans('auth.active.promotion.0').'👉【'.trans('common.active_item', ['attribute' => trans('common.account')]).'】👈
'.trans('auth.active.promotion.1')); } // 写入登录日志 @@ -109,18 +104,16 @@ class AuthController extends Controller switch (sysConfig('is_captcha')) { case 1: // 默认图形验证码 if (! Captcha::check($request->input('captcha'))) { - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_error')); + return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed')); } break; case 2: // Geetest $validator = Validator::make($request->all(), [ 'geetest_challenge' => 'required|geetest', - ], [ - 'geetest' => trans('auth.captcha_fail'), ]); if ($validator->fails()) { - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_fail')); + return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed')); } break; case 3: // Google reCAPTCHA @@ -129,7 +122,7 @@ class AuthController extends Controller ]); if ($validator->fails()) { - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_fail')); + return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed')); } break; case 4: // hCaptcha @@ -138,7 +131,7 @@ class AuthController extends Controller ]); if ($validator->fails()) { - return Redirect::back()->withInput()->withErrors(trans('auth.captcha_fail')); + return Redirect::back()->withInput()->withErrors(trans('auth.captcha.error.failed')); } break; default: // 不启用验证码 @@ -159,7 +152,7 @@ class AuthController extends Controller $ipLocation = IP::getIPInfo($ip); if (empty($ipLocation) || empty($ipLocation['country'])) { - Log::warning('获取IP信息异常:'.$ip); + Log::warning(trans('error.get_ip').':'.$ip); } $log = new UserLoginLog(); @@ -196,20 +189,9 @@ class AuthController extends Controller $validator = Validator::make($request->all(), [ 'username' => 'required', - 'email' => 'required|email|unique:user', + 'email' => 'required|email|unique:user', 'password' => 'required|min:6|confirmed', - 'password_confirmation' => 'required|same:password', - 'term' => 'accepted', - ], [ - 'username.required' => trans('auth.email_null'), - 'email.required' => trans('auth.email_null'), - 'email.email' => trans('auth.email_legitimate'), - 'email.unique' => trans('auth.email_exist'), - 'password.required' => trans('auth.password_null'), - 'password.min' => trans('auth.password_limit'), - 'password_confirmation.required' => trans('auth.confirm_password'), - 'password_confirmation.same' => trans('auth.password_same'), - 'term.accepted' => trans('auth.unaccepted'), + 'term' => 'accepted', ]); if ($validator->fails()) { @@ -223,14 +205,14 @@ class AuthController extends Controller // 防止重复提交 if ($register_token !== Session::get('register_token')) { - return Redirect::back()->withInput()->withErrors(trans('auth.repeat_request')); + return Redirect::back()->withInput()->withErrors(trans('auth.error.repeat_request')); } Session::forget('register_token'); // 是否开启注册 if (! sysConfig('is_register')) { - return Redirect::back()->withErrors(trans('auth.register_close')); + return Redirect::back()->withErrors(trans('auth.register.error.disable')); } // 校验域名邮箱黑白名单 @@ -246,22 +228,22 @@ class AuthController extends Controller // 校验邀请码合法性 if ($code) { if (Invite::whereCode($code)->whereStatus(0)->doesntExist()) { - return Redirect::back()->withInput($request->except('code'))->withErrors(trans('auth.code_error')); + return Redirect::back()->withInput($request->except('code'))->withErrors(trans('auth.invite.error.unavailable')); } } elseif ((int) sysConfig('is_invite_register') === 2) { // 必须使用邀请码 - return Redirect::back()->withInput()->withErrors(trans('auth.code_null')); + return Redirect::back()->withInput()->withErrors(trans('validation.required', ['attribute' => trans('auth.invite.attribute')])); } } // 注册前发送激活码 if ((int) sysConfig('is_activate_account') === 1) { if (! $verify_code) { - return Redirect::back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha_null')); + return Redirect::back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha.required')); } $verifyCode = VerifyCode::whereAddress($data['email'])->whereCode($verify_code)->whereStatus(0)->first(); if (! $verifyCode) { - return Redirect::back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha_overtime')); + return Redirect::back()->withInput($request->except('verify_code'))->withErrors(trans('auth.captcha.error.timeout')); } $verifyCode->status = 1; @@ -278,14 +260,14 @@ class AuthController extends Controller if (sysConfig('register_ip_limit') && Cache::has($cacheKey)) { $registerTimes = Cache::get($cacheKey); if ($registerTimes >= sysConfig('register_ip_limit')) { - return Redirect::back()->withInput($request->except('code'))->withErrors(trans('auth.register_anti')); + return Redirect::back()->withInput($request->except('code'))->withErrors(trans('auth.register.error.throttle')); } } - // 获取可用端口 + // 获取可用端口 TODO: 修改判断&提示 $port = Helpers::getPort(); if ($port > sysConfig('max_port')) { - return Redirect::back()->withInput()->withErrors(trans('auth.register_close')); + return Redirect::back()->withInput()->withErrors(trans('auth.register.error.disable')); } // 获取aff @@ -299,7 +281,7 @@ class AuthController extends Controller // 注册失败,抛出异常 if (! $user) { - return Redirect::back()->withInput()->withErrors(trans('auth.register_fail')); + return Redirect::back()->withInput()->withErrors(trans('auth.register.failed')); } // 注册次数+1 @@ -326,10 +308,11 @@ class AuthController extends Controller $token = $this->addVerifyUrl($user->id, $user->email); $activeUserUrl = route('activeAccount', $token); - $logId = Helpers::addNotificationLog('注册激活', '请求地址:'.$activeUserUrl, 1, $user->email); + $logId = Helpers::addNotificationLog(trans('common.active_item', ['attribute' => trans('auth.register.attribute')]), + trans('common.request_url').':'.$activeUserUrl, 1, $user->email); Mail::to($user->email)->send(new activeUser($logId, $activeUserUrl)); - Session::flash('successMsg', trans('auth.register_active_tip')); + Session::flash('successMsg', trans('auth.active.sent')); } else { // 则直接给推荐人加流量 if ($inviter_id) { @@ -343,7 +326,7 @@ class AuthController extends Controller $user->update(['status' => 1]); } - Session::flash('successMsg', trans('auth.register_success')); + Session::flash('successMsg', trans('auth.register.success')); } return Redirect::route('login')->withInput(); @@ -359,28 +342,28 @@ class AuthController extends Controller case 1: if (in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) { if ($returnType) { - return Redirect::back()->withErrors(trans('auth.email_banned')); + return Redirect::back()->withErrors(trans('auth.email.error.banned')); } - return Response::json(['status' => 'fail', 'message' => trans('auth.email_banned')]); + return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.banned')]); } break; //白名单 case 2: if (! in_array(strtolower($emailSuffix[1]), $emailFilterList, true)) { if ($returnType) { - return Redirect::back()->withErrors(trans('auth.email_invalid')); + return Redirect::back()->withErrors(trans('auth.email.error.invalid')); } - return Response::json(['status' => 'fail', 'message' => trans('auth.email_invalid')]); + return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]); } break; default: if ($returnType) { - return Redirect::back()->withErrors(trans('auth.email_invalid')); + return Redirect::back()->withErrors(trans('auth.email.error.invalid')); } - return Response::json(['status' => 'fail', 'message' => trans('auth.email_invalid')]); + return Response::json(['status' => 'fail', 'message' => trans('auth.email.error.invalid')]); } return false; @@ -439,10 +422,7 @@ class AuthController extends Controller if ($request->isMethod('POST')) { // 校验请求 $validator = Validator::make($request->all(), [ - 'email' => 'required|email', - ], [ - 'email.required' => trans('auth.email_null'), - 'email.email' => trans('auth.email_legitimate'), + 'email' => 'required|email|exists:user,email', ]); if ($validator->fails()) { @@ -453,21 +433,18 @@ class AuthController extends Controller // 是否开启重设密码 if (! sysConfig('is_reset_password')) { - return Redirect::back()->withErrors(trans('auth.reset_password_close', ['email' => sysConfig('webmaster_email')])); + return Redirect::back()->withErrors(trans('auth.password.reset.error.disabled', ['email' => sysConfig('webmaster_email')])); } // 查找账号 $user = User::whereEmail($email)->first(); - if (! $user) { - return Redirect::back()->withErrors(trans('auth.email_notExist')); - } // 24小时内重设密码次数限制 $resetTimes = 0; if (Cache::has('resetPassword_'.md5($email))) { $resetTimes = Cache::get('resetPassword_'.md5($email)); if ($resetTimes >= sysConfig('reset_password_times')) { - return Redirect::back()->withErrors(trans('auth.reset_password_limit', ['time' => sysConfig('reset_password_times')])); + return Redirect::back()->withErrors(trans('auth.password.reset.error.throttle', ['time' => sysConfig('reset_password_times')])); } } @@ -477,12 +454,12 @@ class AuthController extends Controller // 发送邮件 $resetPasswordUrl = route('resettingPasswd', $token); - $logId = Helpers::addNotificationLog('重置密码', '请求地址:'.$resetPasswordUrl, 1, $email); + $logId = Helpers::addNotificationLog(trans('auth.password.reset.attribute'), trans('common.request_url').':'.$resetPasswordUrl, 1, $email); Mail::to($email)->send(new resetPassword($logId, $resetPasswordUrl)); Cache::put('resetPassword_'.md5($email), $resetTimes + 1, Day); - return Redirect::back()->with('successMsg', trans('auth.reset_password_success_tip')); + return Redirect::back()->with('successMsg', trans('auth.password.reset.sent')); } return view('auth.resetPassword'); @@ -498,13 +475,6 @@ class AuthController extends Controller if ($request->isMethod('POST')) { $validator = Validator::make($request->all(), [ 'password' => 'required|min:6|confirmed', - 'password_confirmation' => 'required|same:password', - ], [ - 'password.required' => trans('auth.password_null'), - 'password.min' => trans('auth.password_limit'), - 'password_confirmation.required' => trans('auth.password_null'), - 'password_confirmation.min' => trans('auth.password_limit'), - 'password_confirmation.same' => trans('auth.password_same'), ]); if ($validator->fails()) { @@ -519,28 +489,28 @@ class AuthController extends Controller return Redirect::route('login'); } - if ($verify->status === 1) { - return Redirect::back()->withErrors(trans('auth.overtime')); + if ($user->status === -1) { + return Redirect::back()->withErrors(trans('auth.error.account_baned')); } - if ($user->status < 0) { - return Redirect::back()->withErrors(trans('auth.email_banned')); + if ($verify->status === 1) { + return Redirect::back()->withErrors(trans('auth.error.url_timeout')); } if (Hash::check($password, $verify->user->password)) { - return Redirect::back()->withErrors(trans('auth.reset_password_same_fail')); + return Redirect::back()->withErrors(trans('auth.password.reset.error.same')); } // 更新密码 if (! $user->update(['password' => $password])) { - return Redirect::back()->withErrors(trans('auth.reset_password_fail')); + return Redirect::back()->withErrors(trans('auth.password.reset.error.failed')); } // 置为已使用 $verify->status = 1; $verify->save(); - return Redirect::route('login')->with('successMsg', trans('auth.reset_password_new')); + return Redirect::route('login')->with('successMsg', trans('auth.password.reset.success')); } $verify = Verify::type(1)->whereToken($token)->first(); @@ -561,13 +531,7 @@ class AuthController extends Controller public function activeUser(Request $request) { if ($request->isMethod('POST')) { - $validator = Validator::make($request->all(), [ - 'email' => 'required|email|exists:user,email', - ], [ - 'email.required' => trans('auth.email_null'), - 'email.email' => trans('auth.email_legitimate'), - 'email.exists' => trans('auth.email_notExist'), - ]); + $validator = Validator::make($request->all(), ['email' => 'required|email|exists:user,email']); if ($validator->fails()) { return Redirect::back()->withInput()->withErrors($validator->errors()); @@ -576,18 +540,18 @@ class AuthController extends Controller $email = $request->input('email'); // 是否开启账号激活 - if ((int) sysConfig('is_activate_account') !== 2) { - return Redirect::back()->withInput()->withErrors(trans('auth.active_close', ['email' => sysConfig('webmaster_email')])); + if (! sysConfig('is_activate_account')) { + return Redirect::back()->withInput()->withErrors(trans('auth.active.error.disable')); } // 查找账号 $user = User::whereEmail($email)->firstOrFail(); - if ($user->status < 0) { - return Redirect::back()->withErrors(trans('auth.login_ban', ['email' => sysConfig('webmaster_email')])); + if ($user->status === -1) { + return Redirect::back()->withErrors(trans('auth.error.account_baned')); } - if ($user->status > 0) { - return Redirect::back()->withErrors(trans('auth.email_normal')); + if ($user->status === 1) { + return Redirect::back()->withErrors(trans('auth.active.error.activated')); } // 24小时内激活次数限制 @@ -595,7 +559,7 @@ class AuthController extends Controller if (Cache::has('activeUser_'.md5($email))) { $activeTimes = Cache::get('activeUser_'.md5($email)); if ($activeTimes >= sysConfig('active_times')) { - return Redirect::back()->withErrors(trans('auth.active_limit', ['time' => sysConfig('webmaster_email')])); + return Redirect::back()->withErrors(trans('auth.active.error.throttle', ['email' => sysConfig('webmaster_email')])); } } @@ -605,12 +569,12 @@ class AuthController extends Controller // 发送邮件 $activeUserUrl = route('activeAccount', $token); - $logId = Helpers::addNotificationLog('激活账号', '请求地址:'.$activeUserUrl, 1, $email); + $logId = Helpers::addNotificationLog(trans('common.active_item', ['attribute' => trans('common.account')]), trans('common.request_url').':'.$activeUserUrl, 1, $email); Mail::to($email)->send(new activeUser($logId, $activeUserUrl)); Cache::put('activeUser_'.md5($email), $activeTimes + 1, Day); - return Redirect::back()->with('successMsg', trans('auth.register_active_tip')); + return Redirect::back()->with('successMsg', trans('auth.active.sent')); } return view('auth.activeUser'); @@ -630,19 +594,19 @@ class AuthController extends Controller } if (empty($user) || $verify->status > 0) { - Session::flash('errorMsg', trans('auth.overtime')); + Session::flash('errorMsg', trans('auth.error.url_timeout')); return view('auth.active'); } - if ($user->status !== 0) { - Session::flash('errorMsg', trans('auth.email_normal')); + if ($user->status === 1) { + Session::flash('errorMsg', trans('auth.active.error.activated')); return view('auth.active'); } if (time() - strtotime($verify->created_at) >= 1800) { - Session::flash('errorMsg', trans('auth.overtime')); + Session::flash('errorMsg', trans('auth.error.url_timeout')); // 置为已失效 $verify->status = 2; @@ -653,7 +617,7 @@ class AuthController extends Controller // 更新账号状态 if (! $user->update(['status' => 1])) { - Session::flash('errorMsg', trans('auth.active_fail')); + Session::flash('errorMsg', trans('common.active_item', ['attribute' => trans('common.failed')])); return Redirect::back(); } @@ -668,7 +632,7 @@ class AuthController extends Controller $inviter->incrementData(sysConfig('referral_traffic') * MB); } - Session::flash('successMsg', trans('auth.active_success')); + Session::flash('successMsg', trans('common.active_item', ['attribute' => trans('common.success')])); return view('auth.active'); } @@ -676,13 +640,7 @@ class AuthController extends Controller // 发送注册验证码 public function sendCode(Request $request) { - $validator = Validator::make($request->all(), [ - 'email' => 'required|email|unique:user,email', - ], [ - 'email.required' => trans('auth.email_null'), - 'email.email' => trans('auth.email_legitimate'), - 'email.unique' => trans('auth.email_exist'), - ]); + $validator = Validator::make($request->all(), ['email' => 'required|email|unique:user,email']); $email = $request->input('email'); @@ -701,24 +659,24 @@ class AuthController extends Controller // 是否开启注册发送验证码 if ((int) sysConfig('is_activate_account') !== 1) { - return Response::json(['status' => 'fail', 'message' => trans('auth.captcha_close')]); + return Response::json(['status' => 'fail', 'message' => trans('auth.active.error.disable')]); } // 防刷机制 if (Cache::has('send_verify_code_'.md5($ip))) { - return Response::json(['status' => 'fail', 'message' => trans('auth.register_anti')]); + return Response::json(['status' => 'fail', 'message' => trans('auth.register.error.throttle')]); } // 发送邮件 $code = Str::random(6); - $logId = Helpers::addNotificationLog('发送注册验证码', '验证码:'.$code, 1, $email); + $logId = Helpers::addNotificationLog(trans('auth.register.code'), trans('auth.captcha.attribute').':'.$code, 1, $email); Mail::to($email)->send(new sendVerifyCode($logId, $code)); VerifyCode::create(['address' => $email, 'code' => $code]); // 生成注册验证码 Cache::put('send_verify_code_'.md5($ip), $ip, Minute); - return Response::json(['status' => 'success', 'message' => trans('auth.captcha_send')]); + return Response::json(['status' => 'success', 'message' => trans('auth.captcha.sent')]); } // 公开的邀请码列表 diff --git a/app/Http/Controllers/PaymentController.php b/app/Http/Controllers/PaymentController.php index fe5475b2..59fb6e8a 100644 --- a/app/Http/Controllers/PaymentController.php +++ b/app/Http/Controllers/PaymentController.php @@ -101,7 +101,7 @@ class PaymentController extends Controller // 充值余额 if ($credit) { if (! is_numeric($credit) || $credit <= 0) { - return Response::json(['status' => 'fail', 'message' => '充值余额不合规']); + return Response::json(['status' => 'fail', 'message' => trans('user.payment.error')]); } $amount = $credit; // 购买服务 @@ -215,7 +215,7 @@ class PaymentController extends Controller return view('user.payment', [ 'payment' => $payment, - 'name' => $goods->name ?? '余额充值', + 'name' => $goods->name ?? trans('user.recharge_credit'), 'days' => $goods->days ?? 0, 'pay_type' => $payment->order->pay_type_label ?: 0, 'pay_type_icon' => $payment->order->pay_type_icon, diff --git a/app/Http/Controllers/User/AffiliateController.php b/app/Http/Controllers/User/AffiliateController.php index 7a61bc85..2acaf40a 100644 --- a/app/Http/Controllers/User/AffiliateController.php +++ b/app/Http/Controllers/User/AffiliateController.php @@ -16,7 +16,7 @@ class AffiliateController extends Controller public function referral() { if (ReferralLog::uid()->doesntExist() && Order::uid()->whereStatus(2)->doesntExist()) { - return Response::view('auth.error', ['message' => '本功能对非付费用户禁用!请 返 回'], 402); + return Response::view('auth.error', ['message' => trans('user.purchase_required').''.trans('common.back').''], 402); } return view('user.referral', [ @@ -37,20 +37,22 @@ class AffiliateController extends Controller { // 判断账户是否过期 if (Auth::getUser()->expired_at < date('Y-m-d')) { - return Response::json(['status' => 'fail', 'message' => '申请失败:账号已过期,请先购买服务吧']); + return Response::json(['status' => 'fail', 'title' => trans('user.referral.failed'), 'message' => trans('user.referral.msg.account')]); } // 判断是否已存在申请 $referralApply = ReferralApply::uid()->whereIn('status', [0, 1])->first(); if ($referralApply) { - return Response::json(['status' => 'fail', 'message' => '申请失败:已存在申请,请等待之前的申请处理完']); + return Response::json(['status' => 'fail', 'title' => trans('user.referral.failed'), 'message' => trans('user.referral.msg.appliedd')]); } // 校验可以提现金额是否超过系统设置的阀值 $commission = ReferralLog::uid()->whereStatus(0)->sum('commission'); $commission /= 100; if ($commission < sysConfig('referral_money')) { - return Response::json(['status' => 'fail', 'message' => '申请失败:满'.sysConfig('referral_money').'元才可以提现,继续努力吧']); + return Response::json([ + 'status' => 'fail', 'title' => trans('user.referral.failed'), 'message' => trans('user.referral.msg.unfulfilled', ['amount' => sysConfig('referral_money')]), + ]); } $ref = new ReferralApply(); @@ -59,9 +61,9 @@ class AffiliateController extends Controller $ref->amount = $commission; $ref->link_logs = ReferralLog::uid()->whereStatus(0)->pluck('id')->toArray(); if ($ref->save()) { - return Response::json(['status' => 'success', 'message' => '申请成功,请等待管理员审核']); + return Response::json(['status' => 'success', 'title' => trans('user.referral.success'), 'message' => trans('user.referral.msg.wait')]); } - return Response::json(['status' => 'fail', 'message' => '申请失败,返利单建立失败,请稍后尝试或通知管理员']); + return Response::json(['status' => 'fail', 'title' => trans('user.referral.failed'), 'message' => trans('user.referral.msg.error')]); } } diff --git a/app/Http/Controllers/User/SubscribeController.php b/app/Http/Controllers/User/SubscribeController.php index 1dd59537..098557c8 100644 --- a/app/Http/Controllers/User/SubscribeController.php +++ b/app/Http/Controllers/User/SubscribeController.php @@ -28,38 +28,38 @@ class SubscribeController extends Controller // 检查订阅码是否有效 $subscribe = UserSubscribe::whereCode($code)->first(); if (! $subscribe) { - return $this->failed('使用链接错误!请重新获取!'); + return $this->failed(trans('error.subscribe.unknown')); } if ($subscribe->status !== 1) { - return $this->failed('链接已被封禁,请前往官网查询原因!'); + return $this->failed(trans('error.subscribe.sub_baned')); } // 检查用户是否有效 $user = $subscribe->user; if (! $user) { - return $this->failed('错误链接,账号不存在!请重新获取链接'); + return $this->failed(trans('error.subscribe.user')); } if ($user->status === -1) { - return $this->failed('账号被禁用!'); + return $this->failed(trans('error.subscribe.user_disable')); } if ($user->enable !== 1) { if ($user->ban_time) { - return $this->failed('账号封禁至'.$user->ban_time.',请解封后再更新!'); + return $this->failed(trans('error.subscribe.baned_until', ['time' => $user->ban_time])); } $unusedTraffic = $user->transfer_enable - $user->usedTraffic(); if ($unusedTraffic <= 0) { - return $this->failed('流量耗尽!请重新购买或重置流量!'); + return $this->failed(trans('error.subscribe.out')); } if ($user->expired_at < date('Y-m-d')) { - return $this->failed('账号过期!请续费!'); + return $this->failed(trans('error.subscribe.expired')); } - return $this->failed('账号存在问题,请前往官网查询!'); + return $this->failed(trans('error.subscribe.question')); } // 更新访问次数 @@ -79,7 +79,7 @@ class SubscribeController extends Controller $nodeList = $query->orderByDesc('sort')->orderBy('id')->get(); if (empty($nodeList)) { - return $this->failed('无可用节点'); + return $this->failed(trans('error.subscribe.none')); } $servers = []; diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index dc386759..582ea8ec 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -57,19 +57,19 @@ class UserController extends Controller } return view('user.index', array_merge([ - 'remainDays' => $expireTime < date('Y-m-d') ? -1 : Helpers::daysToNow($expireTime), - 'resetDays' => $user->reset_time ? Helpers::daysToNow($user->reset_time) : 0, - 'unusedTraffic' => flowAutoShow($unusedTraffic), - 'expireTime' => $expireTime, - 'banedTime' => $user->ban_time ?: 0, - 'unusedPercent' => $totalTransfer > 0 ? round($unusedTraffic / $totalTransfer, 2) * 100 : 0, - 'announcements' => Article::type(2)->take(5)->latest()->Paginate(1), // 公告 + 'remainDays' => $expireTime < date('Y-m-d') ? -1 : Helpers::daysToNow($expireTime), + 'resetDays' => $user->reset_time ? Helpers::daysToNow($user->reset_time) : 0, + 'unusedTraffic' => flowAutoShow($unusedTraffic), + 'expireTime' => $expireTime, + 'banedTime' => $user->ban_time, + 'unusedPercent' => $totalTransfer > 0 ? round($unusedTraffic / $totalTransfer, 2) * 100 : 0, + 'announcements' => Article::type(2)->take(5)->latest()->Paginate(1), // 公告 'isTrafficWarning' => $user->isTrafficWarning(), // 流量异常判断 - 'paying_user' => $user->activePayingUser(), // 付费用户判断 - 'userLoginLog' => $user->loginLogs()->latest()->first(), // 近期登录日志 + 'paying_user' => $user->activePayingUser(), // 付费用户判断 + 'userLoginLog' => $user->loginLogs()->latest()->first(), // 近期登录日志 'subscribe_status' => $user->subscribe->status, - 'subType' => $subType, - 'subUrl' => route('sub', $user->subscribe->code), + 'subType' => $subType, + 'subUrl' => route('sub', $user->subscribe->code), ], $this->dataFlowChart($user->id))); } @@ -79,28 +79,28 @@ class UserController extends Controller $user = auth()->user(); // 系统开启登录加积分功能才可以签到 if (! sysConfig('is_checkin')) { - return Response::json(['status' => 'fail', 'message' => '系统未开启签到功能']); + return Response::json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.home.attendance.disable')]); } // 已签到过,验证是否有效 if (Cache::has('userCheckIn_'.$user->id)) { - return Response::json(['status' => 'fail', 'message' => '已经签到过了,明天再来吧']); + return Response::json(['status' => 'success', 'title' => trans('common.success'), 'message' => trans('user.home.attendance.done')]); } $traffic = random_int((int) sysConfig('min_rand_traffic'), (int) sysConfig('max_rand_traffic')) * MB; if (! $user->incrementData($traffic)) { - return Response::json(['status' => 'fail', 'message' => '签到失败,系统异常']); + return Response::json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.home.attendance.failed')]); } // 写入用户流量变动记录 - Helpers::addUserTrafficModifyLog($user->id, null, $user->transfer_enable, $user->transfer_enable + $traffic, '[签到]'); + Helpers::addUserTrafficModifyLog($user->id, null, $user->transfer_enable, $user->transfer_enable + $traffic, trans('user.home.attendance.attribute')); // 多久后可以再签到 $ttl = sysConfig('traffic_limit_time') ? sysConfig('traffic_limit_time') * Minute : Day; Cache::put('userCheckIn_'.$user->id, '1', $ttl); - return Response::json(['status' => 'success', 'message' => '签到成功,系统送您 '.flowAutoShow($traffic).'流量']); + return Response::json(['status' => 'success', 'message' => trans('user.home.attendance.success', ['data' => flowAutoShow($traffic)])]); } // 节点列表 @@ -138,54 +138,53 @@ class UserController extends Controller { $user = auth()->user(); if ($request->isMethod('POST')) { - $old_password = $request->input('old_password'); - $new_password = $request->input('new_password'); - $username = $request->input('username'); - $wechat = $request->input('wechat'); - $qq = $request->input('qq'); - $passwd = $request->input('passwd'); - // 修改密码 - if ($old_password && $new_password) { - if (! Hash::check($old_password, $user->password)) { - return Redirect::back()->withErrors('旧密码错误,请重新输入'); + if ($request->has(['password', 'new_password'])) { + $data = $request->only(['password', 'new_password']); + + if (! Hash::check($data['password'], $user->password)) { + return Redirect::back()->withErrors(trans('auth.password.reset.error.wrong')); } - if (Hash::check($new_password, $user->password)) { - return Redirect::back()->withErrors('新密码不可与旧密码一样,请重新输入'); + if (Hash::check($data['new_password'], $user->password)) { + return Redirect::back()->withErrors(trans('auth.password.reset.error.same')); } // 演示环境禁止改管理员密码 if ($user->id === 1 && config('app.demo')) { - return Redirect::back()->withErrors('演示环境禁止修改管理员密码'); + return Redirect::back()->withErrors(trans('auth.password.reset.error.demo')); } - if (! $user->update(['password' => $new_password])) { - return Redirect::back()->withErrors('修改失败'); + if (! $user->update(['password' => $data['new_password']])) { + return Redirect::back()->withErrors(trans('common.update_action', ['action' => trans('common.failed')])); } - return Redirect::back()->with('successMsg', '修改成功'); + return Redirect::back()->with('successMsg', trans('common.update_action', ['action' => trans('common.success')])); // 修改代理密码 } - if ($passwd) { + if ($request->has('passwd')) { + $passwd = $request->input('passwd'); if (! $user->update(['passwd' => $passwd])) { - return Redirect::back()->withErrors('修改失败'); + return Redirect::back()->withErrors(trans('common.update_action', ['action' => trans('common.failed')])); } - return Redirect::back()->with('successMsg', '修改成功'); + return Redirect::back()->with('successMsg', trans('common.update_action', ['action' => trans('common.success')])); } // 修改联系方式 - if (empty($username)) { - return Redirect::back()->withErrors('修改失败,昵称不能为空值'); + if ($request->has(['username', 'wechat', 'qq'])) { + $data = $request->only(['username', 'wechat', 'qq']); + if (empty($data['username'])) { + return Redirect::back()->withErrors(trans('validation.required', ['attribute' => trans('validation.attributes.username')])); + } + + if (! $user->update($data)) { + return Redirect::back()->withErrors(trans('common.update_action', ['action' => trans('common.failed')])); + } } - if (! $user->update(['username' => $username, 'wechat' => $wechat, 'qq' => $qq])) { - return Redirect::back()->withErrors('修改失败'); - } - - return Redirect::back()->with('successMsg', '修改成功'); + return Redirect::back()->with('successMsg', trans('common.update_action', ['action' => trans('common.success')])); } return view('user.profile'); @@ -203,9 +202,9 @@ class UserController extends Controller return view('user.services', [ 'chargeGoodsList' => Goods::type(3)->whereStatus(1)->orderBy('price')->limit(10)->get(), - 'goodsList' => Goods::whereStatus(1)->where('type', '<=', '2')->orderByDesc('type')->orderByDesc('sort')->paginate(10)->appends($request->except('page')), - 'renewTraffic' => $renewPrice->renew ?? 0, - 'dataPlusDays' => $dataPlusDays > date('Y-m-d') ? Helpers::daysToNow($dataPlusDays) : 0, + 'goodsList' => Goods::whereStatus(1)->where('type', '<=', '2')->orderByDesc('type')->orderByDesc('sort')->paginate(10)->appends($request->except('page')), + 'renewTraffic' => $renewPrice->renew ?? 0, + 'dataPlusDays' => $dataPlusDays > date('Y-m-d') ? Helpers::daysToNow($dataPlusDays) : 0, ]); } @@ -216,7 +215,7 @@ class UserController extends Controller $order = Order::userActivePlan()->firstOrFail(); $renewCost = $order->goods->renew; if ($user->credit < $renewCost) { - return Response::json(['status' => 'fail', 'message' => '余额不足,请充值余额']); + return Response::json(['status' => 'fail', 'message' => trans('user.reset_data.lack')]); } $user->update(['u' => 0, 'd' => 0]); @@ -225,9 +224,9 @@ class UserController extends Controller $user->updateCredit(-$renewCost); // 记录余额操作日志 - Helpers::addUserCreditLog($user->id, null, $user->credit, $user->credit - $renewCost, -1 * $renewCost, '用户自行重置流量'); + Helpers::addUserCreditLog($user->id, null, $user->credit, $user->credit - $renewCost, -1 * $renewCost, trans('user.reset_data.logs')); - return Response::json(['status' => 'success', 'message' => '重置成功']); + return Response::json(['status' => 'success', 'message' => trans('user.reset_data.success')]); } // 工单 @@ -242,7 +241,7 @@ class UserController extends Controller public function invoices(Request $request) { return view('user.invoices', [ - 'orderList' => auth()->user()->orders()->with(['goods', 'payment'])->orderByDesc('id')->paginate(10)->appends($request->except('page')), + 'orderList' => auth()->user()->orders()->with(['goods', 'payment'])->orderByDesc('id')->paginate(10)->appends($request->except('page')), 'prepaidPlan' => Order::userPrepay()->exists(), ]); } @@ -255,13 +254,13 @@ class UserController extends Controller if ($activePlan->save()) { // 关闭先前套餐后,新套餐自动运行 if (Order::userActivePlan()->exists()) { - return Response::json(['status' => 'success', 'message' => '激活成功']); + return Response::json(['status' => 'success', 'message' => trans('common.active_item', ['attribute' => trans('common.success')])]); } - return Response::json(['status' => 'success', 'message' => '关闭']); + return Response::json(['status' => 'success', 'message' => trans('common.close')]); } - return Response::json(['status' => 'fail', 'message' => '关闭失败']); + return Response::json(['status' => 'fail', 'message' => trans('common.close_item', ['attribute' => trans('common.failed')])]); } // 订单明细 @@ -279,12 +278,14 @@ class UserController extends Controller $content = str_replace(['atob', 'eval'], '', $content); if (empty($title) || empty($content)) { - return Response::json(['status' => 'fail', 'message' => '请输入标题和内容']); + return Response::json([ + 'status' => 'fail', 'message' => trans('validation.required', ['attribute' => trans('validation.attributes.title').'&'.trans('validation.attributes.content')]), + ]); } - if ($user->tickets()->create(['title' => $title, 'content' => $content])) { - $emailTitle = '新工单提醒'; - $content = '标题:【'.$title.'】
用户:'.$user->email.'
内容:'.$content; + if ($user->tickets()->create(compact('title', 'content'))) { + $emailTitle = trans('common.new').trans('user.ticket.attribute'); + $content = trans('validation.attributes.title').':【'.$title.'】
'.trans('validation.attributes.email').':'.$user->email.'
'.trans('validation.attributes.content').':'.$content; // 发邮件通知管理员 if (sysConfig('webmaster_email')) { @@ -294,10 +295,10 @@ class UserController extends Controller PushNotification::send($emailTitle, $content); - return Response::json(['status' => 'success', 'message' => '提交成功']); + return Response::json(['status' => 'success', 'message' => trans('common.submit_item', ['attribute' => trans('common.success')])]); } - return Response::json(['status' => 'fail', 'message' => '提交失败']); + return Response::json(['status' => 'fail', 'message' => trans('common.submit_item', ['attribute' => trans('common.failed')])]); } // 回复工单 @@ -311,11 +312,13 @@ class UserController extends Controller $content = substr(str_replace(['atob', 'eval'], '', clean($request->input('content'))), 0, 300); if (empty($content)) { - return Response::json(['status' => 'fail', 'message' => '回复内容不能为空']); + return Response::json([ + 'status' => 'fail', 'message' => trans('validation.required', ['attribute' => trans('validation.attributes.title').'&'.trans('validation.attributes.content')]), + ]); } if ($ticket->status === 2) { - return Response::json(['status' => 'fail', 'message' => '错误:该工单已关闭']); + return Response::json(['status' => 'fail', 'message' => trans('user.ticket.failed_closed')]); } if ($ticket->reply()->create(['user_id' => auth()->id(), 'content' => $content])) { @@ -323,8 +326,8 @@ class UserController extends Controller $ticket->status = 0; $ticket->save(); - $title = '工单回复提醒'; - $content = '标题:【'.$ticket->title.'】
用户回复:'.$content; + $title = trans('user.ticket.attribute').trans('user.ticket.reply'); + $content = trans('validation.attributes.title').':【'.$ticket->title.'】
'.trans('user.ticket.reply').':'.$content; // 发邮件通知管理员 if (sysConfig('webmaster_email')) { @@ -334,14 +337,14 @@ class UserController extends Controller PushNotification::send($title, $content); - return Response::json(['status' => 'success', 'message' => '回复成功']); + return Response::json(['status' => 'success', 'message' => trans('user.ticket.reply').trans('common.success')]); } - return Response::json(['status' => 'fail', 'message' => '回复失败']); + return Response::json(['status' => 'fail', 'message' => trans('user.ticket.reply').trans('common.failed')]); } return view('user.replyTicket', [ - 'ticket' => $ticket, + 'ticket' => $ticket, 'replyList' => $ticket->reply()->with('user')->oldest()->get(), ]); } @@ -352,12 +355,12 @@ class UserController extends Controller $id = $request->input('id'); if (Ticket::uid()->whereId($id)->close()) { - PushNotification::send('工单关闭提醒', '工单:ID'.$id.'用户已手动关闭'); + PushNotification::send(trans('common.close_item', ['attribute' => trans('user.ticket.attribute')]), trans('user.ticket.close_msg', ['id' => $id])); - return Response::json(['status' => 'success', 'message' => '关闭成功']); + return Response::json(['status' => 'success', 'message' => trans('common.close_item', ['attribute' => trans('common.success')])]); } - return Response::json(['status' => 'fail', 'message' => '关闭失败']); + return Response::json(['status' => 'fail', 'message' => trans('common.close_item', ['attribute' => trans('common.failed')])]); } // 邀请码 @@ -366,14 +369,14 @@ class UserController extends Controller if (Order::uid()->active()->where('origin_amount', '>', 0)->doesntExist()) { return Response::view( 'auth.error', - ['message' => '本功能对非付费用户禁用!请 返 回'], + ['message' => trans('user.purchase_required').' '.trans('common.back').''], 402 ); } return view('user.invite', [ - 'num' => auth()->user()->invite_num, // 还可以生成的邀请码数量 - 'inviteList' => Invite::uid()->with(['invitee', 'inviter'])->paginate(10), // 邀请码列表 + 'num' => auth()->user()->invite_num, // 还可以生成的邀请码数量 + 'inviteList' => Invite::uid()->with(['invitee', 'inviter'])->paginate(10), // 邀请码列表 'referral_traffic' => flowAutoShow(sysConfig('referral_traffic') * MB), 'referral_percent' => sysConfig('referral_percent'), ]); @@ -384,7 +387,7 @@ class UserController extends Controller { $user = auth()->user(); if ($user->invite_num <= 0) { - return Response::json(['status' => 'fail', 'message' => '生成失败:已无邀请码生成名额']); + return Response::json(['status' => 'fail', 'message' => trans('user.invite.generate_failed')]); } $obj = new Invite(); @@ -395,10 +398,10 @@ class UserController extends Controller if ($obj) { $user->update(['invite_num' => $user->invite_num - 1]); - return Response::json(['status' => 'success', 'message' => '生成成功']); + return Response::json(['status' => 'success', 'message' => trans('common.generate_item', ['attribute' => trans('common.success')])]); } - return Response::json(['status' => 'fail', 'message' => '生成邀请码失败']); + return Response::json(['status' => 'fail', 'message' => trans('common.generate_item', ['attribute' => trans('common.failed')])]); } // 使用优惠券 @@ -408,44 +411,46 @@ class UserController extends Controller $good_price = $request->input('price'); if (empty($coupon_sn)) { - return Response::json(['status' => 'fail', 'title' => '使用失败', 'message' => '请输入您的优惠劵!']); + return Response::json([ + 'status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('validation.required', ['attribute' => trans('user.coupon.attribute')]), + ]); } $coupon = Coupon::whereSn($coupon_sn)->whereIn('type', [1, 2])->first(); if (! $coupon) { - return Response::json(['status' => 'fail', 'title' => '优惠券不存在', 'message' => '请确认优惠券是否输入正确!']); + return Response::json(['status' => 'fail', 'title' => trans('common.failed'), 'message' => trans('user.unknown').trans('user.coupon.attribute')]); } if ($coupon->status === 1) { - return Response::json(['status' => 'fail', 'title' => '抱歉', 'message' => '优惠券已被使用!']); + return Response::json(['status' => 'fail', 'title' => trans('common.sorry'), 'message' => trans('user.coupon.attribute').trans('user.status.used')]); } if ($coupon->status === 2) { - return Response::json(['status' => 'fail', 'title' => '抱歉', 'message' => '优惠券已失效!']); + return Response::json(['status' => 'fail', 'title' => trans('common.sorry'), 'message' => trans('user.coupon.attribute').trans('user.status.expired')]); } - if ($coupon->end_time < time()) { + if ($coupon->getRawOriginal('end_time') < time()) { $coupon->status = 2; $coupon->save(); - return Response::json(['status' => 'fail', 'title' => '抱歉', 'message' => '优惠券已失效!']); + return Response::json(['status' => 'fail', 'title' => trans('common.sorry'), 'message' => trans('user.coupon.attribute').trans('user.status.expired')]); } if ($coupon->start_time > date('Y-m-d H:i:s')) { - return Response::json(['status' => 'fail', 'title' => '优惠券尚未生效', 'message' => '请等待活动正式开启']); + return Response::json(['status' => 'fail', 'title' => trans('user.coupon.inactive'), 'message' => trans('user.coupon.wait_active', ['time' => $coupon->start_time])]); } if ($good_price < $coupon->rule) { - return Response::json(['status' => 'fail', 'title' => '使用条件未满足', 'message' => '请购买价格更高的套餐']); + return Response::json(['status' => 'fail', 'title' => trans('user.coupon.limit'), 'message' => trans('user.coupon.higher', ['amount' => $coupon->rule])]); } $data = [ - 'name' => $coupon->name, - 'type' => $coupon->type, + 'name' => $coupon->name, + 'type' => $coupon->type, 'value' => $coupon->value, ]; - return Response::json(['status' => 'success', 'data' => $data, 'message' => '优惠券有效']); + return Response::json(['status' => 'success', 'data' => $data, 'message' => trans('common.applied', ['attribute' => trans('user.coupon.attribute')])]); } // 购买服务 @@ -457,8 +462,8 @@ class UserController extends Controller return view('user.buy', [ 'dataPlusDays' => $dataPlusDays > date('Y-m-d') ? Helpers::daysToNow($dataPlusDays) : 0, - 'activePlan' => Order::userActivePlan()->exists(), - 'goods' => $good, + 'activePlan' => Order::userActivePlan()->exists(), + 'goods' => $good, ]); } @@ -482,24 +487,24 @@ class UserController extends Controller $subscribe_link = route('sub', $subscribe->code); return view('user.help', [ - 'sub' => $data, - 'paying_user' => auth()->user()->activePayingUser(), // 付费用户判断 - 'Shadowrocket_install' => 'itms-services://?action=download-manifest&url='.sysConfig('website_url').'/clients/Shadowrocket.plist', // 客户端安装 - 'Quantumult_install' => 'itms-services://?action=download-manifest&url='.sysConfig('website_url').'/clients/Quantumult.plist', // 客户端安装 - 'subscribe_status' => $subscribe->status, // 订阅连接 - 'link' => $subscribe_link, - 'subscribe_link' => 'sub://'.base64url_encode($subscribe_link), - 'Shadowrocket_link' => 'shadowrocket://add/sub://'.base64url_encode($subscribe_link).'?remarks='.urlencode(sysConfig('website_name').' '.sysConfig('website_url')), + 'sub' => $data, + 'paying_user' => auth()->user()->activePayingUser(), // 付费用户判断 + 'Shadowrocket_install' => 'itms-services://?action=download-manifest&url='.sysConfig('website_url').'/clients/Shadowrocket.plist', // 客户端安装 + 'Quantumult_install' => 'itms-services://?action=download-manifest&url='.sysConfig('website_url').'/clients/Quantumult.plist', // 客户端安装 + 'subscribe_status' => $subscribe->status, // 订阅连接 + 'link' => $subscribe_link, + 'subscribe_link' => 'sub://'.base64url_encode($subscribe_link), + 'Shadowrocket_link' => 'shadowrocket://add/sub://'.base64url_encode($subscribe_link).'?remarks='.urlencode(sysConfig('website_name').' '.sysConfig('website_url')), 'Shadowrocket_linkQrcode' => 'sub://'.base64url_encode($subscribe_link).'#'.base64url_encode(sysConfig('website_name')), - 'Clash_link' => "clash://install-config?url={$subscribe_link}", - 'Surge_link' => "surge:///install-config?url={$subscribe_link}", - 'Quantumultx' => 'quantumult-x:///update-configuration?remote-resource='.json_encode([ - 'server_remote' => "{$subscribe_link}, tag=".urlencode(sysConfig('website_name').' '.sysConfig('website_url')), - 'filter_remote' => '', + 'Clash_link' => "clash://install-config?url={$subscribe_link}", + 'Surge_link' => "surge:///install-config?url={$subscribe_link}", + 'Quantumultx' => 'quantumult-x:///update-configuration?remote-resource='.json_encode([ + 'server_remote' => "{$subscribe_link}, tag=".urlencode(sysConfig('website_name').' '.sysConfig('website_url')), + 'filter_remote' => '', 'rewrite_remote' => '', ]), - 'Quantumult_linkOut' => 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Pro.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Rejection.conf'), - 'Quantumult_linkIn' => 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/BacktoCN.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Rejection.conf'), + 'Quantumult_linkOut' => 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Pro.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Rejection.conf'), + 'Quantumult_linkIn' => 'quantumult://configuration?server='.base64url_encode($subscribe_link).'&filter='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/BacktoCN.conf').'&rejection='.base64url_encode('https://raw.githubusercontent.com/ZBrettonYe/VPN-Rules-Collection/master/Profiles/Quantumult/Rejection.conf'), ]); } @@ -517,13 +522,13 @@ class UserController extends Controller DB::commit(); - return Response::json(['status' => 'success', 'message' => '更换成功']); + return Response::json(['status' => 'success', 'message' => trans('common.replace').trans('common.success')]); } catch (Exception $e) { DB::rollBack(); - Log::error('更换订阅地址异常:'.$e->getMessage()); + Log::error(trans('user.subscribe.error').':'.$e->getMessage()); - return Response::json(['status' => 'fail', 'message' => '更换失败'.$e->getMessage()]); + return Response::json(['status' => 'fail', 'message' => trans('common.replace').trans('common.failed').$e->getMessage()]); } } @@ -531,17 +536,17 @@ class UserController extends Controller public function switchToAdmin(): JsonResponse { if (! Session::has('admin')) { - return Response::json(['status' => 'fail', 'message' => '非法请求']); + return Response::json(['status' => 'fail', 'message' => trans('error.unauthorized')]); } // 管理员信息重新写入user $user = auth()->loginUsingId(Session::get('admin')); Session::forget('admin'); if ($user) { - return Response::json(['status' => 'success', 'message' => '身份切换成功']); + return Response::json(['status' => 'success', 'message' => trans('toggle_action', ['action' => trans('common.success')])]); } - return Response::json(['status' => 'fail', 'message' => '身份切换失败']); + return Response::json(['status' => 'fail', 'message' => trans('toggle_action', ['action' => trans('common.failed')])]); } public function charge(Request $request): ?JsonResponse @@ -552,7 +557,7 @@ class UserController extends Controller $query->whereType(3)->whereStatus(0); }), ], - ], ['coupon_sn.required' => '券码不能为空', 'coupon_sn.exists' => '该券不可用']); + ]); if ($validator->fails()) { return Response::json(['status' => 'fail', 'message' => $validator->errors()->all()]); @@ -564,7 +569,8 @@ class UserController extends Controller DB::beginTransaction(); // 写入日志 $user = auth()->user(); - Helpers::addUserCreditLog($user->id, null, $user->credit, $user->credit + $coupon->value, $coupon->value, '用户手动充值 - [充值券:'.$request->input('coupon_sn').']'); + Helpers::addUserCreditLog($user->id, null, $user->credit, $user->credit + $coupon->value, $coupon->value, + trans('user.recharge').' - ['.trans('user.coupon.recharge').':'.$request->input('coupon_sn').']'); // 余额充值 $user->updateCredit($coupon->value); @@ -573,16 +579,16 @@ class UserController extends Controller $coupon->update(['status' => 1]); // 写入卡券日志 - Helpers::addCouponLog('账户余额充值使用', $coupon->id); + Helpers::addCouponLog(trans('user.recharge_credit'), $coupon->id); DB::commit(); - return Response::json(['status' => 'success', 'message' => '充值成功']); + return Response::json(['status' => 'success', 'message' => trans('user.recharge').trans('common.success')]); } catch (Exception $e) { - Log::error('卡劵充值错误:'.$e->getMessage()); + Log::error(trans('user.recharge').trans('common.failed').$e->getMessage()); DB::rollBack(); - return Response::json(['status' => 'fail', 'message' => '充值失败']); + return Response::json(['status' => 'fail', 'message' => trans('user.recharge').trans('common.failed')]); } } } diff --git a/app/Http/Middleware/isForbidden.php b/app/Http/Middleware/isForbidden.php index 01ae9fab..6d755e3b 100644 --- a/app/Http/Middleware/isForbidden.php +++ b/app/Http/Middleware/isForbidden.php @@ -25,7 +25,7 @@ class isForbidden if (sysConfig('is_forbid_robot') && Agent::isRobot()) { Log::info('识别到机器人访问('.IP::getClientIp().')'); - return Response::view('auth.error', ['message' => trans('error.ForbiddenRobot')], 403); + return Response::view('auth.error', ['message' => trans('error.forbidden.bots')], 403); } // 拒绝通过订阅链接域名访问网站,防止网站被探测 @@ -41,7 +41,7 @@ class isForbidden // 拒绝无IP请求 if (! $ipLocation || empty(array_filter($ipLocation))) { - return Response::view('auth.error', ['message' => trans('error.ForbiddenAccess')], 403); + return Response::view('auth.error', ['message' => trans('error.forbidden.access')], 403); } if (! in_array($ipLocation['country'], ['本机地址', '局域网']) && sysConfig('forbid_mode')) { @@ -51,21 +51,21 @@ class isForbidden if (in_array($ipLocation['country'], ['China', '中国']) && ! in_array($ipLocation['province'], ['香港', '澳门', '台湾', '台湾省'])) { Log::info('识别到大陆IP,拒绝访问:'.$ip); - return Response::view('auth.error', ['message' => trans('error.ForbiddenChina')], 403); + return Response::view('auth.error', ['message' => trans('error.forbidden.china')], 403); } break; case 'ban_china': if (in_array($ipLocation['country'], ['China', '中国', 'Taiwan', 'Hong Kong', 'Macao'])) { Log::info('识别到中国IP,拒绝访问:'.$ip); - return Response::view('auth.error', ['message' => trans('error.ForbiddenChina')], 403); + return Response::view('auth.error', ['message' => trans('error.forbidden.china')], 403); } break; case 'ban_oversea': if (! in_array($ipLocation['country'], ['China', '中国', 'Taiwan', 'Hong Kong', 'Macao'])) { Log::info('识别到海外IP,拒绝访问:'.$ip.' - '.$ipLocation['country']); - return Response::view('auth.error', ['message' => trans('error.ForbiddenOversea')], 403); + return Response::view('auth.error', ['message' => trans('error.forbidden.oversea')], 403); } break; default: diff --git a/app/Http/Middleware/isSecurity.php b/app/Http/Middleware/isSecurity.php index 3d2eb4df..c47e03a0 100644 --- a/app/Http/Middleware/isSecurity.php +++ b/app/Http/Middleware/isSecurity.php @@ -27,12 +27,12 @@ class isSecurity if ($websiteSecurityCode && ! Cache::has($cacheKey)) { if ($code !== $websiteSecurityCode) { - Log::info('拒绝非安全入口访问('.$ip.')'); + Log::info(trans('error.unsafe_enter').$ip); return Response::view( 'auth.error', [ - 'message' => trans('error.SecurityError').','.trans('error.Visit').''.trans('error.SecurityEnter').'', + 'message' => trans('error.unsafe_enter').','.trans('error.visit').''.trans('error.safe_enter').'', ], 403 ); diff --git a/app/Http/Requests/Auth/RegisterRequest.php b/app/Http/Requests/Auth/RegisterRequest.php index 6c7fa5ef..ba5ab48e 100644 --- a/app/Http/Requests/Auth/RegisterRequest.php +++ b/app/Http/Requests/Auth/RegisterRequest.php @@ -12,23 +12,7 @@ class RegisterRequest extends FormRequest 'username' => 'required', 'email' => 'required|email|unique:user', 'password' => 'required|min:6|confirmed', - 'password_confirmation' => 'required|same:password', 'term' => 'accepted', ]; } - - public function messages() - { - return [ - 'username.required' => trans('auth.email_null'), - 'email.required' => trans('auth.email_null'), - 'email.email' => trans('auth.email_legitimate'), - 'email.unique' => trans('auth.email_exist'), - 'password.required' => trans('auth.password_null'), - 'password.min' => trans('auth.password_limit'), - 'password_confirmation.required' => trans('auth.confirm_password'), - 'password_confirmation.same' => trans('auth.password_same'), - 'term.accepted' => trans('auth.unaccepted'), - ]; - } } diff --git a/app/Mail/sendVerifyCode.php b/app/Mail/sendVerifyCode.php index 67632ec2..158fb75e 100644 --- a/app/Mail/sendVerifyCode.php +++ b/app/Mail/sendVerifyCode.php @@ -24,7 +24,7 @@ class sendVerifyCode extends Mailable implements ShouldQueue public function build(): sendVerifyCode { - return $this->view('emails.sendVerifyCode')->subject('发送注册验证码')->with(['code' => $this->code]); + return $this->view('emails.sendVerifyCode')->subject(trans('auth.register.code'))->with(['code' => $this->code]); } // 发件失败处理 diff --git a/app/Models/Invite.php b/app/Models/Invite.php index b8476b38..944db179 100644 --- a/app/Models/Invite.php +++ b/app/Models/Invite.php @@ -37,13 +37,13 @@ class Invite extends Model { switch ($this->attributes['status']) { case 0: - $status_label = ''.trans('home.invite_code_table_status_un').''; + $status_label = ''.trans('user.status.unused').''; break; case 1: - $status_label = ''.trans('home.invite_code_table_status_yes').''; + $status_label = ''.trans('user.status.used').''; break; case 2: - $status_label = ''.trans('home.invite_code_table_status_expire').''; + $status_label = ''.trans('user.status.expired').''; break; default: $status_label = ' 未知 '; diff --git a/app/Models/Order.php b/app/Models/Order.php index 79bb3f53..c1f0b301 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -105,19 +105,28 @@ class Order extends Model { switch ($this->attributes['status']) { case -1: - $status_label = trans('home.invoice_status_closed'); - break; - case 1: - $status_label = trans('home.invoice_status_wait_confirm'); - break; - case 2: - $status_label = trans('home.invoice_status_payment_confirm'); + $status_label = ''.trans('user.status.closed').''; break; case 0: - $status_label = trans('home.invoice_status_wait_payment'); + $status_label = ''.trans('user.status.waiting_payment').''; + break; + case 1: + $status_label = ''.trans('user.status.waiting_confirm').''; + break; + case 2: + if ($this->attributes['goods_id'] === 0) { + $status_label = ''.trans('user.status.completed').''; + } elseif ($this->attributes['is_expire']) { + $status_label = ''.trans('user.status.expired').''; + } else { + $status_label = ''.trans('user.status.using').''; + } + break; + case 3: + $status_label = ''.trans('user.status.prepaid').''; break; default: - $status_label = 'Unknown'; + $status_label = trans('user.unknown'); } return $status_label; @@ -148,19 +157,19 @@ class Order extends Model { switch ($this->attributes['pay_type']) { case 0: - $pay_type_label = '余额'; + $pay_type_label = trans('common.payment.credit'); break; case 1: - $pay_type_label = '支付宝'; + $pay_type_label = trans('common.payment.alipay'); break; case 2: $pay_type_label = 'QQ'; break; case 3: - $pay_type_label = '微信'; + $pay_type_label = trans('common.payment.wechat'); break; case 4: - $pay_type_label = '虚拟货币'; + $pay_type_label = trans('common.payment.crypto'); break; case 5: $pay_type_label = 'PayPal'; @@ -168,9 +177,6 @@ class Order extends Model case 6: $pay_type_label = 'Stripe'; break; - case 7: - $pay_type_label = 'PayBeaver'; - break; default: $pay_type_label = ''; } diff --git a/app/Models/ReferralApply.php b/app/Models/ReferralApply.php index a8e73382..3ab19cba 100644 --- a/app/Models/ReferralApply.php +++ b/app/Models/ReferralApply.php @@ -58,4 +58,21 @@ class ReferralApply extends Model { $this->attributes['amount'] = $value * 100; } + + public function getStatusLabelAttribute(): string + { + switch ($this->attributes['status']) { + case 1: + $status_label = ''.trans('user.status.pending').''; + break; + case 2: + $status_label = trans('user.status.withdrawn'); + break; + case 0: + default: + $status_label = ''.trans('user.status.applying').''; + } + + return $status_label; + } } diff --git a/app/Models/ReferralLog.php b/app/Models/ReferralLog.php index e9ab9b8c..459e2fe2 100644 --- a/app/Models/ReferralLog.php +++ b/app/Models/ReferralLog.php @@ -52,4 +52,20 @@ class ReferralLog extends Model { $this->attributes['commission'] = $value * 100; } + + public function getStatusLabelAttribute(): string + { + switch ($this->attributes['status']) { + case 1: + $status_label = ''.trans('user.status.applying').''; + break; + case 2: + $status_label = ''.trans('user.status.withdrawn').''; + break; + default: + $status_label = ''.trans('user.status.not_withdrawn').''; + } + + return $status_label; + } } diff --git a/app/Models/Ticket.php b/app/Models/Ticket.php index a14aa184..7fbd2365 100644 --- a/app/Models/Ticket.php +++ b/app/Models/Ticket.php @@ -46,16 +46,16 @@ class Ticket extends Model { switch ($this->attributes['status']) { case 0: - $status_label = ''.trans('home.ticket_table_status_wait').''; + $status_label = ''.trans('user.status.pending').''; break; case 1: - $status_label = ''.trans('home.ticket_table_status_reply').''; + $status_label = ''.trans('user.status.reply').''; break; case 2: - $status_label = ''.trans('home.ticket_table_status_close').''; + $status_label = ''.trans('user.status.closed').''; break; default: - $status_label = ' 未知 '; + $status_label = ''.trans('user.unknown').''; } return $status_label; diff --git a/app/helpers.php b/app/helpers.php index 5870a5ff..7258a427 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -67,14 +67,14 @@ if (! function_exists('seconds2time')) { $hour = floor(($seconds % Day) / Hour); $minute = floor((($seconds % Day) % Hour) / Minute); if ($day > 0) { - return $day.'天'.$hour.'小时'.$minute.'分'; + return $day.trans('validation.attributes.day').$hour.trans('validation.attributes.hour').$minute.trans('validation.attributes.minute'); } if ($hour != 0) { - return $hour.'小时'.$minute.'分'; + return $hour.trans('validation.attributes.hour').$minute.trans('validation.attributes.minute'); } - return $minute.'分'; + return $minute.trans('validation.attributes.minute'); } } diff --git a/composer.lock b/composer.lock index 410a1e98..8bc572e5 100644 --- a/composer.lock +++ b/composer.lock @@ -2481,26 +2481,26 @@ }, { "name": "maxmind-db/reader", - "version": "v1.8.0", + "version": "v1.9.0", "source": { "type": "git", "url": "https://github.com/maxmind/MaxMind-DB-Reader-php.git", - "reference": "b566d429ac9aec10594b0935be8ff38302f8d5c8" + "reference": "9ee9ba9ee287b119e9f5a8e8dbfea0b49647cec4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/b566d429ac9aec10594b0935be8ff38302f8d5c8", - "reference": "b566d429ac9aec10594b0935be8ff38302f8d5c8", + "url": "https://api.github.com/repos/maxmind/MaxMind-DB-Reader-php/zipball/9ee9ba9ee287b119e9f5a8e8dbfea0b49647cec4", + "reference": "9ee9ba9ee287b119e9f5a8e8dbfea0b49647cec4", "shasum": "" }, "require": { "php": ">=7.2" }, "conflict": { - "ext-maxminddb": "<1.8.0,>=2.0.0" + "ext-maxminddb": "<1.9.0,>=2.0.0" }, "require-dev": { - "friendsofphp/php-cs-fixer": "2.*", + "friendsofphp/php-cs-fixer": "*", "php-coveralls/php-coveralls": "^2.1", "phpunit/phpcov": ">=6.0.0", "phpunit/phpunit": ">=8.0.0,<10.0.0", @@ -2539,9 +2539,9 @@ ], "support": { "issues": "https://github.com/maxmind/MaxMind-DB-Reader-php/issues", - "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.8.0" + "source": "https://github.com/maxmind/MaxMind-DB-Reader-php/tree/v1.9.0" }, - "time": "2020-10-01T17:30:21+00:00" + "time": "2021-01-07T21:15:29+00:00" }, { "name": "maxmind/web-service-common", @@ -3307,7 +3307,7 @@ }, { "name": "phpoffice/phpspreadsheet", - "version": "1.16.1", + "version": "1.16.0", "source": { "type": "git", "url": "https://github.com/PHPOffice/PhpSpreadsheet.git", @@ -3402,7 +3402,7 @@ ], "support": { "issues": "https://github.com/PHPOffice/PhpSpreadsheet/issues", - "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.16.1" + "source": "https://github.com/PHPOffice/PhpSpreadsheet/tree/1.16.0" }, "time": "2020-12-31T18:03:49+00:00" }, @@ -5390,16 +5390,16 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", - "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", + "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", "shasum": "" }, "require": { @@ -5411,7 +5411,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5449,7 +5449,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" }, "funding": [ { @@ -5465,20 +5465,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "c536646fdb4f29104dd26effc2fdcb9a5b085024" + "reference": "b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c536646fdb4f29104dd26effc2fdcb9a5b085024", - "reference": "c536646fdb4f29104dd26effc2fdcb9a5b085024", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6", + "reference": "b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6", "shasum": "" }, "require": { @@ -5490,7 +5490,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5529,7 +5529,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.22.0" }, "funding": [ { @@ -5545,20 +5545,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c" + "reference": "267a9adeb8ecb8071040a740930e077cdfb987af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", - "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/267a9adeb8ecb8071040a740930e077cdfb987af", + "reference": "267a9adeb8ecb8071040a740930e077cdfb987af", "shasum": "" }, "require": { @@ -5570,7 +5570,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5610,7 +5610,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.22.0" }, "funding": [ { @@ -5626,20 +5626,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117" + "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3b75acd829741c768bc8b1f84eb33265e7cc5117", - "reference": "3b75acd829741c768bc8b1f84eb33265e7cc5117", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44", + "reference": "0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44", "shasum": "" }, "require": { @@ -5653,7 +5653,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5697,7 +5697,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.22.0" }, "funding": [ { @@ -5713,20 +5713,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "727d1096295d807c309fb01a851577302394c897" + "reference": "6e971c891537eb617a00bb07a43d182a6915faba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", - "reference": "727d1096295d807c309fb01a851577302394c897", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/6e971c891537eb617a00bb07a43d182a6915faba", + "reference": "6e971c891537eb617a00bb07a43d182a6915faba", "shasum": "" }, "require": { @@ -5738,7 +5738,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5781,7 +5781,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.22.0" }, "funding": [ { @@ -5797,20 +5797,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T17:09:11+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", - "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", "shasum": "" }, "require": { @@ -5822,7 +5822,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -5861,7 +5861,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.22.0" }, "funding": [ { @@ -5877,7 +5877,7 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-php56", @@ -5949,16 +5949,16 @@ }, { "name": "symfony/polyfill-php72", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930" + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930", - "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", + "reference": "cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9", "shasum": "" }, "require": { @@ -5967,7 +5967,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6005,7 +6005,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.22.0" }, "funding": [ { @@ -6021,20 +6021,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", - "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", + "reference": "a678b42e92f86eca04b7fa4c0f6f19d097fb69e2", "shasum": "" }, "require": { @@ -6043,7 +6043,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6084,7 +6084,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.22.0" }, "funding": [ { @@ -6100,20 +6100,20 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.20.0", + "version": "v1.22.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", - "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", + "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", "shasum": "" }, "require": { @@ -6122,7 +6122,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.20-dev" + "dev-main": "1.22-dev" }, "thanks": { "name": "symfony/polyfill", @@ -6167,7 +6167,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.22.0" }, "funding": [ { @@ -6183,7 +6183,7 @@ "type": "tidelift" } ], - "time": "2020-10-23T14:02:19+00:00" + "time": "2021-01-07T16:49:33+00:00" }, { "name": "symfony/process", @@ -7766,16 +7766,16 @@ }, { "name": "barryvdh/laravel-debugbar", - "version": "v3.5.1", + "version": "v3.5.2", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "233c10688f4c1a6e66ed2ef123038b1363d1bedc" + "reference": "cae0a8d1cb89b0f0522f65e60465e16d738e069b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/233c10688f4c1a6e66ed2ef123038b1363d1bedc", - "reference": "233c10688f4c1a6e66ed2ef123038b1363d1bedc", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/cae0a8d1cb89b0f0522f65e60465e16d738e069b", + "reference": "cae0a8d1cb89b0f0522f65e60465e16d738e069b", "shasum": "" }, "require": { @@ -7788,6 +7788,7 @@ "symfony/finder": "^4.3|^5" }, "require-dev": { + "mockery/mockery": "^1.3.3", "orchestra/testbench-dusk": "^4|^5|^6", "phpunit/phpunit": "^8.5|^9.0", "squizlabs/php_codesniffer": "^3.5" @@ -7834,7 +7835,7 @@ ], "support": { "issues": "https://github.com/barryvdh/laravel-debugbar/issues", - "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.5.1" + "source": "https://github.com/barryvdh/laravel-debugbar/tree/v3.5.2" }, "funding": [ { @@ -7842,7 +7843,7 @@ "type": "github" } ], - "time": "2020-09-07T19:32:39+00:00" + "time": "2021-01-06T14:21:44+00:00" }, { "name": "barryvdh/laravel-ide-helper", diff --git a/config/geetest.php b/config/geetest.php index c36f7db6..2e09e4f1 100644 --- a/config/geetest.php +++ b/config/geetest.php @@ -1,7 +1,7 @@ 'zh-cn', + 'lang' => app()->getLocale(), 'server-get-config' => true, 'id' => env('GEETEST_ID'), 'key' => env('GEETEST_KEY'), diff --git a/config/laravel-lang.php b/config/laravel-lang.php index dfb3788e..5557e318 100644 --- a/config/laravel-lang.php +++ b/config/laravel-lang.php @@ -17,10 +17,8 @@ return [ */ 'locales' => [ - 'ja', 'ko', 'zh-CN', - 'zh-TW', ], /* ----------------------------------------------------------------- diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php index 5b1118dd..b451e15c 100644 --- a/resources/lang/en/auth.php +++ b/resources/lang/en/auth.php @@ -1,75 +1,78 @@ 'Username', - 'active' => 'Activate', - 'active_account' => 'Activate account', - 'active_tip' => 'Account is not active yet, Please ', - 'captcha' => 'Verification code', - 'code' => 'Invite Code', - 'optional' => 'Optional', - 'login' => 'Sign In', - 'register' => 'Sign Up', - 'send' => 'Send', - 'tip' => 'Tip', - 'email' => 'Email', - 'password' => 'Password', - 'confirm_password' => 'Please renter your password', - 'back' => 'Back', - 'close' => 'Close', - 'submit' => 'Submit', - 'request' => 'Request', - 'remember' => 'Remember Me', - 'resetPassword' => 'Reset Password', - 'new_password' => 'Enter a new password', - 'forget_password' => 'Find my Password', - 'reset_password' => 'Reset Password', - 'get_free_code' => 'Click to get a free invitation code', - 'accept_term' => 'I have read and agree to obey', - 'tos' => 'Terms of Service', - 'aup' => 'Acceptable Use Policy', - 'register_tip' => 'Still no account? Please go to', - 'system_maintenance' => 'The system is being maintained', - 'system_maintenance_tip' => 'System in under maintenance, please email :email if you need an account', - 'overtime' => 'The link has expired', - - 'active_success' => 'Successful activation', - 'active_fail' => 'Activation fail', - 'active_limit' => 'You have triggered the activation request restriction mechanism, do not operate frequently! If you have any questions, please contact :email', - 'active_close' => 'The account activation function has been disabled, please contact :email', - 'code_null' => 'Please enter invite code', - 'captcha_null' => 'Please enter Verification code', - 'captcha_error' => 'The Verification code is incorrect, please input the code again', - 'captcha_overtime' => 'The verification code is invalid! Please refresh and try again', - 'captcha_loading' => 'Loading Verification code...', - 'captcha_required' => 'Please complete the Verification code operation correctly', - 'captcha_fail' => 'Server verification failed, please try again', - 'captcha_close' => 'Verification code registration is disable', - 'captcha_send' => 'Verification code sent', - 'code_error' => 'The invitation code is invalid! Please try again', - 'username_null' => 'Please enter your username', - 'email_null' => 'Please enter your email address', - 'email_normal' => 'Your account has been activated', - 'email_legitimate' => 'Account must be a legitimate email', - 'email_banned' => 'The mailbox contains sensitive words. Please use another valid email', - 'email_exist' => 'Email have been register! If you forget your password, please use "Find my Password" to reset your password', - 'email_notExist' => 'The account does not exist. Please try again', - 'login_error' => 'Wrong password or email address', - 'login_ban' => 'Your email is banned', - 'password_null' => 'Please enter your password', - 'password_limit' => 'Password is too short', - 'password_same' => 'The passwords you typed do not match', - 'register_close' => 'We close the registration for new users, please email :email the administrator', - 'register_anti' => 'Anti-robot registration is enabled! Please do not register Multiple accounts', - 'register_fail' => 'Registration failed, please try later', - 'register_success' => 'Registered successfully', - 'register_active_tip' => 'Activation email sent! Please check the mailbox (the email may be in the Trash)', - 'repeat_request' => 'Please refresh the page and try again', - 'reset_password_close' => '"Find my Password"function is disabled.If you need help, Please email :email', - 'reset_password_limit' => 'Password can only be reset :time times within 24 hours!', - 'reset_password_success_tip' => 'Reset successfully! Please check the mailbox (the email may be in the Trash)', - 'reset_password_same_fail' => 'The new password is the same as the old one. Please renter', - 'reset_password_fail' => 'Password reset failed', - 'reset_password_new' => 'The new password has been set successfully!', - 'request_error' => 'Request exception, Please refresh and try again', + 'accept_term' => 'I have read and agree to obey', + 'active' => [ + 'attribute' => 'Activation', + 'error' => [ + 'activated' => 'The account has been activated, no need to activate again', + 'disable' => 'The account activation subsystem has been disabled, you can login directly!', + 'throttle' => 'Anti-bots Shield Active! Please do not send multiple activate from at short amount of times! If you have any questions, please contact :email', + ], + 'promotion' => ['0' => 'Account has not been activated,Please', '1' => 'before login!'], + 'sent' => 'Email has been sent! Please check your mailbox! (Email may be in the Trash)', + ], + 'aup' => 'Acceptable Use Policy', + 'captcha' => [ + 'attribute' => 'Captcha', + 'error' => ['failed' => 'Verification failed, please try again', 'timeout' => 'The code is invalid! Please refresh and try again'], + 'required' => 'Please complete the Captcha operation!', + 'sent' => 'Email has been sent! Please check your mailbox! (Email may be in the Trash)', + ], + 'email' => [ + 'error' => [ + 'banned' => 'Your email service provider was banned by our platform. Please use another valid email', + 'invalid' => 'Your email service provider is not in our supporting list. Please use another email', + ], + ], + 'error' => [ + 'account_baned' => 'Your account has been banned!', + 'login_error' => 'Login error, please try again later!', + 'login_failed' => 'Login failed, please check whether the email or password is entered correctly!', + 'repeat_request' => 'Please refresh the page and try again', + 'url_timeout' => 'The link has expired, please try again', + ], + 'invite' => [ + 'attribute' => 'Invitation code', + 'error' => ['unavailable' => 'Invitation code is invalid!'], + 'get' => 'Click to get the invitation code', + 'not_required' => 'No invitation code is required, you can register directly!', + ], + 'login' => 'Login', + 'logout' => 'Logout', + 'maintenance' => 'Maintain', + 'maintenance_tip' => 'Website under maintenance', + 'optional' => 'Optional', + 'password' => [ + 'forget' => 'forget password?', + 'new' => 'Enter a new password', + 'original' => 'Original Password', + 'reset' => [ + 'attribute' => 'Reset Password', + 'error' => [ + 'disabled' => 'The password reset subsystem has been disabled, you can contact :email for help', + 'failed' => 'Password reset failed', + 'throttle' => 'Password can only be reset :time times within 24 hours, Please Do not operate too frequently', + 'same' => 'The new password cannot be the same as the old password, please re-enter', + 'wrong' => 'The password is incorrect, please re-enter', + 'demo' => 'You can not change administrator password under Demo environment', + ], + 'sent' => 'Reset link has been sent to your email, please check the mailbox (the email may be in the Trash)', + 'success' => 'The password has been reset successfully, please go to login', + ], + ], + 'register' => [ + 'attribute' => 'Register', + 'code' => 'Registration Code', + 'error' => [ + 'disable' => 'Sorry, The registration function has been disabled', + 'throttle' => 'Anti-bots shield is active! Please do not send multiple register from at short amount of times!', + ], + 'promotion' => 'No account yet? Please go to', + 'failed' => 'Registration failed, please try later', + 'success' => 'Registration successfully', + ], + 'remember_me' => 'Remember me', + 'request' => 'Request', + 'tos' => 'Terms of Service', ]; diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php new file mode 100644 index 00000000..9d2f472d --- /dev/null +++ b/resources/lang/en/common.php @@ -0,0 +1,85 @@ + 'Account', + 'available_date' => 'Available Until/Period', + 'created_at' => 'Created At', + 'expired_at' => 'Expired At', + 'updated_at' => 'Updated At', + 'back' => 'Back', + 'cancel' => 'Cancel', + 'close' => 'Close', + 'close_item' => 'Close :attribute', + 'confirm' => 'Confirm', + 'continues' => 'Continues', + 'open' => 'Open', + 'send' => 'Send', + 'view' => 'View', + 'reset' => 'Rest', + 'copy' => [ + 'attribute' => 'Copy', + 'success' => 'Copy successfully', + 'failed' => 'Copy failed, please copy manually', + ], + 'free' => 'Free', + 'replace' => 'Change', + 'submit' => 'Submit', + 'submit_item' => 'Submit :attribute', + 'generate' => 'Generate', + 'generate_item' => 'Generate :attribute', + 'to_safari' => ['0' => 'Click on the upper right corner', '1' => ', Choose ', '2' => 'Open In Safari', '3' => ' to improve your experience.'], + 'update_browser' => ['0' => 'You are using an ', '1' => 'outdated', '2' => ' browser. Please', '3' => 'upgrade your browser', '4' => ' to improve your experience.'], + 'apply' => 'Apply', + 'avatar' => 'Avatar', + 'customize' => 'Custom', + 'all' => 'All', + 'default' => 'Default', + 'download' => 'Download', + 'goto' => 'Goto', + 'warning' => 'Warning', + 'success' => 'Successfully', + 'failed' => 'Failed', + 'update' => 'Update', + 'update_action' => 'Update :action', + 'none' => 'None', + 'new' => 'New', + 'sorry' => 'Sorry', + 'applied' => ':attribute Applied', + 'active_item' => 'Active :attribute', + 'error' => 'Error', + 'toggle' => 'Toggle', + 'toggle_action' => 'Toggle :action', + 'request_url' => 'Request Url', + 'function' => [ + 'navigation' => 'Navigation', + 'menubar' => 'Menubar', + 'fullscreen' => 'Fullscreen', + ], + 'days' => [ + 'sun' => 'Sunday', + 'mon' => 'Monday', + 'tue' => 'Tuesday', + 'wed' => 'Wednesday', + 'thu' => 'Thursday', + 'fri' => 'Friday', + 'sat' => 'Saturday', + 'weekend' => 'Weekend', + 'work' => 'Work Day', + 'next' => 'Next Day', + ], + 'qrcode' => ':attribute QrCode', + 'deleted' => 'Deleted', + 'deleted_item' => ':attribute Deleted', + 'print' => 'Print', + 'unlimited' => 'Unlimited', + 'payment' => [ + 'credit' => 'Credit', + 'wechat' => 'Wechat', + 'alipay' => 'Alipay', + 'crypto' => 'Cryptocurrency', + ], + 'recommend' => 'Recommend', + 'advance' => 'Advance', + 'status' => 'Status', + 'action' => 'Action', +]; diff --git a/resources/lang/en/error.php b/resources/lang/en/error.php index 9e26b36e..1706a901 100644 --- a/resources/lang/en/error.php +++ b/resources/lang/en/error.php @@ -1,18 +1,34 @@ 'ACCESS DENIED', - 'ForbiddenRobot' => 'Robot Access Forbidden', - 'ForbiddenAccess' => 'IP or Proxy Access Forbidden', - 'ForbiddenChina' => 'China IP or Proxy Access Forbidden', - 'ForbiddenOversea' => 'Oversea IP or Proxy Access Forbidden', - 'MissingPage' => 'Page Not Found', - 'Unauthorized' => 'Unauthorized visit', - 'Refresh' => 'Refresh', - 'RefreshPage' => 'Refresh Page, Try One More Time', - 'SystemError' => 'System Error', - 'Visit' => 'Please visit', - 'log' => 'Logs', - 'SecurityError' => 'unsafe visit', - 'SecurityEnter' => 'Safety Enter', + 'forbidden' => [ + 'access' => 'IP or Proxy Access Forbidden', + 'bots' => 'Bots Access Forbidden', + 'china' => 'Chinese IP or Proxy Access Forbidden', + 'oversea' => 'Oversea IP or Proxy Access Forbidden', + ], + 'log' => 'Logs', + 'missing_page' => 'Page Not Found', + 'refresh' => 'Refresh', + 'refresh_page' => 'Please Refresh Page, Then Try Again', + 'report' => 'Error comes back with log: ', + 'safe_enter' => 'Secure Entrance', + 'system' => 'System Error', + 'title' => '⚠️Error Detected', + 'unauthorized' => 'Unauthorized Access', + 'unsafe_enter' => 'Non-Secure Entrance', + 'visit' => 'Please visit', + 'whoops' => 'Whoops!', + 'get_ip' => 'Get IP information abnormal', + 'subscribe' => [ + 'unknown' => 'Unknown subscribe url! Please get a new one!', + 'sub_baned' => 'Subscribe banned! Visit the web for detail', + 'user' => 'Wrong Url, Account not exist!', + 'user_disable' => 'Account Banned!', + 'baned_until' => 'Account has been banned until :time, Please wait to unlock!', + 'out' => 'OUT OF DATA!Please consider to purchase new data or reset it!', + 'expired' => 'Account Expired!Please renew your purchase!', + 'question' => 'Account Error?! Visit web for detail', + 'none' => 'No nodes Available', + ], ]; diff --git a/resources/lang/en/home.php b/resources/lang/en/home.php deleted file mode 100644 index 6613a6c1..00000000 --- a/resources/lang/en/home.php +++ /dev/null @@ -1,203 +0,0 @@ - 'User Panel', - 'subscribe_help' => 'Interactive Tutorial', - 'subscribe_link' => 'Subscription Address', - 'copy_subscribe_address' => 'Copy Address', - 'exchange_subscribe' => 'Exchange Address', - 'subscribe_warning' => 'Warning: This subscription address is for personal use only. Do not propagate the address.', - 'reset_password_title' => 'Reset Password', - 'email_placeholder' => 'Please Enter Email', - 'system_down' => 'The system is being maintained', - 'subscribe_baned' => 'Your subscription function has been banned. Please contact the administrator.', - 'download' => 'Download', - 'sign_in' => 'Sign In', - - // 菜单 - 'home' => 'Home', - 'nodeList' => 'Servers', - 'services' => 'Shop', - 'traffic_log' => 'Monitor', - 'help' => 'Help', - 'invite_code' => 'Invite Code', - 'invoices' => 'Invoices', - 'tickets' => 'Tickets', - 'referrals' => 'Referrals', - 'free_invite_codes_title' => 'Free Invite Codes', - 'no_need_invite_codes' => 'In the open registration system, no invitation code is required', - - // 首页 - 'ratio_tips' => 'Recommends the use of support node subscription function of the client, through subscription function can quickly synchronize node information in the client.', - 'subscribe_button' => 'Subscribe', - 'account_info' => 'Account Info', - 'account_level' => 'Level', - 'account_credit' => 'Credit', - 'account_score' => 'Score', - 'account_status' => 'Status', - 'account_expire' => 'Overdue At', - 'account_last_usage' => 'Last Usage', - 'account_last_login' => 'Last Login', - 'account_bandwidth_usage' => 'Data Usage', - 'account_total_traffic' => 'Total', - 'account_usage_traffic' => 'Usage', - 'account_reset_notice' => ':reset_day days unit data renew', - 'account_login_log' => 'Login Log', - 'article_title' => 'Article List', - 'bandwidth' => 'Data Plan', - 'recharge' => 'Recharge', - 'enabled' => 'Normal', - 'disabled' => 'Disabled', - 'limited' => 'Limited', - 'never_used' => 'Never Used', - 'expired' => 'Expired', - 'reason' => 'Reason', - 'reason_expired' => 'Your account has expired', - 'reason_traffic_exhausted' => 'You have used all of your available data', - 'reason_overused' => 'Your hourly data usages :data GB has reached
After :min the limited will be lifted!', - 'reason_unknown' => 'Unknown, Please open a ticket and ask a customer service', - 'never_loggedin' => 'Never logged in', - 'announcement' => 'Announcement', - 'recharge_credit' => 'Recharge Credit', - 'payment_method' => 'charge method', - 'close' => 'Close', - 'cancel' => 'Cancel', - 'redeem_score' => 'Redeem for bandwidth', - 'redeem' => 'Redeem', - 'redeem_info' => 'You have got :score points and can redeem :score M free bandwidth.', - 'coupon_code' => 'Coupon Code', - 'please_input_coupon' => 'Please input the coupon code', - 'scan_qrcode' => 'Scan qrcode with your client', - 'setting_info' => 'Setting Information', - 'ratio' => 'traffic ratio', - 'coupon_not_empty' => 'Coupon code can not be empty', - 'recharging' => 'Recharging...', - 'error_response' => 'Error reponse, please retry', - 'error' => 'Error', - 'online_pay' => 'Online Pay', - 'pay' => 'Pay Now', - - // 用户资料 - 'submit' => 'Submit', - 'contact' => 'Contact', - 'ssr_setting' => 'Proxy Setting', - 'password' => 'Password', - 'new_password' => 'New Password', - 'current_password' => 'Current Password', - 'wechat' => 'Wechat', - 'connection_password' => 'Connection Password', - 'encrpytion' => 'Encrpytion', - 'protocal' => 'Protocal', - 'obfs' => 'OBFS', - - // 购买服务 - 'service_title' => 'Services', - 'service_name' => 'Service', - 'service_desc' => 'Description', - 'service_type' => 'Type', - 'service_price' => 'Sales Price', - 'service_quantity' => 'Quantity', - 'service_subtotal_price' => 'Subtotal Price', - 'service_total_price' => 'Total Price', - 'service_pay_button' => 'Pay', - 'services_none' => 'None Services', - 'service_traffic' => 'Traffic', - 'service_days' => 'Term of Validity', - 'service_buy_button' => 'Order Now', - 'service_unlimited' => 'Unlimited', - 'service_device' => 'Devices', - 'day' => 'days', - 'month' => 'month', - 'coupon' => 'Coupon', - 'redeem_coupon' => 'Redeem', - 'service_type_1' => 'Flow Packet', - 'service_type_2' => 'Flow Plans', - - // 流量日志 - 'traffic_log_tips' => 'Tips: The update of the flow chart will be delayed.', - 'traffic_log_30days' => '30 Days Statistics', - 'traffic_log_24hours' => '24 Hours Statistics', - 'traffic_log_keywords' => 'Bandwidth', - 'traffic_log_unit' => 'Unit: G', - 'traffic_log_max' => 'Max', - - // 邀请码 - 'invite_code_make' => 'Generate Invite Code', - 'invite_code_button' => 'Create', - 'invite_code_tips' => 'You can generate :num invite codes, effective within :days days', - 'invite_code_my_codes' => 'My Invite Codes', - 'invite_code_table_name' => 'Codes', - 'invite_code_table_date' => 'Overdue Date', - 'invite_code_table_user' => 'Usage User', - 'invite_code_table_status' => 'Status', - 'invite_code_table_none_codes' => 'None available information', - 'invite_code_table_status_un' => 'Active', - 'invite_code_table_status_yes' => 'Already Used', - 'invite_code_table_status_expire' => 'Overdue', - 'invite_code_summary' => 'Total of :total invite codes', - - // 单据 - 'invoice_title' => 'My Invoices', - 'invoice_table_id' => 'No.', - 'invoice_table_name' => 'Service', - 'invoice_table_pay_way' => 'Pay Method', - 'invoice_table_price' => 'Amount', - 'invoice_table_create_date' => 'Created On', - 'invoice_table_expired_at' => 'Expire Time', - 'invoice_table_status' => 'Status', - 'invoice_table_none' => 'None Data', - 'invoice_table_closed' => 'Closed', - 'invoice_table_wait_payment' => 'Wait Payment', - 'invoice_table_wait_confirm' => 'Wait Confirm', - 'invoice_table_wait_active' => 'Active', - 'invoice_table_expired' => 'Overdue', - 'invoice_table_goods_deleted' => '[Deleted]', - - // 工单 - 'ticket_title' => 'Support Tickets', - 'ticket_open' => 'Open', - 'ticket_close' => 'Close', - 'ticket_cancel' => 'Cancel', - 'ticket_confirm' => 'Confirm', - 'ticket_table_title' => 'Title', - 'ticket_table_status' => 'Status', - 'ticket_table_none' => 'No Data', - 'ticket_table_status_wait' => 'Wait Reply', - 'ticket_table_status_reply' => 'Wait Reply', - 'ticket_table_status_close' => 'Closed', - 'ticket_table_new_button' => 'Open New Support Ticket', - 'ticket_table_new_title' => 'Title: (Financial Support, Account Support, Technical Support, Pre-sale Support, etc)', - 'ticket_table_content' => 'Please fill in your questions with detail information', - 'ticket_table_view' => 'View', - 'ticket_reply' => 'Send', - 'ticket_reply_me' => 'Me', - 'ticket_reply_master' => 'Master', - 'ticket_reply_placeholder' => 'Say something...', - 'ticket_close_title' => 'Close Ticket', - 'ticket_close_content' => 'You are going to close the support tickets, are you sure?', - - // 推广返利 - 'referral_title' => 'Commissions', - 'referral_button' => 'Copy Link', - 'referral_my_link' => 'My Referral Link', - 'referral_table_user' => 'Who', - 'referral_table_amount' => 'Amount', - 'referral_table_commission' => 'Commission', - 'referral_table_status' => 'Status', - 'referral_table_date' => 'Date', - 'referral_table_none' => 'None Data', - 'referral_table_apply' => 'Apply', - 'referral_summary' => 'Total rebate :amount RMB (:total times), full :money RMB can apply for withdrawals.', - 'referral_apply_title' => 'Present Record', - 'referral_apply_table_amount' => 'Amount', - 'referral_apply_table_status' => 'Status', - 'referral_apply_table_date' => 'Date', - 'console' => 'Console', - 'profile' => 'Profile', - 'logout' => 'Log Out', - 'promote_link' => 'With your promotion link registration and activation, both of you will receive :traffic traffic awards; when they are consumed, you will receive :referral_percent% of their consumption amount as a reward.', - 'promote_invite_code' => 'With your invite code registration and activation, both of you will receive :traffic traffic awards; when they are consumed, you will receive :referral_percent% of their consumption amount as a reward.', - 'invite_user_title' => 'Invitation record', - 'invite_user_email' => 'email', - 'invite_user_created_at' => 'Registration time', -]; diff --git a/resources/lang/en/pagination.php b/resources/lang/en/pagination.php new file mode 100644 index 00000000..16f01871 --- /dev/null +++ b/resources/lang/en/pagination.php @@ -0,0 +1,6 @@ + '« Previous', + 'next' => 'Next »', +]; diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php new file mode 100644 index 00000000..0cd1c972 --- /dev/null +++ b/resources/lang/en/passwords.php @@ -0,0 +1,9 @@ + 'Your password has been reset!', + 'sent' => 'We have emailed your password reset link!', + 'throttled' => 'Please wait before retrying.', + 'token' => 'This password reset token is invalid.', + 'user' => 'We can\'t find a user with that email address.', +]; diff --git a/resources/lang/en/user.php b/resources/lang/en/user.php new file mode 100644 index 00000000..b8402a2d --- /dev/null +++ b/resources/lang/en/user.php @@ -0,0 +1,215 @@ + [ + 'credit' => 'Credit', + 'status' => 'Status', + 'level' => 'Level', + 'group' => 'Group', + 'speed_limit' => 'Speed Limit', + 'remain' => 'Remain Data', + 'time' => 'Period', + 'last_login' => 'Last Login', + 'reset' => ':days days to next reset', + 'connect_password' => 'Proxy Connect Password', + 'reason' => [ + 'normal' => 'Normal', + 'expired' => 'Expired', + 'overused' => 'You have reach the :data GB hourly data spend limit
Wait :min to cool down', + 'traffic_exhausted' => 'OUT OF DATA', + 'unknown' => 'UNKNOWN ERROR, please contact admin for reason', + ], + ], + 'status' => [ + 'disabled' => 'Disabled', + 'enabled' => 'Normal', + 'expired' => 'Expired', + 'limited' => 'Limited', + 'unused' => 'Unused', + 'used' => 'Used', + 'closed' => 'Closed', + 'completed' => 'Completed', + 'waiting_payment' => 'Waiting for payment', + 'using' => 'Using', + 'waiting_confirm' => 'Waiting for confirm', + 'prepaid' => 'Prepaid', + 'applying' => 'Applying', + 'withdrawn' => 'Withdrawn', + 'not_withdrawn' => 'Not withdrawn', + 'reply' => 'Replied', + 'pending' => 'Pending', + ], + 'home' => [ + 'attendance' => [ + 'attribute' => 'Attendance', + 'disable' => 'Attendance System is disabled', + 'done' => 'You have already signed in, Come back tomorrow!', + 'success' => 'You got :data traffic', + 'failed' => 'System ❌ Error', + ], + 'traffic_logs' => 'Data Records', + 'announcement' => 'Announcement', + 'wechat_push' => 'WeChat Notification Service', + 'chat_group' => 'Chat Group', + 'empty_announcement' => 'No Announcement', + ], + 'purchase_to_unlock' => 'Unlock after purchasing service', + 'purchase_required' => 'This feature is disabled for non-paying users! Please', + 'more' => 'More', + 'attribute' => [ + 'node' => 'Node', + 'data' => 'Data', + 'ip' => 'IP Address', + 'isp' => 'ISP', + 'address' => 'Address', + ], + 'purchase_promotion' => 'Purchase Now !', + 'menu' => [ + 'helps' => 'Help', + 'home' => 'Home', + 'invites' => 'Invite', + 'invoices' => 'Invoice', + 'nodes' => 'Node', + 'referrals' => 'Affiliates', + 'shop' => 'Shop', + 'tickets' => 'Ticket', + 'admin_dashboard' => 'Admin Dashboard', + ], + 'contact' => 'Contact Info', + 'coupon' => [ + 'attribute' => 'Coupon', + 'voucher' => 'Voucher', + 'recharge' => 'Gift Card', + 'inactive' => 'Coupon Inactive', + 'wait_active' => 'The Event will begin until :time, Please wait', + 'limit' => 'Coupon Not Satisfied', + 'higher' => 'The minimum requirement of this coupon is ¥:amount', + 'discount' => 'Discount', + ], + 'error_response' => 'Something went wrong, please try again later.', + 'invite' => [ + 'attribute' => 'Invitation code', + 'total' => 'Total: num invitation codes', + 'tips' => 'Can generate :num invitation codes, valid within :days', + 'logs' => 'Invitation Record', + 'promotion' => 'Register and activate with your invitation code, Both sides will get :traffic traffic as rewards; when invitees purchase services, you will get :referral percent% of their spend amount as commission.', + 'generate_failed' => 'Failed to generate', + ], + 'reset_data' => [ + '' => 'Reset Data', + 'required' => 'Required', + 'cost_tips' => 'This following action will cost ¥:amount!', + 'lack' => 'No enough Credit!', + 'logs' => 'User purchase reset data', + 'success' => 'Reset Successfully', + ], + 'referral' => [ + 'link' => 'Referral link', + 'total' => 'Total rebate ¥:amount (:total times), you can apply for cash withdrawal when it reach ¥:money.', + 'amount' => 'Spend amount', + 'commission' => 'Rebate amount', + 'logs' => 'Commission records', + 'failed' => 'Application failed', + 'success' => 'Application success', + 'msg' => [ + 'account' => 'Account has expired, please purchase to active service first', + 'applied' => 'There is an application exist, please wait for the previous application to be processed', + 'unfulfilled' => 'Minimal amount to created application is ¥:amount', + 'wait' => 'Please wait for the administrator to review', + 'error' => 'Rebate order creation failed, please try later or notify the administrator', + ], + ], + 'inviter' => 'Inviter', + 'invitee' => 'Invitee', + 'consumer' => 'Consumer', + 'unknown' => 'Unknown', + 'registered_at' => 'Registration at', + 'bought_at' => 'Purchased at', + 'payment_method' => 'payment method', + 'pay' => 'Pay', + 'input_coupon' => 'Please enter the gift code', + 'user_profile' => 'Account settings', + 'recharge' => 'Pay', + 'recharge_credit' => 'Add Funds', + 'recharging' => 'Paying ...', + 'withdraw_commission' => 'Withdraw Commission', + 'withdraw_at' => 'Withdraw Date', + 'withdraw_logs' => 'Withdrawals records', + 'withdraw' => 'Withdraw', + 'scan_qrcode' => 'Please scan the QR code', + 'shop' => [ + 'hot' => 'HOT', + 'limited' => 'LIMIT', + 'change_amount' => 'Amount', + 'buy' => 'Purchase', + 'description' => 'Description', + 'service' => 'Service', + 'pay_credit' => 'Pay By Credit', + 'pay_online' => 'Pay By Online payment', + 'price' => 'Price', + 'quantity' => 'Quantity', + 'subtotal' => 'Subtotal', + 'total' => 'Total', + 'conflict' => 'Service Conflict', + 'conflict_tips' => '

Current order will be set as Prepaid order

  1. Prepaid order will be active after current service expired!
  2. Your also can active the order manually
', + 'call4help' => 'Please create a ticket to ask customer service', + ], + 'payment' => [ + 'error' => 'The recharge balance is not compliant', + 'creating' => 'Creating payment order...', + 'redirect_stripe' => 'Redirect to Stripe ...', + 'qrcode_tips' => 'Please using :software to scan QrCode', + 'close_tips' => 'Please complete payment in :minutes minutes, otherwise it will be auto-closed by system', + 'mobile_tips' => 'Mobile User:Press QrCode image for a short amount of time -> Save Images -> Open payment software -> Scan it', + ], + 'invoice' => [ + 'attribute' => 'Order', + 'id' => 'Order number', + 'detail' => 'Order Detail', + 'amount' => 'Amount', + 'active_prepaid_question' => 'Are you sure to active prepaid order?', + 'active_prepaid_tips' => 'After active:
Current order will be set to expired!
Expired dates will be recalculated!', + ], + 'node' => [ + 'info' => 'Configuration information', + 'setting' => 'Proxy settings', + 'unstable' => 'Node fluctuation/under maintenance', + 'rate' => ':ratio time data consumption', + ], + 'subscribe' => [ + 'baned' => 'Your subscription function is disabled, please contact the administrator to restore', + 'link' => 'Subscribe Link', + 'tips' => 'Warning:Subscribe Link is for personal used only, Please do not show to anyone else. Otherwise, they may using your service without your permission', + 'exchange_warning' => 'Exchange Link:\n1. Old Link will be disabled\n2. Proxy connection password will be reset', + 'ss_only' => 'Subscribe SS/SSR Only', + 'v2ray_only' => 'Subscribe V2Ray Only', + 'trojan_only' => 'Subscribe Trojan Only', + 'error' => 'Exchange Link Error', + ], + 'ticket' => [ + 'attribute' => 'Ticket', + 'submit_tips' => 'Submit Ticket?', + 'reply_confirm' => 'Reply Ticket?', + 'close_tips' => 'Are you sure to close this ticket?', + 'close' => 'Close Ticket', + 'failed_closed' => 'Error: Ticket has been closed', + 'reply_placeholder' => 'Say something', + 'reply' => 'Reply', + 'close_msg' => 'Ticket ID :id has been closed by user', + 'placeholder' => 'Please describe your questions in detail', + 'title_placeholder' => 'Please describe your questions in few key words', + 'new' => 'Create Ticket', + 'working_hour' => 'Customer Service', + 'online_hour' => 'Working Hours', + 'service_tips' => 'We have many way to contact, please choose ONE of them!
Duplicate request will cost the service to delay', + 'error' => 'Error!Please contact Customer Service', + ], + 'traffic_logs' => [ + '24hours' => 'Today Traffic Usage', + '30days' => 'Daily Traffic Usage', + 'tips' => 'Tips: Traffic logs has delays!', + ], + 'client' => 'Clients', + 'tutorials' => 'Tutorials', + 'current_role' => 'Current Role as', +]; diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php new file mode 100644 index 00000000..6c92f096 --- /dev/null +++ b/resources/lang/en/validation.php @@ -0,0 +1,134 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_equals' => 'The :attribute must be a date equal to :date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'dimensions' => 'The :attribute has invalid image dimensions.', + 'distinct' => 'The :attribute field has a duplicate value.', + 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values.', + 'exists' => 'The selected :attribute is invalid.', + 'file' => 'The :attribute must be a file.', + 'filled' => 'The :attribute field must have a value.', + 'gt' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal :value.', + 'file' => 'The :attribute must be greater than or equal :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], + 'image' => 'The :attribute must be an image.', + 'in' => 'The selected :attribute is invalid.', + 'in_array' => 'The :attribute field does not exist in :other.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal :value.', + 'file' => 'The :attribute must be less than or equal :value kilobytes.', + 'string' => 'The :attribute must be less than or equal :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'mimetypes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'multiple_of' => 'The :attribute must be a multiple of :value', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'password' => 'The password is incorrect.', + 'present' => 'The :attribute field must be present.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_unless' => 'The :attribute field is required unless :other is in :values.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values are present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'starts_with' => 'The :attribute must start with one of the following: :values.', + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'uploaded' => 'The :attribute failed to upload.', + 'url' => 'The :attribute format is invalid.', + 'uuid' => 'The :attribute must be a valid UUID.', + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], + 'attributes' => [ + 'name' => 'Name', + 'username' => 'Nick Name', + 'email' => 'Email', + 'password' => 'Password', + 'password_confirmation' => 'Password Confirmation', + 'phone' => 'Phone', + 'day' => 'Day', + 'month' => 'Month', + 'year' => 'Year', + 'hour' => 'Hour', + 'minute' => 'Minute', + 'second' => 'Second', + 'title' => 'Title', + 'content' => 'Content', + 'description' => 'Description', + 'excerpt' => 'Excerpt', + 'date' => 'Date', + 'time' => 'Time', + ], +]; diff --git a/resources/lang/ja.json b/resources/lang/ja.json deleted file mode 100644 index 157878be..00000000 --- a/resources/lang/ja.json +++ /dev/null @@ -1,47 +0,0 @@ -{ - "A fresh verification link has been sent to your email address.": "新しい確認リンクを送りました。", - "All rights reserved.": "", - "Before proceeding, please check your email for a verification link.": "次に進む前に、確認リンクのメールをチェックしてください。", - "click here to request another": "ここをクリックしてメールを再送信してください。", - "Confirm Password": "パスワード(確認用)", - "E-Mail Address": "メールアドレス", - "Error": "エラー", - "Forbidden": "禁止されています", - "Forgot Your Password?": "パスワードを忘れた方はこちら", - "Go Home": "ホームへ", - "Hello!": "こんにちは", - "hi": "こんにちは", - "If you did not create an account, no further action is required.": "アカウントの作成にお心当たりが無い場合は、このメールを無視してください。", - "If you did not receive the email": "メールが届かなかった場合", - "If you did not request a password reset, no further action is required.": "パスワードのリセットにお心当たりが無い場合は、このメールを無視してください。", - "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "\":actionText\" ボタンが機能しない場合は, 次のURLをコピーしてWebブラウザに貼り付けてください。[:displayableActionUrl](:actionURL)", - "Login": "ログイン", - "Logout": "ログアウト", - "Name": "氏名", - "Oh no": "オーノー", - "Page Expired": "期限切れのページ", - "Page Not Found": "ページが見つかりません", - "Password": "パスワード", - "Please click the button below to verify your email address.": "メールアドレスを確認するには、下のボタンをクリックしてください。", - "Regards": "よろしくお願いします", - "Register": "アカウント作成", - "Remember Me": "ログイン状態を保持する", - "Reset Password": "パスワードリセット", - "Reset Password Notification": "パスワードリセット通知", - "Send Password Reset Link": "パスワードリセットリンクを送信", - "Service Unavailable": "サービスは利用できません", - "Sorry, you are forbidden from accessing this page.": "申し訳ありません、このページへのアクセスは禁止されています。", - "Sorry, the page you are looking for could not be found.": "申し訳ありません、探しているページは見つかりませんでした。", - "Sorry, you are making too many requests to our servers.": "申し訳ありません、一定時間内のリクエスト上限回数を超えました。", - "Sorry, you are not authorized to access this page.": "申し訳ありません、このページにアクセスする権限がありません。", - "Sorry, your session has expired. Please refresh and try again.": "申し訳ありません、セッションは期限切れです。更新してもう一度やり直してください。", - "Sorry, we are doing some maintenance. Please check back soon.": "申し訳ありません、メンテナンス中です。あとでもう一度確認してください。", - "Toggle navigation": "ナビゲーションを切り替える", - "Too Many Requests": "大量のリクエストがありました", - "Unauthorized": "認証が必要です", - "Verify Email Address": "メールアドレスを確認", - "Verify Your Email Address": "メールアドレスを確認してください", - "You are receiving this email because we received a password reset request for your account.": "パスワードリセットのリクエストを受け付けました。", - "Whoops!": "おっと!", - "Whoops, something went wrong on our servers.": "おっと、サーバーで何か問題が発生しました。" -} diff --git a/resources/lang/ja/auth.php b/resources/lang/ja/auth.php deleted file mode 100644 index 69a6a145..00000000 --- a/resources/lang/ja/auth.php +++ /dev/null @@ -1,99 +0,0 @@ - 'アカウントを有効にする', - 'login_button' => 'ログイン', - 'email_placeholder' => 'アカウントを入力してください', - 'tips' => 'システムメンテナンス中に、アカウントを有効にする必要がある場合は、管理者に連絡してください', - 'back' => '戻る', - 'submit' => '有効化', - 'email' => 'アカウント', - 'password' => 'パスワード', - 'captcha' => '認証コード', - 'remember' => 'ログイン状態を保持', - 'forget_password' => 'パスワードを忘れた', - 'login' => 'ログイン', - 'register' => '登録する', - 'register_tip' => 'まだアカウントはありませんか?してください', - 'loading_captcha' => '確認コードを読み込んでいます...', - 'required_captcha' => '確認コードの操作を正しく完了してください', - 'fail_captcha' => 'サーバーの確認に失敗しました。もう一度お試しください', - 'confirm_password' => 'パスワードの確認', - 'code' => '招待コード', - 'send' => '送 信', - 'tnc_button' => '私はすでに読んで守ることに同意した', - 'tnc_link' => '私は利用規約を読み、同意した', - 'tos' => '利用規約', - 'aup' => '許容される使用ポリシー', - 'register_alter' => 'システムはメンテナンス中です', - 'get_free_code' => 'クリックすると無料の招待状コードが表示されます', - 'tnc_title' => '私は読んだことがあります', - 'tnc_content' => '現地法令を遵守してください。', - 'overtime' => 'リンクは有効期限切れです', - - 'active' => 'Activate', - 'active_account' => 'Activate account', - 'active_tip' => 'Account is not active yet, Please ', - 'captcha' => '確認コード', - 'code' => 'Invite Code', - 'login' => 'Sign In', - 'register' => 'ログイン', - 'email' => 'メール', - 'password' => 'パスワード', - 'confirm_password' => 'パスワードの確認', - 'back' => 'Back', - 'close' => 'Close', - 'submit' => 'Submit', - 'request' => 'Request', - 'remember' => 'Remember Me', - 'resetPassword' => 'Reset Password', - 'new_password' => 'Enter a new password', - 'forget_password' => 'Find my Password', - 'reset_password' => 'Reset Password', - 'get_free_code' => 'Click to get a free invitation code', - 'accept_term' => 'I have read and agree to obey', - 'tos' => 'Terms of Service', - 'aup' => 'Acceptable Use Policy', - 'register_tip' => 'Still no account? Please go to', - 'system_maintenance' => 'The system is being maintained', - 'system_maintenance_tip' => 'System in under maintenance, please email :email if you need an account', - 'overtime' => 'The link has expired', - - 'active_success' => 'Successful activation', - 'active_fail' => 'Activation fail', - 'active_limit' => 'You have triggered the activation request restriction mechanism, do not operate frequently! If you have any questions, please contact :email', - 'active_close' => 'The account activation function has been disabled, please contact :email', - 'code_null' => 'Please enter invite code', - 'captcha_null' => 'Please enter Verification code', - 'captcha_error' => 'The Verification code is incorrect, please input the code again', - 'captcha_overtime' => 'The verification code is invalid! Please refresh and try again', - 'captcha_loading' => 'Loading Verification code...', - 'captcha_required' => 'Please complete the Verification code operation correctly', - 'captcha_fail' => 'Server verification failed, please try again', - 'captcha_close' => 'Verification code registration is disable', - 'captcha_send' => 'Verification code sent', - 'code_error' => 'The invitation code is invalid! Please try again', - 'email_null' => 'Please enter your email address', - 'email_normal' => 'Your account has been activated', - 'email_legitimate' => 'Account must be a legitimate email', - 'email_banned' => 'The mailbox contains sensitive words. Please use another valid email', - 'email_exist' => 'Email have been register! If you forget your password, please use "Find my Password" to reset your password', - 'email_notExist' => 'The account does not exist. Please try again', - 'login_error' => 'Wrong password or email address', - 'login_ban' => 'Your email is banned', - 'password_null' => 'Please enter your password', - 'password_limit' => 'Password is too short', - 'password_same' => 'The passwords you typed do not match', - 'register_close' => 'We close the registration for new users, please email :email the administrator', - 'register_anti' => 'Anti-robot registration is enabled! Please do not register Multiple accounts', - 'register_fail' => 'Registration failed, please try later', - 'register_success' => 'Registered successfully', - 'register_active_tip' => 'Activation email sent! Please check the mailbox (the email may be in the Trash)', - 'repeat_request' => 'Please refresh the page and try again', - 'reset_password_close' => '"Find my Password"function is disabled.If you need help, Please email :email', - 'reset_password_limit' => 'Password can only be reset :time times within 24 hours!', - 'reset_password_success_tip' => 'Reset successfully! Please check the mailbox (the email may be in the Trash)', - 'reset_password_same_fail' => 'The new password is the same as the old one. Please renter', - 'reset_password_fail' => 'Password reset failed', - 'reset_password_new' => 'The new password has been set successfully!', -]; diff --git a/resources/lang/ja/error.php b/resources/lang/ja/error.php deleted file mode 100644 index 29ec6427..00000000 --- a/resources/lang/ja/error.php +++ /dev/null @@ -1,17 +0,0 @@ - 'アクセスが拒否されました', - 'ForbiddenRobot' => 'ロボットアクセスを禁止する', - 'ForbiddenAccess' => 'IPまたはプロキシアクセスを禁止する', - 'ForbiddenChina' => '中国のIPまたはプロキシアクセスを禁止する', - 'ForbiddenOversea' => '海外IPまたはプロキシアクセスを禁止する', - 'MissingPage' => 'ページが見つかりません', - 'Unauthorized' => '許可されていない訪問', - 'RefreshPage' => 'ページを更新し、もう一度お試しください', - 'SystemError' => 'システムエラー', - 'Visit' => 'リンクを見てください', - 'log' => 'ログ', - 'SecurityError' => '危険な訪問', - 'SecurityEnter' => '安全に入る', -]; diff --git a/resources/lang/ja/home.php b/resources/lang/ja/home.php deleted file mode 100644 index 58fee31a..00000000 --- a/resources/lang/ja/home.php +++ /dev/null @@ -1,200 +0,0 @@ - 'コントロールパネル', - 'subscribe_help' => 'インタラクティブチュートリアル', - 'copy_subscribe_address' => 'コピー', - 'exchange_subscribe' => '変更', - 'subscribe_warning' => '警告:この購読URLは個人用です。このURLは拡散しないでください。それ以外の場合は、アカウントのデータ通信量が異常である可能性があります。', - 'reset_password_title' => 'パスワードを再設定する', - 'email_placeholder' => 'アカウントを入力してください', - 'system_down' => 'システムはメンテナンス中です', - 'subscribe_baned' => '購読が無効になっています。管理者にお問い合わせください。', - 'download' => 'ダウンロード', - - // 菜单 - 'home' => 'ホームページ', - 'nodeList' => '私のノード', - 'services' => 'ショップ', - 'traffic_log' => '使用記録', - 'help' => '手伝いをする', - 'invite_code' => '招待コード', - 'invoices' => 'ビル', - 'tickets' => 'サポート', - 'referrals' => '招待リンク', - 'free_invite_codes_title' => '無料招待コード', - 'no_need_invite_codes' => 'プラットフォームオープン登録、招待コードなし', - - // 首页 - 'ratio_tips' => 'ノードの購読機能をサポートするクライアントを使用することをお勧めします。', - 'subscribe_button' => '取得する', - 'account_info' => 'アカウント情報', - 'account_level' => 'レベル', - 'account_credit' => '残りのお金', - 'account_score' => '積分', - 'account_status' => '状態', - 'account_expire' => '有効期限まで', - 'account_last_usage' => '最近使用日', - 'account_last_login' => '最近ログイン日', - 'account_bandwidth_usage' => 'データ通信量の使用状況', - 'account_total_traffic' => 'データ通信量の上限', - 'account_usage_traffic' => '使用済み', - 'account_reset_notice' => '毎月 :reset_day 日にデータ通信量をリセットする', - 'account_login_log' => '登録ログ', - 'article_title' => '文章', - 'recharge' => 'チャージ', - 'enabled' => '有効', - 'disabled' => '無効', - 'never_used' => '使用されていない', - 'expired' => '期限が切れる', - 'reason' => '理由', - 'reason_expired' => 'あなたのアカウントは期限切れです', - 'reason_traffic_exhausted' => '利用可能なデータをすべて使用しました', - 'reason_overused' => '1時間あたりのデータ使用量がシステムの1時間あたりの制限に達しました', - 'reason_unknown' => '不明、チケットを開いてカスタマーサービスに依頼してください', - 'never_logging' => '从未登録', - 'never_loggedin' => 'ログインされていない', - 'announcement' => 'お知らせ', - 'recharge_credit' => 'チャージ', - 'payment_method' => 'チャージの方法', - 'close' => 'キャンセル', - 'redeem_score' => 'データ通信量を兌換する', - 'redeem' => '今すぐ兌換', - 'redeem_info' => 'あなたは :score ポイントを持っており、 :score M 無料のデータ通信量を利用できます。', - 'coupon_code' => 'クーポンコード', - 'please_input_coupon' => 'クーポンコードを入力してください', - 'scan_qrcode' => 'QRコードをスキャンするクライアントを使用してください', - 'setting_info' => '構成情報', - 'ratio' => '決済レート', - 'coupon_not_empty' => 'クーポンコードは空にできません。', - 'recharging' => 'チャージしている', - 'error_response' => 'エラーが発生し、後でやり直してください。', - 'error' => 'エラー', - 'online_pay' => 'オンラインで支払う', - 'pay' => 'お支払い', - - // 用户资料 - 'submit' => '提出する', - 'contact' => '連絡方法', - 'ssr_setting' => 'プロキシ設定', - 'password' => 'パスワード', - 'new_password' => '新しいパスワード', - 'current_password' => '既存のパスワード', - 'wechat' => 'WeChat', - 'connection_password' => '接続のパスワード', - 'encrpytion' => '暗号化方式', - 'protocal' => '契約方法', - 'obfs' => 'OBFS パラメータ', - - // 购买服务 - 'service_title' => 'ショップ', - 'service_name' => 'サービス', - 'service_desc' => '説明する', - 'service_type' => 'タイプ', - 'service_price' => '価格', - 'service_quantity' => '数量', - 'service_subtotal_price' => '小計', - 'service_total_price' => '合計', - 'service_pay_button' => '残額で払う', - 'services_none' => '利用可能なサービスはありません', - 'service_traffic' => '流れを含む', - 'service_days' => '有効期間', - 'service_buy_button' => '購入する', - 'service_unlimited' => '無制限', - 'service_device' => 'デバイス数', - 'day' => '日', - 'month' => '月', - 'coupon' => 'クーポン券', - 'redeem_coupon' => '使用する', - 'service_type_1' => '流量包', - 'service_type_2' => 'コース', - 'service_type_3' => '残高', - - // 流量日志 - 'traffic_log_tips' => '注意:データの更新が遅れている', - 'traffic_log_30days' => '30 日内のデータ通信量消耗', - 'traffic_log_24hours' => '24 時間内のデータ通信量消耗', - 'traffic_log_keywords' => 'データ通信量消耗', - 'traffic_log_unit' => '単位 / G', - 'traffic_log_max' => '最大値', - - // 邀请码 - 'invite_code_make' => '招待コードを生成する', - 'invite_code_button' => '生成する', - 'invite_code_tips' => '生成できる :num 枚の招待コード, :days 日以内有効', - 'invite_code_my_codes' => '私の招待コード', - 'invite_code_table_name' => '招待コード', - 'invite_code_table_date' => '有効期限', - 'invite_code_table_user' => '使用者', - 'invite_code_table_status' => '状態', - 'invite_code_table_none_codes' => 'データなし', - 'invite_code_table_status_un' => '使用されていない', - 'invite_code_table_status_yes' => '使用済み', - 'invite_code_table_status_expire' => '期限が切れた', - 'invite_code_summary' => '全部で :total 枚の招待コードがあります。', - - // 单据 - 'invoice_title' => 'ビル', - 'invoice_table_id' => 'ビル番号', - 'invoice_table_name' => 'サービス', - 'invoice_table_pay_way' => '支払い方式', - 'invoice_table_price' => '金額', - 'invoice_table_create_date' => '購入日', - 'invoice_table_expired_at' => '有効期限', - 'invoice_table_status' => '状態', - 'invoice_table_none' => 'データなし', - 'invoice_table_closed' => '閉鎖された', - 'invoice_table_wait_payment' => '保留中の支払い', - 'invoice_table_wait_confirm' => '確認を待っています', - 'invoice_table_wait_active' => '使用中', - 'invoice_table_expired' => '期限が切れた', - 'invoice_table_goods_deleted' => '[削除]', - - // 工单 - 'ticket_title' => 'サポートチケット', - 'ticket_open' => '開いた', - 'ticket_close' => '閉じる', - 'ticket_cancel' => 'キャンセル', - 'ticket_confirm' => '確認', - 'ticket_table_title' => 'タイトル', - 'ticket_table_status' => '状態', - 'ticket_table_none' => 'データなし', - 'ticket_table_status_wait' => '処理を待つ', - 'ticket_table_status_reply' => 'もう回復', - 'ticket_table_status_close' => '閉鎖された', - 'ticket_table_new_button' => '新しいサポートチケットを開く', - 'ticket_table_new_title' => 'タイトル:(財務サポート、アカウントサポート、テクニカルサポート、事前販売サポートなど)', - 'ticket_table_content' => 'あなたの質問を記入してください', - 'ticket_table_view' => 'ビュー', - 'ticket_reply' => '送信', - 'ticket_reply_me' => '私', - 'ticket_reply_master' => '管理者', - 'ticket_reply_placeholder' => '何か言って', - 'ticket_close_title' => 'チケットを閉じる', - 'ticket_close_content' => 'あなたはサポートチケットを閉じるつもりです、本当ですか?', - - // 推广返利 - 'referral_title' => '口銭', - 'referral_button' => 'コピー', - 'referral_my_link' => '私のプロモーションリンク', - 'referral_table_user' => '消費者', - 'referral_table_amount' => '消費量', - 'referral_table_commission' => '返金額', - 'referral_table_status' => '状態', - 'referral_table_date' => 'リベート期間', - 'referral_table_none' => 'データなし', - 'referral_table_apply' => '引き出しを申請する', - 'referral_summary' => '全部 :total 件の記録があり、合計 :amount のリベートがあり、 :total に達すると現金引き出しを申請することができます。', - 'referral_apply_title' => '記録を現す', - 'referral_apply_table_amount' => '金額', - 'referral_apply_table_status' => '狀態', - 'referral_apply_table_date' => '日付', - 'console' => '管理センター', - 'profile' => '個人設定', - 'logout' => 'ログアウト', - 'promote_link' => 'あなたの普及のリンクを通じて登録してアクティブにして、あなたたちの双方はすべて :traffic の流量の奨励を獲得します;彼らが消費する時、あなたは彼らの消費金額の :referral_percent% を獲得することを奨励します。', - 'promote_invite_code' => 'お客様の招待コードの登録をアクティブにして、あなた達の双方は獲得して :traffic 流量奨励;彼らが消费の時、あなたは獲得して彼らの消費金額の :referral_percent% ご褒美として。', - 'invite_user_title' => '招待状', - 'invite_user_email' => 'ユーザー名', - 'invite_user_created_at' => '登録時間', -]; diff --git a/resources/lang/ja/pagination.php b/resources/lang/ja/pagination.php deleted file mode 100644 index 3c1e1137..00000000 --- a/resources/lang/ja/pagination.php +++ /dev/null @@ -1,17 +0,0 @@ - '« 前', - 'next' => '次 »', -]; diff --git a/resources/lang/ja/passwords.php b/resources/lang/ja/passwords.php deleted file mode 100644 index 783ce29b..00000000 --- a/resources/lang/ja/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - 'パスワードをリセットしました。', - 'sent' => 'パスワードリマインダーを送信しました。', - 'throttled' => '時間を置いて再度お試しください。', - 'token' => 'このパスワードリセットトークンは無効です。', - 'user' => 'このメールアドレスに一致するユーザーを見つけることが出来ませんでした。', -]; diff --git a/resources/lang/ja/validation-inline.php b/resources/lang/ja/validation-inline.php deleted file mode 100644 index 6ad7069e..00000000 --- a/resources/lang/ja/validation-inline.php +++ /dev/null @@ -1,138 +0,0 @@ - 'This field must be accepted.', - 'active_url' => 'This is not a valid URL.', - 'after' => 'This must be a date after :date.', - 'after_or_equal' => 'This must be a date after or equal to :date.', - 'alpha' => 'This field may only contain letters.', - 'alpha_dash' => 'This field may only contain letters, numbers, dashes and underscores.', - 'alpha_num' => 'This field may only contain letters and numbers.', - 'array' => 'This field must be an array.', - 'before' => 'This must be a date before :date.', - 'before_or_equal' => 'This must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'This value must be between :min and :max.', - 'file' => 'This file must be between :min and :max kilobytes.', - 'string' => 'This string must be between :min and :max characters.', - 'array' => 'This content must have between :min and :max items.', - ], - 'boolean' => 'This field must be true or false.', - 'confirmed' => 'The confirmation does not match.', - 'date' => 'This is not a valid date.', - 'date_equals' => 'This must be a date equal to :date.', - 'date_format' => 'This does not match the format :format.', - 'different' => 'This value must be different from :other.', - 'digits' => 'This must be :digits digits.', - 'digits_between' => 'This must be between :min and :max digits.', - 'dimensions' => 'This image has invalid dimensions.', - 'distinct' => 'This field has a duplicate value.', - 'email' => 'This must be a valid email address.', - 'ends_with' => 'This must end with one of the following: :values.', - 'exists' => 'The selected value is invalid.', - 'file' => 'The content must be a file.', - 'filled' => 'This field must have a value.', - 'gt' => [ - 'numeric' => 'The value must be greater than :value.', - 'file' => 'The file size must be greater than :value kilobytes.', - 'string' => 'The string must be greater than :value characters.', - 'array' => 'The content must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The value must be greater than or equal :value.', - 'file' => 'The file size must be greater than or equal :value kilobytes.', - 'string' => 'The string must be greater than or equal :value characters.', - 'array' => 'The content must have :value items or more.', - ], - 'image' => 'This must be an image.', - 'in' => 'The selected value is invalid.', - 'in_array' => 'This value does not exist in :other.', - 'integer' => 'This must be an integer.', - 'ip' => 'This must be a valid IP address.', - 'ipv4' => 'This must be a valid IPv4 address.', - 'ipv6' => 'This must be a valid IPv6 address.', - 'json' => 'This must be a valid JSON string.', - 'lt' => [ - 'numeric' => 'The value must be less than :value.', - 'file' => 'The file size must be less than :value kilobytes.', - 'string' => 'The string must be less than :value characters.', - 'array' => 'The content must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The value must be less than or equal :value.', - 'file' => 'The file size must be less than or equal :value kilobytes.', - 'string' => 'The string must be less than or equal :value characters.', - 'array' => 'The content must not have more than :value items.', - ], - 'max' => [ - 'numeric' => 'The value may not be greater than :max.', - 'file' => 'The file size may not be greater than :max kilobytes.', - 'string' => 'The string may not be greater than :max characters.', - 'array' => 'The content may not have more than :max items.', - ], - 'mimes' => 'This must be a file of type: :values.', - 'mimetypes' => 'This must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The value must be at least :min.', - 'file' => 'The file size must be at least :min kilobytes.', - 'string' => 'The string must be at least :min characters.', - 'array' => 'The value must have at least :min items.', - ], - 'not_in' => 'The selected value is invalid.', - 'not_regex' => 'This format is invalid.', - 'numeric' => 'This must be a number.', - 'password' => 'The password is incorrect.', - 'present' => 'This field must be present.', - 'regex' => 'This format is invalid.', - 'required' => 'This field is required.', - 'required_if' => 'This field is required when :other is :value.', - 'required_unless' => 'This field is required unless :other is in :values.', - 'required_with' => 'This field is required when :values is present.', - 'required_with_all' => 'This field is required when :values are present.', - 'required_without' => 'This field is required when :values is not present.', - 'required_without_all' => 'This field is required when none of :values are present.', - 'same' => 'The value of this field must match the one from :other.', - 'size' => [ - 'numeric' => 'The value must be :size.', - 'file' => 'The file size must be :size kilobytes.', - 'string' => 'The string must be :size characters.', - 'array' => 'The content must contain :size items.', - ], - 'starts_with' => 'This must start with one of the following: :values.', - 'string' => 'This must be a string.', - 'timezone' => 'This must be a valid zone.', - 'unique' => 'This has already been taken.', - 'uploaded' => 'This failed to upload.', - 'url' => 'This format is invalid.', - 'uuid' => 'This must be a valid UUID.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - -]; diff --git a/resources/lang/ja/validation.php b/resources/lang/ja/validation.php deleted file mode 100644 index 91a1d24d..00000000 --- a/resources/lang/ja/validation.php +++ /dev/null @@ -1,149 +0,0 @@ - ':attributeを承認してください。', - 'active_url' => ':attributeは、有効なURLではありません。', - 'after' => ':attributeには、:dateより後の日付を指定してください。', - 'after_or_equal' => ':attributeには、:date以降の日付を指定してください。', - 'alpha' => ':attributeには、アルファベッドのみ使用できます。', - 'alpha_dash' => ":attributeには、英数字('A-Z','a-z','0-9')とハイフンと下線('-','_')が使用できます。", - 'alpha_num' => ":attributeには、英数字('A-Z','a-z','0-9')が使用できます。", - 'array' => ':attributeには、配列を指定してください。', - 'before' => ':attributeには、:dateより前の日付を指定してください。', - 'before_or_equal' => ':attributeには、:date以前の日付を指定してください。', - 'between' => [ - 'numeric' => ':attributeには、:minから、:maxまでの数字を指定してください。', - 'file' => ':attributeには、:min KBから:max KBまでのサイズのファイルを指定してください。', - 'string' => ':attributeは、:min文字から:max文字にしてください。', - 'array' => ':attributeの項目は、:min個から:max個にしてください。', - ], - 'boolean' => ":attributeには、'true'か'false'を指定してください。", - 'confirmed' => ':attributeと:attribute確認が一致しません。', - 'date' => ':attributeは、正しい日付ではありません。', - 'date_equals' => ':attributeは:dateに等しい日付でなければなりません。', - 'date_format' => ":attributeの形式は、':format'と合いません。", - 'different' => ':attributeと:otherには、異なるものを指定してください。', - 'digits' => ':attributeは、:digits桁にしてください。', - 'digits_between' => ':attributeは、:min桁から:max桁にしてください。', - 'dimensions' => ':attributeの画像サイズが無効です', - 'distinct' => ':attributeの値が重複しています。', - 'email' => ':attributeは、有効なメールアドレス形式で指定してください。', - 'ends_with' => ':attributeは、次のうちのいずれかで終わらなければなりません。: :values', - 'exists' => '選択された:attributeは、有効ではありません。', - 'file' => ':attributeはファイルでなければいけません。', - 'filled' => ':attributeは必須です。', - 'gt' => [ - 'numeric' => ':attributeは、:valueより大きくなければなりません。', - 'file' => ':attributeは、:value KBより大きくなければなりません。', - 'string' => ':attributeは、:value文字より大きくなければなりません。', - 'array' => ':attributeの項目数は、:value個より大きくなければなりません。', - ], - 'gte' => [ - 'numeric' => ':attributeは、:value以上でなければなりません。', - 'file' => ':attributeは、:value KB以上でなければなりません。', - 'string' => ':attributeは、:value文字以上でなければなりません。', - 'array' => ':attributeの項目数は、:value個以上でなければなりません。', - ], - 'image' => ':attributeには、画像を指定してください。', - 'in' => '選択された:attributeは、有効ではありません。', - 'in_array' => ':attributeが:otherに存在しません。', - 'integer' => ':attributeには、整数を指定してください。', - 'ip' => ':attributeには、有効なIPアドレスを指定してください。', - 'ipv4' => ':attributeはIPv4アドレスを指定してください。', - 'ipv6' => ':attributeはIPv6アドレスを指定してください。', - 'json' => ':attributeには、有効なJSON文字列を指定してください。', - 'lt' => [ - 'numeric' => ':attributeは、:valueより小さくなければなりません。', - 'file' => ':attributeは、:value KBより小さくなければなりません。', - 'string' => ':attributeは、:value文字より小さくなければなりません。', - 'array' => ':attributeの項目数は、:value個より小さくなければなりません。', - ], - 'lte' => [ - 'numeric' => ':attributeは、:value以下でなければなりません。', - 'file' => ':attributeは、:value KB以下でなければなりません。', - 'string' => ':attributeは、:value文字以下でなければなりません。', - 'array' => ':attributeの項目数は、:value個以下でなければなりません。', - ], - 'max' => [ - 'numeric' => ':attributeには、:max以下の数字を指定してください。', - 'file' => ':attributeには、:max KB以下のファイルを指定してください。', - 'string' => ':attributeは、:max文字以下にしてください。', - 'array' => ':attributeの項目は、:max個以下にしてください。', - ], - 'mimes' => ':attributeには、:valuesタイプのファイルを指定してください。', - 'mimetypes' => ':attributeには、:valuesタイプのファイルを指定してください。', - 'min' => [ - 'numeric' => ':attributeには、:min以上の数字を指定してください。', - 'file' => ':attributeには、:min KB以上のファイルを指定してください。', - 'string' => ':attributeは、:min文字以上にしてください。', - 'array' => ':attributeの項目は、:min個以上にしてください。', - ], - 'not_in' => '選択された:attributeは、有効ではありません。', - 'not_regex' => ':attributeの形式が無効です。', - 'numeric' => ':attributeには、数字を指定してください。', - 'password' => 'パスワードが正しくありません。', - 'present' => ':attributeが存在している必要があります。', - 'regex' => ':attributeには、有効な正規表現を指定してください。', - 'required' => ':attributeは、必ず指定してください。', - 'required_if' => ':otherが:valueの場合、:attributeを指定してください。', - 'required_unless' => ':otherが:values以外の場合、:attributeを指定してください。', - 'required_with' => ':valuesが指定されている場合、:attributeも指定してください。', - 'required_with_all' => ':valuesが全て指定されている場合、:attributeも指定してください。', - 'required_without' => ':valuesが指定されていない場合、:attributeを指定してください。', - 'required_without_all' => ':valuesが全て指定されていない場合、:attributeを指定してください。', - 'same' => ':attributeと:otherが一致しません。', - 'size' => [ - 'numeric' => ':attributeには、:sizeを指定してください。', - 'file' => ':attributeには、:size KBのファイルを指定してください。', - 'string' => ':attributeは、:size文字にしてください。', - 'array' => ':attributeの項目は、:size個にしてください。', - ], - 'starts_with' => ':attributeは、次のいずれかで始まる必要があります。:values', - 'string' => ':attributeには、文字を指定してください。', - 'timezone' => ':attributeには、有効なタイムゾーンを指定してください。', - 'unique' => '指定の:attributeは既に使用されています。', - 'uploaded' => ':attributeのアップロードに失敗しました。', - 'url' => ':attributeは、有効なURL形式で指定してください。', - 'uuid' => ':attributeは、有効なUUIDでなければなりません。', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [], -]; diff --git a/resources/lang/ko.json b/resources/lang/ko.json deleted file mode 100644 index 9a03ea4d..00000000 --- a/resources/lang/ko.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "A fresh verification link has been sent to your email address.": "새로운 확인 링크가 당신의 이메일 주소로 보내졌습니다.", - "All rights reserved.": "무단 전재 금지.", - "Before proceeding, please check your email for a verification link.": "계속하기 전에 이메일에서 확인 링크를 확인하십시오.", - "click here to request another": "여기를 클릭하여 다른 것을 요청하십시오.", - "Confirm Password": "비밀번호 확인", - "E-Mail Address": "E-Mail 주소", - "Forbidden": "금지", - "Forgot Your Password?": "비밀번호를 잊으셨나요?", - "Go Home": "시작으로 이동", - "Hello!": "안녕하세요!", - "If you did not create an account, no further action is required.": "계정을 생성하지 않았다면 추가 조치가 필요하지 않습니다.", - "If you did not request a password reset, no further action is required.": "귀하께서 비밀번호 재설정을 요청하지 않으셨다면, 더이상 진행하지 마십시오.", - "If you did not receive the email": "이메일을 받지 못한 경우", - "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "\":actionText\" 단추를 클릭하는 데 문제가 있는 경우 아래 URL을 복사하여\n웹 브라우저에 붙여 넣으십시오:", - "Invalid signature.": "잘못된 시그니처.", - "Login": "로그인", - "Logout": "로그아웃", - "Name": "이름", - "Not Found": "찾을 수 없습니다", - "Oh no": "안 돼", - "Page Expired": "만료된 페이지", - "Password": "비밀번호", - "Please click the button below to verify your email address.": "이메일 주소를 확인하려면 아래 버튼을 클릭하십시오.", - "Please confirm your password before continuing.": "계속하기 전에 암호를 확인하십시오.", - "Register": "회원가입", - "Regards": "안부", - "Remember Me": "로그인 상태 유지", - "Reset Password": "비밀번호 재설정", - "Reset Password Notification": "비밀번호 재설정 알림", - "Send Password Reset Link": "비밀번호 재설정 링크 보내기", - "Server Error": "서버 에러", - "Service Unavailable": "서비스를 사용할 수 없습니다.", - "This action is unauthorized.": "이 조치는 승인되지 않습니다.", - "This password reset link will expire in :count minutes.": "이 비밀번호 재설정 링크는 :count분 후에 만료됩니다.", - "Toggle navigation": "토글 네비게이션", - "Too Many Attempts.": "너무 많은 시도들.", - "Too Many Requests": "너무 많은 요청들", - "Unauthorized": "무허가", - "Verify Email Address": "이메일 주소 확인", - "Verify Your Email Address": "너의 이메일 주소 확인", - "We won't ask for your password again for a few hours.": "몇 시간 동안 비밀번호를 다시 묻지 않습니다.", - "You are receiving this email because we received a password reset request for your account.": "귀하의 계정에 비밀번호 재설정이 요청되어 해당 메일이 발송되었습니다.", - "Your email address is not verified.": "이메일 주소가 확인되지 않습니다.", - "Whoops!": "Oups !" -} diff --git a/resources/lang/ko/auth.php b/resources/lang/ko/auth.php deleted file mode 100644 index 534071b3..00000000 --- a/resources/lang/ko/auth.php +++ /dev/null @@ -1,33 +0,0 @@ - '아이디 활성화', - 'login_button' => '로그인', - 'email_placeholder' => '아이디를 입력하세요', - 'tips' => '서버 점검중입니다,아이디 활성화 하실려면 관리자에게 문의하세요', - 'back' => '돌아가기', - 'submit' => '활성화 하기', - 'email' => '아이디', - 'password' => '비밀번호', - 'captcha' => '인증코드', - 'remember' => '로그인 상태 유지', - 'forget_password' => '비밀번호 찾기', - 'login' => '로그인', - 'register' => '회원가입', - 'register_tip' => '아직 계정이 없습니까? 제발 가라', - 'loading_captcha' => '인증 코드로드 중 ...', - 'required_captcha' => '인증 코드 작업을 올바르게 완료하십시오.', - 'fail_captcha' => '서버 확인에 실패했습니다. 다시 시도하십시오.', - 'confirm_password' => '비밀번호 재확인', - 'code' => '처청코드', - 'send' => '보내기', - 'tnc_button' => '이용약관에 됭의합니다', - 'tos' => '이용 약관', - 'aup' => '이용 목적 제한 방침', - 'register_alter' => '서버 점검중입니다', - 'get_free_code' => '무료 초대 코드를 받으려면 클릭하십시오.', - 'tnc_title' => '이용약관에 됭의합니다', - 'tnc_content' => '현지의 법률 법규를 준수하시오.', - 'overtime' => '링크가 만료되었습니다.', - -]; diff --git a/resources/lang/ko/error.php b/resources/lang/ko/error.php deleted file mode 100644 index cd5f0e1c..00000000 --- a/resources/lang/ko/error.php +++ /dev/null @@ -1,17 +0,0 @@ - '접근 불가', - 'ForbiddenRobot' => '로봇 접근 금지', - 'ForbiddenAccess' => 'IP 또는 프록시 액세스를 금지하십시오', - 'ForbiddenChina' => '중국 IP 또는 프록시 액세스 금지', - 'ForbiddenOversea' => '해외 IP 또는 프록시 액세스 금지', - 'MissingPage' => '페이지를 찾을 수 없음', - 'Unauthorized' => '무단 방문', - 'RefreshPage' => '페이지 새로 고침, 한번 더 시도', - 'SystemError' => '시스템 오류', - 'Visit' => '방문하시기 바랍니다', - 'log' => '로그', - 'SecurityError' => '안전하지 않은 방문', - 'SecurityEnter' => '안전 입력', -]; diff --git a/resources/lang/ko/home.php b/resources/lang/ko/home.php deleted file mode 100644 index 935931e4..00000000 --- a/resources/lang/ko/home.php +++ /dev/null @@ -1,197 +0,0 @@ - '제어판', - 'subscribe_help' => '대화 형 자습서', - 'copy_subscribe_address' => '주소복사', - 'exchange_subscribe' => '주소변경', - 'subscribe_warning' => '경고: 구독 주소 는 개인적 으로 사용 되 지 말고 이 주소 를 전파 하지 마시오', - 'reset_password_title' => '비번리셋', - 'email_placeholder' => '아이디를 입력하세요', - 'system_down' => '서비스 점금중', - 'subscribe_baned' => '구독주소가 금지되였습니다,관리자에게 문의해주세요', - 'download' => '다운로드', - - // 菜单 - 'home' => '홈페이지', - 'nodeList' => '내 서버', - 'services' => '서버구축', - 'traffic_log' => '트래픽', - 'help' => '도와주다', - 'invite_code' => '초청코드', - 'invoices' => '오더관리', - 'tickets' => '고객센트', - 'referrals' => '홍보센트', - 'free_invite_codes_title' => '무료초청코드', - 'no_need_invite_codes' => '초청코드 없이 가입가능합니다', - - // 首页 - 'ratio_tips' => '지원 기능의 구독 기능을 사용하는 클라이언트 사용, 구독 기능으로 클라이언트 동기화 정보를 입력할 수 있습니다.', - 'subscribe_button' => 'RSS구도주소 보기', - 'account_info' => '유저정보', - 'account_level' => '레벨', - 'account_credit' => '금액', - 'account_score' => '적분', - 'account_status' => '상태', - 'account_expire' => '유효기간', - 'account_last_usage' => '최근사용', - 'account_last_login' => '최근로그인', - 'account_bandwidth_usage' => '트래픽 사용량', - 'account_total_traffic' => '총', - 'account_usage_traffic' => '이미사용', - 'account_reset_notice' => '매월 :reset_day 일에 트래픽 초기화', - 'account_login_log' => '로그인 로그', - 'article_title' => '공지사항', - 'recharge' => '충전', - 'enabled' => '정상', - 'disabled' => '금지', - 'nerver_used' => '미사용', - 'expired' => '기간만료', - 'reason' => '이유', - 'reason_expired' => '계정이 만료되었습니다', - 'reason_traffic_exhausted' => '사용 가능한 모든 데이터를 사용했습니다', - 'reason_overused' => '귀하의 시간별 데이터의 사용은 우리의 시스템 시간마다 한계에 도달', - 'reason_unknown' => '알 수 없음, 티켓을 열고 고객 서비스에 문의하십시오', - 'never_loggedin' => '로그인 안됨', - 'announcement' => '공지', - 'recharge_credit' => '금액충전', - 'payment_method' => '충전방식', - 'close' => '취소', - 'redeem_score' => '트래픽 ', - 'redeem' => '환전하기', - 'redeem_info' => '총 :score 포인트,:score M 의 트레픽 화전가능。', - 'coupon_code' => '충전카드', - 'please_input_coupon' => '충전 카드 번호를 입력하세요', - 'scan_qrcode' => '앱 으로 QR코드를 스켄해주시면 서버가 추가 됩니다', - 'setting_info' => '설정 정보', - 'ratio' => '정산비율', - 'coupon_not_empty' => '카드번호가 비였습니다', - 'recharging' => '충전중...', - 'error_response' => '오류발생,다시시도하세요', - 'error' => '잘못', - - // 用户资料 - 'submit' => '확인', - 'contact' => '연락방식', - 'ssr_setting' => '에이전트 설정', - 'password' => '비밀번호', - 'new_password' => '새로운 비밀번호', - 'current_password' => '현재 비밀번호', - 'wechat' => '위쳇아이디', - 'connection_password' => '연결암호', - 'encrpytion' => '암호화 방식', - 'protocal' => '프로토콜', - 'obfs' => '혼동', - - // 购买服务 - 'service_title' => '서버구축', - 'service_name' => '서버스', - 'service_desc' => '소개', - 'service_type' => '类型', - 'service_price' => '가격', - 'service_quantity' => '수량', - 'service_subtotal_price' => '소계', - 'service_total_price' => '합계', - 'service_pay_button' => '잔액지불', - 'services_none' => '내용이 없습니다', - 'service_traffic' => '함유 흐름', - 'service_days' => '휴효기간', - 'service_buy_button' => '구입', - 'service_unlimited' => '무제한', - 'service_device' => '장치 수', - 'day' => '일', - 'month' => '달', - 'coupon' => '할인권', - 'redeem_coupon' => '사용', - 'service_type_1' => '유량용 가방', - 'service_type_2' => '세트', - 'service_type_3' => '잔액', - - // 流量日志 - 'traffic_log_tips' => '메모:데이터 갱신 지연.', - 'traffic_log_30days' => '30 일트래픽 사용현황', - 'traffic_log_24hours' => '24 간트패픽 사용현환', - 'traffic_log_keywords' => '사용된트래픽', - 'traffic_log_unit' => '단위 / G', - 'traffic_log_max' => '최대치', - - // 邀请码 - 'invite_code_make' => '초청코드생성', - 'invite_code_button' => '생성', - 'invite_code_tips' => '생성가능 :num 개 총청코드, :days 일내에 유효하다.', - 'invite_code_my_codes' => '나의 초청코드', - 'invite_code_table_name' => '초청코드', - 'invite_code_table_date' => '유효기간', - 'invite_code_table_user' => '사용자', - 'invite_code_table_status' => '상태', - 'invite_code_table_none_codes' => '데이터 없음', - 'invite_code_table_status_un' => '미使用', - 'invite_code_table_status_yes' => '이미사용', - 'invite_code_table_status_expire' => '기간만료', - 'invite_code_summary' => '총 :total 개초청코드', - - // 单据 - 'invoice_title' => '거래내역', - 'invoice_table_id' => '번호', - 'invoice_table_name' => '서버스', - 'invoice_table_pay_way' => '지불 방식', - 'invoice_table_price' => '금액', - 'invoice_table_create_date' => '구입일자', - 'invoice_table_expired_at' => '만료 시간', - 'invoice_table_status' => '상태', - 'invoice_table_none' => '데이터 없음', - 'invoice_table_closed' => '닫혔어', - 'invoice_table_wait_payment' => '지불대기', - 'invoice_table_wait_confirm' => '확인중', - 'invoice_table_wait_active' => '사용중', - 'invoice_table_expired' => '기간만료', - 'invoice_table_goods_deleted' => '[삭제됨]', - - // 工单 - 'ticket_title' => '티켓 지원', - 'ticket_open' => '열다', - 'ticket_close' => '닫기', - 'ticket_cancel' => '취소', - 'ticket_confirm' => '확인', - 'ticket_table_title' => '재목', - 'ticket_table_status' => '상태', - 'ticket_table_none' => '데이터가 없다', - 'ticket_table_status_wait' => '처리중', - 'ticket_table_status_reply' => '답장', - 'ticket_table_status_close' => '닫혔어', - 'ticket_table_new_button' => '새 지원 티켓 열기', - 'ticket_table_new_title' => '제목 : (재정 지원, 계정 지원, 기술 지원, 사전 판매 지원 등)', - 'ticket_table_content' => '질문을 작성하십시오', - 'ticket_table_view' => '전망', - 'ticket_reply' => '보내다', - 'ticket_reply_me' => '나', - 'ticket_reply_master' => '관리자', - 'ticket_reply_placeholder' => '뭐라고 말해봐', - 'ticket_close_title' => '티켓 닫기', - 'ticket_close_content' => '지원 티켓을 닫을 예정입니까?', - - // 推广返利 - 'referral_title' => '수수료', - 'referral_button' => '주소사 ', - 'referral_my_link' => '홍보전용 링크', - 'referral_table_user' => '소비자', - 'referral_table_amount' => '소비금액', - 'referral_table_commission' => '리턴금액', - 'referral_table_status' => '상태', - 'referral_table_date' => '리턴시간', - 'referral_table_none' => '데이터 없음', - 'referral_table_apply' => '출금신청 ', - 'referral_summary' => '총 :total 개기록,합계리턴 :amount 원, :money 원되여야 리턴가능 합니다。', - 'referral_apply_title' => '현금 인출 기록', - 'referral_apply_table_amount' => '양', - 'referral_apply_table_status' => '상태', - 'referral_apply_table_date' => '날짜', - 'console' => '관리센트', - 'profile' => '개인정보', - 'logout' => '로그아웃', - 'promote_link' => '보급 링크 등록을 통해 활성화, 양측 모두 :traffic 유량에 장려합니다; 그들이 소비할 때, 그들의 소비 금액을 얻을 수 있는 :referral_percent% 를 장려합니다.', - 'promote_invite_code' => '요청을 통해 등록 및 활성화, 양측 모두 :traffic 유량에 장려합니다, 그들이 소비할 때, 그들의 소비 금액을 얻을 수 있습니다 :referral_percent% 를 장려합니다', - 'invite_user_title' => '초대장', - 'invite_user_email' => '사용자 이름', - 'invite_user_created_at' => '등록 시간', -]; diff --git a/resources/lang/ko/pagination.php b/resources/lang/ko/pagination.php index 104d76d4..a2cb86f4 100644 --- a/resources/lang/ko/pagination.php +++ b/resources/lang/ko/pagination.php @@ -1,17 +1,6 @@ '« 이전', - 'next' => '다음 »', + 'next' => '다음 »', ]; diff --git a/resources/lang/ko/passwords.php b/resources/lang/ko/passwords.php index 2b17999f..80818120 100644 --- a/resources/lang/ko/passwords.php +++ b/resources/lang/ko/passwords.php @@ -1,20 +1,9 @@ '비밀번호가 변경되었습니다!', - 'sent' => '비밀번호 재설정 링크를 이메일로 전송했습니다!', + 'reset' => '비밀번호가 변경되었습니다!', + 'sent' => '비밀번호 재설정 링크를 이메일로 전송했습니다!', 'throttled' => '잠시 후 다시 시도해주세요.', - 'token' => '해당 비밀번호 재설정 토큰이 유효하지 않습니다.', - 'user' => '해당 이메일을 사용하는 사용자를 찾을 수 없습니다.', + 'token' => '해당 비밀번호 재설정 토큰이 유효하지 않습니다.', + 'user' => '해당 이메일을 사용하는 사용자를 찾을 수 없습니다.', ]; diff --git a/resources/lang/ko/validation-inline.php b/resources/lang/ko/validation-inline.php deleted file mode 100644 index 6ad7069e..00000000 --- a/resources/lang/ko/validation-inline.php +++ /dev/null @@ -1,138 +0,0 @@ - 'This field must be accepted.', - 'active_url' => 'This is not a valid URL.', - 'after' => 'This must be a date after :date.', - 'after_or_equal' => 'This must be a date after or equal to :date.', - 'alpha' => 'This field may only contain letters.', - 'alpha_dash' => 'This field may only contain letters, numbers, dashes and underscores.', - 'alpha_num' => 'This field may only contain letters and numbers.', - 'array' => 'This field must be an array.', - 'before' => 'This must be a date before :date.', - 'before_or_equal' => 'This must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'This value must be between :min and :max.', - 'file' => 'This file must be between :min and :max kilobytes.', - 'string' => 'This string must be between :min and :max characters.', - 'array' => 'This content must have between :min and :max items.', - ], - 'boolean' => 'This field must be true or false.', - 'confirmed' => 'The confirmation does not match.', - 'date' => 'This is not a valid date.', - 'date_equals' => 'This must be a date equal to :date.', - 'date_format' => 'This does not match the format :format.', - 'different' => 'This value must be different from :other.', - 'digits' => 'This must be :digits digits.', - 'digits_between' => 'This must be between :min and :max digits.', - 'dimensions' => 'This image has invalid dimensions.', - 'distinct' => 'This field has a duplicate value.', - 'email' => 'This must be a valid email address.', - 'ends_with' => 'This must end with one of the following: :values.', - 'exists' => 'The selected value is invalid.', - 'file' => 'The content must be a file.', - 'filled' => 'This field must have a value.', - 'gt' => [ - 'numeric' => 'The value must be greater than :value.', - 'file' => 'The file size must be greater than :value kilobytes.', - 'string' => 'The string must be greater than :value characters.', - 'array' => 'The content must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The value must be greater than or equal :value.', - 'file' => 'The file size must be greater than or equal :value kilobytes.', - 'string' => 'The string must be greater than or equal :value characters.', - 'array' => 'The content must have :value items or more.', - ], - 'image' => 'This must be an image.', - 'in' => 'The selected value is invalid.', - 'in_array' => 'This value does not exist in :other.', - 'integer' => 'This must be an integer.', - 'ip' => 'This must be a valid IP address.', - 'ipv4' => 'This must be a valid IPv4 address.', - 'ipv6' => 'This must be a valid IPv6 address.', - 'json' => 'This must be a valid JSON string.', - 'lt' => [ - 'numeric' => 'The value must be less than :value.', - 'file' => 'The file size must be less than :value kilobytes.', - 'string' => 'The string must be less than :value characters.', - 'array' => 'The content must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The value must be less than or equal :value.', - 'file' => 'The file size must be less than or equal :value kilobytes.', - 'string' => 'The string must be less than or equal :value characters.', - 'array' => 'The content must not have more than :value items.', - ], - 'max' => [ - 'numeric' => 'The value may not be greater than :max.', - 'file' => 'The file size may not be greater than :max kilobytes.', - 'string' => 'The string may not be greater than :max characters.', - 'array' => 'The content may not have more than :max items.', - ], - 'mimes' => 'This must be a file of type: :values.', - 'mimetypes' => 'This must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The value must be at least :min.', - 'file' => 'The file size must be at least :min kilobytes.', - 'string' => 'The string must be at least :min characters.', - 'array' => 'The value must have at least :min items.', - ], - 'not_in' => 'The selected value is invalid.', - 'not_regex' => 'This format is invalid.', - 'numeric' => 'This must be a number.', - 'password' => 'The password is incorrect.', - 'present' => 'This field must be present.', - 'regex' => 'This format is invalid.', - 'required' => 'This field is required.', - 'required_if' => 'This field is required when :other is :value.', - 'required_unless' => 'This field is required unless :other is in :values.', - 'required_with' => 'This field is required when :values is present.', - 'required_with_all' => 'This field is required when :values are present.', - 'required_without' => 'This field is required when :values is not present.', - 'required_without_all' => 'This field is required when none of :values are present.', - 'same' => 'The value of this field must match the one from :other.', - 'size' => [ - 'numeric' => 'The value must be :size.', - 'file' => 'The file size must be :size kilobytes.', - 'string' => 'The string must be :size characters.', - 'array' => 'The content must contain :size items.', - ], - 'starts_with' => 'This must start with one of the following: :values.', - 'string' => 'This must be a string.', - 'timezone' => 'This must be a valid zone.', - 'unique' => 'This has already been taken.', - 'uploaded' => 'This failed to upload.', - 'url' => 'This format is invalid.', - 'uuid' => 'This must be a valid UUID.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - -]; diff --git a/resources/lang/ko/validation.php b/resources/lang/ko/validation.php index 86e11394..c0e4ec33 100644 --- a/resources/lang/ko/validation.php +++ b/resources/lang/ko/validation.php @@ -1,150 +1,115 @@ ':attribute을(를) 동의해야 합니다.', - 'active_url' => ':attribute은(는) 유효한 URL이 아닙니다.', - 'after' => ':attribute은(는) :date 이후 날짜여야 합니다.', - 'after_or_equal' => ':attribute은(는) :date 이후 날짜이거나 같은 날짜여야 합니다.', - 'alpha' => ':attribute은(는) 문자만 포함할 수 있습니다.', - 'alpha_dash' => ':attribute은(는) 문자, 숫자, 대쉬(-)만 포함할 수 있습니다.', - 'alpha_num' => ':attribute은(는) 문자와 숫자만 포함할 수 있습니다.', - 'array' => ':attribute은(는) 배열이어야 합니다.', - 'before' => ':attribute은(는) :date 이전 날짜여야 합니다.', - 'before_or_equal' => ':attribute은(는) :date 이전 날짜이거나 같은 날짜여야 합니다.', - 'between' => [ - 'numeric' => ':attribute은(는) :min에서 :max 사이여야 합니다.', - 'file' => ':attribute은(는) :min에서 :max 킬로바이트 사이여야 합니다.', - 'string' => ':attribute은(는) :min에서 :max 문자 사이여야 합니다.', - 'array' => ':attribute은(는) :min에서 :max 개의 항목이 있어야 합니다.', + 'accepted' => ':attribute을(를) 동의해야 합니다.', + 'active_url' => ':attribute은(는) 유효한 URL이 아닙니다.', + 'after' => ':attribute은(는) :date 이후 날짜여야 합니다.', + 'after_or_equal' => ':attribute은(는) :date 이후 날짜이거나 같은 날짜여야 합니다.', + 'alpha' => ':attribute은(는) 문자만 포함할 수 있습니다.', + 'alpha_dash' => ':attribute은(는) 문자, 숫자, 대쉬(-), 밑줄(_)만 포함할 수 있습니다.', + 'alpha_num' => ':attribute은(는) 문자와 숫자만 포함할 수 있습니다.', + 'array' => ':attribute은(는) 배열이어야 합니다.', + 'before' => ':attribute은(는) :date 이전 날짜여야 합니다.', + 'before_or_equal' => ':attribute은(는) :date 이전 날짜이거나 같은 날짜여야 합니다.', + 'between' => [ + 'numeric' => ':attribute의 값은 :min에서 :max 사이여야 합니다.', + 'file' => ':attribute의 용량은 :min에서 :max 킬로바이트 사이여야 합니다.', + 'string' => ':attribute의 길이는 :min에서 :max 문자 사이여야 합니다.', + 'array' => ':attribute의 항목 수는 :min에서 :max 개의 항목이 있어야 합니다.', ], - 'boolean' => ':attribute은(는) true 또는 false 이어야 합니다.', - 'confirmed' => ':attribute 확인 항목이 일치하지 않습니다.', - 'date' => ':attribute은(는) 유효한 날짜가 아닙니다.', - 'date_equals' => ':attribute은(는) :date과(와) 같은날짜여야합니다.', - 'date_format' => ':attribute이(가) :format 형식과 일치하지 않습니다.', - 'different' => ':attribute와(과) :other은(는) 서로 달라야 합니다.', - 'digits' => ':attribute은(는) :digits 자리 숫자여야 합니다.', - 'digits_between' => ':attribute)은(는) :min에서 :max 자리 사이여야 합니다.', - 'dimensions' => ':attribute은(는) 유효하지 않는 이미지 크기입니다.', - 'distinct' => ':attribute 필드에 중복된 값이 있습니다.', - 'email' => ':attribute은(는) 유효한 이메일 주소여야 합니다.', - 'ends_with' => ':attribute은(는) 다음 중 하나로 끝나야 합니다: :values.', - 'exists' => '선택된 :attribute은(는) 유효하지 않습니다.', - 'file' => ':attribute은(는) 파일이어야 합니다.', - 'filled' => ':attribute 필드는 값이 있어야 합니다.', - 'gt' => [ + 'boolean' => ':attribute은(는) true 또는 false 이어야 합니다.', + 'confirmed' => ':attribute 확인 항목이 일치하지 않습니다.', + 'date' => ':attribute은(는) 유효한 날짜가 아닙니다.', + 'date_equals' => ':attribute은(는) :date과(와) 같은날짜여야합니다.', + 'date_format' => ':attribute이(가) :format 형식과 일치하지 않습니다.', + 'different' => ':attribute와(과) :other은(는) 서로 달라야 합니다.', + 'digits' => ':attribute은(는) :digits 자리 숫자여야 합니다.', + 'digits_between' => ':attribute)은(는) :min에서 :max 자리 사이여야 합니다.', + 'dimensions' => ':attribute은(는) 올바르지 않는 이미지 크기입니다.', + 'distinct' => ':attribute 필드에 중복된 값이 있습니다.', + 'email' => ':attribute은(는) 유효한 이메일 주소여야 합니다.', + 'ends_with' => ':attribute은(는) 다음 중 하나로 끝나야 합니다: :values.', + 'exists' => '선택된 :attribute은(는) 올바르지 않습니다.', + 'file' => ':attribute은(는) 파일이어야 합니다.', + 'filled' => ':attribute 필드는 값이 있어야 합니다.', + 'gt' => [ 'numeric' => ':attribute의 값은 :value보다 커야 합니다.', - 'file' => ':attribute의 용량은 :value킬로바이트보다 커야 합니다.', - 'string' => ':attribute의 길이는 :value보다 길어야 합니다.', - 'array' => ':attribute의 항목수는 :value개 보다 많아야 합니다.', + 'file' => ':attribute의 용량은 :value킬로바이트보다 커야 합니다.', + 'string' => ':attribute의 길이는 :value보다 길어야 합니다.', + 'array' => ':attribute의 항목 수는 :value개 보다 많아야 합니다.', ], - 'gte' => [ + 'gte' => [ 'numeric' => ':attribute의 값은 :value보다 같거나 커야 합니다.', - 'file' => ':attribute의 용량은 :value킬로바이트보다 같거나 커야 합니다.', - 'string' => ':attribute의 길이는 :value보다 같거나 길어야 합니다.', - 'array' => ':attribute의 항목수는 :value개 보다 같거나 많아야 합니다.', + 'file' => ':attribute의 용량은 :value킬로바이트보다 같거나 커야 합니다.', + 'string' => ':attribute의 길이는 :value보다 같거나 길어야 합니다.', + 'array' => ':attribute의 항목 수는 :value개 보다 같거나 많아야 합니다.', ], - 'image' => ':attribute은(는) 이미지여야 합니다.', - 'in' => '선택된 :attribute은(는) 유효하지 않습니다.', - 'in_array' => ':attribute 필드는 :other에 존재하지 않습니다.', - 'integer' => ':attribute은(는) 정수여야 합니다.', - 'ip' => ':attribute은(는) 유효한 IP 주소여야 합니다.', - 'ipv4' => ':attribute은(는) 유효한 IPv4 주소여야 합니다.', - 'ipv6' => ':attribute은(는) 유효한 IPv6 주소여야 합니다.', - 'json' => ':attribute은(는) JSON 문자열이어야 합니다.', - 'lt' => [ + 'image' => ':attribute은(는) 이미지여야 합니다.', + 'in' => '선택된 :attribute은(는) 올바르지 않습니다.', + 'in_array' => ':attribute 필드는 :other에 존재하지 않습니다.', + 'integer' => ':attribute은(는) 정수여야 합니다.', + 'ip' => ':attribute은(는) 유효한 IP 주소여야 합니다.', + 'ipv4' => ':attribute은(는) 유효한 IPv4 주소여야 합니다.', + 'ipv6' => ':attribute은(는) 유효한 IPv6 주소여야 합니다.', + 'json' => ':attribute은(는) JSON 문자열이어야 합니다.', + 'lt' => [ 'numeric' => ':attribute의 값은 :value보다 작아야 합니다.', - 'file' => ':attribute의 용량은 :value킬로바이트보다 작아야 합니다.', - 'string' => ':attribute의 길이는 :value보다 짧아야 합니다.', - 'array' => ':attribute의 항목수는 :value개 보다 작아야 합니다.', + 'file' => ':attribute의 용량은 :value킬로바이트보다 작아야 합니다.', + 'string' => ':attribute의 길이는 :value보다 짧아야 합니다.', + 'array' => ':attribute의 항목 수는 :value개 보다 작아야 합니다.', ], - 'lte' => [ + 'lte' => [ 'numeric' => ':attribute의 값은 :value보다 같거나 작아야 합니다.', - 'file' => ':attribute의 용량은 :value킬로바이트보다 같거나 작아야 합니다.', - 'string' => ':attribute의 길이는 :value보다 같거나 짧아야 합니다.', - 'array' => ':attribute의 항목수는 :value개 보다 같거나 작아야 합니다.', + 'file' => ':attribute의 용량은 :value킬로바이트보다 같거나 작아야 합니다.', + 'string' => ':attribute의 길이는 :value보다 같거나 짧아야 합니다.', + 'array' => ':attribute의 항목 수는 :value개 보다 같거나 작아야 합니다.', ], - 'max' => [ + 'max' => [ 'numeric' => ':attribute은(는) :max보다 클 수 없습니다.', - 'file' => ':attribute은(는) :max킬로바이트보다 클 수 없습니다.', - 'string' => ':attribute은(는) :max자보다 클 수 없습니다.', - 'array' => ':attribute은(는) :max개보다 많을 수 없습니다.', + 'file' => ':attribute은(는) :max킬로바이트보다 클 수 없습니다.', + 'string' => ':attribute은(는) :max자보다 클 수 없습니다.', + 'array' => ':attribute은(는) :max개보다 많을 수 없습니다.', ], - 'mimes' => ':attribute은(는) 다음의 파일 형식이어야 합니다: :values.', - 'mimetypes' => ':attribute은(는) 다음의 파일 형식이어야 합니다: :values.', - 'min' => [ + 'mimes' => ':attribute은(는) 다음의 파일 형식이어야 합니다: :values.', + 'mimetypes' => ':attribute은(는) 다음의 파일 형식이어야 합니다: :values.', + 'min' => [ 'numeric' => ':attribute은(는) 최소한 :min이어야 합니다.', - 'file' => ':attribute은(는) 최소한 :min킬로바이트이어야 합니다.', - 'string' => ':attribute은(는) 최소한 :min자이어야 합니다.', - 'array' => ':attribute은(는) 최소한 :min개의 항목이 있어야 합니다.', + 'file' => ':attribute은(는) 최소한 :min킬로바이트이어야 합니다.', + 'string' => ':attribute은(는) 최소한 :min자이어야 합니다.', + 'array' => ':attribute은(는) 최소한 :min개의 항목이 있어야 합니다.', ], - 'not_in' => '선택된 :attribute이(가) 유효하지 않습니다.', - 'not_regex' => ':attribute의 형식이 올바르지 않습니다.', - 'numeric' => ':attribute은(는) 숫자여야 합니다.', - 'password' => ':비밀번호가 잘못되었습니다.', - 'present' => ':attribute 필드가 있어야 합니다.', - 'regex' => ':attribute 형식이 유효하지 않습니다.', - 'required' => ':attribute 필드는 필수입니다.', - 'required_if' => ':other이(가) :value 일 때 :attribute 필드는 필수입니다.', - 'required_unless' => ':other이(가) :values에 없다면 :attribute 필드는 필수입니다.', - 'required_with' => ':values이(가) 있는 경우 :attribute 필드는 필수입니다.', - 'required_with_all' => ':values이(가) 모두 있는 경우 :attribute 필드는 필수입니다.', - 'required_without' => ':values이(가) 없는 경우 :attribute 필드는 필수입니다.', + 'multiple_of' => ':attribute 는 :value 의 배수여야 합니다.', + 'not_in' => '선택된 :attribute이(가) 올바르지 않습니다.', + 'not_regex' => ':attribute의 형식이 올바르지 않습니다.', + 'numeric' => ':attribute은(는) 숫자여야 합니다.', + 'password' => '비밀번호가 잘못되었습니다.', + 'present' => ':attribute 필드가 있어야 합니다.', + 'regex' => ':attribute 형식이 올바르지 않습니다.', + 'required' => ':attribute 필드는 필수입니다.', + 'required_if' => ':other이(가) :value 일 때 :attribute 필드는 필수입니다.', + 'required_unless' => ':other이(가) :values에 없다면 :attribute 필드는 필수입니다.', + 'required_with' => ':values이(가) 있는 경우 :attribute 필드는 필수입니다.', + 'required_with_all' => ':values이(가) 모두 있는 경우 :attribute 필드는 필수입니다.', + 'required_without' => ':values이(가) 없는 경우 :attribute 필드는 필수입니다.', 'required_without_all' => ':values이(가) 모두 없는 경우 :attribute 필드는 필수입니다.', - 'same' => ':attribute와(과) :other은(는) 일치해야 합니다.', - 'size' => [ + 'same' => ':attribute와(과) :other은(는) 일치해야 합니다.', + 'size' => [ 'numeric' => ':attribute은(는) :size (이)여야 합니다.', - 'file' => ':attribute은(는) :size킬로바이트여야 합니다.', - 'string' => ':attribute은(는) :size자여야 합니다.', - 'array' => ':attribute은(는) :size개의 항목을 포함해야 합니다.', + 'file' => ':attribute은(는) :size킬로바이트여야 합니다.', + 'string' => ':attribute은(는) :size자여야 합니다.', + 'array' => ':attribute은(는) :size개의 항목을 포함해야 합니다.', ], - 'starts_with' => ':attribute은(는) :values 중하나로시작해야합니다.', - 'string' => ':attribute은(는) 문자열이어야 합니다.', - 'timezone' => ':attribute은(는) 올바른 시간대 이어야 합니다.', - 'unique' => ':attribute은(는) 이미 사용 중입니다.', - 'uploaded' => ':attribute을(를) 업로드하지 못했습니다.', - 'url' => ':attribute 형식은 유효하지 않습니다.', - 'uuid' => ':attribute은(는) 유효한UUID여야합니다.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ + 'starts_with' => ':attribute은(는) :values 중 하나로 시작해야 합니다.', + 'string' => ':attribute은(는) 문자열이어야 합니다.', + 'timezone' => ':attribute은(는) 올바른 시간대 이어야 합니다.', + 'unique' => ':attribute은(는) 이미 사용 중입니다.', + 'uploaded' => ':attribute을(를) 업로드하지 못했습니다.', + 'url' => ':attribute 형식은 올바르지 않습니다.', + 'uuid' => ':attribute은(는) 유효한UUID여야합니다.', + 'custom' => [ 'attribute-name' => [ 'rule-name' => 'custom-message', ], ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap attribute place-holders - | with something more reader friendly such as E-Mail Address instead - | of "email". This simply helps us make messages a little cleaner. - | - */ - - 'attributes' => [ - ], + 'attributes' => [], ]; diff --git a/resources/lang/zh-CN.json b/resources/lang/zh-CN.json deleted file mode 100644 index 9fd9228d..00000000 --- a/resources/lang/zh-CN.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "A fresh verification link has been sent to your email address.": "新的验证链接已发送到您的 E-mail。", - "All rights reserved.": "版本所有。", - "Before proceeding, please check your email for a verification link.": "在继续之前请先验证您的 E-mail。", - "click here to request another": "点击重新发送 E-mail", - "Confirm Password": "确认密码", - "E-Mail Address": "E-mail", - "Forbidden": "访问被拒绝", - "Forgot Your Password?": "忘记密码?", - "Go Home": "回首页", - "Hello!": "您好:", - "If you did not create an account, no further action is required.": "如果您未注册帐号,请忽略此邮件。", - "If you did not receive the email": "如果您没有收到", - "If you did not request a password reset, no further action is required.": "如果您未申请重设密码,请忽略此邮件。", - "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "如果您点击「:actionText」按钮时出现问题,请复制下方链接到浏览器中开启:", - "Invalid signature.": "签名无效", - "Login": "登录", - "Logout": "注销", - "Name": "姓名", - "Not Found": "页面不存在", - "Oh no": "不好了", - "Page Expired": "页面会话已超时", - "Password": "密码", - "Please click the button below to verify your email address.": "请点击下面按钮验证您的 E-mail:", - "Please confirm your password before continuing.": "如要继续操作,请先确认密码。", - "Regards": "致敬", - "Register": "注册", - "Remember Me": "记住我", - "Reset Password": "重设密码", - "Reset Password Notification": "重设密码通知", - "Send Password Reset Link": "发送重设密码链接", - "Server Error": "服务器错误", - "Service Unavailable": "暂时不提供服务", - "This action is unauthorized.": "权限不足", - "This password reset link will expire in :count minutes.": "这个重设密码链接将会在 :count 分钟后失效。", - "Toggle navigation": "切换导航", - "Too Many Attempts.": "尝试次数过多", - "Too Many Requests": "请求次数过多", - "Unauthorized": "未授权", - "Verify Email Address": "验证 E-mail", - "Verify Your Email Address": "验证 E-mail", - "We won't ask for your password again for a few hours.": "确认完成后,接下来几个小时内您不需再输入密码。", - "You are receiving this email because we received a password reset request for your account.": "您收到此电子邮件是因为我们收到了您帐户的密码重设请求。", - "Your email address is not verified.": "您的电子邮件尚未验证通过", - "Whoops!": "哎呦!" -} diff --git a/resources/lang/zh-CN/auth.php b/resources/lang/zh-CN/auth.php index b9dfc191..0dd8e1c7 100644 --- a/resources/lang/zh-CN/auth.php +++ b/resources/lang/zh-CN/auth.php @@ -1,76 +1,72 @@ '激 活', - 'active_account' => '激活账号', - 'active_tip' => '账号未激活,请点击', - 'captcha' => '验证码', - 'code' => '邀请码', - 'optional' => '可选', - 'login' => '登 录', - 'register' => '注 册', - 'send' => '发送', - 'tip' => '提示', - 'email' => '邮箱', - 'password' => '密码', - 'confirm_password' => '请再次输入密码', - 'back' => '返 回', - 'close' => '关 闭', - 'submit' => '提 交', - 'request' => '获 取', - 'remember' => '记住账号', - 'resetPassword' => '重置密码', - 'new_password' => '输入新密码', - 'forget_password' => '找回密码', - 'reset_password' => '重置密码', - 'get_free_code' => '点击获取邀请码', - 'accept_term' => '我已阅读并同意遵守', - 'tos' => '用户条款', - 'aup' => '可接受使用条款', - 'register_tip' => '还没有账号?请去', - 'system_maintenance' => '系统维护中...', - 'system_maintenance_tip' => '系统正在维护,如果您需要注册,请联系 :email ', - 'overtime' => '该链接已失效', - 'active_success' => '激活成功', - 'active_fail' => '激活失败', - 'active_limit' => '您已触发本站激活请求限制机制,请勿频繁操作!如有问题,请联系:email', - 'active_close' => '本站已关闭账号激活功能,请联系:email', - 'code_null' => '请输入邀请码', - 'captcha_null' => '请输入验证码', - 'captcha_error' => '验证码错误,请重新输入', - 'captcha_overtime' => '验证码不合法!可能已过期,请刷新后重试', - 'captcha_loading' => '正在加载验证码...', - 'captcha_required' => '请正确完成验证码操作', - 'captcha_fail' => '服务器验证失败,请重新尝试', - 'captcha_close' => '本站关闭了通过验证码注册', - 'captcha_send' => '验证码已发送至您的邮箱,请稍作等待或查看垃圾箱', - 'code_error' => '邀请码不可用,请重试', - 'username_null' => '请输入昵称', - 'email_null' => '请输入邮箱账号', - 'email_normal' => '账号状态正常,无需激活', - 'email_legitimate' => '邮箱地址不合规', - 'email_banned' => '本站屏蔽了您使用的邮箱服务商,请使用其他有效邮箱', - 'email_invalid' => '使用邮箱不在本站支持邮箱列表内', - 'email_exist' => '账号已存在,如果忘记密码请找回密码', - 'email_notExist' => '账号不存在,请重试', - 'login_error' => '邮箱或密码错误', - 'login_ban' => '您的账号已被禁止登录,请联系:email', - 'password_null' => '请输入密码', - 'password_limit' => '密码最少要6位数', - 'password_same' => '两次输入密码不一致', - 'register_close' => '本站关闭了注册通道', - 'register_anti' => '防刷机制已激活,请勿频繁注册', - 'register_fail' => '注册失败,请稍后尝试', - 'register_success' => '注册成功', - 'register_active_tip' => '激活邮件已发送! 请查看注册所用邮箱(邮件可能在垃圾箱中)', - 'repeat_request' => '请勿重复请求,请刷新后重试', - 'reset_password_close' => '本站关闭了找回密码功能,请联系:email', - 'reset_password_limit' => '24小时内只能重设密码:time次,请勿频繁操作', - 'reset_password_success_tip' => '重置成功,请查看所用邮箱(邮件可能在垃圾箱中)', - 'reset_password_same_fail' => '新旧密码一样,请重新输入', - 'reset_password_fail' => '重设密码失败', - 'reset_password_new' => '新密码设置成功,请自行登录', - 'request_error' => '请求异常,请刷新页面后重试', - 'username' => '昵称', - 'unaccepted' => '请阅读用户条款和可接受使用条款,并同意', + 'accept_term' => '我已阅读并同意遵守', + 'active' => [ + 'attribute' => '激活', + 'error' => [ + 'activated' => '账号已激活,无需再次激活', + 'disable' => '本站关闭了账号激活子系统,您可以直接去登录!', + 'throttle' => '您已触发本站激活请求限制机制,请勿频繁操作!如有问题,请联系:email', + ], + 'promotion' => ['0' => '账号尚未激活,请点击', '1' => '启动激活程序!'], + 'sent' => '激活邮件已发送! 请查看注册所用邮箱(邮件可能在垃圾箱中)', + ], + 'aup' => '可接受使用条款', + 'captcha' => [ + 'attribute' => '验证码', + 'error' => ['failed' => '验证码验证失败,请重新输入', 'timeout' => '验证码不合法!可能已过期,请刷新后重试'], + 'required' => '请正确完成验证码操作', + 'sent' => '验证码已发送至您的邮箱,请稍作等待或查看垃圾箱', + ], + 'email' => [ + 'error' => ['banned' => '本站屏蔽了您使用的邮箱服务商,请使用其他有效邮箱', 'invalid' => '使用邮箱不在本站支持邮箱列表内'], + ], + 'error' => [ + 'account_baned' => '您的账号已被禁止登录!', + 'login_error' => '登录错误,请稍后重试!', + 'login_failed' => '登录失败,请检查邮箱或密码是否输入正确!', + 'repeat_request' => '请勿重复请求,请刷新后重试', + 'url_timeout' => '链接已失效, 请重新操作', + ], + 'invite' => [ + 'attribute' => '邀请码', + 'error' => ['unavailable' => '邀请码不可用,请重试'], + 'get' => '点击获取邀请码', + 'not_required' => '无需邀请码,可直接注册!', + ], + 'login' => '登 录', + 'logout' => '登 出', + 'maintenance' => '维护', + 'maintenance_tip' => '网站维护中', + 'optional' => '可选', + 'password' => [ + 'forget' => '忘记密码?', + 'new' => '输入新密码', + 'original' => '原密码', + 'reset' => [ + 'attribute' => '重置密码', + 'error' => [ + 'disabled' => '本站关闭了密码重置子系统,有事请联系 :email ', + 'failed' => '重设密码失败', + 'throttle' => '24小时内只能重设密码 :time 次,请勿频繁操作', + 'same' => '新密码不可与旧密码一样,请重新输入', + 'wrong' => '旧密码错误,请重新输入', + 'demo' => '演示环境禁止修改管理员密码', + ], + 'sent' => '重置成功,请查看所用邮箱(邮件可能在垃圾箱中)', + 'success' => '新密码设置成功,请前往登录页面', + ], + ], + 'register' => [ + 'attribute' => '注 册', + 'code' => '注册验证码', + 'error' => ['disable' => '抱歉,本站关闭了注册通道', 'throttle' => '防刷机制已激活,请勿频繁注册'], + 'promotion' => '还没有账号?请去', + 'failed' => '注册失败,请稍后尝试', + 'success' => '注册成功', + ], + 'remember_me' => '记住我', + 'request' => '获 取', + 'tos' => '用户条款', ]; diff --git a/resources/lang/zh-CN/common.php b/resources/lang/zh-CN/common.php new file mode 100644 index 00000000..9e0fc951 --- /dev/null +++ b/resources/lang/zh-CN/common.php @@ -0,0 +1,85 @@ + '账号', + 'available_date' => '有效期', + 'created_at' => '生成时间', + 'expired_at' => '到期时间', + 'updated_at' => '更新时间', + 'back' => '返 回', + 'cancel' => '取 消', + 'close' => '关 闭', + 'close_item' => '关闭:attribute', + 'confirm' => '确 认', + 'continues' => '继 续', + 'open' => '打 开', + 'send' => '发 送', + 'view' => '查 看', + 'reset' => '重 置', + 'copy' => [ + 'attribute' => '复 制', + 'success' => '复制成功', + 'failed' => '复制失败,请手动复制', + ], + 'free' => '免费', + 'replace' => '更换', + 'submit' => '提 交', + 'submit_item' => '提交:attribute', + 'generate' => '生 成', + 'generate_item' => '生成:attribute', + 'to_safari' => ['0' => '点击右上角', '1' => ',选择在', '2' => 'Safari 中打开', '3' => '就可以正常访问本站了哟!'], + 'update_browser' => ['0' => '您正在使用', '1' => '过时', '2' => ' 的浏览器。 请', '3' => '升级您的浏览器', '4'=>'来获得最佳的浏览体验'], + 'apply' => '应 用', + 'avatar' => '头像', + 'customize' => '自定义', + 'all' => '全部', + 'default' => '默认', + 'download' => '下载', + 'goto' => '前 往', + 'warning' => '警 告', + 'success' => '成功', + 'failed' => '失败', + 'update' => '更 新', + 'update_action' => '更新:action', + 'none' => '无', + 'new' => '新', + 'sorry' => '抱歉', + 'applied' => ':attribute生效', + 'active_item' => '激活:attribute', + 'error' => '错误', + 'toggle' => '切 换', + 'toggle_action' => '切换:action', + 'request_url' => '请求地址', + 'function' => [ + 'navigation' => '导航', + 'menubar' => '菜单栏', + 'fullscreen' => '全屏', + ], + 'days' => [ + 'sun' => '周日', + 'mon' => '周一', + 'tue' => '周二', + 'wed' => '周三', + 'thu' => '周四', + 'fri' => '周五', + 'sat' => '周六', + 'weekend' => '周末', + 'work' => '工作日', + 'next' => '次日', + ], + 'qrcode' => ':attribute二维码', + 'deleted' => '已删除', + 'deleted_item' => ':attribute已删除', + 'print' => '打印', + 'unlimited' => '无限制', + 'payment' => [ + 'credit' => '余额', + 'wechat' => '微信', + 'alipay' => '支付宝', + 'crypto' => '虚拟货币', + ], + 'recommend' => '推荐', + 'advance' => '进阶', + 'status' => '状态', + 'action' => '操作', +]; diff --git a/resources/lang/zh-CN/error.php b/resources/lang/zh-CN/error.php index b6578476..1c93b688 100644 --- a/resources/lang/zh-CN/error.php +++ b/resources/lang/zh-CN/error.php @@ -1,18 +1,34 @@ '访问被拒绝', - 'ForbiddenRobot' => '检测到机器人访问,禁止访问', - 'ForbiddenAccess' => '检测到未知IP或使用代理访问,禁止访问', - 'ForbiddenChina' => '检测到中国IP或使用代理访问,禁止访问', - 'ForbiddenOversea' => '检测到海外IP或代理访问,禁止访问', - 'MissingPage' => '找不到网页', - 'Unauthorized' => '未授权访问', - 'Refresh' => '刷 新', - 'RefreshPage' => '请刷新页面后,再访问', - 'SystemError' => '系统错误', - 'Visit' => '请访问', - 'log' => '日志', - 'SecurityError' => '非安全入口访问', - 'SecurityEnter' => '安全入口访问', + 'forbidden' => [ + 'access' => '检测到未知IP或使用代理访问,禁止访问', + 'bots' => '检测到机器人访问,禁止访问', + 'china' => '检测到中国IP或使用代理访问,禁止访问', + 'oversea' => '检测到海外IP或代理访问,禁止访问', + ], + 'log' => '日志', + 'missing_page' => '找不到网页', + 'refresh' => '刷 新', + 'refresh_page' => '请刷新页面后,再访问', + 'report' => '错❌误携带了报告:', + 'safe_enter' => '安全入口访问', + 'system' => '系统错误', + 'title' => '⚠️错误触发', + 'unauthorized' => '未授权访问', + 'unsafe_enter' => '非安全入口访问', + 'visit' => '请访问', + 'whoops' => '哎呦!', + 'get_ip' => '获取IP信息异常', + 'subscribe' => [ + 'unknown' => '使用链接错误!请重新获取!', + 'sub_baned' => '链接已被封禁,请前往官网查询原因', + 'user' => '错误链接,账号不存在!请重新获取链接', + 'user_disable' => '账号被禁用!', + 'baned_until' => '账号封禁至:time,请解封后再更新!', + 'out' => '流量耗尽!请重新购买或重置流量!', + 'expired' => '账号过期!请续费!', + 'question' => '账号存在问题,请前往官网查询!', + 'none' => '无可用节点', + ], ]; diff --git a/resources/lang/zh-CN/home.php b/resources/lang/zh-CN/home.php deleted file mode 100644 index e9456077..00000000 --- a/resources/lang/zh-CN/home.php +++ /dev/null @@ -1,209 +0,0 @@ - '用户中心', - 'subscribe_help' => '互动式教程', - 'subscribe_link' => '订阅链接', - 'copy_subscribe_address' => '复制', - 'exchange_subscribe' => '更换', - 'subscribe_warning' => '警告:该订阅链接仅限个人使用,请勿传播该链接,否则会导致您的账号流量使用情况异常触发自动封号机制。', - 'reset_password_title' => '重置密码', - 'email_placeholder' => '请输入用户名', - 'system_down' => '系统维护中', - 'subscribe_baned' => '您的订阅功能被禁用,请联系管理员恢复', - 'download' => '下载', - 'sign_in' => '签 到', - - // 菜单 - 'home' => '主页', - 'nodeList' => '我的线路', - 'services' => '购买服务', - 'traffic_log' => '流量记录', - 'help' => '帮助中心', - 'invite_code' => '邀请码', - 'invoices' => '我的账单', - 'tickets' => '服务单', - 'referrals' => '推广返利', - 'free_invite_codes_title' => '免费邀请码', - 'no_need_invite_codes' => '现在无需邀请码', - - // 首页 - 'ratio_tips' => '推荐使用支持节点订阅功能的客户端,通过订阅功能可以在客户端快速同步节点信息。', - 'subscribe_button' => '获取订阅链接', - 'account_info' => '账号信息', - 'account_level' => '等级', - 'account_credit' => '账户余额', - 'account_score' => '积分', - 'account_status' => '账号状态', - 'account_expire' => '套餐时长', - 'account_last_usage' => '最近使用', - 'account_last_login' => '最近登录', - 'bandwidth' => '流量', - 'account_bandwidth_usage' => '剩余流量', - 'account_total_traffic' => '共计', - 'account_usage_traffic' => '已使用', - 'account_reset_notice' => '还有 :reset_day 天重置', - 'account_login_log' => '登陆日志', - 'article_title' => '文章', - 'recharge' => '充值', - 'enabled' => '正常', - 'disabled' => '停用', - 'limited' => '限制', - 'never_used' => '从未使用', - 'expired' => '已过期', - 'reason' => '理由', - 'normal' => '账号一切正常', - 'reason_expired' => '您的账号套餐已过期', - 'reason_traffic_exhausted' => '您的账号[剩余流量]消耗殆尽', - 'reason_overused' => '本时段使用流量超过 :data GB触发系统限制
:min 后解除限制', - 'reason_unknown' => '未知原因,请开工单联系管理', - 'never_loggedin' => '从未登录', - 'announcement' => '公告', - 'recharge_credit' => '余额充值', - 'payment_method' => '充值方式', - 'close' => '关闭', - 'cancel' => '取消', - 'redeem_score' => '兑换流量', - 'redeem' => '立即兑换', - 'redeem_info' => '您有 :score 积分,可兑换 :score M 免费流量。', - 'coupon_code' => '充值券码', - 'please_input_coupon' => '请输入充值券码', - 'scan_qrcode' => '请使用客户端扫描二维码', - 'setting_info' => '配置信息', - 'ratio' => '结算比例', - 'coupon_not_empty' => '优惠券码不能为空', - 'recharging' => '充值中...', - 'error_response' => '出现了错误,请稍后再试。', - 'error' => '错误', - 'online_pay' => '在线支付', - 'pay' => '支付', - - // 用户资料 - 'submit' => '提 交', - 'contact' => '联系方式', - 'ssr_setting' => '代理设置', - 'password' => '用户密码', - 'new_password' => '新密码', - 'current_password' => '原密码', - 'wechat' => '微信', - 'connection_password' => '连接密码', - 'encrpytion' => '加密方式', - 'protocal' => '协议插件', - 'obfs' => '混淆插件', - - // 购买服务 - 'service_title' => '商店', - 'service_name' => '服务', - 'service_desc' => '描述', - 'service_type' => '类型', - 'service_price' => '售价', - 'service_quantity' => '数量', - 'service_subtotal_price' => '小计', - 'service_total_price' => '合计', - 'service_pay_button' => '余额支付', - 'services_none' => '暂无可用服务', - 'service_traffic' => '内含流量', - 'service_days' => '有效期', - 'service_buy_button' => '购买', - 'service_unlimited' => '无限制', - 'service_device' => '设备数量', - 'day' => '天', - 'month' => '月', - 'coupon' => '优惠券', - 'redeem_coupon' => '使用', - 'service_type_1' => '流量包', - 'service_type_2' => '套餐', - 'service_type_3' => '余额', - - // 流量日志 - 'traffic_log_tips' => '提示:流量统计更新会有延迟。按天统计于次日更新,按小时统计于次小时更新。', - 'traffic_log_30days' => '本月流量使用情况', - 'traffic_log_24hours' => '今日流量使用情况', - 'traffic_log_keywords' => '使用流量', - 'traffic_log_unit' => '单位 / G', - 'traffic_log_max' => '使用高峰', - - // 邀请码 - 'invite_code_make' => '生成邀请码', - 'invite_code_button' => '生成', - 'invite_code_tips' => '可生成 :num 枚邀请码,:days 日内有效', - 'invite_code_my_codes' => '我的邀请码', - 'invite_code_table_name' => '邀请码', - 'invite_code_table_date' => '有效期', - 'invite_code_table_user' => '使用者', - 'invite_code_table_status' => '状态', - 'invite_code_table_none_codes' => '暂无数据', - 'invite_code_table_status_un' => '未使用', - 'invite_code_table_status_yes' => '已使用', - 'invite_code_table_status_expire' => '已过期', - 'invite_code_summary' => '共 :total 个邀请码', - - // 单据 - 'invoice_title' => '消费记录', - 'invoice_table_id' => '编号', - 'invoice_table_name' => '服务', - 'invoice_table_pay_way' => '支付方式', - 'invoice_table_price' => '金额', - 'invoice_table_create_date' => '购买日期', - 'invoice_table_expired_at' => '到期时间', - 'invoice_table_status' => '状态', - 'invoice_table_actions' => '操作', - 'invoice_table_none' => '暂无数据', - 'invoice_status_closed' => '关 闭', - 'invoice_status_wait_payment' => '待付款', - 'invoice_status_wait_confirm' => '待确认', - 'invoice_status_payment_confirm' => '完 成', - 'invoice_table_prepay' => '预支付', - 'invoice_table_start' => '启 用', - 'invoice_table_active' => '使用中', - 'invoice_table_expired' => '已过期', - 'invoice_goods_deleted' => '[服務已刪除]', - - // 工单 - 'ticket_title' => '人工服务', - 'ticket_open' => '打开', - 'ticket_close' => '关闭', - 'ticket_cancel' => '取消', - 'ticket_confirm' => '确认', - 'ticket_table_title' => '标题', - 'ticket_table_status' => '状态', - 'ticket_table_none' => '暂无数据', - 'ticket_table_status_wait' => '待处理', - 'ticket_table_status_reply' => '已回复', - 'ticket_table_status_close' => '已关闭', - 'ticket_table_new_button' => '创建新的工单', - 'ticket_table_new_title' => '标题:(财务问题,账号问题,技术问题,售后问题等)', - 'ticket_table_content' => '请详细的描述您遇到的问题,或者需要我们帮助的地方', - 'ticket_table_view' => '查看', - 'ticket_reply' => '发送', - 'ticket_reply_me' => '我', - 'ticket_reply_master' => '管理员', - 'ticket_reply_placeholder' => '说些什么呢?', - 'ticket_close_title' => '关闭工单', - 'ticket_close_content' => '您确定要关闭该工单吗?', - - // 推广返利 - 'referral_title' => '佣金记录', - 'referral_button' => '复制', - 'referral_my_link' => '我的推广链接', - 'referral_table_user' => '消费者', - 'referral_table_amount' => '消费金额', - 'referral_table_commission' => '返利金额', - 'referral_table_status' => '状态', - 'referral_table_date' => '返利时间', - 'referral_table_none' => '暂无数据', - 'referral_table_apply' => '提现', - 'referral_summary' => '合计返利 :amount 元( :total 次),满 :money 元可以申请提现。', - 'referral_apply_title' => '提现记录', - 'referral_apply_table_amount' => '提现金额', - 'referral_apply_table_status' => '状态', - 'referral_apply_table_date' => '提现日期', - 'console' => '管理中心', - 'profile' => '个人设置', - 'logout' => '退出登录', - 'promote_link' => '通过您的推广链接注册并激活,你们双方都将获得:traffic流量奖励;当他们消费时,您将获得他们消费金额的:referral_percent%作为奖励。', - 'promote_invite_code' => '通过您的邀请码注册并激活,你们双方都将获得:traffic流量奖励;当他们消费时,您将获得他们消费金额的:referral_percent%作为奖励。', - 'invite_user_title' => '邀请记录', - 'invite_user_email' => '邮箱', - 'invite_user_created_at' => '注册时间', -]; diff --git a/resources/lang/zh-CN/pagination.php b/resources/lang/zh-CN/pagination.php index 6d34f3c8..813f6af3 100644 --- a/resources/lang/zh-CN/pagination.php +++ b/resources/lang/zh-CN/pagination.php @@ -1,17 +1,6 @@ '« 上一页', - 'next' => '下一页 »', + 'next' => '下一页 »', ]; diff --git a/resources/lang/zh-CN/passwords.php b/resources/lang/zh-CN/passwords.php index 77e6b3fd..a72ab7ed 100644 --- a/resources/lang/zh-CN/passwords.php +++ b/resources/lang/zh-CN/passwords.php @@ -1,20 +1,9 @@ '密码重置成功!', - 'sent' => '密码重置邮件已发送!', + 'reset' => '密码重置成功!', + 'sent' => '密码重置邮件已发送!', 'throttled' => '请稍候再试。', - 'token' => '密码重置令牌无效。', - 'user' => '找不到该邮箱对应的用户。', + 'token' => '密码重置令牌无效。', + 'user' => '找不到该邮箱对应的用户。', ]; diff --git a/resources/lang/zh-CN/user.php b/resources/lang/zh-CN/user.php new file mode 100644 index 00000000..be293472 --- /dev/null +++ b/resources/lang/zh-CN/user.php @@ -0,0 +1,215 @@ + [ + 'credit' => '账户余额', + 'status' => '账号状态', + 'level' => '账号等级', + 'group' => '所属分组', + 'speed_limit' => '限速', + 'remain' => '剩余流量', + 'time' => '套餐时长', + 'last_login' => '最近登录', + 'reset' => '还有 :days 天重置', + 'connect_password' => '连接密码', + 'reason' => [ + 'normal' => '账号一切正常', + 'expired' => '您的账号套餐已过期', + 'overused' => '本时段使用流量超过 :data GB触发系统限制
:min 后解除限制', + 'traffic_exhausted' => '您的账号[流量]消耗殆尽', + 'unknown' => '未知原因,请开工单联系管理', + ], + ], + 'status' => [ + 'disabled' => '停用', + 'enabled' => '正常', + 'expired' => '已过期', + 'limited' => '限制', + 'unused' => '未使用', + 'used' => '已使用', + 'closed' => '关 闭', + 'completed' => '完 成', + 'waiting_payment' => '待付款', + 'using' => '使用中', + 'waiting_confirm' => '待确认', + 'prepaid' => '预支付', + 'applying' => '申请中', + 'withdrawn' => '已提现', + 'not_withdrawn' => '未提现', + 'reply' => '已回复', + 'pending' => '待处理', + ], + 'home' => [ + 'attendance' => [ + 'attribute' => '签 到', + 'disable' => '系统未开启签到功能', + 'done' => '已经签到过了,明天再来吧!', + 'success' => '您获得了 :data 流量', + 'failed' => '系统❌异常', + ], + 'traffic_logs' => '流量记录', + 'announcement' => '公告', + 'wechat_push' => '微信公告推送', + 'chat_group' => '聊天群', + 'empty_announcement' => '暂无公告', + ], + 'purchase_to_unlock' => '购买服务后解锁', + 'purchase_required' => '本功能对非付费用户禁用!请', + 'more' => '更多', + 'attribute' => [ + 'node' => '线路', + 'data' => '流量', + 'ip' => 'IP地址', + 'isp' => '运营商', + 'address' => '地区', + ], + 'purchase_promotion' => '快 来 购 买 服 务 吧!', + 'menu' => [ + 'helps' => '帮 助', + 'home' => '主 页', + 'invites' => '邀 请', + 'invoices' => '账 单', + 'nodes' => '线 路', + 'referrals' => '推 广', + 'shop' => '服 务', + 'tickets' => '工 单', + 'admin_dashboard' => '管理面板', + ], + 'contact' => '联系方式', + 'coupon' => [ + 'attribute' => '优惠券', + 'voucher' => '代金券', + 'recharge' => '充值券码', + 'inactive' => '优惠券尚未生效', + 'wait_active' => '活动将于:time生效,请耐心等待!', + 'limit' => '使用条件未满足', + 'higher' => '本券最低使用金额为 ¥:amount', + 'discount' => '优惠', + ], + 'error_response' => '出现了错误,请稍后再试。', + 'invite' => [ + 'attribute' => '邀请码', + 'total' => '共 :num 个邀请码', + 'tips' => '可生成 :num 枚邀请码,:days 日内有效', + 'logs' => '邀请记录', + 'promotion' => '通过您的邀请码注册并激活,你们双方都将获得:traffic流量奖励;当他们消费时,您将获得他们消费金额的:referral_percent%作为奖励。', + 'generate_failed' => '生成失败:已无邀请码生成名额', + ], + 'reset_data' => [ + '' => '重置流量', + 'required' => '需要', + 'cost_tips' => '本次重置流量将扣除余额 ¥:amount!', + 'lack' => '余额不足,请充值余额', + 'logs' => '用户自行重置流量', + 'success' => '重置成功', + ], + 'referral' => [ + 'link' => '推广链接', + 'total' => '合计返利 :amount 元( :total 次),满 :money 元可以申请提现。', + 'amount' => '消费金额', + 'commission' => '返利金额', + 'logs' => '佣金记录', + 'failed' => '申请失败', + 'success' => '申请成功', + 'msg' => [ + 'account' => '账号已过期,请先购买服务吧', + 'applied' => '已存在申请,请等待之前的申请处理完', + 'unfulfilled' => '满:amount元才可以提现,继续努力吧', + 'wait' => '请等待管理员审核', + 'error' => '返利单建立失败,请稍后尝试或通知管理员', + ], + ], + 'inviter' => '邀请者', + 'invitee' => '受邀者', + 'consumer' => '消费者', + 'unknown' => '未知', + 'registered_at' => '注册时间', + 'bought_at' => '购买日期', + 'payment_method' => '支付方式', + 'pay' => '支付', + 'input_coupon' => '请输入充值券码', + 'user_profile' => '个人设置', + 'recharge' => '充值', + 'recharge_credit' => '余额充值', + 'recharging' => '充值中...', + 'withdraw_commission' => '结算佣金', + 'withdraw_at' => '结算日期', + 'withdraw_logs' => '提现记录', + 'withdraw' => '提 现', + 'scan_qrcode' => '请使用客户端扫描二维码', + 'shop' => [ + 'hot' => '热 销', + 'limited' => '限 购', + 'change_amount' => '充值金额', + 'buy' => '购买', + 'description' => '描述', + 'service' => '服务', + 'pay_credit' => '余额支付', + 'pay_online' => '在线支付', + 'price' => '价格', + 'quantity' => '数量', + 'subtotal' => '小计', + 'total' => '合计', + 'conflict' => '套餐存在冲突', + 'conflict_tips' => '

当前购买套餐将自动设置为 预支付套餐

  1. 预支付套餐会在生效中的套餐失效后自动开通!
  2. 您可以在支付后手动激活套餐!
', + 'call4help' => '请开工单通知客服', + ], + 'payment' => [ + 'error' => '充值余额不合规', + 'creating' => '创建支付单中...', + 'redirect_stripe' => '转跳至Stripe支付界面...', + 'qrcode_tips' => '请使用:software扫描二维码', + 'close_tips' => '请在:minutes分钟内完成支付,否者订单将会自动关闭', + 'mobile_tips' => '手机用户:长按二维码 -> 保存图片 ->打开支付软件 -> 扫一扫 -> 选择相册 进行付款', + ], + 'invoice' => [ + 'attribute' => '订单', + 'id' => '订单号', + 'detail' => '消费记录', + 'amount' => '金额', + 'active_prepaid_question' => '是否提前激活预支付套餐?', + 'active_prepaid_tips' => '套餐激活后:
先前套餐将直接失效!
过期日期将由本日重新开始计算!', + ], + 'node' => [ + 'info' => '配置信息', + 'setting' => '代理设置', + 'unstable' => '线路波动/维护中', + 'rate' => ':ratio倍流量消耗', + ], + 'subscribe' => [ + 'baned' => '您的订阅功能被禁用,请联系管理员恢复', + 'link' => '订阅链接', + 'tips' => '警告:该订阅链接仅限个人使用,请勿传播该链接,否则会导致您的账号流量使用情况异常触发自动封号机制。', + 'exchange_warning' => '更换订阅地址将导致:\n1.旧地址立即失效\n2.连接密码被更改', + 'ss_only' => '只订阅SS/SSR', + 'v2ray_only' => '只订阅V2Ray', + 'trojan_only' => '只订阅Trojan', + 'error' => '更换订阅地址异常', + ], + 'ticket' => [ + 'attribute' => '工单', + 'submit_tips' => '确定提交工单?', + 'reply_confirm' => '确定回复工单?', + 'close_tips' => '您确定要关闭该工单吗?', + 'close' => '关闭工单', + 'failed_closed' => '错误:该工单已关闭', + 'reply_placeholder' => '说些什么呢?', + 'reply' => '回复', + 'close_msg' => '工单:ID:id用户已手动关闭', + 'placeholder' => '请详细的描述您遇到的问题,或者需要我们帮助的地方', + 'title_placeholder' => '请详细的描述您遇到的问题,或者需要我们帮助的地方', + 'new' => '创建新的工单', + 'working_hour' => '客服工作时间', + 'online_hour' => '在线时间', + 'service_tips' => '本站有多种联系方式,请使用其中一种联系客服!
重复请求,将会自动延迟处理时间', + 'error' => '未知错误!请通知客服', + ], + 'traffic_logs' => [ + '24hours' => '今日流量使用情况', + '30days' => '本月流量使用情况', + 'tips' => '提示:流量统计更新会有延迟。按天统计于次日更新,按小时统计于次小时更新。', + ], + 'client' => '客户端', + 'tutorials' => '教程', + 'current_role' => '当前身份', +]; diff --git a/resources/lang/zh-CN/validation-inline.php b/resources/lang/zh-CN/validation-inline.php deleted file mode 100644 index 6ad7069e..00000000 --- a/resources/lang/zh-CN/validation-inline.php +++ /dev/null @@ -1,138 +0,0 @@ - 'This field must be accepted.', - 'active_url' => 'This is not a valid URL.', - 'after' => 'This must be a date after :date.', - 'after_or_equal' => 'This must be a date after or equal to :date.', - 'alpha' => 'This field may only contain letters.', - 'alpha_dash' => 'This field may only contain letters, numbers, dashes and underscores.', - 'alpha_num' => 'This field may only contain letters and numbers.', - 'array' => 'This field must be an array.', - 'before' => 'This must be a date before :date.', - 'before_or_equal' => 'This must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'This value must be between :min and :max.', - 'file' => 'This file must be between :min and :max kilobytes.', - 'string' => 'This string must be between :min and :max characters.', - 'array' => 'This content must have between :min and :max items.', - ], - 'boolean' => 'This field must be true or false.', - 'confirmed' => 'The confirmation does not match.', - 'date' => 'This is not a valid date.', - 'date_equals' => 'This must be a date equal to :date.', - 'date_format' => 'This does not match the format :format.', - 'different' => 'This value must be different from :other.', - 'digits' => 'This must be :digits digits.', - 'digits_between' => 'This must be between :min and :max digits.', - 'dimensions' => 'This image has invalid dimensions.', - 'distinct' => 'This field has a duplicate value.', - 'email' => 'This must be a valid email address.', - 'ends_with' => 'This must end with one of the following: :values.', - 'exists' => 'The selected value is invalid.', - 'file' => 'The content must be a file.', - 'filled' => 'This field must have a value.', - 'gt' => [ - 'numeric' => 'The value must be greater than :value.', - 'file' => 'The file size must be greater than :value kilobytes.', - 'string' => 'The string must be greater than :value characters.', - 'array' => 'The content must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The value must be greater than or equal :value.', - 'file' => 'The file size must be greater than or equal :value kilobytes.', - 'string' => 'The string must be greater than or equal :value characters.', - 'array' => 'The content must have :value items or more.', - ], - 'image' => 'This must be an image.', - 'in' => 'The selected value is invalid.', - 'in_array' => 'This value does not exist in :other.', - 'integer' => 'This must be an integer.', - 'ip' => 'This must be a valid IP address.', - 'ipv4' => 'This must be a valid IPv4 address.', - 'ipv6' => 'This must be a valid IPv6 address.', - 'json' => 'This must be a valid JSON string.', - 'lt' => [ - 'numeric' => 'The value must be less than :value.', - 'file' => 'The file size must be less than :value kilobytes.', - 'string' => 'The string must be less than :value characters.', - 'array' => 'The content must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The value must be less than or equal :value.', - 'file' => 'The file size must be less than or equal :value kilobytes.', - 'string' => 'The string must be less than or equal :value characters.', - 'array' => 'The content must not have more than :value items.', - ], - 'max' => [ - 'numeric' => 'The value may not be greater than :max.', - 'file' => 'The file size may not be greater than :max kilobytes.', - 'string' => 'The string may not be greater than :max characters.', - 'array' => 'The content may not have more than :max items.', - ], - 'mimes' => 'This must be a file of type: :values.', - 'mimetypes' => 'This must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The value must be at least :min.', - 'file' => 'The file size must be at least :min kilobytes.', - 'string' => 'The string must be at least :min characters.', - 'array' => 'The value must have at least :min items.', - ], - 'not_in' => 'The selected value is invalid.', - 'not_regex' => 'This format is invalid.', - 'numeric' => 'This must be a number.', - 'password' => 'The password is incorrect.', - 'present' => 'This field must be present.', - 'regex' => 'This format is invalid.', - 'required' => 'This field is required.', - 'required_if' => 'This field is required when :other is :value.', - 'required_unless' => 'This field is required unless :other is in :values.', - 'required_with' => 'This field is required when :values is present.', - 'required_with_all' => 'This field is required when :values are present.', - 'required_without' => 'This field is required when :values is not present.', - 'required_without_all' => 'This field is required when none of :values are present.', - 'same' => 'The value of this field must match the one from :other.', - 'size' => [ - 'numeric' => 'The value must be :size.', - 'file' => 'The file size must be :size kilobytes.', - 'string' => 'The string must be :size characters.', - 'array' => 'The content must contain :size items.', - ], - 'starts_with' => 'This must start with one of the following: :values.', - 'string' => 'This must be a string.', - 'timezone' => 'This must be a valid zone.', - 'unique' => 'This has already been taken.', - 'uploaded' => 'This failed to upload.', - 'url' => 'This format is invalid.', - 'uuid' => 'This must be a valid UUID.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - -]; diff --git a/resources/lang/zh-CN/validation.php b/resources/lang/zh-CN/validation.php index a1c3da3d..318d5800 100644 --- a/resources/lang/zh-CN/validation.php +++ b/resources/lang/zh-CN/validation.php @@ -1,132 +1,111 @@ '您必须接受 :attribute。', - 'active_url' => ':attribute 不是一个有效的网址。', - 'after' => ':attribute 必须要晚于 :date。', - 'after_or_equal' => ':attribute 必须要等于 :date 或更晚。', - 'alpha' => ':attribute 只能由字母组成。', - 'alpha_dash' => ':attribute 只能由字母、数字、短划线(-)和下划线(_)组成。', - 'alpha_num' => ':attribute 只能由字母和数字组成。', - 'array' => ':attribute 必须是一个数组。', - 'before' => ':attribute 必须要早于 :date。', - 'before_or_equal' => ':attribute 必须要等于 :date 或更早。', - 'between' => [ + 'accepted' => '您必须接受 :attribute。', + 'active_url' => ':attribute 不是一个有效的网址。', + 'after' => ':attribute 必须要晚于 :date。', + 'after_or_equal' => ':attribute 必须要等于 :date 或更晚。', + 'alpha' => ':attribute 只能由字母组成。', + 'alpha_dash' => ':attribute 只能由字母、数字、短划线(-)和下划线(_)组成。', + 'alpha_num' => ':attribute 只能由字母和数字组成。', + 'array' => ':attribute 必须是一个数组。', + 'before' => ':attribute 必须要早于 :date。', + 'before_or_equal' => ':attribute 必须要等于 :date 或更早。', + 'between' => [ 'numeric' => ':attribute 必须介于 :min - :max 之间。', - 'file' => ':attribute 必须介于 :min - :max KB 之间。', - 'string' => ':attribute 必须介于 :min - :max 个字符之间。', - 'array' => ':attribute 必须只有 :min - :max 个单元。', + 'file' => ':attribute 必须介于 :min - :max KB 之间。', + 'string' => ':attribute 必须介于 :min - :max 个字符之间。', + 'array' => ':attribute 必须只有 :min - :max 个单元。', ], - 'boolean' => ':attribute 必须为布尔值。', - 'confirmed' => ':attribute 两次输入不一致。', - 'date' => ':attribute 不是一个有效的日期。', - 'date_equals' => ':attribute 必须要等于 :date。', - 'date_format' => ':attribute 的格式必须为 :format。', - 'different' => ':attribute 和 :other 必须不同。', - 'digits' => ':attribute 必须是 :digits 位的数字。', - 'digits_between' => ':attribute 必须是介于 :min 和 :max 位的数字。', - 'dimensions' => ':attribute 图片尺寸不正确。', - 'distinct' => ':attribute 已经存在。', - 'email' => ':attribute 不是一个合法的邮箱。', - 'ends_with' => ':attribute 必须以 :values 为结尾。', - 'exists' => ':attribute 不存在。', - 'file' => ':attribute 必须是文件。', - 'filled' => ':attribute 不能为空。', - 'gt' => [ + 'boolean' => ':attribute 必须为布尔值。', + 'confirmed' => ':attribute 两次输入不一致。', + 'date' => ':attribute 不是一个有效的日期。', + 'date_equals' => ':attribute 必须要等于 :date。', + 'date_format' => ':attribute 的格式必须为 :format。', + 'different' => ':attribute 和 :other 必须不同。', + 'digits' => ':attribute 必须是 :digits 位数字。', + 'digits_between' => ':attribute 必须是介于 :min 和 :max 位的数字。', + 'dimensions' => ':attribute 图片尺寸不正确。', + 'distinct' => ':attribute 已经存在。', + 'email' => ':attribute 不是一个合法的邮箱。', + 'ends_with' => ':attribute 必须以 :values 为结尾。', + 'exists' => ':attribute 不存在。', + 'file' => ':attribute 必须是文件。', + 'filled' => ':attribute 不能为空。', + 'gt' => [ 'numeric' => ':attribute 必须大于 :value。', - 'file' => ':attribute 必须大于 :value KB。', - 'string' => ':attribute 必须多于 :value 个字符。', - 'array' => ':attribute 必须多于 :value 个元素。', + 'file' => ':attribute 必须大于 :value KB。', + 'string' => ':attribute 必须多于 :value 个字符。', + 'array' => ':attribute 必须多于 :value 个元素。', ], - 'gte' => [ + 'gte' => [ 'numeric' => ':attribute 必须大于或等于 :value。', - 'file' => ':attribute 必须大于或等于 :value KB。', - 'string' => ':attribute 必须多于或等于 :value 个字符。', - 'array' => ':attribute 必须多于或等于 :value 个元素。', + 'file' => ':attribute 必须大于或等于 :value KB。', + 'string' => ':attribute 必须多于或等于 :value 个字符。', + 'array' => ':attribute 必须多于或等于 :value 个元素。', ], - 'image' => ':attribute 必须是图片。', - 'in' => '已选的属性 :attribute 非法。', - 'in_array' => ':attribute 没有在 :other 中。', - 'integer' => ':attribute 必须是整数。', - 'ip' => ':attribute 必须是有效的 IP 地址。', - 'ipv4' => ':attribute 必须是有效的 IPv4 地址。', - 'ipv6' => ':attribute 必须是有效的 IPv6 地址。', - 'json' => ':attribute 必须是正确的 JSON 格式。', - 'lt' => [ + 'image' => ':attribute 必须是图片。', + 'in' => '已选的属性 :attribute 无效。', + 'in_array' => ':attribute 必须在 :other 中。', + 'integer' => ':attribute 必须是整数。', + 'ip' => ':attribute 必须是有效的 IP 地址。', + 'ipv4' => ':attribute 必须是有效的 IPv4 地址。', + 'ipv6' => ':attribute 必须是有效的 IPv6 地址。', + 'json' => ':attribute 必须是正确的 JSON 格式。', + 'lt' => [ 'numeric' => ':attribute 必须小于 :value。', - 'file' => ':attribute 必须小于 :value KB。', - 'string' => ':attribute 必须少于 :value 个字符。', - 'array' => ':attribute 必须少于 :value 个元素。', + 'file' => ':attribute 必须小于 :value KB。', + 'string' => ':attribute 必须少于 :value 个字符。', + 'array' => ':attribute 必须少于 :value 个元素。', ], - 'lte' => [ + 'lte' => [ 'numeric' => ':attribute 必须小于或等于 :value。', - 'file' => ':attribute 必须小于或等于 :value KB。', - 'string' => ':attribute 必须少于或等于 :value 个字符。', - 'array' => ':attribute 必须少于或等于 :value 个元素。', + 'file' => ':attribute 必须小于或等于 :value KB。', + 'string' => ':attribute 必须少于或等于 :value 个字符。', + 'array' => ':attribute 必须少于或等于 :value 个元素。', ], - 'max' => [ + 'max' => [ 'numeric' => ':attribute 不能大于 :max。', - 'file' => ':attribute 不能大于 :max KB。', - 'string' => ':attribute 不能大于 :max 个字符。', - 'array' => ':attribute 最多只有 :max 个单元。', + 'file' => ':attribute 不能大于 :max KB。', + 'string' => ':attribute 不能大于 :max 个字符。', + 'array' => ':attribute 最多只有 :max 个单元。', ], - 'mimes' => ':attribute 必须是一个 :values 类型的文件。', - 'mimetypes' => ':attribute 必须是一个 :values 类型的文件。', - 'min' => [ + 'mimes' => ':attribute 必须是一个 :values 类型的文件。', + 'mimetypes' => ':attribute 必须是一个 :values 类型的文件。', + 'min' => [ 'numeric' => ':attribute 必须大于等于 :min。', - 'file' => ':attribute 大小不能小于 :min KB。', - 'string' => ':attribute 至少为 :min 个字符。', - 'array' => ':attribute 至少有 :min 个单元。', + 'file' => ':attribute 大小不能小于 :min KB。', + 'string' => ':attribute 至少为 :min 个字符。', + 'array' => ':attribute 至少有 :min 个单元。', ], - 'not_in' => '已选的属性 :attribute 非法。', - 'not_regex' => ':attribute 的格式错误。', - 'numeric' => ':attribute 必须是一个数字。', - 'password' => '密码错误', - 'present' => ':attribute 必须存在。', - 'regex' => ':attribute 格式不正确。', - 'required' => ':attribute 不能为空。', - 'required_if' => '当 :other 为 :value 时 :attribute 不能为空。', - 'required_unless' => '当 :other 不为 :values 时 :attribute 不能为空。', - 'required_with' => '当 :values 存在时 :attribute 不能为空。', - 'required_with_all' => '当 :values 存在时 :attribute 不能为空。', - 'required_without' => '当 :values 不存在时 :attribute 不能为空。', + 'multiple_of' => 'The :attribute must be a multiple of :value', + 'not_in' => '已选的属性 :attribute 非法。', + 'not_regex' => ':attribute 的格式错误。', + 'numeric' => ':attribute 必须是一个数字。', + 'password' => '密码错误', + 'present' => ':attribute 必须存在。', + 'regex' => ':attribute 格式不正确。', + 'required' => ':attribute 不能为空。', + 'required_if' => '当 :other 为 :value 时 :attribute 不能为空。', + 'required_unless' => '当 :other 不为 :values 时 :attribute 不能为空。', + 'required_with' => '当 :values 存在时 :attribute 不能为空。', + 'required_with_all' => '当 :values 存在时 :attribute 不能为空。', + 'required_without' => '当 :values 不存在时 :attribute 不能为空。', 'required_without_all' => '当 :values 都不存在时 :attribute 不能为空。', - 'same' => ':attribute 和 :other 必须相同。', - 'size' => [ + 'same' => ':attribute 和 :other 必须相同。', + 'size' => [ 'numeric' => ':attribute 大小必须为 :size。', - 'file' => ':attribute 大小必须为 :size KB。', - 'string' => ':attribute 必须是 :size 个字符。', - 'array' => ':attribute 必须为 :size 个单元。', + 'file' => ':attribute 大小必须为 :size KB。', + 'string' => ':attribute 必须是 :size 个字符。', + 'array' => ':attribute 必须为 :size 个单元。', ], - 'starts_with' => ':attribute 必须以 :values 为开头。', - 'string' => ':attribute 必须是一个字符串。', - 'timezone' => ':attribute 必须是一个合法的时区值。', - 'unique' => ':attribute 已经存在。', - 'uploaded' => ':attribute 上传失败。', - 'url' => ':attribute 格式不正确。', - 'uuid' => ':attribute 必须是有效的 UUID。', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ + 'starts_with' => ':attribute 必须以 :values 为开头。', + 'string' => ':attribute 必须是一个字符串。', + 'timezone' => ':attribute 必须是一个合法的时区值。', + 'unique' => ':attribute 已经存在。', + 'uploaded' => ':attribute 上传失败。', + 'url' => ':attribute 格式不正确。', + 'uuid' => ':attribute 必须是有效的 UUID。', 'custom' => [ 'attribute-name' => [ @@ -134,46 +113,24 @@ return [ ], ], - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap our attribute placeholder - | with something more reader friendly such as "E-Mail Address" instead - | of "email". This simply helps us make our message more expressive. - | - */ - 'attributes' => [ - 'name' => '名称', - 'username' => '用户名', - 'email' => '邮箱', - 'first_name' => '名', - 'last_name' => '姓', - 'password' => '密码', + 'name' => '名称', + 'username' => '昵称', + 'email' => '邮箱', + 'password' => '密码', 'password_confirmation' => '确认密码', - 'city' => '城市', - 'country' => '国家', - 'address' => '地址', - 'phone' => '电话', - 'mobile' => '手机', - 'age' => '年龄', - 'sex' => '性别', - 'gender' => '性别', - 'day' => '天', - 'month' => '月', - 'year' => '年', - 'hour' => '时', - 'minute' => '分', - 'second' => '秒', - 'title' => '标题', - 'content' => '内容', - 'description' => '描述', - 'excerpt' => '摘要', - 'date' => '日期', - 'time' => '时间', - 'available' => '可用的', - 'size' => '大小', + 'phone' => '电话', + 'day' => '天', + 'month' => '月', + 'year' => '年', + 'hour' => '时', + 'minute' => '分', + 'second' => '秒', + 'title' => '标题', + 'content' => '内容', + 'description' => '描述', + 'excerpt' => '摘要', + 'date' => '日期', + 'time' => '时间', ], ]; diff --git a/resources/lang/zh-TW.json b/resources/lang/zh-TW.json deleted file mode 100644 index da1b65af..00000000 --- a/resources/lang/zh-TW.json +++ /dev/null @@ -1,46 +0,0 @@ -{ - "A fresh verification link has been sent to your email address.": "新的驗證連結已發送到您的 E-mail。", - "All rights reserved.": "版權所有。", - "Before proceeding, please check your email for a verification link.": "在繼續之前請先驗證您的 E-mail。", - "click here to request another": "點擊重新發送 E-mail", - "Confirm Password": "確認密碼", - "E-Mail Address": "E-mail", - "Forbidden": "無法瀏覽", - "Forgot Your Password?": "忘記密碼?", - "Go Home": "回首頁", - "Hello!": "您好:", - "If you did not create an account, no further action is required.": "如果您未註冊帳號,請忽略此郵件。", - "If you did not receive the email": "如果您沒有收到", - "If you did not request a password reset, no further action is required.": "如果您未申請重設密碼,請忽略此郵件。", - "If you’re having trouble clicking the \":actionText\" button, copy and paste the URL below\ninto your web browser:": "如果您點擊「:actionText」按鈕時出現問題,請複製下方連結到瀏覽器中開啟:", - "Invalid signature.": "簽名無效", - "Login": "登入", - "Logout": "登出", - "Name": "姓名", - "Not Found": "頁面不存在", - "Oh no": "不好了", - "Page Expired": "頁面逾時", - "Password": "密碼", - "Please click the button below to verify your email address.": "請點擊下面按鈕驗證您的 E-mail:", - "Please confirm your password before continuing.": "如要繼續操作,請先確認密碼。", - "Regards": "致敬", - "Register": "註冊", - "Remember Me": "記住我", - "Reset Password": "重設密碼", - "Reset Password Notification": "重設密碼通知", - "Send Password Reset Link": "發送重設密碼連結", - "Server Error": "伺服器錯誤", - "Service Unavailable": "暫時不提供服務", - "This action is unauthorized.": "權限不足", - "This password reset link will expire in :count minutes.": "這個重設密碼連結將於 :count 分鐘後過期。", - "Toggle navigation": "切換導航", - "Too Many Attempts.": "嘗試次數過多", - "Too Many Requests": "請求次數過多", - "Unauthorized": "權限不足", - "Verify Email Address": "驗證 E-mail", - "Verify Your Email Address": "驗證 E-mail", - "We won't ask for your password again for a few hours.": "確認完成後,接下來幾個小時內您不需再輸入密碼。", - "You are receiving this email because we received a password reset request for your account.": "您收到此電子郵件是因為我們收到了您帳戶的密碼重設請求。", - "Your email address is not verified.": "您的 E-mail 尚未驗證通過", - "Whoops!": "哎呦!" -} diff --git a/resources/lang/zh-tw/auth.php b/resources/lang/zh-tw/auth.php deleted file mode 100644 index 9b0f29c8..00000000 --- a/resources/lang/zh-tw/auth.php +++ /dev/null @@ -1,74 +0,0 @@ - '激 活', - 'active_account' => '激活賬號', - 'active_tip' => '賬號未激活,請點擊', - 'captcha' => '驗證碼', - 'code' => '邀請碼', - 'optional' => '可選', - 'login' => '登 錄', - 'register' => '注 冊', - 'send' => '發送', - 'tip' => '提示', - 'email' => '郵箱', - 'password' => '密碼', - 'confirm_password' => '請再次輸入密碼', - 'back' => '返 回', - 'close' => '關 閉', - 'submit' => '提 交', - 'request' => '獲 取', - 'remember' => '記住賬號', - 'resetPassword' => '重置密碼', - 'new_password' => '輸入新密碼', - 'forget_password' => '找回密碼', - 'reset_password' => '重置密碼', - 'get_free_code' => '點擊獲取邀請碼', - 'accept_term' => '我已閱讀並同意遵守', - 'tos' => '用戶條款', - 'aup' => '可接受使用條款', - 'register_tip' => '還沒有賬號?請去', - 'system_maintenance' => '系統維護中...', - 'system_maintenance_tip' => '系統正在維護,如果您需要註冊,請聯繫 :email ', - 'overtime' => '該鏈接已失效', - - 'active_success' => '激活成功', - 'active_fail' => '激活失敗', - 'active_limit' => '您已觸發本站激活請求限制機制,請勿頻繁操作!如有問題,請聯繫:email', - 'active_close' => '本站已關閉賬號激活功能,請聯繫:email', - 'code_null' => '請輸入邀請碼', - 'captcha_null' => '請輸入驗證碼', - 'captcha_error' => '驗證碼錯誤,請重新輸入', - 'captcha_overtime' => '驗證碼不合法!可能已過期,請刷新後重試', - 'captcha_loading' => '正在加載驗證碼...', - 'captcha_required' => '請正確完成驗證碼操作', - 'captcha_fail' => '服務器驗證失敗,請重新嘗試', - 'captcha_close' => '本站關閉了通過驗證碼註冊', - 'captcha_send' => '驗證碼已發送', - 'code_error' => '邀請碼不可用,請重試', - 'email_null' => '請輸入郵箱賬號', - 'email_normal' => '賬號狀態正常,無需激活', - 'email_legitimate' => '郵箱地址不合規', - 'email_banned' => '郵箱含有敏感詞,請使用其他有效郵箱', - 'email_exist' => '賬號已存在,如果忘記密碼請找回密碼', - 'email_notExist' => '賬號不存在,請重試', - 'login_error' => '郵箱或密碼錯誤', - 'login_ban' => '您的賬號已被禁止登錄,請聯繫:email', - 'password_null' => '請輸入密碼', - 'password_limit' => '密碼最少要6位數', - 'password_same' => '兩次輸入密碼不一致', - 'register_close' => '本站關閉了註冊通道', - 'register_anti' => '防刷機制已激活,請勿頻繁註冊', - 'register_fail' => '註冊失敗,請稍後嘗試', - 'register_success' => '註冊成功', - 'register_active_tip' => '激活郵件已發送! 請查看註冊所用郵箱(郵件可能在垃圾箱中)', - 'repeat_request' => '請勿重複請求,請刷新後重試', - 'reset_password_close' => '本站關閉了找回密碼功能,請聯繫:email', - 'reset_password_limit' => '24小時內只能重設密碼:time次,請勿頻繁操作', - 'reset_password_success_tip' => '重置成功,請查看所用郵箱(郵件可能在垃圾箱中)', - 'reset_password_same_fail' => '新舊密碼一樣,請重新輸入', - 'reset_password_fail' => '重設密碼失敗', - 'reset_password_new' => '新密碼設置成功,請自行登錄', - 'request_error' => '請求異常,請刷新頁面後重試', - 'username' => '昵稱', -]; diff --git a/resources/lang/zh-tw/error.php b/resources/lang/zh-tw/error.php deleted file mode 100644 index d55a3653..00000000 --- a/resources/lang/zh-tw/error.php +++ /dev/null @@ -1,18 +0,0 @@ - '訪問被拒絕', - 'ForbiddenRobot' => '檢測到機器人訪問,禁止訪問', - 'ForbiddenAccess' => '檢測到未知IP或使用代理訪問,禁止訪問', - 'ForbiddenChina' => '檢測到中國IP或使用代理訪問,禁止訪問', - 'ForbiddenOversea' => '檢測到海外IP或打理,禁止訪問', - 'MissingPage' => '找不到網頁', - 'Unauthorized' => '未授權訪問', - 'Refresh' => '刷 新', - 'RefreshPage' => '請刷新頁面後,再訪問', - 'SystemError' => '系統錯誤', - 'Visit' => '請訪問', - 'log' => '日誌', - 'SecurityError' => '非安全入口訪問', - 'SecurityEnter' => '安全入口訪問', -]; diff --git a/resources/lang/zh-tw/home.php b/resources/lang/zh-tw/home.php deleted file mode 100644 index fe87a886..00000000 --- a/resources/lang/zh-tw/home.php +++ /dev/null @@ -1,201 +0,0 @@ - '用戶中心', - 'subscribe_help' => '互動式教程', - 'subscribe_link' => '訂閱鏈接', - 'copy_subscribe_address' => '複製', - 'exchange_subscribe' => '更換', - 'subscribe_warning' => '注意:該訂閱鏈接僅限個人使用,請勿傳播該鏈接,這會導致您的帳號流量使用情况异常。', - 'reset_password_title' => '重置密碼', - 'email_placeholder' => '請輸入用戶名', - 'system_down' => '系統維護中', - 'subscribe_baned' => '您的訂閱功能被暫時禁用,請聯系管理員恢復', - 'download' => '下載', - 'sign_in' => '簽到', - - // 菜单 - 'home' => '主頁', - 'nodeList' => '我的線路', - 'services' => '購買服務', - 'traffic_log' => '流量記錄', - 'help' => '幫助中心', - 'invite_code' => '邀請碼', - 'invoices' => '我的帳單', - 'tickets' => '服務單', - 'referrals' => '推廣返利', - 'free_invite_codes_title' => '免費邀請碼', - 'no_need_invite_codes' => '現在無需邀請碼,即可注册', - - // 首页 - 'ratio_tips' => '自動同步更新節點信息,請獲取', - 'subscribe_button' => '訂閱鏈接', - 'account_info' => '帳號資訊', - 'account_level' => '等級', - 'account_credit' => '帳戶餘額', - 'account_score' => '積分', - 'account_status' => '狀態', - 'account_expire' => '有效期至', - 'account_last_usage' => '最近使用', - 'account_last_login' => '最近登錄', - 'account_bandwidth_usage' => '流量', - 'account_total_traffic' => '共計', - 'account_usage_traffic' => '已使用', - 'account_reset_notice' => ':reset_day 日重置', - 'account_login_log' => '登錄日誌', - 'article_title' => '文章', - 'recharge' => '充值', - 'enabled' => '正常', - 'disabled' => '禁用', - 'never_used' => '從未使用', - 'expired' => '已過期', - 'reason' => '理由', - 'reason_expired' => '您的賬號套餐已過期', - 'reason_traffic_exhausted' => '您的賬號可用流量消耗殆盡', - 'reason_overused' => '您的流量小時流量超過了系統限制', - 'reason_unknown' => '未知,請開工單聯繫管理', - 'never_loggedin' => '從未登錄', - 'announcement' => '公告', - 'recharge_credit' => '餘額充值', - 'payment_method' => '充值管道', - 'close' => '取消', - 'redeem_score' => '兌換流量', - 'redeem' => '立即兌換', - 'redeem_info' => '您有 :score 積分,可兌換 :score M 免費流量。', - 'coupon_code' => '優惠券碼', - 'please_input_coupon' => '請輸入優惠券碼', - 'scan_qrcode' => '請使用用戶端掃描二維碼', - 'setting_info' => '配寘資訊', - 'ratio' => '結算比例', - 'coupon_not_empty' => '優惠券碼不能為空', - 'recharging' => '充值中...', - 'error_response' => '出現了錯誤,請稍後再試。', - 'error' => '錯誤', - 'online_pay' => '線上支付', - 'pay' => '支付', - - // 用户资料 - 'submit' => '提 交', - 'contact' => '聯繫方式', - 'ssr_setting' => '代理設定', - 'password' => '使用者密碼', - 'new_password' => '新密碼', - 'current_password' => '原密碼', - 'wechat' => '微信', - 'connection_password' => '連接密碼', - 'encrpytion' => '加密管道', - 'protocal' => '協定挿件', - 'obfs' => '混淆挿件', - - // 购买服务 - 'service_title' => '商店', - 'service_name' => '服務', - 'service_desc' => '描述', - 'service_type' => '類型', - 'service_price' => '售價', - 'service_quantity' => '數量', - 'service_subtotal_price' => '小計', - 'service_total_price' => '合計', - 'service_pay_button' => '餘額支付', - 'services_none' => '暫無可用服務', - 'service_traffic' => '内含流量', - 'service_days' => '有效期', - 'service_buy_button' => '購買', - 'service_unlimited' => '無限制', - 'service_device' => '設備數量', - 'day' => '天', - 'month' => '月', - 'coupon' => '優惠券', - 'redeem_coupon' => '使用', - 'service_type_1' => '流量包', - 'service_type_2' => '套餐', - 'service_type_3' => '餘額', - - // 流量日志 - 'traffic_log_tips' => '提示:流量統計更新會有延遲。按天統計于次日更新,按小時統計圖于次小時更新。', - 'traffic_log_30days' => '最近 30 天的流量使用情况', - 'traffic_log_24hours' => '最近 24 小時的流量使用情况', - 'traffic_log_keywords' => '使用流量', - 'traffic_log_unit' => '單位 / G', - 'traffic_log_max' => '使用高峰', - - // 邀请码 - 'invite_code_make' => '生成邀請碼', - 'invite_code_button' => '生成', - 'invite_code_tips' => '可生成 :num 枚邀請碼,:days 日內有效', - 'invite_code_my_codes' => '我的邀請碼', - 'invite_code_table_name' => '邀請碼', - 'invite_code_table_date' => '有效期', - 'invite_code_table_user' => '使用者', - 'invite_code_table_status' => '狀態', - 'invite_code_table_none_codes' => '暫無數據', - 'invite_code_table_status_un' => '未使用', - 'invite_code_table_status_yes' => '已使用', - 'invite_code_table_status_expire' => '已過期', - 'invite_code_summary' => '共 :total 个邀請碼', - - // 单据 - 'invoice_title' => '消費記錄', - 'invoice_table_id' => '編號', - 'invoice_table_name' => '服務', - 'invoice_table_pay_way' => '支付方式', - 'invoice_table_price' => '金額', - 'invoice_table_create_date' => '購買日期', - 'invoice_table_expired_at' => '到期時間', - 'invoice_table_status' => '狀態', - 'invoice_table_none' => '暫無數據', - 'invoice_table_closed' => '關閉', - 'invoice_table_wait_payment' => '待付款', - 'invoice_table_wait_confirm' => '待確認', - 'invoice_table_wait_active' => '使用中', - 'invoice_table_expired' => '已過期', - 'invoice_table_goods_deleted' => '[服務已刪除]', - - // 工单 - 'ticket_title' => '人工服務', - 'ticket_open' => '打開', - 'ticket_close' => '關閉', - 'ticket_cancel' => '取消', - 'ticket_confirm' => '確認', - 'ticket_table_title' => '標題', - 'ticket_table_status' => '狀態', - 'ticket_table_none' => '暫無數據', - 'ticket_table_status_wait' => '待處理', - 'ticket_table_status_reply' => '已回復', - 'ticket_table_status_close' => '已關閉', - 'ticket_table_new_button' => '創建新的工單', - 'ticket_table_new_title' => '標題:(財務問題,賬號問題,技術問題,售後問題等)', - 'ticket_table_content' => '請詳細的描述您遇到的問題,或者說明需要我們幫助的地方', - 'ticket_table_view' => '查看', - 'ticket_reply' => '發送', - 'ticket_reply_me' => '我', - 'ticket_reply_master' => '管理員', - 'ticket_reply_placeholder' => '說些什麼呢?', - 'ticket_close_title' => '關閉工單', - 'ticket_close_content' => '您確定要關閉該工單嗎?', - - // 推广返利 - 'referral_title' => '傭金記錄', - 'referral_button' => '複製', - 'referral_my_link' => '我的推廣鏈接', - 'referral_table_user' => '消費者', - 'referral_table_amount' => '消費金額', - 'referral_table_commission' => '返利金額', - 'referral_table_status' => '狀態', - 'referral_table_date' => '返利時間', - 'referral_table_none' => '暫無數據', - 'referral_table_apply' => '提現', - 'referral_summary' => '合計返利 :amount 元(:total次),滿 :money元 可以申請提現。', - 'referral_apply_title' => '提現記錄', - 'referral_apply_table_amount' => '提現金額', - 'referral_apply_table_status' => '狀態', - 'referral_apply_table_date' => '提現日期', - 'console' => '管理中心', - 'profile' => '個人設置', - 'logout' => '登出', - 'promote_link' => '通過您的推廣連結注册並啟動,您和新用戶都會獲得 :traffic 流量獎勵;當他們消費時,您將獲得他們消費金額的 :referral_percent% 作為獎勵。', - 'promote_invite_code' => '通過您的邀請碼注册並啟動,您和新用戶都會獲得 :traffic 流量獎勵;當他們消費時,您將獲得他們消費金額的 :referral_percent% 作為獎勵。', - 'invite_user_title' => '邀請記錄', - 'invite_user_email' => '郵箱', - 'invite_user_created_at' => '註冊時間', -]; diff --git a/resources/lang/zh-tw/pagination.php b/resources/lang/zh-tw/pagination.php deleted file mode 100644 index 35739a55..00000000 --- a/resources/lang/zh-tw/pagination.php +++ /dev/null @@ -1,17 +0,0 @@ - '« 上一頁', - 'next' => '下一頁 »', -]; diff --git a/resources/lang/zh-tw/passwords.php b/resources/lang/zh-tw/passwords.php deleted file mode 100644 index c58459d7..00000000 --- a/resources/lang/zh-tw/passwords.php +++ /dev/null @@ -1,20 +0,0 @@ - '密碼已成功重設!', - 'sent' => '密碼重設郵件已發送!', - 'throttled' => '請稍候再試。', - 'token' => '密碼重設碼無效。', - 'user' => '找不到該 E-mail 對應的使用者。', -]; diff --git a/resources/lang/zh-tw/validation-inline.php b/resources/lang/zh-tw/validation-inline.php deleted file mode 100644 index 6ad7069e..00000000 --- a/resources/lang/zh-tw/validation-inline.php +++ /dev/null @@ -1,138 +0,0 @@ - 'This field must be accepted.', - 'active_url' => 'This is not a valid URL.', - 'after' => 'This must be a date after :date.', - 'after_or_equal' => 'This must be a date after or equal to :date.', - 'alpha' => 'This field may only contain letters.', - 'alpha_dash' => 'This field may only contain letters, numbers, dashes and underscores.', - 'alpha_num' => 'This field may only contain letters and numbers.', - 'array' => 'This field must be an array.', - 'before' => 'This must be a date before :date.', - 'before_or_equal' => 'This must be a date before or equal to :date.', - 'between' => [ - 'numeric' => 'This value must be between :min and :max.', - 'file' => 'This file must be between :min and :max kilobytes.', - 'string' => 'This string must be between :min and :max characters.', - 'array' => 'This content must have between :min and :max items.', - ], - 'boolean' => 'This field must be true or false.', - 'confirmed' => 'The confirmation does not match.', - 'date' => 'This is not a valid date.', - 'date_equals' => 'This must be a date equal to :date.', - 'date_format' => 'This does not match the format :format.', - 'different' => 'This value must be different from :other.', - 'digits' => 'This must be :digits digits.', - 'digits_between' => 'This must be between :min and :max digits.', - 'dimensions' => 'This image has invalid dimensions.', - 'distinct' => 'This field has a duplicate value.', - 'email' => 'This must be a valid email address.', - 'ends_with' => 'This must end with one of the following: :values.', - 'exists' => 'The selected value is invalid.', - 'file' => 'The content must be a file.', - 'filled' => 'This field must have a value.', - 'gt' => [ - 'numeric' => 'The value must be greater than :value.', - 'file' => 'The file size must be greater than :value kilobytes.', - 'string' => 'The string must be greater than :value characters.', - 'array' => 'The content must have more than :value items.', - ], - 'gte' => [ - 'numeric' => 'The value must be greater than or equal :value.', - 'file' => 'The file size must be greater than or equal :value kilobytes.', - 'string' => 'The string must be greater than or equal :value characters.', - 'array' => 'The content must have :value items or more.', - ], - 'image' => 'This must be an image.', - 'in' => 'The selected value is invalid.', - 'in_array' => 'This value does not exist in :other.', - 'integer' => 'This must be an integer.', - 'ip' => 'This must be a valid IP address.', - 'ipv4' => 'This must be a valid IPv4 address.', - 'ipv6' => 'This must be a valid IPv6 address.', - 'json' => 'This must be a valid JSON string.', - 'lt' => [ - 'numeric' => 'The value must be less than :value.', - 'file' => 'The file size must be less than :value kilobytes.', - 'string' => 'The string must be less than :value characters.', - 'array' => 'The content must have less than :value items.', - ], - 'lte' => [ - 'numeric' => 'The value must be less than or equal :value.', - 'file' => 'The file size must be less than or equal :value kilobytes.', - 'string' => 'The string must be less than or equal :value characters.', - 'array' => 'The content must not have more than :value items.', - ], - 'max' => [ - 'numeric' => 'The value may not be greater than :max.', - 'file' => 'The file size may not be greater than :max kilobytes.', - 'string' => 'The string may not be greater than :max characters.', - 'array' => 'The content may not have more than :max items.', - ], - 'mimes' => 'This must be a file of type: :values.', - 'mimetypes' => 'This must be a file of type: :values.', - 'min' => [ - 'numeric' => 'The value must be at least :min.', - 'file' => 'The file size must be at least :min kilobytes.', - 'string' => 'The string must be at least :min characters.', - 'array' => 'The value must have at least :min items.', - ], - 'not_in' => 'The selected value is invalid.', - 'not_regex' => 'This format is invalid.', - 'numeric' => 'This must be a number.', - 'password' => 'The password is incorrect.', - 'present' => 'This field must be present.', - 'regex' => 'This format is invalid.', - 'required' => 'This field is required.', - 'required_if' => 'This field is required when :other is :value.', - 'required_unless' => 'This field is required unless :other is in :values.', - 'required_with' => 'This field is required when :values is present.', - 'required_with_all' => 'This field is required when :values are present.', - 'required_without' => 'This field is required when :values is not present.', - 'required_without_all' => 'This field is required when none of :values are present.', - 'same' => 'The value of this field must match the one from :other.', - 'size' => [ - 'numeric' => 'The value must be :size.', - 'file' => 'The file size must be :size kilobytes.', - 'string' => 'The string must be :size characters.', - 'array' => 'The content must contain :size items.', - ], - 'starts_with' => 'This must start with one of the following: :values.', - 'string' => 'This must be a string.', - 'timezone' => 'This must be a valid zone.', - 'unique' => 'This has already been taken.', - 'uploaded' => 'This failed to upload.', - 'url' => 'This format is invalid.', - 'uuid' => 'This must be a valid UUID.', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - -]; diff --git a/resources/lang/zh-tw/validation.php b/resources/lang/zh-tw/validation.php deleted file mode 100644 index 1827b266..00000000 --- a/resources/lang/zh-tw/validation.php +++ /dev/null @@ -1,179 +0,0 @@ - '必須接受 :attribute。', - 'active_url' => ':attribute 不是有效的網址。', - 'after' => ':attribute 必須要晚於 :date。', - 'after_or_equal' => ':attribute 必須要等於 :date 或更晚。', - 'alpha' => ':attribute 只能以字母組成。', - 'alpha_dash' => ':attribute 只能以字母、數字、連接線(-)及底線(_)組成。', - 'alpha_num' => ':attribute 只能以字母及數字組成。', - 'array' => ':attribute 必須為陣列。', - 'before' => ':attribute 必須要早於 :date。', - 'before_or_equal' => ':attribute 必須要等於 :date 或更早。', - 'between' => [ - 'numeric' => ':attribute 必須介於 :min 至 :max 之間。', - 'file' => ':attribute 必須介於 :min 至 :max KB 之間。 ', - 'string' => ':attribute 必須介於 :min 至 :max 個字元之間。', - 'array' => ':attribute: 必須有 :min - :max 個元素。', - ], - 'boolean' => ':attribute 必須為布林值。', - 'confirmed' => ':attribute 確認欄位的輸入不一致。', - 'date' => ':attribute 不是有效的日期。', - 'date_equals' => ':attribute 必須等於 :date。', - 'date_format' => ':attribute 不符合 :format 的格式。', - 'different' => ':attribute 與 :other 必須不同。', - 'digits' => ':attribute 必須是 :digits 位數字。', - 'digits_between' => ':attribute 必須介於 :min 至 :max 位數字。', - 'dimensions' => ':attribute 圖片尺寸不正確。', - 'distinct' => ':attribute 已經存在。', - 'email' => ':attribute 必須是有效的 E-mail。', - 'ends_with' => ':attribute 結尾必須包含下列之一::values', - 'exists' => ':attribute 不存在。', - 'file' => ':attribute 必須是有效的檔案。', - 'filled' => ':attribute 不能留空。', - 'gt' => [ - 'numeric' => ':attribute 必須大於 :value。', - 'file' => ':attribute 必須大於 :value KB。', - 'string' => ':attribute 必須多於 :value 個字元。', - 'array' => ':attribute 必須多於 :value 個元素。', - ], - 'gte' => [ - 'numeric' => ':attribute 必須大於或等於 :value。', - 'file' => ':attribute 必須大於或等於 :value KB。', - 'string' => ':attribute 必須多於或等於 :value 個字元。', - 'array' => ':attribute 必須多於或等於 :value 個元素。', - ], - 'image' => ':attribute 必須是一張圖片。', - 'in' => '所選擇的 :attribute 選項無效。', - 'in_array' => ':attribute 沒有在 :other 中。', - 'integer' => ':attribute 必須是一個整數。', - 'ip' => ':attribute 必須是一個有效的 IP 位址。', - 'ipv4' => ':attribute 必須是一個有效的 IPv4 位址。', - 'ipv6' => ':attribute 必須是一個有效的 IPv6 位址。', - 'json' => ':attribute 必須是正確的 JSON 字串。', - 'lt' => [ - 'numeric' => ':attribute 必須小於 :value。', - 'file' => ':attribute 必須小於 :value KB。', - 'string' => ':attribute 必須少於 :value 個字元。', - 'array' => ':attribute 必須少於 :value 個元素。', - ], - 'lte' => [ - 'numeric' => ':attribute 必須小於或等於 :value。', - 'file' => ':attribute 必須小於或等於 :value KB。', - 'string' => ':attribute 必須少於或等於 :value 個字元。', - 'array' => ':attribute 必須少於或等於 :value 個元素。', - ], - 'max' => [ - 'numeric' => ':attribute 不能大於 :max。', - 'file' => ':attribute 不能大於 :max KB。', - 'string' => ':attribute 不能多於 :max 個字元。', - 'array' => ':attribute 最多有 :max 個元素。', - ], - 'mimes' => ':attribute 必須為 :values 的檔案。', - 'mimetypes' => ':attribute 必須為 :values 的檔案。', - 'min' => [ - 'numeric' => ':attribute 不能小於 :min。', - 'file' => ':attribute 不能小於 :min KB。', - 'string' => ':attribute 不能小於 :min 個字元。', - 'array' => ':attribute 至少有 :min 個元素。', - ], - 'not_in' => '所選擇的 :attribute 選項無效。', - 'not_regex' => ':attribute 的格式錯誤。', - 'numeric' => ':attribute 必須為一個數字。', - 'password' => '密碼錯誤', - 'present' => ':attribute 必須存在。', - 'regex' => ':attribute 的格式錯誤。', - 'required' => ':attribute 不能留空。', - 'required_if' => '當 :other 是 :value 時 :attribute 不能留空。', - 'required_unless' => '當 :other 不是 :values 時 :attribute 不能留空。', - 'required_with' => '當 :values 出現時 :attribute 不能留空。', - 'required_with_all' => '當 :values 出現時 :attribute 不能為空。', - 'required_without' => '當 :values 留空時 :attribute field 不能留空。', - 'required_without_all' => '當 :values 都不出現時 :attribute 不能留空。', - 'same' => ':attribute 與 :other 必須相同。', - 'size' => [ - 'numeric' => ':attribute 的大小必須是 :size。', - 'file' => ':attribute 的大小必須是 :size KB。', - 'string' => ':attribute 必須是 :size 個字元。', - 'array' => ':attribute 必須是 :size 個元素。', - ], - 'starts_with' => ':attribute 開頭必須包含下列之一::values', - 'string' => ':attribute 必須是一個字串。', - 'timezone' => ':attribute 必須是一個正確的時區值。', - 'unique' => ':attribute 已經存在。', - 'uploaded' => ':attribute 上傳失敗。', - 'url' => ':attribute 的格式錯誤。', - 'uuid' => ':attribute 必須是有效的 UUID。', - - /* - |-------------------------------------------------------------------------- - | Custom Validation Language Lines - |-------------------------------------------------------------------------- - | - | Here you may specify custom validation messages for attributes using the - | convention "attribute.rule" to name the lines. This makes it quick to - | specify a specific custom language line for a given attribute rule. - | - */ - - 'custom' => [ - 'attribute-name' => [ - 'rule-name' => 'custom-message', - ], - ], - - /* - |-------------------------------------------------------------------------- - | Custom Validation Attributes - |-------------------------------------------------------------------------- - | - | The following language lines are used to swap our attribute placeholder - | with something more reader friendly such as "E-Mail Address" instead - | of "email". This simply helps us make our message more expressive. - | - */ - - 'attributes' => [ - 'address' => '地址', - 'age' => '年齡', - 'available' => '可用的', - 'city' => '城市', - 'content' => '內容', - 'country' => '國家', - 'date' => '日期', - 'day' => '天', - 'description' => '描述', - 'email' => 'E-mail', - 'excerpt' => '摘要', - 'first_name' => '名', - 'gender' => '性別', - 'hour' => '時', - 'last_name' => '姓', - 'minute' => '分', - 'mobile' => '手機', - 'month' => '月', - 'name' => '名稱', - 'password' => '密碼', - 'password_confirmation' => '確認密碼', - 'phone' => '電話', - 'second' => '秒', - 'sex' => '性別', - 'size' => '大小', - 'time' => '時間', - 'title' => '標題', - 'username' => '使用者名稱', - 'year' => '年', - ], -]; diff --git a/resources/views/admin/aff/detail.blade.php b/resources/views/admin/aff/detail.blade.php index 7aa30f51..91cb3bc5 100644 --- a/resources/views/admin/aff/detail.blade.php +++ b/resources/views/admin/aff/detail.blade.php @@ -22,7 +22,7 @@ - 申请单ID:{{$referral->id}} | 申请人:{{$referral->user->email}} | 申请提现金额:¥{{$referral->amount}} | 申请时间:{{$referral->created_at}} + 申请单ID:{{$referral->id}} | 申请人:{{$referral->user->email}} | 申请提现金额:¥{{$referral->amount}} | 申请时间:{{$referral->created_at}} @@ -39,7 +39,7 @@ {{$commission->id}} - {{$commission->invitee->email ?? '【账号已删除】'}} + {{$commission->invitee->email ?? '【'.trans('common.deleted_item', ['attribute' => trans('common.account')]).'】'}} @can('admin.order') @@ -49,8 +49,8 @@ {{$commission->order->goods->name}} @endcan - ¥{{$commission->amount}} - ¥{{$commission->commission}} + ¥{{$commission->amount}} + ¥{{$commission->commission}} {{$commission->created_at}} @endforeach diff --git a/resources/views/admin/aff/index.blade.php b/resources/views/admin/aff/index.blade.php index 265f4136..50f7a7c6 100644 --- a/resources/views/admin/aff/index.blade.php +++ b/resources/views/admin/aff/index.blade.php @@ -24,7 +24,7 @@ @@ -34,9 +34,9 @@ - + - + @@ -46,7 +46,7 @@ - +
申请时间 申请账号 申请提现金额 状态 {{trans('common.status')}} 处理时间 操作 {{trans('common.action')}}
{{$apply->created_at}} @if(empty($apply->user)) - 【账号已删除】 + 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】 @else @can('admin.user.index') @@ -57,7 +57,7 @@ @endcan @endif ¥{{$apply->amount}} ¥{{$apply->amount}} @if($apply->status === -1) 驳 回 @@ -158,7 +158,7 @@ $.each(errors.errors, function(index, value) { str += '
  • ' + value + '
  • '; }); - swal.fire({title: '提示', html: str, icon: 'error', confirmButtonText: '{{trans('home.ticket_confirm')}}'}); + swal.fire({title: '提示', html: str, icon: 'error', confirmButtonText: '{{trans('common.confirm')}}'}); } }, }); diff --git a/resources/views/admin/aff/rebate.blade.php b/resources/views/admin/aff/rebate.blade.php index 4276e91a..ee95fb83 100644 --- a/resources/views/admin/aff/rebate.blade.php +++ b/resources/views/admin/aff/rebate.blade.php @@ -26,7 +26,7 @@ @@ -40,7 +40,7 @@ - + @@ -49,14 +49,14 @@ - + @@ -94,8 +94,8 @@ title: '确定删除文章?', icon: 'question', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ diff --git a/resources/views/admin/config/config.blade.php b/resources/views/admin/config/config.blade.php index c61338a4..a821c88c 100644 --- a/resources/views/admin/config/config.blade.php +++ b/resources/views/admin/config/config.blade.php @@ -40,7 +40,7 @@ - + @@ -74,7 +74,7 @@ - + @@ -108,7 +108,7 @@ - + @@ -143,7 +143,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -218,7 +218,7 @@ - + @@ -451,8 +451,8 @@ icon: 'question', allowEnterKey: false, showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ @@ -557,8 +557,8 @@ icon: 'question', allowEnterKey: false, showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ @@ -653,8 +653,8 @@ icon: 'question', allowEnterKey: false, showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ @@ -757,12 +757,12 @@ // 删除标签 function delLabel(id, name) { swal.fire({ - title: '警告', + title: '{{trans('common.warning')}}', text: '确定删除标签 【' + name + '】 ?', icon: 'warning', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { $.ajax({ method: 'DELETE', diff --git a/resources/views/admin/config/emailFilter.blade.php b/resources/views/admin/config/emailFilter.blade.php index 9bbc67f4..639c5b7a 100644 --- a/resources/views/admin/config/emailFilter.blade.php +++ b/resources/views/admin/config/emailFilter.blade.php @@ -23,7 +23,7 @@ - + @@ -131,7 +131,7 @@ // 删除邮箱后缀 function delSuffix(id, name) { swal.fire({ - title: '警告', + title: '{{trans('common.warning')}}', text: '确定删除邮箱后缀 【' + name + '】 ?', icon: 'warning', showCancelButton: true, diff --git a/resources/views/admin/config/system.blade.php b/resources/views/admin/config/system.blade.php index 61c9fa1d..052837f8 100644 --- a/resources/views/admin/config/system.blade.php +++ b/resources/views/admin/config/system.blade.php @@ -70,7 +70,7 @@
    - +
    发邮件时展示 @@ -84,7 +84,7 @@
    - +
    生成重置密码、在线支付必备 @@ -98,7 +98,7 @@
    - +
    iOS软件设置教程中使用的苹果账号 @@ -112,7 +112,7 @@
    - +
    iOS软件设置教程中使用的苹果密码 @@ -126,7 +126,7 @@
    - +
    错误提示时会提供管理员邮箱作为联系方式 @@ -141,7 +141,7 @@ - + 非空时必须通过安全入口加上安全码才可访问 @@ -191,7 +191,7 @@
    - +
    用于维护界面倒计时 @@ -205,7 +205,7 @@
    - +
    自定义维护内容信息 @@ -219,7 +219,7 @@
    - +
    触发审计规则时访问请求被阻断并重定向至该地址 @@ -326,7 +326,8 @@
    - +
    用户注册时默认账户有效期,为0即当天到期 @@ -341,7 +342,8 @@
    MB - +
    用户注册时默认可用流量 @@ -355,7 +357,8 @@
    - +
    用户可以生成的邀请码数 @@ -369,7 +372,8 @@
    - +
    24小时内可以通过邮件重置密码次数 @@ -397,7 +401,8 @@
    - +
    24小时内可以通过邮件激活账号次数 @@ -411,7 +416,8 @@
    - +
    同IP在24小时内允许注册数量,为0时不限制 @@ -426,7 +432,8 @@
    - +
    用户自行生成邀请的有效期 @@ -442,7 +449,8 @@
    - + 管理员生成邀请码的有效期 @@ -461,7 +469,7 @@
    - +
    (推荐)防止面板域名被DNS投毒后无法正常订阅,需带http://或https:// @@ -475,7 +483,8 @@
    - +
    客户端订阅时取得几个节点,为0时返回全部节点 @@ -519,7 +528,7 @@
    - +
    用于 VNet后端授权,此域名需要解析A记录到面板,例:https://demo.proxypanel.ml @@ -533,7 +542,7 @@
    - +
    @@ -546,7 +555,7 @@
    - +
    @@ -559,7 +568,7 @@
    - +
    后端自动签发/载入TLS证书时用(节点的设置值优先级高于此处) @@ -595,7 +604,7 @@
    - +
    浏览设置指南来设置 @@ -609,7 +618,7 @@
    - +
    @@ -638,7 +647,7 @@
    - +
    本功能需要极验后台申请权限及应用 @@ -652,7 +661,7 @@
    - +
    @@ -665,7 +674,7 @@
    - +
    本功能需要GooglereCAPTCHA后台申请权限及应用 (申请需科学上网,日常验证不用) @@ -679,7 +688,7 @@
    - +
    @@ -692,7 +701,7 @@
    - +
    本功能需要hCaptcha后台申请权限及应用 @@ -706,7 +715,7 @@
    - +
    @@ -736,7 +745,8 @@
    分钟 - +
    间隔多久才可以再次签到 @@ -804,7 +814,8 @@
    MB - +
    根据推广链接、邀请码注册则赠送相应的流量 @@ -819,7 +830,8 @@
    % - +
    根据推广链接注册的账号每笔消费推广人可以分成的比例 @@ -834,7 +846,8 @@
    - +
    满多少元才可以申请提现 @@ -865,7 +878,8 @@
    - +
    账号距离过期还差多少天时发警告邮件 @@ -890,7 +904,8 @@
    % - +
    建议设置在70%~90% @@ -915,7 +930,8 @@
    - +
    提醒几次后不再提醒,为0时不限制,不超过60 @@ -940,7 +956,8 @@
    - +
    提醒N次后自动下线节点,为0时不限制,不超过12 @@ -969,7 +986,7 @@
    - +
    启用ServerChan,请务必填入本值(申请SCKEY @@ -983,7 +1000,7 @@
    - +
    推送消息到iOS设备,需要在iOS设备里装一个名为Bark的应用,取网址后的一长串代码,启用Bark,请务必填入本值 @@ -1007,7 +1024,7 @@
    - +
    启用PushBear,请务必填入本值 @@ -1021,7 +1038,7 @@
    - +
    创建消息通道后,在二维码上点击右键“复制图片地址”并粘贴至此处 @@ -1071,7 +1088,8 @@
    - +
    24小时内订阅链接请求次数限制 @@ -1096,7 +1114,8 @@
    GB - +
    1小时内超过该值,则触发自动封号 @@ -1111,7 +1130,8 @@
    分钟 - +
    触发流量异常导致用户被封禁的时长,到期后自动解封 @@ -1187,7 +1207,8 @@
    - +
    @@ -1197,7 +1218,8 @@
    - +
    @@ -1254,7 +1276,7 @@
    - +
    用于在支付渠道的商品标题显示 @@ -1266,7 +1288,8 @@
    - +
    防止因为网站域名被DNS投毒后导致支付无法正常回调,需带http://或https:// @@ -1288,7 +1311,7 @@
    - +
    即:APPID @@ -1300,7 +1323,7 @@
    - +
    生成秘钥软件生成时,产生的应用秘钥 @@ -1312,7 +1335,7 @@
    - + 注意不是应用公钥!
    @@ -1335,7 +1358,7 @@ - + @@ -1346,7 +1369,7 @@
    - +
    @@ -1357,7 +1380,7 @@
    - +
    @@ -1380,7 +1403,7 @@
    - +
    @@ -1391,7 +1414,7 @@
    - +
    @@ -1402,7 +1425,7 @@
    - +
    @@ -1423,7 +1446,7 @@
    - +
    本界面获取信息 @@ -1435,7 +1458,7 @@
    - +
    @@ -1456,7 +1479,7 @@
    - +
    API设置中获取后台服务器的秘钥 @@ -1478,7 +1501,7 @@
    - +
    @@ -1489,7 +1512,7 @@
    - +
    @@ -1500,7 +1523,7 @@
    - +
    @@ -1511,7 +1534,7 @@
    - +
    @@ -1522,7 +1545,7 @@
    - +
    @@ -1540,7 +1563,7 @@
    - +
    @@ -1551,7 +1574,7 @@
    - +
    @@ -1562,7 +1585,7 @@
    - +
    @@ -1584,7 +1607,7 @@
    - +
    商户中心 -> 开发者 -> App ID @@ -1596,7 +1619,8 @@
    - +
    商户中心 -> 开发者 -> App Secret diff --git a/resources/views/admin/coupon/index.blade.php b/resources/views/admin/coupon/index.blade.php index 75ae4d18..e7237d8c 100644 --- a/resources/views/admin/coupon/index.blade.php +++ b/resources/views/admin/coupon/index.blade.php @@ -41,7 +41,7 @@
    返利金额 生成时间 处理时间 状态 {{trans('common.status')}}
    {{$referralLog->id}} @if(empty($referralLog->invitee)) - 【账号已删除】 + 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】 @else {{$referralLog->invitee->email}} @endif @if(empty($referralLog->inviter)) - 【账号已删除】 + 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】 @else {{$referralLog->inviter->email}} @endif diff --git a/resources/views/admin/article/index.blade.php b/resources/views/admin/article/index.blade.php index 70cff893..ca7db115 100644 --- a/resources/views/admin/article/index.blade.php +++ b/resources/views/admin/article/index.blade.php @@ -22,7 +22,7 @@ 标题 排序 发布日期 操作 {{trans('common.action')}}
    名称 操作 {{trans('common.action')}}
    名称 操作 {{trans('common.action')}}
    名称 操作 {{trans('common.action')}}
    等级 名称 操作 {{trans('common.action')}}
    图标 代码 国家/地区名称 操作 {{trans('common.action')}}
    名称 关联节点数 排序 操作 {{trans('common.action')}}
    # 类型 邮箱后缀 操作 {{trans('common.action')}}
    @@ -55,8 +55,8 @@ - - + + @@ -150,8 +150,8 @@ text: '确定导出所有卡券吗?', icon: 'question', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { window.location.href = '{{route('admin.coupon.export')}}'; @@ -168,8 +168,8 @@ icon: 'question', allowEnterKey: false, showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ diff --git a/resources/views/admin/inviteList.blade.php b/resources/views/admin/inviteList.blade.php index bd6126f4..53fd3d78 100644 --- a/resources/views/admin/inviteList.blade.php +++ b/resources/views/admin/inviteList.blade.php @@ -9,12 +9,12 @@

    - {{trans('home.invite_code_make')}} + {{trans('common.generate_item', ['attribute' => trans('user.invite.attribute')])}}

    - + @can('admin.invite.create') @endcan
    @@ -24,7 +24,7 @@

    - {{trans('home.invite_code_my_codes')}} + {{trans('user.invite.attribute')}}

    @can('admin.invite.export')
    @@ -37,11 +37,11 @@
    - - - - - + + + + + @@ -54,13 +54,13 @@ @endforeach @@ -70,7 +70,7 @@
    使用次数 优惠 有效期 状态 操作 {{trans('common.status')}} {{trans('common.action')}}
    # {{trans('home.invite_code_table_name')}} {{trans('home.invite_code_table_date')}} 生成者 {{trans('home.invite_code_table_status')}} {{trans('home.invite_code_table_user')}} {{trans('user.invite.attribute')}} {{trans('common.available_date')}} {{trans('user.inviter')}} {{trans('common.status')}} {{trans('user.invitee')}}
    {{$invite->dateline}} - {{$invite->inviter_id === null ? '系统生成' : ($invite->inviter->email ?? '【账号已删除】')}} + {{$invite->inviter_id === null ? '系统生成' : ($invite->inviter->email ?? '【'.trans('common.deleted_item', ['attribute' => trans('common.account')]).'】')}} {!!$invite->status_label!!} - {{$invite->status === 1 ? ($invite->invitee->email ?? '【账号已删除】') : ''}} + {{$invite->status === 1 ? ($invite->invitee->email ?? '【'.trans('common.deleted_item', ['attribute' => trans('common.account')]).'】') : ''}}
    @@ -51,7 +51,7 @@ - + diff --git a/resources/views/admin/logs/notification.blade.php b/resources/views/admin/logs/notification.blade.php index 2118d587..1890f054 100644 --- a/resources/views/admin/logs/notification.blade.php +++ b/resources/views/admin/logs/notification.blade.php @@ -25,7 +25,7 @@
    平台订单号 本地订单号 交易金额 状态 {{trans('common.status')}}
    diff --git a/resources/views/admin/logs/onlineIPMonitor.blade.php b/resources/views/admin/logs/onlineIPMonitor.blade.php index eb03196f..a1333fbf 100644 --- a/resources/views/admin/logs/onlineIPMonitor.blade.php +++ b/resources/views/admin/logs/onlineIPMonitor.blade.php @@ -39,7 +39,7 @@
    diff --git a/resources/views/admin/logs/order.blade.php b/resources/views/admin/logs/order.blade.php index fde64d0c..1e605152 100644 --- a/resources/views/admin/logs/order.blade.php +++ b/resources/views/admin/logs/order.blade.php @@ -79,7 +79,7 @@
    @@ -114,11 +114,11 @@ @endif - + - - + + diff --git a/resources/views/admin/logs/traffic.blade.php b/resources/views/admin/logs/traffic.blade.php index 1dc78d33..4eebd335 100644 --- a/resources/views/admin/logs/traffic.blade.php +++ b/resources/views/admin/logs/traffic.blade.php @@ -47,7 +47,7 @@
    {{$order->order_sn}} {{empty($order->goods) ? ($order->goods_id === 0 ? '余额充值' : trans('home.invoice_table_goods_deleted')) : $order->goods->name}} {{empty($order->goods) ? ($order->goods_id === 0 ? trans('user.recharge_credit') : trans('home.invoice_table_goods_deleted')) : $order->goods->name}} {{$order->is_expire ? '已过期' : $order->expired_at}} {{$order->coupon ? $order->coupon->name . ' - ' . $order->coupon->sn : ''}} ¥{{$order->origin_amount}} ¥{{$order->amount}} ¥{{$order->origin_amount}} ¥{{$order->amount}} {{$order->pay_way_label}}
    @@ -69,7 +69,7 @@
    {{$log->id}} @if(empty($log->user)) - 【账号已删除】 + 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】 @else @can('admin.user.index') {{$log->user->email}} diff --git a/resources/views/admin/logs/userBanHistory.blade.php b/resources/views/admin/logs/userBanHistory.blade.php index 64fc4c7d..1f818afa 100644 --- a/resources/views/admin/logs/userBanHistory.blade.php +++ b/resources/views/admin/logs/userBanHistory.blade.php @@ -15,7 +15,7 @@ @@ -43,7 +43,7 @@ {{$log->user->email}} @endcan @else - 【账号已删除】 + 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】 @endif diff --git a/resources/views/admin/logs/userCreditHistory.blade.php b/resources/views/admin/logs/userCreditHistory.blade.php index a5dea66e..bfe1bb2f 100644 --- a/resources/views/admin/logs/userCreditHistory.blade.php +++ b/resources/views/admin/logs/userCreditHistory.blade.php @@ -15,7 +15,7 @@
    {{$log->time}}分钟
    @@ -37,7 +37,7 @@
    {{$log->id}} @if(empty($log->user)) - 【账号已删除】 + 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】 @else {{$log->user->email}} @endif diff --git a/resources/views/admin/logs/userMonitor.blade.php b/resources/views/admin/logs/userMonitor.blade.php index e7925f80..ab3e251d 100644 --- a/resources/views/admin/logs/userMonitor.blade.php +++ b/resources/views/admin/logs/userMonitor.blade.php @@ -7,7 +7,7 @@

    {{$email}}

    提示: 如果无统计数据,请检查定时任务是否正常。 @@ -71,7 +71,7 @@ }, scaleLabel: { display: true, - labelString: '{{trans('home.traffic_log_24hours')}}', + labelString: '{{trans('user.traffic_logs.24hours')}}', }, }], }, @@ -121,7 +121,7 @@ }, scaleLabel: { display: true, - labelString: '{{trans('home.traffic_log_30days')}}', + labelString: '{{trans('user.traffic_logs.30days')}}', }, }], }, diff --git a/resources/views/admin/logs/userOnlineIP.blade.php b/resources/views/admin/logs/userOnlineIP.blade.php index f3ce8b81..0901826e 100644 --- a/resources/views/admin/logs/userOnlineIP.blade.php +++ b/resources/views/admin/logs/userOnlineIP.blade.php @@ -34,7 +34,7 @@
    @@ -43,7 +43,7 @@ - + diff --git a/resources/views/admin/logs/userTraffic.blade.php b/resources/views/admin/logs/userTraffic.blade.php index e54d1ec0..b8e00d73 100644 --- a/resources/views/admin/logs/userTraffic.blade.php +++ b/resources/views/admin/logs/userTraffic.blade.php @@ -15,7 +15,7 @@
    # 用户名 端口 状态 {{trans('common.status')}} 代理 连接IP
    @@ -36,7 +36,7 @@
    {{$log->id}} @if(empty($log->user)) - 【账号已删除】 + 【{{trans('common.deleted_item', ['attribute' => trans('common.account')])}}】 @else {{$log->user->email}} @endif diff --git a/resources/views/admin/marketing/emailList.blade.php b/resources/views/admin/marketing/emailList.blade.php index 2b177a69..b5866962 100644 --- a/resources/views/admin/marketing/emailList.blade.php +++ b/resources/views/admin/marketing/emailList.blade.php @@ -23,7 +23,7 @@ @@ -76,7 +76,7 @@ // 发送邮件 function send() { - swal.fire('抱歉', '开发中!敬请期待', 'info'); + swal.fire(trans('common.sorry'), '开发中!敬请期待', 'info'); } function Search() { diff --git a/resources/views/admin/marketing/pushList.blade.php b/resources/views/admin/marketing/pushList.blade.php index 85719c73..555a50a8 100644 --- a/resources/views/admin/marketing/pushList.blade.php +++ b/resources/views/admin/marketing/pushList.blade.php @@ -27,7 +27,7 @@ - + @@ -220,8 +220,8 @@ text: '确定生成所有节点的授权吗?', icon: 'info', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.post('{{route('admin.node.auth.store')}}', {_token: '{{csrf_token()}}'}, function(ret) { @@ -244,8 +244,8 @@ text: '确定删除该授权吗?', icon: 'info', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ @@ -274,8 +274,8 @@ text: '确定继续操作吗?', icon: 'info', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ diff --git a/resources/views/admin/node/cert/index.blade.php b/resources/views/admin/node/cert/index.blade.php index 0157dd96..5ed03fc3 100644 --- a/resources/views/admin/node/cert/index.blade.php +++ b/resources/views/admin/node/cert/index.blade.php @@ -26,7 +26,7 @@ - + @@ -87,8 +87,8 @@ text: '确定删除该证书吗?', icon: 'info', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ diff --git a/resources/views/admin/node/index.blade.php b/resources/views/admin/node/index.blade.php index 012eb0f6..b58ef249 100644 --- a/resources/views/admin/node/index.blade.php +++ b/resources/views/admin/node/index.blade.php @@ -39,12 +39,12 @@ - + - + @@ -219,8 +219,8 @@ text: '确定重载节点?', icon: 'question', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ @@ -274,12 +274,12 @@ // 删除节点 function delNode(id, name) { swal.fire({ - title: '警告', + title: '{{trans('common.warning')}}', text: '确定删除节点 【' + name + '】 ?', icon: 'warning', showCancelButton: true, - cancelButtonText: '{{trans('home.ticket_close')}}', - confirmButtonText: '{{trans('home.ticket_confirm')}}', + cancelButtonText: '{{trans('common.close')}}', + confirmButtonText: '{{trans('common.confirm')}}', }).then((result) => { if (result.value) { $.ajax({ diff --git a/resources/views/admin/node/info.blade.php b/resources/views/admin/node/info.blade.php index 8ab4f391..b63c8b03 100644 --- a/resources/views/admin/node/info.blade.php +++ b/resources/views/admin/node/info.blade.php @@ -17,7 +17,7 @@ @@ -576,7 +576,7 @@ $.each(errors.errors, function(index, value) { str += '
  • ' + value + '
  • '; }); - swal.fire({title: '提示', html: str, icon: 'error', confirmButtonText: '{{trans('home.ticket_confirm')}}'}); + swal.fire({title: '提示', html: str, icon: 'error', confirmButtonText: '{{trans('common.confirm')}}'}); } }, }); diff --git a/resources/views/admin/node/monitor.blade.php b/resources/views/admin/node/monitor.blade.php index 7f034f6f..d4f91ddf 100644 --- a/resources/views/admin/node/monitor.blade.php +++ b/resources/views/admin/node/monitor.blade.php @@ -7,7 +7,7 @@

    {{$nodeName}} {{$nodeServer}} @@ -70,7 +70,7 @@ }, scaleLabel: { display: true, - labelString: '{{trans('home.traffic_log_24hours')}}', + labelString: '{{trans('user.traffic_logs.24hours')}}', }, }], }, @@ -117,7 +117,7 @@ }, scaleLabel: { display: true, - labelString: '{{trans('home.traffic_log_30days')}}', + labelString: '{{trans('user.traffic_logs.30days')}}', }, }], }, diff --git a/resources/views/admin/permission/index.blade.php b/resources/views/admin/permission/index.blade.php index 00b2120d..33f520b3 100644 --- a/resources/views/admin/permission/index.blade.php +++ b/resources/views/admin/permission/index.blade.php @@ -22,7 +22,7 @@

    - + @@ -73,12 +73,12 @@ @yield('javascript') - @if(Session::get("admin")) + @if(Session::get('admin'))
    IPv4 通信密钥节点用 反向通信密钥 操作 {{trans('common.action')}}
    签发机构 签发日期 到期时间 操作 {{trans('common.action')}}
    IP 域名 存活 状态 {{trans('common.status')}} 在线 产生流量 流量比例 扩展 操作 {{trans('common.action')}}
    # 名称 行为 操作 {{trans('common.action')}}