Merge branch 'development' into servers-servercard

This commit is contained in:
IceToast 2021-12-21 14:56:12 +01:00
commit c332216e32
125 changed files with 6913 additions and 1208 deletions

View file

@ -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

4
.gitignore vendored
View file

@ -18,4 +18,6 @@ yarn-error.log
.gitignore
.env.dev
.env.testing
.vscode*
storage/invoices.zip
storage/app/public/logo.png
*vscode

View file

@ -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

View file

@ -12,8 +12,7 @@
# ControlPanel-gg
![controlpanel](https://user-images.githubusercontent.com/45005889/123518824-06b05000-d6a8-11eb-91b9-d1ed36bd2317.png)
![](https://img.shields.io/github/stars/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/forks/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/tag/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/issues/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/license/ControlPanel-gg/dashboard) ![](https://img.shields.io/discord/787829714483019826)
![](https://img.shields.io/github/stars/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/forks/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/tag/ControlPanel-gg/dashboard) [![Crowdin](https://badges.crowdin.net/controlpanelgg/localized.svg)](https://crowdin.com/project/controlpanelgg) ![](https://img.shields.io/github/issues/ControlPanel-gg/dashboard) ![](https://img.shields.io/github/license/ControlPanel-gg/dashboard) ![](https://img.shields.io/discord/787829714483019826)
## About
ControlPanel's Dashboard is a dashboard application designed to offer clients a management tool to manage their pterodactyl servers. This dashboard comes with a credit-based billing solution that credits users hourly for each server they have and suspends them if they run out of credits.

View file

@ -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 '
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.api.edit', $apiKey->token) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.api.edit', $apiKey->token) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.api.destroy', $apiKey->token) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -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 '<button data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" onclick="configuration.parse(\'' . $configuration->key . '\',\'' . $configuration->value . '\',\'' . $configuration->type . '\')" data-content="Edit" data-trigger="hover" data-toggle="tooltip" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></button> ';
return '<button data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" onclick="configuration.parse(\'' . $configuration->key . '\',\'' . $configuration->value . '\',\'' . $configuration->type . '\')" data-content="Edit" data-trigger="hover" data-toggle="tooltip" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></button> ';
})
->editColumn('created_at', function (Configuration $configuration) {
return $configuration->created_at ? $configuration->created_at->diffForHumans() : '';

View file

@ -5,11 +5,11 @@ namespace App\Http\Controllers\Admin;
use App\Events\UserUpdateCreditsEvent;
use App\Http\Controllers\Controller;
use App\Models\Configuration;
use App\Models\InvoiceSettings;
use App\Models\Payment;
use App\Models\PaypalProduct;
use App\Models\Product;
use App\Models\User;
use App\Notifications\ConfirmPaymentNotification;
use App\Notifications\InvoiceNotification;
use Exception;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
@ -18,6 +18,11 @@ use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Storage;
use LaravelDaily\Invoices\Classes\Buyer;
use LaravelDaily\Invoices\Classes\InvoiceItem;
use LaravelDaily\Invoices\Classes\Party;
use LaravelDaily\Invoices\Invoice;
use PayPalCheckoutSdk\Core\PayPalHttpClient;
use PayPalCheckoutSdk\Core\ProductionEnvironment;
use PayPalCheckoutSdk\Core\SandboxEnvironment;
@ -46,10 +51,10 @@ class PaymentController extends Controller
public function checkOut(Request $request, PaypalProduct $paypalProduct)
{
return view('store.checkout')->with([
'product' => $paypalProduct,
'taxvalue' => $paypalProduct->getTaxValue(),
'taxpercent' => $paypalProduct->getTaxPercent(),
'total' => $paypalProduct->getTotalPrice()
'product' => $paypalProduct,
'taxvalue' => $paypalProduct->getTaxValue(),
'taxpercent' => $paypalProduct->getTaxPercent(),
'total' => $paypalProduct->getTotalPrice()
]);
}
@ -68,12 +73,12 @@ class PaymentController extends Controller
[
"reference_id" => uniqid(),
"description" => $paypalProduct->description,
"amount" => [
"value" => $paypalProduct->getTotalPrice(),
"amount" => [
"value" => $paypalProduct->getTotalPrice(),
'currency_code' => strtoupper($paypalProduct->currency_code),
'breakdown' =>[
'breakdown' => [
'item_total' =>
[
[
'currency_code' => strtoupper($paypalProduct->currency_code),
'value' => $paypalProduct->price,
],
@ -89,11 +94,11 @@ class PaymentController extends Controller
"application_context" => [
"cancel_url" => route('payment.cancel'),
"return_url" => route('payment.success', ['product' => $paypalProduct->id]),
'brand_name' => config('app.name', 'Laravel'),
'shipping_preference' => 'NO_SHIPPING'
'brand_name' => config('app.name', 'Laravel'),
'shipping_preference' => 'NO_SHIPPING'
]
];
@ -164,7 +169,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']);
@ -186,15 +191,76 @@ class PaymentController extends Controller
'payer' => json_encode($response->result->payer),
]);
//payment notification
$user->notify(new ConfirmPaymentNotification($payment));
event(new UserUpdateCreditsEvent($user));
//create invoice
$lastInvoiceID = \App\Models\Invoice::where("invoice_name", "like", "%" . now()->format('mY') . "%")->count("id");
$newInvoiceID = $lastInvoiceID + 1;
$InvoiceSettings = InvoiceSettings::query()->first();
$logoPath = storage_path('app/public/logo.png');
$seller = new Party([
'name' => $InvoiceSettings->company_name,
'phone' => $InvoiceSettings->company_phone,
'address' => $InvoiceSettings->company_adress,
'vat' => $InvoiceSettings->company_vat,
'custom_fields' => [
'E-Mail' => $InvoiceSettings->company_mail,
"Web" => $InvoiceSettings->company_web
],
]);
$customer = new Buyer([
'name' => $user->name,
'custom_fields' => [
'E-Mail' => $user->email,
'Client ID' => $user->id,
],
]);
$item = (new InvoiceItem())
->title($paypalProduct->description)
->pricePerUnit($paypalProduct->price);
$invoice = Invoice::make()
->template('controlpanel')
->name(__("Invoice"))
->buyer($customer)
->seller($seller)
->discountByPercent(0)
->taxRate(floatval($paypalProduct->getTaxPercent()))
->shipping(0)
->addItem($item)
->status(__('Paid'))
->series(now()->format('mY'))
->delimiter("-")
->sequence($newInvoiceID)
->serialNumberFormat($InvoiceSettings->invoice_prefix . '{DELIMITER}{SERIES}{SEQUENCE}');
if (file_exists($logoPath)) {
$invoice->logo($logoPath);
}
//Save the invoice in "storage\app\invoice\USER_ID\YEAR"
$invoice->filename = $invoice->getSerialNumber() . '.pdf';
$invoice->render();
Storage::disk("local")->put("invoice/" . $user->id . "/" . now()->format('Y') . "/" . $invoice->filename, $invoice->output);
\App\Models\Invoice::create([
'invoice_user' => $user->id,
'invoice_name' => $invoice->getSerialNumber(),
'payment_id' => $payment->payment_id,
]);
//Send Invoice per Mail
$user->notify(new InvoiceNotification($invoice, $user, $payment));
//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
if (env('APP_ENV') == 'local') {
dd($response);
@ -220,7 +286,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'));
}

View file

@ -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 '
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.store.edit', $paypalProduct->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.store.edit', $paypalProduct->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.store.destroy', $paypalProduct->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -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 '
<a data-content="Show" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.show', $product->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="Clone" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.clone', $product->id) . '" class="btn btn-sm text-white btn-primary mr-1"><i class="fas fa-clone"></i></a>
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.edit', $product->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Show").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.show', $product->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="'.__("Clone").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.clone', $product->id) . '" class="btn btn-sm text-white btn-primary mr-1"><i class="fas fa-clone"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.products.edit', $product->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.products.destroy', $product->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -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 '
<form class="d-inline" method="post" action="' . route('admin.servers.togglesuspend', $server->id) . '">
@ -145,7 +145,7 @@ class ServerController extends Controller
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.servers.destroy', $server->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';

View file

@ -3,11 +3,13 @@
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\InvoiceSettings;
use Illuminate\Contracts\Foundation\Application;
use Illuminate\Contracts\View\Factory;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use ZipArchive;
class SettingsController extends Controller
{
@ -18,7 +20,10 @@ class SettingsController extends Controller
*/
public function index()
{
return view('admin.settings.index');
/** @var InvoiceSettings $invoiceSettings */
$invoiceSettings = InvoiceSettings::first();
return view('admin.settings.index', $invoiceSettings->toArray());
}
public function updateIcons(Request $request)
@ -36,7 +41,60 @@ 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!'));
}
public function updateInvoiceSettings(Request $request)
{
$request->validate([
'logo' => 'nullable|max:10000|mimes:jpg,png,jpeg',
]);
InvoiceSettings::updateOrCreate([
'id' => "1"
], [
'company_name' => $request->get('company-name'),
'company_adress' => $request->get('company-address'),
'company_phone' => $request->get('company-phone'),
'company_mail' => $request->get('company-mail'),
'company_vat' => $request->get('company-vat'),
'company_web' => $request->get('company-web'),
'invoice_prefix' => $request->get('invoice-prefix'),
]);
if ($request->hasFile('logo')) {
$request->file('logo')->storeAs('public', 'logo.png');
}
return redirect()->route('admin.settings.index')->with('success', 'Invoice settings updated!');
}
public function downloadAllInvoices()
{
$zip = new ZipArchive;
$zip_safe_path = storage_path('invoices.zip');
$res = $zip->open($zip_safe_path, ZipArchive::CREATE | ZipArchive::OVERWRITE);
$result = $this::rglob(storage_path('app/invoice/*'));
if ($res === TRUE) {
$zip->addFromString("1. Info.txt", "This Archive contains all Invoices from all Users!\nIf there are no Invoices here, no Invoices have ever been created!");
foreach ($result as $file) {
if (file_exists($file) && is_file($file)) {
$zip->addFile($file, basename($file));
}
}
$zip->close();
}
return response()->download($zip_safe_path);
}
public function rglob($pattern, $flags = 0)
{
$files = glob($pattern, $flags);
foreach (glob(dirname($pattern) . '/*', GLOB_ONLYDIR | GLOB_NOSORT) as $dir) {
$files = array_merge($files, $this::rglob($dir . '/' . basename($pattern), $flags));
}
return $files;
}
}

View file

@ -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 '
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.usefullinks.edit', $link->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.usefullinks.edit', $link->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.usefullinks.destroy', $link->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -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 '
<a data-content="Login as user" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.loginas', $user->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-sign-in-alt"></i></a>
<a data-content="Show" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.show', $user->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.edit', $user->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Login as User").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.loginas', $user->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-sign-in-alt"></i></a>
<a data-content="'.__("Show").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.show', $user->id) . '" class="btn btn-sm text-white btn-warning mr-1"><i class="fas fa-eye"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.users.edit', $user->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" method="post" action="' . route('admin.users.togglesuspend', $user->id) . '">
' . csrf_field() . '
<button data-content="'.$suspendText.'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm '.$suspendColor.' text-white mr-1"><i class="far '.$suspendIcon.'"></i></button>
@ -277,7 +277,7 @@ class UserController extends Controller
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.users.destroy', $user->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})

View file

@ -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 '
<a data-content="Users" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.users', $voucher->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-users"></i></a>
<a data-content="Edit" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.edit', $voucher->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<a data-content="'.__("Users").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.users', $voucher->id) . '" class="btn btn-sm btn-primary mr-1"><i class="fas fa-users"></i></a>
<a data-content="'.__("Edit").'" data-toggle="popover" data-trigger="hover" data-placement="top" href="' . route('admin.vouchers.edit', $voucher->id) . '" class="btn btn-sm btn-info mr-1"><i class="fas fa-pen"></i></a>
<form class="d-inline" onsubmit="return submitResult();" method="post" action="' . route('admin.vouchers.destroy', $voucher->id) . '">
' . csrf_field() . '
' . method_field("DELETE") . '
<button data-content="Delete" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
<button data-content="'.__("Delete").'" data-toggle="popover" data-trigger="hover" data-placement="top" class="btn btn-sm btn-danger mr-1"><i class="fas fa-trash"></i></button>
</form>
';
})
->addColumn('status', function (Voucher $voucher) {
$color = 'success';
if ($voucher->getStatus() != 'VALID') $color = 'danger';
if ($voucher->getStatus() != __('VALID')) $color = 'danger';
return '<span class="badge badge-' . $color . '">' . $voucher->getStatus() . '</span>';
})
->editColumn('uses', function (Voucher $voucher) {

View file

@ -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");
}

View file

@ -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'));
}
}

View file

@ -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() . '"');
}
}
}

View file

@ -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([

18
app/Models/Invoice.php Normal file
View file

@ -0,0 +1,18 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Invoice extends Model
{
use HasFactory;
protected $fillable = [
'invoice_name',
'invoice_user',
'payment_id'
];
}

View file

@ -0,0 +1,23 @@
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class InvoiceSettings extends Model
{
use HasFactory;
protected $table = 'invoice_settings';
protected $fillable = [
'company_name',
'company_adress',
'company_phone',
'company_mail',
'company_vat',
'company_web',
'invoice_prefix'
];
}

View file

@ -43,7 +43,7 @@ class PaypalProduct extends Model
/**
* @param mixed $value
* @param string $locale
*
*
* @return float
*/
public function formatToCurrency($value,$locale = 'en_US')
@ -70,7 +70,7 @@ class PaypalProduct extends Model
*/
public function getTaxValue()
{
return $this->price*$this->getTaxPercent()/100;
return number_format($this->price*$this->getTaxPercent()/100,2);
}
/**
@ -78,8 +78,8 @@ class PaypalProduct extends Model
*
* @return float
*/
public function getTotalPrice()
public function getTotalPrice()
{
return $this->price+($this->getTaxValue());
return number_format($this->price+$this->getTaxValue(),2);
}
}

View file

@ -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');
}
/**

View file

@ -10,6 +10,9 @@ use Illuminate\Notifications\Notification;
class ConfirmPaymentNotification extends Notification implements ShouldQueue
{
//THIS IS BASICALLY NOT USED ANYMORE WITH INVOICENOTIFICATION IN PLACE
use Queueable;
private Payment $payment;
@ -44,7 +47,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 +60,8 @@ class ConfirmPaymentNotification extends Notification implements ShouldQueue
public function toArray($notifiable)
{
return [
'title' => "Payment Confirmed!",
'content' => "Payment Confirmed!",
'title' => __("Payment Confirmed!"),
'content' => __("Payment Confirmed!"),
];
}
}

View file

@ -0,0 +1,69 @@
<?php
namespace App\Notifications;
use App\Models\Payment;
use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
use LaravelDaily\Invoices\Invoice;
class InvoiceNotification extends Notification
{
use Queueable;
/**
* @var invoice
* * @var invoice
* * @var invoice
*/
private $invoice;
private $user;
private $payment;
/**
* Create a new notification instance.
*
* @param Invoice $invoice
*/
public function __construct(Invoice $invoice, User $user, Payment $payment)
{
$this->invoice = $invoice;
$this->user = $user;
$this->payment = $payment;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
* @return MailMessage
*/
public function toMail($notifiable)
{
return (new MailMessage)
->subject(__('Your Payment was successful!'))
->greeting(__('Hello').',')
->line(__("Your payment was processed successfully!"))
->line(__('Status').': ' . $this->payment->status)
->line(__('Price').': ' . $this->payment->formatToCurrency($this->payment->total_price))
->line(__('Type').': ' . $this->payment->type)
->line(__('Amount').': ' . $this->payment->amount)
->line(__('Balance').': ' . number_format($this->user->credits,2))
->line(__('User ID').': ' . $this->payment->user_id)
->attach(storage_path('app/invoice/' . $this->user->id . '/' . now()->format('Y') . '/' . $this->invoice->filename));
}
}

View file

@ -46,7 +46,7 @@ class ServerCreationError extends Notification
public function toArray($notifiable)
{
return [
'title' => "Server Creation Error",
'title' => __("Server Creation Error"),
'content' => "
<p>Hello <strong>{$this->server->User->name}</strong>, An unexpected error has occurred...</p>
<p>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!</p>

View file

@ -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' => "
<h5>Your servers have been suspended!</h5>
<p>To automatically re-enable your server/s, you need to purchase more credits.</p>
<p>If you have any questions please let us know.</p>
<p>Regards,<br />" . config('app.name', 'Laravel') . "</p>
<h5>". __('Your servers have been suspended!')."</h5>
<p>". __("To automatically re-enable your server/s, you need to purchase more credits.")."</p>
<p>". __('If you have any questions please let us know.')."</p>
<p>". __('Regards').",<br />" . config('app.name', 'Laravel') . "</p>
",
];
}

View file

@ -66,7 +66,7 @@ class WelcomeMessage extends Notification implements ShouldQueue
public function toArray($notifiable)
{
return [
'title' => "Getting started!",
'title' => __("Getting started!"),
'content' => "
<p>Hello <strong>{$this->user->name}</strong>, Welcome to our dashboard!</p>
<h5>Verification</h5>

View file

@ -19,6 +19,7 @@
"laravel/framework": "^8.12",
"laravel/tinker": "^2.5",
"laravel/ui": "^3.2",
"laraveldaily/laravel-invoices": "^2.0",
"paypal/paypal-checkout-sdk": "^1.0",
"paypal/rest-api-sdk-php": "^1.14",
"socialiteproviders/discord": "^4.1",

337
composer.lock generated
View file

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "500346cc4a4a83b162e07bb0071d1602",
"content-hash": "51c5797dc1629fe1f42b1fdc91c6e5d8",
"packages": [
{
"name": "asm89/stack-cors",
@ -62,6 +62,72 @@
},
"time": "2021-03-11T06:42:03+00:00"
},
{
"name": "barryvdh/laravel-dompdf",
"version": "v0.9.0",
"source": {
"type": "git",
"url": "https://github.com/barryvdh/laravel-dompdf.git",
"reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/5b99e1f94157d74e450f4c97e8444fcaffa2144b",
"reference": "5b99e1f94157d74e450f4c97e8444fcaffa2144b",
"shasum": ""
},
"require": {
"dompdf/dompdf": "^1",
"illuminate/support": "^5.5|^6|^7|^8",
"php": "^7.1 || ^8.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "0.9-dev"
},
"laravel": {
"providers": [
"Barryvdh\\DomPDF\\ServiceProvider"
],
"aliases": {
"PDF": "Barryvdh\\DomPDF\\Facade"
}
}
},
"autoload": {
"psr-4": {
"Barryvdh\\DomPDF\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Barry vd. Heuvel",
"email": "barryvdh@gmail.com"
}
],
"description": "A DOMPDF Wrapper for Laravel",
"keywords": [
"dompdf",
"laravel",
"pdf"
],
"support": {
"issues": "https://github.com/barryvdh/laravel-dompdf/issues",
"source": "https://github.com/barryvdh/laravel-dompdf/tree/v0.9.0"
},
"funding": [
{
"url": "https://github.com/barryvdh",
"type": "github"
}
],
"time": "2020-12-27T12:05:53+00:00"
},
{
"name": "biscolab/laravel-recaptcha",
"version": "5.0.1",
@ -780,6 +846,73 @@
],
"time": "2020-05-25T17:44:05+00:00"
},
{
"name": "dompdf/dompdf",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/dompdf/dompdf.git",
"reference": "de4aad040737a89fae2129cdeb0f79c45513128d"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/dompdf/dompdf/zipball/de4aad040737a89fae2129cdeb0f79c45513128d",
"reference": "de4aad040737a89fae2129cdeb0f79c45513128d",
"shasum": ""
},
"require": {
"ext-dom": "*",
"ext-mbstring": "*",
"phenx/php-font-lib": "^0.5.2",
"phenx/php-svg-lib": "^0.3.3",
"php": "^7.1 || ^8.0"
},
"require-dev": {
"mockery/mockery": "^1.3",
"phpunit/phpunit": "^7.5 || ^8 || ^9",
"squizlabs/php_codesniffer": "^3.5"
},
"suggest": {
"ext-gd": "Needed to process images",
"ext-gmagick": "Improves image processing performance",
"ext-imagick": "Improves image processing performance",
"ext-zlib": "Needed for pdf stream compression"
},
"type": "library",
"autoload": {
"psr-4": {
"Dompdf\\": "src/"
},
"classmap": [
"lib/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-2.1"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
},
{
"name": "Brian Sweeney",
"email": "eclecticgeek@gmail.com"
},
{
"name": "Gabriel Bull",
"email": "me@gabrielbull.com"
}
],
"description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter",
"homepage": "https://github.com/dompdf/dompdf",
"support": {
"issues": "https://github.com/dompdf/dompdf/issues",
"source": "https://github.com/dompdf/dompdf/tree/v1.1.1"
},
"time": "2021-11-24T00:45:04+00:00"
},
{
"name": "dragonmantank/cron-expression",
"version": "v3.1.0",
@ -1763,6 +1896,71 @@
},
"time": "2021-05-25T16:45:33+00:00"
},
{
"name": "laraveldaily/laravel-invoices",
"version": "2.2.0",
"source": {
"type": "git",
"url": "https://github.com/LaravelDaily/laravel-invoices.git",
"reference": "88c472680951acc57ccf179711add7d8dda36821"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/LaravelDaily/laravel-invoices/zipball/88c472680951acc57ccf179711add7d8dda36821",
"reference": "88c472680951acc57ccf179711add7d8dda36821",
"shasum": ""
},
"require": {
"barryvdh/laravel-dompdf": "^0.9",
"illuminate/http": "^5.5|^6|^7|^8",
"illuminate/support": "^5.5|^6|^7|^8",
"php": ">=7.3"
},
"require-dev": {
"phpunit/phpunit": "^8.4",
"symfony/var-dumper": "^5.0"
},
"type": "library",
"extra": {
"laravel": {
"providers": [
"LaravelDaily\\Invoices\\InvoiceServiceProvider"
],
"aliases": {
"Invoice": "LaravelDaily\\Invoices\\Facades\\Invoice"
}
}
},
"autoload": {
"psr-4": {
"LaravelDaily\\Invoices\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"GPL-3.0-only"
],
"authors": [
{
"name": "David Lun",
"email": "mysticcode@gmail.com",
"homepage": "https://lun.lt",
"role": "Developer"
}
],
"description": "Missing invoices for Laravel",
"homepage": "https://github.com/LaravelDaily/laravel-invoices",
"keywords": [
"invoice",
"invoices",
"laravel"
],
"support": {
"issues": "https://github.com/LaravelDaily/laravel-invoices/issues",
"source": "https://github.com/LaravelDaily/laravel-invoices/tree/2.2.0"
},
"time": "2021-09-29T08:31:40+00:00"
},
{
"name": "league/commonmark",
"version": "1.6.2",
@ -2601,6 +2799,92 @@
"abandoned": true,
"time": "2019-01-04T20:04:25+00:00"
},
{
"name": "phenx/php-font-lib",
"version": "0.5.2",
"source": {
"type": "git",
"url": "https://github.com/PhenX/php-font-lib.git",
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PhenX/php-font-lib/zipball/ca6ad461f032145fff5971b5985e5af9e7fa88d8",
"reference": "ca6ad461f032145fff5971b5985e5af9e7fa88d8",
"shasum": ""
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5 || ^6 || ^7"
},
"type": "library",
"autoload": {
"psr-4": {
"FontLib\\": "src/FontLib"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
}
],
"description": "A library to read, parse, export and make subsets of different types of font files.",
"homepage": "https://github.com/PhenX/php-font-lib",
"support": {
"issues": "https://github.com/PhenX/php-font-lib/issues",
"source": "https://github.com/PhenX/php-font-lib/tree/0.5.2"
},
"time": "2020-03-08T15:31:32+00:00"
},
{
"name": "phenx/php-svg-lib",
"version": "0.3.4",
"source": {
"type": "git",
"url": "https://github.com/PhenX/php-svg-lib.git",
"reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/PhenX/php-svg-lib/zipball/f627771eb854aa7f45f80add0f23c6c4d67ea0f2",
"reference": "f627771eb854aa7f45f80add0f23c6c4d67ea0f2",
"shasum": ""
},
"require": {
"php": "^7.4 || ^8.0",
"sabberworm/php-css-parser": "^8.3"
},
"require-dev": {
"phpunit/phpunit": "^9.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Svg\\": "src/Svg"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"LGPL-3.0"
],
"authors": [
{
"name": "Fabien Ménager",
"email": "fabien.menager@gmail.com"
}
],
"description": "A library to read, parse and export to PDF SVG files.",
"homepage": "https://github.com/PhenX/php-svg-lib",
"support": {
"issues": "https://github.com/PhenX/php-svg-lib/issues",
"source": "https://github.com/PhenX/php-svg-lib/tree/0.3.4"
},
"time": "2021-10-18T02:13:32+00:00"
},
{
"name": "phpoption/phpoption",
"version": "1.7.5",
@ -3262,6 +3546,55 @@
],
"time": "2020-08-18T17:17:46+00:00"
},
{
"name": "sabberworm/php-css-parser",
"version": "8.3.1",
"source": {
"type": "git",
"url": "https://github.com/sabberworm/PHP-CSS-Parser.git",
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sabberworm/PHP-CSS-Parser/zipball/d217848e1396ef962fb1997cf3e2421acba7f796",
"reference": "d217848e1396ef962fb1997cf3e2421acba7f796",
"shasum": ""
},
"require": {
"php": ">=5.3.2"
},
"require-dev": {
"codacy/coverage": "^1.4",
"phpunit/phpunit": "~4.8"
},
"type": "library",
"autoload": {
"psr-0": {
"Sabberworm\\CSS": "lib/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Raphael Schweikert"
}
],
"description": "Parser for CSS Files written in PHP",
"homepage": "http://www.sabberworm.com/blog/2010/6/10/php-css-parser",
"keywords": [
"css",
"parser",
"stylesheet"
],
"support": {
"issues": "https://github.com/sabberworm/PHP-CSS-Parser/issues",
"source": "https://github.com/sabberworm/PHP-CSS-Parser/tree/8.3.1"
},
"time": "2020-06-01T09:10:00+00:00"
},
{
"name": "socialiteproviders/discord",
"version": "4.1.1",
@ -8931,5 +9264,5 @@
"ext-intl": "*"
},
"platform-dev": [],
"plugin-api-version": "2.0.0"
"plugin-api-version": "2.1.0"
}

View file

@ -81,7 +81,22 @@ 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'),
/*
|--------------------------------------------------------------------------

97
config/invoices.php Normal file
View file

@ -0,0 +1,97 @@
<?php
return [
'date' => [
/*
* Carbon date format
*/
'format' => 'Y-m-d',
/*
* Due date for payment since invoice's date.
*/
'pay_until_days' => 7,
],
'serial_number' => [
'series' => 'AA',
'sequence' => 1,
/*
* Sequence will be padded accordingly, for ex. 00001
*/
'sequence_padding' => 5,
'delimiter' => '.',
/*
* Supported tags {SERIES}, {DELIMITER}, {SEQUENCE}
* Example: AA.00001
*/
'format' => '{SERIES}{DELIMITER}{SEQUENCE}',
],
'currency' => [
'code' => 'eur',
/*
* Usually cents
* Used when spelling out the amount and if your currency has decimals.
*
* Example: Amount in words: Eight hundred fifty thousand sixty-eight EUR and fifteen ct.
*/
'fraction' => 'ct.',
'symbol' => '€',
/*
* Example: 19.00
*/
'decimals' => 2,
/*
* Example: 1.99
*/
'decimal_point' => '.',
/*
* By default empty.
* Example: 1,999.00
*/
'thousands_separator' => '',
/*
* Supported tags {VALUE}, {SYMBOL}, {CODE}
* Example: 1.99
*/
'format' => '{VALUE} {SYMBOL}',
],
'paper' => [
// A4 = 210 mm x 297 mm = 595 pt x 842 pt
'size' => 'a4',
'orientation' => 'portrait',
],
'disk' => 'local',
'seller' => [
/*
* Class used in templates via $invoice->seller
*
* Must implement LaravelDaily\Invoices\Contracts\PartyContract
* or extend LaravelDaily\Invoices\Classes\Party
*/
'class' => \LaravelDaily\Invoices\Classes\Seller::class,
/*
* Default attributes for Seller::class
*/
'attributes' => [
'name' => 'Towne, Smith and Ebert',
'address' => '89982 Pfeffer Falls Damianstad, CO 66972-8160',
'code' => '41-1985581',
'vat' => '123456789',
'phone' => '760-355-3930',
'custom_fields' => [
/*
* Custom attributes for Seller::class
*
* Used to display additional info on Seller section in invoice
* attribute => value
*/
'SWIFT' => 'BANK101',
],
],
],
];

