diff --git a/.env.example b/.env.example index 5f172ce5d..5bae4cc41 100644 --- a/.env.example +++ b/.env.example @@ -5,6 +5,7 @@ APP_DEBUG=true APP_URL=http://localhost APP_TIMEZONE=Asia/Kolkata APP_LOCALE=en +APP_CURRENCY=USD VITE_HOST= VITE_PORT= diff --git a/CHANGELOG.md b/CHANGELOG.md index d407a7806..711f32964 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,26 @@ -## **v2.0.2 (13th of September 2024)** - *Release* +## **v2.0.2 (24th of September 2024)** - *Release* + +* #1633[enhancement] Use variable instead of calling every time of use db table prefix. + +* #1621[enhancement] Person view page refactor. + +* #1632[fixed] Update mail view render event. + +* #1631[fixed] Dark Mode UI. + +* #1629[fixed] Activities participants dark mode ui fixed. + +* #1628[fixed] Refactor the quotes edit and create page. + +* #1627[fixed] Leads actions ui. + +* #1626[fixed] Mail View Page Refactor + +* #1625[fixed] Sidebar rounded menu fix in rtl view. + +* #1619[fixed] Persons view page avatar and organization edit button. + +* #1617[fixed] When Printing to pdf, currency Symbol gets printed with ? instead of the Symbol. * #1603[fixed] Bug: Page resets when entering the first character in "URL And Parameters" while creating a Webhook on mobile. diff --git a/README.md b/README.md index 8a84e5ef9..9a4642b31 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,7 @@ 2. [Documentation](#documentation) 3. [Requirements](#requirements) 4. [Installation & Configuration](#installation-and-configuration) +4. [Docker Installation](https://devdocs.krayincrm.com/2.0/introduction/docker.html) 5. [License](#license) 6. [Security Vulnerabilities](#security-vulnerabilities) @@ -123,8 +124,8 @@ password:admin123 ### License -Krayin CRM is a truly opensource CRM framework which will always be free under the [MIT License](https://github.com/krayin/laravel-crm/blob/master/LICENSE). +Krayin CRM is a truly opensource CRM framework which will always be free under the [OSL-3.0 License](https://github.com/krayin/laravel-crm/blob/master/LICENSE.txt). ### Security Vulnerabilities -Please don't disclose security vulnerabilities publicly. If you find any security vulnerability in Krayin CRM then please email us: mailto:sales@krayincrm.com. +Please don't disclose security vulnerabilities publicly. If you find any security vulnerability in Krayin CRM then please email us: sales@krayincrm.com. diff --git a/config/app.php b/config/app.php index 844348776..8e1b03bb3 100644 --- a/config/app.php +++ b/config/app.php @@ -113,6 +113,7 @@ 'es' => 'Español', 'fa' => 'Persian', 'tr' => 'Türkçe', + 'vi' => 'Vietnamese', ], /* diff --git a/packages/Webkul/Admin/src/Config/menu.php b/packages/Webkul/Admin/src/Config/menu.php index ffa71b98f..4d6519f3f 100644 --- a/packages/Webkul/Admin/src/Config/menu.php +++ b/packages/Webkul/Admin/src/Config/menu.php @@ -235,8 +235,8 @@ 'icon-class' => 'icon-settings-mail', ], [ 'key' => 'settings.automation.webhooks', - 'name' => 'Webhooks', - 'info' => 'Add Edit Delete Webhooks from CRM', + 'name' => 'admin::app.layouts.webhooks', + 'info' => 'admin::app.layouts.webhooks-info', 'route' => 'admin.settings.webhooks.index', 'sort' => 2, 'icon-class' => 'icon-settings-webhooks', diff --git a/packages/Webkul/Admin/src/DataGrids/Contact/PersonDataGrid.php b/packages/Webkul/Admin/src/DataGrids/Contact/PersonDataGrid.php index e72eadd7f..3ddf66c16 100644 --- a/packages/Webkul/Admin/src/DataGrids/Contact/PersonDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/Contact/PersonDataGrid.php @@ -64,24 +64,6 @@ public function prepareColumns(): void 'sortable' => true, 'filterable' => true, 'searchable' => true, - 'closure' => function ($row) { - [$bgColorClass, $textColorClass] = $this->generateRandomColorClasses(); - - $nameParts = explode(' ', $row->person_name); - - $sortName = ''; - - if (count($nameParts) >= 2) { - $sortName = ($nameParts[0][0].$nameParts[1][0]); - } elseif (count($nameParts) === 1) { - $sortName = substr($nameParts[0], 0, 2); - } - - return "
-
$sortName
-

$row->person_name

