diff --git a/.env.example b/.env.example index c7016a83..fb2772a4 100644 --- a/.env.example +++ b/.env.example @@ -5,6 +5,8 @@ APP_DEBUG=false APP_URL=http://localhost #list with timezones https://www.php.net/manual/en/timezones.php APP_TIMEZONE=UTC +LOCALE=en +DATATABLE_LOCALE=en-gb DB_CONNECTION=mysql DB_HOST=127.0.0.1 diff --git a/LICENSE b/LICENSE index acea121c..0ee0d65c 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021 Arno VIsker +Copyright (c) 2021 ControlPanel.gg Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/app/Http/Controllers/Admin/ApplicationApiController.php b/app/Http/Controllers/Admin/ApplicationApiController.php index e091605a..52827a60 100644 --- a/app/Http/Controllers/Admin/ApplicationApiController.php +++ b/app/Http/Controllers/Admin/ApplicationApiController.php @@ -52,7 +52,7 @@ class ApplicationApiController extends Controller 'memo' => $request->input('memo') ]); - return redirect()->route('admin.api.index')->with('success', 'api key created!'); + return redirect()->route('admin.api.index')->with('success', __('api key created!')); } /** @@ -94,7 +94,7 @@ class ApplicationApiController extends Controller $applicationApi->update($request->all()); - return redirect()->route('admin.api.index')->with('success', 'api key updated!'); + return redirect()->route('admin.api.index')->with('success', __('api key updated!')); } /** @@ -106,7 +106,7 @@ class ApplicationApiController extends Controller public function destroy(ApplicationApi $applicationApi) { $applicationApi->delete(); - return redirect()->back()->with('success', 'api key has been removed!'); + return redirect()->back()->with('success', __('api key has been removed!')); } /** @@ -121,11 +121,11 @@ class ApplicationApiController extends Controller return datatables($query) ->addColumn('actions', function (ApplicationApi $apiKey) { return ' - +
' . csrf_field() . ' ' . method_field("DELETE") . ' - +
'; }) diff --git a/app/Http/Controllers/Admin/ConfigurationController.php b/app/Http/Controllers/Admin/ConfigurationController.php index d16a765e..f10dc3e8 100644 --- a/app/Http/Controllers/Admin/ConfigurationController.php +++ b/app/Http/Controllers/Admin/ConfigurationController.php @@ -92,7 +92,7 @@ class ConfigurationController extends Controller $configuration->update($request->all()); - return redirect()->route('admin.configurations.index')->with('success', 'configuration has been updated!'); + return redirect()->route('admin.configurations.index')->with('success', __('configuration has been updated!')); } /** @@ -112,7 +112,7 @@ class ConfigurationController extends Controller return datatables($query) ->addColumn('actions', function (Configuration $configuration) { - return ' '; + return ' '; }) ->editColumn('created_at', function (Configuration $configuration) { return $configuration->created_at ? $configuration->created_at->diffForHumans() : ''; diff --git a/app/Http/Controllers/Admin/PaymentController.php b/app/Http/Controllers/Admin/PaymentController.php index 4c52a310..4ce1ac88 100644 --- a/app/Http/Controllers/Admin/PaymentController.php +++ b/app/Http/Controllers/Admin/PaymentController.php @@ -93,7 +93,7 @@ class PaymentController extends Controller 'shipping_preference' => 'NO_SHIPPING' ] - + ]; @@ -164,7 +164,7 @@ class PaymentController extends Controller $user->update(['server_limit' => Configuration::getValueByKey('SERVER_LIMIT_AFTER_IRL_PURCHASE')]); } } - + //update role if ($user->role == 'member') { $user->update(['role' => 'client']); @@ -192,7 +192,7 @@ class PaymentController extends Controller event(new UserUpdateCreditsEvent($user)); //redirect back to home - return redirect()->route('home')->with('success', 'Your credit balance has been increased!'); + return redirect()->route('home')->with('success', __('Your credit balance has been increased!')); } // If call returns body in response, you can get the deserialized version from the result attribute of the response @@ -220,7 +220,7 @@ class PaymentController extends Controller */ public function cancel(Request $request) { - return redirect()->route('store.index')->with('success', 'Payment was Canceled'); + return redirect()->route('store.index')->with('success', __('Payment was Canceled')); } diff --git a/app/Http/Controllers/Admin/PaypalProductController.php b/app/Http/Controllers/Admin/PaypalProductController.php index ee4764e4..2666d985 100644 --- a/app/Http/Controllers/Admin/PaypalProductController.php +++ b/app/Http/Controllers/Admin/PaypalProductController.php @@ -62,7 +62,7 @@ class PaypalProductController extends Controller $disabled = !is_null($request->input('disabled')); PaypalProduct::create(array_merge($request->all(), ['disabled' => $disabled])); - return redirect()->route('admin.store.index')->with('success', 'Store item has been created!'); + return redirect()->route('admin.store.index')->with('success', __('Store item has been created!')); } /** @@ -112,7 +112,7 @@ class PaypalProductController extends Controller $disabled = !is_null($request->input('disabled')); $paypalProduct->update(array_merge($request->all(), ['disabled' => $disabled])); - return redirect()->route('admin.store.index')->with('success', 'Store item has been updated!'); + return redirect()->route('admin.store.index')->with('success', __('Store item has been updated!')); } /** @@ -124,7 +124,7 @@ class PaypalProductController extends Controller { $paypalProduct->update(['disabled' => !$paypalProduct->disabled]); - return redirect()->route('admin.store.index')->with('success', 'Product has been updated!'); + return redirect()->route('admin.store.index')->with('success', __('Product has been updated!')); } /** @@ -136,7 +136,7 @@ class PaypalProductController extends Controller public function destroy(PaypalProduct $paypalProduct) { $paypalProduct->delete(); - return redirect()->back()->with('success', 'Store item has been removed!'); + return redirect()->back()->with('success', __('Store item has been removed!')); } @@ -147,12 +147,12 @@ class PaypalProductController extends Controller return datatables($query) ->addColumn('actions', function (PaypalProduct $paypalProduct) { return ' - +
' . csrf_field() . ' ' . method_field("DELETE") . ' - +
'; }) diff --git a/app/Http/Controllers/Admin/ProductController.php b/app/Http/Controllers/Admin/ProductController.php index a71f81da..bf32069f 100644 --- a/app/Http/Controllers/Admin/ProductController.php +++ b/app/Http/Controllers/Admin/ProductController.php @@ -84,7 +84,7 @@ class ProductController extends Controller $product->eggs()->attach($request->input('eggs')); $product->nodes()->attach($request->input('nodes')); - return redirect()->route('admin.products.index')->with('success', 'Product has been created!'); + return redirect()->route('admin.products.index')->with('success', __('Product has been created!')); } /** @@ -152,7 +152,7 @@ class ProductController extends Controller $product->eggs()->attach($request->input('eggs')); $product->nodes()->attach($request->input('nodes')); - return redirect()->route('admin.products.index')->with('success', 'Product has been updated!'); + return redirect()->route('admin.products.index')->with('success', __('Product has been updated!')); } /** @@ -181,7 +181,7 @@ class ProductController extends Controller } $product->delete(); - return redirect()->back()->with('success', 'Product has been removed!'); + return redirect()->back()->with('success', __('Product has been removed!')); } @@ -196,14 +196,14 @@ class ProductController extends Controller return datatables($query) ->addColumn('actions', function (Product $product) { return ' - - - + + +
' . csrf_field() . ' ' . method_field("DELETE") . ' - +
'; }) diff --git a/app/Http/Controllers/Admin/ServerController.php b/app/Http/Controllers/Admin/ServerController.php index 493993d8..2211be38 100644 --- a/app/Http/Controllers/Admin/ServerController.php +++ b/app/Http/Controllers/Admin/ServerController.php @@ -92,9 +92,9 @@ class ServerController extends Controller { try { $server->delete(); - return redirect()->route('admin.servers.index')->with('success', 'Server removed'); + return redirect()->route('admin.servers.index')->with('success', __('Server removed')); } catch (Exception $e) { - return redirect()->route('admin.servers.index')->with('error', 'An exception has occurred while trying to remove a resource "' . $e->getMessage() . '"'); + return redirect()->route('admin.servers.index')->with('error', __('An exception has occurred while trying to remove a resource "') . $e->getMessage() . '"'); } } @@ -109,7 +109,7 @@ class ServerController extends Controller return redirect()->back()->with('error', $exception->getMessage()); } - return redirect()->back()->with('success', 'Server has been updated!'); + return redirect()->back()->with('success', __('Server has been updated!')); } /** @@ -134,7 +134,7 @@ class ServerController extends Controller ->addColumn('actions', function (Server $server) { $suspendColor = $server->isSuspended() ? "btn-success" : "btn-warning"; $suspendIcon = $server->isSuspended() ? "fa-play-circle" : "fa-pause-circle"; - $suspendText = $server->isSuspended() ? "Unsuspend" : "Suspend"; + $suspendText = $server->isSuspended() ? __("Unsuspend") : __("Suspend"); return '
@@ -145,7 +145,7 @@ class ServerController extends Controller ' . csrf_field() . ' ' . method_field("DELETE") . ' - +
'; diff --git a/app/Http/Controllers/Admin/SettingsController.php b/app/Http/Controllers/Admin/SettingsController.php index 375c5c0c..d4d82fbe 100644 --- a/app/Http/Controllers/Admin/SettingsController.php +++ b/app/Http/Controllers/Admin/SettingsController.php @@ -36,7 +36,7 @@ class SettingsController extends Controller $request->file('favicon')->storeAs('public', 'favicon.ico'); } - return redirect()->route('admin.settings.index')->with('success', 'Icons updated!'); + return redirect()->route('admin.settings.index')->with('success', __('Icons updated!')); } } diff --git a/app/Http/Controllers/Admin/UsefulLinkController.php b/app/Http/Controllers/Admin/UsefulLinkController.php index f2e94694..f15e3f11 100644 --- a/app/Http/Controllers/Admin/UsefulLinkController.php +++ b/app/Http/Controllers/Admin/UsefulLinkController.php @@ -50,7 +50,7 @@ class UsefulLinkController extends Controller ]); UsefulLink::create($request->all()); - return redirect()->route('admin.usefullinks.index')->with('success', 'link has been created!'); + return redirect()->route('admin.usefullinks.index')->with('success', __('link has been created!')); } /** @@ -94,7 +94,7 @@ class UsefulLinkController extends Controller ]); $usefullink->update($request->all()); - return redirect()->route('admin.usefullinks.index')->with('success', 'link has been updated!'); + return redirect()->route('admin.usefullinks.index')->with('success', __('link has been updated!')); } /** @@ -106,7 +106,7 @@ class UsefulLinkController extends Controller public function destroy(UsefulLink $usefullink) { $usefullink->delete(); - return redirect()->back()->with('success', 'product has been removed!'); + return redirect()->back()->with('success', __('product has been removed!')); } public function dataTable() @@ -116,12 +116,12 @@ class UsefulLinkController extends Controller return datatables($query) ->addColumn('actions', function (UsefulLink $link) { return ' - +
' . csrf_field() . ' ' . method_field("DELETE") . ' - +
'; }) diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 4c9f9ba0..eb36fa38 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -115,7 +115,7 @@ class UserController extends Controller if (isset($this->pterodactyl->getUser($request->input('pterodactyl_id'))['errors'])) { throw ValidationException::withMessages([ - 'pterodactyl_id' => ["User does not exists on pterodactyl's panel"] + 'pterodactyl_id' => [__("User does not exists on pterodactyl's panel")] ]); } @@ -145,7 +145,7 @@ class UserController extends Controller public function destroy(User $user) { $user->delete(); - return redirect()->back()->with('success', 'user has been removed!'); + return redirect()->back()->with('success', __('user has been removed!')); } /** @@ -218,7 +218,7 @@ class UserController extends Controller $all = $data["all"] ?? false; $users = $all ? User::all() : User::whereIn("id", $data["users"])->get(); Notification::send($users, new DynamicNotification($data["via"], $database, $mail)); - return redirect()->route('admin.users.notifications')->with('success', 'Notification sent!'); + return redirect()->route('admin.users.notifications')->with('success', __('Notification sent!')); } /** @@ -232,7 +232,7 @@ class UserController extends Controller return redirect()->back()->with('error', $exception->getMessage()); } - return redirect()->back()->with('success', 'User has been updated!'); + return redirect()->back()->with('success', __('User has been updated!')); } /** @@ -265,11 +265,11 @@ class UserController extends Controller ->addColumn('actions', function (User $user) { $suspendColor = $user->isSuspended() ? "btn-success" : "btn-warning"; $suspendIcon = $user->isSuspended() ? "fa-play-circle" : "fa-pause-circle"; - $suspendText = $user->isSuspended() ? "Unsuspend" : "Suspend"; + $suspendText = $user->isSuspended() ? __("Unsuspend") : __("Suspend"); return ' - - - + + +
' . csrf_field() . ' @@ -277,7 +277,7 @@ class UserController extends Controller ' . csrf_field() . ' ' . method_field("DELETE") . ' - +
'; }) diff --git a/app/Http/Controllers/Admin/VoucherController.php b/app/Http/Controllers/Admin/VoucherController.php index 31947dbd..51cb5000 100644 --- a/app/Http/Controllers/Admin/VoucherController.php +++ b/app/Http/Controllers/Admin/VoucherController.php @@ -55,7 +55,7 @@ class VoucherController extends Controller Voucher::create($request->except('_token')); - return redirect()->route('admin.vouchers.index')->with('success', 'voucher has been created!'); + return redirect()->route('admin.vouchers.index')->with('success', __('voucher has been created!')); } /** @@ -101,7 +101,7 @@ class VoucherController extends Controller $voucher->update($request->except('_token')); - return redirect()->route('admin.vouchers.index')->with('success', 'voucher has been updated!'); + return redirect()->route('admin.vouchers.index')->with('success', __('voucher has been updated!')); } /** @@ -113,7 +113,7 @@ class VoucherController extends Controller public function destroy(Voucher $voucher) { $voucher->delete(); - return redirect()->back()->with('success', 'voucher has been removed!'); + return redirect()->back()->with('success', __('voucher has been removed!')); } public function users(Voucher $voucher) @@ -140,19 +140,19 @@ class VoucherController extends Controller #extra validations if ($voucher->getStatus() == 'USES_LIMIT_REACHED') throw ValidationException::withMessages([ - 'code' => 'This voucher has reached the maximum amount of uses' + 'code' => __('This voucher has reached the maximum amount of uses') ]); if ($voucher->getStatus() == 'EXPIRED') throw ValidationException::withMessages([ - 'code' => 'This voucher has expired' + 'code' => __('This voucher has expired') ]); if (!$request->user()->vouchers()->where('id', '=', $voucher->id)->get()->isEmpty()) throw ValidationException::withMessages([ - 'code' => 'You already redeemed this voucher code' + 'code' => __('You already redeemed this voucher code') ]); if ($request->user()->credits + $voucher->credits >= 99999999) throw ValidationException::withMessages([ - 'code' => "You can't redeem this voucher because you would exceed the " . CREDITS_DISPLAY_NAME . " limit" + 'code' => "You can't redeem this voucher because you would exceed the limit of " . CREDITS_DISPLAY_NAME ]); #redeem voucher @@ -161,7 +161,7 @@ class VoucherController extends Controller event(new UserUpdateCreditsEvent($request->user())); return response()->json([ - 'success' => "{$voucher->credits} " . CREDITS_DISPLAY_NAME . " have been added to your balance!" + 'success' => "{$voucher->credits} " . CREDITS_DISPLAY_NAME ." ". __("have been added to your balance!") ]); } @@ -189,19 +189,19 @@ class VoucherController extends Controller return datatables($query) ->addColumn('actions', function (Voucher $voucher) { return ' - - + +
' . csrf_field() . ' ' . method_field("DELETE") . ' - +
'; }) ->addColumn('status', function (Voucher $voucher) { $color = 'success'; - if ($voucher->getStatus() != 'VALID') $color = 'danger'; + if ($voucher->getStatus() != __('VALID')) $color = 'danger'; return '' . $voucher->getStatus() . ''; }) ->editColumn('uses', function (Voucher $voucher) { diff --git a/app/Http/Controllers/HomeController.php b/app/Http/Controllers/HomeController.php index f287aa5e..965bcdea 100644 --- a/app/Http/Controllers/HomeController.php +++ b/app/Http/Controllers/HomeController.php @@ -15,7 +15,6 @@ class HomeController extends Controller const TIME_LEFT_BG_SUCCESS = "bg-success"; const TIME_LEFT_BG_WARNING = "bg-warning"; const TIME_LEFT_BG_DANGER = "bg-danger"; - const TIME_LEFT_OUT_OF_CREDITS_TEXT = "You ran out of Credits"; public function __construct() { @@ -51,8 +50,8 @@ class HomeController extends Controller */ public function getTimeLeftBoxUnit(float $daysLeft, float $hoursLeft) { - if ($daysLeft > 1) return 'days'; - return $hoursLeft < 1 ? null : "hours"; + if ($daysLeft > 1) return __('days'); + return $hoursLeft < 1 ? null : __("hours"); } /** @@ -66,7 +65,7 @@ class HomeController extends Controller public function getTimeLeftBoxText(float $daysLeft, float $hoursLeft) { if ($daysLeft > 1) return strval(number_format($daysLeft, 0)); - return ($hoursLeft < 1 ? $this::TIME_LEFT_OUT_OF_CREDITS_TEXT : strval($hoursLeft)); + return ($hoursLeft < 1 ? __("You ran out of Credits") : strval($hoursLeft)); } /** Show the application dashboard. */ @@ -85,7 +84,7 @@ class HomeController extends Controller $bg = $this->getTimeLeftBoxBackground($daysLeft); $boxText = $this->getTimeLeftBoxText($daysLeft, $hoursLeft); - $unit = $daysLeft < 1 ? ($hoursLeft < 1 ? null : "hours") : "days"; + $unit = $daysLeft < 1 ? ($hoursLeft < 1 ? null : __("hours")) : __("days"); } diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php index 00ec4b1c..3ddc1655 100644 --- a/app/Http/Controllers/ProfileController.php +++ b/app/Http/Controllers/ProfileController.php @@ -86,6 +86,6 @@ class ProfileController extends Controller 'email' => $request->input('email'), ]); - return redirect()->route('profile.index')->with('success' , 'Profile updated'); + return redirect()->route('profile.index')->with('success' , __('Profile updated')); } } diff --git a/app/Http/Controllers/ServerController.php b/app/Http/Controllers/ServerController.php index 484c2e4a..5944480b 100644 --- a/app/Http/Controllers/ServerController.php +++ b/app/Http/Controllers/ServerController.php @@ -71,7 +71,7 @@ class ServerController extends Controller { //limit validation if (Auth::user()->servers()->count() >= Auth::user()->server_limit) { - return redirect()->route('servers.index')->with('error', 'Server limit reached!'); + return redirect()->route('servers.index')->with('error', __('Server limit reached!')); } // minimum credits @@ -89,12 +89,12 @@ class ServerController extends Controller //Required Verification for creating an server if (Configuration::getValueByKey('FORCE_EMAIL_VERIFICATION', 'false') === 'true' && !Auth::user()->hasVerifiedEmail()) { - return redirect()->route('profile.index')->with('error', "You are required to verify your email address before you can create a server."); + return redirect()->route('profile.index')->with('error', __("You are required to verify your email address before you can create a server.")); } //Required Verification for creating an server if (Configuration::getValueByKey('FORCE_DISCORD_VERIFICATION', 'false') === 'true' && !Auth::user()->discordUser) { - return redirect()->route('profile.index')->with('error', "You are required to link your discord account before you can create a server."); + return redirect()->route('profile.index')->with('error', __("You are required to link your discord account before you can create a server.")); } return null; @@ -146,7 +146,7 @@ class ServerController extends Controller } } - return redirect()->route('servers.index')->with('success', 'Server created'); + return redirect()->route('servers.index')->with('success', __('Server created')); } /** @@ -159,7 +159,7 @@ class ServerController extends Controller $server->delete(); Auth::user()->notify(new ServerCreationError($server)); - return redirect()->route('servers.index')->with('error', 'No allocations satisfying the requirements for automatic deployment on this node were found.'); + return redirect()->route('servers.index')->with('error', __('No allocations satisfying the requirements for automatic deployment on this node were found.')); } /** @@ -180,9 +180,9 @@ class ServerController extends Controller { try { $server->delete(); - return redirect()->route('servers.index')->with('success', 'Server removed'); + return redirect()->route('servers.index')->with('success', __('Server removed')); } catch (Exception $e) { - return redirect()->route('servers.index')->with('error', 'An exception has occurred while trying to remove a resource "' . $e->getMessage() . '"'); + return redirect()->route('servers.index')->with('error', __('An exception has occurred while trying to remove a resource "') . $e->getMessage() . '"'); } } } diff --git a/app/Http/Controllers/StoreController.php b/app/Http/Controllers/StoreController.php index 1b23d305..52181856 100644 --- a/app/Http/Controllers/StoreController.php +++ b/app/Http/Controllers/StoreController.php @@ -18,12 +18,12 @@ class StoreController extends Controller //Required Verification for creating an server if (Configuration::getValueByKey('FORCE_EMAIL_VERIFICATION', false) === 'true' && !Auth::user()->hasVerifiedEmail()) { - return redirect()->route('profile.index')->with('error', "You are required to verify your email address before you can purchase credits."); + return redirect()->route('profile.index')->with('error', __("You are required to verify your email address before you can purchase credits.")); } //Required Verification for creating an server if (Configuration::getValueByKey('FORCE_DISCORD_VERIFICATION', false) === 'true' && !Auth::user()->discordUser) { - return redirect()->route('profile.index')->with('error', "You are required to link your discord account before you can purchase ".CREDITS_DISPLAY_NAME."."); + return redirect()->route('profile.index')->with('error', __("You are required to link your discord account before you can purchase Credits")); } return view('store.index')->with([ diff --git a/app/Models/Voucher.php b/app/Models/Voucher.php index 81fe635a..17548c4f 100644 --- a/app/Models/Voucher.php +++ b/app/Models/Voucher.php @@ -86,10 +86,10 @@ class Voucher extends Model { if ($this->users()->count() >= $this->uses) return 'USES_LIMIT_REACHED'; if (!is_null($this->expires_at)) { - if ($this->expires_at->isPast()) return 'EXPIRED'; + if ($this->expires_at->isPast()) return __('EXPIRED'); } - return 'VALID'; + return __('VALID'); } /** diff --git a/app/Notifications/ConfirmPaymentNotification.php b/app/Notifications/ConfirmPaymentNotification.php index efd133ab..6e7d5bcf 100644 --- a/app/Notifications/ConfirmPaymentNotification.php +++ b/app/Notifications/ConfirmPaymentNotification.php @@ -44,7 +44,7 @@ class ConfirmPaymentNotification extends Notification implements ShouldQueue public function toMail($notifiable) { return (new MailMessage) - ->subject('Payment Confirmation') + ->subject(__('Payment Confirmation')) ->markdown('mail.payment.confirmed' , ['payment' => $this->payment]); } @@ -57,8 +57,8 @@ class ConfirmPaymentNotification extends Notification implements ShouldQueue public function toArray($notifiable) { return [ - 'title' => "Payment Confirmed!", - 'content' => "Payment Confirmed!", + 'title' => __("Payment Confirmed!"), + 'content' => __("Payment Confirmed!"), ]; } } diff --git a/app/Notifications/ServerCreationError.php b/app/Notifications/ServerCreationError.php index 9555f86a..8c24c8c0 100644 --- a/app/Notifications/ServerCreationError.php +++ b/app/Notifications/ServerCreationError.php @@ -46,7 +46,7 @@ class ServerCreationError extends Notification public function toArray($notifiable) { return [ - 'title' => "Server Creation Error", + 'title' => __("Server Creation Error"), 'content' => "