View file

@ -0,0 +1,72 @@
<?php
return [
/*
|--------------------------------------------------------------------------
| Routes group config
|--------------------------------------------------------------------------
|
| The default group settings for the elFinder routes.
|
*/
'route' => [
'prefix' => 'translations',
'middleware' => [
'web',
'auth',
],
],
/**
* Enable deletion of translations
*
* @type boolean
*/
'delete_enabled' => true,
/**
* Exclude specific groups from Laravel Translation Manager.
* This is useful if, for example, you want to avoid editing the official Laravel language files.
*
* @type array
*
* array(
* 'pagination',
* 'reminders',
* 'validation',
* )
*/
'exclude_groups' => [],
/**
* Exclude specific languages from Laravel Translation Manager.
*
* @type array
*
* array(
* 'fr',
* 'de',
* )
*/
'exclude_langs' => [],
/**
* Export translations with keys output alphabetically.
*/
'sort_keys' => false,
'trans_functions' => [
'trans',
'trans_choice',
'Lang::get',
'Lang::choice',
'Lang::trans',
'Lang::transChoice',
'@lang',
'@choice',
'__',
'$trans.get',
],
];

View file

View file

@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateTranslationsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('ltm_translations', function(Blueprint $table)
{
$table->collation = 'utf8mb4_bin';
$table->bigIncrements('id');
$table->integer('status')->default(0);
$table->string('locale');
$table->string('group');
$table->text('key');
$table->text('value')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('ltm_translations');
}
}

View file

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateInvoices extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('invoices', function (Blueprint $table) {
$table->id();
$table->string('invoice_name');
$table->string('invoice_user');
$table->string('payment_id');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('invoices');
}
}

View file

@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class InvoiceSettings extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('invoice_settings', function (Blueprint $table) {
$table->id();
$table->string('company_name')->nullable();
$table->string('company_adress')->nullable();
$table->string('company_phone')->nullable();
$table->string('company_vat')->nullable();
$table->string('company_mail')->nullable();
$table->string('company_web')->nullable()->default(env("APP_URL",""));
$table->string('invoice_prefix')->nullable();
$table->timestamps();
});
DB::table('invoice_settings')->insert(
array(
'company_name' => env("APP_NAME","MyCompany"),
'company_web' => env("APP_URL",""),
'invoice_prefix' => "INV"
)
);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('invoice_settings');
}
}

View file

@ -3,6 +3,7 @@
namespace Database\Seeders;
use Database\Seeders\Seeds\ConfigurationSeeder;
use Database\Seeders\Seeds\InvoiceSettingsSeeder;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Tyto přihlašovací údaje neodpovídají žadnému záznamu.',
'password' => 'Zadané heslo je neplatné.',
'throttle' => 'Příliš mnoho pokusů o přihlášení. Zkuste to prosím znovu za :seconds sekund.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'další &raquo;',
'previous' => '&laquo; předchozí',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'Heslo bylo obnoveno!',
'sent' => 'E-mail s instrukcemi k obnovení hesla byl odeslán!',
'throttled' => 'Počkejte prosím a zkuste to znovu.',
'token' => 'Klíč pro obnovu hesla je nesprávný.',
'user' => 'Nepodařilo se najít uživatele s touto e-mailovou adresou.',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => ':attribute musí být přijat.',
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
'active_url' => ':attribute není platnou URL adresou.',
'after' => ':attribute musí být datum po :date.',
'after_or_equal' => ':attribute musí být datum :date nebo pozdější.',
'alpha' => ':attribute může obsahovat pouze písmena.',
'alpha_dash' => ':attribute může obsahovat pouze písmena, číslice, pomlčky a podtržítka. České znaky (á, é, í, ó, ú, ů, ž, š, č, ř, ď, ť, ň) nejsou podporovány.',
'alpha_num' => ':attribute může obsahovat pouze písmena a číslice.',
'array' => ':attribute musí být pole.',
'attached' => 'Tento :attribute je již připojen.',
'before' => ':attribute musí být datum před :date.',
'before_or_equal' => 'Datum :attribute musí být před nebo rovno :date.',
'between' => [
'array' => ':attribute musí obsahovat nejméně :min a nesmí obsahovat více než :max prvků.',
'file' => ':attribute musí být větší než :min a menší než :max Kilobytů.',
'numeric' => ':attribute musí být hodnota mezi :min a :max.',
'string' => ':attribute musí být delší než :min a kratší než :max znaků.',
],
'boolean' => ':attribute musí být true nebo false',
'confirmed' => ':attribute nesouhlasí.',
'current_password' => 'Současné heslo není spravné.',
'date' => ':attribute musí být platné datum.',
'date_equals' => ':attribute musí být datum shodné s :date.',
'date_format' => ':attribute není platný formát data podle :format.',
'declined' => 'The :attribute must be declined.',
'declined_if' => 'The :attribute must be declined when :other is :value.',
'different' => ':attribute a :other se musí lišit.',
'digits' => ':attribute musí být :digits pozic dlouhé.',
'digits_between' => ':attribute musí být dlouhé nejméně :min a nejvíce :max pozic.',
'dimensions' => ':attribute má neplatné rozměry.',
'distinct' => ':attribute má duplicitní hodnotu.',
'email' => ':attribute není platný formát.',
'ends_with' => ':attribute musí končit jednou z následujících hodnot: :values',
'exists' => 'Zvolená hodnota pro :attribute není platná.',
'file' => ':attribute musí být soubor.',
'filled' => ':attribute musí být vyplněno.',
'gt' => [
'array' => 'Pole :attribute musí mít více prvků než :value.',
'file' => 'Velikost souboru :attribute musí být větší než :value kB.',
'numeric' => ':attribute musí být větší než :value.',
'string' => 'Počet znaků :attribute musí být větší :value.',
],
'gte' => [
'array' => 'Pole :attribute musí mít :value prvků nebo více.',
'file' => 'Velikost souboru :attribute musí být větší nebo rovno :value kB.',
'numeric' => ':attribute musí být větší nebo rovno :value.',
'string' => 'Počet znaků :attribute musí být větší nebo rovno :value.',
],
'image' => ':attribute musí být obrázek.',
'in' => 'Zvolená hodnota pro :attribute je neplatná.',
'in_array' => ':attribute není obsažen v :other.',
'integer' => ':attribute musí být celé číslo.',
'ip' => ':attribute musí být platnou IP adresou.',
'ipv4' => ':attribute musí být platná IPv4 adresa.',
'ipv6' => ':attribute musí být platná IPv6 adresa.',
'json' => ':attribute musí být platný JSON řetězec.',
'lt' => [
'array' => ':attribute by měl obsahovat méně než :value položek.',
'file' => 'Velikost souboru :attribute musí být menší než :value kB.',
'numeric' => ':attribute musí být menší než :value.',
'string' => ':attribute musí obsahovat méně než :value znaků.',
],
'lte' => [
'array' => ':attribute by měl obsahovat maximálně :value položek.',
'file' => 'Velikost souboru :attribute musí být menší než :value kB.',
'numeric' => ':attribute musí být menší nebo rovno než :value.',
'string' => ':attribute nesmí být delší než :value znaků.',
],
'max' => [
'array' => ':attribute nemůže obsahovat více než :max prvků.',
'file' => 'Velikost souboru :attribute musí být menší než :value kB.',
'numeric' => ':attribute nemůže být větší než :max.',
'string' => ':attribute nemůže být delší než :max znaků.',
],
'mimes' => ':attribute musí být jeden z následujících datových typů :values.',
'mimetypes' => ':attribute musí být jeden z následujících datových typů :values.',
'min' => [
'array' => ':attribute musí obsahovat více než :min prvků.',
'file' => ':attribute musí být větší než :min kB.',
'numeric' => ':attribute musí být větší než :min.',
'string' => ':attribute musí být delší než :min znaků.',
],
'multiple_of' => ':attribute musí být násobkem :value',
'not_in' => 'Zvolená hodnota pro :attribute je neplatná.',
'not_regex' => ':attribute musí být regulární výraz.',
'numeric' => ':attribute musí být číslo.',
'password' => 'Heslo je nesprávné.',
'present' => ':attribute musí být vyplněno.',
'prohibited' => 'Pole :attribute je zakázáno.',
'prohibited_if' => 'Pole :attribute je zakázáno, když je :other :value.',
'prohibited_unless' => 'Pole :attribute je zakázáno, pokud není rok :other v roce :values.',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => ':attribute nemá správný formát.',
'relatable' => 'Tento :attribute nemusí být spojen s tímto zdrojem.',
'required' => ':attribute musí být vyplněno.',
'required_if' => ':attribute musí být vyplněno pokud :other je :value.',
'required_unless' => ':attribute musí být vyplněno dokud :other je v :values.',
'required_with' => ':attribute musí být vyplněno pokud :values je vyplněno.',
'required_with_all' => ':attribute musí být vyplněno pokud :values je zvoleno.',
'required_without' => ':attribute musí být vyplněno pokud :values není vyplněno.',
'required_without_all' => ':attribute musí být vyplněno pokud není žádné z :values zvoleno.',
'same' => ':attribute a :other se musí shodovat.',
'size' => [
'array' => ':attribute musí obsahovat právě :size prvků.',
'file' => ':attribute musí mít přesně :size Kilobytů.',
'numeric' => ':attribute musí být přesně :size.',
'string' => ':attribute musí být přesně :size znaků dlouhý.',
],
'starts_with' => ':attribute musí začínat jednou z následujících hodnot: :values',
'string' => ':attribute musí být řetězec znaků.',
'timezone' => ':attribute musí být platná časová zóna.',
'unique' => ':attribute musí být unikátní.',
'uploaded' => 'Nahrávání :attribute se nezdařilo.',
'url' => 'Formát :attribute je neplatný.',
'uuid' => ':attribute musí být validní UUID.',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
];

328
resources/lang/de.json Normal file
View file

@ -0,0 +1,328 @@
{
"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",
"Purchase": "Kaufen",
"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 PayPals 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",
"Languages": "Sprachen",
"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 address": "Firmenadresse",
"Enter your companys phone number": "Telefonnummer",
"Enter your companys VAT id": "SteuerID Nummer",
"Enter your companys email address": "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",
"Amount due": "Zahlung fällig am",
"Your Payment was successful!": "Deine Zahlung ist erfolgreich bei uns eingegangen!",
"Hello": "Hallo",
"Your payment was processed successfully!": "Deine Zahlung wurde erfolgreich verarbeitet!"
}

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => '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.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Weiter &raquo;',
'previous' => '&laquo; Zurück',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => '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.',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => ':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',
],
],
];

371
resources/lang/en.json Normal file
View file

@ -0,0 +1,371 @@
{
"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",
"Purchase": "Purchase",
"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 PayPals client id and secret.": "To configure PayPal, head to the .env and add your PayPals 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.":"You are only one step a way from your new password, recover your password now.",
"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",
"Languages": "Languages",
"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!",
"Not enough" : "Not enough",
"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 address": "Enter your companys address",
"Enter your companys phone number": "Enter your companys phone number",
"Enter your companys VAT id": "Enter your companys VAT id",
"Enter your companys email address": "Enter your companys email address",
"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",
"Amount due": "Amount due",
"Your Payment was successful!": "Your Payment was successful!",
"Hello":"Hello",
"Your payment was processed successfully!":"Your payment was processed successfully!"
}

328
resources/lang/es.json Normal file
View file

@ -0,0 +1,328 @@
{
"Activity Logs": "Registros de Actividad",
"No recent activity from cronjobs": "No hay actividad reciente de cronjobs",
"Check the docs for it here": "Consulte la documentación aquí",
"Are cronjobs running?": "¿Se están ejecutando los cronjobs?",
"Causer": "Causante",
"Description": "Descripción",
"Created at": "Creado a",
"Edit Configuration": "Editar Configuración",
"Text Field": "Campo de texto",
"Cancel": "Cancelar",
"Close": "Cerrar",
"Save": "Guardar",
"true": "verdadero",
"false": "falso",
"Configurations": "Configuración",
"Dashboard": "Panel de control",
"Key": "Clave",
"Value": "Valor",
"Type": "Tipo",
"Admin Overview": "Vista de Administrador",
"Support server": "Servidor de Ayuda",
"Documentation": "Documentación",
"Github": "Github",
"Support ControlPanel": "Apoya ControlPanel",
"Servers": "Servidores",
"Users": "Usuarios",
"Total": "Total",
"Payments": "Pagos",
"Pterodactyl": "Pterodactyl",
"Sync": "Sincronizar Ahora",
"Resources": "Recursos",
"Count": "Cuenta",
"Locations": "Localizaciones",
"Node": "Nodo",
"Nodes": "Nodos",
"Nests": "Nidos",
"Eggs": "Huevos",
"Last updated :date": "Ultima vez actualizado :date",
"Purchase": "Compra",
"ID": "ID",
"User": "Usuario",
"Amount": "Cantidad",
"Product Price": "Precio del producto",
"Tax": "Impuesto",
"Total Price": "Precio Total",
"Payment_ID": "Payment_ID",
"Payer_ID": "Payer_ID",
"Product": "Producto",
"Products": "Productos",
"Create": "Crear",
"Product Details": "Detalles del Producto",
"Server Details": "Detalles del Servidor",
"Product Linking": "Vinculación de Productos",
"Name": "Nombre",
"Price in": "Precio en",
"Memory": "Ram",
"Cpu": "Cpu",
"Swap": "Swap",
"Disk": "Disco",
"Minimum": "Mínimo",
"IO": "IO",
"Databases": "Bases de Datos",
"Database": "Base de Datos",
"Backups": "Copias de Seguridad",
"Allocations": "Asignaciones",
"Disabled": "Deshabilitado",
"Submit": "Enviar",
"This product will only be available for these nodes": "Este producto solo está disponible para estos nodos",
"This product will only be available for these eggs": "Este producto solo esta disponible para estos huevos",
"Will hide this option from being selected": "Ocultará esta opción para que no se seleccione",
"Link your products to nodes and eggs to create dynamic pricing for each option": "Vincula tus productos a nodos y huevos para crear precios dinámicos para cada opción",
"Setting to -1 will use the value from configuration.": "Si se establece en -1, se utilizará el valor de la configuración.",
"This is what the users sees": "Esto es lo que ven los usuarios",
"Edit": "Editar",
"Price": "Precio",
"Are you sure you wish to delete?": "¿Está seguro que desea borrarlo?",
"Create new": "Crear nuevo",
"Show": "Mostrar",
"Updated at": "Última Actualización",
"Suspended at": "Suspendido en",
"Settings": "Configuraciones",
"Dashboard icons": "Iconos del panel",
"Select panel icon": "Seleccionar icono de panel",
"Select panel favicon": "Seleccionar favicon del panel",
"Token": "Token",
"Last used": "Último Uso",
"Store": "Tienda",
"Currency code": "Código de divisa/moneda",
"Checkout the paypal docs to select the appropriate code": "Consulte los documentos de PayPal para seleccionar el código apropiado",
"Quantity": "Cantidad",
"Amount given to the user after purchasing": "Importe dado al usuario después de la compra",
"Display": "Mostrar",
"This is what the user sees at store and checkout": "Esto es lo que ve el usuario en la tienda y al finalizar la compra",
"This is what the user sees at checkout": "Esto es lo que ve el usuario al finalizar la compra",
"Adds 1000 credits to your account": "Agrega 1000 créditos a su cuenta",
"Active": "Activo",
"Paypal is not configured.": "Paypal no esta configurado.",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "Para configurar PayPal, diríjase a .env y agregue la identificación de cliente y el secreto de PayPal.",
"Useful Links": "Enlaces útiles",
"Icon class name": "Nombre de la clase de icono",
"You can find available free icons": "Puedes encontrar iconos gratuitos disponibles",
"Title": "Titulo",
"Link": "Enlace",
"Username": "Nombre de usuario",
"Email": "Email",
"Pterodactly ID": "Pterodactly ID",
"Server Limit": "Limite Servidor",
"Role": "Rol",
"Administrator": "Administrador",
"Client": "Cliente",
"Member": "Miembro",
"New Password": "Nueva Contraseña",
"Confirm Password": "Confirmar Contraseña",
"This ID refers to the user account created on pterodactyls panel.": "Esta ID se refiere a la cuenta de usuario creada en el panel de pterodactyl.",
"Only edit this if you know what youre doing :)": "Edite esto solo si sabe lo que está haciendo :)",
"Verified": "Verificado",
"Last seen": "Visto por ùltima vez",
"Notify": "Notificar",
"All": "Todos",
"Send via": "Enviar vía",
"Content": "Contenido",
"Notifications": "Notificaciones",
"Usage": "Uso",
"Config": "Configuración",
"Vouchers": "Descuentos",
"Voucher details": "Detalles del vale",
"Memo": "Memo",
"Code": "Código",
"Uses": "Usos",
"Expires at": "Expira el",
"Max": "Máx",
"Random": "Aleatorio",
"Status": "Estado",
"Used / Uses": "Usado / Usos",
"Expires": "Expira",
"Please confirm your password before continuing.": "Por favor confirme su contraseña antes de continuar.",
"Password": "Contraseña",
"Forgot Your Password?": "¿Olvidó su contraseña?",
"Sign in to start your session": "Iniciar sesión para comenzar",
"Remember Me": "Recuérdame",
"Sign In": "Iniciar sesión",
"Register a new membership": "Registrar un nuevo miembro",
"You forgot your password? Here you can easily retrieve a new password.": "¿Olvidaste tu contraseña? Aquí puede recuperar fácilmente una nueva contraseña.",
"Request new password": "Solicitar nueva contraseña",
"Login": "Iniciar sesión",
"You are only one step a way from your new password, recover your password now.": "Está a solo un paso de su nueva contraseña, recupere su contraseña ahora.",
"Retype password": "Vuelva a escribir la contraseña",
"Change password": "Cambiar contraseña",
"I already have a membership": "Ya soy miembro",
"Register": "Registrar",
"Verify Your Email Address": "Verifica Tu Email",
"A fresh verification link has been sent to your email address.": "Se ha enviado un nuevo enlace de verificación a su correo electrónico.",
"Before proceeding, please check your email for a verification link.": "Antes de continuar, por favor, confirme su correo electrónico con el enlace de verificación que le fue enviado.",
"If you did not receive the email": "Si no ha recibido el correo electrónico",
"click here to request another": "haga clic aquí para solicitar otro",
"Home": "Inicio",
"Languages": "Idiomas",
"See all Notifications": "Ver todas las notificaciones",
"Profile": "Perfil",
"Log back in": "Volver a iniciar sesión",
"Logout": "Cerrar sesión",
"Administration": "Administración",
"Overview": "Resumen",
"Application API": "Aplicación API",
"Management": "Gestión",
"Other": "Otro",
"Logs": "Logs",
"Redeem code": "Canjear código",
"You have not yet verified your email address": "No has verificado tu correo electrónico",
"Click here to resend verification email": "Haz click aquí para reenviar tu correo electrónico de activación",
"Please contact support If you didnt receive your verification email.": "Contacte con el soporte si no recibió su correo electrónico de verificación.",
"Thank you for your purchase!": "¡Gracias por su compra!",
"Your payment has been confirmed; Your credit balance has been updated.": "Su pago ha sido confirmado; Se actualizó su saldo de crédito.",
"Payment ID": "ID del pago",
"Balance": "Saldo",
"User ID": "ID Usuario",
"Thanks": "Gracias",
"Redeem voucher code": "Canjear código de descuento",
"Redeem": "Canjear",
"All notifications": "Todas las notificaciones",
"Required Email verification!": "¡Se requiere verificación de correo electrónico!",
"Required Discord verification!": "¡Se requiere verificación de Discord!",
"You have not yet verified your discord account": "Aún no has verificado tu cuenta de discord",
"Login with discord": "Acceder con Discord",
"Please contact support If you face any issues.": "Póngase en contacto con soporte si tiene algún problema.",
"Due to system settings you are required to verify your discord account!": "¡Debido a la configuración del sistema, debe verificar su cuenta de discord!",
"It looks like this hasnt been set-up correctly! Please contact support.": "¡Parece que esto no se ha configurado correctamente! Comuníquese con el soporte.",
"Change Password": "Cambiar Contraseña",
"Current Password": "Contraseña Actual",
"Save Changes": "Guardar Cambios",
"Re-Sync Discord": "Re-Sincronizar Discord",
"You are verified!": "¡Estás verificado!",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "Al verificar su cuenta de discord, recibe créditos adicionales y aumenta su limite de cantidad de servidores",
"Server configuration": "Configuración del servidor",
"Error!": "Error!",
"Make sure to link your products to nodes and eggs.": "Asegúrese de vincular sus productos a nodos y huevos.",
"There has to be at least 1 valid product for server creation": "Tiene que haber al menos 1 producto válido para la creación del servidor",
"No products available!": "¡No hay productos disponibles!",
"No nodes have been linked!": "¡No se han vinculado nodos!",
"No nests available!": "¡No hay nidos disponibles!",
"No eggs have been linked!": "¡No se han vinculado huevos!",
"Software / Games": "Software / Juegos",
"Please select software ...": "Seleccione el software ...",
"Specification": "Especificaciones",
"No selection": "Sin selección",
"per month": "al mes",
"Not enough credits!": "¡No tiene suficientes créditos!",
"Please select a configuration ...": "Por favor elija su configuración...",
"No resources found matching current configuration": "No se encontraron recursos que coincidan con la configuración actual",
"No nodes found matching current configuration": "No se encontraron nodos que coincidan con la configuración actual",
"Please select a node ...": "Por favor, seleccione un nodo...",
"Create server": "Crear Servidor",
"Use your servers on our": "Usa tus servidores en nuestro",
"pterodactyl panel": "pterodactyl panel",
"Server limit reached!": "¡Se alcanzó el límite de servidores!",
"Create Server": "Crear Servidor",
"Manage": "Gestionar",
"Delete server": "Eliminar servidor",
"Price per Hour": "Precio por hora",
"Price per Month": "Precio por mes",
"Date": "Fecha",
"To": "A",
"From": "Desde",
"Pending": "Pendiente",
"Subtotal": "Subtotal",
"Submit Payment": "Proceder al Pago",
"Payment Methods": "Métodos de Pago",
"By purchasing this product you agree and accept our terms of service": "Al comprar este producto, está de acuerdo y acepta nuestros términos de servicio",
"There are no store products!": "¡No hay productos de la tienda!",
"The store is not correctly configured!": "¡La tienda no está configurada correctamente!",
"Out of Credits in": "Sin créditos en",
"days": "días",
"hours": "horas",
"You ran out of Credits": "Te has quedado sin créditos",
"Profile updated": "Perfil actualizado",
"You are required to verify your email address before you can create a server.": "Debe verificar su dirección de correo electrónico antes de poder crear un servidor.",
"You are required to link your discord account before you can create a server.": "Debe vincular su cuenta de discord antes de poder crear un servidor.",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "No se encontraron asignaciones que satisfagan los requisitos para la implementación automática en este nodo.",
"Server removed": "Servidor eliminado",
"Server created": "Servidor creado",
"An exception has occurred while trying to remove a resource \"": "Se produjo una excepción al intentar eliminar un recurso \"",
"You are required to verify your email address before you can purchase credits.": "Debe verificar su dirección de correo electrónico antes de poder comprar créditos.",
"You are required to link your discord account before you can purchase ": "Debes vincular tu cuenta de discord antes de poder comprar ",
"Warning!": "¡Advertencia!",
"api key created!": "¡API Key creada!",
"api key updated!": "¡API Key actualizada!",
"api key has been removed!": "¡La API Key a sido eliminada!",
"configuration has been updated!": "¡La configuración ha sido actualizada!",
"Pterodactyl synced": "Pterodactyl sincronizado",
"Your credit balance has been increased!": "¡Su saldo de crédito ha aumentado!",
"Payment was Canceled": "Pago Cancelado",
"Store item has been created!": "¡Se ha creado el artículo en la tienda!",
"Store item has been updated!": "¡El artículo de la tienda ha sido actualizado!",
"Product has been updated!": "¡El producto ha sido actualizado!",
"Store item has been removed!": "¡El artículo de la tienda ha sido eliminado!",
"Product has been created!": "¡El producto ha sido creado!",
"Product has been removed!": "¡El producto ha sido eliminado!",
"Server has been updated!": "¡El servidor ha sido actualizado!",
"Icons updated!": "¡Iconos actualizados!",
"link has been created!": "¡Se ha creado el enlace!",
"link has been updated!": "¡El enlace ha sido actualizado!",
"user has been removed!": "¡El usuario ha sido eliminado!",
"Notification sent!": "¡Notificación enviada!",
"User has been updated!": "¡El usuario ha sido actualizado!",
"User does not exists on pterodactyl's panel": "El usuario no existe en el panel pterodactyl",
"voucher has been created!": "¡Se a creado un cupón!",
"voucher has been updated!": "¡El cupón ha sido actualizado!",
"voucher has been removed!": "¡El cupón a sido eliminado!",
"This voucher has reached the maximum amount of uses": "Este cupón ha alcanzado la cantidad máxima de usos",
"This voucher has expired": "Este cupón a expirado",
"You already redeemed this voucher code": "Ya has usado este cupón",
"You can't redeem this voucher because you would exceed the limit of ": "No puede canjear este cupón porque excedería el límite de ",
"have been added to your balance!": "se han añadido a tu saldo!",
"Invoice": "Factura",
"Serial No.": "Nº Serie.",
"Invoice date": "Fecha de Factura",
"Seller": "Vendedor",
"Buyer": "Comprador",
"Address": "Dirección",
"VAT code": "Código de IVA",
"Phone": "Teléfono",
"Units": "Unidades",
"Qty": "Cantidad",
"Discount": "Descuento",
"Sub total": "Subtotal",
"Total discount": "Descuento total",
"Taxable amount": "Base imponible",
"Total taxes": "Total de impuestos",
"Tax rate": "Tasa de impuestos",
"Total amount": "Cantidad total",
"Please pay until": "Por favor pague hasta",
"Amount in words": "Cantidad en palabras",
"Notes": "Notas",
"Shipping": "Envío",
"Paid": "Pagado",
"Due:": "Vencimiento:",
"Invoice Settings": "Configuración de facturación",
"Download all Invoices": "Descargar todas las facturas",
"Enter your companys name": "Introduce el nombre de tu empresa",
"Enter your companys address": "Ingrese la dirección de su empresa",
"Enter your companys phone number": "Ingrese el número de teléfono de su empresa",
"Enter your companys VAT id": "Ingrese el ID de IVA de su empresa",
"Enter your companys email address": "Ingrese la dirección de correo electrónico de su empresa",
"Enter your companys website": "Ingrese el sitio web de su empresa",
"Enter your custom invoice prefix": "Ingrese su prefijo de factura personalizado",
"Select Invoice Logo": "Seleccione el logotipo de la factura",
"Payment Confirmation": "Confirmación de Pago",
"Payment Confirmed!": "¡Pago Confirmado!",
"Server Creation Error": "Error de creación del servidor",
"Your servers have been suspended!": "¡Sus servidores han sido suspendidos!",
"To automatically re-enable your server/s, you need to purchase more credits.": "Para volver a habilitar automáticamente sus servidores, debe comprar más créditos.",
"Purchase credits": "Comprar Créditos",
"If you have any questions please let us know.": "Si tienes más preguntas, por favor háznoslas saber.",
"Regards": "Atentamente",
"Getting started!": "¡Empezando!",
"EXPIRED": "CADUCADO",
"VALID": "VÁLIDO",
"Unsuspend": "Quitar suspensión",
"Suspend": "Suspender",
"Delete": "Eliminar",
"Login as User": "Iniciar sesión como usuario",
"Clone": "Clonar",
"Amount due": "Importe a pagar",
"Your Payment was successful!": "¡El pago se ha realizado correctamente!",
"Hello": "Hola",
"Your payment was processed successfully!": "¡Su pago se procesó correctamente!"
}

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Estas credenciales no coinciden con nuestros registros.',
'password' => 'La contraseña ingresada no es correcta.',
'throttle' => 'Demasiados intentos de acceso. Por favor intente nuevamente en :seconds segundos.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Siguiente &raquo;',
'previous' => '&laquo; Anterior',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => '¡Su contraseña ha sido restablecida!',
'sent' => '¡Le hemos enviado por correo electrónico el enlace para restablecer su contraseña!',
'throttled' => 'Por favor espere antes de intentar de nuevo.',
'token' => 'El token de restablecimiento de contraseña es inválido.',
'user' => 'No encontramos ningún usuario con ese correo electrónico.',
];

