This commit is contained in:
merdan 2022-04-13 19:55:45 +05:00
parent d46867f101
commit 3f5323dce3
46 changed files with 20142 additions and 18332 deletions

3
.gitignore vendored
View File

@ -27,3 +27,6 @@ package-lock.json
yarn.lock
yarn-error.log
/packages/Webkul/suggestion/node_modules/
/resources/lang/vendor/admin/
/resources/lang/vendor/shop/
/resources/lang/vendor/velocity/

View File

@ -14,7 +14,7 @@ return [
|
*/
'enabled' => env('DEBUGBAR_ENABLED', false),
'enabled' => env('DEBUGBAR_ENABLED', null),
'except' => [
'telescope*',
'horizon*',
@ -42,6 +42,48 @@ return [
'port' => 2304, // Port to use with the "socket" driver
],
/*
|--------------------------------------------------------------------------
| Editor
|--------------------------------------------------------------------------
|
| Choose your preferred editor to use when clicking file name.
|
| Supported: "phpstorm", "vscode", "vscode-insiders", "vscode-remote",
| "vscode-insiders-remote", "vscodium", "textmate", "emacs",
| "sublime", "atom", "nova", "macvim", "idea", "netbeans",
| "xdebug", "espresso"
|
*/
'editor' => env('DEBUGBAR_EDITOR', 'phpstorm'),
/*
|--------------------------------------------------------------------------
| Remote Path Mapping
|--------------------------------------------------------------------------
|
| If you are using a remote dev server, like Laravel Homestead, Docker, or
| even a remote VPS, it will be necessary to specify your path mapping.
|
| Leaving one, or both of these, empty or null will not trigger the remote
| URL changes and Debugbar will treat your editor links as local files.
|
| "remote_sites_path" is an absolute base path for your sites or projects
| in Homestead, Vagrant, Docker, or another remote development server.
|
| Example value: "/home/vagrant/Code"
|
| "local_sites_path" is an absolute base path for your sites or projects
| on your local computer where your IDE or code editor is running on.
|
| Example values: "/Users/<name>/Code", "C:\Users\<name>\Documents\Code"
|
*/
'remote_sites_path' => env('DEBUGBAR_REMOTE_SITES_PATH', ''),
'local_sites_path' => env('DEBUGBAR_LOCAL_SITES_PATH', ''),
/*
|--------------------------------------------------------------------------
| Vendors

View File

@ -13,6 +13,10 @@ return array(
*/
'show_warnings' => false, // Throw an Exception on warnings from dompdf
'orientation' => 'portrait',
/*
* Dejavu Sans font is missing glyphs for converted entities, turn it off if you need to show and £.
*/
'convert_entities' => true,
'defines' => array(
/**
* The location of the DOMPDF font directory
@ -38,7 +42,7 @@ return array(
* Times-Roman, Times-Bold, Times-BoldItalic, Times-Italic,
* Symbol, ZapfDingbats.
*/
"font_dir" => storage_path('fonts/'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
"font_dir" => storage_path('fonts'), // advised by dompdf (https://github.com/dompdf/dompdf/pull/782)
/**
* The location of the DOMPDF font cache directory
@ -48,7 +52,7 @@ return array(
*
* Note: This directory must exist and be writable by the webserver process.
*/
"font_cache" => storage_path('fonts/'),
"font_cache" => storage_path('fonts'),
/**
* The location of a temporary directory.

View File

@ -48,6 +48,7 @@ return [
'use_bom' => false,
'include_separator_line' => false,
'excel_compatibility' => false,
'output_encoding' => '',
],
/*
@ -121,7 +122,7 @@ return [
|
*/
'csv' => [
'delimiter' => ',',
'delimiter' => null,
'enclosure' => '"',
'escape_character' => '\\',
'contiguous' => false,
@ -276,6 +277,9 @@ return [
*/
'transactions' => [
'handler' => 'db',
'db' => [
'connection' => null,
],
],
'temporary_files' => [
@ -289,7 +293,7 @@ return [
| storing reading or downloading. Here you can customize that path.
|
*/
'local_path' => storage_path('framework/laravel-excel'),
'local_path' => storage_path('framework/cache/laravel-excel'),
/*
|--------------------------------------------------------------------------

View File

@ -1,5 +1,17 @@
<?php
use Spatie\FlareClient\FlareMiddleware\AddGitInformation;
use Spatie\FlareClient\FlareMiddleware\RemoveRequestIp;
use Spatie\FlareClient\FlareMiddleware\CensorRequestBodyFields;
use Spatie\FlareClient\FlareMiddleware\CensorRequestHeaders;
use Spatie\LaravelIgnition\FlareMiddleware\AddDumps;
use Spatie\LaravelIgnition\FlareMiddleware\AddEnvironmentInformation;
use Spatie\LaravelIgnition\FlareMiddleware\AddExceptionInformation;
use Spatie\LaravelIgnition\FlareMiddleware\AddJobs;
use Spatie\LaravelIgnition\FlareMiddleware\AddLogs;
use Spatie\LaravelIgnition\FlareMiddleware\AddQueries;
use Spatie\LaravelIgnition\FlareMiddleware\AddNotifierName;
return [
/*
|
@ -17,29 +29,45 @@ return [
/*
|--------------------------------------------------------------------------
| Reporting Options
| Middleware
|--------------------------------------------------------------------------
|
| These options determine which information will be transmitted to Flare.
| These middleware will modify the contents of the report sent to Flare.
|
*/
'reporting' => [
'anonymize_ips' => true,
'collect_git_information' => false,
'report_queries' => true,
'maximum_number_of_collected_queries' => 200,
'report_query_bindings' => true,
'report_view_data' => true,
'grouping_type' => null,
'report_logs' => true,
'maximum_number_of_collected_logs' => 200,
'censor_request_body_fields' => ['password'],
'flare_middleware' => [
RemoveRequestIp::class,
AddGitInformation::class,
AddNotifierName::class,
AddEnvironmentInformation::class,
AddExceptionInformation::class,
AddDumps::class,
AddLogs::class => [
'maximum_number_of_collected_logs' => 200,
],
AddQueries::class => [
'maximum_number_of_collected_queries' => 200,
'report_query_bindings' => true,
],
AddJobs::class => [
'max_chained_job_reporting_depth' => 5,
],
CensorRequestBodyFields::class => [
'censor_fields' => [
'password',
],
],
CensorRequestHeaders::class => [
'headers' => [
'API-KEY'
]
]
],
/*
|--------------------------------------------------------------------------
| Reporting Log statements
| Reporting log statements
|--------------------------------------------------------------------------
|
| If this setting is `false` log statements won't be sent as events to Flare,
@ -48,15 +76,4 @@ return [
*/
'send_logs_as_events' => true,
/*
|--------------------------------------------------------------------------
| Censor request body fields
|--------------------------------------------------------------------------
|
| These fields will be censored from your request when sent to Flare.
|
*/
'censor_request_body_fields' => ['password'],
];

View File

@ -1,5 +1,23 @@
<?php
use Spatie\Ignition\Solutions\SolutionProviders\BadMethodCallSolutionProvider;
use Spatie\Ignition\Solutions\SolutionProviders\MergeConflictSolutionProvider;
use Spatie\Ignition\Solutions\SolutionProviders\UndefinedPropertySolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\DefaultDbNameSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\GenericLaravelExceptionSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\IncorrectValetDbCredentialsSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\InvalidRouteActionSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\MissingAppKeySolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\MissingColumnSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\MissingImportSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\MissingLivewireComponentSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\MissingMixManifestSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\RunningLaravelDuskInProductionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\TableNotFoundSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\UndefinedViewVariableSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\UnknownValidationSolutionProvider;
use Spatie\LaravelIgnition\Solutions\SolutionProviders\ViewNotFoundSolutionProvider;
return [
/*
@ -9,7 +27,7 @@ return [
|
| Choose your preferred editor to use when clicking any edit button.
|
| Supported: "phpstorm", "vscode", "vscode-insiders", "vscodium", "textmate", "emacs",
| Supported: "phpstorm", "vscode", "vscode-insiders", "textmate", "emacs",
| "sublime", "atom", "nova", "macvim", "idea", "netbeans",
| "xdebug"
|
@ -28,7 +46,7 @@ return [
|
*/
'theme' => env('IGNITION_THEME', 'light'),
'theme' => env('IGNITION_THEME', 'auto'),
/*
|--------------------------------------------------------------------------
@ -56,8 +74,43 @@ return [
| You can enable the command registration below.
|
*/
'register_commands' => env('REGISTER_IGNITION_COMMANDS', false),
/*
|--------------------------------------------------------------------------
| Solution Providers
|--------------------------------------------------------------------------
|
| You may specify a list of solution providers (as fully qualified class
| names) that shouldn't be loaded. Ignition will ignore these classes
| and possible solutions provided by them will never be displayed.
|
*/
'solution_providers' => [
// from spatie/ignition
BadMethodCallSolutionProvider::class,
MergeConflictSolutionProvider::class,
UndefinedPropertySolutionProvider::class,
// from spatie/laravel-ignition
IncorrectValetDbCredentialsSolutionProvider::class,
MissingAppKeySolutionProvider::class,
DefaultDbNameSolutionProvider::class,
TableNotFoundSolutionProvider::class,
MissingImportSolutionProvider::class,
InvalidRouteActionSolutionProvider::class,
ViewNotFoundSolutionProvider::class,
RunningLaravelDuskInProductionProvider::class,
MissingColumnSolutionProvider::class,
UnknownValidationSolutionProvider::class,
MissingMixManifestSolutionProvider::class,
MissingLivewireComponentSolutionProvider::class,
UndefinedViewVariableSolutionProvider::class,
GenericLaravelExceptionSolutionProvider::class,
],
/*
|--------------------------------------------------------------------------
| Ignored Solution Providers
@ -70,7 +123,7 @@ return [
*/
'ignored_solution_providers' => [
\Facade\Ignition\SolutionProviders\MissingPackageSolutionProvider::class,
],
/*
@ -79,12 +132,14 @@ return [
|--------------------------------------------------------------------------
|
| Some solutions that Ignition displays are runnable and can perform
| various tasks. Runnable solutions are enabled when your app has
| debug mode enabled. You may also fully disable this feature.
| various tasks. By default, runnable solutions are enabled when your app
| has debug mode enabled. You may also fully disable this feature.
|
| Default: env('IGNITION_ENABLE_RUNNABLE_SOLUTIONS', env('APP_DEBUG', false))
|
*/
'enable_runnable_solutions' => env('IGNITION_ENABLE_RUNNABLE_SOLUTIONS', null),
'enable_runnable_solutions' => env('IGNITION_ENABLE_RUNNABLE_SOLUTIONS', env('APP_DEBUG', false)),
/*
|--------------------------------------------------------------------------
@ -109,7 +164,7 @@ return [
|
*/
'remote_sites_path' => env('IGNITION_REMOTE_SITES_PATH', ''),
'remote_sites_path' => env('IGNITION_REMOTE_SITES_PATH', base_path()),
'local_sites_path' => env('IGNITION_LOCAL_SITES_PATH', ''),
/*
@ -121,6 +176,32 @@ return [
| specify a route prefix that will be used to host all internal links.
|
*/
'housekeeping_endpoint_prefix' => '_ignition',
/*
|--------------------------------------------------------------------------
| Settings File
|--------------------------------------------------------------------------
|
| Ignition allows you to save your settings to a specific global file.
|
| If no path is specified, a file with settings will be saved to the user's
| home directory. The directory depends on the OS and its settings but it's
| typically `~/.ignition.json`. In this case, the settings will be applied
| to all of your projects where Ignition is used and the path is not
| specified.
|
| However, if you want to store your settings on a project basis, or you
| want to keep them in another directory, you can specify a path where
| the settings file will be saved. The path should be an existing directory
| with correct write access.
| For example, create a new `ignition` folder in the storage directory and
| use `storage_path('ignition')` as the `settings_file_path`.
|
| Default value: '' (empty string)
*/
'settings_file_path' => '',
];

View File

@ -1,7 +1,6 @@
<?php
return array(
return [
/*
|--------------------------------------------------------------------------
| Name of route
@ -14,7 +13,7 @@ return array(
|
| Examples: "images", "img/cache"
|
*/
*/
'route' => 'cache',
@ -28,12 +27,12 @@ return array(
|
| Define as many directories as you like.
|
*/
*/
'paths' => array(
'paths' => [
storage_path('app/public'),
public_path('storage')
),
public_path('storage'),
],
/*
|--------------------------------------------------------------------------
@ -49,13 +48,13 @@ return array(
| The values of this array will define which filter class
| will be applied, by its fully qualified name.
|
*/
*/
'templates' => array(
'templates' => [
'small' => 'Webkul\Product\CacheFilters\Small',
'medium' => 'Webkul\Product\CacheFilters\Medium',
'large' => 'Webkul\Product\CacheFilters\Large',
),
],
/*
|--------------------------------------------------------------------------
@ -64,8 +63,7 @@ return array(
|
| Lifetime in minutes of the images handled by the imagecache route.
|
*/
*/
'lifetime' => 525600,
);
];

View File

@ -1,16 +1,6 @@
<?php
/*
* This file is part of jwt-auth.
*
* (c) Sean Tymon <tymon148@gmail.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
return [
/*
|--------------------------------------------------------------------------
| JWT Authentication Secret
@ -45,7 +35,6 @@ return [
*/
'keys' => [
/*
|--------------------------------------------------------------------------
| Public Key
@ -82,7 +71,6 @@ return [
*/
'passphrase' => env('JWT_PASSPHRASE'),
],
/*
@ -236,6 +224,17 @@ return [
'blacklist_grace_period' => env('JWT_BLACKLIST_GRACE_PERIOD', 0),
/*
|--------------------------------------------------------------------------
| Show blacklisted token option
|--------------------------------------------------------------------------
|
| Specify if you want to show black listed token exception on the laravel logs.
|
*/
'show_black_list_exception' => env('JWT_SHOW_BLACKLIST_EXCEPTION', 0),
/*
|--------------------------------------------------------------------------
| Cookies encryption
@ -264,7 +263,6 @@ return [
*/
'providers' => [
/*
|--------------------------------------------------------------------------
| JWT Provider
@ -274,7 +272,7 @@ return [
|
*/
'jwt' => Tymon\JWTAuth\Providers\JWT\Lcobucci::class,
'jwt' => PHPOpenSourceSaver\JWTAuth\Providers\JWT\Lcobucci::class,
/*
|--------------------------------------------------------------------------
@ -285,7 +283,7 @@ return [
|
*/
'auth' => Tymon\JWTAuth\Providers\Auth\Illuminate::class,
'auth' => PHPOpenSourceSaver\JWTAuth\Providers\Auth\Illuminate::class,
/*
|--------------------------------------------------------------------------
@ -296,8 +294,6 @@ return [
|
*/
'storage' => Tymon\JWTAuth\Providers\Storage\Illuminate::class,
'storage' => PHPOpenSourceSaver\JWTAuth\Providers\Storage\Illuminate::class,
],
];

View File

@ -15,7 +15,7 @@ return [
|
*/
'driver' => env('SCOUT_DRIVER', 'null'),
'driver' => env('SCOUT_DRIVER', null),
/*
|--------------------------------------------------------------------------

View File

@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('sitemaps', function (Blueprint $table) {
$table->increments('id');
$table->string('file_name');
$table->string('path');
$table->datetime('generated_at')->nullable();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('sitemaps');
}
};

View File

@ -3,17 +3,65 @@
namespace Webkul\Sales\Repositories;
use Illuminate\Container\Container as App;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\DB;
use Webkul\Core\Eloquent\Repository;
use Webkul\Marketplace\Repositories\OrderRepository as SellerOrderRepository;
use Webkul\Marketplace\Repositories\ProductRepository as MpProductRepository;
use Webkul\Marketplace\Repositories\SellerRepository;
use Webkul\Sales\Contracts\Invoice;
use Webkul\Sales\Generators\InvoiceSequencer;
use Webkul\Marketplace\Repositories\OrderRepository as SellerOrderRepository;
use Webkul\Marketplace\Repositories\SellerRepository;
use Webkul\Marketplace\Repositories\ProductRepository as MpProductRepository;
class InvoiceRepository extends Repository
{
/**
* OrderRepository object
*
* @var \Webkul\Sales\Repositories\OrderRepository
*/
protected $orderRepository;
/**
* SellerRepository object
*
* @var mixed
*/
protected $sellerRepository;
/**
* MpProductRepository object
*
* @var mixed
*/
protected $mpProductRepository;
/**
* SellerOrderRepository object
*
* @var \Webkul\Marketplace\Repositories\OrderRepository as SellerOrderRepository
*/
protected $sellerOrderRepository;
/**
* OrderItemRepository object
*
* @var \Webkul\Sales\Repositories\OrderItemRepository
*/
protected $orderItemRepository;
/**
* InvoiceItemRepository object
*
* @var \Webkul\Sales\Repositories\InvoiceItemRepository
*/
protected $invoiceItemRepository;
/**
* DownloadableLinkPurchasedRepository object
*
* @var \Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository
*/
protected $downloadableLinkPurchasedRepository;
/**
* Create a new repository instance.
*
@ -22,44 +70,59 @@ class InvoiceRepository extends Repository
* @param \Webkul\Sales\Repositories\InvoiceItemRepository $invoiceItemRepository
* @param \Webkul\Sales\Repositories\DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository
* @param \Illuminate\Container\Container $app
* @return void
*/
public function __construct(
protected OrderRepository $orderRepository,
protected OrderItemRepository $orderItemRepository,
protected InvoiceItemRepository $invoiceItemRepository,
protected DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository,
protected SellerOrderRepository $sellerOrderRepository,
protected SellerRepository $sellerRepository,
protected MpProductRepository $mpProductRepository,
OrderRepository $orderRepository,
OrderItemRepository $orderItemRepository,
InvoiceItemRepository $invoiceItemRepository,
DownloadableLinkPurchasedRepository $downloadableLinkPurchasedRepository,
SellerOrderRepository $sellerOrderRepository,
SellerRepository $sellerRepository,
MpProductRepository $mpProductRepository,
App $app
)
{
$this->orderRepository = $orderRepository;
$this->orderItemRepository = $orderItemRepository;
$this->invoiceItemRepository = $invoiceItemRepository;
$this->invoiceItemRepository = $invoiceItemRepository;
$this->downloadableLinkPurchasedRepository = $downloadableLinkPurchasedRepository;
$this->sellerOrderRepository = $sellerOrderRepository;
$this->sellerRepository = $sellerRepository;
$this->mpProductRepository = $mpProductRepository;
parent::__construct($app);
}
/**
* Specify model class name.
* Specify Model class name
*
* @return string
*/
public function model()
function model()
{
return Invoice::class;
}
/**
* Create invoice.
*
* @param array $data
* @param string $invoiceState
* @param string $orderState
* @return \Webkul\Sales\Models\Invoice
* @return \Webkul\Sales\Contracts\Invoice
*/
public function create(array $data, $invoiceState = null, $orderState = null)
public function create(array $data)
{
DB::beginTransaction();
try {
Event::dispatch('sales.invoice.save.before', $data);
@ -67,17 +130,10 @@ class InvoiceRepository extends Repository
$totalQty = array_sum($data['invoice']['items']);
if (isset($invoiceState)) {
$state = $invoiceState;
} else {
$state = 'paid';
}
$invoice = $this->model->create([
'increment_id' => $this->generateIncrementId(),
'order_id' => $order->id,
'total_qty' => $totalQty,
'state' => $state,
'state' => 'paid',
'base_currency_code' => $order->base_currency_code,
'channel_currency_code' => $order->channel_currency_code,
'order_currency_code' => $order->order_currency_code,
@ -175,11 +231,7 @@ class InvoiceRepository extends Repository
$this->orderRepository->collectTotals($order);
if (isset($orderState)) {
$this->orderRepository->updateOrderStatus($order, $orderState);
} else {
$this->orderRepository->updateOrderStatus($order);
}
$this->orderRepository->updateOrderStatus($order);
Event::dispatch('sales.invoice.save.after', $invoice);
} catch (\Exception $e) {
@ -194,59 +246,12 @@ class InvoiceRepository extends Repository
}
/**
* Have product to invoice.
*
* @param array $data
* @return bool
*/
public function haveProductToInvoice(array $data): bool
{
foreach ($data['invoice']['items'] as $qty) {
if ((int) $qty) {
return true;
}
}
return false;
}
/**
* Is valid quantity.
*
* @param array $data
* @return bool
*/
public function isValidQuantity(array $data): bool
{
foreach ($data['invoice']['items'] as $itemId => $qty) {
$orderItem = $this->orderItemRepository->find($itemId);
if ($qty > $orderItem->qty_to_invoice) {
return false;
}
}
return true;
}
/**
* Generate increment id.
*
* @return int
*/
public function generateIncrementId()
{
return app(InvoiceSequencer::class)->resolveGeneratorClass();
}
/**
* Collect totals.
*
* @param \Webkul\Sales\Models\Invoice $invoice
* @return \Webkul\Sales\Models\Invoice
* @param \Webkul\Sales\Contracts\Invoice $invoice
* @return \Webkul\Sales\Contracts\Invoice
*/
public function collectTotals($invoice)
{
$invoice->sub_total = $invoice->base_sub_total = 0;
$invoice->tax_amount = $invoice->base_tax_amount = 0;
$invoice->discount_amount = $invoice->base_discount_amount = 0;
@ -292,7 +297,9 @@ class InvoiceRepository extends Repository
$invoice->base_discount_amount += $invoice->order->base_shipping_discount_amount;
if ($invoice->order->shipping_amount) {
foreach ($invoice->order->invoices as $prevInvoice) {
if ((float) $prevInvoice->shipping_amount) {
if($seller) {
@ -327,18 +334,4 @@ class InvoiceRepository extends Repository
return $invoice;
}
/**
* Update state.
*
* @param \Webkul\Sales\Models\Invoice $invoice
* @return void
*/
public function updateState($invoice, $status)
{
$invoice->state = $status;
$invoice->save();
return true;
}
}

View File

@ -26,31 +26,96 @@ class Controller extends BaseController
*/
protected $_config;
/**
* SearchRepository object
*
* @var \Webkul\Product\Repositories\SearchRepository
*/
protected $searchRepository;
/**
* ProductRepository object
*
* @var \Webkul\Product\Repositories\ProductRepository
*/
protected $productRepository;
/**
* ProductRepository object of velocity package
*
* @var \Webkul\Velocity\Repositories\Product\ProductRepository
*/
protected $velocityProductRepository;
/**
* CategoryRepository object of velocity package
*
* @var \Webkul\Category\Repositories\CategoryRepository
*/
protected $categoryRepository;
/**
* WishlistRepository object
*
* @var \Webkul\Customer\Repositories\WishlistRepository
*/
protected $wishlistRepository;
/**
* Helper object
*
* @var \Webkul\Velocity\Helpers\Helper
*/
protected $velocityHelper;
/**
* VelocityCustomerCompareProductRepository object of repository
*
* @var \Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository
*/
protected $compareProductsRepository;
protected $mpProductRepository;
/**
* Create a new controller instance.
*
* @param \Webkul\Velocity\Helpers\Helper $velocityHelper
* @param \Webkul\Product\Repositories\SearchRepository $searchRepository
* @param \Webkul\Product\Repositories\ProductRepository $productRepository
* @param \Webkul\Category\Repositories\CategoryRepository $categoryRepository
* @param \Webkul\Velocity\Repositories\Product\ProductRepository $velocityProductRepository
* @param \Webkul\Velocity\Helpers\Helper $velocityHelper
* @param \Webkul\Product\Repositories\SearchRepository $searchRepository
* @param \Webkul\Product\Repositories\ProductRepository $productRepository
* @param \Webkul\Category\Repositories\CategoryRepository $categoryRepository
* @param \Webkul\Velocity\Repositories\Product\ProductRepository $velocityProductRepository
* @param \Webkul\Velocity\Repositories\VelocityCustomerCompareProductRepository $compareProductsRepository
* @param Webkul\Marketplace\Repositories\ProductRepository $mpProductRepository
*
* @return void
*/
public function __construct(
protected Helper $velocityHelper,
protected SearchRepository $searchRepository,
protected ProductRepository $productRepository,
protected WishlistRepository $wishlistRepository,
protected CategoryRepository $categoryRepository,
protected VelocityProductRepository $velocityProductRepository,
protected CustomerCompareProductRepository $compareProductsRepository,
protected MpProductRepository $mpProductRepository
)
{
Helper $velocityHelper,
SearchRepository $searchRepository,
ProductRepository $productRepository,
WishlistRepository $wishlistRepository,
CategoryRepository $categoryRepository,
VelocityProductRepository $velocityProductRepository,
CustomerCompareProductRepository $compareProductsRepository,
MpProductRepository $mpProductRepository
) {
$this->_config = request('_config');
$this->velocityHelper = $velocityHelper;
$this->searchRepository = $searchRepository;
$this->productRepository = $productRepository;
$this->categoryRepository = $categoryRepository;
$this->wishlistRepository = $wishlistRepository;
$this->velocityProductRepository = $velocityProductRepository;
$this->compareProductsRepository = $compareProductsRepository;
$this->mpProductRepository = $mpProductRepository;
}
}

View File

@ -6,12 +6,13 @@ use Illuminate\Http\Request;
use Webkul\Velocity\Http\Shop\Controllers;
use Webkul\Checkout\Contracts\Cart as CartModel;
use Cart;
use Webkul\Product\Facades\ProductImage;
class ShopController extends Controller
{
/**
* Index to handle the view loaded with the search results.
* Index to handle the view loaded with the search results
*
* @return \Illuminate\View\View
*/
@ -22,12 +23,6 @@ class ShopController extends Controller
return view($this->_config['view'])->with('results', $results ? $results : null);
}
/**
* Fetch product details.
*
* @param string $slug
* @return \Illuminate\Http\Response
*/
public function fetchProductDetails($slug)
{
$product = $this->productRepository->findBySlug($slug);
@ -46,7 +41,7 @@ class ShopController extends Controller
'totalReviews' => $productReviewHelper->getTotalReviews($product),
'rating' => ceil($productReviewHelper->getAverageRating($product)),
'image' => $galleryImages['small_image_url'],
],
]
];
} else {
$response = [
@ -59,8 +54,6 @@ class ShopController extends Controller
}
/**
* Fetch category details.
*
* @return \Illuminate\Http\Response
*/
public function categoryDetails()
@ -131,28 +124,24 @@ class ShopController extends Controller
}
/**
* Fetch categories.
*
* @return array
*/
public function fetchCategories()
{
$formattedCategories = [];
$categories = $this->categoryRepository->getVisibleCategoryTree(core()->getCurrentChannel()->root_category_id);
foreach ($categories as $category) {
$formattedCategories[] = $this->getCategoryFilteredData($category);
array_push($formattedCategories, $this->getCategoryFilteredData($category));
}
return [
'status' => true,
'categories' => $formattedCategories,
];
}
/**
* Fetch fancy category.
*
* @param string $slug
* @return array
*/
@ -163,7 +152,7 @@ class ShopController extends Controller
if ($categoryDetails) {
$response = [
'status' => true,
'categoryDetails' => $this->getCategoryFilteredData($categoryDetails),
'categoryDetails' => $this->getCategoryFilteredData($categoryDetails)
];
}
@ -173,8 +162,27 @@ class ShopController extends Controller
}
/**
* Get wishlist.
*
* @param \Webkul\Category\Contracts\Category $category
* @return array
*/
private function getCategoryFilteredData($category)
{
$formattedChildCategory = [];
foreach ($category->children as $child) {
array_push($formattedChildCategory, $this->getCategoryFilteredData($child));
}
return [
'id' => $category->id,
'slug' => $category->slug,
'name' => $category->name,
'children' => $formattedChildCategory,
'category_icon_path' => $category->category_icon_path,
];
}
/**
* @return \Illuminate\View\View
*/
public function getWishlistList()
@ -183,56 +191,42 @@ class ShopController extends Controller
}
/**
* This function will provide the count of wishlist and comparison for logged in user.
* this function will provide the count of wishlist and comparison for logged in user
*
* @return \Illuminate\Http\Response
*/
public function getItemsCount()
{
if ($customer = auth()->guard('customer')->user()) {
if (! core()->getConfigData('catalog.products.homepage.out_of_stock_items')) {
$wishlistItemsCount = $this->wishlistRepository->getModel()
->leftJoin('products as ps', 'wishlist.product_id', '=', 'ps.id')
->leftJoin('product_inventories as pv', 'ps.id', '=', 'pv.product_id')
->where(function ($qb) {
$qb
->WhereIn('ps.type', ['configurable', 'grouped', 'downloadable', 'bundle', 'booking'])
->orwhereIn('ps.type', ['simple', 'virtual'])->where('pv.qty', '>', 0);
})
->where('wishlist.customer_id', $customer->id)
->where('wishlist.channel_id', core()->getCurrentChannel()->id)
->count('wishlist.id');
} else {
$wishlistItemsCount = $this->wishlistRepository->count([
'customer_id' => $customer->id,
'channel_id' => core()->getCurrentChannel()->id,
]);
}
$wishlistItemsCount = $this->wishlistRepository->count([
'customer_id' => $customer->id,
'channel_id' => core()->getCurrentChannel()->id,
]);
$comparedItemsCount = $this->compareProductsRepository->count([
'customer_id' => $customer->id,
]);
$response = [
'status' => true,
'status' => true,
'compareProductsCount' => $comparedItemsCount,
'wishlistedProductsCount' => $wishlistItemsCount,
];
}
return response()->json($response ?? [
'status' => false,
'status' => false
]);
}
/**
* This method will provide details of multiple product.
* This function will provide details of multiple product
*
* @return \Illuminate\Http\Response
*/
public function getDetailedProducts()
{
// for product details
if ($items = request()->get('items')) {
$moveToCart = request()->get('moveToCart');
@ -245,31 +239,12 @@ class ShopController extends Controller
}
return response()->json($response ?? [
'status' => false,
'status' => false
]);
}
/**
* This method will fetch products from category.
*
* @param int $categoryId
*
* @return \Illuminate\Http\Response
*/
public function getCategoryProducts($categoryId)
{
/* fetch category details */
$categoryDetails = $this->categoryRepository->find($categoryId);
/* if category not found then return empty response */
if (! $categoryDetails) {
return response()->json([
'products' => [],
'paginationHTML' => '',
]);
}
/* fetching products */
$products = $this->productRepository->getAll($categoryId);
$productItems = $products->items();
@ -284,36 +259,10 @@ class ShopController extends Controller
$productsArray['data'] = $formattedProducts;
}
/* sending response */
return response()->json([
'products' => collect($products->items())->map(function ($product) {
return $this->velocityHelper->formatProduct($product);
}),
return response()->json($response ?? [
'products' => $productsArray['data'],
'paginationHTML' => $products->appends(request()->input())->links()->toHtml(),
]);
}
/**
* Get category filtered data.
*
* @param \Webkul\Category\Contracts\Category $category
* @return array
*/
private function getCategoryFilteredData($category)
{
$formattedChildCategory = [];
foreach ($category->children as $child) {
$formattedChildCategory[] = $this->getCategoryFilteredData($child);
}
return [
'id' => $category->id,
'slug' => $category->slug,
'name' => $category->name,
'children' => $formattedChildCategory,
'category_icon_url' => $category->category_icon_url,
'image_url' => $category->image_url,
];
}
}

File diff suppressed because it is too large Load Diff

View File

@ -74,14 +74,18 @@ return [
'taxes' => 'Steuern',
'marketing' => 'Marketing',
'promotions' => 'Promotions',
'email-marketing' => 'Email Marketing',
'campaigns' => 'Campaigns',
'email-templates' => 'Email Templates',
'email-marketing' => 'Email Marketing',
'campaigns' => 'Campaigns',
'email-templates' => 'Email Templates',
'events' => 'Events',
'sitemaps' => 'Sitemaps',
'tax-categories' => 'Steuer-Kategorien',
'tax-rates' => 'Steuersätze',
'discount' => 'Rabatt',
'cms' => 'CMS',
'transactions' => 'Transactions'
'transactions' => 'Transacties',
'mode' => 'modus',
'account-title' => 'Rekening',
],
'acl' =>
[
@ -127,6 +131,13 @@ return [
'promotions' => 'Promotions',
'cart-rules' => 'Warenkorbregeln',
'catalog-rules' => 'Katalogregeln',
'email-marketing' => 'Email Marketing',
'email-templates' => 'Email Templates',
'campaigns' => 'Campaigns',
'subscribers' => 'Newsletter Subscribers',
'events' => 'Events',
'sitemaps' => 'Sitemaps',
'newsletter-subscriptions' => 'Newsletter Subscriptions',
],
'dashboard' =>
[
@ -245,18 +256,24 @@ return [
'update-status' => 'Update-Status',
'transaction-id' => 'Transaction Id',
'transaction-date' => 'Transaction Date',
'file-name' => 'File Name',
'path' => 'Path',
'link-for-google' => 'Link For Google',
],
'account' =>
[
'title' => 'Mein Konto',
'save-btn-title' => 'Speichern',
'general' => 'Allgemein',
'name' => 'Name',
'email' => 'E-Mail',
'password' => 'Passwort',
'confirm-password' => 'Passwort bestätigen',
'change-password' => 'Änderung des Account-Passworts',
'current-password' => 'Aktuelles Passwort',
'title' => 'Mein Konto',
'save-btn-title' => 'Speichern',
'general' => 'Allgemein',
'upload-image-info' => 'Upload a Profile Image (100px x 100px) in PNG or JPG Format',
'remove-image' => 'Remove Image',
'image-upload-message' => 'Only images (.jpeg, .jpg, .png, ..) are allowed.',
'name' => 'Name',
'email' => 'E-Mail',
'password' => 'Passwort',
'confirm-password' => 'Passwort bestätigen',
'change-password' => 'Änderung des Account-Passworts',
'current-password' => 'Aktuelles Passwort',
],
'users' =>
[
@ -269,6 +286,9 @@ return [
'confirm-password' => 'Passwort bestätigen',
'back-link-title' => 'Zurück zur Anmeldung',
'submit-btn-title' => 'E-Mail zum Zurücksetzen des Passworts senden',
'passwords' => [
'throttled' => 'Warnung: Sie haben das Zurücksetzen des Passworts kürzlich angefordert, bitte überprüfen Sie Ihre E-Mails.',
]
],
'reset-password' =>
[
@ -325,150 +345,154 @@ return [
'email' => 'E-Mail',
'password' => 'Passwort',
'forget-password-link-title' => 'Passwort vergessen?',
'remember-me' => 'Anmeldung merken',
'submit-btn-title' => 'Anmelden',
'remember-me' => 'Anmeldung merken',
'submit-btn-title' => 'Anmelden',
],
],
'sales' =>
'sales' =>
[
'orders' =>
'orders' =>
[
'title' => 'Bestellungen',
'view-title' => 'Bestellung #:order_id',
'cancel-btn-title' => 'Abbrechen',
'shipment-btn-title' => 'Sendung',
'invoice-btn-title' => 'Rechnung',
'info' => 'Informationen',
'invoices' => 'Rechnungen',
'shipments' => 'Sendungen',
'order-and-account' => 'Bestellung und Rechnung',
'order-info' => 'Bestellinformationen',
'order-date' => 'Bestelldatum',
'order-status' => 'Bestellstatus',
'order-status-canceled' => 'Abgebrochen',
'order-status-closed' => 'Geschlossen',
'order-status-fraud' => 'Betrug',
'order-status-pending' => 'Ausstehend',
'title' => 'Bestellungen',
'view-title' => 'Bestellung #:order_id',
'cancel-btn-title' => 'Abbrechen',
'shipment-btn-title' => 'Sendung',
'invoice-btn-title' => 'Rechnung',
'info' => 'Informationen',
'invoices' => 'Rechnungen',
'shipments' => 'Sendungen',
'order-and-account' => 'Bestellung und Rechnung',
'order-info' => 'Bestellinformationen',
'order-date' => 'Bestelldatum',
'order-status' => 'Bestellstatus',
'order-status-canceled' => 'Abgebrochen',
'order-status-closed' => 'Geschlossen',
'order-status-fraud' => 'Betrug',
'order-status-pending' => 'Ausstehend',
'order-status-pending-payment' => 'Ausstehende Zahlung',
'order-status-processing' => 'Verarbeitung',
'order-status-success' => 'Abgeschlossen',
'channel' => 'Kanal',
'customer-name' => 'Name des Kunden',
'email' => 'E-Mail',
'contact-number' => 'Kontakt-Nummer',
'account-info' => 'Account-Informationen',
'address' => 'Adresse',
'shipping-address' => 'Versandadresse',
'billing-address' => 'Rechnungsadresse',
'payment-and-shipping' => 'Zahlung und Versand',
'payment-info' => 'Zahlungsinformationen',
'payment-method' => 'Zahlungsmethode',
'currency' => 'Währung',
'shipping-info' => 'Versand-Informationen',
'shipping-method' => 'Versandart',
'shipping-price' => 'Versandkosten',
'products-ordered' => 'Bestellte Produkte',
'SKU' => 'SKU',
'product-name' => 'Produktname',
'qty' => 'Menge',
'item-status' => 'Produktstatus',
'item-ordered' => 'Bestellt (:qty_ordered)',
'item-invoice' => 'In Rechnung gestellt (:qty_invoiced)',
'item-shipped' => 'Versand (:qty_shipped)',
'item-canceled' => 'Abgebrochen (:qty_canceled)',
'item-refunded' => 'Erstattet (:qty_refunded)',
'price' => 'Preis',
'total' => 'Insgesamt',
'subtotal' => 'Zwischensumme',
'shipping-handling' => 'Versand & Verpackungskosten',
'discount' => 'Rabatt',
'tax' => 'Umsatzsteuer',
'tax-percent' => 'Umsatzsteuer Prozent',
'tax-amount' => 'Umsatzsteuer Betrag',
'discount-amount' => 'Rabatt Betrag',
'grand-total' => 'Gesamtsumme',
'total-paid' => 'Insgesamt Bezahlt',
'total-refunded' => 'Insgesamt Erstattet',
'total-due' => 'Insgesamt fällig',
'cancel-confirm-msg' => 'Sind Sie sicher, dass Sie diese Bestellung stornieren möchten?',
'refund-btn-title' => 'Rückerstattung',
'refunds' => 'Erstattungen',
'transactions' => 'Transactions'
'order-status-processing' => 'Verarbeitung',
'order-status-success' => 'Abgeschlossen',
'channel' => 'Kanal',
'customer-name' => 'Name des Kunden',
'email' => 'E-Mail',
'contact-number' => 'Kontakt-Nummer',
'account-info' => 'Account-Informationen',
'address' => 'Adresse',
'shipping-address' => 'Versandadresse',
'billing-address' => 'Rechnungsadresse',
'payment-and-shipping' => 'Zahlung und Versand',
'payment-info' => 'Zahlungsinformationen',
'payment-method' => 'Zahlungsmethode',
'currency' => 'Währung',
'shipping-info' => 'Versand-Informationen',
'shipping-method' => 'Versandart',
'shipping-price' => 'Versandkosten',
'products-ordered' => 'Bestellte Produkte',
'SKU' => 'SKU',
'product-name' => 'Produktname',
'qty' => 'Menge',
'item-status' => 'Produktstatus',
'item-ordered' => 'Bestellt (:qty_ordered)',
'item-invoice' => 'In Rechnung gestellt (:qty_invoiced)',
'item-shipped' => 'Versand (:qty_shipped)',
'item-canceled' => 'Abgebrochen (:qty_canceled)',
'item-refunded' => 'Erstattet (:qty_refunded)',
'price' => 'Preis',
'total' => 'Insgesamt',
'subtotal' => 'Zwischensumme',
'shipping-handling' => 'Versand & Verpackungskosten',
'discount' => 'Rabatt',
'tax' => 'Umsatzsteuer',
'tax-percent' => 'Umsatzsteuer Prozent',
'tax-amount' => 'Umsatzsteuer Betrag',
'discount-amount' => 'Rabatt Betrag',
'grand-total' => 'Gesamtsumme',
'total-paid' => 'Insgesamt Bezahlt',
'total-refunded' => 'Insgesamt Erstattet',
'total-due' => 'Insgesamt fällig',
'cancel-confirm-msg' => 'Sind Sie sicher, dass Sie diese Bestellung stornieren möchten?',
'refund-btn-title' => 'Rückerstattung',
'refunds' => 'Erstattungen',
'transactions' => 'Transactions',
],
'invoices' =>
'invoices' =>
[
'title' => 'Rechnungen',
'id' => 'Id',
'invoice-id' => 'Rechnungsnummer',
'date' => 'Rechnungsdatum',
'order-id' => 'Auftragsnummer',
'customer-name' => 'Name des Kunden',
'status' => 'Status',
'amount' => 'Betrag',
'action' => 'Aktion',
'add-title' => 'Rechnung erstellen',
'save-btn-title' => 'Rechnung speichern',
'qty' => 'Menge',
'qty-ordered' => 'Bestellte Menge',
'qty-to-invoice' => 'Menge in Rechnung zu stellen',
'view-title' => 'Rechnung #:invoice_id',
'bill-to' => 'Rechnung an',
'ship-to' => 'Versenden an',
'print' => 'Drucken',
'order-date' => 'Bestell-Datum',
'creation-error' => 'Die Erstellung einer Bestellrechnung ist nicht zulässig.',
'product-error' => 'Eine Rechnung kann nicht ohne Produkte erstellt werden.',
'status-overdue' => 'Overdue',
'status-pending' => 'Pending Payment',
'status-paid' => 'Paid',
'title' => 'Rechnungen',
'id' => 'Id',
'invoice-id' => 'Rechnungsnummer',
'date' => 'Rechnungsdatum',
'order-id' => 'Auftragsnummer',
'customer-name' => 'Name des Kunden',
'status' => 'Status',
'amount' => 'Betrag',
'action' => 'Aktion',
'add-title' => 'Rechnung erstellen',
'save-btn-title' => 'Rechnung speichern',
'send-duplicate-invoice' => 'Send Duplicate Invoice',
'send' => 'Send',
'invoice-sent' => 'Invoice sent successfully!',
'qty' => 'Menge',
'qty-ordered' => 'Bestellte Menge',
'qty-to-invoice' => 'Menge in Rechnung zu stellen',
'view-title' => 'Rechnung #:invoice_id',
'bill-to' => 'Rechnung an',
'ship-to' => 'Versenden an',
'print' => 'Drucken',
'order-date' => 'Bestell-Datum',
'invalid-qty' => 'We found an invalid quantity to invoice items.',
'creation-error' => 'Die Erstellung einer Bestellrechnung ist nicht zulässig.',
'product-error' => 'Eine Rechnung kann nicht ohne Produkte erstellt werden.',
'status-overdue' => 'Overdue',
'status-pending' => 'Pending Payment',
'status-paid' => 'Paid',
],
'shipments' =>
'shipments' =>
[
'title' => 'Sendungen',
'id' => 'Id',
'date' => 'Versanddatum',
'order-id' => 'Auftragsnummer',
'order-date' => 'Bestelldatum',
'customer-name' => 'Name des Kunden',
'total-qty' => 'Menge insgesamt',
'action' => 'Aktion',
'add-title' => 'Sendung anlegen',
'save-btn-title' => 'Versandkosten sparen',
'qty-ordered' => 'Bestellte Menge',
'qty-to-ship' => 'Menge zu versenden',
'title' => 'Sendungen',
'id' => 'Id',
'date' => 'Versanddatum',
'order-id' => 'Auftragsnummer',
'order-date' => 'Bestelldatum',
'customer-name' => 'Name des Kunden',
'total-qty' => 'Menge insgesamt',
'action' => 'Aktion',
'add-title' => 'Sendung anlegen',
'save-btn-title' => 'Versandkosten sparen',
'qty-ordered' => 'Bestellte Menge',
'qty-to-ship' => 'Menge zu versenden',
'available-sources' => 'Verfügbaren Quellen',
'source' => 'Quelle',
'select-source' => 'Bitte wählen sie die Quelle',
'qty-available' => 'Menge verfügbar',
'inventory-source' => 'Inventarquelle',
'carrier-title' => 'Zulieferer',
'tracking-number' => 'Tracking-Nummer',
'view-title' => 'Versand #:shipment_id',
'creation-error' => 'Für diese Bestellung kann kein Versand erstellt werden.',
'order-error' => 'Die Erstellung von Auftragssendungen ist nicht zulässig.',
'quantity-invalid' => 'Die angeforderte Menge ist ungültig oder nicht verfügbar.',
'source' => 'Quelle',
'select-source' => 'Bitte wählen sie die Quelle',
'qty-available' => 'Menge verfügbar',
'inventory-source' => 'Inventarquelle',
'carrier-title' => 'Zulieferer',
'tracking-number' => 'Tracking-Nummer',
'view-title' => 'Versand #:shipment_id',
'creation-error' => 'Für diese Bestellung kann kein Versand erstellt werden.',
'order-error' => 'Die Erstellung von Auftragssendungen ist nicht zulässig.',
'quantity-invalid' => 'Die angeforderte Menge ist ungültig oder nicht verfügbar.',
],
'refunds' =>
'refunds' =>
[
'title' => 'Erstattungen',
'id' => 'Id',
'add-title' => 'Erstattung erstellen',
'save-btn-title' => 'Rückerstattung',
'order-id' => 'Auftragsnummer',
'qty-ordered' => 'Bestellte Menge',
'qty-to-refund' => 'Menge zu erstatten',
'refund-shipping' => 'Erstattung Versand',
'adjustment-refund' => 'Rückerstattung anpassen',
'adjustment-fee' => 'Gebühr anpassen',
'update-qty' => 'Mengen anpassen',
'invalid-qty' => 'Wir haben eine ungültige Menge gefunden, um Artikel zu erstatten.',
'refund-limit-error' => 'Das meiste Geld, das zur Rückerstattung zur Verfügung steht, ist :Höhe.',
'refunded' => 'Erstattet',
'date' => 'Rückerstattungsdatum',
'customer-name' => 'Name des Kunden',
'status' => 'Status',
'action' => 'Aktion',
'view-title' => 'Rückerstattung #:refund_id',
'title' => 'Erstattungen',
'id' => 'Id',
'add-title' => 'Erstattung erstellen',
'save-btn-title' => 'Rückerstattung',
'order-id' => 'Auftragsnummer',
'qty-ordered' => 'Bestellte Menge',
'qty-to-refund' => 'Menge zu erstatten',
'refund-shipping' => 'Erstattung Versand',
'adjustment-refund' => 'Rückerstattung anpassen',
'adjustment-fee' => 'Gebühr anpassen',
'update-qty' => 'Mengen anpassen',
'invalid-qty' => 'Wir haben eine ungültige Menge gefunden, um Artikel zu erstatten.',
'refund-limit-error' => 'Das meiste Geld, das zur Rückerstattung zur Verfügung steht, ist :Höhe.',
'refunded' => 'Erstattet',
'date' => 'Rückerstattungsdatum',
'customer-name' => 'Name des Kunden',
'status' => 'Status',
'action' => 'Aktion',
'view-title' => 'Rückerstattung #:refund_id',
'invalid-refund-amount-error' => 'Der Rückerstattungsbetrag sollte nicht Null sein.',
],
@ -478,25 +502,25 @@ return [
'id' => 'Id',
'transaction-id' => 'Transaction Id',
'payment-method' => 'Payment method',
'transaction-amount' => 'Transaction amount',
'transaction-amount' => 'Transaction amount',
'action' => 'Action',
'view-title' => 'Transaction #:transaction_id',
'transaction-data' => 'Transaction Data',
'order-id' => 'Order Id',
'invoice-id' => 'Invoice Id',
'invoice-id' => 'Invoice Id',
'status' => 'Status',
'created-at' => 'Created At',
'transaction-details' => 'Transaction Details',
'response' => [
'invoice-missing' => 'This invoice id does not exist',
'transaction-saved' => 'The transaction has been saved',
'already-paid' => 'This invoice has already been paid'
]
]
'response' => [
'invoice-missing' => 'This invoice id does not exist',
'transaction-saved' => 'The transaction has been saved',
'already-paid' => 'This invoice has already been paid',
],
],
],
'catalog' =>
'catalog' =>
[
'products' =>
'products' =>
[
'title' => 'Produkte',
'add-product-btn-title' => 'Produkt hinzufügen',
@ -505,6 +529,16 @@ return [
'save-btn-title' => 'Produkt speichern',
'general' => 'Allgemein',
'product-type' => 'Produkttyp',
'type' => [
'simple' => 'eenvoudig',
'booking' => 'boeken',
'bundle' => 'bundel',
'downloadable' => 'downloadbaar',
'grouped' => 'gegroepeerd',
'virtual' => 'virtueel',
'configurable' => 'configureerbaar',
],
'simple' => 'Einfach',
'configurable' => 'Konfigurierbar',
'familiy' => 'Attributgruppe',
@ -577,59 +611,60 @@ return [
],
'attributes' =>
[
'title' => 'Attribute',
'add-title' => 'Attribut hinzufügen',
'edit-title' => 'Attribut bearbeiten',
'save-btn-title' => 'Attribut speichern',
'general' => 'Allgemein',
'code' => 'Attribut-Code',
'type' => 'Attribut-Typ',
'text' => 'Text',
'textarea' => 'Textarea',
'price' => 'Preis',
'boolean' => 'Boolean',
'select' => 'Select',
'multiselect' => 'Multiselect',
'datetime' => 'Datetime',
'date' => 'Datum',
'label' => 'Label',
'admin' => 'Admin',
'options' => 'Optionen',
'position' => 'Position',
'add-option-btn-title' => 'Option hinzufügen',
'title' => 'Attribute',
'add-title' => 'Attribut hinzufügen',
'edit-title' => 'Attribut bearbeiten',
'save-btn-title' => 'Attribut speichern',
'general' => 'Allgemein',
'code' => 'Attribut-Code',
'type' => 'Attribut-Typ',
'text' => 'Text',
'textarea' => 'Textarea',
'enable-wysiwyg' => 'Enable Wysiwyg Editor',
'price' => 'Preis',
'boolean' => 'Boolean',
'select' => 'Select',
'multiselect' => 'Multiselect',
'datetime' => 'Datetime',
'date' => 'Datum',
'label' => 'Label',
'admin' => 'Admin',
'options' => 'Optionen',
'position' => 'Position',
'add-option-btn-title' => 'Option hinzufügen',
'load-more-options-btn-title' => 'Load More Options',
'validations' => 'Validierungen',
'input_validation' => 'Eingabe-Validierung',
'is_required' => 'Ist erforderlich',
'is_unique' => 'Ist einzigartig',
'number' => 'Anzahl',
'decimal' => 'Dezimal',
'email' => 'E-Mail',
'url' => 'URL',
'configuration' => 'Konfiguration',
'status' => 'Status',
'yes' => 'Ja',
'no' => 'Nein',
'value_per_locale' => 'Wert pro Sprache',
'value_per_channel' => 'Wert pro Kanal',
'is_filterable' => 'Verwendung in der geschichteten Navigation',
'is_configurable' => 'Verwenden Sie diese Option, um ein konfigurierbares Produkt zu erstellen',
'admin_name' => 'Admin-Name',
'is_visible_on_front' => 'Sichtbar auf der Produktansichtseite im Frontend',
'swatch_type' => 'Farbfeld-Typ',
'dropdown' => 'Dropdown',
'color-swatch' => 'Farbfeld',
'image-swatch' => 'Bild Farbfeld',
'text-swatch' => 'Text Farbfeld',
'swatch' => 'Farbfeld',
'image' => 'Bild',
'file' => 'Datei',
'checkbox' => 'Checkbox',
'use_in_flat' => 'In Produkt Flat Tabelle erstellen',
'is_comparable' => 'Attribut ist vergleichbar',
'default_null_option' => 'Erstellen Sie eine leere Standardoption',
'validation-messages' => [
'max-size' => 'The image size must be less than 600 KB'
'validations' => 'Validierungen',
'input_validation' => 'Eingabe-Validierung',
'is_required' => 'Ist erforderlich',
'is_unique' => 'Ist einzigartig',
'number' => 'Anzahl',
'decimal' => 'Dezimal',
'email' => 'E-Mail',
'url' => 'URL',
'configuration' => 'Konfiguration',
'status' => 'Status',
'yes' => 'Ja',
'no' => 'Nein',
'value_per_locale' => 'Wert pro Sprache',
'value_per_channel' => 'Wert pro Kanal',
'is_filterable' => 'Verwendung in der geschichteten Navigation',
'is_configurable' => 'Verwenden Sie diese Option, um ein konfigurierbares Produkt zu erstellen',
'admin_name' => 'Admin-Name',
'is_visible_on_front' => 'Sichtbar auf der Produktansichtseite im Frontend',
'swatch_type' => 'Farbfeld-Typ',
'dropdown' => 'Dropdown',
'color-swatch' => 'Farbfeld',
'image-swatch' => 'Bild Farbfeld',
'text-swatch' => 'Text Farbfeld',
'swatch' => 'Farbfeld',
'image' => 'Bild',
'file' => 'Datei',
'checkbox' => 'Checkbox',
'use_in_flat' => 'In Produkt Flat Tabelle erstellen',
'is_comparable' => 'Attribut ist vergleichbar',
'default_null_option' => 'Erstellen Sie eine leere Standardoption',
'validation-messages' => [
'max-size' => 'The image size must be less than 600 KB',
],
],
'families' =>
@ -644,6 +679,8 @@ return [
'name' => 'Name',
'groups' => 'Gruppen',
'add-group-title' => 'Gruppe hinzufügen',
'edit-group-title' => 'Edit Group',
'update-group-title' => 'Update Group',
'position' => 'Position',
'attribute-code' => 'Code',
'type' => 'Typ',
@ -671,6 +708,7 @@ return [
'description' => 'Beschreibung',
'parent-category' => 'Übergeordnete Kategorie',
'seo' => 'Suchmaschinen-Optimierung',
'products' => 'Produkte',
'slug' => 'Slug',
'meta_title' => 'Meta Titel',
'meta_description' => 'Meta-Beschreibung',
@ -864,7 +902,7 @@ return [
'seo-keywords' => 'Meta-keywords',
'maintenance-mode' => 'Maintenance Mode',
'maintenance-mode-text' => 'Message',
'allowed-ips' => 'Allowed IPs'
'allowed-ips' => 'Allowed IPs',
],
'sliders' =>
[
@ -884,7 +922,7 @@ return [
'delete-success' => 'Der letzte Slider kann nicht gelöscht werden',
'delete-fail' => 'Slider erfolgreich gelöscht',
'expired-at' => 'Expire Date',
'sort-order' => 'Sort Order'
'sort-order' => 'Sort Order',
],
'tax-categories' =>
[
@ -1000,6 +1038,7 @@ return [
'title' => 'Kunden',
'first_name' => 'Vorname',
'last_name' => 'Nachname',
'select-gender' => 'Wähle Geschlecht',
'gender' => 'Geschlecht',
'email' => 'E-Mail',
'date_of_birth' => 'Geburtsdatum',
@ -1022,6 +1061,9 @@ return [
'status' => 'Status',
'active' => 'Aktiv',
'inactive' => 'Inaktiv',
'is-suspended' => 'Is Suspended',
'suspend' => 'Suspend',
'suspended' => 'Suspended',
],
'reviews' =>
[
@ -1187,67 +1229,82 @@ return [
'marketing' => [
'templates' => [
'title' => 'Email Templates',
'add-title' => 'Add Email Template',
'edit-title' => 'Edit Email Template',
'title' => 'Email Templates',
'add-title' => 'Add Email Template',
'edit-title' => 'Edit Email Template',
'save-btn-title' => 'Save',
'general' => 'General',
'name' => 'Name',
'status' => 'Status',
'active' => 'Active',
'inactive' => 'Inactive',
'draft' => 'Draft',
'content' => 'Content',
'general' => 'General',
'name' => 'Name',
'status' => 'Status',
'active' => 'Active',
'inactive' => 'Inactive',
'draft' => 'Draft',
'content' => 'Content',
'create-success' => 'Email template created successfully.',
'update-success' => 'Email template updated successfully.',
'delete-success' => 'Email template deleted successfully',
],
'campaigns' => [
'title' => 'Campaigns',
'add-title' => 'Add Campaign',
'edit-title' => 'Edit Campaign',
'title' => 'Campaigns',
'add-title' => 'Add Campaign',
'edit-title' => 'Edit Campaign',
'save-btn-title' => 'Save',
'general' => 'General',
'name' => 'Name',
'status' => 'Status',
'active' => 'Active',
'inactive' => 'Inactive',
'subject' => 'Subject',
'general' => 'General',
'name' => 'Name',
'status' => 'Status',
'active' => 'Active',
'inactive' => 'Inactive',
'subject' => 'Subject',
'email-template' => 'Email Template',
'audience' => 'Audience',
'channel' => 'Channel',
'audience' => 'Audience',
'channel' => 'Channel',
'customer-group' => 'Customer Group',
'schedule' => 'Schedule',
'schedule-type' => 'Schedule Type',
'once' => 'Once',
'events' => 'Events',
'schedule-date' => 'Schedule Date',
'spooling' => 'Spooling',
'event' => 'Event',
'birthday' => 'Birthday',
'schedule' => 'Schedule',
'schedule-type' => 'Schedule Type',
'once' => 'Once',
'events' => 'Events',
'schedule-date' => 'Schedule Date',
'spooling' => 'Spooling',
'event' => 'Event',
'birthday' => 'Birthday',
'create-success' => 'Campaign created successfully.',
'update-success' => 'Campaign updated successfully.',
'delete-success' => 'Campaign deleted successfully',
],
'events' => [
'title' => 'Events',
'add-title' => 'Add Event',
'edit-title' => 'Edit Event',
'title' => 'Events',
'add-title' => 'Add Event',
'edit-title' => 'Edit Event',
'save-btn-title' => 'Save',
'general' => 'General',
'name' => 'Name',
'description' => 'Description',
'date' => 'Date',
'general' => 'General',
'name' => 'Name',
'description' => 'Description',
'date' => 'Date',
'create-success' => 'Event created successfully.',
'update-success' => 'Event updated successfully.',
'delete-success' => 'Event deleted successfully.',
'edit-error' => 'Can not edit this event.'
'edit-error' => 'Can not edit this event.',
],
'sitemaps' => [
'title' => 'Sitemaps',
'add-title' => 'Add Sitemap',
'edit-title' => 'Edit Sitemap',
'save-btn-title' => 'Save',
'general' => 'General',
'file-name' => 'File Name',
'file-name-info' => 'Example: sitemap.xml',
'path' => 'Path',
'path-info' => 'Example: "/sitemap/" or "/" for base path',
'create-success' => 'Sitemap created successfully.',
'update-success' => 'Sitemap updated successfully.',
'delete-success' => 'Sitemap deleted successfully.',
]
],
'error' =>
'error' =>
[
'go-to-home' => 'HOME ÖFFNEN',
'in-maitainace' => 'In Bearbeitung',
@ -1281,11 +1338,11 @@ return [
'message' => 'Die Anforderung wurde nicht angewendet, da keine gültigen Authentifizierungsdaten für die Zielressource vorhanden sind.',
],
'tinymce' =>
'tinymce' =>
[
'http-error' => 'HTTP error.',
'invalid-json' => 'Invalid JSON.',
'upload-failed' => 'Image upload failed due to a XHR Transport error.'
'upload-failed' => 'Image upload failed due to a XHR Transport error.',
],
],
'export' =>
@ -1347,6 +1404,7 @@ return [
'product-copied' => 'Das Produkt wurde kopiert',
'error-while-copying' => 'Fehler beim Kopieren des Produkts',
'product-can-not-be-copied' => 'Produkte vom Typ :type können nicht kopiert werden.',
'cannot-change' => 'Cannot change the :name.',
'cannot-delete-default' => 'Der Standardkanal kann nicht gelöscht werden',
'create-success' => ':name erfolgreich erstellt.',
'update-success' => ':name erfolgreich aktualisiert.',
@ -1365,6 +1423,11 @@ return [
'cancel-error' => ':name können nicht storniert werden.',
'already-taken' => 'Der :name wird bereits verwendet.',
'order-pending' => 'Konto kann nicht gelöscht werden, da einige Bestellungen ausstehen oder verarbeitet werden.',
'something-went-wrong' => 'Something went wrong!',
],
'validations' => [
'slug-being-used' => 'This slug is getting used in either categories or products.',
'slug-reserved' => 'This slug is reserved.',
],
'footer' =>
[
@ -1408,6 +1471,8 @@ return [
'stock-options' => 'Inventaroptionen',
'allow-backorders' => 'Nachbestellungen zulassen',
'customer' => 'Kunden',
'wishlist' => 'Wishlist',
'wishlist-share' => 'Enable Sharing',
'settings' => 'Einstellungen',
'address' => 'Adresse',
'street-lines' => 'Adresszeilen (Standard: 1)',
@ -1417,10 +1482,12 @@ return [
'flate-rate-shipping' => 'Pauschale Versandkosten',
'shipping' => 'Versand',
'origin' => 'Herkunft',
'requirements' => 'Requirements',
'country' => 'Land',
'state' => 'Bundesland',
'zip' => 'Postleitzahl',
'city' => 'Stadt',
'information' => 'Information',
'street-address' => 'Anschrift',
'title' => 'Titel',
'description' => 'Beschreibung',
@ -1482,6 +1549,9 @@ return [
'invoice-slip-design' => 'Rechnungsdesign',
'logo' => 'Logo',
'default' => 'Standard',
'invoice-reminders' => 'Rechnungserinnerungen',
'maximum-limit-of-reminders' => 'Maximale Anzahl von Erinnerungen',
'interval-between-reminders' => 'Intervall zwischen Erinnerungen',
'sandbox' => 'Sandbox',
'all-channels' => 'Alle',
'all-locales' => 'Alle',
@ -1511,6 +1581,50 @@ return [
'set-invoice-status' => 'Set the invoice status after creating the invoice to',
'set-order-status' => 'Set the order status after creating the invoice to',
'generate-invoice-applicable' => 'Applicable if automatic generate invoice is enabled',
'records-found' => 'Datensätze gefunden ',
],
],
'api' => [
'system' => [
'api' => 'API',
'basic-configuration' => 'Grundlegende Einstellung',
'customer-configuration' => 'Kundenkonfiguration',
'username' => 'Nutzername',
'password' => 'Passwort',
'login-after-register' => 'Anmelden nach Registrieren',
'info-login' => 'Info: Der Kunde muss sich nach der Registrierung einloggen API.',
],
'auth' => [
'invalid-auth' => 'Warnung: Sie sind nicht berechtigt, APIs zu verwenden.',
'required-token' => 'Warnung: Token-Parameter ist erforderlich.',
'invalid-store' => 'Warnung: Sie fordern einen ungültigen Store an.',
'login-required' => 'Warnung: Kundenlogin ist erforderlich, um das Produkt zur Vergleichsliste hinzuzufügen.',
'resource-not-found' => 'Warnung: Angeforderte :resource nicht im Datensatz gefunden.',
],
],
'notification' => [
'title' => 'Benachrichtigung',
'title-plural' => 'Benachrichtigungen',
'status' => [
'all' => 'Alle',
'pending' => 'Anhängig',
'processing' => 'Verarbeitung',
'canceled' => 'Abgebrochen',
'closed' => 'Geschlossen',
'completed' => 'Abgeschlossen',
],
'view-all' => 'Alle Benachrichtigungen anzeigen',
'no-record' => 'Kein Datensatz gefunden',
'read-all' => 'Als gelesen markieren',
'notification-marked-success' => 'Benachrichtigung erfolgreich markiert',
'order-status-messages' => [
'completed' => 'Bestellung abgeschlossen',
'closed' => 'Bestellung geschlossen',
'canceled' => 'Bestellung storniert',
'pending' => 'Bestellung ausstehend',
'processing' => 'Auftragsabwicklung',
],
],
];

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -81,6 +81,7 @@ return [
'campaigns' => 'अभियान',
'email-templates' => 'ईमेल टेम्प्लेट',
'events' => 'आयोजन',
'sitemaps' => 'Sitemaps',
'discount' => 'छूट',
'cms' => 'सीएमएस',
'transactions' => 'लेनदेन',
@ -135,6 +136,7 @@ return [
'campaigns' => 'अभियान',
'subscribers' => 'न्यूज़लेटर सब्सक्राइबर्स',
'events' => 'आयोजन',
'sitemaps' => 'Sitemaps',
'newsletter-subscriptions' => 'न्यूज़लेटर सदस्यता',
],
@ -257,18 +259,24 @@ return [
'date' => 'तारीख',
'transaction-id' => 'लेनदेन आईडी',
'transaction-date' => 'कार्यवाही की तिथि',
'file-name' => 'File Name',
'path' => 'Path',
'link-for-google' => 'Link For Google',
],
'account' => [
'title' => 'मेरा खाता',
'save-btn-title' => 'सहेजें',
'general' => 'आम',
'name' => 'नाम',
'email' => 'ईमेल',
'password' => 'कुंजिका',
'confirm-password' => 'पासवर्ड की पुष्टि कीजिये',
'change-password' => 'खाते का पासवर्ड बदलें',
'current-password' => 'वर्तमान पासवर्ड',
'title' => 'मेरा खाता',
'save-btn-title' => 'सहेजें',
'general' => 'आम',
'upload-image-info' => 'Upload a Profile Image (100px x 100px) in PNG or JPG Format',
'remove-image' => 'Remove Image',
'image-upload-message' => 'Only images (.jpeg, .jpg, .png, ..) are allowed.',
'name' => 'नाम',
'email' => 'ईमेल',
'password' => 'कुंजिका',
'confirm-password' => 'पासवर्ड की पुष्टि कीजिये',
'change-password' => 'खाते का पासवर्ड बदलें',
'current-password' => 'वर्तमान पासवर्ड',
],
'users' => [
@ -680,6 +688,8 @@ return [
'name' => 'नाम',
'groups' => 'समूह',
'add-group-title' => 'समूह जोड़ें',
'edit-group-title' => 'Edit Group',
'update-group-title' => 'Update Group',
'position' => 'स्थान',
'attribute-code' => 'कोड',
'type' => 'प्रकार',
@ -706,6 +716,7 @@ return [
'description' => 'विवरण',
'parent-category' => 'अभिभावक श्रेणी',
'seo' => 'खोज इंजिन अनुकूलन',
'products' => 'उत्पाद',
'slug' => 'स्लग',
'meta_title' => 'मेटा शीर्षक',
'meta_description' => 'मेटा विवरण',
@ -1152,7 +1163,7 @@ return [
'action-type' => 'प्रक्रिया का प्रकार',
'percentage-product-price' => 'उत्पाद मूल्य का प्रतिशत',
'fixed-amount' => 'निश्चित राशि',
'fixed-amount-whole-cart' => 'निश्चित राशि से पूरी गाड़ी',
'fixed-amount-whole-cart' => 'निश्चित राशि से पूरी कार्ट',
'buy-x-get-y-free' => 'X खरीदें, Y मुफ़्त पाएं',
'discount-amount' => 'छूट राशि',
'discount-quantity' => 'अधिकतम मात्रा में छूट दी जाने की अनुमति',
@ -1287,6 +1298,21 @@ return [
'delete-success' => 'ईवेंट सफलतापूर्वक हटाया गया।',
'edit-error' => 'इस घटना को संपादित नहीं कर सकता।',
],
'sitemaps' => [
'title' => 'Sitemaps',
'add-title' => 'Add Sitemap',
'edit-title' => 'Edit Sitemap',
'save-btn-title' => 'Save',
'general' => 'General',
'file-name' => 'File Name',
'file-name-info' => 'Example: sitemap.xml',
'path' => 'Path',
'path-info' => 'Example: "/sitemap/" or "/" for base path',
'create-success' => 'Sitemap created successfully.',
'update-success' => 'Sitemap updated successfully.',
'delete-success' => 'Sitemap deleted successfully.',
]
],
'error' => [

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -80,6 +80,7 @@ return [
'campaigns' => '广告活动',
'email-templates' => '邮件模板',
'events' => '事件列表',
'sitemaps' => 'Sitemaps',
'discount' => '折扣',
'cms' => 'CMS',
'transactions' => '事物列表',
@ -87,52 +88,53 @@ return [
],
'acl' => [
'dashboard' => '仪表盘',
'sales' => '销售列表',
'cancel' => '取消',
'orders' => '订单列表',
'shipments' => '发货列表',
'invoices' => '发票列表',
'refunds' => '退款列表',
'catalog' => '商品目录',
'products' => '产品列表',
'copy' => '复制',
'categories' => '分类列表',
'attributes' => '属性列表',
'attribute-families' => '属性家族',
'customers' => '客户列表',
'addresses' => '地址列表',
'note' => '备注',
'groups' => '客户群',
'reviews' => '评论列表',
'configure' => '全局配置',
'settings' => '系统设置',
'locales' => '多语言',
'currencies' => '货币列表',
'exchange-rates' => '汇率换算',
'inventory-sources' => '货源列表',
'channels' => '渠道列表',
'users' => '后台用户',
'roles' => '权限规则',
'sliders' => '图片轮播',
'taxes' => '税务列表',
'tax-categories' => '税务分类',
'tax-rates' => '税率',
'view' => '查看',
'edit' => '编辑',
'create' => '添加',
'delete' => '删除',
'mass-delete' => '批量删除',
'mass-update' => '批量更新',
'marketing' => '市场营销',
'promotions' => '促销活动',
'cart-rules' => '购物车规则',
'catalog-rules' => '商品目录规则',
'email-marketing' => '邮件营销',
'email-templates' => '邮件模板',
'campaigns' => '活动列表',
'subscribers' => '邮件订阅',
'events' => '事件列表',
'dashboard' => '仪表盘',
'sales' => '销售列表',
'cancel' => '取消',
'orders' => '订单列表',
'shipments' => '发货列表',
'invoices' => '发票列表',
'refunds' => '退款列表',
'catalog' => '商品目录',
'products' => '产品列表',
'copy' => '复制',
'categories' => '分类列表',
'attributes' => '属性列表',
'attribute-families' => '属性家族',
'customers' => '客户列表',
'addresses' => '地址列表',
'note' => '备注',
'groups' => '客户群',
'reviews' => '评论列表',
'configure' => '全局配置',
'settings' => '系统设置',
'locales' => '多语言',
'currencies' => '货币列表',
'exchange-rates' => '汇率换算',
'inventory-sources' => '货源列表',
'channels' => '渠道列表',
'users' => '后台用户',
'roles' => '权限规则',
'sliders' => '图片轮播',
'taxes' => '税务列表',
'tax-categories' => '税务分类',
'tax-rates' => '税率',
'view' => '查看',
'edit' => '编辑',
'create' => '添加',
'delete' => '删除',
'mass-delete' => '批量删除',
'mass-update' => '批量更新',
'marketing' => '市场营销',
'promotions' => '促销活动',
'cart-rules' => '购物车规则',
'catalog-rules' => '商品目录规则',
'email-marketing' => '邮件营销',
'email-templates' => '邮件模板',
'campaigns' => '活动列表',
'subscribers' => '邮件订阅',
'events' => '事件列表',
'sitemaps' => 'Sitemaps',
'newsletter-subscriptions' => '邮件列表订阅',
],
@ -255,18 +257,24 @@ return [
'date' => '日期',
'transaction-id' => '交易ID',
'transaction-date' => '交易日期',
'file-name' => 'File Name',
'path' => 'Path',
'link-for-google' => 'Link For Google',
],
'account' => [
'title' => '我的帐户',
'save-btn-title' => '保存',
'general' => '一般的',
'name' => '名称',
'email' => '电子邮件',
'password' => '密码',
'confirm-password' => '确认密码',
'change-password' => '修改密码',
'current-password' => '当前密码'
'title' => '我的帐户',
'save-btn-title' => '保存',
'general' => '一般的',
'upload-image-info' => 'Upload a Profile Image (100px x 100px) in PNG or JPG Format',
'remove-image' => 'Remove Image',
'image-upload-message' => 'Only images (.jpeg, .jpg, .png, ..) are allowed.',
'name' => '名称',
'email' => '电子邮件',
'password' => '密码',
'confirm-password' => '确认密码',
'change-password' => '修改密码',
'current-password' => '当前密码'
],
'users' => [
@ -607,6 +615,7 @@ return [
'type' => '属性类型',
'text' => '文本',
'textarea' => '文本框',
'enable-wysiwyg' => 'Enable Wysiwyg Editor',
'price' => '价格',
'boolean' => '布尔值',
'select' => '选择',
@ -664,6 +673,8 @@ return [
'name' => '名称',
'groups' => '客户群',
'add-group-title' => '添加群',
'edit-group-title' => 'Edit Group',
'update-group-title' => 'Update Group',
'position' => '位置',
'attribute-code' => '代码',
'type' => '类型',
@ -690,6 +701,7 @@ return [
'description' => '描述',
'parent-category' => '父分类',
'seo' => '搜索引擎优化',
'products' => '产品列表',
'slug' => 'Slug',
'meta_title' => 'Meta标题',
'meta_description' => 'Meta描述',
@ -1259,6 +1271,21 @@ return [
'update-success' => '事件更新成功.',
'delete-success' => '事件删除成功.',
'edit-error' => '无法编辑此活动.'
],
'sitemaps' => [
'title' => 'Sitemaps',
'add-title' => 'Add Sitemap',
'edit-title' => 'Edit Sitemap',
'save-btn-title' => 'Save',
'general' => 'General',
'file-name' => 'File Name',
'file-name-info' => 'Example: sitemap.xml',
'path' => 'Path',
'path-info' => 'Example: "/sitemap/" or "/" for base path',
'create-success' => 'Sitemap created successfully.',
'update-success' => 'Sitemap updated successfully.',
'delete-success' => 'Sitemap deleted successfully.',
]
],
@ -1547,7 +1574,53 @@ return [
'generate-invoice' => '下单后自动生成发票',
'set-invoice-status' => '创建发票后设置发票状态为',
'set-order-status' => '将创建发票后的订单状态设置为',
'generate-invoice-applicable' => '适用于启用自动生成发票的情况'
]
]
'generate-invoice-applicable' => '适用于启用自动生成发票的情况',
'records-found' => '找到记录',
'logo-size' => '图像分辨率应该是 112px X 41px',
'favicon-size' => '图像分辨率应该是 16px X 16px',
'invoice-logo-size' => '图像分辨率应该是 192px X 50px',
],
],
'api' => [
'system' => [
'api' => 'API',
'basic-configuration' => '基本配置',
'customer-configuration' => '客户配置',
'username' => '用户名',
'password' => '密码',
'login-after-register' => '注册后登录',
'info-login' => '信息: 顾客 注册API后必须登录.',
],
'auth' => [
'invalid-auth' => '警告:您无权使用 API。',
'required-token' => '警告:令牌参数是必需的。',
'invalid-store' => '警告:您请求的商店无效。',
'login-required' => '警告:需要客户登录才能将产品添加到比较列表。',
'resource-not-found' => '警告: 已请求:resource 在记录中找不到.',
],
],
'notification' => [
'notification-title' => '通知',
'title-plural' => '通知',
'status' => [
'all' => 'All',
'pending' => 'Pending',
'processing' => 'Processing',
'canceled' => 'Canceled',
'closed' => 'Closed',
'completed' => 'Completed',
],
'view-all' => '查看所有通知',
'no-record' => '没有找到记录',
'read-all' => '标记为已读',
'notification-marked-success' => '通知标记成功',
'order-status-messages' => [
'completed' => '订单完成',
'closed' => '订单已关闭',
'canceled' => '订单取消',
'pending' => '订单待处理',
'processing' => '订单处理',
],
],
];

File diff suppressed because it is too large Load Diff

View File

@ -376,6 +376,7 @@ return [
'share-wishlist' => 'ইচ্ছা তালিকা ভাগ করুন',
'wishlist-sharing' => 'ইচ্ছা তালিকা শেয়ারিং',
'shared-link' => 'শেয়ারড লিংক',
'copy' => 'Copy',
'visibility' => 'দৃশ্যমানতা',
'public' => 'পাবলিক',
'private' => 'ব্যক্তিগত',

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -375,6 +375,7 @@ return [
'share-wishlist' => 'שתף משאלות',
'wishlist-sharing' => 'שיתוף רשימת המשאלות',
'shared-link' => 'קישור משותף',
'copy' => 'Copy',
'visibility' => 'רְאוּת',
'public' => 'פּוּמְבֵּי',
'private' => 'פְּרָטִי',

View File

@ -35,10 +35,9 @@ return [
'sign-in' => 'साइन इन करें',
'sign-up' => 'साइन अप करें',
'account' => 'हेतु',
'cart' => 'गाड़ी',
'cart' => 'कार्ट',
'profile' => 'प्रोफाइल',
'wishlist' => 'इच्छा सूची',
'cart' => 'गाड़ी',
'logout' => 'लॉग आउट',
'search-text' => 'यहां उत्पाद खोजें',
],
@ -46,7 +45,7 @@ return [
'minicart' => [
'view-cart' => 'की हुई खरीददारी देखो',
'checkout' => 'चेक आउट',
'cart' => 'गाड़ी',
'cart' => 'कार्ट',
'zero' => '0',
],
@ -355,7 +354,7 @@ return [
'deleteall' => 'सभी हटा दो',
'confirm-delete-all' => 'क्या आप वाकई सभी इच्छा सूची हटाना चाहते हैं?',
'moveall' => 'सभी उत्पादों को कार्ट में ले जाएं',
'move-to-cart' => 'गाड़ी को चलाना',
'move-to-cart' => 'कार्ट को चलाना',
'error' => 'अज्ञात समस्याओं के कारण उत्पाद को विशलिस्ट में नहीं जोड़ा जा सकता, कृपया बाद में चेकबैक करें',
'add' => 'आइटम सफलतापूर्वक इच्छा सूची में जोड़ा गया',
'remove' => 'आइटम को इच्छा सूची से सफलतापूर्वक हटा दिया गया',
@ -376,6 +375,7 @@ return [
'share-wishlist' => 'शेयर विशलिस्ट',
'wishlist-sharing' => 'विशलिस्ट शेयरिंग',
'shared-link' => 'साझा लिंक',
'copy' => 'Copy',
'visibility' => 'दृश्यता',
'public' => 'जनता',
'private' => 'निजी',

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -374,6 +374,7 @@ return [
'share-wishlist' => '«Поделиться списком желаний»',
'wishlist-sharing' => '«Обмен списком желаний»',
'shared-link' => '«Общая ссылка»',
'copy' => 'Copy',
'visibility' => '«Видимость»',
'public' => '«Общественный»',
'private' => 'Частный',

View File

@ -376,6 +376,7 @@ return [
'share-wishlist' => 'පැතුම් ලැයිස්තුව බෙදාගන්න',
'wishlist-sharing' => 'පැතුම් ලැයිස්තු බෙදාගැනීම',
'shared-link' => 'බෙදාගත් සබැඳිය',
'copy' => 'Copy',
'visibility' => 'දෘෂ්‍යතාව',
'public' => 'මහජන',
'private' => 'පුද්ගලික',

File diff suppressed because it is too large Load Diff

View File

@ -375,6 +375,7 @@ return [
'share-wishlist' => '分享愿望清单',
'wishlist-sharing' => '愿望清单分享',
'shared-link' => '已共享链接',
'copy' => 'Copy',
'visibility' => '可见度',
'public' => '公开的',
'private' => '私有的',

View File

@ -184,7 +184,7 @@ return [
],
'header' => [
'cart' => 'गाड़ी',
'cart' => 'कार्ट',
'guest' => 'अतिथि',
'logout' => 'लॉग आउट',
'title' => 'हेतु',
@ -203,7 +203,7 @@ return [
],
'minicart' => [
'cart' => 'गाड़ी',
'cart' => 'कार्ट',
'view-cart' => 'गाडी देंखे',
],
@ -212,7 +212,7 @@ return [
'checkout' => 'चेक आउट',
'cart' => [
'view-cart' => 'गाडी देंखे',
'cart-summary' => 'गाड़ी का संक्षिप्त विवरण',
'cart-summary' => 'कार्ट का संक्षिप्त विवरण',
],
'qty' => 'मात्रा',
'items' => 'आइटम',

View File

@ -113,14 +113,14 @@ return [
'general' => 'Genel',
'add-image-btn-title' => 'Görsel Ekle',
'footer-middle' => [
'about-us' => 'About Us',
'customer-service' => 'Customer Service',
'whats-new' => 'What\'s New',
'contact-us' => 'Contact Us',
'order-and-returns' => 'Order and Returns',
'payment-policy' => 'Payment Policy',
'shipping-policy' => 'Shipping Policy',
'privacy-and-cookies-policy' => 'Privacy and Cookies Policy'
'about-us' => 'Hakkımızda',
'customer-service' => 'Müşteri Servisi',
'whats-new' => 'Yeni Neler Var',
'contact-us' => 'Bize Ulaşın',
'order-and-returns' => 'Sipariş ve İade',
'payment-policy' => 'Ödeme Politikası',
'shipping-policy' => 'Nakliye Politikası',
'privacy-and-cookies-policy' => 'Gizlilik ve Çerez Politikası'
]
],
'category' => [
@ -262,7 +262,7 @@ return [
'short-description' => 'Kısa Açıklamalar',
'recently-viewed' => 'En Son Gezdiğiniz Ürünler',
'be-first-review' => 'Bu ürüne ilk siz inceleme girin!',
'tax-inclusive' => 'Inclusive of all taxes',
'tax-inclusive' => 'Tüm vergiler dahildir',
],
'shop' => [