-
"; - }, ]); $this->addColumn([ @@ -91,9 +73,7 @@ public function prepareColumns(): void 'sortable' => false, 'filterable' => true, 'searchable' => true, - 'closure' => function ($row) { - return collect(json_decode($row->emails, true) ?? [])->pluck('value')->join(', '); - }, + 'closure' => fn ($row) => collect(json_decode($row->emails, true) ?? [])->pluck('value')->join(', '), ]); $this->addColumn([ @@ -177,18 +157,4 @@ public function prepareMassActions(): void ]); } } - - /** - * Generate random color classes. - */ - public function generateRandomColorClasses(): array - { - return collect([ - ['bg-orange-100', 'text-orange-800'], - ['bg-red-100', 'text-red-800'], - ['bg-green-100', 'text-green-800'], - ['bg-blue-100', 'text-blue-800'], - ['bg-purple-100', 'text-purple-800'], - ])->random(); - } } diff --git a/packages/Webkul/Admin/src/DataGrids/Lead/LeadDataGrid.php b/packages/Webkul/Admin/src/DataGrids/Lead/LeadDataGrid.php index 420f88b18..80fcf63c1 100644 --- a/packages/Webkul/Admin/src/DataGrids/Lead/LeadDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/Lead/LeadDataGrid.php @@ -46,6 +46,8 @@ public function __construct( */ public function prepareQueryBuilder(): Builder { + $tablePrefix = DB::getTablePrefix(); + $queryBuilder = DB::table('leads') ->addSelect( 'leads.id', @@ -65,7 +67,7 @@ public function prepareQueryBuilder(): Builder 'tags.name as tag_name', 'lead_pipelines.rotten_days as pipeline_rotten_days', 'lead_pipeline_stages.code as stage_code', - DB::raw('CASE WHEN DATEDIFF(NOW(),'.DB::getTablePrefix().'leads.created_at) >='.DB::getTablePrefix().'lead_pipelines.rotten_days THEN 1 ELSE 0 END as rotten_lead'), + DB::raw('CASE WHEN DATEDIFF(NOW(),'.$tablePrefix.'leads.created_at) >='.$tablePrefix.'lead_pipelines.rotten_days THEN 1 ELSE 0 END as rotten_lead'), ) ->leftJoin('users', 'leads.user_id', '=', 'users.id') ->leftJoin('persons', 'leads.person_id', '=', 'persons.id') @@ -83,7 +85,7 @@ public function prepareQueryBuilder(): Builder } if (! is_null(request()->input('rotten_lead.in'))) { - $queryBuilder->havingRaw(DB::getTablePrefix().'rotten_lead = '.request()->input('rotten_lead.in')); + $queryBuilder->havingRaw($tablePrefix.'rotten_lead = '.request()->input('rotten_lead.in')); } $this->addFilter('id', 'leads.id'); @@ -97,7 +99,7 @@ public function prepareQueryBuilder(): Builder $this->addFilter('tag_name', 'tags.name'); $this->addFilter('expected_close_date', 'leads.expected_close_date'); $this->addFilter('created_at', 'leads.created_at'); - $this->addFilter('rotten_lead', DB::raw('DATEDIFF(NOW(), '.DB::getTablePrefix().'leads.created_at) >= '.DB::getTablePrefix().'lead_pipelines.rotten_days')); + $this->addFilter('rotten_lead', DB::raw('DATEDIFF(NOW(), '.$tablePrefix.'leads.created_at) >= '.$tablePrefix.'lead_pipelines.rotten_days')); return $queryBuilder; } diff --git a/packages/Webkul/Admin/src/DataGrids/Product/ProductDataGrid.php b/packages/Webkul/Admin/src/DataGrids/Product/ProductDataGrid.php index d758c9e49..a98e846b9 100644 --- a/packages/Webkul/Admin/src/DataGrids/Product/ProductDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/Product/ProductDataGrid.php @@ -13,6 +13,8 @@ class ProductDataGrid extends DataGrid */ public function prepareQueryBuilder(): Builder { + $tablePrefix = DB::getTablePrefix(); + $queryBuilder = DB::table('products') ->leftJoin('product_inventories', 'products.id', '=', 'product_inventories.product_id') ->select( @@ -21,9 +23,9 @@ public function prepareQueryBuilder(): Builder 'products.name', 'products.price', ) - ->addSelect(DB::raw('SUM('.DB::getTablePrefix().'product_inventories.in_stock) as total_in_stock')) - ->addSelect(DB::raw('SUM('.DB::getTablePrefix().'product_inventories.allocated) as total_allocated')) - ->addSelect(DB::raw('SUM('.DB::getTablePrefix().'product_inventories.in_stock - '.DB::getTablePrefix().'product_inventories.allocated) as total_on_hand')) + ->addSelect(DB::raw('SUM('.$tablePrefix.'product_inventories.in_stock) as total_in_stock')) + ->addSelect(DB::raw('SUM('.$tablePrefix.'product_inventories.allocated) as total_allocated')) + ->addSelect(DB::raw('SUM('.$tablePrefix.'product_inventories.in_stock - '.$tablePrefix.'product_inventories.allocated) as total_on_hand')) ->groupBy('products.id'); if (request()->route('id')) { @@ -31,9 +33,9 @@ public function prepareQueryBuilder(): Builder } $this->addFilter('id', 'products.id'); - $this->addFilter('total_in_stock', DB::raw('SUM('.DB::getTablePrefix().'product_inventories.in_stock')); - $this->addFilter('total_allocated', DB::raw('SUM('.DB::getTablePrefix().'product_inventories.allocated')); - $this->addFilter('total_on_hand', DB::raw('SUM('.DB::getTablePrefix().'product_inventories.in_stock - '.DB::getTablePrefix().'product_inventories.allocated')); + $this->addFilter('total_in_stock', DB::raw('SUM('.$tablePrefix.'product_inventories.in_stock')); + $this->addFilter('total_allocated', DB::raw('SUM('.$tablePrefix.'product_inventories.allocated')); + $this->addFilter('total_on_hand', DB::raw('SUM('.$tablePrefix.'product_inventories.in_stock - '.$tablePrefix.'product_inventories.allocated')); return $queryBuilder; } diff --git a/packages/Webkul/Admin/src/DataGrids/Quote/QuoteDataGrid.php b/packages/Webkul/Admin/src/DataGrids/Quote/QuoteDataGrid.php index f363fd647..e1c7f566d 100644 --- a/packages/Webkul/Admin/src/DataGrids/Quote/QuoteDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/Quote/QuoteDataGrid.php @@ -13,6 +13,8 @@ class QuoteDataGrid extends DataGrid */ public function prepareQueryBuilder(): Builder { + $tablePrefix = DB::getTablePrefix(); + $queryBuilder = DB::table('quotes') ->addSelect( 'quotes.id', @@ -45,9 +47,9 @@ public function prepareQueryBuilder(): Builder $this->addFilter('created_at', 'quotes.created_at'); if (request()->input('expired_quotes.in') == 1) { - $this->addFilter('expired_quotes', DB::raw('DATEDIFF(NOW(), '.DB::getTablePrefix().'quotes.expired_at) >= '.DB::getTablePrefix().'NOW()')); + $this->addFilter('expired_quotes', DB::raw('DATEDIFF(NOW(), '.$tablePrefix.'quotes.expired_at) >= '.$tablePrefix.'NOW()')); } else { - $this->addFilter('expired_quotes', DB::raw('DATEDIFF(NOW(), '.DB::getTablePrefix().'quotes.expired_at) < '.DB::getTablePrefix().'NOW()')); + $this->addFilter('expired_quotes', DB::raw('DATEDIFF(NOW(), '.$tablePrefix.'quotes.expired_at) < '.$tablePrefix.'NOW()')); } return $queryBuilder; diff --git a/packages/Webkul/Admin/src/DataGrids/Settings/AttributeDataGrid.php b/packages/Webkul/Admin/src/DataGrids/Settings/AttributeDataGrid.php index a80fad5ee..6af827163 100644 --- a/packages/Webkul/Admin/src/DataGrids/Settings/AttributeDataGrid.php +++ b/packages/Webkul/Admin/src/DataGrids/Settings/AttributeDataGrid.php @@ -4,6 +4,7 @@ use Illuminate\Database\Query\Builder; use Illuminate\Support\Facades\DB; +use Webkul\Attribute\Repositories\AttributeRepository; use Webkul\DataGrid\DataGrid; class AttributeDataGrid extends DataGrid @@ -66,17 +67,24 @@ public function prepareColumns(): void 'index' => 'entity_type', 'label' => trans('admin::app.settings.attributes.index.datagrid.entity-type'), 'type' => 'string', + 'sortable' => true, 'searchable' => false, 'filterable' => true, 'closure' => fn ($row) => ucfirst($row->entity_type), ]); $this->addColumn([ - 'index' => 'type', - 'label' => trans('admin::app.settings.attributes.index.datagrid.type'), - 'type' => 'string', - 'sortable' => true, - 'filterable' => true, + 'index' => 'type', + 'label' => trans('admin::app.settings.attributes.index.datagrid.type'), + 'type' => 'string', + 'sortable' => true, + 'filterable' => true, + 'filterable_type' => 'dropdown', + 'filterable_options' => app(AttributeRepository::class) + ->select('type as label', 'type as value') + ->distinct() + ->get() + ->toArray(), ]); $this->addColumn([ diff --git a/packages/Webkul/Admin/src/Exceptions/Handler.php b/packages/Webkul/Admin/src/Exceptions/Handler.php index a664ca628..be4dc593a 100755 --- a/packages/Webkul/Admin/src/Exceptions/Handler.php +++ b/packages/Webkul/Admin/src/Exceptions/Handler.php @@ -52,16 +52,6 @@ public function render($request, Throwable $exception) return parent::render($request, $exception); } - /** - * Report the exception. - * - * @return void - */ - public function report(Throwable $exception) - { - // - } - /** * Convert an authentication exception into a response. * @@ -84,18 +74,12 @@ protected function unauthenticated($request, AuthenticationException $exception) */ private function renderCustomResponse(Throwable $exception) { - $path = request()->routeIs('admin.*') ? 'admin' : 'front'; - - if ($path == 'front') { - return redirect()->route('admin.session.create'); - } - if ($exception instanceof HttpException) { $statusCode = in_array($exception->getStatusCode(), [401, 403, 404, 503]) ? $exception->getStatusCode() : 500; - return $this->response($path, $statusCode); + return $this->response($statusCode); } if ($exception instanceof ValidationException) { @@ -103,9 +87,11 @@ private function renderCustomResponse(Throwable $exception) } if ($exception instanceof ModelNotFoundException) { - return $this->response($path, 404); + return $this->response(404); } elseif ($exception instanceof PDOException || $exception instanceof \ParseError) { - return $this->response($path, 500); + return $this->response(500); + } else { + return $this->response(500); } } @@ -113,19 +99,19 @@ private function renderCustomResponse(Throwable $exception) * Return custom response. * * @param string $path - * @param string $statusCode + * @param string $errorCode * @return mixed */ - private function response($path, $statusCode) + private function response($errorCode) { if (request()->expectsJson()) { return response()->json([ - 'message' => isset($this->jsonErrorMessages[$statusCode]) - ? $this->jsonErrorMessages[$statusCode] + 'message' => isset($this->jsonErrorMessages[$errorCode]) + ? $this->jsonErrorMessages[$errorCode] : trans('admin::app.common.something-went-wrong'), - ], $statusCode); + ], $errorCode); } - return response()->view("{$path}::errors.{$statusCode}", [], $statusCode); + return response()->view('admin::errors.index', compact('errorCode')); } } diff --git a/packages/Webkul/Admin/src/Helpers/Reporting/Organization.php b/packages/Webkul/Admin/src/Helpers/Reporting/Organization.php index 854fefa05..4ede2ecaa 100644 --- a/packages/Webkul/Admin/src/Helpers/Reporting/Organization.php +++ b/packages/Webkul/Admin/src/Helpers/Reporting/Organization.php @@ -51,14 +51,16 @@ public function getTotalOrganizations($startDate, $endDate): int */ public function getTopOrganizationsByRevenue($limit = null): Collection { + $tablePrefix = DB::getTablePrefix(); + $items = $this->organizationRepository ->resetModel() ->leftJoin('persons', 'organizations.id', '=', 'persons.organization_id') ->leftJoin('leads', 'persons.id', '=', 'leads.person_id') ->select('*', 'persons.id as id') - ->addSelect(DB::raw('SUM('.DB::getTablePrefix().'leads.lead_value) as revenue')) + ->addSelect(DB::raw('SUM('.$tablePrefix.'leads.lead_value) as revenue')) ->whereBetween('leads.closed_at', [$this->startDate, $this->endDate]) - ->having(DB::raw('SUM('.DB::getTablePrefix().'leads.lead_value)'), '>', 0) + ->having(DB::raw('SUM('.$tablePrefix.'leads.lead_value)'), '>', 0) ->groupBy('organization_id') ->orderBy('revenue', 'DESC') ->limit($limit) diff --git a/packages/Webkul/Admin/src/Helpers/Reporting/Person.php b/packages/Webkul/Admin/src/Helpers/Reporting/Person.php index adb66c1a2..91b891de2 100644 --- a/packages/Webkul/Admin/src/Helpers/Reporting/Person.php +++ b/packages/Webkul/Admin/src/Helpers/Reporting/Person.php @@ -51,13 +51,15 @@ public function getTotalPersons($startDate, $endDate): int */ public function getTopCustomersByRevenue($limit = null): Collection { + $tablePrefix = DB::getTablePrefix(); + $items = $this->personRepository ->resetModel() ->leftJoin('leads', 'persons.id', '=', 'leads.person_id') ->select('*', 'persons.id as id') - ->addSelect(DB::raw('SUM('.DB::getTablePrefix().'leads.lead_value) as revenue')) + ->addSelect(DB::raw('SUM('.$tablePrefix.'leads.lead_value) as revenue')) ->whereBetween('leads.closed_at', [$this->startDate, $this->endDate]) - ->having(DB::raw('SUM('.DB::getTablePrefix().'leads.lead_value)'), '>', 0) + ->having(DB::raw('SUM('.$tablePrefix.'leads.lead_value)'), '>', 0) ->groupBy('person_id') ->orderBy('revenue', 'DESC') ->limit($limit) diff --git a/packages/Webkul/Admin/src/Helpers/Reporting/Product.php b/packages/Webkul/Admin/src/Helpers/Reporting/Product.php index 28980d262..f695b46d9 100644 --- a/packages/Webkul/Admin/src/Helpers/Reporting/Product.php +++ b/packages/Webkul/Admin/src/Helpers/Reporting/Product.php @@ -26,15 +26,17 @@ public function __construct( */ public function getTopSellingProductsByRevenue($limit = null): Collection { + $tablePrefix = DB::getTablePrefix(); + $items = $this->productRepository ->resetModel() ->with('product') ->leftJoin('leads', 'lead_products.lead_id', '=', 'leads.id') ->leftJoin('products', 'lead_products.product_id', '=', 'products.id') ->select('*') - ->addSelect(DB::raw('SUM('.DB::getTablePrefix().'lead_products.amount) as revenue')) + ->addSelect(DB::raw('SUM('.$tablePrefix.'lead_products.amount) as revenue')) ->whereBetween('leads.closed_at', [$this->startDate, $this->endDate]) - ->having(DB::raw('SUM('.DB::getTablePrefix().'lead_products.amount)'), '>', 0) + ->having(DB::raw('SUM('.$tablePrefix.'lead_products.amount)'), '>', 0) ->groupBy('product_id') ->orderBy('revenue', 'DESC') ->limit($limit) @@ -61,15 +63,17 @@ public function getTopSellingProductsByRevenue($limit = null): Collection */ public function getTopSellingProductsByQuantity($limit = null): Collection { + $tablePrefix = DB::getTablePrefix(); + $items = $this->productRepository ->resetModel() ->with('product') ->leftJoin('leads', 'lead_products.lead_id', '=', 'leads.id') ->leftJoin('products', 'lead_products.product_id', '=', 'products.id') ->select('*') - ->addSelect(DB::raw('SUM('.DB::getTablePrefix().'lead_products.quantity) as total_qty_ordered')) + ->addSelect(DB::raw('SUM('.$tablePrefix.'lead_products.quantity) as total_qty_ordered')) ->whereBetween('leads.closed_at', [$this->startDate, $this->endDate]) - ->having(DB::raw('SUM('.DB::getTablePrefix().'lead_products.quantity)'), '>', 0) + ->having(DB::raw('SUM('.$tablePrefix.'lead_products.quantity)'), '>', 0) ->groupBy('product_id') ->orderBy('total_qty_ordered', 'DESC') ->limit($limit) diff --git a/packages/Webkul/Admin/src/Http/Controllers/Activity/ActivityController.php b/packages/Webkul/Admin/src/Http/Controllers/Activity/ActivityController.php index 38b148603..bdd361158 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Activity/ActivityController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Activity/ActivityController.php @@ -185,9 +185,13 @@ public function massUpdate(MassUpdateRequest $massUpdateRequest): JsonResponse */ public function download(int $id): StreamedResponse { - $file = $this->fileRepository->findOrFail($id); + try { + $file = $this->fileRepository->findOrFail($id); - return Storage::download($file->path); + return Storage::download($file->path); + } catch (\Exception $exception) { + abort(404); + } } /* @@ -231,11 +235,11 @@ public function massDestroy(MassDestroyRequest $massDestroyRequest): JsonRespons } return response()->json([ - 'message' => trans('admin::app.response.destroy-success'), + 'message' => trans('admin::app.activities.mass-destroy-success'), ]); } catch (\Exception $exception) { return response()->json([ - 'message' => trans('admin::app.response.destroy-failed'), + 'message' => trans('admin::app.activities.mass-delete-failed'), ], 400); } } diff --git a/packages/Webkul/Admin/src/Http/Controllers/Lead/LeadController.php b/packages/Webkul/Admin/src/Http/Controllers/Lead/LeadController.php index 2d48bbe1a..ed1a08c54 100755 --- a/packages/Webkul/Admin/src/Http/Controllers/Lead/LeadController.php +++ b/packages/Webkul/Admin/src/Http/Controllers/Lead/LeadController.php @@ -104,9 +104,9 @@ public function get(): JsonResponse $stage->lead_value = (clone $query)->sum('lead_value'); - $data[$stage->id] = (new StageResource($stage))->jsonSerialize(); + $data[$stage->sort_order] = (new StageResource($stage))->jsonSerialize(); - $data[$stage->id]['leads'] = [ + $data[$stage->sort_order]['leads'] = [ 'data' => LeadResource::collection($paginator = $query->with([ 'tags', 'type', diff --git a/packages/Webkul/Admin/src/Http/Resources/StageResource.php b/packages/Webkul/Admin/src/Http/Resources/StageResource.php index 6029a6ff0..e206f1c6e 100644 --- a/packages/Webkul/Admin/src/Http/Resources/StageResource.php +++ b/packages/Webkul/Admin/src/Http/Resources/StageResource.php @@ -21,6 +21,7 @@ public function toArray($request) 'lead_value' => $this->lead_value, 'formatted_lead_value' => core()->formatBasePrice($this->lead_value), 'is_user_defined' => $this->is_user_defined, + 'sort_order' => $this->sort_order, 'created_at' => $this->created_at, 'updated_at' => $this->updated_at, ]; diff --git a/packages/Webkul/Admin/src/Resources/assets/css/app.css b/packages/Webkul/Admin/src/Resources/assets/css/app.css index 2acb86400..2a2186290 100644 --- a/packages/Webkul/Admin/src/Resources/assets/css/app.css +++ b/packages/Webkul/Admin/src/Resources/assets/css/app.css @@ -380,14 +380,22 @@ @apply max-w-max rounded-md bg-red-200 px-3 py-1.5 text-xs font-medium text-red-800; } - .sidebar-rounded::after { + [dir="ltr"] .sidebar-rounded::after { @apply content-[''] w-[30px] h-[30px] top-0 right-[-30px] absolute bg-no-repeat pointer-events-none bg-[url("../images/corner-clip.svg")] transition-all; } + [dir="rtl"] .sidebar-rounded::before { + @apply content-[''] w-[30px] h-[30px] top-0 left-[-30px] absolute bg-no-repeat pointer-events-none bg-[url("../images/corner-clip.svg")] transition-all rotate-90; + } + .dark .sidebar-rounded::after { @apply bg-[url("../images/dark-corner-clip.svg")] } + .dark .sidebar-rounded::before { + @apply bg-[url("../images/dark-corner-clip.svg")] + } + .tox.tox-silver-sink.tox-tinymce-aux { z-index: 99999; } diff --git a/packages/Webkul/Admin/src/Resources/assets/images/dark-error.svg b/packages/Webkul/Admin/src/Resources/assets/images/dark-error.svg new file mode 100644 index 000000000..d52980b61 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/images/dark-error.svg @@ -0,0 +1,101 @@ + + + +Created with Fabric.js 5.2.4 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/assets/images/error.svg b/packages/Webkul/Admin/src/Resources/assets/images/error.svg new file mode 100644 index 000000000..6fe0d2a32 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/assets/images/error.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index fd0ccb1cb..53fb6209e 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -386,6 +386,10 @@ ], 'attributes' => [ + 'edit' => [ + 'delete' => 'حذف', + ], + 'lookup' => [ 'click-to-add' => 'انقر للإضافة', 'search' => 'بحث', @@ -542,8 +546,9 @@ ], 'view' => [ - 'title' => ':name', - 'about-person' => 'عن الشخص', + 'title' => ':name', + 'about-person' => 'عن الشخص', + 'about-organization' => 'حول المؤسسة', 'activities' => [ 'index' => [ @@ -976,6 +981,7 @@ ], 'create' => [ + 'title' => 'إنشاء استمارة ويب', 'add-attribute-btn' => 'زر إضافة سمة', 'attribute-label-color' => 'لون تسمية السمة', 'attributes' => 'السمات', @@ -996,10 +1002,15 @@ 'save-btn' => 'حفظ نموذج الويب', 'submit-button-label' => 'تسمية زر الإرسال', 'submit-success-action' => 'إجراء نجاح الإرسال', - 'title' => 'إنشاء نموذج ويب', + 'redirect-to-url' => 'إعادة التوجيه إلى الرابط', + 'choose-value' => 'اختر قيمة', + 'select-file' => 'اختر ملف', + 'select-image' => 'اختر صورة', + 'enter-value' => 'أدخل القيمة', ], 'edit' => [ + 'title' => 'تعديل استمارة ويب', 'add-attribute-btn' => 'زر إضافة سمة', 'attribute-label-color' => 'لون تسمية السمة', 'attributes' => 'السمات', @@ -1026,7 +1037,10 @@ 'save-btn' => 'حفظ نموذج الويب', 'submit-button-label' => 'تسمية زر الإرسال', 'submit-success-action' => 'إجراء نجاح الإرسال', - 'title' => 'تعديل نموذج الويب', + 'choose-value' => 'Choose Value', + 'select-file' => 'Select File', + 'select-image' => 'Select Image', + 'enter-value' => 'Enter Value', ], ], @@ -1256,6 +1270,8 @@ 'body' => 'الجسم', 'default' => 'افتراضي', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'المفتاح والقيمة', + 'add-new-payload' => 'إضافة حمولة جديدة', 'raw' => 'خام', 'general' => 'عام', 'name' => 'الاسم', @@ -1284,6 +1300,8 @@ 'body' => 'الجسم', 'default' => 'افتراضي', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'المفتاح والقيمة', + 'add-new-payload' => 'إضافة حمولة جديدة', 'raw' => 'خام', 'general' => 'عام', 'name' => 'الاسم', @@ -1628,13 +1646,15 @@ 'updated' => 'تم تحديث :attribute', 'created' => 'تم الإنشاء', - 'duration-overlapping' => 'المشاركون لديهم اجتماع آخر في هذا الوقت. هل تريد المتابعة؟', + 'duration-overlapping' => 'لدى المشاركين اجتماع آخر في هذا الوقت. هل تريد المتابعة؟', 'create-success' => 'تم إنشاء النشاط بنجاح.', 'update-success' => 'تم تحديث النشاط بنجاح.', - 'overlapping-error' => 'المشاركون لديهم اجتماع آخر في هذا الوقت.', - 'mass-update-success' => 'تم تحديث الأنشطة بنجاح.', + 'overlapping-error' => 'لدى المشاركين اجتماع آخر في هذا الوقت.', 'destroy-success' => 'تم حذف النشاط بنجاح.', 'delete-failed' => 'لا يمكن حذف النشاط.', + 'mass-update-success' => 'تم تحديث الأنشطة بنجاح.', + 'mass-destroy-success' => 'تم حذف الأنشطة بنجاح.', + 'mass-delete-failed' => 'لا يمكن حذف الأنشطة.', ], 'mail' => [ @@ -1932,7 +1952,7 @@ 'info' => 'قم بتحديث إعداداتك العامة هنا.', 'locale-settings' => [ 'title' => 'إعدادات اللغة', - 'title-info' => 'تحدد اللغة المستخدمة في واجهة المستخدم، مثل الإنجليزية (en) أو الفرنسية (fr) أو اليابانية (ja).', + 'title-info' => 'يحدد اللغة المستخدمة في واجهة المستخدم، مثل العربية (ar)، الإنجليزية (en)، الإسبانية (es)، الفارسية (fa) والتركية (tr).', ], ], ], @@ -1997,7 +2017,7 @@ ], 'layouts' => [ - 'app-version' => 'الإصدار : :version', + 'app-version' => 'الإصدار: :version', 'dashboard' => 'لوحة القيادة', 'leads' => 'العملاء المحتملين', 'quotes' => 'العروض', @@ -2048,6 +2068,8 @@ 'email-templates-info' => 'إضافة أو تعديل أو حذف قوالب البريد الإلكتروني من نظام CRM', 'workflows' => 'سير العمل', 'workflows-info' => 'إضافة أو تعديل أو حذف سير العمل من نظام CRM', + 'webhooks' => 'الويب هوك', + 'webhooks-info' => 'إضافة، تحرير أو حذف الويب هوك من CRM', 'other-settings' => 'إعدادات أخرى', 'other-settings-info' => 'إدارة جميع إعداداتك الإضافية في نظام CRM', 'tags' => 'العلامات', @@ -2114,6 +2136,33 @@ ], 'errors' => [ - '401' => 'أنت غير مخول للوصول إلى هذه الصفحة', + 'dashboard' => 'لوحة التحكم', + 'go-back' => 'العودة', + 'support' => 'إذا استمرت المشكلة، تواصل معنا على :email للحصول على المساعدة.', + + '404' => [ + 'description' => 'عذرًا! الصفحة التي تبحث عنها في إجازة. يبدو أننا لم نجد ما كنت تبحث عنه.', + 'title' => '404 الصفحة غير موجودة', + ], + + '401' => [ + 'description' => 'عذرًا! يبدو أنك غير مصرح لك بالوصول إلى هذه الصفحة. يبدو أنك تفتقد الأوراق اللازمة.', + 'title' => '401 غير مصرح', + ], + + '403' => [ + 'description' => 'عذرًا! هذه الصفحة محظورة. يبدو أنك لا تملك الأذونات اللازمة لعرض هذا المحتوى.', + 'title' => '403 ممنوع الدخول', + ], + + '500' => [ + 'description' => 'عذرًا! حدث خطأ ما. يبدو أننا نواجه مشكلة في تحميل الصفحة التي تبحث عنها.', + 'title' => '500 خطأ داخلي في الخادم', + ], + + '503' => [ + 'description' => 'عذرًا! يبدو أننا متوقفون مؤقتًا للصيانة. يرجى العودة لاحقًا.', + 'title' => '503 الخدمة غير متوفرة', + ], ], ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index 7886f14ba..1aad6eca8 100644 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -546,8 +546,9 @@ ], 'view' => [ - 'title' => ':name', - 'about-person' => 'About Person', + 'title' => ':name', + 'about-person' => 'About Person', + 'about-organization' => 'About Organization', 'activities' => [ 'index' => [ @@ -980,6 +981,7 @@ ], 'create' => [ + 'title' => 'Create Webform', 'add-attribute-btn' => 'Add Attribute Button', 'attribute-label-color' => 'Attribute Label Color', 'attributes' => 'Attributes', @@ -1001,7 +1003,6 @@ 'submit-button-label' => 'Submit Button Label', 'submit-success-action' => 'Submit Success Action', 'redirect-to-url' => 'Redirect To Url', - 'title' => 'Title', 'choose-value' => 'Choose Value', 'select-file' => 'Select File', 'select-image' => 'Select Image', @@ -1009,6 +1010,7 @@ ], 'edit' => [ + 'title' => 'Edit Webform', 'add-attribute-btn' => 'Add Attribute Button', 'attribute-label-color' => 'Attribute Label Color', 'attributes' => 'Attributes', @@ -1035,7 +1037,6 @@ 'save-btn' => 'Save Webform', 'submit-button-label' => 'Submit Button Label', 'submit-success-action' => 'Submit Success Action', - 'title' => 'Title', 'choose-value' => 'Choose Value', 'select-file' => 'Select File', 'select-image' => 'Select Image', @@ -1269,6 +1270,8 @@ 'body' => 'Body', 'default' => 'Default', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Key and Value', + 'add-new-payload' => 'Add new payload', 'raw' => 'Raw', 'general' => 'General', 'name' => 'Name', @@ -1297,6 +1300,8 @@ 'body' => 'Body', 'default' => 'Default', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Key and Value', + 'add-new-payload' => 'Add new payload', 'raw' => 'Raw', 'general' => 'General', 'name' => 'Name', @@ -1645,9 +1650,11 @@ 'create-success' => 'Activity created successfully.', 'update-success' => 'Activity updated successfully.', 'overlapping-error' => 'Participants have another meeting at this time.', - 'mass-update-success' => 'Activities updated successfully.', 'destroy-success' => 'Activity deleted successfully.', 'delete-failed' => 'Activity can not be deleted.', + 'mass-update-success' => 'Activities updated successfully.', + 'mass-destroy-success' => 'Activities deleted successfully.', + 'mass-delete-failed' => 'Activities can not be deleted.', ], 'mail' => [ @@ -1945,7 +1952,7 @@ 'info' => 'Update your general settings here.', 'locale-settings' => [ 'title' => 'Locale Settings', - 'title-info' => 'Defines the language used in the user interface, such as English (en), French (fr), or Japanese (ja).', + 'title-info' => 'Defines the language used in the user interface, such as Arabic (ar), English (en), Spanish (es), Persian(fa) and Turkish (tr).', ], ], ], @@ -2010,7 +2017,7 @@ ], 'layouts' => [ - 'app-version' => 'Version : :version', + 'app-version' => 'Version: :version', 'dashboard' => 'Dashboard', 'leads' => 'Leads', 'quotes' => 'Quotes', @@ -2061,6 +2068,8 @@ 'email-templates-info' => 'Add, edit or delete email templates from CRM', 'workflows' => 'Workflows', 'workflows-info' => 'Add, edit or delete workflows from CRM', + 'webhooks' => 'Webhooks', + 'webhooks-info' => 'Add, edit or delete webhooks from CRM', 'other-settings' => 'Other Settings', 'other-settings-info' => 'Manage all your extra settings in the CRM', 'tags' => 'Tags', @@ -2102,6 +2111,7 @@ 'common' => [ 'dear' => 'Dear :name', 'cheers' => 'Cheers,
Team :app_name', + 'user' => [ 'dear' => 'Dear :username', 'create-subject' => 'You are added as a member.', @@ -2126,6 +2136,33 @@ ], 'errors' => [ - '401' => 'You are not authorized to access this page', + 'dashboard' => 'Dashboard', + 'go-back' => 'Go Back', + 'support' => 'If the problem persists, reach out to us at :email for assistance.', + + '404' => [ + 'description' => 'Oops! The page you\'re looking for is on vacation. It seems we couldn\'t find what you were searching for.', + 'title' => '404 Page Not Found', + ], + + '401' => [ + 'description' => 'Oops! Looks like you\'re not allowed to access this page. It seems you\'re missing the necessary credentials.', + 'title' => '401 Unauthorized', + ], + + '403' => [ + 'description' => 'Oops! This page is off-limits. It appears you don\'t have the required permissions to view this content.', + 'title' => '403 Forbidden', + ], + + '500' => [ + 'description' => 'Oops! Something went wrong. It seems we\'re having trouble loading the page you\'re looking for.', + 'title' => '500 Internal Server Error', + ], + + '503' => [ + 'description' => 'Oops! Looks like we\'re temporarily down for maintenance. Please check back in a bit.', + 'title' => '503 Service Unavailable', + ], ], ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/es/app.php b/packages/Webkul/Admin/src/Resources/lang/es/app.php index 99ad88064..452885ffd 100644 --- a/packages/Webkul/Admin/src/Resources/lang/es/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/es/app.php @@ -386,6 +386,10 @@ ], 'attributes' => [ + 'edit' => [ + 'delete' => 'Eliminar', + ], + 'lookup' => [ 'click-to-add' => 'Haz clic para agregar', 'search' => 'Buscar', @@ -542,8 +546,9 @@ ], 'view' => [ - 'title' => ':name', - 'about-person' => 'Sobre la Persona', + 'title' => ':name', + 'about-person' => 'Sobre la Persona', + 'about-organization' => 'Acerca de la organización', 'activities' => [ 'index' => [ @@ -976,6 +981,7 @@ ], 'create' => [ + 'title' => 'Crear formulario web', 'add-attribute-btn' => 'Agregar Botón de Atributo', 'attribute-label-color' => 'Color de Etiqueta del Atributo', 'attributes' => 'Atributos', @@ -996,10 +1002,15 @@ 'save-btn' => 'Guardar Webform', 'submit-button-label' => 'Etiqueta del Botón de Enviar', 'submit-success-action' => 'Acción en caso de éxito de envío', - 'title' => 'Crear Webform', + 'redirect-to-url' => 'Redirigir a la URL', + 'choose-value' => 'Elige un valor', + 'select-file' => 'Seleccionar archivo', + 'select-image' => 'Seleccionar imagen', + 'enter-value' => 'Introducir valor', ], 'edit' => [ + 'title' => 'Editar formulario web', 'add-attribute-btn' => 'Agregar Botón de Atributo', 'attribute-label-color' => 'Color de Etiqueta del Atributo', 'attributes' => 'Atributos', @@ -1022,11 +1033,14 @@ 'preview' => 'Vista Previa', 'person' => 'Persona', 'public-url' => 'URL Pública', - 'redirect-to-url' => 'Redirigir a URL', 'save-btn' => 'Guardar Webform', 'submit-button-label' => 'Etiqueta del Botón de Enviar', 'submit-success-action' => 'Acción en caso de éxito de envío', - 'title' => 'Editar Webform', + 'redirect-to-url' => 'Redirigir a la URL', + 'choose-value' => 'Elige un valor', + 'select-file' => 'Seleccionar archivo', + 'select-image' => 'Seleccionar imagen', + 'enter-value' => 'Introducir valor', ], ], @@ -1256,6 +1270,8 @@ 'body' => 'Cuerpo', 'default' => 'Predeterminado', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Clave y Valor', + 'add-new-payload' => 'Añadir nueva carga', 'raw' => 'Crudo', 'general' => 'General', 'name' => 'Nombre', @@ -1284,6 +1300,8 @@ 'body' => 'Cuerpo', 'default' => 'Predeterminado', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Clave y Valor', + 'add-new-payload' => 'Añadir nueva carga', 'raw' => 'Crudo', 'general' => 'General', 'name' => 'Nombre', @@ -1628,13 +1646,15 @@ 'updated' => 'Actualizado :attribute', 'created' => 'Creado', - 'duration-overlapping' => 'Los participantes tienen otra reunión a esta hora. ¿Desea continuar?', + 'duration-overlapping' => 'Los participantes tienen otra reunión en este momento. ¿Deseas continuar?', 'create-success' => 'Actividad creada con éxito.', 'update-success' => 'Actividad actualizada con éxito.', - 'overlapping-error' => 'Los participantes tienen otra reunión a esta hora.', - 'mass-update-success' => 'Actividades actualizadas con éxito.', + 'overlapping-error' => 'Los participantes tienen otra reunión en este momento.', 'destroy-success' => 'Actividad eliminada con éxito.', 'delete-failed' => 'No se puede eliminar la actividad.', + 'mass-update-success' => 'Actividades actualizadas con éxito.', + 'mass-destroy-success' => 'Actividades eliminadas con éxito.', + 'mass-delete-failed' => 'No se pueden eliminar las actividades.', ], 'mail' => [ @@ -1932,7 +1952,7 @@ 'info' => 'Actualiza tus ajustes generales aquí.', 'locale-settings' => [ 'title' => 'Configuración Regional', - 'title-info' => 'Define el idioma utilizado en la interfaz de usuario, como Inglés (en), Francés (fr) o Japonés (ja).', + 'title-info' => 'Define el idioma utilizado en la interfaz de usuario, como árabe (ar), inglés (en), español (es), persa (fa) y turco (tr).', ], ], ], @@ -1997,7 +2017,7 @@ ], 'layouts' => [ - 'app-version' => 'Versión : :version', + 'app-version' => 'Versión: :version', 'dashboard' => 'Tablero', 'leads' => 'Leads', 'quotes' => 'Cotizaciones', @@ -2048,6 +2068,8 @@ 'email-templates-info' => 'Agregar, editar o eliminar plantillas de correo del CRM', 'workflows' => 'Flujos de Trabajo', 'workflows-info' => 'Agregar, editar o eliminar flujos de trabajo del CRM', + 'webhooks' => 'Webhooks', + 'webhooks-info' => 'Agregar, editar o eliminar webhooks desde CRM', 'other-settings' => 'Otras Configuraciones', 'other-settings-info' => 'Administra todas tus configuraciones adicionales en el CRM', 'tags' => 'Etiquetas', @@ -2114,6 +2136,33 @@ ], 'errors' => [ - '401' => 'No estás autorizado para acceder a esta página', + 'dashboard' => 'Tablero', + 'go-back' => 'Volver', + 'support' => 'Si el problema persiste, contáctanos en :email para obtener ayuda.', + + '404' => [ + 'description' => '¡Ups! La página que estás buscando está de vacaciones. Parece que no pudimos encontrar lo que estabas buscando.', + 'title' => '404 Página No Encontrada', + ], + + '401' => [ + 'description' => '¡Ups! Parece que no tienes permiso para acceder a esta página. Parece que te faltan las credenciales necesarias.', + 'title' => '401 No Autorizado', + ], + + '403' => [ + 'description' => '¡Ups! Esta página está fuera de límites. Parece que no tienes los permisos necesarios para ver este contenido.', + 'title' => '403 Prohibido', + ], + + '500' => [ + 'description' => '¡Ups! Algo salió mal. Parece que tenemos problemas para cargar la página que estás buscando.', + 'title' => '500 Error Interno del Servidor', + ], + + '503' => [ + 'description' => '¡Ups! Parece que estamos temporalmente fuera de servicio por mantenimiento. Vuelve a intentarlo en un rato.', + 'title' => '503 Servicio No Disponible', + ], ], ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index be1367160..eb705d389 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -386,6 +386,10 @@ ], 'attributes' => [ + 'edit' => [ + 'delete' => 'حذف', + ], + 'lookup' => [ 'click-to-add' => 'برای اضافه کردن کلیک کنید', 'search' => 'جستجو', @@ -542,8 +546,9 @@ ], 'view' => [ - 'title' => ':name', - 'about-person' => 'درباره شخص', + 'title' => ':name', + 'about-person' => 'درباره شخص', + 'about-organization' => 'درباره سازمان', 'activities' => [ 'index' => [ @@ -976,6 +981,7 @@ ], 'create' => [ + 'title' => 'ایجاد فرم وب', 'add-attribute-btn' => 'افزودن دکمه ویژگی', 'attribute-label-color' => 'رنگ برچسب ویژگی', 'attributes' => 'ویژگی‌ها', @@ -996,10 +1002,15 @@ 'save-btn' => 'ذخیره فرم وب', 'submit-button-label' => 'برچسب دکمه ارسال', 'submit-success-action' => 'عملکرد موفقیت آمیز ارسال', - 'title' => 'ایجاد فرم وب', + 'redirect-to-url' => 'انتقال به آدرس', + 'choose-value' => 'انتخاب مقدار', + 'select-file' => 'انتخاب فایل', + 'select-image' => 'انتخاب تصویر', + 'enter-value' => 'مقدار را وارد کنید', ], 'edit' => [ + 'title' => 'ویرایش فرم وب', 'add-attribute-btn' => 'افزودن دکمه ویژگی', 'attribute-label-color' => 'رنگ برچسب ویژگی', 'attributes' => 'ویژگی‌ها', @@ -1022,11 +1033,14 @@ 'preview' => 'پیش‌نمایش', 'person' => 'شخص', 'public-url' => 'آدرس عمومی', - 'redirect-to-url' => 'انتقال به URL', 'save-btn' => 'ذخیره فرم وب', 'submit-button-label' => 'برچسب دکمه ارسال', 'submit-success-action' => 'عملکرد موفقیت آمیز ارسال', - 'title' => 'ویرایش فرم وب', + 'redirect-to-url' => 'انتقال به آدرس', + 'choose-value' => 'انتخاب مقدار', + 'select-file' => 'انتخاب فایل', + 'select-image' => 'انتخاب تصویر', + 'enter-value' => 'مقدار را وارد کنید', ], ], @@ -1256,6 +1270,8 @@ 'body' => 'بدن', 'default' => 'پیش‌فرض', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'کلید و مقدار', + 'add-new-payload' => 'اضافه کردن بار جدید', 'raw' => 'خام', 'general' => 'عمومی', 'name' => 'نام', @@ -1284,6 +1300,8 @@ 'body' => 'بدن', 'default' => 'پیش‌فرض', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'کلید و مقدار', + 'add-new-payload' => 'اضافه کردن بار جدید', 'raw' => 'خام', 'general' => 'عمومی', 'name' => 'نام', @@ -1626,15 +1644,17 @@ 'users' => 'کاربران', ], - 'updated' => 'به‌روزرسانی شده :attribute', - 'created' => 'ایجاد شده', + 'updated' => 'به‌روزرسانی شد :attribute', + 'created' => 'ایجاد شد', 'duration-overlapping' => 'شرکت‌کنندگان در این زمان جلسه دیگری دارند. آیا می‌خواهید ادامه دهید؟', 'create-success' => 'فعالیت با موفقیت ایجاد شد.', 'update-success' => 'فعالیت با موفقیت به‌روزرسانی شد.', 'overlapping-error' => 'شرکت‌کنندگان در این زمان جلسه دیگری دارند.', - 'mass-update-success' => 'فعالیت‌ها با موفقیت به‌روزرسانی شدند.', 'destroy-success' => 'فعالیت با موفقیت حذف شد.', - 'delete-failed' => 'فعالیت قابل حذف نیست.', + 'delete-failed' => 'امکان حذف فعالیت وجود ندارد.', + 'mass-update-success' => 'فعالیت‌ها با موفقیت به‌روزرسانی شدند.', + 'mass-destroy-success' => 'فعالیت‌ها با موفقیت حذف شدند.', + 'mass-delete-failed' => 'امکان حذف فعالیت‌ها وجود ندارد.', ], 'mail' => [ @@ -1932,7 +1952,7 @@ 'info' => 'تنظیمات عمومی خود را اینجا به‌روزرسانی کنید.', 'locale-settings' => [ 'title' => 'تنظیمات محلی', - 'title-info' => 'زبان استفاده شده در رابط کاربری را مشخص می‌کند، مانند انگلیسی (en)، فرانسوی (fr)، یا ژاپنی (ja).', + 'title-info' => 'زبان استفاده‌شده در رابط کاربری را تعریف می‌کند، مانند عربی (ar)، انگلیسی (en)، اسپانیایی (es)، فارسی (fa) و ترکی (tr).', ], ], ], @@ -1997,7 +2017,7 @@ ], 'layouts' => [ - 'app-version' => 'نسخه : :version', + 'app-version' => 'نسخه: :version', 'dashboard' => 'داشبورد', 'leads' => 'لیدها', 'quotes' => 'نقل قول‌ها', @@ -2048,6 +2068,8 @@ 'email-templates-info' => 'اضافه، ویرایش یا حذف قالب‌های ایمیل از CRM', 'workflows' => 'فرایندها', 'workflows-info' => 'اضافه، ویرایش یا حذف فرایندها از CRM', + 'webhooks' => 'وب‌هوک‌ها', + 'webhooks-info' => 'افزودن، ویرایش یا حذف وب‌هوک‌ها از CRM', 'other-settings' => 'تنظیمات دیگر', 'other-settings-info' => 'مدیریت همه تنظیمات اضافی در CRM', 'tags' => 'برچسب‌ها', @@ -2114,6 +2136,33 @@ ], 'errors' => [ - '401' => 'شما مجاز به دسترسی به این صفحه نیستید', + 'dashboard' => 'داشبورد', + 'go-back' => 'بازگشت', + 'support' => 'اگر مشکل ادامه داشت، برای کمک با ما از طریق :email تماس بگیرید.', + + '404' => [ + 'description' => 'اوه! به نظر می‌رسد صفحه‌ای که دنبال آن بودید، در دسترس نیست. نتوانستیم چیزی که دنبالش بودید را پیدا کنیم.', + 'title' => '404 صفحه پیدا نشد', + ], + + '401' => [ + 'description' => 'اوه! به نظر می‌رسد که شما مجاز به دسترسی به این صفحه نیستید. شما مجوزهای لازم را ندارید.', + 'title' => '401 مجاز نیست', + ], + + '403' => [ + 'description' => 'اوه! این صفحه ممنوع است. به نظر می‌رسد شما مجوزهای لازم برای مشاهده این محتوا را ندارید.', + 'title' => '403 ممنوع', + ], + + '500' => [ + 'description' => 'اوه! مشکلی پیش آمده است. به نظر می‌رسد مشکلی در بارگذاری صفحه مورد نظر شما وجود دارد.', + 'title' => '500 خطای سرور داخلی', + ], + + '503' => [ + 'description' => 'اوه! به نظر می‌رسد که به طور موقت برای نگهداری آفلاین هستیم. لطفاً بعداً دوباره بررسی کنید.', + 'title' => '503 سرویس در دسترس نیست', + ], ], ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/tr/app.php b/packages/Webkul/Admin/src/Resources/lang/tr/app.php index 51cfbeefb..f2d52e341 100644 --- a/packages/Webkul/Admin/src/Resources/lang/tr/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/tr/app.php @@ -386,6 +386,10 @@ ], 'attributes' => [ + 'edit' => [ + 'delete' => 'Sil', + ], + 'lookup' => [ 'click-to-add' => 'Eklemek için tıklayın', 'search' => 'Arama', @@ -542,8 +546,9 @@ ], 'view' => [ - 'title' => ':name', - 'about-person' => 'Kişi Hakkında', + 'title' => ':name', + 'about-person' => 'Kişi Hakkında', + 'about-organization' => 'Kuruluş Hakkında', 'activities' => [ 'index' => [ @@ -976,6 +981,7 @@ ], 'create' => [ + 'title' => 'Web Formu Oluştur', 'add-attribute-btn' => 'Öznitelik Düğmesi Ekle', 'attribute-label-color' => 'Öznitelik Etiketi Rengi', 'attributes' => 'Öznitelikler', @@ -996,10 +1002,15 @@ 'save-btn' => 'Web Formunu Kaydet', 'submit-button-label' => 'Gönderim Düğmesi Etiketi', 'submit-success-action' => 'Gönderim Başarı Eylemi', - 'title' => 'Web Formu Oluştur', + 'redirect-to-url' => 'URL\'ye Yönlendir', + 'choose-value' => 'Değer Seç', + 'select-file' => 'Dosya Seç', + 'select-image' => 'Görüntü Seç', + 'enter-value' => 'Değer Gir', ], 'edit' => [ + 'title' => 'Web Formunu Düzenle', 'add-attribute-btn' => 'Öznitelik Düğmesi Ekle', 'attribute-label-color' => 'Öznitelik Etiketi Rengi', 'attributes' => 'Öznitelikler', @@ -1022,11 +1033,14 @@ 'preview' => 'Önizleme', 'person' => 'Kişi', 'public-url' => 'Genel URL', - 'redirect-to-url' => 'URL\'ye Yönlendir', 'save-btn' => 'Web Formunu Kaydet', 'submit-button-label' => 'Gönderim Düğmesi Etiketi', 'submit-success-action' => 'Gönderim Başarı Eylemi', - 'title' => 'Web Formunu Düzenle', + 'redirect-to-url' => 'URL\'ye Yönlendir', + 'choose-value' => 'Değer Seç', + 'select-file' => 'Dosya Seç', + 'select-image' => 'Görüntü Seç', + 'enter-value' => 'Değer Gir', ], ], @@ -1256,6 +1270,8 @@ 'body' => 'Gövde', 'default' => 'Varsayılan', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Anahtar ve Değer', + 'add-new-payload' => 'Yeni yük ekle', 'raw' => 'Ham', 'general' => 'Genel', 'name' => 'Ad', @@ -1284,6 +1300,8 @@ 'body' => 'Gövde', 'default' => 'Varsayılan', 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Anahtar ve Değer', + 'add-new-payload' => 'Yeni yük ekle', 'raw' => 'Ham', 'general' => 'Genel', 'name' => 'Ad', @@ -1626,15 +1644,17 @@ 'users' => 'Kullanıcılar', ], - 'updated' => ':attribute güncellendi', + 'updated' => 'Güncellendi :attribute', 'created' => 'Oluşturuldu', - 'duration-overlapping' => 'Katılımcıların bu zamanda başka bir toplantısı var. Devam etmek istiyor musunuz?', + 'duration-overlapping' => 'Katılımcıların bu saatte başka bir toplantısı var. Devam etmek istiyor musunuz?', 'create-success' => 'Etkinlik başarıyla oluşturuldu.', 'update-success' => 'Etkinlik başarıyla güncellendi.', - 'overlapping-error' => 'Katılımcıların bu zamanda başka bir toplantısı var.', - 'mass-update-success' => 'Etkinlikler başarıyla güncellendi.', + 'overlapping-error' => 'Katılımcıların bu saatte başka bir toplantısı var.', 'destroy-success' => 'Etkinlik başarıyla silindi.', - 'delete-failed' => 'Etkinlik silinemedi.', + 'delete-failed' => 'Etkinlik silinemiyor.', + 'mass-update-success' => 'Etkinlikler başarıyla güncellendi.', + 'mass-destroy-success' => 'Etkinlikler başarıyla silindi.', + 'mass-delete-failed' => 'Etkinlikler silinemiyor.', ], 'mail' => [ @@ -1932,7 +1952,7 @@ 'info' => 'Genel ayarlarınızı buradan güncelleyebilirsiniz.', 'locale-settings' => [ 'title' => 'Yerel Ayarlar', - 'title-info' => 'Kullanıcı arayüzünde kullanılan dili tanımlar, örneğin İngilizce (en), Fransızca (fr) veya Japonca (ja).', + 'title-info' => 'Kullanıcı arayüzünde kullanılan dili tanımlar, örneğin Arapça (ar), İngilizce (en), İspanyolca (es), Farsça (fa) ve Türkçe (tr).', ], ], ], @@ -1997,7 +2017,7 @@ ], 'layouts' => [ - 'app-version' => 'Sürüm : :version', + 'app-version' => 'Sürüm: :version', 'dashboard' => 'Gösterge Paneli', 'leads' => 'Leadler', 'quotes' => 'Teklifler', @@ -2048,6 +2068,8 @@ 'email-templates-info' => 'CRM’den e-posta şablonları ekleyin, düzenleyin veya silin', 'workflows' => 'İş Akışları', 'workflows-info' => 'CRM’den iş akışlarını ekleyin, düzenleyin veya silin', + 'webhooks' => 'Webhooklar', + 'webhooks-info' => 'CRM’den webhookları ekleyin, düzenleyin veya silin', 'other-settings' => 'Diğer Ayarlar', 'other-settings-info' => 'CRM’de tüm ekstra ayarlarınızı yönetin', 'tags' => 'Etiketler', @@ -2114,6 +2136,33 @@ ], 'errors' => [ - '401' => 'Bu sayfaya erişme yetkiniz yok', + 'dashboard' => 'Kontrol Paneli', + 'go-back' => 'Geri Dön', + 'support' => 'Sorun devam ederse, yardım için bize :email adresinden ulaşın.', + + '404' => [ + 'description' => 'Oops! Aradığınız sayfa tatilde. Aradığınız şeyi bulamadık gibi görünüyor.', + 'title' => '404 Sayfa Bulunamadı', + ], + + '401' => [ + 'description' => 'Oops! Bu sayfaya erişim izniniz yok gibi görünüyor. Gerekli yetkilere sahip değilsiniz.', + 'title' => '401 Yetkisiz', + ], + + '403' => [ + 'description' => 'Oops! Bu sayfa erişime kapalı. Bu içeriği görüntülemek için gerekli izinlere sahip değilsiniz gibi görünüyor.', + 'title' => '403 Yasak', + ], + + '500' => [ + 'description' => 'Oops! Bir şeyler ters gitti. Aradığınız sayfa yüklenirken sorun yaşıyoruz gibi görünüyor.', + 'title' => '500 Sunucu Hatası', + ], + + '503' => [ + 'description' => 'Oops! Görünüşe göre geçici bir bakım nedeniyle kapalıyız. Lütfen kısa süre sonra tekrar kontrol edin.', + 'title' => '503 Hizmet Kullanılamıyor', + ], ], ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/vi/app.php b/packages/Webkul/Admin/src/Resources/lang/vi/app.php new file mode 100644 index 000000000..651bc5d68 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/lang/vi/app.php @@ -0,0 +1,2021 @@ + [ + 'leads' => 'Những Khách hàng tiềm năng', + 'lead' => 'Khách hàng tiềm năng', + 'quotes' => 'Báo giá', + 'mail' => 'Thư', + 'inbox' => 'Hộp thư đến', + 'draft' => 'Thư nháp', + 'outbox' => 'Hộp thư đi', + 'sent' => 'Đã gửi', + 'trash' => 'Thùng rác', + 'activities' => 'Hoạt động', + 'webhook' => 'Webhook', + 'contacts' => 'Danh bạ', + 'persons' => 'Cá nhân', + 'organizations' => 'Tổ chức', + 'products' => 'Sản phẩm', + 'settings' => 'Cài đặt', + 'groups' => 'Nhóm', + 'roles' => 'Vai trò', + 'users' => 'Người dùng', + 'user' => 'Người dùng', + 'automation' => 'Tự động hóa', + 'attributes' => 'Thuộc tính', + 'pipelines' => 'Quy trình', + 'sources' => 'Nguồn', + 'types' => 'Loại', + 'email-templates' => 'Mẫu email', + 'workflows' => 'Quy trình làm việc', + 'other-settings' => 'Cài đặt khác', + 'tags' => 'Thẻ', + 'configuration' => 'Cấu hình', + 'create' => 'Tạo mới', + 'edit' => 'Chỉnh sửa', + 'view' => 'Xem', + 'print' => 'In', + 'delete' => 'Xóa', + 'export' => 'Xuất khẩu', + 'mass-delete' => 'Xóa hàng loạt', + ], + + 'users' => [ + 'activate-warning' => 'Tài khoản của bạn chưa được kích hoạt. Vui lòng liên hệ quản trị viên.', + 'login-error' => 'Thông tin đăng nhập không khớp với hồ sơ của chúng tôi.', + + 'login' => [ + 'email' => 'Địa chỉ Email', + 'forget-password-link' => 'Quên Mật khẩu?', + 'password' => 'Mật khẩu', + 'submit-btn' => 'Đăng Nhập', + 'title' => 'Đăng Nhập', + ], + + 'forget-password' => [ + 'create' => [ + 'email' => 'Email Đã Đăng Ký', + 'email-not-exist' => 'Email Không Tồn Tại', + 'page-title' => 'Quên Mật khẩu', + 'reset-link-sent' => 'Liên kết đặt lại mật khẩu đã được gửi', + 'sign-in-link' => 'Quay lại Đăng Nhập?', + 'submit-btn' => 'Đặt Lại', + 'title' => 'Khôi Phục Mật khẩu', + ], + ], + + 'reset-password' => [ + 'back-link-title' => 'Quay lại Đăng Nhập?', + 'confirm-password' => 'Xác Nhận Mật Khẩu', + 'email' => 'Email Đã Đăng Ký', + 'password' => 'Mật Khẩu', + 'submit-btn' => 'Đặt Lại Mật Khẩu', + 'title' => 'Đặt Lại Mật Khẩu', + ], + ], + + 'account' => [ + 'edit' => [ + 'back-btn' => 'Quay Lại', + 'change-password' => 'Đổi Mật Khẩu', + 'confirm-password' => 'Xác Nhận Mật Khẩu', + 'current-password' => 'Mật Khẩu Hiện Tại', + 'email' => 'Email', + 'general' => 'Chung', + 'invalid-password' => 'Mật khẩu hiện tại bạn nhập không đúng.', + 'name' => 'Tên', + 'password' => 'Mật Khẩu', + 'profile-image' => 'Ảnh Hồ Sơ', + 'save-btn' => 'Lưu Tài Khoản', + 'title' => 'Tài Khoản Của Tôi', + 'update-success' => 'Tài khoản đã được cập nhật thành công', + 'upload-image-info' => 'Tải lên Ảnh Hồ Sơ (110px X 110px) ở định dạng PNG hoặc JPG', + ], + ], + + 'components' => [ + 'activities' => [ + 'actions' => [ + 'mail' => [ + 'btn' => 'Thư', + 'title' => 'Soạn thư', + 'to' => 'Tới', + 'enter-emails' => 'Nhấn enter để thêm email', + 'cc' => 'CC', + 'bcc' => 'BCC', + 'subject' => 'Chủ đề', + 'send-btn' => 'Gửi', + 'message' => 'Tin nhắn', + ], + + 'file' => [ + 'btn' => 'Tệp', + 'title' => 'Thêm tệp', + 'title-control' => 'Tiêu đề', + 'name' => 'Tên', + 'description' => 'Mô tả', + 'file' => 'Tệp', + 'save-btn' => 'Lưu tệp', + ], + + 'note' => [ + 'btn' => 'Ghi chú', + 'title' => 'Thêm ghi chú', + 'comment' => 'Bình luận', + 'save-btn' => 'Lưu ghi chú', + ], + + 'activity' => [ + 'btn' => 'Hoạt động', + 'title' => 'Thêm hoạt động', + 'title-control' => 'Tiêu đề', + 'description' => 'Mô tả', + 'schedule-from' => 'Lịch từ', + 'schedule-to' => 'Lịch đến', + 'location' => 'Địa điểm', + 'call' => 'Cuộc gọi', + 'meeting' => 'Cuộc họp', + 'lunch' => 'Bữa trưa', + 'save-btn' => 'Lưu hoạt động', + + 'participants' => [ + 'title' => 'Người tham gia', + 'placeholder' => 'Nhập để tìm kiếm người tham gia', + 'users' => 'Người dùng', + 'persons' => 'Người', + 'no-results' => 'Không có kết quả...', + ], + ], + ], + + 'index' => [ + 'from' => 'Từ', + 'to' => 'Đến', + 'cc' => 'Cc', + 'bcc' => 'Bcc', + 'all' => 'Tất cả', + 'planned' => 'Đã lên kế hoạch', + 'calls' => 'Cuộc gọi', + 'meetings' => 'Cuộc họp', + 'lunches' => 'Bữa trưa', + 'files' => 'Tệp tin', + 'quotes' => 'Báo giá', + 'notes' => 'Ghi chú', + 'emails' => 'Email', + 'change-log' => 'Nhật ký thay đổi', + 'by-user' => 'Bởi :user', + 'scheduled-on' => 'Lên lịch vào', + 'location' => 'Địa điểm', + 'participants' => 'Người tham gia', + 'mark-as-done' => 'Đánh dấu hoàn thành', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'view' => 'Xem', + 'unlink' => 'Gỡ liên kết', + 'empty' => 'Trống', + + 'empty-placeholders' => [ + 'all' => [ + 'title' => 'Không có hoạt động nào', + 'description' => 'Không có hoạt động nào cho mục này. Bạn có thể thêm hoạt động bằng cách nhấp vào nút bên trái.', + ], + + 'planned' => [ + 'title' => 'Không có hoạt động đã lên kế hoạch nào', + 'description' => 'Không có hoạt động đã lên kế hoạch cho mục này. Bạn có thể thêm hoạt động bằng cách nhấp vào nút bên trái.', + ], + + 'notes' => [ + 'title' => 'Không có ghi chú nào', + 'description' => 'Không có ghi chú cho mục này. Bạn có thể thêm ghi chú bằng cách nhấp vào nút bên trái.', + ], + + 'calls' => [ + 'title' => 'Không có cuộc gọi nào', + 'description' => 'Không có ghi chú cho mục này. Bạn có thể thêm ghi chú bằng cách nhấp vào nút bên trái.', + ], + + 'meetings' => [ + 'title' => 'Không có cuộc họp nào', + 'description' => 'Không có cuộc họp cho mục này. Bạn có thể thêm cuộc họp bằng cách nhấp vào nút bên trái.', + ], + + 'lunches' => [ + 'title' => 'Không có bữa trưa nào', + 'description' => 'Không có bữa trưa cho mục này. Bạn có thể thêm bữa trưa bằng cách nhấp vào nút bên trái.', + ], + + 'files' => [ + 'title' => 'Không có tệp tin nào', + 'description' => 'Không có tệp nào cho mục này. Bạn có thể thêm tệp bằng cách nhấp vào nút bên trái.', + ], + + 'emails' => [ + 'title' => 'Không có email nào', + 'description' => 'Không có email nào cho mục này. Bạn có thể thêm email bằng cách nhấp vào nút bên trái.', + ], + + 'system' => [ + 'title' => 'Không có nhật ký thay đổi nào', + 'description' => 'Không có nhật ký thay đổi nào cho mục này.', + ], + ], + ], + ], + + 'media' => [ + 'images' => [ + 'add-image-btn' => 'Thêm hình ảnh', + 'ai-add-image-btn' => 'Magic AI', + 'allowed-types' => 'png, jpeg, jpg', + 'not-allowed-error' => 'Chỉ chấp nhận tệp hình ảnh (.jpeg, .jpg, .png, ..).', + + 'placeholders' => [ + 'front' => 'Mặt trước', + 'next' => 'Kế tiếp', + 'size' => 'Kích thước', + 'use-cases' => 'Trường hợp sử dụng', + 'zoom' => 'Thu phóng', + ], + ], + + 'videos' => [ + 'add-video-btn' => 'Thêm video', + 'allowed-types' => 'mp4, webm, mkv', + 'not-allowed-error' => 'Chỉ chấp nhận tệp video (.mp4, .mov, .ogg ..).', + ], + ], + + 'datagrid' => [ + 'index' => [ + 'no-records-selected' => 'Chưa có bản ghi nào được chọn.', + 'must-select-a-mass-action-option' => 'Bạn phải chọn một tùy chọn hành động hàng loạt.', + 'must-select-a-mass-action' => 'Bạn phải chọn một hành động hàng loạt.', + ], + + 'toolbar' => [ + 'length-of' => ':length của', + 'of' => 'của', + 'per-page' => 'Mỗi Trang', + 'results' => ':total Kết quả', + 'delete' => 'Xóa', + 'selected' => ':total Mục đã chọn', + + 'mass-actions' => [ + 'submit' => 'Gửi', + 'select-option' => 'Chọn Tùy chọn', + 'select-action' => 'Chọn Hành động', + ], + + 'filter' => [ + 'apply-filters-btn' => 'Áp dụng Bộ lọc', + 'back-btn' => 'Quay lại', + 'create-new-filter' => 'Tạo Bộ lọc Mới', + 'custom-filters' => 'Bộ lọc Tùy chỉnh', + 'delete-error' => 'Đã xảy ra lỗi khi xóa bộ lọc, vui lòng thử lại.', + 'delete-success' => 'Bộ lọc đã được xóa thành công.', + 'empty-description' => 'Không có bộ lọc nào được chọn để lưu. Vui lòng chọn bộ lọc để lưu.', + 'empty-title' => 'Thêm Bộ lọc để Lưu', + 'name' => 'Tên', + 'quick-filters' => 'Bộ lọc Nhanh', + 'save-btn' => 'Lưu', + 'save-filter' => 'Lưu Bộ lọc', + 'saved-success' => 'Bộ lọc đã được lưu thành công.', + 'selected-filters' => 'Bộ lọc đã chọn', + 'title' => 'Bộ lọc', + 'update' => 'Cập nhật', + 'update-filter' => 'Cập nhật Bộ lọc', + 'updated-success' => 'Bộ lọc đã được cập nhật thành công.', + ], + + 'search' => [ + 'title' => 'Tìm kiếm', + ], + ], + + 'filters' => [ + 'select' => 'Chọn', + 'title' => 'Bộ lọc', + + 'dropdown' => [ + 'searchable' => [ + 'at-least-two-chars' => 'Nhập ít nhất 2 ký tự...', + 'no-results' => 'Không tìm thấy kết quả...', + ], + ], + + 'custom-filters' => [ + 'clear-all' => 'Xóa tất cả', + 'title' => 'Bộ lọc Tùy chỉnh', + ], + + 'boolean-options' => [ + 'false' => 'Sai', + 'true' => 'Đúng', + ], + + 'date-options' => [ + 'last-month' => 'Tháng trước', + 'last-six-months' => '6 Tháng trước', + 'last-three-months' => '3 Tháng trước', + 'this-month' => 'Tháng này', + 'this-week' => 'Tuần này', + 'this-year' => 'Năm nay', + 'today' => 'Hôm nay', + 'yesterday' => 'Hôm qua', + ], + ], + + 'table' => [ + 'actions' => 'Hành động', + 'no-records-available' => 'Không có Bản ghi nào.', + ], + ], + + 'modal' => [ + 'confirm' => [ + 'agree-btn' => 'Đồng ý', + 'disagree-btn' => 'Không đồng ý', + 'message' => 'Bạn có chắc chắn muốn thực hiện hành động này không?', + 'title' => 'Bạn có chắc chắn?', + ], + ], + + 'tags' => [ + 'index' => [ + 'title' => 'Thẻ', + 'added-tags' => 'Thẻ đã thêm', + 'save-btn' => 'Lưu Thẻ', + 'placeholder' => 'Nhập để tìm thẻ', + 'add-tag' => 'Thêm ":term"...', + 'aquarelle-red' => 'Đỏ Aquarelle', + 'crushed-cashew' => 'Hạt điều nghiền', + 'beeswax' => 'Sáp ong', + 'lemon-chiffon' => 'Vàng Chanh', + 'snow-flurry' => 'Tuyết Bay', + 'honeydew' => 'Mật Ong', + ], + ], + + 'layouts' => [ + 'header' => [ + 'mega-search' => [ + 'title' => 'Tìm kiếm', + + 'tabs' => [ + 'leads' => 'Khách hàng tiềm năng', + 'quotes' => 'Báo giá', + 'persons' => 'Người', + 'products' => 'Sản phẩm', + ], + + 'explore-all-products' => 'Khám phá tất cả Sản phẩm', + 'explore-all-leads' => 'Khám phá tất cả Khách hàng tiềm năng', + 'explore-all-contacts' => 'Khám phá tất cả Liên hệ', + 'explore-all-quotes' => 'Khám phá tất cả Báo giá', + 'explore-all-matching-products' => 'Khám phá tất cả sản phẩm khớp với ":query" (:count)', + 'explore-all-matching-leads' => 'Khám phá tất cả khách hàng tiềm năng khớp với ":query" (:count)', + 'explore-all-matching-contacts' => 'Khám phá tất cả liên hệ khớp với ":query" (:count)', + 'explore-all-matching-quotes' => 'Khám phá tất cả báo giá khớp với ":query" (:count)', + ], + ], + ], + + 'attributes' => [ + 'edit' => [ + 'delete' => 'Xóa', + ], + + 'lookup' => [ + 'click-to-add' => 'Nhấn để thêm', + 'search' => 'Tìm kiếm', + 'no-result-found' => 'Không tìm thấy kết quả', + ], + ], + + 'lookup' => [ + 'click-to-add' => 'Nhấn để Thêm', + 'no-results' => 'Không tìm thấy kết quả', + 'add-as-new' => 'Thêm như mới', + 'search' => 'Tìm kiếm...', + ], + + 'flash-group' => [ + 'success' => 'Thành công', + 'error' => 'Lỗi', + 'warning' => 'Cảnh báo', + 'info' => 'Thông tin', + ], + ], + + 'quotes' => [ + 'index' => [ + 'title' => 'Báo giá', + 'create-btn' => 'Tạo Báo giá', + 'create-success' => 'Báo giá đã được tạo thành công.', + 'update-success' => 'Báo giá đã được cập nhật thành công.', + 'delete-success' => 'Báo giá đã được xóa thành công.', + 'delete-failed' => 'Không thể xóa báo giá.', + + 'datagrid' => [ + 'subject' => 'Chủ đề', + 'sales-person' => 'Nhân viên bán hàng', + 'expired-at' => 'Hết hạn vào', + 'created-at' => 'Tạo vào', + 'expired-quotes' => 'Báo giá hết hạn', + 'person' => 'Người', + 'subtotal' => 'Tổng phụ', + 'discount' => 'Giảm giá', + 'tax' => 'Thuế', + 'adjustment' => 'Điều chỉnh', + 'grand-total' => 'Tổng cộng', + 'edit' => 'Chỉnh sửa', + 'delete' => 'Xóa', + 'print' => 'In', + ], + + 'pdf' => [ + 'title' => 'Báo giá', + 'grand-total' => 'Tổng cộng', + 'adjustment' => 'Điều chỉnh', + 'discount' => 'Giảm giá', + 'tax' => 'Thuế', + 'sub-total' => 'Tổng phụ', + 'amount' => 'Số tiền', + 'quantity' => 'Số lượng', + 'price' => 'Giá', + 'product-name' => 'Tên sản phẩm', + 'sku' => 'Mã sản phẩm (SKU)', + 'shipping-address' => 'Địa chỉ giao hàng', + 'billing-address' => 'Địa chỉ thanh toán', + 'expired-at' => 'Hết hạn vào', + 'sales-person' => 'Nhân viên bán hàng', + 'date' => 'Ngày', + 'quote-id' => 'ID Báo giá', + ], + ], + + 'create' => [ + 'title' => 'Tạo Báo giá', + 'save-btn' => 'Lưu Báo giá', + 'quote-info' => 'Thông tin Báo giá', + 'quote-info-info' => 'Nhập thông tin cơ bản của báo giá.', + 'address-info' => 'Thông tin Địa chỉ', + 'address-info-info' => 'Thông tin về địa chỉ liên quan đến báo giá.', + 'quote-items' => 'Mục Báo giá', + 'search-products' => 'Tìm kiếm Sản phẩm', + 'link-to-lead' => 'Liên kết tới lead', + 'quote-item-info' => 'Thêm Yêu cầu Sản phẩm cho báo giá này.', + 'quote-name' => 'Tên Báo giá', + 'quantity' => 'Số lượng', + 'price' => 'Giá', + 'discount' => 'Giảm giá', + 'tax' => 'Thuế', + 'total' => 'Tổng cộng', + 'amount' => 'Số tiền', + 'add-item' => '+ Thêm Mục', + 'sub-total' => 'Tổng phụ (:symbol)', + 'total-discount' => 'Giảm giá (:symbol)', + 'total-tax' => 'Thuế (:symbol)', + 'total-adjustment' => 'Điều chỉnh (:symbol)', + 'grand-total' => 'Tổng cộng (:symbol)', + 'discount-amount' => 'Số tiền giảm giá', + 'tax-amount' => 'Số tiền thuế', + 'adjustment-amount' => 'Số tiền điều chỉnh', + 'product-name' => 'Tên Sản phẩm', + 'action' => 'Hành động', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Báo giá', + 'save-btn' => 'Lưu Báo giá', + 'quote-info' => 'Thông tin Báo giá', + 'quote-info-info' => 'Nhập thông tin cơ bản của báo giá.', + 'address-info' => 'Thông tin Địa chỉ', + 'address-info-info' => 'Thông tin về địa chỉ liên quan đến báo giá.', + 'quote-items' => 'Mục Báo giá', + 'link-to-lead' => 'Liên kết tới lead', + 'quote-item-info' => 'Thêm Yêu cầu Sản phẩm cho báo giá này.', + 'quote-name' => 'Tên Báo giá', + 'quantity' => 'Số lượng', + 'price' => 'Giá', + 'search-products' => 'Tìm kiếm Sản phẩm', + 'discount' => 'Giảm giá', + 'tax' => 'Thuế', + 'total' => 'Tổng cộng', + 'amount' => 'Số tiền', + 'add-item' => '+ Thêm Mục', + 'sub-total' => 'Tổng phụ (:symbol)', + 'total-discount' => 'Giảm giá (:symbol)', + 'total-tax' => 'Thuế (:symbol)', + 'total-adjustment' => 'Điều chỉnh (:symbol)', + 'grand-total' => 'Tổng cộng (:symbol)', + 'discount-amount' => 'Số tiền giảm giá', + 'tax-amount' => 'Số tiền thuế', + 'adjustment-amount' => 'Số tiền điều chỉnh', + 'product-name' => 'Tên Sản phẩm', + 'action' => 'Hành động', + ], + ], + + 'contacts' => [ + 'persons' => [ + 'index' => [ + 'title' => 'Người', + 'create-btn' => 'Tạo Người', + 'create-success' => 'Người đã được tạo thành công.', + 'update-success' => 'Người đã được cập nhật thành công.', + 'delete-success' => 'Người đã được xóa thành công.', + 'delete-failed' => 'Không thể xóa người này.', + + 'datagrid' => [ + 'contact-numbers' => 'Số Liên hệ', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'emails' => 'Email', + 'id' => 'ID', + 'view' => 'Xem', + 'name' => 'Tên', + 'organization-name' => 'Tên Tổ chức', + ], + ], + + 'view' => [ + 'title' => ':name', + 'about-person' => 'Thông tin về Người', + 'about-organization' => 'Thông tin về Tổ chức', + + 'activities' => [ + 'index' => [ + 'all' => 'Tất cả', + 'calls' => 'Cuộc gọi', + 'meetings' => 'Cuộc họp', + 'lunches' => 'Bữa trưa', + 'files' => 'Tệp', + 'quotes' => 'Báo giá', + 'notes' => 'Ghi chú', + 'emails' => 'Email', + 'by-user' => 'Bởi :user', + 'scheduled-on' => 'Đã lên lịch vào', + 'location' => 'Vị trí', + 'participants' => 'Người tham gia', + 'mark-as-done' => 'Đánh dấu là Đã hoàn thành', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + ], + + 'actions' => [ + 'mail' => [ + 'btn' => 'Mail', + 'title' => 'Soạn Mail', + 'to' => 'Đến', + 'cc' => 'CC', + 'bcc' => 'BCC', + 'subject' => 'Chủ đề', + 'send-btn' => 'Gửi', + 'message' => 'Tin nhắn', + ], + + 'file' => [ + 'btn' => 'Tệp', + 'title' => 'Thêm Tệp', + 'title-control' => 'Tiêu đề', + 'name' => 'Tên Tệp', + 'description' => 'Mô tả', + 'file' => 'Tệp', + 'save-btn' => 'Lưu Tệp', + ], + + 'note' => [ + 'btn' => 'Ghi chú', + 'title' => 'Thêm Ghi chú', + 'comment' => 'Bình luận', + 'save-btn' => 'Lưu Ghi chú', + ], + + 'activity' => [ + 'btn' => 'Hoạt động', + 'title' => 'Thêm Hoạt động', + 'title-control' => 'Tiêu đề', + 'description' => 'Mô tả', + 'schedule-from' => 'Lên lịch từ', + 'schedule-to' => 'Lên lịch đến', + 'location' => 'Vị trí', + 'call' => 'Cuộc gọi', + 'meeting' => 'Cuộc họp', + 'lunch' => 'Bữa trưa', + 'save-btn' => 'Lưu Hoạt động', + ], + ], + ], + ], + + 'create' => [ + 'title' => 'Tạo Người', + 'save-btn' => 'Lưu Người', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Người', + 'save-btn' => 'Lưu Người', + ], + ], + + 'organizations' => [ + 'index' => [ + 'title' => 'Tổ chức', + 'create-btn' => 'Tạo Tổ chức', + 'create-success' => 'Tổ chức đã được tạo thành công.', + 'update-success' => 'Tổ chức đã được cập nhật thành công.', + 'delete-success' => 'Tổ chức đã được xóa thành công.', + 'delete-failed' => 'Không thể xóa tổ chức.', + + 'datagrid' => [ + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + 'persons-count' => 'Số người', + ], + ], + + 'create' => [ + 'title' => 'Tạo Tổ chức', + 'save-btn' => 'Lưu Tổ chức', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Tổ chức', + 'save-btn' => 'Lưu Tổ chức', + ], + ], + ], + + 'products' => [ + 'index' => [ + 'title' => 'Sản phẩm', + 'create-btn' => 'Tạo Sản phẩm', + 'create-success' => 'Sản phẩm đã được tạo thành công.', + 'update-success' => 'Sản phẩm đã được cập nhật thành công.', + 'delete-success' => 'Sản phẩm đã được xóa thành công.', + 'delete-failed' => 'Không thể xóa sản phẩm.', + + 'datagrid' => [ + 'allocated' => 'Đã phân bổ', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'in-stock' => 'Có sẵn', + 'name' => 'Tên', + 'on-hand' => 'Sẵn có', + 'price' => 'Giá', + 'sku' => 'SKU', + 'view' => 'Xem', + ], + ], + + 'create' => [ + 'save-btn' => 'Lưu Sản phẩm', + 'title' => 'Tạo Sản phẩm', + 'general' => 'Thông tin chung', + 'price' => 'Giá', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Sản phẩm', + 'save-btn' => 'Lưu Sản phẩm', + 'general' => 'Thông tin chung', + 'price' => 'Giá', + ], + + 'view' => [ + 'sku' => 'SKU', + 'all' => 'Tất cả', + 'notes' => 'Ghi chú', + 'files' => 'Tệp', + 'inventories' => 'Tồn kho', + 'change-logs' => 'Nhật ký thay đổi', + + 'attributes' => [ + 'about-product' => 'Thông tin về sản phẩm', + ], + + 'inventory' => [ + 'source' => 'Nguồn', + 'in-stock' => 'Có sẵn', + 'allocated' => 'Đã phân bổ', + 'on-hand' => 'Sẵn có', + 'actions' => 'Hành động', + 'assign' => 'Phân bổ', + 'add-source' => 'Thêm nguồn', + 'location' => 'Vị trí', + 'add-more' => 'Thêm nữa', + 'save' => 'Lưu', + ], + ], + ], + + 'settings' => [ + 'title' => 'Cài đặt', + + 'groups' => [ + 'index' => [ + 'create-btn' => 'Tạo Nhóm', + 'title' => 'Nhóm', + 'create-success' => 'Nhóm đã được tạo thành công.', + 'update-success' => 'Nhóm đã được cập nhật thành công.', + 'destroy-success' => 'Nhóm đã được xóa thành công.', + 'delete-failed' => 'Không thể xóa nhóm.', + + 'datagrid' => [ + 'delete' => 'Xóa', + 'description' => 'Mô tả', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Nhóm', + ], + + 'create' => [ + 'name' => 'Tên', + 'title' => 'Tạo Nhóm', + 'description' => 'Mô tả', + 'save-btn' => 'Lưu Nhóm', + ], + ], + ], + + 'roles' => [ + 'index' => [ + 'being-used' => 'Vai trò không thể xóa, vì đang được sử dụng trong người dùng quản trị.', + 'create-btn' => 'Tạo Vai trò', + 'create-success' => 'Vai trò đã được tạo thành công.', + 'current-role-delete-error' => 'Không thể xóa vai trò đã gán cho người dùng hiện tại.', + 'delete-failed' => 'Không thể xóa vai trò.', + 'delete-success' => 'Vai trò đã được xóa thành công.', + 'last-delete-error' => 'Cần ít nhất một vai trò.', + 'settings' => 'Cài đặt', + 'title' => 'Vai trò', + 'update-success' => 'Vai trò đã được cập nhật thành công.', + 'user-define-error' => 'Không thể xóa vai trò hệ thống.', + + 'datagrid' => [ + 'all' => 'Tất cả', + 'custom' => 'Tùy chỉnh', + 'delete' => 'Xóa', + 'description' => 'Mô tả', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + 'permission-type' => 'Loại quyền', + ], + ], + + 'create' => [ + 'access-control' => 'Kiểm soát truy cập', + 'all' => 'Tất cả', + 'back-btn' => 'Quay lại', + 'custom' => 'Tùy chỉnh', + 'description' => 'Mô tả', + 'general' => 'Thông tin chung', + 'name' => 'Tên', + 'permissions' => 'Quyền', + 'save-btn' => 'Lưu Vai trò', + 'title' => 'Tạo Vai trò', + ], + + 'edit' => [ + 'access-control' => 'Kiểm soát truy cập', + 'all' => 'Tất cả', + 'back-btn' => 'Quay lại', + 'custom' => 'Tùy chỉnh', + 'description' => 'Mô tả', + 'general' => 'Thông tin chung', + 'name' => 'Tên', + 'permissions' => 'Quyền', + 'save-btn' => 'Lưu Vai trò', + 'title' => 'Chỉnh sửa Vai trò', + ], + ], + 'types' => [ + 'index' => [ + 'create-btn' => 'Tạo Loại', + 'create-success' => 'Loại đã được tạo thành công.', + 'delete-failed' => 'Không thể xóa loại.', + 'delete-success' => 'Loại đã được xóa thành công.', + 'title' => 'Các Loại', + 'update-success' => 'Loại đã được cập nhật thành công.', + + 'datagrid' => [ + 'delete' => 'Xóa', + 'description' => 'Mô tả', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + ], + + 'create' => [ + 'name' => 'Tên', + 'save-btn' => 'Lưu Loại', + 'title' => 'Tạo Loại', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Loại', + ], + ], + ], + + 'sources' => [ + 'index' => [ + 'create-btn' => 'Tạo Nguồn', + 'create-success' => 'Nguồn đã được tạo thành công.', + 'delete-failed' => 'Không thể xóa nguồn.', + 'delete-success' => 'Nguồn đã được xóa thành công.', + 'title' => 'Các Nguồn', + 'update-success' => 'Nguồn đã được cập nhật thành công.', + + 'datagrid' => [ + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + ], + + 'create' => [ + 'name' => 'Tên', + 'save-btn' => 'Lưu Nguồn', + 'title' => 'Tạo Nguồn', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Nguồn', + ], + ], + ], + + 'workflows' => [ + 'index' => [ + 'title' => 'Quy trình', + 'create-btn' => 'Tạo Quy trình', + 'create-success' => 'Quy trình đã được tạo thành công.', + 'update-success' => 'Quy trình đã được cập nhật thành công.', + 'delete-success' => 'Quy trình đã được xóa thành công.', + 'delete-failed' => 'Không thể xóa quy trình.', + 'datagrid' => [ + 'delete' => 'Xóa', + 'description' => 'Mô tả', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + ], + ], + + 'helpers' => [ + 'update-related-leads' => 'Cập nhật các đầu mối liên quan', + 'send-email-to-sales-owner' => 'Gửi email đến người sở hữu bán hàng', + 'send-email-to-participants' => 'Gửi email đến các tham gia', + 'add-webhook' => 'Thêm Webhook', + 'update-lead' => 'Cập nhật đầu mối', + 'update-person' => 'Cập nhật người', + 'send-email-to-person' => 'Gửi email đến người', + 'add-tag' => 'Thêm Thẻ', + 'add-note-as-activity' => 'Thêm Ghi chú như Hoạt động', + ], + + 'create' => [ + 'title' => 'Tạo Quy trình', + 'event' => 'Sự kiện', + 'back-btn' => 'Quay lại', + 'save-btn' => 'Lưu Quy trình', + 'name' => 'Tên', + 'basic-details' => 'Thông tin cơ bản', + 'description' => 'Mô tả', + 'actions' => 'Hành động', + 'basic-details-info' => 'Nhập thông tin cơ bản của quy trình.', + 'event-info' => 'Một sự kiện kích hoạt, kiểm tra, điều kiện và thực hiện các hành động đã được định nghĩa.', + 'conditions' => 'Điều kiện', + 'conditions-info' => 'Điều kiện là các quy tắc kiểm tra kịch bản, được kích hoạt trong các dịp cụ thể.', + 'actions-info' => 'Một hành động không chỉ giảm khối lượng công việc mà còn làm cho tự động hóa CRM dễ dàng hơn.', + 'value' => 'Giá trị', + 'condition-type' => 'Loại điều kiện', + 'all-condition-are-true' => 'Tất cả điều kiện đều đúng', + 'any-condition-are-true' => 'Bất kỳ điều kiện nào cũng đúng', + 'add-condition' => 'Thêm Điều kiện', + 'add-action' => 'Thêm Hành động', + 'yes' => 'Có', + 'no' => 'Không', + 'email' => 'Email', + 'is-equal-to' => 'Bằng với', + 'is-not-equal-to' => 'Không bằng với', + 'equals-or-greater-than' => 'Bằng hoặc lớn hơn', + 'equals-or-less-than' => 'Bằng hoặc nhỏ hơn', + 'greater-than' => 'Lớn hơn', + 'less-than' => 'Nhỏ hơn', + 'type' => 'Loại', + 'contain' => 'Chứa', + 'contains' => 'Chứa', + 'does-not-contain' => 'Không chứa', + ], + + 'edit' => [ + 'title' => 'Chỉnh sửa Quy trình', + 'event' => 'Sự kiện', + 'back-btn' => 'Quay lại', + 'save-btn' => 'Lưu Quy trình', + 'name' => 'Tên', + 'basic-details' => 'Thông tin cơ bản', + 'description' => 'Mô tả', + 'actions' => 'Hành động', + 'type' => 'Loại', + 'basic-details-info' => 'Nhập thông tin cơ bản của quy trình.', + 'event-info' => 'Một sự kiện kích hoạt, kiểm tra, điều kiện và thực hiện các hành động đã được định nghĩa.', + 'conditions' => 'Điều kiện', + 'conditions-info' => 'Điều kiện là các quy tắc kiểm tra kịch bản, được kích hoạt trong các dịp cụ thể.', + 'actions-info' => 'Một hành động không chỉ giảm khối lượng công việc mà còn làm cho tự động hóa CRM dễ dàng hơn.', + 'value' => 'Giá trị', + 'condition-type' => 'Loại điều kiện', + 'all-condition-are-true' => 'Tất cả điều kiện đều đúng', + 'any-condition-are-true' => 'Bất kỳ điều kiện nào cũng đúng', + 'add-condition' => 'Thêm Điều kiện', + 'add-action' => 'Thêm Hành động', + 'yes' => 'Có', + 'no' => 'Không', + 'email' => 'Email', + 'is-equal-to' => 'Bằng với', + 'is-not-equal-to' => 'Không bằng với', + 'equals-or-greater-than' => 'Bằng hoặc lớn hơn', + 'equals-or-less-than' => 'Bằng hoặc nhỏ hơn', + 'greater-than' => 'Lớn hơn', + 'less-than' => 'Nhỏ hơn', + 'contain' => 'Chứa', + 'contains' => 'Chứa', + 'does-not-contain' => 'Không chứa', + ], + ], + + 'webforms' => [ + 'index' => [ + 'title' => 'Biểu mẫu Web', + 'create-btn' => 'Tạo Biểu mẫu Web', + 'create-success' => 'Biểu mẫu Web đã được tạo thành công.', + 'update-success' => 'Biểu mẫu Web đã được cập nhật thành công.', + 'delete-success' => 'Biểu mẫu Web đã được xóa thành công.', + 'delete-failed' => 'Biểu mẫu Web không thể bị xóa.', + + 'datagrid' => [ + 'id' => 'ID', + 'title' => 'Tiêu đề', + 'edit' => 'Chỉnh sửa', + 'delete' => 'Xóa', + ], + ], + + 'create' => [ + 'title' => 'Tạo Biểu mẫu Web', + 'add-attribute-btn' => 'Thêm Nút Thuộc Tính', + 'attribute-label-color' => 'Màu Nhãn Thuộc Tính', + 'attributes' => 'Thuộc Tính', + 'attributes-info' => 'Thêm các thuộc tính tùy chỉnh vào biểu mẫu.', + 'background-color' => 'Màu Nền', + 'create-lead' => 'Tạo Dẫn Dắt', + 'customize-webform' => 'Tùy Chỉnh Biểu Mẫu Web', + 'customize-webform-info' => 'Tùy chỉnh biểu mẫu web của bạn với màu sắc của các phần tử theo lựa chọn của bạn.', + 'description' => 'Mô tả', + 'display-custom-message' => 'Hiển thị thông điệp tùy chỉnh', + 'form-background-color' => 'Màu Nền Biểu Mẫu', + 'form-submit-btn-color' => 'Màu Nút Gửi Biểu Mẫu', + 'form-submit-button-color' => 'Màu Nút Gửi Biểu Mẫu', + 'form-title-color' => 'Màu Tiêu Đề Biểu Mẫu', + 'general' => 'Chung', + 'leads' => 'Dẫn Dắt', + 'person' => 'Người', + 'save-btn' => 'Lưu Biểu Mẫu Web', + 'submit-button-label' => 'Nhãn Nút Gửi', + 'submit-success-action' => 'Hành Động Thành Công Khi Gửi', + 'redirect-to-url' => 'Chuyển Hướng Đến URL', + 'choose-value' => 'Chọn Giá Trị', + 'select-file' => 'Chọn Tập Tin', + 'select-image' => 'Chọn Hình Ảnh', + 'enter-value' => 'Nhập Giá Trị', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Biểu Mẫu Web', + 'add-attribute-btn' => 'Thêm Nút Thuộc Tính', + 'attribute-label-color' => 'Màu Nhãn Thuộc Tính', + 'attributes' => 'Thuộc Tính', + 'attributes-info' => 'Thêm các thuộc tính tùy chỉnh vào biểu mẫu.', + 'background-color' => 'Màu Nền', + 'code-snippet' => 'Mã Snippet', + 'copied' => 'Đã Sao Chép', + 'copy' => 'Sao Chép', + 'create-lead' => 'Tạo Dẫn Dắt', + 'customize-webform' => 'Tùy Chỉnh Biểu Mẫu Web', + 'customize-webform-info' => 'Tùy chỉnh biểu mẫu web của bạn với màu sắc của các phần tử theo lựa chọn của bạn.', + 'description' => 'Mô tả', + 'display-custom-message' => 'Hiển thị thông điệp tùy chỉnh', + 'embed' => 'Nhúng', + 'form-background-color' => 'Màu Nền Biểu Mẫu', + 'form-submit-btn-color' => 'Màu Nút Gửi Biểu Mẫu', + 'form-submit-button-color' => 'Màu Nút Gửi Biểu Mẫu', + 'form-title-color' => 'Màu Tiêu Đề Biểu Mẫu', + 'general' => 'Chung', + 'preview' => 'Xem Trước', + 'person' => 'Người', + 'public-url' => 'URL Công Khai', + 'redirect-to-url' => 'Chuyển Hướng Đến URL', + 'save-btn' => 'Lưu Biểu Mẫu Web', + 'submit-button-label' => 'Nhãn Nút Gửi', + 'submit-success-action' => 'Hành Động Thành Công Khi Gửi', + 'choose-value' => 'Chọn Giá Trị', + 'select-file' => 'Chọn Tập Tin', + 'select-image' => 'Chọn Hình Ảnh', + 'enter-value' => 'Nhập Giá Trị', + ], + ], + + 'email-template' => [ + 'index' => [ + 'create-btn' => 'Tạo Mẫu Email', + 'title' => 'Mẫu Email', + 'create-success' => 'Mẫu Email đã được tạo thành công.', + 'update-success' => 'Mẫu Email đã được cập nhật thành công.', + 'delete-success' => 'Mẫu Email đã được xóa thành công.', + 'delete-failed' => 'Mẫu Email không thể bị xóa.', + + 'datagrid' => [ + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + 'subject' => 'Chủ đề', + ], + ], + + 'create' => [ + 'title' => 'Tạo Mẫu Email', + 'save-btn' => 'Lưu Mẫu Email', + 'email-template' => 'Mẫu Email', + 'subject' => 'Chủ đề', + 'content' => 'Nội dung', + 'subject-placeholders' => 'Biến thể Chủ đề', + 'general' => 'Chung', + 'name' => 'Tên', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Mẫu Email', + 'save-btn' => 'Lưu Mẫu Email', + 'email-template' => 'Mẫu Email', + 'subject' => 'Chủ đề', + 'content' => 'Nội dung', + 'subject-placeholders' => 'Biến thể Chủ đề', + 'general' => 'Chung', + 'name' => 'Tên', + ], + ], + + 'tags' => [ + 'index' => [ + 'create-btn' => 'Tạo Thẻ', + 'title' => 'Thẻ', + 'create-success' => 'Thẻ đã được tạo thành công.', + 'update-success' => 'Thẻ đã được cập nhật thành công.', + 'delete-success' => 'Thẻ đã được xóa thành công.', + 'delete-failed' => 'Thẻ không thể bị xóa.', + + 'datagrid' => [ + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'name' => 'Tên', + 'users' => 'Người dùng', + 'created-at' => 'Ngày tạo', + ], + + 'create' => [ + 'name' => 'Tên', + 'save-btn' => 'Lưu Thẻ', + 'title' => 'Tạo Thẻ', + 'color' => 'Màu sắc', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Thẻ', + ], + ], + ], + + 'users' => [ + 'index' => [ + 'create-btn' => 'Tạo Người Dùng', + 'create-success' => 'Người dùng đã được tạo thành công.', + 'delete-failed' => 'Người dùng không thể bị xóa.', + 'delete-success' => 'Người dùng đã được xóa thành công.', + 'last-delete-error' => 'Cần ít nhất một người dùng.', + 'mass-delete-failed' => 'Người dùng không thể bị xóa.', + 'mass-delete-success' => 'Người dùng đã được xóa thành công.', + 'mass-update-failed' => 'Người dùng không thể được cập nhật.', + 'mass-update-success' => 'Người dùng đã được cập nhật thành công.', + 'title' => 'Người Dùng', + 'update-success' => 'Người dùng đã được cập nhật thành công.', + 'user-define-error' => 'Không thể xóa người dùng hệ thống.', + 'active' => 'Kích hoạt', + 'inactive' => 'Không kích hoạt', + + 'datagrid' => [ + 'active' => 'Kích hoạt', + 'created-at' => 'Ngày tạo', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'email' => 'Email', + 'id' => 'ID', + 'inactive' => 'Không kích hoạt', + 'name' => 'Tên', + 'status' => 'Trạng thái', + 'update-status' => 'Cập nhật Trạng thái', + 'users' => 'Người dùng', + ], + + 'create' => [ + 'confirm-password' => 'Xác nhận Mật khẩu', + 'email' => 'Email', + 'general' => 'Chung', + 'global' => 'Toàn cầu', + 'group' => 'Nhóm', + 'individual' => 'Cá nhân', + 'name' => 'Tên', + 'password' => 'Mật khẩu', + 'permission' => 'Quyền hạn', + 'role' => 'Vai trò', + 'save-btn' => 'Lưu Người Dùng', + 'status' => 'Trạng thái', + 'title' => 'Tạo Người Dùng', + 'view-permission' => 'Xem Quyền Hạn', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Người Dùng', + ], + ], + ], + + 'pipelines' => [ + 'index' => [ + 'title' => 'Quy Trình', + 'create-btn' => 'Tạo Quy Trình', + 'create-success' => 'Quy trình đã được tạo thành công.', + 'update-success' => 'Quy trình đã được cập nhật thành công.', + 'delete-success' => 'Quy trình đã được xóa thành công.', + 'delete-failed' => 'Quy trình không thể bị xóa.', + 'default-delete-error' => 'Quy trình mặc định không thể bị xóa.', + + 'datagrid' => [ + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'id' => 'ID', + 'is-default' => 'Có phải là mặc định', + 'name' => 'Tên', + 'no' => 'Không', + 'rotten-days' => 'Ngày Hỏng', + 'yes' => 'Có', + ], + ], + + 'create' => [ + 'title' => 'Tạo Quy Trình', + 'save-btn' => 'Lưu Quy Trình', + 'name' => 'Tên', + 'rotten-days' => 'Ngày Hỏng', + 'mark-as-default' => 'Đánh dấu là Mặc định', + 'general' => 'Chung', + 'probability' => 'Xác Suất (%)', + 'new-stage' => 'Mới', + 'won-stage' => 'Thắng', + 'lost-stage' => 'Thua', + 'stage-btn' => 'Thêm Giai Đoạn', + 'stages' => 'Các Giai Đoạn', + 'duplicate-name' => 'Trường "Tên" không được trùng lặp', + 'delete-stage' => 'Xóa Giai Đoạn', + 'add-new-stages' => 'Thêm Giai Đoạn Mới', + 'add-stage-info' => 'Thêm giai đoạn mới cho Quy trình của bạn', + 'newly-added' => 'Mới Thêm', + 'stage-delete-success' => 'Giai Đoạn đã được xóa thành công', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Quy Trình', + 'save-btn' => 'Lưu Quy Trình', + 'name' => 'Tên', + 'rotten-days' => 'Ngày Hỏng', + 'mark-as-default' => 'Đánh dấu là Mặc định', + 'general' => 'Chung', + 'probability' => 'Xác Suất (%)', + 'new-stage' => 'Mới', + 'won-stage' => 'Thắng', + 'lost-stage' => 'Thua', + 'stage-btn' => 'Thêm Giai Đoạn', + 'stages' => 'Các Giai Đoạn', + 'duplicate-name' => 'Trường "Tên" không được trùng lặp', + 'delete-stage' => 'Xóa Giai Đoạn', + 'add-new-stages' => 'Thêm Giai Đoạn Mới', + 'add-stage-info' => 'Thêm giai đoạn mới cho Quy trình của bạn', + 'stage-delete-success' => 'Giai Đoạn đã được xóa thành công', + ], + ], + + 'webhooks' => [ + 'index' => [ + 'title' => 'Webhooks', + 'create-btn' => 'Tạo Webhook', + 'create-success' => 'Webhook đã được tạo thành công.', + 'update-success' => 'Webhook đã được cập nhật thành công.', + 'delete-success' => 'Webhook đã được xóa thành công.', + 'delete-failed' => 'Webhook không thể bị xóa.', + + 'datagrid' => [ + 'id' => 'ID', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'name' => 'Tên', + 'entity-type' => 'Loại Đối Tượng', + 'end-point' => 'Điểm Kết Thúc', + ], + ], + + 'create' => [ + 'title' => 'Tạo Webhook', + 'save-btn' => 'Lưu Webhook', + 'info' => 'Nhập thông tin chi tiết của webhooks', + 'url-and-parameters' => 'URL Và Tham Số', + 'method' => 'Phương Thức', + 'post' => 'Post', + 'put' => 'Put', + 'url-endpoint' => 'Điểm Kết Thúc URL', + 'parameters' => 'Tham Số', + 'add-new-parameter' => 'Thêm Tham Số Mới', + 'url-preview' => 'Xem Trước URL:', + 'headers' => 'Tiêu Đề', + 'add-new-header' => 'Thêm Tiêu Đề Mới', + 'body' => 'Nội Dung', + 'default' => 'Mặc định', + 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Khóa và Giá trị', + 'add-new-payload' => 'Thêm payload mới', + 'raw' => 'Thô', + 'general' => 'Chung', + 'name' => 'Tên', + 'entity-type' => 'Loại Đối Tượng', + 'insert-placeholder' => 'Chèn Placeholder', + 'description' => 'Mô Tả', + 'json' => 'Json', + 'text' => 'Văn bản', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Webhook', + 'edit-btn' => 'Lưu Webhook', + 'save-btn' => 'Lưu Webhook', + 'info' => 'Nhập thông tin chi tiết của webhooks', + 'url-and-parameters' => 'URL Và Tham Số', + 'method' => 'Phương Thức', + 'post' => 'Post', + 'put' => 'Put', + 'url-endpoint' => 'Điểm Kết Thúc URL', + 'parameters' => 'Tham Số', + 'add-new-parameter' => 'Thêm Tham Số Mới', + 'url-preview' => 'Xem Trước URL:', + 'headers' => 'Tiêu Đề', + 'add-new-header' => 'Thêm Tiêu Đề Mới', + 'body' => 'Nội Dung', + 'default' => 'Mặc định', + 'x-www-form-urlencoded' => 'x-www-form-urlencoded', + 'key-and-value' => 'Khóa và Giá trị', + 'add-new-payload' => 'Thêm payload mới', + 'raw' => 'Thô', + 'general' => 'Chung', + 'name' => 'Tên', + 'entity-type' => 'Loại Đối Tượng', + 'insert-placeholder' => 'Chèn Placeholder', + 'description' => 'Mô Tả', + 'json' => 'Json', + 'text' => 'Văn bản', + ], + ], + + 'warehouses' => [ + 'index' => [ + 'title' => 'Kho Hàng', + 'create-btn' => 'Tạo Kho Hàng', + 'create-success' => 'Kho hàng đã được tạo thành công.', + 'name-exists' => 'Tên kho hàng đã tồn tại.', + 'update-success' => 'Kho hàng đã được cập nhật thành công.', + 'delete-success' => 'Kho hàng đã được xóa thành công.', + 'delete-failed' => 'Kho hàng không thể bị xóa.', + + 'datagrid' => [ + 'id' => 'ID', + 'name' => 'Tên', + 'contact-name' => 'Tên Liên Hệ', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh sửa', + 'view' => 'Xem', + 'created-at' => 'Ngày Tạo', + 'products' => 'Sản Phẩm', + 'contact-emails' => 'Email Liên Hệ', + 'contact-numbers' => 'Số Điện Thoại Liên Hệ', + ], + ], + + 'create' => [ + 'title' => 'Tạo Kho Hàng', + 'save-btn' => 'Lưu Kho Hàng', + 'contact-info' => 'Thông Tin Liên Hệ', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Kho Hàng', + 'save-btn' => 'Lưu Kho Hàng', + 'contact-info' => 'Thông Tin Liên Hệ', + ], + + 'view' => [ + 'all' => 'Tất Cả', + 'notes' => 'Ghi Chú', + 'files' => 'Tệp', + 'location' => 'Vị Trí', + 'change-logs' => 'Nhật Ký Thay Đổi', + + 'locations' => [ + 'action' => 'Hành Động', + 'add-location' => 'Thêm Vị Trí', + 'create-success' => 'Vị trí đã được tạo thành công.', + 'delete' => 'Xóa', + 'delete-failed' => 'Vị trí không thể bị xóa.', + 'delete-success' => 'Vị trí đã được xóa thành công.', + 'name' => 'Tên', + 'save-btn' => 'Lưu', + ], + + 'general-information' => [ + 'title' => 'Thông Tin Chung', + ], + + 'contact-information' => [ + 'title' => 'Thông Tin Liên Hệ', + ], + ], + ], + + 'attributes' => [ + 'index' => [ + 'title' => 'Thuộc Tính', + 'create-btn' => 'Tạo Thuộc Tính', + 'create-success' => 'Thuộc tính đã được tạo thành công.', + 'update-success' => 'Thuộc tính đã được cập nhật thành công.', + 'delete-success' => 'Thuộc tính đã được xóa thành công.', + 'delete-failed' => 'Thuộc tính không thể bị xóa.', + 'user-define-error' => 'Không thể xóa thuộc tính hệ thống.', + 'mass-delete-failed' => 'Các thuộc tính hệ thống không thể bị xóa.', + + 'datagrid' => [ + 'yes' => 'Có', + 'no' => 'Không', + 'id' => 'ID', + 'code' => 'Mã', + 'name' => 'Tên', + 'entity-type' => 'Loại Thực Thể', + 'type' => 'Loại', + 'is-default' => 'Mặc Định', + 'edit' => 'Chỉnh sửa', + 'delete' => 'Xóa', + ], + ], + + 'create' => [ + 'title' => 'Tạo Thuộc Tính', + 'save-btn' => 'Lưu Thuộc Tính', + 'code' => 'Mã', + 'name' => 'Tên', + 'entity-type' => 'Loại Thực Thể', + 'type' => 'Loại', + 'validations' => 'Xác Thực', + 'is-required' => 'Bắt Buộc', + 'input-validation' => 'Xác Thực Đầu Vào', + 'is-unique' => 'Là Độc Nhất', + 'labels' => 'Nhãn', + 'general' => 'Chung', + 'numeric' => 'Số', + 'decimal' => 'Thập Phân', + 'url' => 'Url', + 'options' => 'Tùy Chọn', + 'option-type' => 'Loại Tùy Chọn', + 'lookup-type' => 'Loại Tra Cứu', + 'add-option' => 'Thêm Tùy Chọn', + 'save-option' => 'Lưu Tùy Chọn', + 'option-name' => 'Tên Tùy Chọn', + 'add-attribute-options' => 'Thêm Tùy Chọn Thuộc Tính', + 'text' => 'Văn Bản', + 'textarea' => 'Khung Văn Bản', + 'price' => 'Giá', + 'boolean' => 'Boolean', + 'select' => 'Chọn', + 'multiselect' => 'Chọn Nhiều', + 'email' => 'Email', + 'address' => 'Địa Chỉ', + 'phone' => 'Điện Thoại', + 'datetime' => 'Ngày Giờ', + 'date' => 'Ngày', + 'image' => 'Hình Ảnh', + 'file' => 'Tệp', + 'lookup' => 'Tra Cứu', + 'entity_type' => 'Loại thực thể', + 'checkbox' => 'Hộp Kiểm', + 'is_required' => 'Bắt Buộc', + 'is_unique' => 'Là Độc Nhất', + 'actions' => 'Hành Động', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Thuộc Tính', + 'save-btn' => 'Lưu Thuộc Tính', + 'code' => 'Mã', + 'name' => 'Tên', + 'labels' => 'Nhãn', + 'entity-type' => 'Loại Thực Thể', + 'type' => 'Loại', + 'validations' => 'Xác Thực', + 'is-required' => 'Bắt Buộc', + 'input-validation' => 'Xác Thực Đầu Vào', + 'is-unique' => 'Là Độc Nhất', + 'general' => 'Chung', + 'numeric' => 'Số', + 'decimal' => 'Thập Phân', + 'url' => 'Url', + 'options' => 'Tùy Chọn', + 'option-type' => 'Loại Tùy Chọn', + 'lookup-type' => 'Loại Tra Cứu', + 'add-option' => 'Thêm Tùy Chọn', + 'save-option' => 'Lưu Tùy Chọn', + 'option-name' => 'Tên Tùy Chọn', + 'add-attribute-options' => 'Thêm Tùy Chọn Thuộc Tính', + 'text' => 'Văn Bản', + 'textarea' => 'Khung Văn Bản', + 'price' => 'Giá', + 'boolean' => 'Boolean', + 'select' => 'Chọn', + 'multiselect' => 'Chọn Nhiều', + 'email' => 'Email', + 'address' => 'Địa Chỉ', + 'phone' => 'Điện Thoại', + 'datetime' => 'Ngày Giờ', + 'date' => 'Ngày', + 'image' => 'Hình Ảnh', + 'file' => 'Tệp', + 'lookup' => 'Tra Cứu', + 'entity_type' => 'Loại thực thể', + 'checkbox' => 'Hộp Kiểm', + 'is_required' => 'Bắt Buộc', + 'is_unique' => 'Là Độc Nhất', + 'actions' => 'Hành Động', + ], + ], + + ], + + 'activities' => [ + 'index' => [ + 'title' => 'Hoạt Động', + + 'datagrid' => [ + 'comment' => 'Ghi Chú', + 'created_at' => 'Thời Gian Tạo', + 'created_by' => 'Người Tạo', + 'edit' => 'Chỉnh Sửa', + 'id' => 'ID', + 'done' => 'Đã Hoàn Thành', + 'not-done' => 'Chưa Hoàn Thành', + 'lead' => 'Người Dẫn Dắt', + 'mass-delete' => 'Xóa Hàng Loạt', + 'mass-update' => 'Cập Nhật Hàng Loạt', + 'schedule-from' => 'Lịch Từ', + 'schedule-to' => 'Lịch Đến', + 'schedule_from' => 'Lịch Từ', + 'schedule_to' => 'Lịch Đến', + 'title' => 'Tiêu Đề', + 'is_done' => 'Đã Hoàn Thành', + 'type' => 'Loại', + 'update' => 'Cập Nhật', + 'call' => 'Cuộc Gọi', + 'meeting' => 'Cuộc Họp', + 'lunch' => 'Bữa Trưa', + ], + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Hoạt Động', + 'back-btn' => 'Quay Lại', + 'save-btn' => 'Lưu Hoạt Động', + 'type' => 'Loại Hoạt Động', + 'call' => 'Cuộc Gọi', + 'meeting' => 'Cuộc Họp', + 'lunch' => 'Bữa Trưa', + 'schedule_to' => 'Lịch Đến', + 'schedule_from' => 'Lịch Từ', + 'location' => 'Địa Điểm', + 'comment' => 'Ghi Chú', + 'lead' => 'Người Dẫn Dắt', + 'participants' => 'Người Tham Gia', + 'general' => 'Chung', + 'persons' => 'Người', + 'no-result-found' => 'Không tìm thấy bản ghi.', + 'users' => 'Người Dùng', + ], + + 'updated' => 'Cập Nhật :attribute', + 'created' => 'Đã Tạo', + 'duration-overlapping' => 'Người tham gia có cuộc họp khác vào thời điểm này. Bạn có muốn tiếp tục không?', + 'create-success' => 'Hoạt động đã được tạo thành công.', + 'update-success' => 'Hoạt động đã được cập nhật thành công.', + 'overlapping-error' => 'Người tham gia có cuộc họp khác vào thời điểm này.', + 'mass-update-success' => 'Các hoạt động đã được cập nhật thành công.', + 'destroy-success' => 'Hoạt động đã được xóa thành công.', + 'delete-failed' => 'Hoạt động không thể bị xóa.', + ], + + 'mail' => [ + 'index' => [ + 'compose' => 'Soạn Thư', + 'draft' => 'Thư Nháp', + 'inbox' => 'Hộp Thư Đến', + 'outbox' => 'Hộp Thư Đi', + 'sent' => 'Đã Gửi', + 'trash' => 'Thùng Rác', + 'compose-mail-btn' => 'Soạn Thư', + 'btn' => 'Thư', + 'mail' => [ + 'title' => 'Soạn Thư', + 'to' => 'Đến', + 'enter-emails' => 'Nhấn enter để thêm email', + 'cc' => 'CC', + 'bcc' => 'BCC', + 'subject' => 'Chủ Đề', + 'send-btn' => 'Gửi', + 'message' => 'Tin Nhắn', + 'draft' => 'Thư Nháp', + ], + + 'datagrid' => [ + 'id' => 'ID', + 'from' => 'Từ', + 'to' => 'Đến', + 'subject' => 'Chủ Đề', + 'tag-name' => 'Tên Thẻ', + 'created-at' => 'Thời Gian Tạo', + 'move-to-inbox' => 'Chuyển Đến Hộp Thư Đến', + 'edit' => 'Chỉnh Sửa', + 'view' => 'Xem', + 'delete' => 'Xóa', + ], + ], + + 'create-success' => 'Email đã được gửi thành công.', + 'update-success' => 'Email đã được cập nhật thành công.', + 'mass-update-success' => 'Các email đã được cập nhật thành công.', + 'delete-success' => 'Email đã được xóa thành công.', + 'delete-failed' => 'Email không thể bị xóa.', + + 'view' => [ + 'title' => 'Thư', + 'subject' => ':subject', + 'link-mail' => 'Liên Kết Thư', + 'to' => 'Đến', + 'cc' => 'CC', + 'bcc' => 'BCC', + 'reply' => 'Trả Lời', + 'reply-all' => 'Trả Lời Tất Cả', + 'forward' => 'Chuyển Tiếp', + 'delete' => 'Xóa', + 'enter-mails' => 'Nhập ID email', + 'rotten-days' => 'Người dẫn dắt đã hỏng trong :days ngày', + 'search-an-existing-lead' => 'Tìm kiếm người dẫn dắt hiện có', + 'search-an-existing-contact' => 'Tìm kiếm liên hệ hiện có', + 'message' => 'Tin Nhắn', + 'add-attachments' => 'Thêm Tệp Đính Kèm', + 'discard' => 'Bỏ Qua', + 'send' => 'Gửi', + 'no-result-found' => 'Không tìm thấy kết quả', + 'add-new-contact' => 'Thêm Liên Hệ Mới', + 'description' => 'Mô Tả', + 'search' => 'Tìm kiếm...', + 'add-new-lead' => 'Thêm Người Dẫn Dắt Mới', + 'create-new-contact' => 'Tạo Liên Hệ Mới', + 'save-contact' => 'Lưu Liên Hệ', + 'create-lead' => 'Tạo Người Dẫn Dắt', + 'linked-contact' => 'Liên Hệ Đã Liên Kết', + 'link-to-contact' => 'Liên Kết Với Liên Hệ', + 'link-to-lead' => 'Liên Kết Với Người Dẫn Dắt', + 'linked-lead' => 'Người Dẫn Dắt Đã Liên Kết', + 'lead-details' => 'Chi Tiết Người Dẫn Dắt', + 'contact-person' => 'Người Liên Hệ', + 'product' => 'Sản Phẩm', + + 'tags' => [ + 'create-success' => 'Thẻ đã được tạo thành công.', + 'destroy-success' => 'Thẻ đã được xóa thành công.', + ], + ], + ], + + 'common' => [ + 'custom-attributes' => [ + 'select-country' => 'Chọn Quốc Gia', + 'select-state' => 'Chọn Bang', + 'state' => 'Bang', + 'city' => 'Thành Phố', + 'postcode' => 'Mã Bưu Chính', + 'work' => 'Công Việc', + 'home' => 'Nhà', + 'add-more' => 'Thêm Nữa', + 'select' => 'Chọn', + 'country' => 'Quốc Gia', + 'address' => 'Địa Chỉ', + ], + ], + + 'leads' => [ + 'create-success' => 'Tạo khách hàng tiềm năng thành công.', + 'update-success' => 'Cập nhật khách hàng tiềm năng thành công.', + 'destroy-success' => 'Xóa khách hàng tiềm năng thành công.', + 'destroy-failed' => 'Không thể xóa khách hàng tiềm năng.', + + 'index' => [ + 'title' => 'Khách Hàng Tiềm Năng', + 'create-btn' => 'Tạo Khách Hàng Tiềm Năng', + + 'datagrid' => [ + 'id' => 'ID', + 'sales-person' => 'Nhân Viên Kinh Doanh', + 'subject' => 'Chủ Đề', + 'source' => 'Nguồn', + 'lead-value' => 'Giá Trị Khách Hàng', + 'lead-type' => 'Loại Khách Hàng', + 'tag-name' => 'Tên Thẻ', + 'contact-person' => 'Người Liên Hệ', + 'stage' => 'Giai Đoạn', + 'rotten-lead' => 'Khách Hàng Tiềm Năng Hết Hạn', + 'expected-close-date' => 'Ngày Dự Kiến Đóng', + 'created-at' => 'Tạo Vào Lúc', + 'no' => 'Không', + 'yes' => 'Có', + 'delete' => 'Xóa', + 'mass-delete' => 'Xóa Hàng Loạt', + 'mass-update' => 'Cập Nhật Hàng Loạt', + ], + + 'kanban' => [ + 'rotten-days' => 'Khách hàng tiềm năng đã hết hạn trong :days ngày', + 'empty-list' => 'Danh sách khách hàng tiềm năng của bạn trống', + 'empty-list-description' => 'Tạo một khách hàng tiềm năng để tổ chức các mục tiêu của bạn.', + 'create-lead-btn' => 'Tạo Khách Hàng Tiềm Năng', + + 'columns' => [ + 'contact-person' => 'Người Liên Hệ', + 'id' => 'ID', + 'lead-type' => 'Loại Khách Hàng', + 'lead-value' => 'Giá Trị Khách Hàng', + 'sales-person' => 'Nhân Viên Kinh Doanh', + 'source' => 'Nguồn', + 'title' => 'Tiêu Đề', + 'tags' => 'Thẻ', + 'expected-close-date' => 'Ngày Dự Kiến Đóng', + 'created-at' => 'Tạo Vào Lúc', + ], + + 'toolbar' => [ + 'search' => [ + 'title' => 'Tìm Kiếm', + ], + + 'filters' => [ + 'apply-filters' => 'Áp Dụng Bộ Lọc', + 'clear-all' => 'Xóa Tất Cả', + 'filter' => 'Bộ Lọc', + 'filters' => 'Bộ Lọc', + 'select' => 'Chọn', + ], + ], + ], + + 'view-switcher' => [ + 'all-pipelines' => 'Tất Cả Các Quy Trình', + 'create-new-pipeline' => 'Tạo Quy Trình Mới', + ], + ], + + 'create' => [ + 'title' => 'Tạo Khách Hàng Tiềm Năng', + 'save-btn' => 'Lưu', + 'details' => 'Chi Tiết', + 'details-info' => 'Nhập Thông Tin Cơ Bản Của Khách Hàng Tiềm Năng', + 'contact-person' => 'Người Liên Hệ', + 'contact-info' => 'Thông Tin Về Người Liên Hệ', + 'products' => 'Sản Phẩm', + 'products-info' => 'Thông Tin Về Sản Phẩm', + ], + + 'edit' => [ + 'title' => 'Chỉnh Sửa Khách Hàng Tiềm Năng', + 'save-btn' => 'Lưu', + 'details' => 'Chi Tiết', + 'details-info' => 'Nhập Thông Tin Cơ Bản Của Khách Hàng Tiềm Năng', + 'contact-person' => 'Người Liên Hệ', + 'contact-info' => 'Thông Tin Về Người Liên Hệ', + 'products' => 'Sản Phẩm', + 'products-info' => 'Thông Tin Về Sản Phẩm', + ], + + 'common' => [ + 'contact' => [ + 'name' => 'Tên', + 'email' => 'Email', + 'contact-number' => 'Số Liên Lạc', + 'organization' => 'Tổ Chức', + ], + + 'products' => [ + 'product-name' => 'Tên Sản Phẩm', + 'quantity' => 'Số Lượng', + 'price' => 'Giá', + 'amount' => 'Tổng Tiền', + 'action' => 'Hành Động', + 'add-more' => 'Thêm Nữa', + 'total' => 'Tổng Cộng', + ], + ], + + 'view' => [ + 'title' => 'Khách Hàng Tiềm Năng: :title', + 'rotten-days' => ':days Ngày', + + 'tabs' => [ + 'description' => 'Mô Tả', + 'products' => 'Sản Phẩm', + 'quotes' => 'Báo Giá', + ], + + 'attributes' => [ + 'title' => 'Về Khách Hàng Tiềm Năng', + ], + + 'quotes'=> [ + 'subject' => 'Chủ Đề', + 'expired-at' => 'Hết Hạn Vào', + 'sub-total' => 'Tạm Tính', + 'discount' => 'Giảm Giá', + 'tax' => 'Thuế', + 'adjustment' => 'Điều Chỉnh', + 'grand-total' => 'Tổng Cộng', + 'delete' => 'Xóa', + 'edit' => 'Chỉnh Sửa', + 'download' => 'Tải Xuống', + 'destroy-success' => 'Xóa báo giá thành công.', + 'empty-title' => 'Không Có Báo Giá', + 'empty-info' => 'Không Có Báo Giá Cho Khách Hàng Tiềm Năng Này', + 'add-btn' => 'Thêm Báo Giá', + ], + + 'products' => [ + 'product-name' => 'Tên Sản Phẩm', + 'quantity' => 'Số Lượng', + 'price' => 'Giá', + 'amount' => 'Tổng Tiền', + 'action' => 'Hành Động', + 'add-more' => 'Thêm Nữa', + 'total' => 'Tổng Cộng', + 'empty-title' => 'Không Có Sản Phẩm', + 'empty-info' => 'Không Có Sản Phẩm Cho Khách Hàng Tiềm Năng Này', + 'add-product' => 'Thêm Sản Phẩm', + ], + + 'persons' => [ + 'title' => 'Về Người Liên Hệ', + 'job-title' => ':job_title tại :organization', + ], + + 'stages' => [ + 'won-lost' => 'Thắng/Thua', + 'won' => 'Thắng', + 'lost' => 'Thua', + 'need-more-info' => 'Cần Thêm Thông Tin', + 'closed-at' => 'Đóng Vào', + 'won-value' => 'Giá Trị Thắng', + 'lost-reason' => 'Lý Do Thua', + 'save-btn' => 'Lưu', + ], + + 'tags' => [ + 'create-success' => 'Tạo thẻ thành công.', + 'destroy-success' => 'Xóa thẻ thành công.', + ], + ], + ], + + 'configuration' => [ + 'index' => [ + 'back' => 'Quay Lại', + 'save-btn' => 'Lưu Cấu Hình', + 'save-success' => 'Lưu Cấu Hình Thành Công.', + 'search' => 'Tìm Kiếm', + 'title' => 'Cấu Hình', + + 'general' => [ + 'title' => 'Chung', + 'info' => 'Cấu Hình Chung', + + 'general' => [ + 'title' => 'Chung', + 'info' => 'Cập nhật cài đặt chung của bạn tại đây.', + 'locale-settings' => [ + 'title' => 'Cài Đặt Ngôn Ngữ', + 'title-info' => 'Định nghĩa ngôn ngữ sử dụng trong giao diện người dùng, chẳng hạn như tiếng Anh (en), tiếng Pháp (fr) hoặc tiếng Nhật (ja).', + ], + ], + ], + ], + ], + + 'dashboard' => [ + 'index' => [ + 'title' => 'Bảng Điều Khiển', + + 'revenue' => [ + 'lost-revenue' => 'Doanh Thu Bị Mất', + 'won-revenue' => 'Doanh Thu Đã Đạt', + ], + + 'over-all' => [ + 'average-lead-value' => 'Giá Trị Lead Trung Bình', + 'total-leads' => 'Tổng Số Lead', + 'average-leads-per-day' => 'Số Lead Trung Bình Mỗi Ngày', + 'total-quotations' => 'Tổng Số Báo Giá', + 'total-persons' => 'Tổng Số Người Liên Hệ', + 'total-organizations' => 'Tổng Số Tổ Chức', + ], + + 'total-leads' => [ + 'title' => 'Leads', + 'total' => 'Tổng Số Lead', + 'won' => 'Lead Đã Đạt', + 'lost' => 'Lead Bị Mất', + ], + + 'revenue-by-sources' => [ + 'title' => 'Doanh Thu Theo Nguồn', + 'empty-title' => 'Không Có Dữ Liệu', + 'empty-info' => 'Không có dữ liệu cho khoảng thời gian được chọn', + ], + + 'revenue-by-types' => [ + 'title' => 'Doanh Thu Theo Loại', + 'empty-title' => 'Không Có Dữ Liệu', + 'empty-info' => 'Không có dữ liệu cho khoảng thời gian được chọn', + ], + + 'top-selling-products' => [ + 'title' => 'Sản Phẩm Bán Chạy Nhất', + 'empty-title' => 'Không Tìm Thấy Sản Phẩm', + 'empty-info' => 'Không có sản phẩm nào cho khoảng thời gian được chọn', + ], + + 'top-persons' => [ + 'title' => 'Người Liên Hệ Hàng Đầu', + 'empty-title' => 'Không Tìm Thấy Người Liên Hệ', + 'empty-info' => 'Không có người liên hệ nào cho khoảng thời gian được chọn', + ], + + 'open-leads-by-states' => [ + 'title' => 'Leads Mở Theo Tình Trạng', + 'empty-title' => 'Không Có Dữ Liệu', + 'empty-info' => 'Không có dữ liệu cho khoảng thời gian được chọn', + ], + ], + ], + + 'layouts' => [ + 'app-version' => 'Phiên Bản : :version', + 'dashboard' => 'Bảng Điều Khiển', + 'leads' => 'Leads', + 'quotes' => 'Báo Giá', + 'quote' => 'Báo Giá', + 'mail' => [ + 'title' => 'Thư', + 'compose' => 'Soạn Thư', + 'inbox' => 'Hộp Thư Đến', + 'draft' => 'Thư Nháp', + 'outbox' => 'Hộp Thư Đi', + 'sent' => 'Đã Gửi', + 'trash' => 'Thùng Rác', + 'setting' => 'Cài Đặt', + ], + 'activities' => 'Hoạt Động', + 'contacts' => 'Liên Hệ', + 'persons' => 'Người Liên Hệ', + 'person' => 'Người Liên Hệ', + 'organizations' => 'Tổ Chức', + 'organization' => 'Tổ Chức', + 'products' => 'Sản Phẩm', + 'product' => 'Sản Phẩm', + 'settings' => 'Cài Đặt', + 'user' => 'Người Dùng', + 'user-info' => 'Quản lý tất cả người dùng và quyền hạn của họ trong CRM, những gì họ được phép làm.', + 'groups' => 'Nhóm', + 'groups-info' => 'Thêm, chỉnh sửa hoặc xóa nhóm khỏi CRM', + 'roles' => 'Vai Trò', + 'role' => 'Vai Trò', + 'roles-info' => 'Thêm, chỉnh sửa hoặc xóa vai trò khỏi CRM', + 'users' => 'Người Dùng', + 'users-info' => 'Thêm, chỉnh sửa hoặc xóa người dùng khỏi CRM', + 'lead' => 'Lead', + 'lead-info' => 'Quản lý tất cả các cài đặt liên quan đến leads trong CRM', + 'pipelines' => 'Pipelines', + 'pipelines-info' => 'Thêm, chỉnh sửa hoặc xóa pipelines khỏi CRM', + 'sources' => 'Nguồn', + 'sources-info' => 'Thêm, chỉnh sửa hoặc xóa nguồn khỏi CRM', + 'types' => 'Loại', + 'types-info' => 'Thêm, chỉnh sửa hoặc xóa loại khỏi CRM', + 'automation' => 'Tự Động Hóa', + 'automation-info' => 'Quản lý tất cả các cài đặt liên quan đến tự động hóa trong CRM', + 'attributes' => 'Thuộc Tính', + 'attribute' => 'Thuộc Tính', + 'attributes-info' => 'Thêm, chỉnh sửa hoặc xóa thuộc tính khỏi CRM', + 'email-templates' => 'Mẫu Email', + 'email' => 'Email', + 'email-templates-info' => 'Thêm, chỉnh sửa hoặc xóa mẫu email khỏi CRM', + 'workflows' => 'Quy Trình', + 'workflows-info' => 'Thêm, chỉnh sửa hoặc xóa quy trình khỏi CRM', + 'other-settings' => 'Cài Đặt Khác', + 'other-settings-info' => 'Quản lý tất cả các cài đặt khác trong CRM', + 'tags' => 'Thẻ', + 'tags-info' => 'Thêm, chỉnh sửa hoặc xóa thẻ khỏi CRM', + 'my-account' => 'Tài Khoản Của Tôi', + 'sign-out' => 'Đăng Xuất', + 'back' => 'Quay Lại', + 'name' => 'Tên', + 'configuration' => 'Cấu Hình', + 'howdy' => 'Xin Chào!', + 'warehouses' => 'Kho Hàng', + 'warehouse' => 'Kho Hàng', + 'warehouses-info' => 'Thêm, chỉnh sửa hoặc xóa kho hàng khỏi CRM', + ], + + 'user' => [ + 'account' => [ + 'name' => 'Tên', + 'email' => 'Email', + 'password' => 'Mật Khẩu', + 'my_account' => 'Tài Khoản Của Tôi', + 'update_details' => 'Cập Nhật Thông Tin', + 'current_password' => 'Mật Khẩu Hiện Tại', + 'confirm_password' => 'Xác Nhận Mật Khẩu', + 'password-match' => 'Mật khẩu hiện tại không khớp.', + 'account-save' => 'Thay đổi tài khoản đã được lưu thành công.', + 'permission-denied' => 'Từ Chối Quyền Truy Cập', + 'remove-image' => 'Xóa Hình Ảnh', + 'upload_image_pix' => 'Tải Lên Ảnh Hồ Sơ (100px x 100px)', + 'upload_image_format' => 'Định Dạng PNG hoặc JPG', + 'image_upload_message' => 'Chỉ chấp nhận hình ảnh (.jpeg, .jpg, .png, ..).', + ], + ], + + 'emails' => [ + 'common' => [ + 'dear' => 'Kính gửi :name', + 'cheers' => 'Trân trọng,
Đội ngũ :app_name', + + 'user' => [ + 'dear' => 'Kính gửi :username', + 'create-subject' => 'Bạn đã được thêm làm thành viên.', + 'create-body' => 'Chúc mừng! Bạn đã trở thành thành viên của đội ngũ chúng tôi.', + + 'forget-password' => [ + 'subject' => 'Khách hàng yêu cầu đặt lại mật khẩu', + 'dear' => 'Kính gửi :username', + 'reset-password' => 'Đặt Lại Mật Khẩu', + 'info' => 'Bạn nhận được email này vì chúng tôi đã nhận được yêu cầu đặt lại mật khẩu cho tài khoản của bạn.', + 'final-summary' => 'Nếu bạn không yêu cầu đặt lại mật khẩu, không cần thực hiện thêm hành động nào.', + 'thanks' => 'Cảm ơn!', + ], + ], + ], + ], + + 'errors' => [ + '401' => 'Bạn không được phép truy cập trang này', + ], +]; diff --git a/packages/Webkul/Admin/src/Resources/views/activities/edit.blade.php b/packages/Webkul/Admin/src/Resources/views/activities/edit.blade.php index 74e42cd02..2edf2ff89 100644 --- a/packages/Webkul/Admin/src/Resources/views/activities/edit.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/activities/edit.blade.php @@ -49,7 +49,7 @@ class="primary-button"
-
+
{!! view_render_event('admin.activities.edit.form_controls.before') !!} @@ -259,7 +259,7 @@ class="w-full px-1 py-1 dark:bg-gray-900 dark:text-gray-300" - + @lang("admin::app.common.custom-attributes.add-more") + + + @lang("admin::app.common.custom-attributes.add-more") diff --git a/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/lookup.blade.php b/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/lookup.blade.php index edbed53dd..5290b7e97 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/lookup.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/lookup.blade.php @@ -8,10 +8,18 @@ :validations="'{{ $validations }}'" :value="{{ json_encode($lookUpEntityData)}}" > - +
+ +
+ @lang('admin::app.components.attributes.lookup.click-to-add') + + +
+ + +
+
+
@endif diff --git a/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/phone.blade.php b/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/phone.blade.php index 297840ba2..a24e4d9e4 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/phone.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/attributes/edit/phone.blade.php @@ -7,19 +7,21 @@
-
- - +@lang("admin::app.common.custom-attributes.add-more") + + + + @lang("admin::app.common.custom-attributes.add-more") @endif @@ -46,7 +48,7 @@ class="rounded-r-none" type="select" ::id="attribute.code" ::name="`${attribute['code']}[${index}][label]`" - class="rounded-l-none ltr:pr-8 rtl:pl-8 ltr:mr-6 rtl:ml-6" + class="rounded-l-none ltr:mr-6 ltr:pr-8 rtl:ml-6 rtl:pl-8" rules="required" ::label="attribute.name" v-model="contactNumber['label']" @@ -69,10 +71,12 @@ class="icon-delete ml-1 cursor-pointer rounded-md p-1.5 text-2xl transition-all - + @lang("admin::app.common.custom-attributes.add-more") + + + @lang("admin::app.common.custom-attributes.add-more") diff --git a/packages/Webkul/Admin/src/Resources/views/components/attributes/view/text.blade.php b/packages/Webkul/Admin/src/Resources/views/components/attributes/view/text.blade.php index 9c4315218..b66f5b87a 100755 --- a/packages/Webkul/Admin/src/Resources/views/components/attributes/view/text.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/attributes/view/text.blade.php @@ -1,7 +1,7 @@ -
+
@pushOnce('scripts') @@ -8,10 +8,10 @@ id="v-avatar-template" >
- @{{ name.split(' ').map(word => word[0].toUpperCase()).join('') }} + @{{ name.split(' ').slice(0, 2).map(word => word[0].toUpperCase()).join('') }}
diff --git a/packages/Webkul/Admin/src/Resources/views/components/datagrid/table.blade.php b/packages/Webkul/Admin/src/Resources/views/components/datagrid/table.blade.php index 1eb3220d8..8f622c492 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/datagrid/table.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/datagrid/table.blade.php @@ -49,10 +49,10 @@ class="peer hidden" > @@ -62,12 +62,12 @@ class="icon-checkbox-outline cursor-pointer rounded-md text-2xl text-gray-500 pe diff --git a/packages/Webkul/Admin/src/Resources/views/components/datagrid/toolbar/filter.blade.php b/packages/Webkul/Admin/src/Resources/views/components/datagrid/toolbar/filter.blade.php index 168f7eb66..fb2ccae6a 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/datagrid/toolbar/filter.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/datagrid/toolbar/filter.blade.php @@ -777,13 +777,11 @@ class="flex flex-col gap-2" @{{ getFormattedDates(column) }} -
- - -
+ +

@@ -799,13 +797,11 @@ class="flex items-center rounded bg-gray-600 px-2 py-1 font-semibold text-white" @{{ appliedColumnValue }}
-
- - -
+ +

@@ -816,13 +812,11 @@ class="icon-cross-large cursor-pointer text-lg text-white ltr:ml-1.5 rtl:mr-1.5" @{{ column.value }} -
- - -
+ +

@@ -1433,7 +1427,7 @@ class="text-sm text-gray-400 dark:text-gray-400" - +
    diff --git a/packages/Webkul/Admin/src/Resources/views/components/dropdown/index.blade.php b/packages/Webkul/Admin/src/Resources/views/components/dropdown/index.blade.php index 1499e0d4d..01e77ce9c 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/dropdown/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/dropdown/index.blade.php @@ -12,7 +12,7 @@ @isset($content) - - + @lang("admin::app.common.custom-attributes.add-more") - + + + @lang("admin::app.common.custom-attributes.add-more") + @@ -259,8 +262,8 @@ class="primary-button justify-center" }); }, - remove(email) { - this.emails = this.emails.filter(email => email !== email); + remove(contactEmail) { + this.emails = this.emails.filter(email => email !== contactEmail); }, extendValidations() { diff --git a/packages/Webkul/Admin/src/Resources/views/components/form/control-group/controls/inline/phone.blade.php b/packages/Webkul/Admin/src/Resources/views/components/form/control-group/controls/inline/phone.blade.php index 252845359..b92697cd4 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/form/control-group/controls/inline/phone.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/form/control-group/controls/inline/phone.blade.php @@ -105,12 +105,15 @@ class="icon-delete ml-1 cursor-pointer rounded-md p-1.5 text-2xl transition-all - - + @lang("admin::app.common.custom-attributes.add-more") - + + + @lang("admin::app.common.custom-attributes.add-more") + diff --git a/packages/Webkul/Admin/src/Resources/views/components/layouts/anonymous.blade.php b/packages/Webkul/Admin/src/Resources/views/components/layouts/anonymous.blade.php index 4827ed2e6..21a9911ff 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/layouts/anonymous.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/layouts/anonymous.blade.php @@ -1,6 +1,7 @@ diff --git a/packages/Webkul/Admin/src/Resources/views/components/layouts/header/index.blade.php b/packages/Webkul/Admin/src/Resources/views/components/layouts/header/index.blade.php index af7a382d0..12682d913 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/layouts/header/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/layouts/header/index.blade.php @@ -186,7 +186,7 @@ class="{{ request()->cookie('dark_mode') ? 'icon-light' : 'icon-dark' }} p-1.5 r - + @if (auth()->guard('user')->user()->image)
diff --git a/packages/Webkul/Admin/src/Resources/views/components/spinner/index.blade.php b/packages/Webkul/Admin/src/Resources/views/components/spinner/index.blade.php index e1957489f..ed724bd2c 100644 --- a/packages/Webkul/Admin/src/Resources/views/components/spinner/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/components/spinner/index.blade.php @@ -6,7 +6,7 @@ fill="none" aria-hidden="true" viewBox="0 0 24 24" - {{ $attributes->merge(['class' => 'h-5 w-5 animate-spin']) }} + {{ $attributes->merge(['class' => 'h-5 w-5 animate-spin dark:text-white']) }} > -
+
diff --git a/packages/Webkul/Admin/src/Resources/views/contacts/organizations/create.blade.php b/packages/Webkul/Admin/src/Resources/views/contacts/organizations/create.blade.php index 8fa6a00a3..8c24507f5 100644 --- a/packages/Webkul/Admin/src/Resources/views/contacts/organizations/create.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/contacts/organizations/create.blade.php @@ -47,7 +47,7 @@ class="primary-button"
-
+
{!! view_render_event('admin.contacts.organizations.create.form_controls.before') !!}
-
+
{!! view_render_event('admin.contacts.organizations.edit.form_controls.before') !!} -
+
{!! view_render_event('admin.persons.create.form_controls.before') !!} - - - + + + + {!! view_render_event('admin.persons.index.datagrid.after') !!}
- \ No newline at end of file + + @pushOnce('scripts') + + + + @endPushOnce + diff --git a/packages/Webkul/Admin/src/Resources/views/contacts/persons/view.blade.php b/packages/Webkul/Admin/src/Resources/views/contacts/persons/view.blade.php index cd2555905..e37ccb02f 100644 --- a/packages/Webkul/Admin/src/Resources/views/contacts/persons/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/contacts/persons/view.blade.php @@ -8,7 +8,7 @@ {!! view_render_event('admin.contact.persons.view.left.before', ['person' => $person]) !!} -
+
diff --git a/packages/Webkul/Admin/src/Resources/views/contacts/persons/view/organization.blade.php b/packages/Webkul/Admin/src/Resources/views/contacts/persons/view/organization.blade.php index 623a6d393..14a3727b0 100644 --- a/packages/Webkul/Admin/src/Resources/views/contacts/persons/view/organization.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/contacts/persons/view/organization.blade.php @@ -3,14 +3,13 @@ @if ($person?->organization)

- About Organization + @lang('admin::app.contacts.persons.view.about-organization') - - + >

diff --git a/packages/Webkul/Admin/src/Resources/views/errors/401.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/401.blade.php deleted file mode 100644 index 8cb9ff15e..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/401.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@extends('admin::errors.illustrated-layout') - -@section('title', __('Unauthorized')) -@section('code', '401') -@section('message', __('You don\'t have necessary permissions to perform this action.')) diff --git a/packages/Webkul/Admin/src/Resources/views/errors/403.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/403.blade.php deleted file mode 100644 index 9d75719be..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/403.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@extends('admin::errors.illustrated-layout') - -@section('title', __('Forbidden')) -@section('code', '403') -@section('message', __($exception->getMessage() ?: 'You are forbidden to do this action.')) diff --git a/packages/Webkul/Admin/src/Resources/views/errors/404.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/404.blade.php deleted file mode 100644 index f0f35bf55..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/404.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@extends('admin::errors.illustrated-layout') - -@section('title', __('Page Not Found')) -@section('code', '404') -@section('message', __('We were not able to find the page you are looking for.')) diff --git a/packages/Webkul/Admin/src/Resources/views/errors/419.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/419.blade.php deleted file mode 100644 index 9c8c64d1f..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/419.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@extends('admin::errors.illustrated-layout') - -@section('title', __('Page Expired')) -@section('code', '419') -@section('message', __('This page is expired.')) diff --git a/packages/Webkul/Admin/src/Resources/views/errors/429.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/429.blade.php deleted file mode 100644 index ed03e02af..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/429.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@extends('admin::errors.illustrated-layout') - -@section('title', __('Too Many Requests')) -@section('code', '429') -@section('message', __('You have too many requests.')) diff --git a/packages/Webkul/Admin/src/Resources/views/errors/500.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/500.blade.php deleted file mode 100644 index 7b73b9c22..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/500.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@extends('admin::errors.illustrated-layout') - -@section('title', __('Server Error')) -@section('code', '500') -@section('message', __('Something went wrong, please try again later.')) diff --git a/packages/Webkul/Admin/src/Resources/views/errors/503.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/503.blade.php deleted file mode 100644 index 9bef44f02..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/503.blade.php +++ /dev/null @@ -1,5 +0,0 @@ -@extends('admin::errors.illustrated-layout') - -@section('title', __('Service Unavailable')) -@section('code', '503') -@section('message', __('Service is currently unavailable, please try again later.')) diff --git a/packages/Webkul/Admin/src/Resources/views/errors/illustrated-layout.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/illustrated-layout.blade.php deleted file mode 100644 index a7c7c0b49..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/illustrated-layout.blade.php +++ /dev/null @@ -1,172 +0,0 @@ - - - - - - - @yield('title') - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - - -

@yield('code') - @yield('title')

- -

@yield('message')

- - - -

{{ __('Few of the links which may help you to get back on the track -') }}

- - - - -
-
-
- - diff --git a/packages/Webkul/Admin/src/Resources/views/errors/index.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/index.blade.php new file mode 100644 index 000000000..3dbc17e80 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/views/errors/index.blade.php @@ -0,0 +1,70 @@ + + + + @lang("admin::app.errors.{$errorCode}.title") + + + +
+
+
+ + +
+ {{ $errorCode }} +
+ +

+ @lang("admin::app.errors.{$errorCode}.description") +

+ + + +

+ @lang('admin::app.errors.support', [ + 'link' => 'mailto:support@example.com', + 'email' => 'support@example.com', + 'class' => 'font-semibold text-blue-600 transition-all hover:underline', + ]) +

+
+ +
+ +
+
+
+
diff --git a/packages/Webkul/Admin/src/Resources/views/errors/layout.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/layout.blade.php deleted file mode 100644 index 3543ddaef..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/layout.blade.php +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - @yield('title') - - - - - - - - - - -
-
-
- @yield('message') -
-
-
- - diff --git a/packages/Webkul/Admin/src/Resources/views/errors/minimal.blade.php b/packages/Webkul/Admin/src/Resources/views/errors/minimal.blade.php deleted file mode 100644 index 047bde2c8..000000000 --- a/packages/Webkul/Admin/src/Resources/views/errors/minimal.blade.php +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - @yield('title') - - - - - - - - - - - -
-
-
-
- @yield('code') -
- -
- @yield('message') -
-
-
-
- - diff --git a/packages/Webkul/Admin/src/Resources/views/leads/common/products.blade.php b/packages/Webkul/Admin/src/Resources/views/leads/common/products.blade.php index 1015b993a..c5e3e3256 100644 --- a/packages/Webkul/Admin/src/Resources/views/leads/common/products.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/leads/common/products.blade.php @@ -67,12 +67,15 @@ {!! view_render_event('admin.leads.create.products.form_controls.table.after') !!} - - + @lang('admin::app.leads.common.products.add-more') - + + + @lang('admin::app.leads.common.products.add-more') +
diff --git a/packages/Webkul/Admin/src/Resources/views/leads/index/kanban.blade.php b/packages/Webkul/Admin/src/Resources/views/leads/index/kanban.blade.php index 140f45d28..ae76edaed 100644 --- a/packages/Webkul/Admin/src/Resources/views/leads/index/kanban.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/leads/index/kanban.blade.php @@ -289,8 +289,8 @@ class="rounded-xl bg-gray-200 px-2 py-1 text-xs font-medium dark:bg-gray-800" this.get() .then(response => { - for (let [stageId, data] of Object.entries(response.data)) { - this.stageLeads[stageId] = data; + for (let [sortOrder, data] of Object.entries(response.data)) { + this.stageLeads[sortOrder] = data; } }); @@ -299,9 +299,9 @@ class="rounded-xl bg-gray-200 px-2 py-1 text-xs font-medium dark:bg-gray-800" } this.get() - .then(response => { - for (let [stageId, data] of Object.entries(response.data)) { - this.stageLeads[stageId] = data; + .then(response => { + for (let [sortOrder, data] of Object.entries(response.data)) { + this.stageLeads[sortOrder] = data; } }); }, @@ -377,8 +377,8 @@ class="rounded-xl bg-gray-200 px-2 py-1 text-xs font-medium dark:bg-gray-800" this.get() .then(response => { - for (let [stageId, data] of Object.entries(response.data)) { - this.stageLeads[stageId] = data; + for (let [sortOrder, data] of Object.entries(response.data)) { + this.stageLeads[sortOrder] = data; } }); }, @@ -397,8 +397,8 @@ class="rounded-xl bg-gray-200 px-2 py-1 text-xs font-medium dark:bg-gray-800" this.get() .then(response => { - for (let [stageId, data] of Object.entries(response.data)) { - this.stageLeads[stageId] = data; + for (let [sortOrder, data] of Object.entries(response.data)) { + this.stageLeads[sortOrder] = data; } }); }, @@ -412,13 +412,13 @@ class="rounded-xl bg-gray-200 px-2 py-1 text-xs font-medium dark:bg-gray-800" append(params) { this.get(params) .then(response => { - for (let [stageId, data] of Object.entries(response.data)) { - if (! this.stageLeads[stageId]) { - this.stageLeads[stageId] = data; + for (let [sortOrder, data] of Object.entries(response.data)) { + if (! this.stageLeads[sortOrder]) { + this.stageLeads[sortOrder] = data; } else { - this.stageLeads[stageId].leads.data = this.stageLeads[stageId].leads.data.concat(data.leads.data); + this.stageLeads[sortOrder].leads.data = this.stageLeads[sortOrder].leads.data.concat(data.leads.data); - this.stageLeads[stageId].leads.meta = data.leads.meta; + this.stageLeads[sortOrder].leads.meta = data.leads.meta; } } }); @@ -432,17 +432,21 @@ class="rounded-xl bg-gray-200 px-2 py-1 text-xs font-medium dark:bg-gray-800" * @returns {void} */ updateStage: function (stage, event) { + if (event.moved) { + return; + } + if (event.removed) { stage.lead_value = parseFloat(stage.lead_value) - parseFloat(event.removed.element.lead_value); - this.stageLeads[stage.id].leads.meta.total = this.stageLeads[stage.id].leads.meta.total - 1; + this.stageLeads[stage.sort_order].leads.meta.total = this.stageLeads[stage.sort_order].leads.meta.total - 1; return; } stage.lead_value = parseFloat(stage.lead_value) + parseFloat(event.added.element.lead_value); - this.stageLeads[stage.id].leads.meta.total = this.stageLeads[stage.id].leads.meta.total + 1; + this.stageLeads[stage.sort_order].leads.meta.total = this.stageLeads[stage.sort_order].leads.meta.total + 1; this.$axios .put("{{ route('admin.leads.stage.update', 'replace') }}".replace('replace', event.added.element.id), { @@ -464,20 +468,20 @@ class="rounded-xl bg-gray-200 px-2 py-1 text-xs font-medium dark:bg-gray-800" * @returns {void} */ handleScroll(stage, event) { - const bottom = event.target.scrollHeight - event.target.scrollTop === event.target.clientHeight + const bottom = event.target.scrollHeight - event.target.scrollTop === event.target.clientHeight; if (! bottom) { return; } - if (this.stageLeads[stage.id].leads.meta.current_page == this.stageLeads[stage.id].leads.meta.last_page) { + if (this.stageLeads[stage.sort_order].leads.meta.current_page == this.stageLeads[stage.sort_order].leads.meta.last_page) { return; } this.append({ pipeline_stage_id: stage.id, pipeline_id: stage.lead_pipeline_id, - page: this.stageLeads[stage.id].leads.meta.current_page + 1, + page: this.stageLeads[stage.sort_order].leads.meta.current_page + 1, limit: 10, }); }, diff --git a/packages/Webkul/Admin/src/Resources/views/leads/index/kanban/filter.blade.php b/packages/Webkul/Admin/src/Resources/views/leads/index/kanban/filter.blade.php index 8862a0966..a45c31cdd 100644 --- a/packages/Webkul/Admin/src/Resources/views/leads/index/kanban/filter.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/leads/index/kanban/filter.blade.php @@ -188,7 +188,7 @@ class="cursor-pointer rounded-md border px-3 py-2 text-center text-sm font-mediu type="date" :name="`${column.index}[from]`" value="" - class="flex min-h-[39px] w-full rounded-md border px-3 py-2 text-sm text-gray-600 transition-all hover:border-gray-400 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300 dark:hover:border-gray-400" + class="flex min-h-[39px] w-full rounded-md border px-3 py-2 text-sm text-gray-600 transition-all hover:border-gray-400 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300 dark:hover:border-gray-400 ltr:pr-8 rtl:pl-8" :placeholder="column.label" :ref="`${column.index}[from]`" @change="addFilter( @@ -204,7 +204,7 @@ class="flex min-h-[39px] w-full rounded-md border px-3 py-2 text-sm text-gray-60 type="date" :name="`${column.index}[to]`" value="" - class="flex min-h-[39px] w-full rounded-md border px-3 py-2 text-sm text-gray-600 transition-all hover:border-gray-400 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300 dark:hover:border-gray-400" + class="flex min-h-[39px] w-full rounded-md border px-3 py-2 text-sm text-gray-600 transition-all hover:border-gray-400 dark:border-gray-800 dark:bg-gray-900 dark:text-gray-300 dark:hover:border-gray-400 ltr:pr-8 rtl:pl-8" :placeholder="column.label" :ref="`${column.index}[from]`" @change="addFilter( diff --git a/packages/Webkul/Admin/src/Resources/views/leads/view.blade.php b/packages/Webkul/Admin/src/Resources/views/leads/view.blade.php index a0e9ebbd8..451d62016 100644 --- a/packages/Webkul/Admin/src/Resources/views/leads/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/leads/view.blade.php @@ -8,7 +8,7 @@ {!! view_render_event('admin.leads.view.left.before', ['lead' => $lead]) !!} -
+
diff --git a/packages/Webkul/Admin/src/Resources/views/leads/view/products.blade.php b/packages/Webkul/Admin/src/Resources/views/leads/view/products.blade.php index 217a4044e..354528b47 100644 --- a/packages/Webkul/Admin/src/Resources/views/leads/view/products.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/leads/view/products.blade.php @@ -65,12 +65,15 @@
- - + @lang('admin::app.leads.view.products.add-more') - + + + @lang('admin::app.leads.view.products.add-more') +
{!! view_render_event('admin.leads.view.products.table.add_more.after', ['lead' => $lead]) !!} diff --git a/packages/Webkul/Admin/src/Resources/views/mail/index.blade.php b/packages/Webkul/Admin/src/Resources/views/mail/index.blade.php index 9f7264290..5ad4fdbbc 100644 --- a/packages/Webkul/Admin/src/Resources/views/mail/index.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/mail/index.blade.php @@ -28,7 +28,7 @@
- {!! view_render_event('admin.mail.create.breadcrumbs.before') !!} + {!! view_render_event('admin.mail.create.compose_mail_btn.before') !!} @if (bouncer()->hasPermission('mail.compose')) @@ -41,7 +41,7 @@ class="primary-button" @endif - {!! view_render_event('admin.mail.create.breadcrumbs.after') !!} + {!! view_render_event('admin.mail.create.compose_mail_btn.after') !!}
diff --git a/packages/Webkul/Admin/src/Resources/views/mail/view.blade.php b/packages/Webkul/Admin/src/Resources/views/mail/view.blade.php index c4f8cb9ac..b1dcb1eff 100644 --- a/packages/Webkul/Admin/src/Resources/views/mail/view.blade.php +++ b/packages/Webkul/Admin/src/Resources/views/mail/view.blade.php @@ -329,7 +329,7 @@ class="flex cursor-pointer items-center gap-2 text-brandColor" {!! view_render_event('admin.mail.view.form.before', ['email' => $email]) !!} -
+
-
+
@lang('admin::app.mail.view.cc') @lang('admin::app.mail.view.bcc') @@ -446,13 +446,13 @@ class="cursor-pointer font-medium hover:underline" -
+ {{--
--}}
@@ -634,12 +650,15 @@ class="px-4 py-2 text-gray-800 dark:text-gray-300" @if (bouncer()->hasPermission('contacts.persons.create')) -
- + @lang('admin::app.mail.view.add-new-contact') -
+ + + @lang('admin::app.mail.view.add-new-contact') + @endif
@@ -658,7 +677,7 @@ class="flex cursor-pointer items-center gap-2 border-t border-gray-200 p-2 text-