View file

@ -0,0 +1,138 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => ':attribute debe ser aceptado.',
'accepted_if' => ':attribute debe ser aceptado cuando :other sea :value.',
'active_url' => ':attribute no es una URL válida.',
'after' => ':attribute debe ser una fecha posterior a :date.',
'after_or_equal' => ':attribute debe ser una fecha posterior o igual a :date.',
'alpha' => ':attribute sólo debe contener letras.',
'alpha_dash' => ':attribute sólo debe contener letras, números, guiones y guiones bajos.',
'alpha_num' => ':attribute sólo debe contener letras y números.',
'array' => ':attribute debe ser un conjunto.',
'attached' => 'Este :attribute ya se adjuntó.',
'before' => ':attribute debe ser una fecha anterior a :date.',
'before_or_equal' => ':attribute debe ser una fecha anterior o igual a :date.',
'between' => [
'array' => ':attribute tiene que tener entre :min - :max elementos.',
'file' => ':attribute debe pesar entre :min - :max kilobytes.',
'numeric' => ':attribute tiene que estar entre :min - :max.',
'string' => ':attribute tiene que tener entre :min - :max caracteres.',
],
'boolean' => 'El campo :attribute debe tener un valor verdadero o falso.',
'confirmed' => 'La confirmación de :attribute no coincide.',
'current_password' => 'La contraseña es incorrecta.',
'date' => ':attribute no es una fecha válida.',
'date_equals' => ':attribute debe ser una fecha igual a :date.',
'date_format' => ':attribute no corresponde al formato :format.',
'declined' => ':attribute debe ser rechazado.',
'declined_if' => ':attribute debe ser rechazado cuando :other sea :value.',
'different' => ':attribute y :other deben ser diferentes.',
'digits' => ':attribute debe tener :digits dígitos.',
'digits_between' => ':attribute debe tener entre :min y :max dígitos.',
'dimensions' => 'Las dimensiones de la imagen :attribute no son válidas.',
'distinct' => 'El campo :attribute contiene un valor duplicado.',
'email' => ':attribute no es un correo válido.',
'ends_with' => 'El campo :attribute debe finalizar con uno de los siguientes valores: :values',
'exists' => ':attribute es inválido.',
'file' => 'El campo :attribute debe ser un archivo.',
'filled' => 'El campo :attribute es obligatorio.',
'gt' => [
'array' => 'El campo :attribute debe tener más de :value elementos.',
'file' => 'El campo :attribute debe tener más de :value kilobytes.',
'numeric' => 'El campo :attribute debe ser mayor que :value.',
'string' => 'El campo :attribute debe tener más de :value caracteres.',
],
'gte' => [
'array' => 'El campo :attribute debe tener como mínimo :value elementos.',
'file' => 'El campo :attribute debe tener como mínimo :value kilobytes.',
'numeric' => 'El campo :attribute debe ser como mínimo :value.',
'string' => 'El campo :attribute debe tener como mínimo :value caracteres.',
],
'image' => ':attribute debe ser una imagen.',
'in' => ':attribute es inválido.',
'in_array' => 'El campo :attribute no existe en :other.',
'integer' => ':attribute debe ser un número entero.',
'ip' => ':attribute debe ser una dirección IP válida.',
'ipv4' => ':attribute debe ser una dirección IPv4 válida.',
'ipv6' => ':attribute debe ser una dirección IPv6 válida.',
'json' => 'El campo :attribute debe ser una cadena JSON válida.',
'lt' => [
'array' => 'El campo :attribute debe tener menos de :value elementos.',
'file' => 'El campo :attribute debe tener menos de :value kilobytes.',
'numeric' => 'El campo :attribute debe ser menor que :value.',
'string' => 'El campo :attribute debe tener menos de :value caracteres.',
],
'lte' => [
'array' => 'El campo :attribute debe tener como máximo :value elementos.',
'file' => 'El campo :attribute debe tener como máximo :value kilobytes.',
'numeric' => 'El campo :attribute debe ser como máximo :value.',
'string' => 'El campo :attribute debe tener como máximo :value caracteres.',
],
'max' => [
'array' => ':attribute no debe tener más de :max elementos.',
'file' => ':attribute no debe ser mayor que :max kilobytes.',
'numeric' => ':attribute no debe ser mayor que :max.',
'string' => ':attribute no debe ser mayor que :max caracteres.',
],
'mimes' => ':attribute debe ser un archivo con formato: :values.',
'mimetypes' => ':attribute debe ser un archivo con formato: :values.',
'min' => [
'array' => ':attribute debe tener al menos :min elementos.',
'file' => 'El tamaño de :attribute debe ser de al menos :min kilobytes.',
'numeric' => 'El tamaño de :attribute debe ser de al menos :min.',
'string' => ':attribute debe contener al menos :min caracteres.',
],
'multiple_of' => 'El campo :attribute debe ser múltiplo de :value',
'not_in' => ':attribute es inválido.',
'not_regex' => 'El formato del campo :attribute no es válido.',
'numeric' => ':attribute debe ser numérico.',
'password' => 'La contraseña es incorrecta.',
'present' => 'El campo :attribute debe estar presente.',
'prohibited' => 'El campo :attribute está prohibido.',
'prohibited_if' => 'El campo :attribute está prohibido cuando :other es :value.',
'prohibited_unless' => 'El campo :attribute está prohibido a menos que :other sea :values.',
'prohibits' => 'El campo :attribute prohibe que :other esté presente.',
'regex' => 'El formato de :attribute es inválido.',
'relatable' => 'Este :attribute no se puede asociar con este recurso',
'required' => 'El campo :attribute es obligatorio.',
'required_if' => 'El campo :attribute es obligatorio cuando :other es :value.',
'required_unless' => 'El campo :attribute es obligatorio a menos que :other esté en :values.',
'required_with' => 'El campo :attribute es obligatorio cuando :values está presente.',
'required_with_all' => 'El campo :attribute es obligatorio cuando :values están presentes.',
'required_without' => 'El campo :attribute es obligatorio cuando :values no está presente.',
'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values está presente.',
'same' => ':attribute y :other deben coincidir.',
'size' => [
'array' => ':attribute debe contener :size elementos.',
'file' => 'El tamaño de :attribute debe ser :size kilobytes.',
'numeric' => 'El tamaño de :attribute debe ser :size.',
'string' => ':attribute debe contener :size caracteres.',
],
'starts_with' => 'El campo :attribute debe comenzar con uno de los siguientes valores: :values',
'string' => 'El campo :attribute debe ser una cadena de caracteres.',
'timezone' => ':Attribute debe ser una zona horaria válida.',
'unique' => 'El campo :attribute ya ha sido registrado.',
'uploaded' => 'Subir :attribute ha fallado.',
'url' => ':Attribute debe ser una URL válida.',
'uuid' => 'El campo :attribute debe ser un UUID válido.',
'custom' => [
'email' => [
'unique' => 'El :attribute ya ha sido registrado.',
],
'password' => [
'min' => 'La :attribute debe contener más de :min caracteres',
],
],
];

328
resources/lang/fr.json Normal file
View file

@ -0,0 +1,328 @@
{
"Activity Logs": "Journal des activités",
"No recent activity from cronjobs": "Aucune activité récente de cronjobs",
"Check the docs for it here": "Consultez la documentation ici",
"Are cronjobs running?": "Les tâches cron sont-elles en cours d'exécution ?",
"Causer": "Cause",
"Description": "Description",
"Created at": "Créé à",
"Edit Configuration": "Modifier la configuration",
"Text Field": "Champ de texte",
"Cancel": "Annuler",
"Close": "Fermer",
"Save": "Sauvegarder",
"true": "vrai",
"false": "faux",
"Configurations": "Configuration",
"Dashboard": "Tableau de bord",
"Key": "Clé",
"Value": "Valeur",
"Type": "Type",
"Admin Overview": "Vue administrateur",
"Support server": "Serveur de support",
"Documentation": "Documentation",
"Github": "Github",
"Support ControlPanel": "ControlPanel Support",
"Servers": "Serveurs",
"Users": "Utilisateurs",
"Total": "Total",
"Payments": "Paiments",
"Pterodactyl": "Pterodactyl",
"Sync": "Synchroniser",
"Resources": "Ressources",
"Count": "Nombre",
"Locations": "Emplacements",
"Node": "Node",
"Nodes": "Nœuds",
"Nests": "Nids",
"Eggs": "Œufs",
"Last updated :date": "Dernière mise à jour",
"Purchase": "Acheter",
"ID": "IDENTIFIANT",
"User": "Utilisateur",
"Amount": "Montant ",
"Product Price": "Prix du produit",
"Tax": "Tva & autres taxes",
"Total Price": "Prix total",
"Payment_ID": "ID_PAIEMENT",
"Payer_ID": "Payer_ID",
"Product": "Article",
"Products": "Produits",
"Create": "Créer",
"Product Details": "Détails du produit",
"Server Details": "Détails du serveur",
"Product Linking": "Lien du produit",
"Name": "Nom",
"Price in": "Prix en",
"Memory": "Mémoire",
"Cpu": "Cpu",
"Swap": "Swap",
"Disk": "Disque",
"Minimum": "Minimum",
"IO": "IO",
"Databases": "Bases de données",
"Database": "Base de donnée",
"Backups": "Sauvegardes",
"Allocations": "Allocations",
"Disabled": "Désactivé",
"Submit": "Valider",
"This product will only be available for these nodes": "Ce produit est uniquement disponible pour cette node",
"This product will only be available for these eggs": "Ce produit n'est pas disponible pour cet eggs",
"Will hide this option from being selected": "Cachera cette option",
"Link your products to nodes and eggs to create dynamic pricing for each option": "Liez vos produits à des nodes et des eggs pour créer une tarification dynamique pour chaque option",
"Setting to -1 will use the value from configuration.": "Le réglage à -1 utilisera la valeur de la configuration.",
"This is what the users sees": "C'est ce que voient les utilisateurs",
"Edit": "Modifier",
"Price": "Prix",
"Are you sure you wish to delete?": "Êtes-vous sûr de vouloir supprimer ?",
"Create new": "Créer nouveau",
"Show": "Voir",
"Updated at": "Mis à jour le",
"Suspended at": "Suspendus le",
"Settings": "Paramètres",
"Dashboard icons": "Icônes du tableau de bord",
"Select panel icon": "Sélectionner l'icône du panel",
"Select panel favicon": "Sélectionner le favicon du panel",
"Token": "Token",
"Last used": "Dernière utilisation",
"Store": "Boutique",
"Currency code": "Code de devise",
"Checkout the paypal docs to select the appropriate code": "Vérifiez la doc de paypal pour sélectionner le code approprié",
"Quantity": "Quantité",
"Amount given to the user after purchasing": "Montant donné à l'utilisateur après l'achat",
"Display": "Affichage",
"This is what the user sees at store and checkout": "C'est ce que l'utilisateur voit dans la boutique et au moment de payé",
"This is what the user sees at checkout": "C'est ce que l'utilisateur voit dans au moment de payé",
"Adds 1000 credits to your account": "Ajoute 1000 crédits à votre compte",
"Active": "Actif",
"Paypal is not configured.": "Paypal n'est pas configuré.",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "Pour configurer PayPal, rendez-vous sur le fichier .env et ajoutez votre identifiant \"client id\" PayPal et votre \"client id secret\".",
"Useful Links": "Liens Utiles",
"Icon class name": "Nom de la classe de l'icône",
"You can find available free icons": "Vous pouvez trouver des icônes gratuites",
"Title": "Titre",
"Link": "Lien",
"Username": "Nom d'utilisateur",
"Email": "Adresse email",
"Pterodactly ID": "ID Pterodactyl",
"Server Limit": "Limite Serveur",
"Role": "Rôle",
"Administrator": "Administrateur",
"Client": "Client",
"Member": "Membre",
"New Password": "Nouveau mot de passe",
"Confirm Password": "Confirmez le mot de passe",
"This ID refers to the user account created on pterodactyls panel.": "Cet identifiant fait référence au compte utilisateur créé sur le panel Pterodactyl.",
"Only edit this if you know what youre doing :)": "Ne l'activez que si vous savez ce que vous faites.",
"Verified": "Verifié",
"Last seen": "Etait ici",
"Notify": "Notifier",
"All": "Tout",
"Send via": "Envoyer via",
"Content": "Contenu",
"Notifications": "Notifications",
"Usage": "Utilisation",
"Config": "Configuration",
"Vouchers": "Coupons",
"Voucher details": "Détails du bon de réduction",
"Memo": "Mémo",
"Code": "Code",
"Uses": "Utilisations",
"Expires at": "Expire à",
"Max": "Max",
"Random": "Aléatoire",
"Status": "Statut",
"Used / Uses": "Utilisé / Utilisations",
"Expires": "Expire",
"Please confirm your password before continuing.": "Veuillez confirmer votre mot de passe avant de continuer.",
"Password": "Mot de passe",
"Forgot Your Password?": "Mot de passe oublié ?",
"Sign in to start your session": "Identifiez-vous pour commencer votre session",
"Remember Me": "Se souvenir de moi",
"Sign In": "S'enregistrer",
"Register a new membership": "Enregistrer un nouveau membre",
"You forgot your password? Here you can easily retrieve a new password.": "Tu as oublie ton mot de passe ? Ici tu peux facilement le changé.",
"Request new password": "Changer son mot de passe",
"Login": "Connexion",
"You are only one step a way from your new password, recover your password now.": "Vous n'êtes qu'à une étape de votre nouveau mot de passe, récupérez votre mot de passe maintenant.",
"Retype password": "Retapez le mot de passe",
"Change password": "Changer le mot de passe",
"I already have a membership": "Je possède déjà un compte",
"Register": "Inscription",
"Verify Your Email Address": "Vérifiez votre adresse email",
"A fresh verification link has been sent to your email address.": "Un nouveau lien de vérification a été envoyé à votre adresse email.",
"Before proceeding, please check your email for a verification link.": "Avant de continuer, veuillez vérifier vos emails, vous devriez avoir reçu un lien de vérification.",
"If you did not receive the email": "Si vous ne recevez pas l'e-mail",
"click here to request another": "cliquez ici pour faire une nouvelle demande",
"Home": "Accueil",
"Languages": "Langues",
"See all Notifications": "Voir toutes les notifications",
"Profile": "Profil",
"Log back in": "Reconnectez-vous",
"Logout": "Déconnexion",
"Administration": "Administration",
"Overview": "Récapitulatif",
"Application API": "Application API",
"Management": "Gestion",
"Other": "Autre",
"Logs": "Logs",
"Redeem code": "Utiliser un code",
"You have not yet verified your email address": "Vous n'avez pas vérifiez votre adresse mail",
"Click here to resend verification email": "Cliquez ici pour renvoyer un mail de confirmation",
"Please contact support If you didnt receive your verification email.": "Veuillez contacter le support si vous n'avez pas reçu votre e-mail de vérification.",
"Thank you for your purchase!": "Merci pour votre achat !",
"Your payment has been confirmed; Your credit balance has been updated.": "Votre paiement à été accepter, Vos crédits son maintenant disponible sur votre compte.",
"Payment ID": "ID du paiement",
"Balance": "Solde",
"User ID": "ID d'utilisateur",
"Thanks": "Merci",
"Redeem voucher code": "Utiliser le code",
"Redeem": "Appliquer",
"All notifications": "Toutes les notifications",
"Required Email verification!": "La vérification du mail est requise !",
"Required Discord verification!": "Vérification de votre discord est requise !",
"You have not yet verified your discord account": "Vous n'avez pas vérifiez votre compte discord",
"Login with discord": "Se connecter avec Discord",
"Please contact support If you face any issues.": "Veuillez contacter le support si vous rencontrez des problèmes.",
"Due to system settings you are required to verify your discord account!": "En raison des paramètres système, vous devez vérifier votre compte Discord !",
"It looks like this hasnt been set-up correctly! Please contact support.": "Il semble que cela n'a pas été configuré correctement ! Veuillez contacter le support.",
"Change Password": "Modifier le mot de passe",
"Current Password": "Mot de passe actuel",
"Save Changes": "Sauvegarder les modifications",
"Re-Sync Discord": "Resynchroniser Discord",
"You are verified!": "Vous êtes vérifié !",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "En vérifiant votre compte discord, vous recevez des crédits supplémentaires et la possibilité d'avoir plus de serveur",
"Server configuration": "Configuration du serveur",
"Error!": "Erreur !",
"Make sure to link your products to nodes and eggs.": "Assurez-vous de lier vos produits aux nodes aux eggs.",
"There has to be at least 1 valid product for server creation": "Il doit y avoir au moins 1 produit valide pour la création de serveur",
"No products available!": "Aucun produit disponible !",
"No nodes have been linked!": "Aucune node n'a été lié !",
"No nests available!": "Aucun nests disponible !",
"No eggs have been linked!": "Aucun eggs n'a été lié !",
"Software / Games": "Logiciels / Jeux",
"Please select software ...": "Veuillez sélectionner...",
"Specification": "Spécification",
"No selection": "Pas de sélection",
"per month": "par mois",
"Not enough credits!": "Pas assez de crédits !",
"Please select a configuration ...": "Veuillez sélectionner une configuration...",
"No resources found matching current configuration": "Aucune ressources trouvée pour la configuration actuelle",
"No nodes found matching current configuration": "Aucune node trouvée pour la configuration actuelle",
"Please select a node ...": "Veuillez sélectionner une node...",
"Create server": "Créer le serveur",
"Use your servers on our": "Utilisez vos serveurs sur notre",
"pterodactyl panel": "panel pterodactyl",
"Server limit reached!": "Limite de serveurs atteinte !",
"Create Server": "Créer le serveur",
"Manage": "Gérer",
"Delete server": "Supprimer le serveur",
"Price per Hour": "Prix par heure",
"Price per Month": "Prix par Mois",
"Date": "Date",
"To": "À",
"From": "De",
"Pending": "En attente",
"Subtotal": "Sous-total",
"Submit Payment": "Soumettre le Paiement",
"Payment Methods": "Moyens de paiement",
"By purchasing this product you agree and accept our terms of service": "En achetant ce produit, vous acceptez et acceptez nos conditions d'utilisation",
"There are no store products!": "Il n'y a plus de produits dans la boutique !",
"The store is not correctly configured!": "La boutique n'est pas configurée correctement !",
"Out of Credits in": "Hors crédits dans",
"days": "jours",
"hours": "heures",
"You ran out of Credits": "Vous navez plus de crédits",
"Profile updated": "Profil mis à jour",
"You are required to verify your email address before you can create a server.": "Vous devez vérifier votre email avant de pouvoir créer un serveur.",
"You are required to link your discord account before you can create a server.": "Vous devez vérifier votre discord avant de pouvoir créer un serveur.",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "Aucune allocation répondant aux exigences de déploiement automatique sur cette node n'a été trouvée.",
"Server removed": "Serveur supprimé",
"Server created": "Serveur créé",
"An exception has occurred while trying to remove a resource \"": "Une erreur s'est produite en essayant de supprimer la ressource",
"You are required to verify your email address before you can purchase credits.": "Vous devez vérifier votre email avant de pouvoir acheter des crédits.",
"You are required to link your discord account before you can purchase ": "Vous devez vérifier votre compte discord avant de pouvoir acheter des crédits ",
"Warning!": "Attention !",
"api key created!": "La clé Api a été créée !",
"api key updated!": "La clé Api a été modifiée !",
"api key has been removed!": "La clé Api a été supprimée !",
"configuration has been updated!": "la configuration a été mise à jour!",
"Pterodactyl synced": "Synchroniser Pterodactyl",
"Your credit balance has been increased!": "Votre solde a été augmenté !",
"Payment was Canceled": "Le paiement a été annulé",
"Store item has been created!": "L'article de la boutique a été créé !",
"Store item has been updated!": "L'article de la boutique a été mis à jour !",
"Product has been updated!": "Produit mis à jour !",
"Store item has been removed!": "L'article de la boutique a été supprimé !",
"Product has been created!": "Produit a été créé !",
"Product has been removed!": "Produit a été supprimé !",
"Server has been updated!": "Le serveur à été mis à jour !",
"Icons updated!": "Icône mise à jour !",
"link has been created!": "Le lien à été créé !",
"link has been updated!": "Le lien à été mis à jour !",
"user has been removed!": "L'utilisateur a été supprimé !",
"Notification sent!": "Notification envoyée !",
"User has been updated!": "L'utilisateur a été mis à jour !",
"User does not exists on pterodactyl's panel": "L'utilisateur n'existe pas sur le panel pterodactyl",
"voucher has been created!": "Le code à été créé !",
"voucher has been updated!": "Le code à été mis à jour !",
"voucher has been removed!": "Le code à été supprimé !",
"This voucher has reached the maximum amount of uses": "Ce code a atteint le nombre maximum d'utilisations",
"This voucher has expired": "Ce code de réduction a expiré",
"You already redeemed this voucher code": "Vous avez déjà utilisé ce code promotionnel",
"You can't redeem this voucher because you would exceed the limit of ": "Vous ne pouvez pas utiliser ce bon car vous dépasseriez la limite de ",
"have been added to your balance!": "ont été ajoutés à votre solde !",
"Invoice": "Facture",
"Serial No.": "N° de série",
"Invoice date": "Date de la facture",
"Seller": "Vendeur",
"Buyer": "Acheteur",
"Address": "Adresse",
"VAT code": "Taux TVA",
"Phone": "Téléphone",
"Units": "Unités",
"Qty": "Qté",
"Discount": "Remise",
"Sub total": "Sous-total",
"Total discount": "Total des réductions",
"Taxable amount": "Montant taxable",
"Total taxes": "Total des taxes",
"Tax rate": "Taux de taxes",
"Total amount": "Montant total",
"Please pay until": "Veuillez payer avant",
"Amount in words": "Montant en toutes lettres",
"Notes": "Notes",
"Shipping": "Expédition",
"Paid": "Payé",
"Due:": "Du:",
"Invoice Settings": "Paramètres de facturation",
"Download all Invoices": "Télécharger toutes les factures",
"Enter your companys name": "Entrez le nom de votre entreprise",
"Enter your companys address": "Entrez l'adresse de votre entreprise",
"Enter your companys phone number": "Entrez le numéro de téléphone de votre entreprise",
"Enter your companys VAT id": "Entrez le site internet de votre entreprise",
"Enter your companys email address": "Entrez l'adresse mail de votre entreprise",
"Enter your companys website": "Entrez le site internet de votre entreprise",
"Enter your custom invoice prefix": "Entrez votre préfixe de facture personnalisé",
"Select Invoice Logo": "Sélectionnez le logo des factures",
"Payment Confirmation": "Confirmation de paiement",
"Payment Confirmed!": "Paiement confirmé !",
"Server Creation Error": "Erreur lors de la création de votre serveur",
"Your servers have been suspended!": "Votre serveur à été suspendu !",
"To automatically re-enable your server/s, you need to purchase more credits.": "Pour réactiver automatiquement votre ou vos serveurs, vous devez racheter des crédits.",
"Purchase credits": "Acheter des crédits",
"If you have any questions please let us know.": "N'hésitez pas à nous contacter si vous avez des questions.",
"Regards": "Cordialement",
"Getting started!": "Commencer !",
"EXPIRED": "EXPIRÉ",
"VALID": "VALIDE",
"Unsuspend": "Annuler la suspension",
"Suspend": "Suspendre",
"Delete": "Supprimer",
"Login as User": "Connectez-vous en tant qu'utilisateur",
"Clone": "Dupliquer",
"Amount due": "Montant à payer",
"Your Payment was successful!": "Votre paiement a été reçu avec succès !",
"Hello": "Bonjour",
"Your payment was processed successfully!": "Votre requête a été traitée avec succès."
}

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Ces identifiants ne correspondent pas à nos enregistrements.',
'password' => 'Le mot de passe fourni est incorrect.',
'throttle' => 'Tentatives de connexion trop nombreuses. Veuillez essayer de nouveau dans :seconds secondes.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Suivant &raquo;',
'previous' => '&laquo; Précédent',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'Votre mot de passe a été réinitialisé !',
'sent' => 'Nous vous avons envoyé par email le lien de réinitialisation du mot de passe !',
'throttled' => 'Veuillez patienter avant de réessayer.',
'token' => 'Ce jeton de réinitialisation du mot de passe n\'est pas valide.',
'user' => 'Aucun utilisateur n\'a été trouvé avec cette adresse email.',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => 'Le champ :attribute doit être accepté.',
'accepted_if' => 'Le champ :attribute doit être accepté quand :other a la valeur :value.',
'active_url' => 'Le champ :attribute n\'est pas une URL valide.',
'after' => 'Le champ :attribute doit être une date postérieure au :date.',
'after_or_equal' => 'Le champ :attribute doit être une date postérieure ou égale au :date.',
'alpha' => 'Le champ :attribute doit contenir uniquement des lettres.',
'alpha_dash' => 'Le champ :attribute doit contenir uniquement des lettres, des chiffres et des tirets.',
'alpha_num' => 'Le champ :attribute doit contenir uniquement des chiffres et des lettres.',
'array' => 'Le champ :attribute doit être un tableau.',
'attached' => ':attribute est déjà attaché(e).',
'before' => 'Le champ :attribute doit être une date antérieure au :date.',
'before_or_equal' => 'Le champ :attribute doit être une date antérieure ou égale au :date.',
'between' => [
'array' => 'Le tableau :attribute doit contenir entre :min et :max éléments.',
'file' => 'La taille du fichier de :attribute doit être comprise entre :min et :max kilo-octets.',
'numeric' => 'La valeur de :attribute doit être comprise entre :min et :max.',
'string' => 'Le texte :attribute doit contenir entre :min et :max caractères.',
],
'boolean' => 'Le champ :attribute doit être vrai ou faux.',
'confirmed' => 'Le champ de confirmation :attribute ne correspond pas.',
'current_password' => 'Le mot de passe est incorrect.',
'date' => 'Le champ :attribute n\'est pas une date valide.',
'date_equals' => 'Le champ :attribute doit être une date égale à :date.',
'date_format' => 'Le champ :attribute ne correspond pas au format :format.',
'declined' => 'Le champ :attribute doit être décliné.',
'declined_if' => 'Le champ :attribute doit être décliné quand :other a la valeur :value.',
'different' => 'Les champs :attribute et :other doivent être différents.',
'digits' => 'Le champ :attribute doit contenir :digits chiffres.',
'digits_between' => 'Le champ :attribute doit contenir entre :min et :max chiffres.',
'dimensions' => 'La taille de l\'image :attribute n\'est pas conforme.',
'distinct' => 'Le champ :attribute a une valeur en double.',
'email' => 'Le champ :attribute doit être une adresse e-mail valide.',
'ends_with' => 'Le champ :attribute doit se terminer par une des valeurs suivantes : :values',
'exists' => 'Le champ :attribute sélectionné est invalide.',
'file' => 'Le champ :attribute doit être un fichier.',
'filled' => 'Le champ :attribute doit avoir une valeur.',
'gt' => [
'array' => 'Le tableau :attribute doit contenir plus de :value éléments.',
'file' => 'La taille du fichier de :attribute doit être supérieure à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être supérieure à :value.',
'string' => 'Le texte :attribute doit contenir plus de :value caractères.',
],
'gte' => [
'array' => 'Le tableau :attribute doit contenir au moins :value éléments.',
'file' => 'La taille du fichier de :attribute doit être supérieure ou égale à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :value.',
'string' => 'Le texte :attribute doit contenir au moins :value caractères.',
],
'image' => 'Le champ :attribute doit être une image.',
'in' => 'Le champ :attribute est invalide.',
'in_array' => 'Le champ :attribute n\'existe pas dans :other.',
'integer' => 'Le champ :attribute doit être un entier.',
'ip' => 'Le champ :attribute doit être une adresse IP valide.',
'ipv4' => 'Le champ :attribute doit être une adresse IPv4 valide.',
'ipv6' => 'Le champ :attribute doit être une adresse IPv6 valide.',
'json' => 'Le champ :attribute doit être un document JSON valide.',
'lt' => [
'array' => 'Le tableau :attribute doit contenir moins de :value éléments.',
'file' => 'La taille du fichier de :attribute doit être inférieure à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être inférieure à :value.',
'string' => 'Le texte :attribute doit contenir moins de :value caractères.',
],
'lte' => [
'array' => 'Le tableau :attribute doit contenir au plus :value éléments.',
'file' => 'La taille du fichier de :attribute doit être inférieure ou égale à :value kilo-octets.',
'numeric' => 'La valeur de :attribute doit être inférieure ou égale à :value.',
'string' => 'Le texte :attribute doit contenir au plus :value caractères.',
],
'max' => [
'array' => 'Le tableau :attribute ne peut contenir plus de :max éléments.',
'file' => 'La taille du fichier de :attribute ne peut pas dépasser :max kilo-octets.',
'numeric' => 'La valeur de :attribute ne peut être supérieure à :max.',
'string' => 'Le texte de :attribute ne peut contenir plus de :max caractères.',
],
'mimes' => 'Le champ :attribute doit être un fichier de type : :values.',
'mimetypes' => 'Le champ :attribute doit être un fichier de type : :values.',
'min' => [
'array' => 'Le tableau :attribute doit contenir au moins :min éléments.',
'file' => 'La taille du fichier de :attribute doit être supérieure à :min kilo-octets.',
'numeric' => 'La valeur de :attribute doit être supérieure ou égale à :min.',
'string' => 'Le texte :attribute doit contenir au moins :min caractères.',
],
'multiple_of' => 'La valeur de :attribute doit être un multiple de :value',
'not_in' => 'Le champ :attribute sélectionné n\'est pas valide.',
'not_regex' => 'Le format du champ :attribute n\'est pas valide.',
'numeric' => 'Le champ :attribute doit contenir un nombre.',
'password' => 'Le mot de passe est incorrect',
'present' => 'Le champ :attribute doit être présent.',
'prohibited' => 'Le champ :attribute est interdit.',
'prohibited_if' => 'Le champ :attribute est interdit quand :other a la valeur :value.',
'prohibited_unless' => 'Le champ :attribute est interdit à moins que :other est l\'une des valeurs :values.',
'prohibits' => 'Le champ :attribute interdit :other d\'être présent.',
'regex' => 'Le format du champ :attribute est invalide.',
'relatable' => ':attribute n\'est sans doute pas associé(e) avec cette donnée.',
'required' => 'Le champ :attribute est obligatoire.',
'required_if' => 'Le champ :attribute est obligatoire quand la valeur de :other est :value.',
'required_unless' => 'Le champ :attribute est obligatoire sauf si :other est :values.',
'required_with' => 'Le champ :attribute est obligatoire quand :values est présent.',
'required_with_all' => 'Le champ :attribute est obligatoire quand :values sont présents.',
'required_without' => 'Le champ :attribute est obligatoire quand :values n\'est pas présent.',
'required_without_all' => 'Le champ :attribute est requis quand aucun de :values n\'est présent.',
'same' => 'Les champs :attribute et :other doivent être identiques.',
'size' => [
'array' => 'Le tableau :attribute doit contenir :size éléments.',
'file' => 'La taille du fichier de :attribute doit être de :size kilo-octets.',
'numeric' => 'La valeur de :attribute doit être :size.',
'string' => 'Le texte de :attribute doit contenir :size caractères.',
],
'starts_with' => 'Le champ :attribute doit commencer avec une des valeurs suivantes : :values',
'string' => 'Le champ :attribute doit être une chaîne de caractères.',
'timezone' => 'Le champ :attribute doit être un fuseau horaire valide.',
'unique' => 'La valeur du champ :attribute est déjà utilisée.',
'uploaded' => 'Le fichier du champ :attribute n\'a pu être téléversé.',
'url' => 'Le format de l\'URL de :attribute n\'est pas valide.',
'uuid' => 'Le champ :attribute doit être un UUID valide',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
];