Hello {$this->server->User->name}, An unexpected error has occurred...

There was a problem creating your server on our pterodactyl panel. There are likely no allocations or rooms left on the selected node. Please contact one of our support members through our discord server to get this resolved asap!

diff --git a/app/Notifications/ServersSuspendedNotification.php b/app/Notifications/ServersSuspendedNotification.php index 7a399cf2..c73f8c0d 100644 --- a/app/Notifications/ServersSuspendedNotification.php +++ b/app/Notifications/ServersSuspendedNotification.php @@ -42,11 +42,11 @@ class ServersSuspendedNotification extends Notification implements ShouldQueue public function toMail($notifiable) { return (new MailMessage) - ->subject('Your servers have been suspended!') - ->greeting('Your servers have been suspended!') - ->line("To automatically re-enable your server/s, you need to purchase more credits.") - ->action('Purchase credits', route('store.index')) - ->line('If you have any questions please let us know.'); + ->subject(__('Your servers have been suspended!')) + ->greeting(__('Your servers have been suspended!')) + ->line(__("To automatically re-enable your server/s, you need to purchase more credits.")) + ->action(__('Purchase credits'), route('store.index')) + ->line(__('If you have any questions please let us know.')); } /** @@ -58,12 +58,12 @@ class ServersSuspendedNotification extends Notification implements ShouldQueue public function toArray($notifiable) { return [ - 'title' => "Servers suspended!", + 'title' => __('Your servers have been suspended!'), 'content' => " -
Your servers have been suspended!
-

To automatically re-enable your server/s, you need to purchase more credits.

-

If you have any questions please let us know.

-

Regards,
" . config('app.name', 'Laravel') . "

+
". __('Your servers have been suspended!')."
+

". __("To automatically re-enable your server/s, you need to purchase more credits.")."

+

". __('If you have any questions please let us know.')."

+

". __('Regards').",
" . config('app.name', 'Laravel') . "

", ]; } diff --git a/app/Notifications/WelcomeMessage.php b/app/Notifications/WelcomeMessage.php index 5e21542e..3c730486 100644 --- a/app/Notifications/WelcomeMessage.php +++ b/app/Notifications/WelcomeMessage.php @@ -66,7 +66,7 @@ class WelcomeMessage extends Notification implements ShouldQueue public function toArray($notifiable) { return [ - 'title' => "Getting started!", + 'title' => __("Getting started!"), 'content' => "

Hello {$this->user->name}, Welcome to our dashboard!

Verification
diff --git a/config/app.php b/config/app.php index 334ff5b2..13384bb3 100644 --- a/config/app.php +++ b/config/app.php @@ -81,7 +81,20 @@ return [ | */ - 'locale' => 'en', + 'locale' => env('LOCALE', 'en'), + + /* + |-------------------------------------------------------------------------- + | Datatable Language Setting + |-------------------------------------------------------------------------- + | + | This is the Language-Code used on the Datatables. + | You can grab the Language-Codes from this Website + | https://datatables.net/plug-ins/i18n/ + | + */ + + 'datatable_locale' => env('DATATABLE_LOCALE', 'en-gb'), /* |-------------------------------------------------------------------------- diff --git a/resources/lang/de.json b/resources/lang/de.json new file mode 100644 index 00000000..174732c8 --- /dev/null +++ b/resources/lang/de.json @@ -0,0 +1,361 @@ +{ + "Activity Logs": "Aktivitäts logs", + "No recent activity from cronjobs": "Keine neuen aktivitäten von Cronjobs", + "Check the docs for it here": "Zur Dokumentation", + "Are cronjobs running?": "Sind die Cronjobs gestartet?", + "Causer": "Verursacher", + "Description": "Beschreibung", + "Created at": "Erstellt am", + + "Edit Configuration": "Einstellungen bearbeiten", + "Text Field": "Textfeld", + "Cancel": "Abbrechen", + "Close": "Schließen", + "Save": "Speichern", + "true": "wahr", + "false": "falsch", + + "Configurations": "Einstellungen", + "Dashboard": "Dashboard", + "Key": "Schlüssel", + "Value": "Wert", + "Type": "Typ", + + "Admin Overview": "Admin Übersicht", + "Support server": "Discord Server", + "Documentation": "Dokumentation", + "Github": "Github", + "Support ControlPanel": "Unterstütze Controlpanel.gg", + "Servers": "Server", + "Users": "Benutzer", + "Total": "Gesamt", + "Payments": "Zahlungen", + "Pterodactyl": "Pterodactyl", + "Sync": "Sync", + "Resources": "Ressourcen", + "Count": "Anzahl", + "Locations": "Standorte", + "Node": "Node", + "Nodes": "Nodes", + "Nests": "Nests", + "Eggs": "Eggs", + "Last updated :date": "Zuletzt aktualisiert :date", + + "ID": "ID", + "User": "Benutzer", + "Amount": "Anzahl", + "Product Price": "Produktpreis", + "Tax": "Steuer", + "Total Price": "Gesamtpreis", + "Payment_ID": "Zahlungs-ID", + "Payer_ID": "Käufer-ID", + + "Product": "Produkt", + "Products": "Produkte", + "Create": "Erstellen", + "Product Details": "Produktdetails", + "Server Details": "Serverdetails", + + "Product Linking": "Produktbeziehungen", + "Name": "Name", + "Price in": "Preis in ", + "Memory": "Arbeitsspeicher", + "Cpu": "Prozessorleistung", + "Swap": "Swap", + "Disk": "Festplatte", + "Minimum": "Mindest", + "IO": "IO", + "Databases": "Datenbanken", + "Database": "Datenbank", + "Backups": "Backups", + "Allocations": "Port Zuweisungen", + "Disabled": "Deaktiviert", + "Submit": "Abschicken", + "This product will only be available for these nodes": "Dieses Produkt wurd nur für die ausgewählten Nodes verfügbar sein", + "This product will only be available for these eggs": "Dieses Produkt wurd nur für die ausgewählten Eggs verfügbar sein", + "Will hide this option from being selected": "Wird dieses Produkt nicht zum Kauf zur Verfügung stellen", + "Link your products to nodes and eggs to create dynamic pricing for each option": "Verbinde deine Produkte mit Nodes und Eggs um ein dynamisches Preismodell zu erstellen", + "Setting to -1 will use the value from configuration.": "Benutzt den Standard, wenn der Wert auf -1 gesetzt wird", + "This is what the users sees": "Das wird der Benutzer sehen", + "Edit": "Bearbeiten", + + "Price": "Preis", + "Are you sure you wish to delete?": "Sicher, dass du dies löschen möchtest?", + "Create new": "Neu erstellen", + "Show": "Zeige", + "Updated at": "Aktualisiert", + "Suspended at": "Suspendiert", + + "Settings": "Einstellungen", + "Dashboard icons": "Dashboard Icons", + "Select panel icon": "Icon auswählen", + "Select panel favicon": "Favicon auswählen", + + "Token": "Token", + "Last used": "Zuletzt benutzt", + + "Store": "Laden", + "Currency code": "Währungscode", + "Checkout the paypal docs to select the appropriate code": "Siehe Paypal für die entsprechenden Codes", + "Quantity": "Menge", + "Amount given to the user after purchasing": "Anzahl, die der User nach dem Kauf bekommt", + "Display": "Anzeigename", + "This is what the user sees at store and checkout": "Dies ist die 'Anzahl' welche der User beim Kaufen sieht", + "This is what the user sees at checkout": "Dies ist die Beschreibung auf der Rechnung und was der Kunde beim kauf sieht", + "Adds 1000 credits to your account": "Fügt deinem Account 1000 Credits hinzu", + + "Active": "Aktiv", + "Paypal is not configured.": "Paypal ist nicht konfiguriert!", + "To configure PayPal, head to the .env and add your PayPal’s client id and secret.": "Um Paypal zu konfigurieren, füge deine Paypal client ID und Secretkey in deine .env-Datei hinzu", + + "Useful Links": "Nützliche Links", + "Icon class name": "Icon Klassen-Name", + "You can find available free icons": "Hier gibt es kostenlose Icons", + "Title": "Titel", + "Link": "Link", + + "Username": "Username", + "Email": "E-Mail", + "Pterodactly ID": "Pterodactyl ID", + "Server Limit": "Serverlimit", + "Role": "Rolle", + "Administrator": "Administrator", + "Client": "Client", + "Member": "Member", + "New Password": "Neues Passwort", + "Confirm Password": "Passwort bestätigen", + "This ID refers to the user account created on pterodactyls panel.": "Die ist die Pterodactyl-ID des Users", + "Only edit this if you know what youre doing :)": "Bearbeite dies nur, wenn du weißt, was du tust :)", + + "Verified": "Verifiziert", + "Last seen": "Zuletzt online", + "Notify": "Benachrichtigen", + + "All": "Alle", + "Send via": "Senden via", + "Content": "Inhalt", + "Notifications": "Benachrichtigungen", + + "Usage": "Nutzung", + + "Config": "Konfiguration", + + "Vouchers": "Gutscheine", + "Voucher details": "Gutschein details", + "Memo": "Name", + "Code": "Code", + "Uses": "Benutzungen", + "Expires at": "Läuft ab am", + "Max": "Max", + "Random": "Zufällig", + + "Status": "Status", + "Used / Uses": "Benutzungen", + "Expires": "Ablauf", + + "Please confirm your password before continuing.": "Bitte bestätige dein Passwort bevor du fortfährst", + "Password": "Passwort", + "Forgot Your Password?": "Passwort vergessen?", + "Sign in to start your session": "Melde dich an um das Dashboard zu benutzen", + "Remember Me": "Login Speichern", + "Sign In": "Anmelden", + "Register a new membership": "Neuen Account registrieren", + "You forgot your password? Here you can easily retrieve a new password.": "Passwort vergessen? Hier kannst du ganz leicht ein neues anfordern", + "Request new password": "Neues Passwort anfordern", + "Login": "Anmelden", + "You are only one step a way from your new password, recover your password now.":"Du bist nurnoch einen Schritt von deinem Passwort entfernt.", + "Retype password": "Passwort bestätigen", + "Change password": "Passwort ändern", + "I already have a membership": "Ich habe bereits einen Account", + "Register": "Registrieren", + "Verify Your Email Address": "Bestätige deine E-Mail Adresse", + "A fresh verification link has been sent to your email address.": "Dir wurde ein neuer Verifizierungslink zugeschickt", + "Before proceeding, please check your email for a verification link.": "Bitte überprüfe dein E-Mail Postfach nach einem Verifizierungslink", + "If you did not receive the email": "Solltest du keine E-Mail erhalten haben", + "click here to request another": "Klicke hier um eine neue zu erhalten", + + "Home": "Startseite", + "See all Notifications": "Alle Nachrichten anzeigen", + "Profile": "Profil", + "Log back in": "Zurück anmelden", + "Logout": "Abmelden", + "Administration": "Administration", + "Overview": "Übersicht", + "Application API": "API", + "Management": "Management", + "Other": "Anderes", + "Logs": "Logs", + "Redeem code": "Code einlösen", + + "You have not yet verified your email address": "Deine E-Mail Adresse ist nicht bestätigt", + "Click here to resend verification email": "Klicke hier, um eine neue Bestätigungsmail zu senden", + "Please contact support If you didnt receive your verification email.": "Wende dich an den Kundensupport wenn du keine E-Mail erhalten hast", + + "Thank you for your purchase!": "Vielen Dank für deinen Einkauf!", + "Your payment has been confirmed; Your credit balance has been updated.": "Deine Zahlung wurde bestätigt und deine Credits angepasst", + + "Payment ID": "Zahlungs-ID", + "Balance": "Stand", + "User ID": "User-ID", + "Thanks": "Vielen Dank", + + "Redeem voucher code": "Gutscheincode einlösen", + "Redeem": "Einlösen", + + "All notifications": "Alle Nachrichten", + + "Required Email verification!": "E-Mail verifizierung nötig!", + "Required Discord verification!": "Discord verifizierung nötig!", + "You have not yet verified your discord account": "Du hast deinen Discord Account noch nicht bestätigt", + "Login with discord": "Mit discord anmelden", + "Please contact support If you face any issues.": "Melde dich beim Support, solltest du Probleme haben", + "Due to system settings you are required to verify your discord account!": "Um das System zu benutzten, musst du deinen Discord Account bestätigen", + "It looks like this hasnt been set-up correctly! Please contact support.": "Es scheint so, als wäre dies nicht richtig Konfiguriert. Bitte melde dich beim Support", + + "Change Password": "Passwort ändern", + "Current Password": "Momentanes Passwort", + "Save Changes": "Änderungen speichern", + "Re-Sync Discord": "Resync Discord", + "You are verified!": "Du bist verifiziert!", + "By verifying your discord account, you receive extra Credits and increased Server amounts": "Wenn du deinen Discordaccount verifizierst, bekommst du extra Credits und ein erhöhtes Server Limit", + "Server configuration": "Server Konfiguration", + "Error!": "Fehler!", + "Make sure to link your products to nodes and eggs.": "Stelle sicher, dass deine Produkte mit Nodes und Eggs verknüpft sind", + "There has to be at least 1 valid product for server creation": "Es muss mindestens 1 aktives Produkt erstellt sein, bevor ein Server erstellt wird", + "No products available!": "Keine Produkte verfügbar!", + "No nodes have been linked!": "Es wurde keine Nodes verknüpft", + "No nests available!": "Keine Nests verfügbar", + "No eggs have been linked!": "Es wurde keine Eggs verknüpft", + "Software / Games": "Software / Spiele", + "Please select software ...": "Bitte Software auswählen", + "Specification": "Spezifikationen", + "No selection": "Keine Auswahl", + "per month": "pro Monat", + "Not enough credits!": "Nicht genug Credits!", + "Please select a configuration ...": "Konfiguration Auswählen!", + "No resources found matching current configuration": "Keine Ressource passt zur momentanen Konfiguration", + "No nodes found matching current configuration": "Kein Node passt zur momentanen Konfiguration", + "Please select a node ...": "Bitte Node auswählen", + "Create server": "Server erstellen", + "Use your servers on our": "Verwalte deine Server mit unserem", + "pterodactyl panel": "Server panel", + "Server limit reached!": "Server Limit erreicht!", + "Create Server": "Server erstellen", + "Manage": "Verwalten", + "Delete server": "Server löschen", + "Price per Hour": "Preis pro Stunde", + "Price per Month": "Preis pro Monat", + + "Date": "Datum", + "To": "Zu", + "From": "Von", + "Pending": "Wartend", + "Subtotal": "Zwischensumme", + "Submit Payment": "Zahlung bestätigen", + "Payment Methods": "Zahlungsmethoden", + "By purchasing this product you agree and accept our terms of service": "Mit dem kauf akzeptierst du unsere TOS", + "There are no store products!": "Es gibt keine Produkte", + "The store is not correctly configured!": "Der Laden wurde nicht richtig konfiguriert", + "Out of Credits in": "Keine :credits mehr in", + + "days": "Tage", + "hours": "Stunden", + "You ran out of Credits": "Keine Credits übrig!", + + "Profile updated": "Profile updated", + + "You are required to verify your email address before you can create a server.": "Du musst deine E-Mail verifizieren bevor du einen Server erstellen kannst", + "You are required to link your discord account before you can create a server.": "Du musst dein Discord verifizieren bevor du einen Server erstellen kannst", + "No allocations satisfying the requirements for automatic deployment on this node were found.": "Keine automatischen Portzuweisungen für dieses Node vorhanden", + "Server removed": "Server gelöscht", + "Server created": "Server erstellt!", + "An exception has occurred while trying to remove a resource \"": "Folgender Fehler ist aufgetreten: ", + "You are required to verify your email address before you can purchase credits.": "Vor dem Kauf musst du deine E-Mail verifizieren", + "You are required to link your discord account before you can purchase ": "Vor dem Kauf musst du dein Discord verlinken!", + + "Warning!": "Warnung!", + + "api key created!": "API Key erstellt", + "api key updated!": "API Key updated", + "api key has been removed!": "API Key gelöscht", + "configuration has been updated!": "Konfig updated", + "Pterodactyl synced": "Pterodactyl synced", + "Your credit balance has been increased!": "Dein Kontostand wurde updated", + "Payment was Canceled": "Zahlung abgebrochen", + + "Store item has been created!": "Item wurde erstellt!", + "Store item has been updated!": "Item updated", + "Product has been updated!": "Product updated", + "Store item has been removed!":"Item gelöscht", + "Product has been created!": "Produkt erstellt", + "Product has been removed!": "Produkt gelöscht", + "Server has been updated!": "Server updated", + "Icons updated!": "Icons Updated", + "link has been created!": "Link erstellt!", + "link has been updated!": "Link updated!", + "user has been removed!": "User gelöscht", + "Notification sent!": "Nachricht gesendet", + "User has been updated!": "User updated!", + "User does not exists on pterodactyl's panel": "User existiert nicht in Pterodactyl", + "voucher has been created!": "Gutschein erstellt", + "voucher has been updated!": "Gutschein Updated", + "voucher has been removed!": "Gutschein gelöscht", + "This voucher has reached the maximum amount of uses": "Maximale Anzahl an Einlösungen erreicht", + "This voucher has expired": "Gutschein abgelaufen", + "You already redeemed this voucher code": "Du hast diesen Gutschein bereits eingelöst", + "You can't redeem this voucher because you would exceed the limit of ": "Du kannst diesen Gutschein nicht einlösen sonst hast du zu viele ", + "have been added to your balance!": "wurden deinem Konto hinzugefügt", + "Invoice": "Rechnung", + "Serial No.": "Rechnungsnr.", + "Invoice date": "Rechnungsdatum", + "Seller": "Verkäufer", + "Buyer": "Käufer", + "Address": "Adresse", + "VAT code": "Steuerid", + "Phone": "Telefon", + "Units": "Einheiten", + "Qty": "Menge", + "Discount": "Rabatt", + "Sub total": "Zwischensumme", + "Total discount": "Gesamtrabatt", + "Taxable amount": "Steuerbetrag", + "Total taxes": "Steuerngesamt", + "Tax rate": "Steuerrate", + "Total amount": "Gesamtbetrag", + "Please pay until": "Zahlbar bis", + "Amount in words": "Betrag in Worten", + "Notes": "Notizen", + "Shipping": "Lieferbedingung", + "Paid": "Bezahlt", + "Due:": "Fällig", + "Invoice Settings":"Rechnungsoptionen", + "Download all Invoices":"Alle Rechnungen runterladen", + "Enter your companys name":"Firmenname", + "Enter your companys adress":"Firmenadresse", + "Enter your companys phone number":"Telefonnummer", + "Enter your companys VAT id":"SteuerID Nummer", + "Enter your companys email adress":"Firmen E-Mail", + "Enter your companys website":"Firmenwebsite", + "Enter your custom invoice prefix":"Rechnungsprefix", + "Select Invoice Logo":"Firmenlogo auswählen", + + "Payment Confirmation": "Zahlungsbestätigung", + "Payment Confirmed!": "Zahlung bestätigt!", + "Server Creation Error": "Fehler beim erstellen des Servers", + "Your servers have been suspended!": "Deine Server wurden pausiert", + "To automatically re-enable your server/s, you need to purchase more credits.": "Um deine Server zu reaktivieren, musst du mehr Credits kaufen!", + "Purchase credits": "Credits kaufen", + "If you have any questions please let us know.": "Solltest du weiter fragen haben, melde dich gerne beim Support!", + "Regards": "mit freundlichen Grüßen", + + "Getting started!": "Den Anfang machen!", + "EXPIRED": "ABGELAUFEN", + "VALID": "GÜLTIG", + "Unsuspend": "Reaktivieren", + "Suspend": "Deaktivieren", + "Delete": "Löschen", + "Login as User": "Als User anmelden", + "Clone": "Klonen" + + +} diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php new file mode 100644 index 00000000..26860b5b --- /dev/null +++ b/resources/lang/de/auth.php @@ -0,0 +1,18 @@ + 'Diese Kombination aus Zugangsdaten wurde nicht in unserer Datenbank gefunden.', + 'password' => 'Das eingegebene Passwort ist nicht korrekt.', + 'throttle' => 'Zu viele Loginversuche. Versuchen Sie es bitte in :seconds Sekunden nochmal.', +]; diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php new file mode 100644 index 00000000..0fbc2a8c --- /dev/null +++ b/resources/lang/de/pagination.php @@ -0,0 +1,17 @@ + 'Weiter »', + 'previous' => '« Zurück', +]; diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php new file mode 100644 index 00000000..429ee9d9 --- /dev/null +++ b/resources/lang/de/passwords.php @@ -0,0 +1,20 @@ + 'Das Passwort wurde zurückgesetzt!', + 'sent' => 'Passworterinnerung wurde gesendet!', + 'throttled' => 'Bitte warten Sie, bevor Sie es erneut versuchen.', + 'token' => 'Der Passwort-Wiederherstellungs-Schlüssel ist ungültig oder abgelaufen.', + 'user' => 'Es konnte leider kein Nutzer mit dieser E-Mail-Adresse gefunden werden.', +]; diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php new file mode 100644 index 00000000..8f725548 --- /dev/null +++ b/resources/lang/de/validation.php @@ -0,0 +1,135 @@ + ':attribute muss akzeptiert werden.', + 'accepted_if' => ':attribute muss akzeptiert werden, wenn :other :value ist.', + 'active_url' => ':attribute ist keine gültige Internet-Adresse.', + 'after' => ':attribute muss ein Datum nach :date sein.', + 'after_or_equal' => ':attribute muss ein Datum nach :date oder gleich :date sein.', + 'alpha' => ':attribute darf nur aus Buchstaben bestehen.', + 'alpha_dash' => ':attribute darf nur aus Buchstaben, Zahlen, Binde- und Unterstrichen bestehen.', + 'alpha_num' => ':attribute darf nur aus Buchstaben und Zahlen bestehen.', + 'array' => ':attribute muss ein Array sein.', + 'attached' => ':attribute ist bereits angehängt.', + 'before' => ':attribute muss ein Datum vor :date sein.', + 'before_or_equal' => ':attribute muss ein Datum vor :date oder gleich :date sein.', + 'between' => [ + 'array' => ':attribute muss zwischen :min & :max Elemente haben.', + 'file' => ':attribute muss zwischen :min & :max Kilobytes groß sein.', + 'numeric' => ':attribute muss zwischen :min & :max liegen.', + 'string' => ':attribute muss zwischen :min & :max Zeichen lang sein.', + ], + 'boolean' => ':attribute muss entweder \'true\' oder \'false\' sein.', + 'confirmed' => ':attribute stimmt nicht mit der Bestätigung überein.', + 'current_password' => 'Das Passwort ist falsch.', + 'date' => ':attribute muss ein gültiges Datum sein.', + 'date_equals' => ':attribute muss ein Datum gleich :date sein.', + 'date_format' => ':attribute entspricht nicht dem gültigen Format für :format.', + 'declined' => 'The :attribute must be declined.', + 'declined_if' => 'The :attribute must be declined when :other is :value.', + 'different' => ':attribute und :other müssen sich unterscheiden.', + 'digits' => ':attribute muss :digits Stellen haben.', + 'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.', + 'dimensions' => ':attribute hat ungültige Bildabmessungen.', + 'distinct' => ':attribute beinhaltet einen bereits vorhandenen Wert.', + 'email' => ':attribute muss eine gültige E-Mail-Adresse sein.', + 'ends_with' => ':attribute muss eine der folgenden Endungen aufweisen: :values', + 'exists' => 'Der gewählte Wert für :attribute ist ungültig.', + 'file' => ':attribute muss eine Datei sein.', + 'filled' => ':attribute muss ausgefüllt sein.', + 'gt' => [ + 'array' => ':attribute muss mehr als :value Elemente haben.', + 'file' => ':attribute muss größer als :value Kilobytes sein.', + 'numeric' => ':attribute muss größer als :value sein.', + 'string' => ':attribute muss länger als :value Zeichen sein.', + ], + 'gte' => [ + 'array' => ':attribute muss mindestens :value Elemente haben.', + 'file' => ':attribute muss größer oder gleich :value Kilobytes sein.', + 'numeric' => ':attribute muss größer oder gleich :value sein.', + 'string' => ':attribute muss mindestens :value Zeichen lang sein.', + ], + 'image' => ':attribute muss ein Bild sein.', + 'in' => 'Der gewählte Wert für :attribute ist ungültig.', + 'in_array' => 'Der gewählte Wert für :attribute kommt nicht in :other vor.', + 'integer' => ':attribute muss eine ganze Zahl sein.', + 'ip' => ':attribute muss eine gültige IP-Adresse sein.', + 'ipv4' => ':attribute muss eine gültige IPv4-Adresse sein.', + 'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.', + 'json' => ':attribute muss ein gültiger JSON-String sein.', + 'lt' => [ + 'array' => ':attribute muss weniger als :value Elemente haben.', + 'file' => ':attribute muss kleiner als :value Kilobytes sein.', + 'numeric' => ':attribute muss kleiner als :value sein.', + 'string' => ':attribute muss kürzer als :value Zeichen sein.', + ], + 'lte' => [ + 'array' => ':attribute darf maximal :value Elemente haben.', + 'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.', + 'numeric' => ':attribute muss kleiner oder gleich :value sein.', + 'string' => ':attribute darf maximal :value Zeichen lang sein.', + ], + 'max' => [ + 'array' => ':attribute darf maximal :max Elemente haben.', + 'file' => ':attribute darf maximal :max Kilobytes groß sein.', + 'numeric' => ':attribute darf maximal :max sein.', + 'string' => ':attribute darf maximal :max Zeichen haben.', + ], + 'mimes' => ':attribute muss den Dateityp :values haben.', + 'mimetypes' => ':attribute muss den Dateityp :values haben.', + 'min' => [ + 'array' => ':attribute muss mindestens :min Elemente haben.', + 'file' => ':attribute muss mindestens :min Kilobytes groß sein.', + 'numeric' => ':attribute muss mindestens :min sein.', + 'string' => ':attribute muss mindestens :min Zeichen lang sein.', + ], + 'multiple_of' => ':attribute muss ein Vielfaches von :value sein.', + 'not_in' => 'Der gewählte Wert für :attribute ist ungültig.', + 'not_regex' => ':attribute hat ein ungültiges Format.', + 'numeric' => ':attribute muss eine Zahl sein.', + 'password' => 'Das Passwort ist falsch.', + 'present' => ':attribute muss vorhanden sein.', + 'prohibited' => ':attribute ist unzulässig.', + 'prohibited_if' => ':attribute ist unzulässig, wenn :other :value ist.', + 'prohibited_unless' => ':attribute ist unzulässig, wenn :other nicht :values ist.', + 'prohibits' => ':attribute verbietet die Angabe von :other.', + 'regex' => ':attribute Format ist ungültig.', + 'relatable' => ':attribute kann nicht mit dieser Ressource verbunden werden.', + 'required' => ':attribute muss ausgefüllt werden.', + 'required_if' => ':attribute muss ausgefüllt werden, wenn :other den Wert :value hat.', + 'required_unless' => ':attribute muss ausgefüllt werden, wenn :other nicht den Wert :values hat.', + 'required_with' => ':attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_with_all' => ':attribute muss ausgefüllt werden, wenn :values ausgefüllt wurde.', + 'required_without' => ':attribute muss ausgefüllt werden, wenn :values nicht ausgefüllt wurde.', + 'required_without_all' => ':attribute muss ausgefüllt werden, wenn keines der Felder :values ausgefüllt wurde.', + 'same' => ':attribute und :other müssen übereinstimmen.', + 'size' => [ + 'array' => ':attribute muss genau :size Elemente haben.', + 'file' => ':attribute muss :size Kilobyte groß sein.', + 'numeric' => ':attribute muss gleich :size sein.', + 'string' => ':attribute muss :size Zeichen lang sein.', + ], + 'starts_with' => ':attribute muss mit einem der folgenden Anfänge aufweisen: :values', + 'string' => ':attribute muss ein String sein.', + 'timezone' => ':attribute muss eine gültige Zeitzone sein.', + 'unique' => ':attribute ist bereits vergeben.', + 'uploaded' => ':attribute konnte nicht hochgeladen werden.', + 'url' => ':attribute muss eine URL sein.', + 'uuid' => ':attribute muss ein UUID sein.', + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'custom-message', + ], + ], +]; diff --git a/resources/lang/en.json b/resources/lang/en.json new file mode 100644 index 00000000..12ede9dc --- /dev/null +++ b/resources/lang/en.json @@ -0,0 +1,361 @@ +{ + "Activity Logs": "Activity Logs", + "No recent activity from cronjobs": "No recent activity from cronjobs", + "Check the docs for it here": "Check the docs for it here", + "Are cronjobs running?": "Are cronjobs running?", + "Causer": "Causer", + "Description": "Description", + "Created at": "Created at", + + "Edit Configuration": "Edit Configuration", + "Text Field": "Text Field", + "Cancel": "Cancel", + "Close": "Close", + "Save": "Save", + "true": "true", + "false": "false", + + "Configurations": "Configurations", + "Dashboard": "Dashboard", + "Key": "Key", + "Value": "Value", + "Type": "Type", + + "Admin Overview": "Admin Overview", + "Support server": "Support server", + "Documentation": "Documentation", + "Github": "Github", + "Support ControlPanel": "Support ControlPanel", + "Servers": "Servers", + "Users": "Users", + "Total": "Total", + "Payments": "Payments", + "Pterodactyl": "Pterodactyl", + "Sync": "Sync", + "Resources": "Resources", + "Count": "Count", + "Locations": "Locations", + "Node": "Node", + "Nodes": "Nodes", + "Nests": "Nests", + "Eggs": "Eggs", + "Last updated :date": "Last updated :date", + + "ID": "ID", + "User": "User", + "Amount": "Amount", + "Product Price": "Product Price", + "Tax": "Tax", + "Total Price": "Total Price", + "Payment_ID": "Payment_ID", + "Payer_ID": "Payer_ID", + + "Product": "Product", + "Products": "Products", + "Create": "Create", + "Product Details": "Product Details", + "Server Details": "Server Details", + + "Product Linking": "Product Linking", + "Name": "Name", + "Price in": "Price in", + "Memory": "Memory", + "Cpu": "Cpu", + "Swap": "Swap", + "Disk": "Disk", + "Minimum": "Minimum", + "IO": "IO", + "Databases": "Databases", + "Database": "Database", + "Backups": "Backups", + "Allocations": "Allocations", + "Disabled": "Disabled", + "Submit": "Submit", + "This product will only be available for these nodes": "This product will only be available for these nodes", + "This product will only be available for these eggs": "This product will only be available for these eggs", + "Will hide this option from being selected": "Will hide this option from being selected", + "Link your products to nodes and eggs to create dynamic pricing for each option": "Link your products to nodes and eggs to create dynamic pricing for each option", + "Setting to -1 will use the value from configuration.": "Setting to -1 will use the value from configuration.", + "This is what the users sees": "This is what the users sees", + "Edit": "Edit", + + "Price": "Price", + "Are you sure you wish to delete?": "Are you sure you wish to delete?", + "Create new": "Create new", + "Show": "Show", + "Updated at": "Updated at", + "Suspended at": "Suspended at", + + "Settings": "Settings", + "Dashboard icons": "Dashboard icons", + "Select panel icon": "Select panel icon", + "Select panel favicon": "Select panel favicon", + + "Token": "Token", + "Last used": "Last used", + + "Store": "Store", + "Currency code": "Currency code", + "Checkout the paypal docs to select the appropriate code": "Checkout the paypal docs to select the appropriate code", + "Quantity": "Quantity", + "Amount given to the user after purchasing": "Amount given to the user after purchasing", + "Display": "Display", + "This is what the user sees at store and checkout": "This is what the user sees at store and checkout", + "This is what the user sees at checkout": "This is what the user sees at checkout", + "Adds 1000 credits to your account": "Adds 1000 credits to your account", + + "Active": "Active", + "Paypal is not configured.": "Paypal is not configured.", + "To configure PayPal, head to the .env and add your PayPal’s client id and secret.": "To configure PayPal, head to the .env and add your PayPal’s client id and secret.", + + "Useful Links": "Useful Links", + "Icon class name": "Icon class name", + "You can find available free icons": "You can find available free icons", + "Title": "Title", + "Link": "Link", + + "Username": "Username", + "Email": "Email", + "Pterodactly ID": "Pterodactly ID", + "Server Limit": "Server Limit", + "Role": "Role", + "Administrator": "Administrator", + "Client": "Client", + "Member": "Member", + "New Password": "New Password", + "Confirm Password": "Confirm Password", + "This ID refers to the user account created on pterodactyls panel.": "This ID refers to the user account created on pterodactyls panel.", + "Only edit this if you know what youre doing :)": "Only edit this if you know what youre doing :)", + + "Verified": "Verified", + "Last seen": "Last seen", + "Notify": "Notify", + + "All": "All", + "Send via": "Send via", + "Content": "Content", + "Notifications": "Notifications", + + "Usage": "Usage", + + "Config": "Config", + + "Vouchers": "Vouchers", + "Voucher details": "Voucher details", + "Memo": "Memo", + "Code": "Code", + "Uses": "Uses", + "Expires at": "Expires at", + "Max": "Max", + "Random": "Random", + + "Status": "Status", + "Used / Uses": "Used / Uses", + "Expires": "Expires", + + "Please confirm your password before continuing.": "Please confirm your password before continuing.", + "Password": "Password", + "Forgot Your Password?": "Forgot Your Password?", + "Sign in to start your session": "Sign in to start your session", + "Remember Me": "Remember Me", + "Sign In": "Sign In", + "Register a new membership": "Register a new membership", + "You forgot your password? Here you can easily retrieve a new password.": "You forgot your password? Here you can easily retrieve a new password.", + "Request new password": "Request new password", + "Login": "Login", + "You are only one step a way from your new password, recover your password now.":"Du bist nurnoch einen Schritt von deinem Passwort entfernt.", + "Retype password": "Retype password", + "Change password": "Change password", + "I already have a membership": "I already have a membership", + "Register": "Register", + "Verify Your Email Address": "Verify Your Email Address", + "A fresh verification link has been sent to your email address.": "A fresh verification link has been sent to your email address.", + "Before proceeding, please check your email for a verification link.": "Before proceeding, please check your email for a verification link.", + "If you did not receive the email": "If you did not receive the email", + "click here to request another": "click here to request another", + + "Home": "Home", + "See all Notifications": "See all Notifications", + "Profile": "Profile", + "Log back in": "Log back in", + "Logout": "Logout", + "Administration": "Administration", + "Overview": "Overview", + "Application API": "Application API", + "Management": "Management", + "Other": "Other", + "Logs": "Logs", + "Redeem code": "Redeem code", + + "You have not yet verified your email address": "You have not yet verified your email address", + "Click here to resend verification email": "Click here to resend verification email", + "Please contact support If you didnt receive your verification email.": "Please contact support If you didnt receive your verification email.", + + "Thank you for your purchase!": "Thank you for your purchase!", + "Your payment has been confirmed; Your credit balance has been updated.": "Your payment has been confirmed; Your credit balance has been updated.", + + "Payment ID": "Payment ID", + "Balance": "Balance", + "User ID": "User ID", + "Thanks": "Thanks", + + "Redeem voucher code": "Redeem voucher code", + "Redeem": "Redeem", + + "All notifications": "All notifications", + + "Required Email verification!": "Required Email verification!", + "Required Discord verification!": "Required Discord verification!", + "You have not yet verified your discord account": "You have not yet verified your discord account", + "Login with discord": "Login with discord", + "Please contact support If you face any issues.": "Please contact support If you face any issues.", + "Due to system settings you are required to verify your discord account!": "Due to system settings you are required to verify your discord account!", + "It looks like this hasnt been set-up correctly! Please contact support.": "It looks like this hasnt been set-up correctly! Please contact support.", + + "Change Password": "Change Password", + "Current Password": "Current Password", + "Save Changes": "Save Changes", + "Re-Sync Discord": "Re-Sync Discord", + "You are verified!": "You are verified!", + "By verifying your discord account, you receive extra Credits and increased Server amounts": "By verifying your discord account, you receive extra Credits and increased Server amounts", + "Server configuration": "Server configuration", + "Error!": "Error!", + "Make sure to link your products to nodes and eggs.": "Make sure to link your products to nodes and eggs.", + "There has to be at least 1 valid product for server creation": "There has to be at least 1 valid product for server creation", + "No products available!": "No products available!", + "No nodes have been linked!": "No nodes have been linked!", + "No nests available!": "No nests available!", + "No eggs have been linked!": "No eggs have been linked!", + "Software / Games": "Software / Games", + "Please select software ...": "Please select software ...", + "Specification": "Specification", + "No selection": "No selection", + "per month": "per month", + "Not enough credits!": "Not enough credits!", + "Please select a configuration ...": "Please select a configuration ...", + "No resources found matching current configuration": "No resources found matching current configuration", + "No nodes found matching current configuration": "No nodes found matching current configuration", + "Please select a node ...": "Please select a node ...", + "Create server": "Create server", + "Use your servers on our": "Use your servers on our", + "pterodactyl panel": "pterodactyl panel", + "Server limit reached!": "Server limit reached!", + "Create Server": "Create Server", + "Manage": "Manage", + "Delete server": "Delete server", + "Price per Hour": "Price per Hour", + "Price per Month": "Price per Month", + + "Date": "Date", + "To": "To", + "From": "From", + "Pending": "Pending", + "Subtotal": "Subtotal", + "Submit Payment": "Submit Payment", + "Payment Methods": "Payment Methods", + "By purchasing this product you agree and accept our terms of service": "By purchasing this product you agree and accept our terms of service", + "There are no store products!": "There are no store products!", + "The store is not correctly configured!": "The store is not correctly configured!", + "Out of Credits in": "Out of Credits in", + + "days": "days", + "hours": "hours", + "You ran out of Credits": "You ran out of Credits", + + "Profile updated": "Profile updated", + + "You are required to verify your email address before you can create a server.": "You are required to verify your email address before you can create a server.", + "You are required to link your discord account before you can create a server.": "You are required to link your discord account before you can create a server.", + "No allocations satisfying the requirements for automatic deployment on this node were found.": "No allocations satisfying the requirements for automatic deployment on this node were found.", + "Server removed": "Server removed", + "Server created": "Server created", + "An exception has occurred while trying to remove a resource \"": "An exception has occurred while trying to remove a resource \"", + "You are required to verify your email address before you can purchase credits.": "You are required to verify your email address before you can purchase credits.", + "You are required to link your discord account before you can purchase ": "You are required to link your discord account before you can purchase ", + + "Warning!": "Warning!", + + "api key created!": "api key created!", + "api key updated!": "api key updated!", + "api key has been removed!": "api key has been removed!", + "configuration has been updated!": "configuration has been updated!", + "Pterodactyl synced": "Pterodactyl synced", + "Your credit balance has been increased!": "Your credit balance has been increased!", + "Payment was Canceled": "Payment was Canceled", + + "Store item has been created!": "Store item has been created!", + "Store item has been updated!": "Store item has been updated!", + "Product has been updated!": "Product has been updated!", + "Store item has been removed!": "Store item has been removed!", + "Product has been created!": "Product has been created!", + "Product has been removed!": "Product has been removed!", + "Server has been updated!": "Server has been updated!", + "Icons updated!": "Icons updated!", + "link has been created!": "link has been created!", + "link has been updated!": "link has been updated!", + "user has been removed!": "user has been removed!", + "Notification sent!": "Notification sent!", + "User has been updated!": "User has been updated!", + "User does not exists on pterodactyl's panel": "User does not exists on pterodactyl's panel", + "voucher has been created!": "voucher has been created!", + "voucher has been updated!": "voucher has been updated!", + "voucher has been removed!": "voucher has been removed!", + "This voucher has reached the maximum amount of uses": "This voucher has reached the maximum amount of uses", + "This voucher has expired": "This voucher has expired", + "You already redeemed this voucher code": "You already redeemed this voucher code", + "You can't redeem this voucher because you would exceed the limit of ": "You can't redeem this voucher because you would exceed the limit of ", + "have been added to your balance!": "have been added to your balance!", + "Invoice": "Invoice", + "Serial No.": "Serial No.", + "Invoice date": "Invoice date", + "Seller": "Seller", + "Buyer": "Buyer", + "Address": "Address", + "VAT code": "VAT code", + "Phone": "Phone", + "Units": "Units", + "Qty": "Qty", + "Discount": "Discount", + "Sub total": "Sub total", + "Total discount": "Total discount", + "Taxable amount": "Taxable amount", + "Total taxes": "Total taxes", + "Tax rate": "Tax rate", + "Total amount": "Total amount", + "Please pay until": "Please pay until", + "Amount in words": "Amount in words", + "Notes": "Notes", + "Shipping": "Shipping", + "Paid": "Paid", + "Due:": "Due:", + "Invoice Settings": "Invoice Settings", + "Download all Invoices": "Download all Invoices", + "Enter your companys name": "Enter your companys name", + "Enter your companys adress": "Enter your companys adress", + "Enter your companys phone number": "Enter your companys phone number", + "Enter your companys VAT id": "Enter your companys VAT id", + "Enter your companys email adress": "Enter your companys email adress", + "Enter your companys website": "Enter your companys website", + "Enter your custom invoice prefix": "Enter your custom invoice prefix", + "Select Invoice Logo": "Select Invoice Logo", + + "Payment Confirmation": "Payment Confirmation", + "Payment Confirmed!": "Payment Confirmed!", + "Server Creation Error": "Server Creation Error", + "Your servers have been suspended!": "Your servers have been suspended!", + "To automatically re-enable your server/s, you need to purchase more credits.": "To automatically re-enable your server/s, you need to purchase more credits.", + "Purchase credits": "Purchase credits", + "If you have any questions please let us know.": "If you have any questions please let us know.", + "Regards": "Regards", + + "Getting started!": "Getting started!", + "EXPIRED": "EXPIRED", + "VALID": "VALID", + + "Unsuspend": "Unsuspend", + "Suspend": "Suspend", + "Delete": "Delete", + "Login as User": "Login as User", + "Clone": "Clone" + +} diff --git a/resources/views/admin/activitylogs/index.blade.php b/resources/views/admin/activitylogs/index.blade.php index 978e8c9c..6a49b5a0 100644 --- a/resources/views/admin/activitylogs/index.blade.php +++ b/resources/views/admin/activitylogs/index.blade.php @@ -6,12 +6,12 @@
-

Activity Logs

+

{{ __('Activity Logs')}}

@@ -32,8 +32,8 @@
@else
-

No recent activity from cronjobs

-

Are cronjobs running? Check the docs for it here

+

{{ __('No recent activity from cronjobs')}}

+

{{ __('Are cronjobs running?')}} {{ __('Check the docs for it here')}}

@endif @@ -42,7 +42,7 @@
-
Activity Logs
+
{{ __('Activity Logs')}}
@@ -63,16 +63,16 @@ - - - + + + @foreach($logs as $log) -
CauserDescriptionCreated At{{ __('Causer') }}{{ __('Description') }}{{ __('Created at') }}
@if($log->causer) {{json_decode($log->causer)->name}} - @else + @if($log->causer) {{json_decode($log->causer)->name}} + @else System @endif diff --git a/resources/views/admin/api/create.blade.php b/resources/views/admin/api/create.blade.php index 300d0754..e0025e85 100644 --- a/resources/views/admin/api/create.blade.php +++ b/resources/views/admin/api/create.blade.php @@ -6,13 +6,15 @@
-

Application API

+

{{__('Application API')}}

@@ -33,7 +35,7 @@ @csrf
- + @error('memo') @@ -45,7 +47,7 @@
diff --git a/resources/views/admin/api/edit.blade.php b/resources/views/admin/api/edit.blade.php index 62f82d02..f99e0b27 100644 --- a/resources/views/admin/api/edit.blade.php +++ b/resources/views/admin/api/edit.blade.php @@ -6,13 +6,15 @@
-

Application API

+

{{__('Application API')}}

@@ -34,7 +36,7 @@ @method('PATCH')
- + @error('memo') @@ -46,7 +48,7 @@
diff --git a/resources/views/admin/api/index.blade.php b/resources/views/admin/api/index.blade.php index 6c56fcf8..6eaf5fba 100644 --- a/resources/views/admin/api/index.blade.php +++ b/resources/views/admin/api/index.blade.php @@ -6,12 +6,12 @@
-

Application API

+

{{__('Application API')}}

@@ -27,9 +27,9 @@
-
Application API
+
{{__('Application API')}}
Create new + class="fas fa-plus mr-1">{{__('Create new')}}
@@ -38,9 +38,9 @@ - - - + + + @@ -59,11 +59,14 @@ diff --git a/resources/views/admin/products/index.blade.php b/resources/views/admin/products/index.blade.php index bd2876fa..b7c241b3 100644 --- a/resources/views/admin/products/index.blade.php +++ b/resources/views/admin/products/index.blade.php @@ -6,12 +6,14 @@
-

Products

+

{{__('Products')}}

@@ -27,8 +29,10 @@
-
Products
- Create new + +
{{__('Products')}}
+ {{__('Create new')}}
@@ -37,19 +41,19 @@
TokenMemoLast used{{__('Token')}}{{__('Memo')}}{{__('Last used')}}
- - - - - - - - - - - - - + + + + + + + + + + + + + @@ -68,16 +72,19 @@ + + + function setRandomCode() { + let element = document.getElementById('code') + element.value = getRandomCode(36) + } + + function getRandomCode(length) { + let result = ''; + let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-'; + let charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * + charactersLength)); + } + return result; + } + @endsection diff --git a/resources/views/admin/vouchers/edit.blade.php b/resources/views/admin/vouchers/edit.blade.php index 7447f237..df7d945b 100644 --- a/resources/views/admin/vouchers/edit.blade.php +++ b/resources/views/admin/vouchers/edit.blade.php @@ -1,170 +1,193 @@ @extends('layouts.main') @section('content') - -
-
-
-
-

Vouchers

-
-
- + +
+
+
+
+

{{__('Vouchers')}}

+
+
-
-
- + + - -
-
+ +
+
-
-
-
-
-
- Voucher details -
-
-
-
- @csrf - @method('PATCH') +
+
+
+
+
+ {{__('Voucher details')}} +
+
+
+ + @csrf + @method('PATCH') -
- - - @error('memo') -
- {{$message}} +
+ + + @error('memo') +
+ {{$message}} +
+ @enderror
- @enderror -
-
- - - @error('credits') -
- {{$message}} +
+ + + @error('credits') +
+ {{$message}} +
+ @enderror
- @enderror -
-
- -
- -
-
@error('code')
{{$message}} -
- @enderror -
- -
- -
- -
-
+ @enderror
- @error('uses') -
- {{$message}} -
- @enderror -
-
- -
- -
-
+
+ +
+ +
+ +
+ @error('uses') +
+ {{$message}} +
+ @enderror
- @error('expires_at') -
- {{$message}} + +
+ +
+ +
+
+
+
+ @error('expires_at') +
+ {{$message}} +
+ @enderror
- @enderror -
-
- -
- +
+ +
+ +
+
- -
-
- +
+ - + + + function setRandomCode() { + let element = document.getElementById('code') + element.value = getRandomCode(36) + } + + function getRandomCode(length) { + let result = ''; + let characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-'; + let charactersLength = characters.length; + for (let i = 0; i < length; i++) { + result += characters.charAt(Math.floor(Math.random() * + charactersLength)); + } + return result; + } + @endsection diff --git a/resources/views/admin/vouchers/index.blade.php b/resources/views/admin/vouchers/index.blade.php index 3b8b604a..59f0efc6 100644 --- a/resources/views/admin/vouchers/index.blade.php +++ b/resources/views/admin/vouchers/index.blade.php @@ -6,13 +6,13 @@
-

Vouchers

+

{{__('Vouchers')}}

@@ -28,9 +28,9 @@
-
Vouchers
+
{{__('Vouchers')}}
Create new + class="fas fa-plus mr-1">{{__('Create new')}}
@@ -39,12 +39,12 @@
ActiveNamePriceMemoryCpuSwapDiskDatabasesBackupsNodesEggsServersCreated at{{__('Active')}}{{__('Name')}}{{__('Price')}}{{__('Memory')}}{{__('Cpu')}}{{__('Swap')}}{{__('Disk')}}{{__('Databases')}}{{__('Backups')}}{{__('Nodes')}}{{__('Eggs')}}{{__('Servers')}}{{__('Created at')}}
- - - + + + - - + + @@ -64,11 +64,14 @@ @endsection diff --git a/resources/views/store/checkout.blade.php b/resources/views/store/checkout.blade.php index f2bce40a..6baa4c7d 100644 --- a/resources/views/store/checkout.blade.php +++ b/resources/views/store/checkout.blade.php @@ -6,12 +6,12 @@
-

Store

+

{{__('Store')}}

@@ -34,7 +34,7 @@

{{ config('app.name', 'Laravel') }} - Date: {{Carbon\Carbon::now()->isoFormat('LL')}} + {{__('Date')}}: {{Carbon\Carbon::now()->isoFormat('LL')}}

@@ -42,24 +42,24 @@
- To + {{__('To')}}
{{config('app.name' , 'Laravel')}}
- Email: {{env('PAYPAL_EMAIL' , env('MAIL_FROM_NAME'))}} + {{__('Email')}}: {{env('PAYPAL_EMAIL' , env('MAIL_FROM_NAME'))}}
- From + {{__('From')}}
{{Auth::user()->name}}
- Email: {{Auth::user()->email}} + {{__('Email')}}: {{Auth::user()->email}}
- Status
- Pending
+ {{__('Status')}}
+ {{__('Pending')}}
{{-- Order ID: 4F3S8J
--}}
@@ -72,10 +72,10 @@
StatusCodeMemo{{__('Status')}}{{__('Code')}}{{__('Memo')}} {{CREDITS_DISPLAY_NAME}}Used / UsesExpires{{__('Used / Uses')}}{{__('Expires')}}
- - - - + + + + @@ -95,34 +95,34 @@
-

Payment Methods:

+

{{__('Payment Methods')}}:

Paypal

- By purchasing this product you agree and accept our terms of service + {{__('By purchasing this product you agree and accept our terms of service')}}

-

Amount Due {{Carbon\Carbon::now()->isoFormat('LL')}}

+

{{__('Amount Due')}} {{Carbon\Carbon::now()->isoFormat('LL')}}

QuantityProductDescriptionSubtotal{{__('Quantity')}}{{__('Product')}}{{__('Description')}}{{__('Subtotal')}}
- + - + - + - +
Subtotal:{{__('Subtotal')}}: {{$product->formatToCurrency($product->price)}}
Tax ({{$taxpercent}}%){{__('Tax')}} ({{$taxpercent}}%) {{$product->formatToCurrency($taxvalue)}}
Quantity:{{__('Quantity')}}: 1
Total:{{__('Total')}}: {{$product->formatToCurrency($total)}}
@@ -135,8 +135,8 @@ diff --git a/resources/views/store/index.blade.php b/resources/views/store/index.blade.php index 880d83a4..24d1fdb9 100644 --- a/resources/views/store/index.blade.php +++ b/resources/views/store/index.blade.php @@ -7,12 +7,12 @@
-

Store

+

{{__('Store')}}

@@ -26,7 +26,7 @@
@@ -40,9 +40,9 @@ - - - + + + @@ -65,7 +65,7 @@ @else
-

@if($products->count() == 0) There are no store products! @else The store is not correctly configured! @endif +

@if($products->count() == 0) {{__('There are no store products!')}} @else {{__('The store is not correctly configured!')}} @endif

PriceTypeDescription{{__('Price')}}{{__('Type')}}{{__('Description')}}