328
resources/lang/hi.json Normal file
View file

@ -0,0 +1,328 @@
{
"Activity Logs": "गतिविधि लॉग",
"No recent activity from cronjobs": "Cronjobs से कोई हाल की गतिविधि नहीं",
"Check the docs for it here": "इसके लिए डॉक्स यहां देखें",
"Are cronjobs running?": "क्या क्रोनजॉब चल रहे हैं?",
"Causer": "वजह",
"Description": "विवरण",
"Created at": "पर बनाया गया",
"Edit Configuration": "कॉन्फ़िगरेशन संपादित करें",
"Text Field": "पाठ्य से भरा",
"Cancel": "रद्द करें",
"Close": "बंद",
"Save": "सेव करें",
"true": "सही",
"false": "असत्य",
"Configurations": "विन्यास",
"Dashboard": "डैशबोर्ड",
"Key": "चाभी",
"Value": "मूल्य",
"Type": "प्रकार",
"Admin Overview": "व्यवस्थापक अवलोकन",
"Support server": "समर्थन सर्वर",
"Documentation": "प्रलेखन",
"Github": "गिटहब",
"Support ControlPanel": "समर्थन नियंत्रण पैनल",
"Servers": "सर्वरस",
"Users": "कर्मचारी",
"Total": "कुल",
"Payments": "भुगतान",
"Pterodactyl": "टेरोडक्टाइल",
"Sync": "साथ - साथ करना",
"Resources": "साधन",
"Count": "गिनती",
"Locations": "स्थानों",
"Node": "नोड",
"Nodes": "नोड्स",
"Nests": "घोसले",
"Eggs": "अंडे",
"Last updated :date": "आखरी अपडेट: दिनांक",
"Purchase": "खरीदें",
"ID": "आइडी",
"User": "उपयोगकर्ता",
"Amount": "मात्रा",
"Product Price": "प्रोडक्ट की कीमत",
"Tax": "कर",
"Total Price": "कुल कीमत",
"Payment_ID": "भुगतान_आईडी",
"Payer_ID": "ग्राहक_ID",
"Product": "उत्पाद",
"Products": "उत्पादों",
"Create": "सृजन करना",
"Product Details": "उत्पाद विवरण",
"Server Details": "सर्वर जानकारी",
"Product Linking": "उत्पाद लिंकिंग",
"Name": "नाम",
"Price in": "कीमत में",
"Memory": "मेमोरी",
"Cpu": "Cpu",
"Swap": "स्वैप",
"Disk": "डिस्क",
"Minimum": "न्यूनतम",
"IO": "मैं",
"Databases": "डेटाबेस",
"Database": "डेटाबेस",
"Backups": "बैकअप",
"Allocations": "आवंटन",
"Disabled": "विकलांग",
"Submit": "प्रस्तुत करना",
"This product will only be available for these nodes": "यह उत्पाद केवल इन नोड्स के लिए उपलब्ध होगा",
"This product will only be available for these eggs": "यह उत्पाद केवल इन अंडों के लिए उपलब्ध होगा",
"Will hide this option from being selected": "इस विकल्प को चुने जाने से छिपा देंगे",
"Link your products to nodes and eggs to create dynamic pricing for each option": "प्रत्येक विकल्प के लिए गतिशील मूल्य निर्धारण बनाने के लिए अपने उत्पादों को नोड्स और अंडों से लिंक करें",
"Setting to -1 will use the value from configuration.": "-1 पर सेट करने से कॉन्फ़िगरेशन से मान का उपयोग होगा।",
"This is what the users sees": "यह वही है जो उपयोगकर्ता देखता है",
"Edit": "ऐडिट",
"Price": "कीमत",
"Are you sure you wish to delete?": "क्या आप सचमुच बंद करना चाहते हैं?",
"Create new": "नया बनाओ",
"Show": "दिखाएँ",
"Updated at": "अपडेट किया गया",
"Suspended at": "पर निलंबित",
"Settings": "सेटिंग्स",
"Dashboard icons": "डैशबोर्ड आइकन",
"Select panel icon": "पैनल आइकन चुनें",
"Select panel favicon": "पैनल Favicon चुनें",
"Token": "टोकन",
"Last used": "पिछले इस्तेमाल किया",
"Store": "दुकान",
"Currency code": "मुद्रा कोड",
"Checkout the paypal docs to select the appropriate code": "उपयुक्त कोड का चयन करने के लिए पेपैल दस्तावेज़ चेकआउट करें",
"Quantity": "मात्रा",
"Amount given to the user after purchasing": "खरीद के बाद यूजर को दी जाने वाली राशि",
"Display": "डिस्प्ले",
"This is what the user sees at store and checkout": "उपयोगकर्ता स्टोर और चेकआउट में यही देखता है",
"This is what the user sees at checkout": "चेकआउट के समय उपयोगकर्ता यही देखता है",
"Adds 1000 credits to your account": "आपके खाते में 1000 क्रेडिट जोड़ता है",
"Active": "सक्रिय",
"Paypal is not configured.": "पेपैल कॉन्फ़िगर नहीं है।",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "पेपैल को कॉन्फ़िगर करने के लिए, .env पर जाएं और अपनी पेपैल की क्लाइंट आईडी और गुप्त जोड़ें",
"Useful Links": "उपयोगी कड़ियां",
"Icon class name": "आइकन कक्षा का नाम",
"You can find available free icons": "आप उपलब्ध मुफ्त आइकन पा सकते हैं",
"Title": "शीर्षक",
"Link": "लिंक",
"Username": "उपयोगकर्ता नाम",
"Email": "ईमेल",
"Pterodactly ID": "टेरोडक्टाइल आइडी",
"Server Limit": "सर्वर सीमा",
"Role": "भूमिका",
"Administrator": "प्रशासक",
"Client": "ग्राहक",
"Member": "सदस्य",
"New Password": "नया पासवर्ड",
"Confirm Password": "पासवर्ड की पुष्टि कीजिये",
"This ID refers to the user account created on pterodactyls panel.": "यह आईडी pterodactyls पैनल पर बनाए गए उपयोगकर्ता खाते को संदर्भित करता है।",
"Only edit this if you know what youre doing :)": "इसे केवल तभी संपादित करें जब आप जानते हों कि आप क्या कर रहे हैं :)",
"Verified": "सत्यापित",
"Last seen": "अंतिम बार देखा",
"Notify": "सूचित करें?",
"All": "सब",
"Send via": "के द्वारा भेजें",
"Content": "विषय",
"Notifications": "सूचनाएं",
"Usage": "प्रयोग",
"Config": "कॉन्फ़िग",
"Vouchers": "वाउचर",
"Voucher details": "वाउचर विवरण",
"Memo": "ज्ञापन",
"Code": "कोड",
"Uses": "उपयोगकर्ता",
"Expires at": "पर समाप्त हो रहा है",
"Max": "मैक्स",
"Random": "यादृच्छिक रूप से",
"Status": "स्थिति",
"Used / Uses": "प्रयुक्त / उपयोग",
"Expires": "समय-सीमा समाप्त",
"Please confirm your password before continuing.": "जारी रखने से पहले कृपया अपने पासवर्ड की पुष्टि करें।",
"Password": "पासवर्ड",
"Forgot Your Password?": "अपना पासवर्ड भूल गए?",
"Sign in to start your session": "अपना सत्र शुरू करने के लिए साइन इन करें",
"Remember Me": "मुझे याद रखना",
"Sign In": "साइन इन",
"Register a new membership": "एक नई सदस्यता पंजीकृत करें",
"You forgot your password? Here you can easily retrieve a new password.": "आप अपना पासवर्ड भूल गए? यहां आप आसानी से एक नया पासवर्ड प्राप्त कर सकते हैं।",
"Request new password": "नए पासवर्ड का अनुरोध करें",
"Login": "लॉग इन करें",
"You are only one step a way from your new password, recover your password now.": "आप अपने नए पासवर्ड से केवल एक कदम दूर हैं, अपना पासवर्ड अभी पुनर्प्राप्त करें।",
"Retype password": "पासवर्ड फिर से लिखें",
"Change password": "पासवर्ड बदलें",
"I already have a membership": "मेरे पास पहले से ही सदस्यता है",
"Register": "खाता खोलें",
"Verify Your Email Address": "अपने ईमेल पते की पुष्टि करें",
"A fresh verification link has been sent to your email address.": "आपके ईमेल पते पर एक नया सत्यापन लिंक भेज दिया गया है।",
"Before proceeding, please check your email for a verification link.": "आगे बढ़ने से पहले, कृपया सत्यापन लिंक के लिए अपना ईमेल देखें।",
"If you did not receive the email": "अगर आपको ईमेल प्राप्त नहीं हुआ है",
"click here to request another": "दूसरे का अनुरोध करने के लिए यहां क्लिक करें",
"Home": "घर",
"Languages": "बोली",
"See all Notifications": "सभी सूचनाएं देखें",
"Profile": "प्रोफ़ाइल",
"Log back in": "वापस लॉग इन करें",
"Logout": "लॉग आउट करें",
"Administration": "प्रशासन",
"Overview": "जानकारी",
"Application API": "आवेदन एपीआई",
"Management": "प्रबंध",
"Other": "दूसरा",
"Logs": "लॉग्स",
"Redeem code": "रीडीम कोड",
"You have not yet verified your email address": "आपने अभी तक अपना ईमेल पता सत्यापित नहीं किया है",
"Click here to resend verification email": "सत्यापन ईमेल पुनः भेजने के लिए यहां क्लिक करें",
"Please contact support If you didnt receive your verification email.": "कृपया समर्थन से संपर्क करें यदि आपको अपना सत्यापन ईमेल प्राप्त नहीं हुआ है",
"Thank you for your purchase!": "आपकी खरीदारी के लिए धन्यवाद!",
"Your payment has been confirmed; Your credit balance has been updated.": "आपके भुगतान की पुष्टि हो गई है; आपका क्रेडिट बैलेंस अपडेट कर दिया गया है।",
"Payment ID": "भुगतान आईडी",
"Balance": "बाकी रकम",
"User ID": "उपयोगकर्ता आइडी",
"Thanks": "धन्यवाद!",
"Redeem voucher code": "वाउचर कोड रिडीम करें",
"Redeem": "एवज",
"All notifications": "सारे अधिसूचना",
"Required Email verification!": "आवश्यक ईमेल सत्यापन!",
"Required Discord verification!": "आवश्यक कलह सत्यापन!",
"You have not yet verified your discord account": "आपने अभी तक अपने कलह खाते को सत्यापित नहीं किया है",
"Login with discord": "कलह के साथ लॉगिन करें",
"Please contact support If you face any issues.": "कृपया समर्थन से संपर्क करें यदि आपको कोई समस्या आती है।",
"Due to system settings you are required to verify your discord account!": "सिस्टम सेटिंग्स के कारण आपको अपने कलह खाते को सत्यापित करने की आवश्यकता है!",
"It looks like this hasnt been set-up correctly! Please contact support.": "ऐसा लगता है कि इसे ठीक से सेट अप नहीं किया गया है! कृपया समर्थन से संपर्क करें।",
"Change Password": "पासवर्ड बदलें",
"Current Password": "वर्तमान पासवर्ड",
"Save Changes": "परिवर्तनों को सुरक्षित करें",
"Re-Sync Discord": "पुन: समन्वयन कलह",
"You are verified!": "आप सत्यापित हैं!",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "अपने कलह खाते को सत्यापित करके, आप अतिरिक्त क्रेडिट और बढ़ी हुई सर्वर राशि प्राप्त करते हैं",
"Server configuration": "सर्वर विन्यास",
"Error!": "एरर",
"Make sure to link your products to nodes and eggs.": "अपने उत्पादों को नोड्स और अंडों से जोड़ना सुनिश्चित करें।",
"There has to be at least 1 valid product for server creation": "सर्वर निर्माण के लिए कम से कम 1 वैध उत्पाद होना चाहिए",
"No products available!": "कोई उत्पाद उपलब्ध नहीं है!",
"No nodes have been linked!": "कोई नोड लिंक नहीं किया गया है!",
"No nests available!": "कोई घोंसला उपलब्ध नहीं है!",
"No eggs have been linked!": "कोई अंडे नहीं जोड़े गए हैं!",
"Software / Games": "सॉफ्टवेयर / खेल",
"Please select software ...": "कृपया सॉफ्टवेयर चुनें...",
"Specification": "विनिर्देश",
"No selection": "कोई चयन नहीं",
"per month": "प्रति महीना",
"Not enough credits!": "पर्याप्त क्रेडिट नहीं!",
"Please select a configuration ...": "कृपया कोई कॉन्फ़िगरेशन चुनें...",
"No resources found matching current configuration": "वर्तमान कॉन्फ़िगरेशन से मेल खाने वाला कोई संसाधन नहीं मिला",
"No nodes found matching current configuration": "वर्तमान कॉन्फ़िगरेशन से मेल खाने वाला कोई नोड नहीं मिला",
"Please select a node ...": "कृपया एक नोड चुनें...",
"Create server": "सर्वर बनाएं",
"Use your servers on our": "हमारे पर अपने सर्वर का प्रयोग करें",
"pterodactyl panel": "पटरोडैक्टाइल पैनल",
"Server limit reached!": "सर्वर की सीमा पूरी हो गई!",
"Create Server": "अपना सर्वर बनाएं",
"Manage": "मॅनेज",
"Delete server": "सर्वर हटाएं",
"Price per Hour": "पैसा प्रति घंटा\n",
"Price per Month": "मूल्य प्रति माह",
"Date": "दिनांक",
"To": "को",
"From": "से",
"Pending": "लंबित",
"Subtotal": "उप-योग",
"Submit Payment": "भुगतान सबमिट करें",
"Payment Methods": "भुगतान की विधि",
"By purchasing this product you agree and accept our terms of service": "इस उत्पाद को खरीदकर आप हमारी सेवा की शर्तों से सहमत होते हैं और स्वीकार करते हैं",
"There are no store products!": "कोई स्टोर उत्पाद नहीं हैं!",
"The store is not correctly configured!": "स्टोर सही ढंग से कॉन्फ़िगर नहीं किया गया है!",
"Out of Credits in": "क्रेडिट से बाहर",
"days": "दिन",
"hours": "घंटे",
"You ran out of Credits": "आपका क्रेडिट खत्म हो गया",
"Profile updated": "प्रोफ़ाइल अपडेट",
"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.": "सर्वर बनाने से पहले आपको अपने डिसॉर्डर अकाउंट को लिंक करना होगा।",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "इस नोड पर स्वचालित परिनियोजन के लिए आवश्यकताओं को पूरा करने वाला कोई आवंटन नहीं मिला।",
"Server removed": "सर्वर हटा दिया गया",
"Server created": "सर्वर बनाया",
"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 link your discord account before you can purchase ": "खरीदने से पहले आपको अपने कलह खाते को लिंक करना होगा ",
"Warning!": "चेतावनी!",
"api key created!": "एपीआई कुंजी बनाई गई!",
"api key updated!": "एपीआई कुंजी अद्यतन!",
"api key has been removed!": "एपीआई कुंजी हटा दी गई है!",
"configuration has been updated!": "कॉन्फ़िगरेशन अपडेट कर दिया गया है!",
"Pterodactyl synced": "टेरोडक्टाइल सिंक्रनाइज़",
"Your credit balance has been increased!": "आपका क्रेडिट बैलेंस बढ़ा दिया गया है!",
"Payment was Canceled": "भुगतान रद्द कर दिया गया था",
"Store item has been created!": "स्टोर आइटम बनाया गया है!",
"Store item has been updated!": "स्टोर आइटम अपडेट कर दिया गया है!",
"Product has been updated!": "उत्पाद अपडेट कर दिया गया है!",
"Store item has been removed!": "स्टोर आइटम हटा दिया गया है!",
"Product has been created!": "उत्पाद बनाया गया है!",
"Product has been removed!": "उत्पाद हटा दिया गया है!",
"Server has been updated!": "सर्वर अपडेट कर दिया गया है!",
"Icons updated!": "आइकन अपडेट किए गए!",
"link has been created!": "लिंक बनाया गया है!",
"link has been updated!": "लिंक अपडेट कर दिया गया है!",
"user has been removed!": "उपयोगकर्ता को हटा दिया गया है!",
"Notification sent!": "सूचना भेजी गई!",
"User has been updated!": "उपयोगकर्ता अपडेट कर दिया गया है!",
"User does not exists on pterodactyl's panel": "उपयोगकर्ता pterodactyl के पैनल पर मौजूद नहीं है",
"voucher has been created!": "वाउचर बनाया गया है!",
"voucher has been updated!": "वाउचर अपडेट कर दिया गया है!",
"voucher has been removed!": "वाउचर हटा दिया गया है!",
"This voucher has reached the maximum amount of uses": "यह वाउचर उपयोग की अधिकतम मात्रा तक पहुंच गया है",
"This voucher has expired": "यह वाउचर समाप्त हो गया है",
"You already redeemed this voucher code": "आप इस वाउचर कोड को पहले ही भुना चुके हैं",
"You can't redeem this voucher because you would exceed the limit of ": "आप इस वाउचर को रिडीम नहीं कर सकते क्योंकि आप की सीमा को पार कर जाएंगे ",
"have been added to your balance!": "आपकी शेष राशि में जोड़ दिया गया है!",
"Invoice": "इनवॉयस",
"Serial No.": "सीरीयल नम्बर।",
"Invoice date": "इनवॉयस तारीख",
"Seller": "विक्रेता",
"Buyer": "खरीदार",
"Address": "पता",
"VAT code": "वैट कोड",
"Phone": "फोन",
"Units": "इकाइयों",
"Qty": "मात्रा",
"Discount": "छूट",
"Sub total": "उप कुल",
"Total discount": "कुल छूट",
"Taxable amount": "कर योग्य राशि",
"Total taxes": "कुल कर",
"Tax rate": "कर की दर",
"Total amount": "कुल रकम",
"Please pay until": "कृपया भुगतान करें",
"Amount in words": "राशि शब्दों में",
"Notes": "टिप्पणियाँ",
"Shipping": "शिपिंग",
"Paid": "भुगतान किया गया",
"Due:": "देय:",
"Invoice Settings": "चालान सेटिंग",
"Download all Invoices": "सभी चालान डाउनलोड करें",
"Enter your companys name": "अपनी कंपनी का नाम दर्ज करें",
"Enter your companys address": "अपनी कंपनी का पता दर्ज करें",
"Enter your companys phone number": "अपनी कंपनी का फ़ोन नंबर दर्ज करें",
"Enter your companys VAT id": "अपनी कंपनी की वैट आईडी दर्ज करें",
"Enter your companys email address": "अपनी कंपनी का ईमेल पता दर्ज करें",
"Enter your companys website": "अपनी कंपनी की वेबसाइट दर्ज करें",
"Enter your custom invoice prefix": "अपना कस्टम चालान उपसर्ग दर्ज करें",
"Select Invoice Logo": "चालान लोगो का चयन करें",
"Payment Confirmation": "भुगतान की पुष्टि",
"Payment Confirmed!": "कीमत का भुगतान पूरा हुआ!",
"Server Creation Error": "सर्वर निर्माण त्रुटि",
"Your servers have been suspended!": "आपके सर्वर निलंबित कर दिए गए हैं!",
"To automatically re-enable your server/s, you need to purchase more credits.": "अपने सर्वर/सर्वर को स्वचालित रूप से पुन: सक्षम करने के लिए, आपको अधिक क्रेडिट खरीदने की आवश्यकता है।",
"Purchase credits": "क्रेडिट खरीदें",
"If you have any questions please let us know.": "यदि आपके पास कोई प्रश्न है, तो हमें बताएं।",
"Regards": "सादर",
"Getting started!": "शुरू करना!",
"EXPIRED": "समाप्त हो गई है",
"VALID": "वैध",
"Unsuspend": "निलंबन रद्द किया",
"Suspend": "निलंबित करें",
"Delete": "हटाएं",
"Login as User": "उपयोगकर्ता के रूप में लॉगिन करें",
"Clone": "क्लोन",
"Amount due": "देय राशि",
"Your Payment was successful!": "आपका भुगतान सफल रहा!",
"Hello": "नमस्ते",
"Your payment was processed successfully!": "आपका भुगतान सफलतापूर्वक संसाधित किया गया था!"
}

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'ये साख हमारे रिकॉर्ड से मेल नहीं खा रहे हैं।',
'password' => 'The provided password is incorrect.',
'throttle' => 'बहुत सारे लॉगिन प्रयास। :seconds सेकंड में फिर से कोशिश करें।',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'अगला &raquo;',
'previous' => '&laquo; पिछला',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'आपका पासवर्ड रीसेट कर दिया गया है!',
'sent' => 'हमने आपको एक पासवर्ड रीसेट लिंक ई-मेल किया है!',
'throttled' => 'कृपया पुन: प्रयास करने से पहले प्रतीक्षा करें । ',
'token' => 'यह पासवर्ड रीसेट टोकन अमान्य है।',
'user' => 'हमें उस ई-मेल पते के साथ एक उपयोगकर्ता नहीं मिल सकता है।',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => ':attribute को स्वीकार किया जाना चाहिए।',
'accepted_if' => 'The :attribute must be accepted when :other is :value.',
'active_url' => ':attribute एक मान्य URL नहीं है।',
'after' => ':attribute, :date के बाद की एक तारीख होनी चाहिए।',
'after_or_equal' => ':attribute, :date के बाद या उसके बराबर की तारीख होनी चाहिए।',
'alpha' => ':attribute में केवल अक्षर हो सकते हैं।',
'alpha_dash' => ':attribute में केवल अक्षर, संख्या, और डैश हो सकते हैं।',
'alpha_num' => ':attribute में केवल अक्षर और संख्याएं हो सकती हैं।',
'array' => ':attribute एक सरणी होनी चाहिए।',
'attached' => 'यह :attribute पहले से ही संलग्न है । ',
'before' => ':attribute, :date से पहले की एक तारीख होनी चाहिए।',
'before_or_equal' => ':attribute, :date इससे पहले या उसके बराबर की तारीख होनी चाहिए।',
'between' => [
'array' => ':attribute, :min और :max आइटमों के बीच होनी चाहिए।',
'file' => ':attribute, :min और :max किलोबाइट के बीच होना चाहिए।',
'numeric' => ':attribute, :min और :max के बीच होना चाहिए।',
'string' => ':attribute, :min और :max वर्णों के बीच होना चाहिए।',
],
'boolean' => ':attribute फील्ड सही या गलत होना चाहिए।',
'confirmed' => ':attribute पुष्टिकरण मेल नहीं खा रहा है।',
'current_password' => 'The password is incorrect.',
'date' => ':attribute एक मान्य दिनांक नहीं है।',
'date_equals' => ':attribute, :date के बराबर तारीख होनी चाहिए।',
'date_format' => ':attribute फॉर्मेट :format से मेल नहीं खा रहा है।',
'declined' => 'The :attribute must be declined.',
'declined_if' => 'The :attribute must be declined when :other is :value.',
'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' => [
'array' => ':attribute, :value मद से अधिक होना चाहिए।',
'file' => ':attribute, :value kilobytes से अधिक होना चाहिए।',
'numeric' => ':attribute, :value से अधिक होना चाहिए।',
'string' => ':attribute, :value characters से अधिक होना चाहिए।',
],
'gte' => [
'array' => 'The :attribute must have :value items or more.',
'file' => 'The :attribute must be greater than or equal :value kilobytes.',
'numeric' => 'The :attribute must be greater than or equal :value.',
'string' => 'The :attribute must be greater than or equal :value characters.',
],
'image' => ':attribute एक छवि होनी चाहिए।',
'in' => 'चुना गया :attribute अमान्य है।',
'in_array' => ':attribute फील्ड, :other में मौजूद नहीं है।',
'integer' => ':attribute एक पूर्णांक होना चाहिए।',
'ip' => ':attribute एक मान्य IP address होना चाहिए।',
'ipv4' => ':attribute एक वैध IPv4 address होना चाहिए।',
'ipv6' => ':attribute एक वैध IPv6 address होना चाहिए।',
'json' => ':attribute एक मान्य JSON स्ट्रिंग होना चाहिए।',
'lt' => [
'array' => 'The :attribute must have less than :value items.',
'file' => 'The :attribute must be less than :value kilobytes.',
'numeric' => 'The :attribute must be less than :value.',
'string' => 'The :attribute must be less than :value characters.',
],
'lte' => [
'array' => 'The :attribute must not have more than :value items.',
'file' => 'The :attribute must be less than or equal :value kilobytes.',
'numeric' => 'The :attribute must be less than or equal :value.',
'string' => 'The :attribute must be less than or equal :value characters.',
],
'max' => [
'array' => ':attribute, :max आइटमों से अधिक नहीं हो सकता है।',
'file' => ':attribute :max किलोबाइट से बड़ा नहीं हो सकता है।',
'numeric' => ':attribute, :max से बड़ा नहीं हो सकता है।',
'string' => ':attribute, :max वर्णों से बड़ा नहीं हो सकता है।',
],
'mimes' => ':attribute एक प्रकार की फ़ाइल: :values होना चाहिए।',
'mimetypes' => ':attribute एक प्रकार की फ़ाइल: :values होना चाहिए।',
'min' => [
'array' => ':attribute कम से कम :min आइटम होना चाहिए।',
'file' => ':attribute कम से कम :min किलोबाइट होना चाहिए।',
'numeric' => ':attribute कम से कम :min होना चाहिए।',
'string' => ':attribute कम से कम :min वर्ण होना चाहिए।',
],
'multiple_of' => ':attribute :value का एक बहु होना चाहिए',
'not_in' => 'चुना गया :attribute अमान्य है।',
'not_regex' => ':attribute प्रारूप अमान्य है।',
'numeric' => ':attribute एक संख्या होनी चाहिए।',
'password' => 'पासवर्ड गलत है । ',
'present' => ':attribute फील्ड मौजूद होना चाहिए।',
'prohibited' => ':attribute क्षेत्र निषिद्ध है । ',
'prohibited_if' => ':attribute क्षेत्र निषिद्ध है जब :other :value है । ',
'prohibited_unless' => ':attribute क्षेत्र तब तक निषिद्ध है जब तक कि :other :values में न हो । ',
'prohibits' => 'The :attribute field prohibits :other from being present.',
'regex' => ':attribute फॉर्मेट अमान्य है।',
'relatable' => 'यह :attribute इस संसाधन से संबद्ध नहीं हो सकता है । ',
'required' => ':attribute फील्ड आवश्यक होता है।',
'required_if' => ':attribute फ़ील्ड आवश्यक होता है जब :other :value होता है।',
'required_unless' => ':attribute फील्ड आवश्यक होता है जब :other, :values में नहीं होता है।',
'required_with' => ':attribute फ़ील्ड आवश्यक होता है जब :values मौजूद होता है।',
'required_with_all' => ':attribute फ़ील्ड आवश्यक होता है जब :values मौजूद होता है।',
'required_without' => ':attribute फील्ड आवश्यक होता है जब :values मौजूद नहीं होता है।',
'required_without_all' => ':attribute फील्ड आवश्यक होता है जब एक भी :values मौजूद नहीं होता है।',
'same' => ':attribute और :other मेल खाना चाहिए।',
'size' => [
'array' => ':attribute में :size आइटम होने चाहिए।',
'file' => ':attribute, :size किलोबाइट होना चाहिए।',
'numeric' => ':attribute, :size होना चाहिए।',
'string' => ':attribute, :size वर्ण होना चाहिए।',
],
'starts_with' => ':attribute निम्नलिखित में से किसी एक से शुरू करना चाहिए: :values',
'string' => ':attribute एक स्ट्रिंग होनी चाहिए।',
'timezone' => ':attribute एक मान्य क्षेत्र होना चाहिए।',
'unique' => ':attribute को पहले ही ले लिया गया है।',
'uploaded' => ':attribute अपलोड करने में विफल।',
'url' => ':attribute फॉर्मेट अमान्य है।',
'uuid' => ':attribute एक वैध UUID होना चाहिए।',
'custom' => [
'attribute-name' => [
'rule-name' => 'अनुकूल-संदेश',
],
],
];

328
resources/lang/it.json Normal file
View file

@ -0,0 +1,328 @@
{
"Activity Logs": "Registro attività",
"No recent activity from cronjobs": "Nessuna attività recente dai cronjobs",
"Check the docs for it here": "Controlla la documentazione qui",
"Are cronjobs running?": "I cronjobs stanno funzionando?",
"Causer": "Causa",
"Description": "Descrizione",
"Created at": "Creato il",
"Edit Configuration": "Modifica configurazione",
"Text Field": "Campo di Testo",
"Cancel": "Annulla",
"Close": "Chiudi",
"Save": "Salva",
"true": "vero",
"false": "falso",
"Configurations": "Configurazioni",
"Dashboard": "Dashboard",
"Key": "Chiave",
"Value": "Valore",
"Type": "Tipo",
"Admin Overview": "Panoramica di amministrazione",
"Support server": "Server di supporto",
"Documentation": "Documentazione",
"Github": "GitHub",
"Support ControlPanel": "Supporta ControlPanel",
"Servers": "Servers",
"Users": "Utenti",
"Total": "Totale",
"Payments": "Pagamenti",
"Pterodactyl": "Pterodactyl",
"Sync": "Sincronizza",
"Resources": "Risorse",
"Count": "Conteggio",
"Locations": "Luoghi",
"Node": "Nodo",
"Nodes": "Nodi",
"Nests": "Nidi",
"Eggs": "Uova",
"Last updated :date": "Ultimo aggiornamento :date",
"Purchase": "Acquisto",
"ID": "ID",
"User": "Utente",
"Amount": "Quantità",
"Product Price": "Prezzo del Prodotto",
"Tax": "Tasse",
"Total Price": "Prezzo Totale",
"Payment_ID": "Payment_ID",
"Payer_ID": "Payer_ID",
"Product": "Prodotto",
"Products": "Prodotti",
"Create": "Crea",
"Product Details": "Dettagli sul prodotto",
"Server Details": "Dettagli del server",
"Product Linking": "Collegamenti del prodotto",
"Name": "Nome",
"Price in": "Prezzo in",
"Memory": "Memoria",
"Cpu": "Cpu",
"Swap": "Swap",
"Disk": "Disco",
"Minimum": "Minimo",
"IO": "IO",
"Databases": "Database",
"Database": "Database",
"Backups": "Backups",
"Allocations": "Assegnazioni",
"Disabled": "Disattivato",
"Submit": "Invia",
"This product will only be available for these nodes": "Questo prodotto sarà disponibile solo per questi nodi",
"This product will only be available for these eggs": "Questo prodotto sarà disponibile solo per queste uova (eggs)",
"Will hide this option from being selected": "Nasconderà questa opzione dallessere selezionata",
"Link your products to nodes and eggs to create dynamic pricing for each option": "Connetti i tuoi prodotti ai nodi e le uova (eggs) per creare un prezzo dinamico per ogni opzione",
"Setting to -1 will use the value from configuration.": "Impostare a -1 farà utilizzare il valore dalla configurazione.",
"This is what the users sees": "Questo è quello che gli utenti vedono",
"Edit": "Modifica",
"Price": "Prezzo",
"Are you sure you wish to delete?": "Sei sicuro di voler cancellare?",
"Create new": "Crea nuovo",
"Show": "Mostra",
"Updated at": "Aggiornato il",
"Suspended at": "Sospeso il",
"Settings": "Impostazioni",
"Dashboard icons": "Icone della Dashboard",
"Select panel icon": "Seleziona licona del pannello",
"Select panel favicon": "Seleziona la favicon del pannello",
"Token": "Token",
"Last used": "Ultimo utilizzo",
"Store": "Negozio",
"Currency code": "Codice valuta",
"Checkout the paypal docs to select the appropriate code": "Controlla la documentazione di PayPal per selezionare il codice appropriato",
"Quantity": "Quantità",
"Amount given to the user after purchasing": "Quantità data allutente dopo lacquisto",
"Display": "Display",
"This is what the user sees at store and checkout": "Questo è quello che lutente vede nel negozio e al checkout",
"This is what the user sees at checkout": "Questo è quello che lutente vede al checkout",
"Adds 1000 credits to your account": "Aggiunge 1000 crediti al tuo account",
"Active": "Attivo",
"Paypal is not configured.": "PayPal non è configurato.",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "Per configurare PayPal, aggiungi il tuo client id ed il codice segreto nel file .env.",
"Useful Links": "Link utili",
"Icon class name": "Nome della classe dellicona",
"You can find available free icons": "Puoi trovare icone disponibili gratis",
"Title": "Titolo",
"Link": "Link",
"Username": "Nome utente",
"Email": "Email",
"Pterodactly ID": "Pterodactyl ID",
"Server Limit": "Limite server",
"Role": "Ruolo",
"Administrator": "Amministratore",
"Client": "Cliente",
"Member": "Membro",
"New Password": "Nuova password",
"Confirm Password": "Conferma password",
"This ID refers to the user account created on pterodactyls panel.": "Questo ID si riferisce allaccount creato sullo Pterodactyl Panel.",
"Only edit this if you know what youre doing :)": "Modifica questo solo se sai cosa stai facendo :)",
"Verified": "Verificato",
"Last seen": "Visto l'ultima volta",
"Notify": "Notifica",
"All": "Tutti",
"Send via": "Invia tramite",
"Content": "Contenuto",
"Notifications": "Notifiche",
"Usage": "Uso",
"Config": "Configurazione",
"Vouchers": "Vouchers",
"Voucher details": "Dettagli del buono",
"Memo": "Memo",
"Code": "Codice",
"Uses": "Utilizzi",
"Expires at": "Scade il",
"Max": "Massimo",
"Random": "Casuale",
"Status": "Stato",
"Used / Uses": "Usato / Utilizzi",
"Expires": "Scade",
"Please confirm your password before continuing.": "Conferma la password prima di continuare.",
"Password": "Password",
"Forgot Your Password?": "Password dimenticata?",
"Sign in to start your session": "Accedi per iniziare la sessione",
"Remember Me": "Ricordami",
"Sign In": "Accedi",
"Register a new membership": "Registrati",
"You forgot your password? Here you can easily retrieve a new password.": "Hai dimenticato la tua password? Ne puoi creare una nuova facilmente, qui.",
"Request new password": "Richiedi una nuova password",
"Login": "Accedi",
"You are only one step a way from your new password, recover your password now.": "Sei a un solo step dalla tua nuova password, ripristinala ora.",
"Retype password": "Reinserisci password",
"Change password": "Cambia password",
"I already have a membership": "Già registrato?",
"Register": "Registrati",
"Verify Your Email Address": "Verifica il tuo indirizzo e-mail",
"A fresh verification link has been sent to your email address.": "Un nuovo link di verifica è stato inviato al tuo indirizzo email.",
"Before proceeding, please check your email for a verification link.": "Prima di procedere, controlla la tua email per un link di verifica.",
"If you did not receive the email": "Se non hai ricevuto l'email",
"click here to request another": "clicca qui per richiederne un'altra",
"Home": "Home",
"Languages": "Lingue",
"See all Notifications": "Vedi tutte le notifiche",
"Profile": "Profilo",
"Log back in": "Fai il login di nuovo",
"Logout": "Disconnettiti",
"Administration": "Amministrazione",
"Overview": "Sommario",
"Application API": "API Applicazione",
"Management": "Gestione",
"Other": "Altro",
"Logs": "Registri",
"Redeem code": "Riscatta un codice",
"You have not yet verified your email address": "Non hai ancora verificato il tuo indirizzo email",
"Click here to resend verification email": "Clicca qui per inviare nuovamente l'e-mail di verifica",
"Please contact support If you didnt receive your verification email.": "Contatta il supporto se non hai ricevuto la mail di verifica.",
"Thank you for your purchase!": "Grazie per l'acquisto!",
"Your payment has been confirmed; Your credit balance has been updated.": "Il tuo pagamento è stato confermato; il tuo bilancio di crediti è stato aggiornato.",
"Payment ID": "ID pagamento",
"Balance": "Saldo",
"User ID": "ID utente",
"Thanks": "Grazie",
"Redeem voucher code": "Riscatta il codice voucher",
"Redeem": "Riscatta",
"All notifications": "Tutte le notifiche",
"Required Email verification!": "Verifica dellindirizzo email richiesta!",
"Required Discord verification!": "Verifica dellaccount Discord richiesta!",
"You have not yet verified your discord account": "Non hai ancora verificato il tuo account Discord",
"Login with discord": "Accedi con Discord",
"Please contact support If you face any issues.": "Contatta il supporto se incontri dei problemi.",
"Due to system settings you are required to verify your discord account!": "Devi verificare il tuo account Discord per alcune impostazioni di sistema!",
"It looks like this hasnt been set-up correctly! Please contact support.": "Sembra che non è stato configurato correttamente! Contatta il supporto.",
"Change Password": "Cambia password",
"Current Password": "Password attuale",
"Save Changes": "Salva modifiche",
"Re-Sync Discord": "Ri-sincronizza Discord",
"You are verified!": "Sei verificato!",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "Ricevi crediti extra è un numero di slot per server aumentato verificando il tuo account",
"Server configuration": "Configurazione del server",
"Error!": "Errore!",
"Make sure to link your products to nodes and eggs.": "Assicurati di connettere i prodotti ai nodi e alle uova (eggs).",
"There has to be at least 1 valid product for server creation": "Deve esserci almeno un prodotto valido per creare un server",
"No products available!": "Nessun prodotto disponibile!",
"No nodes have been linked!": "Nessun nodo è stato connesso!",
"No nests available!": "Nessun nido (nest) disponibile!",
"No eggs have been linked!": "Nessun uovo (egg) è stato connesso!",
"Software / Games": "Software / Giochi",
"Please select software ...": "Per favore selezione il software...",
"Specification": "Specifiche",
"No selection": "Nessuna selezione",
"per month": "al mese",
"Not enough credits!": "Crediti insufficienti!",
"Please select a configuration ...": "Per favore seleziona una configurazione…",
"No resources found matching current configuration": "Nessuna risorsa trovata con la configurazione attuale",
"No nodes found matching current configuration": "Nessuna nodo con la configurazione attuale trovato",
"Please select a node ...": "Per favore seleziona un nodo ...",
"Create server": "Crea un server",
"Use your servers on our": "Utilizza i tuoi server sul nostro",
"pterodactyl panel": "pannello pterodactyl",
"Server limit reached!": "Limite server raggiunto!",
"Create Server": "Crea un server",
"Manage": "Gestisci",
"Delete server": "Cancella un server",
"Price per Hour": "Costo allora",
"Price per Month": "Costo al mese",
"Date": "Data",
"To": "A",
"From": "Da",
"Pending": "In attesa",
"Subtotal": "Totale Parziale",
"Submit Payment": "Invia pagamento",
"Payment Methods": "Metodi di Pagamento",
"By purchasing this product you agree and accept our terms of service": "Acquistando il prodotto accetti i nostri termini di servizio",
"There are no store products!": "Non ci sono prodotti del negozio!",
"The store is not correctly configured!": "Il negozio non è configurato correttamente!",
"Out of Credits in": "Crediti esauriti in",
"days": "giorni",
"hours": "ore",
"You ran out of Credits": "Hai finito i crediti",
"Profile updated": "Profilo aggiornato",
"You are required to verify your email address before you can create a server.": "Devi verificare il tuo indirizzo e-mail prima di poter creare un server.",
"You are required to link your discord account before you can create a server.": "Devi connettere il tuo account Discord prima di poter creare un server.",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "Nessuna allocazione trovata soddisfa i requisiti per abilitare il deployment automatico su questo nodo.",
"Server removed": "Server rimosso",
"Server created": "Server creato",
"An exception has occurred while trying to remove a resource \"": "Si è verificato un errore cercando di rimuovere la risorsa",
"You are required to verify your email address before you can purchase credits.": "Devi verificare il tuo indirizzo e-mail prima di poter acquistare crediti.",
"You are required to link your discord account before you can purchase ": "Devi connettere il tuo account Discord prima di poter acquistare crediti ",
"Warning!": "Attenzione!",
"api key created!": "api key creata!",
"api key updated!": "api key aggiornata!",
"api key has been removed!": "lapi key è stata rimossa!",
"configuration has been updated!": "la configurazione è stata aggiornata!",
"Pterodactyl synced": "Pterodactyl sincronizzato",
"Your credit balance has been increased!": "Il you bilancio di crediti è aumentato!",
"Payment was Canceled": "Pagamento annullato",
"Store item has been created!": "Larticolo è stato creato!",
"Store item has been updated!": "Larticolo è stato aggiornato!",
"Product has been updated!": "Il prodotto è stato aggiornato!",
"Store item has been removed!": "Io prodotto è stato rimosso!",
"Product has been created!": "Il prodotto è stato creato!",
"Product has been removed!": "Il prodotto è stato rimosso!",
"Server has been updated!": "Il server è stato aggiornato!",
"Icons updated!": "Le icone sono state aggiornate!",
"link has been created!": "la connessione è stata creata!",
"link has been updated!": "la connessione è stata aggiornata!",
"user has been removed!": "lutente è stato rimosso!",
"Notification sent!": "Notifica inviata!",
"User has been updated!": "Lutente è stato aggiornato!",
"User does not exists on pterodactyl's panel": "Lutente non esiste sullo pterodactyl panel",
"voucher has been created!": "il voucher è stato creato!",
"voucher has been updated!": "il voucher è stato aggiornato!",
"voucher has been removed!": "il voucher è stato rimosso!",
"This voucher has reached the maximum amount of uses": "Questo voucher ha raggiunto il numero massimo di utilizzi",
"This voucher has expired": "Questo voucher è scaduto",
"You already redeemed this voucher code": "Hai già riscattato questo voucher",
"You can't redeem this voucher because you would exceed the limit of ": "Non puoi riscattare questo voucher perché raggiungeresti il limite di ",
"have been added to your balance!": "sono stati aggiunti al tuo saldo!",
"Invoice": "Fattura",
"Serial No.": "Numero di serie.",
"Invoice date": "Data della fattura",
"Seller": "Venditore",
"Buyer": "Cliente",
"Address": "Indirizzo",
"VAT code": "Partita IVA",
"Phone": "Telefono",
"Units": "Unità",
"Qty": "Quantità",
"Discount": "Sconto",
"Sub total": "Sub totale",
"Total discount": "Sconto Totale",
"Taxable amount": "Importo tassabile",
"Total taxes": "Totale tasse",
"Tax rate": "Percentuale tasse",
"Total amount": "Importo Totale",
"Please pay until": "Per favore paga fino",
"Amount in words": "Numero in parole",
"Notes": "Note",
"Shipping": "Spedizione",
"Paid": "Pagamento",
"Due:": "Scadenza:",
"Invoice Settings": "Impostazioni fattura",
"Download all Invoices": "Scarica tutte le fatture",
"Enter your companys name": "Inserisci il nome della tua azienda",
"Enter your companys address": "Inserisci l'indirizzo della tua azienda",
"Enter your companys phone number": "Inserisci il numero di telefono dell'azienda",
"Enter your companys VAT id": "Inserisci il numero di partita IVA della tua azienda",
"Enter your companys email address": "Inserisci lindirizzo email della tua azienda",
"Enter your companys website": "Inserisci il sito della tua azienda",
"Enter your custom invoice prefix": "Inserisci il prefisso personalizzato della fattura",
"Select Invoice Logo": "Inserisci il logo della fattura",
"Payment Confirmation": "Conferma pagamento",
"Payment Confirmed!": "Pagamento confermato!",
"Server Creation Error": "Errore di creazione del server",
"Your servers have been suspended!": "I tuoi server sono stati sospesi!",
"To automatically re-enable your server/s, you need to purchase more credits.": "Per ri-abilitare i tuoi server automaticamente, devi acquistare più crediti.",
"Purchase credits": "Acquista crediti",
"If you have any questions please let us know.": "Se hai una domanda faccelo sapere.",
"Regards": "Cordialmente",
"Getting started!": "Come iniziare!",
"EXPIRED": "SCADUTO",
"VALID": "VALIDO",
"Unsuspend": "Riabilita",
"Suspend": "Sospendi",
"Delete": "Elimina",
"Login as User": "Accedi come utente",
"Clone": "Clona",
"Amount due": "Importo dovuto",
"Your Payment was successful!": "Pagamento effettuato con successo!",
"Hello": "Ciao",
"Your payment was processed successfully!": "Il pagamento è stato effettuato con successo!"
}

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Credenziali non valide.',
'password' => 'La password non è valida.',
'throttle' => 'Troppi tentativi di accesso. Riprova tra :seconds secondi.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Successivo &raquo;',
'previous' => '&laquo; Precedente',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'La password è stata reimpostata!',
'sent' => 'Ti abbiamo inviato una email con il link per il reset della password!',
'throttled' => 'Per favore, attendi prima di riprovare.',
'token' => 'Questo token di reset della password non è valido.',
'user' => 'Non riusciamo a trovare un utente con questo indirizzo email.',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => ':attribute deve essere accettato.',
'accepted_if' => ':attribute deve essere accettato quando :other è :value.',
'active_url' => ':attribute non è un URL valido.',
'after' => ':attribute deve essere una data successiva al :date.',
'after_or_equal' => ':attribute deve essere una data successiva o uguale al :date.',
'alpha' => ':attribute può contenere solo lettere.',
'alpha_dash' => ':attribute può contenere solo lettere, numeri e trattini.',
'alpha_num' => ':attribute può contenere solo lettere e numeri.',
'array' => ':attribute deve essere un array.',
'attached' => ':attribute è già associato.',
'before' => ':attribute deve essere una data precedente al :date.',
'before_or_equal' => ':attribute deve essere una data precedente o uguale al :date.',
'between' => [
'array' => ':attribute deve avere tra :min - :max elementi.',
'file' => ':attribute deve trovarsi tra :min - :max kilobyte.',
'numeric' => ':attribute deve trovarsi tra :min - :max.',
'string' => ':attribute deve trovarsi tra :min - :max caratteri.',
],
'boolean' => 'Il campo :attribute deve essere vero o falso.',
'confirmed' => 'Il campo di conferma per :attribute non coincide.',
'current_password' => 'Password non valida.',
'date' => ':attribute non è una data valida.',
'date_equals' => ':attribute deve essere una data e uguale a :date.',
'date_format' => ':attribute non coincide con il formato :format.',
'declined' => ':attribute deve essere rifiutato.',
'declined_if' => ':attribute deve essere rifiutato quando :other è :value.',
'different' => ':attribute e :other devono essere differenti.',
'digits' => ':attribute deve essere di :digits cifre.',
'digits_between' => ':attribute deve essere tra :min e :max cifre.',
'dimensions' => 'Le dimensioni dell\'immagine di :attribute non sono valide.',
'distinct' => ':attribute contiene un valore duplicato.',
'email' => ':attribute non è valido.',
'ends_with' => ':attribute deve finire con uno dei seguenti valori: :values',
'exists' => ':attribute selezionato non è valido.',
'file' => ':attribute deve essere un file.',
'filled' => 'Il campo :attribute deve contenere un valore.',
'gt' => [
'array' => ':attribute deve contenere più di :value elementi.',
'file' => ':attribute deve essere maggiore di :value kilobyte.',
'numeric' => ':attribute deve essere maggiore di :value.',
'string' => ':attribute deve contenere più di :value caratteri.',
],
'gte' => [
'array' => ':attribute deve contenere un numero di elementi uguale o maggiore di :value.',
'file' => ':attribute deve essere uguale o maggiore di :value kilobyte.',
'numeric' => ':attribute deve essere uguale o maggiore di :value.',
'string' => ':attribute deve contenere un numero di caratteri uguale o maggiore di :value.',
],
'image' => ':attribute deve essere un\'immagine.',
'in' => ':attribute selezionato non è valido.',
'in_array' => 'Il valore del campo :attribute non esiste in :other.',
'integer' => ':attribute deve essere un numero intero.',
'ip' => ':attribute deve essere un indirizzo IP valido.',
'ipv4' => ':attribute deve essere un indirizzo IPv4 valido.',
'ipv6' => ':attribute deve essere un indirizzo IPv6 valido.',
'json' => ':attribute deve essere una stringa JSON valida.',
'lt' => [
'array' => ':attribute deve contenere meno di :value elementi.',
'file' => ':attribute deve essere minore di :value kilobyte.',
'numeric' => ':attribute deve essere minore di :value.',
'string' => ':attribute deve contenere meno di :value caratteri.',
],
'lte' => [
'array' => ':attribute deve contenere un numero di elementi minore o uguale a :value.',
'file' => ':attribute deve essere minore o uguale a :value kilobyte.',
'numeric' => ':attribute deve essere minore o uguale a :value.',
'string' => ':attribute deve contenere un numero di caratteri minore o uguale a :value.',
],
'max' => [
'array' => ':attribute non può avere più di :max elementi.',
'file' => ':attribute non può essere superiore a :max kilobyte.',
'numeric' => ':attribute non può essere superiore a :max.',
'string' => ':attribute non può contenere più di :max caratteri.',
],
'mimes' => ':attribute deve essere del tipo: :values.',
'mimetypes' => ':attribute deve essere del tipo: :values.',
'min' => [
'array' => ':attribute deve avere almeno :min elementi.',
'file' => ':attribute deve essere almeno di :min kilobyte.',
'numeric' => ':attribute deve essere almeno :min.',
'string' => ':attribute deve contenere almeno :min caratteri.',
],
'multiple_of' => ':attribute deve essere un multiplo di :value',
'not_in' => 'Il valore selezionato per :attribute non è valido.',
'not_regex' => 'Il formato di :attribute non è valido.',
'numeric' => ':attribute deve essere un numero.',
'password' => 'Il campo :attribute non è corretto.',
'present' => 'Il campo :attribute deve essere presente.',
'prohibited' => ':attribute non consentito.',
'prohibited_if' => ':attribute non consentito quando :other è :value.',
'prohibited_unless' => ':attribute non consentito a meno che :other sia contenuto in :values.',
'prohibits' => ':attribute impedisce a :other di essere presente.',
'regex' => 'Il formato del campo :attribute non è valido.',
'relatable' => ':attribute non può essere associato a questa risorsa.',
'required' => 'Il campo :attribute è richiesto.',
'required_if' => 'Il campo :attribute è richiesto quando :other è :value.',
'required_unless' => 'Il campo :attribute è richiesto a meno che :other sia in :values.',
'required_with' => 'Il campo :attribute è richiesto quando :values è presente.',
'required_with_all' => 'Il campo :attribute è richiesto quando :values sono presenti.',
'required_without' => 'Il campo :attribute è richiesto quando :values non è presente.',
'required_without_all' => 'Il campo :attribute è richiesto quando nessuno di :values è presente.',
'same' => ':attribute e :other devono coincidere.',
'size' => [
'array' => ':attribute deve contenere :size elementi.',
'file' => ':attribute deve essere :size kilobyte.',
'numeric' => ':attribute deve essere :size.',
'string' => ':attribute deve contenere :size caratteri.',
],
'starts_with' => ':attribute deve iniziare con uno dei seguenti: :values',
'string' => ':attribute deve essere una stringa.',
'timezone' => ':attribute deve essere una zona valida.',
'unique' => ':attribute è stato già utilizzato.',
'uploaded' => ':attribute non è stato caricato.',
'url' => 'Il formato del campo :attribute non è valido.',
'uuid' => ':attribute deve essere un UUID valido.',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
];

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Deze combinatie van e-mailadres en wachtwoord is niet geldig.',
'password' => 'Het opgegeven wachtwoord is onjuist.',
'throttle' => 'Te veel mislukte loginpogingen. Probeer het over :seconds seconden nogmaals.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Volgende &raquo;',
'previous' => '&laquo; Vorige',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'Het wachtwoord van uw account is gewijzigd.',
'sent' => 'We hebben een e-mail verstuurd met instructies om een nieuw wachtwoord in te stellen.',
'throttled' => 'Gelieve even te wachten voor u het opnieuw probeert.',
'token' => 'Dit wachtwoordhersteltoken is niet geldig.',
'user' => 'Geen gebruiker bekend met het e-mailadres.',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => ':Attribute moet geaccepteerd zijn.',
'accepted_if' => ':Attribute moet worden geaccepteerd als :other :value is.',
'active_url' => ':Attribute is geen geldige URL.',
'after' => ':Attribute moet een datum na :date zijn.',
'after_or_equal' => ':Attribute moet een datum na of gelijk aan :date zijn.',
'alpha' => ':Attribute mag alleen letters bevatten.',
'alpha_dash' => ':Attribute mag alleen letters, nummers, underscores (_) en streepjes (-) bevatten.',
'alpha_num' => ':Attribute mag alleen letters en nummers bevatten.',
'array' => ':Attribute moet geselecteerde elementen bevatten.',
'attached' => ':Attribute is reeds gekoppeld.',
'before' => ':Attribute moet een datum voor :date zijn.',
'before_or_equal' => ':Attribute moet een datum voor of gelijk aan :date zijn.',
'between' => [
'array' => ':Attribute moet tussen :min en :max items bevatten.',
'file' => ':Attribute moet tussen :min en :max kilobytes zijn.',
'numeric' => ':Attribute moet tussen :min en :max zijn.',
'string' => ':Attribute moet tussen :min en :max karakters zijn.',
],
'boolean' => ':Attribute moet ja of nee zijn.',
'confirmed' => ':Attribute bevestiging komt niet overeen.',
'current_password' => 'Huidig wachtwoord is onjuist.',
'date' => ':Attribute moet een datum bevatten.',
'date_equals' => ':Attribute moet een datum gelijk aan :date zijn.',
'date_format' => ':Attribute moet een geldig datum formaat bevatten.',
'declined' => ':attribute moet afgewezen worden.',
'declined_if' => ':attribute moet afgewezen worden wanneer :other gelijk is aan :value.',
'different' => ':Attribute en :other moeten verschillend zijn.',
'digits' => ':Attribute moet bestaan uit :digits cijfers.',
'digits_between' => ':Attribute moet bestaan uit minimaal :min en maximaal :max cijfers.',
'dimensions' => ':Attribute heeft geen geldige afmetingen voor afbeeldingen.',
'distinct' => ':Attribute heeft een dubbele waarde.',
'email' => ':Attribute is geen geldig e-mailadres.',
'ends_with' => ':Attribute moet met één van de volgende waarden eindigen: :values.',
'exists' => ':Attribute bestaat niet.',
'file' => ':Attribute moet een bestand zijn.',
'filled' => ':Attribute is verplicht.',
'gt' => [
'array' => 'De :attribute moet meer dan :value waardes bevatten.',
'file' => 'De :attribute moet groter zijn dan :value kilobytes.',
'numeric' => 'De :attribute moet groter zijn dan :value.',
'string' => 'De :attribute moet meer dan :value tekens bevatten.',
],
'gte' => [
'array' => 'De :attribute moet :value waardes of meer bevatten.',
'file' => 'De :attribute moet groter of gelijk zijn aan :value kilobytes.',
'numeric' => 'De :attribute moet groter of gelijk zijn aan :value.',
'string' => 'De :attribute moet minimaal :value tekens bevatten.',
],
'image' => ':Attribute moet een afbeelding zijn.',
'in' => ':Attribute is ongeldig.',
'in_array' => ':Attribute bestaat niet in :other.',
'integer' => ':Attribute moet een getal zijn.',
'ip' => ':Attribute moet een geldig IP-adres zijn.',
'ipv4' => ':Attribute moet een geldig IPv4-adres zijn.',
'ipv6' => ':Attribute moet een geldig IPv6-adres zijn.',
'json' => ':Attribute moet een geldige JSON-string zijn.',
'lt' => [
'array' => 'De :attribute moet minder dan :value waardes bevatten.',
'file' => 'De :attribute moet kleiner zijn dan :value kilobytes.',
'numeric' => 'De :attribute moet kleiner zijn dan :value.',
'string' => 'De :attribute moet minder dan :value tekens bevatten.',
],
'lte' => [
'array' => 'De :attribute moet :value waardes of minder bevatten.',
'file' => 'De :attribute moet kleiner of gelijk zijn aan :value kilobytes.',
'numeric' => 'De :attribute moet kleiner of gelijk zijn aan :value.',
'string' => 'De :attribute moet maximaal :value tekens bevatten.',
],
'max' => [
'array' => ':Attribute mag niet meer dan :max items bevatten.',
'file' => ':Attribute mag niet meer dan :max kilobytes zijn.',
'numeric' => ':Attribute mag niet hoger dan :max zijn.',
'string' => ':Attribute mag niet uit meer dan :max tekens bestaan.',
],
'mimes' => ':Attribute moet een bestand zijn van het bestandstype :values.',
'mimetypes' => ':Attribute moet een bestand zijn van het bestandstype :values.',
'min' => [
'array' => ':Attribute moet minimaal :min items bevatten.',
'file' => ':Attribute moet minimaal :min kilobytes zijn.',
'numeric' => ':Attribute moet minimaal :min zijn.',
'string' => ':Attribute moet minimaal :min tekens zijn.',
],
'multiple_of' => ':Attribute moet een veelvoud van :value zijn.',
'not_in' => 'Het formaat van :attribute is ongeldig.',
'not_regex' => 'De :attribute formaat is ongeldig.',
'numeric' => ':Attribute moet een nummer zijn.',
'password' => 'Wachtwoord is onjuist.',
'present' => ':Attribute moet bestaan.',
'prohibited' => ':Attribute veld is verboden.',
'prohibited_if' => ':Attribute veld is verboden indien :other gelijk is aan :value.',
'prohibited_unless' => ':Attribute veld is verboden tenzij :other gelijk is aan :values.',
'prohibits' => 'Het veld :attribute verbiedt de aanwezigheid van :other.',
'regex' => ':Attribute formaat is ongeldig.',
'relatable' => ':Attribute mag niet gekoppeld worden aan deze bron.',
'required' => ':Attribute is verplicht.',
'required_if' => ':Attribute is verplicht indien :other gelijk is aan :value.',
'required_unless' => ':Attribute is verplicht tenzij :other gelijk is aan :values.',
'required_with' => ':Attribute is verplicht i.c.m. :values',
'required_with_all' => ':Attribute is verplicht i.c.m. :values',
'required_without' => ':Attribute is verplicht als :values niet ingevuld is.',
'required_without_all' => ':Attribute is verplicht als :values niet ingevuld zijn.',
'same' => ':Attribute en :other moeten overeenkomen.',
'size' => [
'array' => ':Attribute moet :size items bevatten.',
'file' => ':Attribute moet :size kilobyte zijn.',
'numeric' => ':Attribute moet :size zijn.',
'string' => ':Attribute moet :size tekens zijn.',
],
'starts_with' => ':Attribute moet starten met een van de volgende: :values.',
'string' => ':Attribute moet een tekst zijn.',
'timezone' => ':Attribute moet een geldige tijdzone zijn.',
'unique' => ':Attribute is al in gebruik.',
'uploaded' => 'Het uploaden van :attribute is mislukt.',
'url' => ':Attribute moet een geldig URL zijn.',
'uuid' => ':Attribute moet een geldig UUID zijn.',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
];

View file

@ -0,0 +1,18 @@
<?php
/*
|--------------------------------------------------------------------------
| Authentication Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used during authentication for various
| messages that we need to display to the user. You are free to modify
| these language lines according to your application's requirements.
|
*/
return [
'failed' => 'Błędny login lub hasło.',
'password' => 'Podane hasło jest nieprawidłowe.',
'throttle' => 'Za dużo nieudanych prób logowania. Proszę spróbować za :seconds sekund.',
];

View file

@ -0,0 +1,17 @@
<?php
/*
|--------------------------------------------------------------------------
| Pagination Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are used by the paginator library to build
| the simple pagination links. You are free to change them to anything
| you want to customize your views to better match your application.
|
*/
return [
'next' => 'Następna &raquo;',
'previous' => '&laquo; Poprzednia',
];

View file

@ -0,0 +1,20 @@
<?php
/*
|--------------------------------------------------------------------------
| Password Reset Language Lines
|--------------------------------------------------------------------------
|
| The following language lines are the default lines which match reasons
| that are given by the password broker for a password update attempt
| has failed, such as for an invalid token or invalid new password.
|
*/
return [
'reset' => 'Hasło zostało zresetowane!',
'sent' => 'Przypomnienie hasła zostało wysłane!',
'throttled' => 'Proszę zaczekać zanim spróbujesz ponownie.',
'token' => 'Token resetowania hasła jest nieprawidłowy.',
'user' => 'Nie znaleziono użytkownika z takim adresem e-mail.',
];

View file

@ -0,0 +1,135 @@
<?php
/*
|--------------------------------------------------------------------------
| Validation Language Lines
|--------------------------------------------------------------------------
|
| The following language lines contain the default error messages used by
| the validator class. Some of these rules have multiple versions such
| as the size rules. Feel free to tweak each of these messages here.
|
*/
return [
'accepted' => 'Pole :attribute musi zostać zaakceptowane.',
'accepted_if' => 'Pole :attribute musi zostać zaakceptowane gdy :other ma wartość :value.',
'active_url' => 'Pole :attribute jest nieprawidłowym adresem URL.',
'after' => 'Pole :attribute musi być datą późniejszą od :date.',
'after_or_equal' => 'Pole :attribute musi być datą nie wcześniejszą niż :date.',
'alpha' => 'Pole :attribute może zawierać jedynie litery.',
'alpha_dash' => 'Pole :attribute może zawierać jedynie litery, cyfry i myślniki.',
'alpha_num' => 'Pole :attribute może zawierać jedynie litery i cyfry.',
'array' => 'Pole :attribute musi być tablicą.',
'attached' => 'Ten :attribute jest już dołączony.',
'before' => 'Pole :attribute musi być datą wcześniejszą od :date.',
'before_or_equal' => 'Pole :attribute musi być datą nie późniejszą niż :date.',
'between' => [
'array' => 'Pole :attribute musi składać się z :min - :max elementów.',
'file' => 'Pole :attribute musi zawierać się w granicach :min - :max kilobajtów.',
'numeric' => 'Pole :attribute musi zawierać się w granicach :min - :max.',
'string' => 'Pole :attribute musi zawierać się w granicach :min - :max znaków.',
],
'boolean' => 'Pole :attribute musi mieć wartość logiczną prawda albo fałsz.',
'confirmed' => 'Potwierdzenie pola :attribute nie zgadza się.',
'current_password' => 'Hasło jest nieprawidłowe.',
'date' => 'Pole :attribute nie jest prawidłową datą.',
'date_equals' => 'Pole :attribute musi być datą równą :date.',
'date_format' => 'Pole :attribute nie jest w formacie :format.',
'declined' => 'Pole :attribute musi zostać odrzucony.',
'declined_if' => 'Pole :attribute musi zostać odrzucony, gdy :other ma wartość :value.',
'different' => 'Pole :attribute oraz :other muszą się różnić.',
'digits' => 'Pole :attribute musi składać się z :digits cyfr.',
'digits_between' => 'Pole :attribute musi mieć od :min do :max cyfr.',
'dimensions' => 'Pole :attribute ma niepoprawne wymiary.',
'distinct' => 'Pole :attribute ma zduplikowane wartości.',
'email' => 'Pole :attribute nie jest poprawnym adresem e-mail.',
'ends_with' => 'Pole :attribute musi kończyć się jedną z następujących wartości: :values.',
'exists' => 'Zaznaczone pole :attribute jest nieprawidłowe.',
'file' => 'Pole :attribute musi być plikiem.',
'filled' => 'Pole :attribute nie może być puste.',
'gt' => [
'array' => 'Pole :attribute musi mieć więcej niż :value elementów.',
'file' => 'Pole :attribute musi być większe niż :value kilobajtów.',
'numeric' => 'Pole :attribute musi być większe niż :value.',
'string' => 'Pole :attribute musi być dłuższe niż :value znaków.',
],
'gte' => [
'array' => 'Pole :attribute musi mieć :value lub więcej elementów.',
'file' => 'Pole :attribute musi być większe lub równe :value kilobajtów.',
'numeric' => 'Pole :attribute musi być większe lub równe :value.',
'string' => 'Pole :attribute musi być dłuższe lub równe :value znaków.',
],
'image' => 'Pole :attribute musi być obrazkiem.',
'in' => 'Zaznaczony element :attribute jest nieprawidłowy.',
'in_array' => 'Pole :attribute nie znajduje się w :other.',
'integer' => 'Pole :attribute musi być liczbą całkowitą.',
'ip' => 'Pole :attribute musi być prawidłowym adresem IP.',
'ipv4' => 'Pole :attribute musi być prawidłowym adresem IPv4.',
'ipv6' => 'Pole :attribute musi być prawidłowym adresem IPv6.',
'json' => 'Pole :attribute musi być poprawnym ciągiem znaków JSON.',
'lt' => [
'array' => 'Pole :attribute musi mieć mniej niż :value elementów.',
'file' => 'Pole :attribute musi być mniejsze niż :value kilobajtów.',
'numeric' => 'Pole :attribute musi być mniejsze niż :value.',
'string' => 'Pole :attribute musi być krótsze niż :value znaków.',
],
'lte' => [
'array' => 'Pole :attribute musi mieć :value lub mniej elementów.',
'file' => 'Pole :attribute musi być mniejsze lub równe :value kilobajtów.',
'numeric' => 'Pole :attribute musi być mniejsze lub równe :value.',
'string' => 'Pole :attribute musi być krótsze lub równe :value znaków.',
],
'max' => [
'array' => 'Pole :attribute nie może mieć więcej niż :max elementów.',
'file' => 'Pole :attribute nie może być większe niż :max kilobajtów.',
'numeric' => 'Pole :attribute nie może być większe niż :max.',
'string' => 'Pole :attribute nie może być dłuższe niż :max znaków.',
],
'mimes' => 'Pole :attribute musi być plikiem typu :values.',
'mimetypes' => 'Pole :attribute musi być plikiem typu :values.',
'min' => [
'array' => 'Pole :attribute musi mieć przynajmniej :min elementów.',
'file' => 'Pole :attribute musi mieć przynajmniej :min kilobajtów.',
'numeric' => 'Pole :attribute musi być nie mniejsze od :min.',
'string' => 'Pole :attribute musi mieć przynajmniej :min znaków.',
],
'multiple_of' => 'Pole :attribute musi być wielokrotnością wartości :value',
'not_in' => 'Zaznaczony :attribute jest nieprawidłowy.',
'not_regex' => 'Format pola :attribute jest nieprawidłowy.',
'numeric' => 'Pole :attribute musi być liczbą.',
'password' => 'Hasło jest nieprawidłowe.',
'present' => 'Pole :attribute musi być obecne.',
'prohibited' => 'Pole :attribute jest zabronione.',
'prohibited_if' => 'Pole :attribute jest zabronione, gdy :other to :value.',
'prohibited_unless' => 'Pole :attribute jest zabronione, chyba że :other jest w :values.',
'prohibits' => 'Pole :attribute zabrania obecności :other.',
'regex' => 'Format pola :attribute jest nieprawidłowy.',
'relatable' => 'Ten :attribute może nie być powiązany z tym zasobem.',
'required' => 'Pole :attribute jest wymagane.',
'required_if' => 'Pole :attribute jest wymagane gdy :other ma wartość :value.',
'required_unless' => 'Pole :attribute jest wymagane jeżeli :other nie znajduje się w :values.',
'required_with' => 'Pole :attribute jest wymagane gdy :values jest obecny.',
'required_with_all' => 'Pole :attribute jest wymagane gdy wszystkie :values są obecne.',
'required_without' => 'Pole :attribute jest wymagane gdy :values nie jest obecny.',
'required_without_all' => 'Pole :attribute jest wymagane gdy żadne z :values nie są obecne.',
'same' => 'Pole :attribute i :other muszą być takie same.',
'size' => [
'array' => 'Pole :attribute musi zawierać :size elementów.',
'file' => 'Pole :attribute musi mieć :size kilobajtów.',
'numeric' => 'Pole :attribute musi mieć :size.',
'string' => 'Pole :attribute musi mieć :size znaków.',
],
'starts_with' => 'Pole :attribute musi zaczynać się jedną z następujących wartości: :values.',
'string' => 'Pole :attribute musi być ciągiem znaków.',
'timezone' => 'Pole :attribute musi być prawidłową strefą czasową.',
'unique' => 'Taki :attribute już występuje.',
'uploaded' => 'Nie udało się wgrać pliku :attribute.',
'url' => 'Format pola :attribute jest nieprawidłowy.',
'uuid' => 'Pole :attribute musi być poprawnym identyfikatorem UUID.',
'custom' => [
'attribute-name' => [
'rule-name' => 'custom-message',
],
],
];

328
resources/lang/zh.json Normal file
View file

@ -0,0 +1,328 @@
{
"Activity Logs": "活动日志",
"No recent activity from cronjobs": "最近没有cronjob",
"Check the docs for it here": "在这里查看它的文档",
"Are cronjobs running?": "cronjob正在运行吗",
"Causer": "引起者",
"Description": "描述",
"Created at": "创建于",
"Edit Configuration": "编辑配置",
"Text Field": "文本字段",
"Cancel": "取消",
"Close": "关闭",
"Save": "保存",
"true": "是",
"false": "否",
"Configurations": "配置",
"Dashboard": "控制面板",
"Key": "密钥",
"Value": "价值",
"Type": "类型",
"Admin Overview": "管理员概述",
"Support server": "支持服务器",
"Documentation": "文档",
"Github": "Github",
"Support ControlPanel": "支持我们",
"Servers": "服务器",
"Users": "用户",
"Total": "总数",
"Payments": "支付费用",
"Pterodactyl": "翼手龙",
"Sync": "同步",
"Resources": "资源",
"Count": "计数",
"Locations": "地点",
"Node": "节点",
"Nodes": "节点",
"Nests": "Nests",
"Eggs": "Eggs",
"Last updated :date": "最后更新时间",
"Purchase": "购买",
"ID": "身份证",
"User": "用户",
"Amount": "数量",
"Product Price": "产品价格",
"Tax": "税收",
"Total Price": "总价",
"Payment_ID": "付款人ID",
"Payer_ID": "付款人ID",
"Product": "产品",
"Products": "产品",
"Create": "创建",
"Product Details": "产品详情",
"Server Details": "服务器详细信息",
"Product Linking": "产品链接",
"Name": "名称",
"Price in": "价格",
"Memory": "内存",
"Cpu": "处理器",
"Swap": "虚拟内存",
"Disk": "磁盘",
"Minimum": "最小值",
"IO": "IO",
"Databases": "数据库",
"Database": "数据库",
"Backups": "备份",
"Allocations": "分配",
"Disabled": "禁用",
"Submit": "提交",
"This product will only be available for these nodes": "该产品仅适用于这些节点",
"This product will only be available for these eggs": "该产品仅适用于这些鸡蛋",
"Will hide this option from being selected": "将隐藏此选项,使其不能被选中",
"Link your products to nodes and eggs to create dynamic pricing for each option": "将你的产品链接到节点和彩蛋上,为每个选项创建动态定价。",
"Setting to -1 will use the value from configuration.": "设置为-1将使用配置中的值。",
"This is what the users sees": "这就是用户看到的情况",
"Edit": "编辑",
"Price": "价格",
"Are you sure you wish to delete?": "你确定你要删除吗?",
"Create new": "创建新的",
"Show": "显示",
"Updated at": "更新于",
"Suspended at": "暂停在",
"Settings": "设置",
"Dashboard icons": "仪表板图标",
"Select panel icon": "选择面板图标",
"Select panel favicon": "选择面板图标",
"Token": "代币",
"Last used": "最后使用",
"Store": "商店",
"Currency code": "货币代码",
"Checkout the paypal docs to select the appropriate code": "查看支付宝文档,选择合适的代码。",
"Quantity": "数量",
"Amount given to the user after purchasing": "购买后给用户的金额",
"Display": "显示",
"This is what the user sees at store and checkout": "这就是用户在商店和结账时看到的内容。",
"This is what the user sees at checkout": "这是用户在结账时看到的内容",
"Adds 1000 credits to your account": "为您的账户增加1000个积分",
"Active": "激活",
"Paypal is not configured.": "Paypal没有被配置。",
"To configure PayPal, head to the .env and add your PayPals client id and secret.": "要配置PayPal请到.env中添加你的PayPal的客户ID和秘密。",
"Useful Links": "有用的链接",
"Icon class name": "图标类名称",
"You can find available free icons": "你可以找到可用的免费图标",
"Title": "标题",
"Link": "链接",
"Username": "用户名",
"Email": "电子邮件",
"Pterodactly ID": "翼神ID",
"Server Limit": "服务器限制",
"Role": "角色",
"Administrator": "管理员",
"Client": "客户",
"Member": "会员",
"New Password": "新密码",
"Confirm Password": "确认密码",
"This ID refers to the user account created on pterodactyls panel.": "这个ID指的是在翼龙面板上创建的用户账户。",
"Only edit this if you know what youre doing :)": "只有在你知道自己在做什么的情况下才可以编辑这个 :)",
"Verified": "已验证",
"Last seen": "最后一次看到",
"Notify": "通知",
"All": "全部",
"Send via": "通过以下方式发送",
"Content": "内容",
"Notifications": "通知",
"Usage": "使用情况",
"Config": "配置",
"Vouchers": "凭证",
"Voucher details": "凭证细节",
"Memo": "备忘录",
"Code": "编码",
"Uses": "使用方式",
"Expires at": "过期时间",
"Max": "最大",
"Random": "随机",
"Status": "状态",
"Used / Uses": "已使用/使用情况",
"Expires": "过期",
"Please confirm your password before continuing.": "在继续之前,请确认您的密码。",
"Password": "密码",
"Forgot Your Password?": "忘记密码?",
"Sign in to start your session": "登录以开始您的会议",
"Remember Me": "记住我",
"Sign In": "登录",
"Register a new membership": "注册一个新的会员",
"You forgot your password? Here you can easily retrieve a new password.": "你忘记了你的密码?在这里您可以轻松地找回一个新的密码。",
"Request new password": "申请新密码",
"Login": "登录",
"You are only one step a way from your new password, recover your password now.": "您只差一点就能找到您的密码了。",
"Retype password": "重新输入密码",
"Change password": "更改密码",
"I already have a membership": "我已经有一个会员资格",
"Register": "注册",
"Verify Your Email Address": "验证您的电子邮件地址",
"A fresh verification link has been sent to your email address.": "一个新的验证链接已被发送到您的电子邮件地址。",
"Before proceeding, please check your email for a verification link.": "在继续进行之前,请检查您的电子邮件是否有验证链接。",
"If you did not receive the email": "如果您没有收到该邮件",
"click here to request another": "请点击这里申请另一个",
"Home": "首页",
"Languages": "语言",
"See all Notifications": "查看所有通知",
"Profile": "简介",
"Log back in": "重新登录",
"Logout": "注销",
"Administration": "行政管理",
"Overview": "纵观全局",
"Application API": "应用程序API",
"Management": "管理层",
"Other": "其他的",
"Logs": "日志",
"Redeem code": "兑换代码",
"You have not yet verified your email address": "你还没有验证你的电子邮件地址",
"Click here to resend verification email": "点击这里重新发送验证邮件",
"Please contact support If you didnt receive your verification email.": "如果你没有收到你的验证邮件,请联系支持。",
"Thank you for your purchase!": "谢谢您的购买!",
"Your payment has been confirmed; Your credit balance has been updated.": "您的付款已被确认;您的信用余额已被更新。",
"Payment ID": "付款编号",
"Balance": "余额",
"User ID": "用户ID",
"Thanks": "谢谢",
"Redeem voucher code": "兑换优惠券代码",
"Redeem": "赎回",
"All notifications": "所有通知",
"Required Email verification!": "需要电子邮件验证!",
"Required Discord verification!": "必需的 Discord 验证!",
"You have not yet verified your discord account": "你还没有验证你的discord账户",
"Login with discord": "请用discord登录",
"Please contact support If you face any issues.": "如果你遇到任何问题,请联系支持。",
"Due to system settings you are required to verify your discord account!": "由于系统设置的原因,您需要验证您的 Discord 帐户!",
"It looks like this hasnt been set-up correctly! Please contact support.": "看起来这并没有被正确设置!请联系技术支持。",
"Change Password": "更改密码",
"Current Password": "当前密码",
"Save Changes": "保存更改",
"Re-Sync Discord": "重新同步 Discord",
"You are verified!": "你已经被验证了!",
"By verifying your discord account, you receive extra Credits and increased Server amounts": "通过验证你的 Discord 帐户,你可以获得额外的游戏币和增加的服务器金额。",
"Server configuration": "服务器配置",
"Error!": "错误!",
"Make sure to link your products to nodes and eggs.": "请确保将你的产品链接到节点和彩蛋。",
"There has to be at least 1 valid product for server creation": "至少要有1个有效的产品才能创建服务器。",
"No products available!": "没有可用的产品!",
"No nodes have been linked!": "没有节点被链接!",
"No nests available!": "没有可用的巢穴!",
"No eggs have been linked!": "没有蛋被链接!",
"Software / Games": "软件/游戏",
"Please select software ...": "请选择软件...",
"Specification": "规格",
"No selection": "没有选择",
"per month": "每个月",
"Not enough credits!": "没有足够的点数!",
"Please select a configuration ...": "请选择一个配置 ...",
"No resources found matching current configuration": "没有找到符合当前配置的资源",
"No nodes found matching current configuration": "没有找到符合当前配置的节点",
"Please select a node ...": "请选择一个节点 ...",
"Create server": "创建服务器",
"Use your servers on our": "使用你的服务器在我们的",
"pterodactyl panel": "翼手龙面板",
"Server limit reached!": "已达到服务器限制!",
"Create Server": "创建服务器",
"Manage": "管理",
"Delete server": "删除服务器",
"Price per Hour": "每小时价格",
"Price per Month": "每个月的价格",
"Date": "日期",
"To": "目的地",
"From": "从",
"Pending": "待定",
"Subtotal": "小计",
"Submit Payment": "提交付款",
"Payment Methods": "付款方式",
"By purchasing this product you agree and accept our terms of service": "购买此产品,您同意并接受我们的服务条款。",
"There are no store products!": "没有商店的产品!",
"The store is not correctly configured!": "商店的配置不正确!",
"Out of Credits in": "信用额度用完在",
"days": "天",
"hours": "小时",
"You ran out of Credits": "你的信用额度用完了",
"Profile updated": "资料更新",
"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.": "在创建服务器之前您需要链接您的discord账户。",
"No allocations satisfying the requirements for automatic deployment on this node were found.": "没有发现符合该节点上自动部署要求的分配。",
"Server removed": "移除服务器",
"Server created": "创建了服务器",
"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 link your discord account before you can purchase ": "您需要在购买前链接您的迪斯科账户。 ",
"Warning!": "警告!",
"api key created!": "api密钥已创建!",
"api key updated!": "api密钥已更新!",
"api key has been removed!": "api密钥已被删除!",
"configuration has been updated!": "配置已被更新!",
"Pterodactyl synced": "翼手龙已同步化",
"Your credit balance has been increased!": "您的信用余额已增加!",
"Payment was Canceled": "付款已取消",
"Store item has been created!": "商店项目已创建!",
"Store item has been updated!": "商店商品已更新!",
"Product has been updated!": "产品已更新!",
"Store item has been removed!": "商店物品已被删除!",
"Product has been created!": "产品已创建!",
"Product has been removed!": "产品已被删除!",
"Server has been updated!": "服务器已被更新!",
"Icons updated!": "图标已更新!",
"link has been created!": "链接已创建",
"link has been updated!": "链接已更新",
"user has been removed!": "用户已被删除!",
"Notification sent!": "通知已发送!",
"User has been updated!": "用户已被更新!",
"User does not exists on pterodactyl's panel": "用户不存在于翼龙的面板上",
"voucher has been created!": "代金券已创建!",
"voucher has been updated!": "代金券已被更新!",
"voucher has been removed!": "代金券已被删除!",
"This voucher has reached the maximum amount of uses": "此代金券已达到最大使用量",
"This voucher has expired": "此优惠券已过期",
"You already redeemed this voucher code": "你已经兑换了这个优惠券代码",
"You can't redeem this voucher because you would exceed the limit of ": "你不能兑换此优惠券,因为你会超过此优惠券的使用限额。 ",
"have been added to your balance!": "已被添加到您的余额中!",
"Invoice": "发票",
"Serial No.": "序号",
"Invoice date": "发票日期",
"Seller": "卖家",
"Buyer": "买方",
"Address": "地址",
"VAT code": "增值税代码",
"Phone": "电话",
"Units": "单位",
"Qty": "数量",
"Discount": "折扣",
"Sub total": "小计",
"Total discount": "折扣总额",
"Taxable amount": "应纳税额",
"Total taxes": "总税额",
"Tax rate": "税率",
"Total amount": "总金额",
"Please pay until": "请支付至",
"Amount in words": "税额的字数",
"Notes": "笔记",
"Shipping": "运费",
"Paid": "已付",
"Due:": "应付。",
"Invoice Settings": "发票设置",
"Download all Invoices": "下载所有发票",
"Enter your companys name": "输入你的公司名称",
"Enter your companys address": "输入你的公司的地址",
"Enter your companys phone number": "输入你的公司的电话号码",
"Enter your companys VAT id": "输入你的公司的增值税识别码",
"Enter your companys email address": "输入公司的电子邮件地址",
"Enter your companys website": "输入你的公司网站",
"Enter your custom invoice prefix": "输入你的自定义发票前缀",
"Select Invoice Logo": "选择发票标志",
"Payment Confirmation": "付款确认",
"Payment Confirmed!": "付款确认!",
"Server Creation Error": "服务器创建错误",
"Your servers have been suspended!": "您的服务器已被暂停!",
"To automatically re-enable your server/s, you need to purchase more credits.": "为了自动重新启用您的服务器,您需要购买更多的点数。",
"Purchase credits": "购买信用额度",
"If you have any questions please let us know.": "如果你有任何问题,请让我们知道。",
"Regards": "联系我们",
"Getting started!": "开始吧!",
"EXPIRED": "已过期",
"VALID": "有效的",
"Unsuspend": "取消暂停",
"Suspend": "暂停",
"Delete": "删除",
"Login as User": "以用户身份登录",
"Clone": "克隆",
"Amount due": "应付金额",
"Your Payment was successful!": "恭喜,您的订单支付成功 !",
"Hello": "您好",
"Your payment was processed successfully!": "您的请求已处理成功"
}

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Activity Logs</h1>
<h1>{{ __('Activity Logs')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.activitylogs.index')}}">Activity Logs</a>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.activitylogs.index')}}">{{ __('Activity Logs')}}</a>
</li>
</ol>
</div>
@ -32,8 +32,8 @@
</div>
@else
<div class="callout callout-danger">
<h4>No recent activity from cronjobs</h4>
<p>Are cronjobs running? <a class="text-primary" target="_blank" href="https://github.com/ControlPanel-gg/dashboard/wiki/Installation#crontab-configuration">Check the docs for it here</a></p>
<h4>{{ __('No recent activity from cronjobs')}}</h4>
<p>{{ __('Are cronjobs running?')}} <a class="text-primary" target="_blank" href="https://github.com/ControlPanel-gg/dashboard/wiki/Installation#crontab-configuration">{{ __('Check the docs for it here')}}</a></p>
</div>
@endif
@ -42,7 +42,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-history mr-2"></i>Activity Logs</h5>
<h5 class="card-title"><i class="fas fa-history mr-2"></i>{{ __('Activity Logs')}}</h5>
</div>
<div class="card-body table-responsive">
@ -63,16 +63,16 @@
<table class="table table-sm table-striped">
<thead>
<tr>
<th>Causer</th>
<th>Description</th>
<th>Created At</th>
<th>{{ __('Causer') }}</th>
<th>{{ __('Description') }}</th>
<th>{{ __('Created at') }}</th>
</tr>
</thead>
<tbody>
@foreach($logs as $log)
<tr>
<td> @if($log->causer) <a href='/admin/users/{{$log->causer_id}}'> {{json_decode($log->causer)->name}}
@else
<td> @if($log->causer) <a href='/admin/users/{{$log->causer_id}}'> {{json_decode($log->causer)->name}}
@else
System
@endif</td>
<td>

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Application API</h1>
<h1>{{__('Application API')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">Application API</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.create')}}">Create</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">{{__('Application API')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.api.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -33,7 +35,7 @@
@csrf
<div class="form-group">
<label for="memo">Memo</label>
<label for="memo">{{__('Memo')}}</label>
<input value="{{old('memo')}}" id="memo" name="memo" type="text"
class="form-control @error('memo') is-invalid @enderror">
@error('memo')
@ -45,7 +47,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Application API</h1>
<h1>{{__('Application API')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">Application API</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.edit' , $applicationApi->token)}}">Edit</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.api.index')}}">{{__('Application API')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.api.edit' , $applicationApi->token)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -34,7 +36,7 @@
@method('PATCH')
<div class="form-group">
<label for="memo">Memo</label>
<label for="memo">{{__('Memo')}}</label>
<input value="{{$applicationApi->memo}}" id="memo" name="memo" type="text"
class="form-control @error('memo') is-invalid @enderror">
@error('memo')
@ -46,7 +48,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Application API</h1>
<h1>{{__('Application API')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.index')}}">Application API</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.api.index')}}">{{__('Application API')}}</a></li>
</ol>
</div>
</div>
@ -27,9 +27,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fa fa-gamepad mr-2"></i>Application API</h5>
<h5 class="card-title"><i class="fa fa-gamepad mr-2"></i>{{__('Application API')}}</h5>
<a href="{{route('admin.api.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -38,9 +38,9 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Token</th>
<th>Memo</th>
<th>Last used</th>
<th>{{__('Token')}}</th>
<th>{{__('Memo')}}</th>
<th>{{__('Last used')}}</th>
<th></th>
</tr>
</thead>
@ -59,11 +59,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -8,14 +8,14 @@
@method('PATCH')
<!-- Modal Header -->
<div class="modal-header">
<h4 class="modal-title">Edit Configuration</h4>
<h4 class="modal-title">{{__('Edit Configuration')}}</h4>
<button type="button" class="close" data-dismiss="modal">&times;</button>
</div>
<!-- Modal body -->
<div class="modal-body">
<div class="form-group">
<label id="keyLabel" for="value">Text Field</label>
<label id="keyLabel" for="value">{{__('Text Field')}}</label>
<div class="input-group">
<div class="input-group-prepend">
<div class="input-group-text">
@ -32,8 +32,8 @@
<!-- Modal footer -->
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">Save</button>
<button type="button" class="btn btn-danger" data-dismiss="modal">{{__('Cancel')}}</button>
<button type="submit" class="btn btn-primary">{{__('Save')}}</button>
</div>
</form>
</div>

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Configurations</h1>
<h1>{{__('Configurations')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}"{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.configurations.index')}}">Configurations</a></li>
href="{{route('admin.configurations.index')}}">{{__('Configurations')}}</a></li>
</ol>
</div>
</div>
@ -28,7 +28,7 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-cog mr-2"></i>Configurations</h5>
<h5 class="card-title"><i class="fas fa-cog mr-2"></i>{{__('Configurations')}}</h5>
</div>
</div>
@ -37,11 +37,11 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Key</th>
<th>Value</th>
<th>Type</th>
<th width="600">Description</th>
<th>Created at</th>
<th>{{__('Key')}}</th>
<th>{{__('Value')}}</th>
<th>{{__('Type')}}</th>
<th width="600">{{__('Description')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -64,6 +64,9 @@
<script>
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -1,3 +1,8 @@
<!--
THIS FILE IS DEPRECATED
-->
@extends('layouts.main')
@section('content')
@ -69,6 +74,9 @@
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -1,3 +1,8 @@
<!--
THIS FILE IS DEPRECATED
-->
@extends('layouts.main')
@section('content')
@ -69,6 +74,9 @@
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Admin Overview</h1>
<h1>{{__('Admin Overview')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.overview.index')}}">Admin Overview</a></li>
href="{{route('admin.overview.index')}}">{{__('Admin Overview')}}</a></li>
</ol>
</div>
</div>

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Payments</h1>
<h1>{{__('Payments')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.payments.index')}}">Payments</a>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.payments.index')}}">{{__('Payments')}}</a>
</li>
</ol>
</div>
@ -26,24 +26,24 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-money-bill-wave mr-2"></i>Payments</h5>
<h5 class="card-title"><i class="fas fa-money-bill-wave mr-2"></i>{{__('Payments')}}</h5>
</div>
<div class="card-body table-responsive">
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>ID</th>
<th>User</th>
<th>Type</th>
<th>Amount</th>
<th>Product Price</th>
<th>Tax</th>
<th>Tax(%)</th>
<th>Total Price</th>
<th>Payment_ID</th>
<th>Payer_ID</th>
<th>Created at</th>
<th>{{__('ID')}}</th>
<th>{{__('User')}}</th>
<th>{{__('Type')}}</th>
<th>{{__('Amount')}}</th>
<th>{{__('Product Price')}}</th>
<th>{{__('Tax')}}</th>
<th>{{__('Tax')}}(%)</th>
<th>{{__('Total Price')}}</th>
<th>{{__('Payment_ID')}}</th>
<th>{{__('Payer_ID')}}</th>
<th>{{__('Created at')}}</th>
</tr>
</thead>
<tbody>
@ -61,6 +61,9 @@
<script>
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,14 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.products.index') }}">Products</a></li>
<li class="breadcrumb-item"><a href="{{ route('home') }}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.products.index') }}">{{__('Products')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{ route('admin.products.create') }}">Create</a>
href="{{ route('admin.products.create') }}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -31,7 +32,7 @@
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Details</h5>
<h5 class="card-title">{{__('Product Details')}}</h5>
</div>
<div class="card-body">
@ -39,9 +40,9 @@
<div class="custom-control custom-switch">
<input type="checkbox" name="disabled"
class="custom-control-input custom-control-input-danger" id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover" data-trigger="hover"
data-content="Will hide this option from being selected"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
@ -49,7 +50,7 @@
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label for="name">Name</label>
<label for="name">{{__('Name')}}</label>
<input value="{{$product->name ?? old('name')}}" id="name" name="name"
type="text"
class="form-control @error('name') is-invalid @enderror"
@ -62,7 +63,7 @@
</div>
<div class="form-group">
<label for="price">Price in credits</label>
<label for="price">{{__('Price in')}}{{CREDITS_DISPLAY_NAME}}</label>
<input value="{{$product->price ?? old('price')}}" id="price" name="price"
type="number"
class="form-control @error('price') is-invalid @enderror"
@ -76,7 +77,7 @@
<div class="form-group">
<label for="memory">Memory</label>
<label for="memory">{{__('Memory')}}</label>
<input value="{{$product->memory ?? old('memory')}}" id="memory"
name="memory"
type="number"
@ -90,7 +91,7 @@
</div>
<div class="form-group">
<label for="cpu">Cpu</label>
<label for="cpu">{{__('Cpu')}}</label>
<input value="{{$product->cpu ?? old('cpu')}}" id="cpu" name="cpu"
type="number"
class="form-control @error('cpu') is-invalid @enderror"
@ -103,7 +104,7 @@
</div>
<div class="form-group">
<label for="swap">Swap</label>
<label for="swap">{{__('Swap')}}</label>
<input value="{{$product->swap ?? old('swap')}}" id="swap" name="swap"
type="number"
class="form-control @error('swap') is-invalid @enderror"
@ -116,10 +117,10 @@
</div>
<div class="form-group">
<label for="description">Description <i data-toggle="popover"
data-trigger="hover"
data-content="This is what the users sees"
class="fas fa-info-circle"></i></label>
<label for="description">{{__('Description')}} <i data-toggle="popover"
data-trigger="hover"
data-content="{{__('This is what the users sees')}}"
class="fas fa-info-circle"></i></label>
<textarea id="description" name="description"
type="text"
class="form-control @error('description') is-invalid @enderror"
@ -134,7 +135,7 @@
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="disk">Disk</label>
<label for="disk">{{__('Disk')}}</label>
<input value="{{$product->disk ?? old('disk') ?? 1000}}" id="disk"
name="disk"
type="number"
@ -148,14 +149,16 @@
</div>
<div class="form-group">
<label for="minimum_credits">Minimum {{ CREDITS_DISPLAY_NAME }} <i
<label for="minimum_credits">{{__('Minimum')}} {{ CREDITS_DISPLAY_NAME }} <i
data-toggle="popover" data-trigger="hover"
data-content="Setting to -1 will use the value from configuration."
data-content="{{__('Setting to -1 will use the value from configuration.')}}"
class="fas fa-info-circle"></i></label>
<input value="{{ $product->minimum_credits ?? old('minimum_credits') ?? -1 }}" id="minimum_credits"
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
<input
value="{{ $product->minimum_credits ?? old('minimum_credits') ?? -1 }}"
id="minimum_credits"
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
@error('minimum_credits')
<div class="invalid-feedback">
{{ $message }}
@ -164,7 +167,7 @@
</div>
<div class="form-group">
<label for="io">IO</label>
<label for="io">{{__('IO')}}</label>
<input value="{{$product->io ?? old('io') ?? 500}}" id="io" name="io"
type="number"
class="form-control @error('io') is-invalid @enderror"
@ -176,7 +179,7 @@
@enderror
</div>
<div class="form-group">
<label for="databases">Databases</label>
<label for="databases">{{__('Databases')}}</label>
<input value="{{$product->databases ?? old('databases') ?? 1}}"
id="databases"
name="databases"
@ -190,7 +193,7 @@
@enderror
</div>
<div class="form-group">
<label for="backups">Backups</label>
<label for="backups">{{__('Backups')}}</label>
<input value="{{$product->backups ?? old('backups') ?? 1}}" id="backups"
name="backups"
type="number"
@ -203,7 +206,7 @@
@enderror
</div>
<div class="form-group">
<label for="allocations">Allocations</label>
<label for="allocations">{{__('Allocations')}}</label>
<input value="{{$product->allocations ?? old('allocations') ?? 0}}"
id="allocations" name="allocations"
type="number"
@ -220,7 +223,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
@ -231,16 +234,16 @@
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Linking
<h5 class="card-title">{{__('Product Linking')}}
<i data-toggle="popover"
data-trigger="hover"
data-content="Link your products to nodes and eggs to create dynamic pricing for each option"
data-content="{{__('Link your products to nodes and eggs to create dynamic pricing for each option')}}"
class="fas fa-info-circle"></i></h5>
</div>
<div class="card-body">
<div class="form-group">
<label for="nodes">Nodes</label>
<label for="nodes">{{__('Nodes')}}</label>
<select id="nodes" style="width:100%"
class="custom-select @error('nodes') is-invalid @enderror"
name="nodes[]" multiple="multiple" autocomplete="off">
@ -260,13 +263,13 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these nodes
{{__('This product will only be available for these nodes')}}
</div>
</div>
<div class="form-group">
<label for="eggs">Eggs</label>
<label for="eggs">{{__('Eggs')}}</label>
<select id="eggs" style="width:100%"
class="custom-select @error('eggs') is-invalid @enderror"
name="eggs[]" multiple="multiple" autocomplete="off">
@ -286,7 +289,7 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these eggs
{{__('This product will only be available for these eggs')}}
</div>
</div>

View file

@ -6,14 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.products.index')}}">Products</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.products.index')}}">{{__('Products')}}</a>
</li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.products.edit' , $product->id)}}">Edit</a>
href="{{route('admin.products.edit' , $product->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -34,16 +35,16 @@
@if($product->servers()->count() > 0)
<div class="callout callout-danger">
<h4>Editing the resource options will not automatically update the servers on
pterodactyl's side!</h4>
<p class="text-muted">Automatically updating resource options on pterodactyl side is on
my todo list :)</p>
<h4>{{__('Editing the resource options will not automatically update the servers on
pterodactyls side!')}}'</h4>
<p class="text-muted">{{__('Automatically updating resource options on pterodactyl side is on
my todo list :)')}}</p>
</div>
@endif
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Details</h5>
<h5 class="card-title">{{__('Product Details')}}</h5>
</div>
<div class="card-body">
@ -51,9 +52,9 @@
<div class="custom-control custom-switch">
<input type="checkbox" @if($product->disabled) checked @endif name="disabled"
class="custom-control-input custom-control-input-danger" id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover" data-trigger="hover"
data-content="Will hide this option from being selected"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
@ -62,150 +63,155 @@
<div class="col-lg-6">
<div class="form-group">
<label for="name">Name</label>
<label for="name">{{__('Name')}}</label>
<input value="{{ $product->name }}" id="name" name="name" type="text"
class="form-control @error('name') is-invalid @enderror"
required="required">
class="form-control @error('name') is-invalid @enderror"
required="required">
@error('name')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="price">Price in {{ CREDITS_DISPLAY_NAME }}</label>
<label for="price">{{__('Price in')}} {{ CREDITS_DISPLAY_NAME }}</label>
<input value="{{ $product->price }}" id="price" name="price" type="number"
class="form-control @error('price') is-invalid @enderror"
required="required">
class="form-control @error('price') is-invalid @enderror"
required="required">
@error('price')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="memory">Memory</label>
<input value="{{ $product->memory }}" id="memory" name="memory" type="number"
class="form-control @error('memory') is-invalid @enderror"
required="required">
<label for="memory">{{__('Memory')}}</label>
<input value="{{ $product->memory }}" id="memory" name="memory"
type="number"
class="form-control @error('memory') is-invalid @enderror"
required="required">
@error('memory')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="cpu">Cpu</label>
<label for="cpu">{{__('Cpu')}}</label>
<input value="{{ $product->cpu }}" id="cpu" name="cpu" type="number"
class="form-control @error('cpu') is-invalid @enderror" required="required">
class="form-control @error('cpu') is-invalid @enderror"
required="required">
@error('cpu')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="swap">Swap</label>
<label for="swap">{{__('Swap')}}</label>
<input value="{{ $product->swap }}" id="swap" name="swap" type="number"
class="form-control @error('swap') is-invalid @enderror"
required="required">
class="form-control @error('swap') is-invalid @enderror"
required="required">
@error('swap')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="description">Description <i data-toggle="popover"
data-trigger="hover"
data-content="This is what the users sees"
class="fas fa-info-circle"></i></label>
<label for="description">{{__('Description')}} <i data-toggle="popover"
data-trigger="hover"
data-content="{{__('This is what the users sees')}}"
class="fas fa-info-circle"></i></label>
<textarea id="description" name="description"
type="text"
class="form-control @error('description') is-invalid @enderror"
required="required">{{$product->description}}</textarea>
@error('description')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
<div class="col-lg-6">
<div class="form-group">
<label for="disk">Disk</label>
<label for="disk">{{__('Disk')}}</label>
<input value="{{ $product->disk }}" id="disk" name="disk" type="number"
class="form-control @error('disk') is-invalid @enderror"
required="required">
class="form-control @error('disk') is-invalid @enderror"
required="required">
@error('disk')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="minimum_credits">Minimum {{ CREDITS_DISPLAY_NAME }} <i
<label for="minimum_credits">{{__('Minimum')}} {{ CREDITS_DISPLAY_NAME }} <i
data-toggle="popover" data-trigger="hover"
data-content="Setting to -1 will use the value from configuration."
data-content="{{__('Setting to -1 will use the value from configuration.')}}"
class="fas fa-info-circle"></i></label>
<input value="{{ $product->minimum_credits }}" id="minimum_credits"
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
name="minimum_credits" type="number"
class="form-control @error('minimum_credits') is-invalid @enderror"
required="required">
@error('minimum_credits')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="io">IO</label>
<label for="io">{{__('IO')}}</label>
<input value="{{ $product->io }}" id="io" name="io" type="number"
class="form-control @error('io') is-invalid @enderror" required="required">
class="form-control @error('io') is-invalid @enderror"
required="required">
@error('io')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="databases">Databases</label>
<label for="databases">{{__('Databases')}}</label>
<input value="{{ $product->databases }}" id="databases" name="databases"
type="number" class="form-control @error('databases') is-invalid @enderror"
required="required">
type="number"
class="form-control @error('databases') is-invalid @enderror"
required="required">
@error('databases')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="backups">Backups</label>
<label for="backups">{{__('Backups')}}</label>
<input value="{{ $product->backups }}" id="backups" name="backups"
type="number" class="form-control @error('backups') is-invalid @enderror"
required="required">
type="number"
class="form-control @error('backups') is-invalid @enderror"
required="required">
@error('backups')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
<div class="form-group">
<label for="allocations">Allocations</label>
<label for="allocations">{{__('Allocations')}}</label>
<input value="{{ $product->allocations }}" id="allocations"
name="allocations" type="number"
class="form-control @error('allocations') is-invalid @enderror"
required="required">
name="allocations" type="number"
class="form-control @error('allocations') is-invalid @enderror"
required="required">
@error('allocations')
<div class="invalid-feedback">
{{ $message }}
</div>
<div class="invalid-feedback">
{{ $message }}
</div>
@enderror
</div>
</div>
@ -213,7 +219,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
@ -224,16 +230,16 @@
<div class="col-lg-6">
<div class="card">
<div class="card-header">
<h5 class="card-title">Product Linking
<h5 class="card-title">{{__('Product Linking')}}
<i data-toggle="popover"
data-trigger="hover"
data-content="Link your products to nodes and eggs to create dynamic pricing for each option"
data-content="{{__('Link your products to nodes and eggs to create dynamic pricing for each option')}}"
class="fas fa-info-circle"></i></h5>
</div>
<div class="card-body">
<div class="form-group">
<label for="nodes">Nodes</label>
<label for="nodes">{{__('Nodes')}}</label>
<select id="nodes" style="width:100%"
class="custom-select @error('nodes') is-invalid @enderror" name="nodes[]"
multiple="multiple" autocomplete="off">
@ -252,7 +258,7 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these nodes
{{__('This product will only be available for these nodes')}}
</div>
</div>
@ -276,7 +282,7 @@
</div>
@enderror
<div class="text-muted">
This product will only be available for these eggs
{{__('This product will only be available for these eggs')}}
</div>
</div>
@ -296,7 +302,7 @@
})
</script>
<script>
document.addEventListener('DOMContentLoaded', function() {
document.addEventListener('DOMContentLoaded', function () {
$('[data-toggle="popover"]').popover();
});
</script>

View file

@ -6,13 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.products.index')}}">Products</a></li>
href="{{route('admin.products.index')}}">{{__('Products')}}</a>
</li>
</ol>
</div>
</div>
@ -28,9 +29,10 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Products</h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Products')}}</h5>
<a href="{{route('admin.products.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -39,24 +41,23 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Active</th>
<th>Name</th>
<th>Price</th>
<th>Memory</th>
<th>Cpu</th>
<th>Swap</th>
<th>Disk</th>
<th>Databases</th>
<th>Backups</th>
<th>Eggs</th>
<th>Nodes</th>
<th>Servers</th>
<th>Created at</th>
<th>{{__('Active')}}</th>
<th>{{__('Name')}}</th>
<th>{{__('Price')}}</th>
<th>{{__('Memory')}}</th>
<th>{{__('Cpu')}}</th>
<th>{{__('Swap')}}</th>
<th>{{__('Disk')}}</th>
<th>{{__('Databases')}}</th>
<th>{{__('Backups')}}</th>
<th>{{__('Nodes')}}</th>
<th>{{__('Eggs')}}</th>
<th>{{__('Servers')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
<tbody>
</tbody>
<tbody></tbody>
</table>
</div>
@ -71,34 +72,39 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
$("#datatable").DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,
order: [[ 2, "asc" ]],
ajax: "{{route('admin.products.datatable')}}",
columns: [
{data: 'disabled'},
{data: 'name'},
{data: 'price'},
{data: 'memory'},
{data: 'cpu'},
{data: 'swap'},
{data: 'disk'},
{data: 'databases'},
{data: 'backups'},
{data: 'nodes', sortable: false},
{data: 'eggs', sortable: false},
{data: 'servers', sortable: false},
{data: 'created_at'},
{data: 'actions', sortable: false},
order: [
[2, "asc"]
],
fnDrawCallback: function( oSettings ) {
$('[data-toggle="popover"]').popover();
ajax: "{{ route('admin.products.datatable') }}",
columns: [
{data: "disabled"},
{data: "name"},
{data: "price"},
{data: "memory"},
{data: "cpu"},
{data: "swap"},
{data: "disk"},
{data: "databases"},
{data: "backups"},
{data: "nodes", sortable: false},
{data: "eggs", sortable: false},
{data: "servers", sortable: false},
{data: "created_at"},
{data: "actions", sortable: false}
],
fnDrawCallback: function (oSettings) {
$("[data-toggle=\"popover\"]").popover();
}
});
});

View file

@ -6,14 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Products</h1>
<h1>{{__('Products')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{ route('home') }}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.users.index') }}">Products</a></li>
<li class="breadcrumb-item"><a href="{{ route('home') }}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{ route('admin.users.index') }}">{{__('Products')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{ route('admin.products.show', $product->id) }}">Show</a>
href="{{ route('admin.products.show', $product->id) }}">{{__('Show')}}</a>
</li>
</ol>
</div>
@ -28,7 +28,7 @@
<div class="card">
<div class="card-header d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Product</h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Product')}}</h5>
<div class="ml-auto">
<a data-content="Edit" data-trigger="hover" data-toggle="tooltip"
href="{{ route('admin.products.edit', $product->id) }}" class="btn btn-sm btn-info mr-1"><i
@ -48,7 +48,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>ID</label>
<label>{{__('ID')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -61,7 +61,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Name</label>
<label>{{__('Name')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -74,7 +74,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Price</label>
<label>{{__('Price')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -87,7 +87,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Minimum {{ CREDITS_DISPLAY_NAME }}</label>
<label>{{__('Minimum')}} {{ CREDITS_DISPLAY_NAME }}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -105,7 +105,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Memory</label>
<label>{{__('Memory')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -118,7 +118,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>CPU</label>
<label>{{__('CPU')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -131,7 +131,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Swap</label>
<label>{{__('Swap')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -144,7 +144,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Disk</label>
<label>{{__('Disk')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -157,7 +157,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>IO</label>
<label>{{__('IO')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -170,7 +170,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Databases</label>
<label>{{__('Databases')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -183,7 +183,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Allocations</label>
<label>{{__('Allocations')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -196,7 +196,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Created At</label>
<label>{{__('Created at')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -210,7 +210,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Description</label>
<label>{{__('Description')}}</label>
</div>
<div class="col-lg-8">
<span class="d-inline-block text-truncate">
@ -224,7 +224,7 @@
<div class="col-lg-6">
<div class="row">
<div class="col-lg-4">
<label>Updated At</label>
<label>{{__('Updated at')}}</label>
</div>
<div class="col-lg-8">
<span style="max-width: 250px;" class="d-inline-block text-truncate">
@ -240,7 +240,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-server mr-2"></i>Servers</h5>
<h5 class="card-title"><i class="fas fa-server mr-2"></i>{{__('Servers')}}</h5>
</div>
<div class="card-body table-responsive">

View file

@ -6,12 +6,12 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Servers</h1>
<h1>{{__('Servers')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.servers.index')}}">Servers</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.servers.index')}}">{{__('Servers')}}</a></li>
</ol>
</div>
</div>
@ -25,7 +25,7 @@
<div class="card">
<div class="card-header">
<h5 class="card-title"><i class="fas fa-server mr-2"></i>Servers</h5>
<h5 class="card-title"><i class="fas fa-server mr-2"></i>{{__('Servers')}}</h5>
</div>
<div class="card-body table-responsive">

View file

@ -2,11 +2,11 @@
<thead>
<tr>
<th width="20"></th>
<th>Name</th>
<th>User</th>
<th>Config</th>
<th>Suspended At</th>
<th>Created At</th>
<th>{{__('Name')}}</th>
<th>{{__('User')}}</th>
<th>{{__('Config')}}</th>
<th>{{__('Suspended at')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -16,11 +16,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Settings</h1>
<h1>{{__('Settings')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.settings.index')}}">Settings</a></li>
href="{{route('admin.settings.index')}}">{{__('Settings')}}</a></li>
</ol>
</div>
</div>
@ -28,7 +28,7 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-tools mr-2"></i>Settings</h5>
<h5 class="card-title"><i class="fas fa-tools mr-2"></i>{{__('Settings')}}</h5>
</div>
</div>
@ -37,7 +37,10 @@
<!-- Nav pills -->
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="pill" href="#dashboard-icons">Dashboard icons</a>
<a class="nav-link active" data-toggle="pill" href="#dashboard-icons">{{__('Dashboard icons')}}</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="pill" href="#invoice-settings">{{__('Invoice Settings')}}</a>
</li>
</ul>
@ -81,21 +84,133 @@
</div>
</div>
<button class="btn btn-primary">Submit</button>
<button class="btn btn-primary">{{__('Submit')}}</button>
</form>
<p class="text-muted">Images and Icons may be cached, use <code>CNTRL + F5</code><sup>(google
chrome hotkey)</sup> to reload without cache to see your changes appear :)</p>
</div>
<div class="tab-pane mt-3" id="invoice-settings">
<div class="float-right">
<a href="{{route('admin.settings.downloadAllInvoices')}}"><button class="btn btn-success">{{__('Download all Invoices')}}</button></a>
</div>
<form method="POST" enctype="multipart/form-data" class="mb-3"
action="{{route('admin.settings.update.invoicesettings')}}">
@csrf
@method('PATCH')
<div class="row">
<div class="col-md-6 col-lg-4 col-12">
<!-- Name -->
<div class="form-group">
<div class="custom-control mb-3">
<label for="company-name">{{__('Enter your companys name' )}}</label>
<input x-model="company-name" id="company-name" name="company-name"
type="text" value="{{$company_name}}"
class="form-control @error('company-name') is-invalid @enderror">
</div>
</div>
<!-- address -->
<div class="form-group">
<div class="custom-control mb-3">
<label
for="company-address">{{__('Enter your companys address' )}}</label>
<input x-model="company-address" id="company-address"
name="company-address" type="text" value="{{$company_adress}}"
class="form-control @error('company-address') is-invalid @enderror">
</div>
</div>
<!-- Phone -->
<div class="form-group">
<div class="custom-control mb-3">
<label
for="company-phone">{{__('Enter your companys phone number' )}}</label>
<input x-model="company-phone" id="company-phone" name="company-phone"
type="text" value="{{$company_phone}}"
class="form-control @error('company-phone') is-invalid @enderror">
</div>
</div>
<!-- VAT -->
<div class="form-group">
<div class="custom-control mb-3">
<label for="company-vat">{{__('Enter your companys VAT id' )}}</label>
<input x-model="company-vat" id="company-vat" name="company-vat"
type="text" value="{{$company_vat}}"
class="form-control @error('company-vat') is-invalid @enderror">
</div>
</div>
<!-- email -->
<div class="form-group">
<div class="custom-control mb-3">
<label
for="company-mail">{{__('Enter your companys email address' )}}</label>
<input x-model="company-mail" id="company-mail" name="company-mail"
type="text" value="{{$company_mail}}"
class="form-control @error('company-mail') is-invalid @enderror">
</div>
</div>
<!-- website -->
<div class="form-group">
<div class="custom-control mb-3">
<label
for="company-web">{{__('Enter your companys website' )}}</label>
<input x-model="company-web" id="company-web" name="company-web"
type="text" value="{{$company_web}}"
class="form-control @error('company-web') is-invalid @enderror">
</div>
</div>
<!-- website -->
<div class="form-group">
<div class="custom-control mb-3">
<label
for="invoice-prefix">{{__('Enter your custom invoice prefix' )}}</label>
<input x-model="invoice-prefix" id="invoice-prefix" name="invoice-prefix"
type="text" value="{{$invoice_prefix}}"
class="form-control @error('invoice-prefix') is-invalid @enderror">
</div>
</div>
<!-- logo -->
<div class="form-group">
<div class="custom-control mb-3">
<label for="logo">{{__('Logo')}}</label>
<div class="custom-file mb-3">
<input type="file" accept="image/png,image/jpeg,image/jpg" class="custom-file-input"
name="logo" id="logo">
<label class="custom-file-label selected"
for="favicon">{{__('Select Invoice Logo')}}</label>
</div>
</div>
@error('logo')
<span class="text-danger">
{{$message}}
</span>
@enderror
</div>
</div>
</div>
<button class="btn btn-primary">{{__('Submit')}}</button>
<!-- end -->
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<!-- END CUSTOM CONTENT -->
</section>
@ -103,7 +218,7 @@
<script>
// Add the following code if you want the name of the file appear on select
document.addEventListener('DOMContentLoaded', ()=>{
document.addEventListener('DOMContentLoaded', () => {
$(".custom-file-input").on("change", function () {
var fileName = $(this).val().split("\\").pop();
$(this).siblings(".custom-file-label").addClass("selected").html(fileName);

View file

@ -6,13 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">Store</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.store.create')}}">Create</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">{{__('Store')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.store.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -33,19 +34,22 @@
@csrf
<div class="d-flex flex-row-reverse">
<div class="custom-control custom-switch">
<input type="checkbox" name="disabled" class="custom-control-input custom-control-input-danger"
<input type="checkbox" name="disabled"
class="custom-control-input custom-control-input-danger"
id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i data-toggle="popover"
data-trigger="hover"
data-content="Will hide this option from being selected"
class="fas fa-info-circle"></i></label>
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover"
data-trigger="hover"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
<div class="form-group">
<label for="type">Type</label>
<select required name="type" id="type" class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">Credits</option>
<label for="type">{{__('Type')}}</label>
<select required name="type" id="type"
class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">{{CREDITS_DISPLAY_NAME}}</option>
</select>
@error('name')
<div class="text-danger">
@ -55,10 +59,12 @@
</div>
<div class="form-group">
<label for="currency_code">Currency code</label>
<select required name="currency_code" id="currency_code" class="custom-select @error('name') is-invalid @enderror">
<label for="currency_code">{{__('Currency code')}}</label>
<select required name="currency_code" id="currency_code"
class="custom-select @error('name') is-invalid @enderror">
@foreach($currencyCodes as $code)
<option @if($code == 'EUR') selected @endif value="{{$code}}">{{$code}}</option>
<option @if($code == 'EUR') selected
@endif value="{{$code}}">{{$code}}</option>
@endforeach
</select>
@error('currency_code')
@ -67,12 +73,14 @@
</div>
@enderror
<div class="text-muted">
Checkout the paypal docs to select the appropriate code <a target="_blank" href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
{{__('Checkout the paypal docs to select the appropriate code')}} <a
target="_blank"
href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
</div>
</div>
<div class="form-group">
<label for="price">Price</label>
<label for="price">{{__('Price')}}</label>
<input value="{{old('price')}}" id="price" name="price"
type="number"
placeholder="10.00"
@ -87,7 +95,7 @@
</div>
<div class="form-group">
<label for="quantity">Quantity</label>
<label for="quantity">{{__('Quantity')}}</label>
<input value="{{old('quantity')}}" id="quantity" name="quantity"
type="number"
placeholder="1000"
@ -99,12 +107,12 @@
</div>
@enderror
<div class="text-muted">
Amount given to the user after purchasing
{{__('Amount given to the user after purchasing')}}
</div>
</div>
<div class="form-group">
<label for="display">Display</label>
<label for="display">{{__('Display')}}</label>
<input value="{{old('display')}}" id="display" name="display"
type="text"
placeholder="750 + 250"
@ -116,15 +124,15 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at store and checkout
{{__('This is what the user sees at store and checkout')}}
</div>
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<input value="{{old('description')}}" id="description" name="description"
type="text"
placeholder="Adds 1000 credits to your account"
placeholder="{{__('Adds 1000 credits to your account')}}"
class="form-control @error('description') is-invalid @enderror"
required="required">
@error('description')
@ -133,15 +141,14 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at checkout
{{__('This is what the user sees at checkout')}}
</div>
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,13 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">Store</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.store.edit' , $paypalProduct->id)}}">Edit</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.store.index')}}">{{__('Store')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.store.edit' , $paypalProduct->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -34,19 +35,23 @@
@method('PATCH')
<div class="d-flex flex-row-reverse">
<div class="custom-control custom-switch">
<input type="checkbox" @if($paypalProduct->disabled) checked @endif name="disabled" class="custom-control-input custom-control-input-danger"
<input type="checkbox" @if($paypalProduct->disabled) checked
@endif name="disabled"
class="custom-control-input custom-control-input-danger"
id="switch1">
<label class="custom-control-label" for="switch1">Disabled <i data-toggle="popover"
data-trigger="hover"
data-content="Will hide this option from being selected"
class="fas fa-info-circle"></i></label>
<label class="custom-control-label" for="switch1">{{__('Disabled')}} <i
data-toggle="popover"
data-trigger="hover"
data-content="{{__('Will hide this option from being selected')}}"
class="fas fa-info-circle"></i></label>
</div>
</div>
<div class="form-group">
<label for="type">Type</label>
<select required name="type" id="type" class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">Credits</option>
<label for="type">{{__('Type')}}</label>
<select required name="type" id="type"
class="custom-select @error('name') is-invalid @enderror">
<option selected value="Credits">{{CREDITS_DISPLAY_NAME}}</option>
</select>
@error('name')
<div class="text-danger">
@ -56,10 +61,12 @@
</div>
<div class="form-group">
<label for="currency_code">Currency code</label>
<select required name="currency_code" id="currency_code" class="custom-select @error('name') is-invalid @enderror">
<label for="currency_code">{{__('Currency code')}}</label>
<select required name="currency_code" id="currency_code"
class="custom-select @error('name') is-invalid @enderror">
@foreach($currencyCodes as $code)
<option @if($paypalProduct->currency_code == $code) selected @endif value="{{$code}}">{{$code}}</option>
<option @if($paypalProduct->currency_code == $code) selected
@endif value="{{$code}}">{{$code}}</option>
@endforeach
</select>
@error('currency_code')
@ -68,12 +75,14 @@
</div>
@enderror
<div class="text-muted">
Checkout the paypal docs to select the appropriate code <a target="_blank" href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
{{__('Checkout the paypal docs to select the appropriate code')}} <a
target="_blank"
href="https://developer.paypal.com/docs/api/reference/currency-codes/">link</a>
</div>
</div>
<div class="form-group">
<label for="price">Price</label>
<label for="price">{{__('Price')}}</label>
<input value="{{$paypalProduct->price}}" id="price" name="price"
type="number"
placeholder="10.00"
@ -88,7 +97,7 @@
</div>
<div class="form-group">
<label for="quantity">Quantity</label>
<label for="quantity">{{__('Quantity')}}</label>
<input value="{{$paypalProduct->quantity}}" id="quantity" name="quantity"
type="number"
placeholder="1000"
@ -100,12 +109,12 @@
</div>
@enderror
<div class="text-muted">
Amount given to the user after purchasing
{{__('Amount given to the user after purchasing')}}
</div>
</div>
<div class="form-group">
<label for="display">Display</label>
<label for="display">{{__('Display')}}</label>
<input value="{{$paypalProduct->display}}" id="display" name="display"
type="text"
placeholder="750 + 250"
@ -117,15 +126,15 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at store and checkout
{{__('This is what the user sees at store and checkout')}}
</div>
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<input value="{{$paypalProduct->description}}" id="description" name="description"
type="text"
placeholder="Adds 1000 credits to your account"
placeholder="{{__('Adds 1000 credits to your account')}}"
class="form-control @error('description') is-invalid @enderror"
required="required">
@error('description')
@ -134,15 +143,14 @@
</div>
@enderror
<div class="text-muted">
This is what the user sees at checkout
{{__('This is what the user sees at checkout')}}
</div>
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Store</h1>
<h1>{{__('Store')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.store.index')}}">Store</a></li>
href="{{route('admin.store.index')}}">{{__('Store')}}</a></li>
</ol>
</div>
</div>
@ -28,8 +28,8 @@
<div class="col-lg-4">
@if($isPaypalSetup == false)
<div class="callout callout-danger">
<h4>Paypal is not configured.</h4>
<p>To configure PayPal, head to the .env and add your PayPals client id and secret.</p>
<h4>{{__('Paypal is not configured.')}}</h4>
<p>{{__('To configure PayPal, head to the .env and add your PayPals client id and secret.')}}</p>
</div>
@endif
</div>
@ -39,9 +39,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Store</h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Store')}}</h5>
<a href="{{route('admin.store.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -50,12 +50,12 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>Active</th>
<th>Type</th>
<th>Price</th>
<th>Display</th>
<th>Description</th>
<th>Created at</th>
<th>{{__('Active')}}</th>
<th>{{__('Type')}}</th>
<th>{{__('Price')}}</th>
<th>{{__('Display')}}</th>
<th>{{__('Description')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -80,6 +80,9 @@
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Useful Links</h1>
<h1>{{__('Useful Links')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.usefullinks.create')}}">Create</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a
href="{{route('admin.usefullinks.index')}}">{{__('Useful Links')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.usefullinks.create')}}">{{__('Create')}}</a>
</li>
</ol>
</div>
@ -34,15 +36,15 @@
<div class="form-group">
<label for="icon">Icon class name</label>
<label for="icon">{{__('Icon class name')}}</label>
<input value="{{old('icon')}}" id="icon" name="icon"
type="text"
placeholder="fas fa-user"
class="form-control @error('icon') is-invalid @enderror"
required="required">
<div class="text-muted">
You can find available free icons <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
{{__('You can find available free icons')}} <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
</div>
@error('icon')
<div class="invalid-feedback">
@ -52,7 +54,7 @@
</div>
<div class="form-group">
<label for="title">Title</label>
<label for="title">{{__('Title')}}</label>
<input value="{{old('title')}}" id="title" name="title"
type="text"
class="form-control @error('title') is-invalid @enderror"
@ -65,7 +67,7 @@
</div>
<div class="form-group">
<label for="link">Link</label>
<label for="link">{{__('Link')}}</label>
<input value="{{old('link')}}" id="link" name="link"
type="text"
class="form-control @error('link') is-invalid @enderror"
@ -78,7 +80,7 @@
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<textarea id="description"
name="description"
type="text"
@ -95,7 +97,7 @@
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>
@ -109,19 +111,19 @@
<!-- END CONTENT -->
<script>
document.addEventListener('DOMContentLoaded', (event) => {
// Summernote
// Summernote
$('#description').summernote({
height: 100,
toolbar: [
[ 'style', [ 'style' ] ],
[ 'font', [ 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear'] ],
[ 'fontname', [ 'fontname' ] ],
[ 'fontsize', [ 'fontsize' ] ],
[ 'color', [ 'color' ] ],
[ 'para', [ 'ol', 'ul', 'paragraph', 'height' ] ],
[ 'table', [ 'table' ] ],
[ 'insert', [ 'link'] ],
[ 'view', [ 'undo', 'redo', 'fullscreen', 'codeview', 'help' ] ]
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']],
['fontname', ['fontname']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ol', 'ul', 'paragraph', 'height']],
['table', ['table']],
['insert', ['link']],
['view', ['undo', 'redo', 'fullscreen', 'codeview', 'help']]
]
})
})

View file

@ -6,13 +6,15 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Useful Links</h1>
<h1>{{__('Useful Links')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
<li class="breadcrumb-item"><a class="text-muted" href="{{route('admin.usefullinks.edit' , $link->id)}}">Edit</a>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a
href="{{route('admin.usefullinks.index')}}">{{__('Useful Links')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.usefullinks.edit' , $link->id)}}">{{__('Edit')}}</a>
</li>
</ol>
</div>
@ -35,15 +37,15 @@
<div class="form-group">
<label for="icon">Icon class name</label>
<label for="icon">{{__('Icon class name')}}</label>
<input value="{{$link->icon}}" id="icon" name="icon"
type="text"
placeholder="fas fa-user"
class="form-control @error('icon') is-invalid @enderror"
required="required">
<div class="text-muted">
You can find available free icons <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
{{__('You can find available free icons')}} <a target="_blank"
href="https://fontawesome.com/v5.15/icons?d=gallery&p=2">here</a>
</div>
@error('icon')
<div class="invalid-feedback">
@ -53,7 +55,7 @@
</div>
<div class="form-group">
<label for="title">Title</label>
<label for="title">{{__('Title')}}</label>
<input value="{{$link->title}}" id="title" name="title"
type="text"
class="form-control @error('title') is-invalid @enderror"
@ -66,7 +68,7 @@
</div>
<div class="form-group">
<label for="link">Link</label>
<label for="link">{{__('Link')}}</label>
<input value="{{$link->link}}" id="link" name="link"
type="text"
class="form-control @error('link') is-invalid @enderror"
@ -79,7 +81,7 @@
</div>
<div class="form-group">
<label for="description">Description</label>
<label for="description">{{__('Description')}}</label>
<textarea id="description"
name="description"
type="text"
@ -94,10 +96,9 @@
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">
Submit
{{__('Submit')}}
</button>
</div>
</form>
@ -112,19 +113,19 @@
<script>
document.addEventListener('DOMContentLoaded', (event) => {
// Summernote
// Summernote
$('#description').summernote({
height: 100,
toolbar: [
[ 'style', [ 'style' ] ],
[ 'font', [ 'bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear'] ],
[ 'fontname', [ 'fontname' ] ],
[ 'fontsize', [ 'fontsize' ] ],
[ 'color', [ 'color' ] ],
[ 'para', [ 'ol', 'ul', 'paragraph', 'height' ] ],
[ 'table', [ 'table' ] ],
[ 'insert', [ 'link'] ],
[ 'view', [ 'undo', 'redo', 'fullscreen', 'codeview', 'help' ] ]
['style', ['style']],
['font', ['bold', 'italic', 'underline', 'strikethrough', 'superscript', 'subscript', 'clear']],
['fontname', ['fontname']],
['fontsize', ['fontsize']],
['color', ['color']],
['para', ['ol', 'ul', 'paragraph', 'height']],
['table', ['table']],
['insert', ['link']],
['view', ['undo', 'redo', 'fullscreen', 'codeview', 'help']]
]
})
})

View file

@ -6,13 +6,13 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Useful Links</h1>
<h1>{{__('Useful Links')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.usefullinks.index')}}">Useful Links</a></li>
href="{{route('admin.usefullinks.index')}}">{{__('Useful Links')}}</a></li>
</ol>
</div>
</div>
@ -27,9 +27,9 @@
<div class="card-header">
<div class="d-flex justify-content-between">
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>Useful Links</h5>
<h5 class="card-title"><i class="fas fa-sliders-h mr-2"></i>{{__('Useful Links')}}</h5>
<a href="{{route('admin.usefullinks.create')}}" class="btn btn-sm btn-primary"><i
class="fas fa-plus mr-1"></i>Create new</a>
class="fas fa-plus mr-1"></i>{{__('Create new')}}</a>
</div>
</div>
@ -37,11 +37,11 @@
<table id="datatable" class="table table-striped">
<thead>
<tr>
<th>description</th>
<th width="50">Icon</th>
<th>Title</th>
<th>Link</th>
<th>Created at</th>
<th>{{__('description')}}</th>
<th width="50">{{__('Icon')}}</th>
<th>{{__('Title')}}</th>
<th>{{__('Link')}}</th>
<th>{{__('Created at')}}</th>
<th></th>
</tr>
</thead>
@ -61,11 +61,14 @@
<script>
function submitResult() {
return confirm("Are you sure you wish to delete?") !== false;
return confirm("{{__('Are you sure you wish to delete?')}}") !== false;
}
document.addEventListener("DOMContentLoaded", function () {
$('#datatable').DataTable({
language: {
url: '//cdn.datatables.net/plug-ins/1.11.3/i18n/{{config("app.datatable_locale")}}.json'
},
processing: true,
serverSide: true,
stateSave: true,

View file

@ -6,14 +6,14 @@
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1>Users</h1>
<h1>{{__('Users')}}</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item"><a href="{{route('home')}}">Dashboard</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">Users</a></li>
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__('Dashboard')}}</a></li>
<li class="breadcrumb-item"><a href="{{route('admin.users.index')}}">{{__('Users')}}</a></li>
<li class="breadcrumb-item"><a class="text-muted"
href="{{route('admin.users.edit' , $user->id)}}">Edit</a></li>
href="{{route('admin.users.edit' , $user->id)}}">{{__('Edit')}}</a></li>
</ol>
</div>
</div>
@ -33,7 +33,7 @@
@csrf
@method('PATCH')
<div class="form-group">
<label for="name">Username</label>
<label for="name">{{__('Username')}}</label>
<input value="{{$user->name}}" id="name" name="name" type="text"
class="form-control @error('name') is-invalid @enderror" required="required">
@error('name')
@ -43,7 +43,7 @@
@enderror
</div>
<div class="form-group">
<label for="email">Email</label>
<label for="email">{{__('Email')}}</label>
<input value="{{$user->email}}" id="email" name="email" type="text"
class="form-control @error('email') is-invalid @enderror"
required="required">
@ -54,7 +54,7 @@
@enderror
</div>
<div class="form-group">
<label for="pterodactyl_id">Pterodactyl ID</label>
<label for="pterodactyl_id">{{__('Pterodactyl ID')}}</label>
<input value="{{$user->pterodactyl_id}}" id="pterodactyl_id" name="pterodactyl_id"
type="number"
class="form-control @error('pterodactyl_id') is-invalid @enderror"
@ -65,8 +65,8 @@
</div>
@enderror
<div class="text-muted">
This ID refers to the user account created on pterodactyl's panel. <br>
<small>Only edit this if you know what you're doing :)</small>
{{__('This ID refers to the user account created on pterodactyls panel.')}} <br>
<small>{{__('Only edit this if you know what youre doing :)')}}</small>
</div>
</div>
<div class="form-group">
@ -82,7 +82,7 @@
@enderror
</div>
<div class="form-group">
<label for="server_limit">Server Limit</label>
<label for="server_limit">{{__('Server Limit')}}</label>
<input value="{{$user->server_limit}}" id="server_limit" name="server_limit" min="0"
max="1000000"
type="number"
@ -95,33 +95,33 @@
@enderror
</div>
<div class="form-group">
<label for="role">Role</label>
<label for="role">{{__('Role')}}</label>
<div>
<select id="role" name="role"
class="custom-select @error('role') is-invalid @enderror"
required="required">
<option @if($user->role == 'admin') selected @endif class="text-danger"
value="admin">
Administrator
</option>
<option @if($user->role == 'client') selected @endif class="text-success"
value="client">
Client
</option>
<option @if($user->role == 'member') selected @endif class="text-secondary"
value="member">
Member
</option>
</select>
</div>
@error('role')
<div class="text-danger">
{{$message}}
{{__(' Administrator')}}
</option>
<option @if($user->role == 'client') selected @endif class="text-success"
value="client">
{{__('Client')}}
</option>
<option @if($user->role == 'member') selected @endif class="text-secondary"
value="member">
{{__('Member')}}
</option>
</select>
</div>
@error('role')
<div class="text-danger">
{{$message}}
</div>
@enderror
</div>
<div class="form-group text-right">
<button type="submit" class="btn btn-primary">Submit</button>
<button type="submit" class="btn btn-primary">{{__('Submit')}}</button>
</div>
</div>
</div>
@ -130,7 +130,7 @@
<div class="card">
<div class="card-body">
<div class="col">
<div class="form-group"><label>New Password</label> <input
<div class="form-group"><label>{{__('New Password')}}</label> <input
class="form-control @error('new_password') is-invalid @enderror"
name="new_password" type="password" placeholder="••••••">
@ -142,7 +142,7 @@
</div>
</div>
<div class="col">
<div class="form-group"><label>Confirm Password</label>
<div class="form-group"><label>{{__('Confirm Password')}}</label>
<input
class="form-control @error('new_password_confirmation') is-invalid @enderror"
name="new_password_confirmation" type="password"

Some files were not shown because too many files have changed in this diff Show more