diff --git a/docs/core/local-development.md b/docs/core/local-development.md index f3cf643e91..c5ec42339e 100644 --- a/docs/core/local-development.md +++ b/docs/core/local-development.md @@ -45,6 +45,11 @@ Update your `composer.json` file similar to the following. } ```` +Ensure minimum stability is set for development +```json + "minimum-stability": "dev", +```` + Run `composer update` from your Laravel application's root directory and fingers crossed you're all up and running,. ```sh diff --git a/docs/core/reference/products.md b/docs/core/reference/products.md index 252ce776e2..94e663f2cb 100644 --- a/docs/core/reference/products.md +++ b/docs/core/reference/products.md @@ -35,13 +35,13 @@ group, or you can state which dates they should be active for (as long as the cu ```php // Will schedule for this product to be enabled in 14 days for this customer group. -$product->schedule($customerGroup, now()->addDays(14)); +$product->scheduleCustomerGroup($customerGroup, now()->addDays(14)); // Schedule the product to be enabled straight away -$product->schedule($customerGroup); +$product->scheduleCustomerGroup($customerGroup); // The schedule method will accept an array or collection of customer groups. -$product->schedule(CustomerGroup::get()); +$product->scheduleCustomerGroup(CustomerGroup::get()); ``` ### Retrieving products for a customer group diff --git a/packages/admin/resources/lang/es/actions.php b/packages/admin/resources/lang/es/actions.php new file mode 100644 index 0000000000..fe47f95174 --- /dev/null +++ b/packages/admin/resources/lang/es/actions.php @@ -0,0 +1,46 @@ + [ + 'create_root' => [ + 'label' => 'Crear colección raíz', + ], + 'create_child' => [ + 'label' => 'Crear colección secundaria', + ], + 'move' => [ + 'label' => 'Mover colección', + ], + 'delete' => [ + 'label' => 'Eliminar', + ], + ], + 'orders' => [ + 'update_status' => [ + 'label' => 'Actualizar estado', + 'wizard' => [ + 'step_one' => [ + 'label' => 'Estado', + ], + 'step_two' => [ + 'label' => 'Correos y notificaciones', + 'no_mailers' => 'No hay correos disponibles para este estado.', + ], + 'step_three' => [ + 'label' => 'Previsualizar y guardar', + 'no_mailers' => 'No se han seleccionado correos para la previsualización.', + ], + ], + 'notification' => [ + 'label' => 'Estado del pedido actualizado', + ], + 'billing_email' => [ + 'label' => 'Correo de facturación', + ], + 'shipping_email' => [ + 'label' => 'Correo de envío', + ], + ], + + ], +]; diff --git a/packages/admin/resources/lang/es/activity.php b/packages/admin/resources/lang/es/activity.php new file mode 100644 index 0000000000..7e4aaf9ddc --- /dev/null +++ b/packages/admin/resources/lang/es/activity.php @@ -0,0 +1,29 @@ + 'Actividad', + + 'plural_label' => 'Actividades', + + 'table' => [ + 'subject' => 'Asunto', + 'description' => 'Descripción', + 'log' => 'Registro', + 'logged_at' => 'Registrado en', + 'event' => 'Evento', + 'logged_from' => 'Registrado desde', + 'logged_until' => 'Registrado hasta', + ], + + 'form' => [ + 'causer_type' => 'Tipo de causante', + 'causer_id' => 'ID del causante', + 'subject_type' => 'Tipo de asunto', + 'subject_id' => 'ID del asunto', + 'description' => 'Descripción', + 'attributes' => 'Atributos', + 'old' => 'Antiguo', + ], + +]; diff --git a/packages/admin/resources/lang/es/address.php b/packages/admin/resources/lang/es/address.php new file mode 100644 index 0000000000..424a6f7088 --- /dev/null +++ b/packages/admin/resources/lang/es/address.php @@ -0,0 +1,93 @@ + 'Dirección', + + 'plural_label' => 'Direcciones', + + 'table' => [ + 'title' => [ + 'label' => 'Título', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'company_name' => [ + 'label' => 'Nombre de la empresa', + ], + 'line_one' => [ + 'label' => 'Dirección', + ], + 'line_two' => [ + 'label' => 'Línea Dos', + ], + 'line_three' => [ + 'label' => 'Línea Tres', + ], + 'city' => [ + 'label' => 'Ciudad', + ], + 'country_id' => [ + 'label' => 'País', + ], + 'state' => [ + 'label' => 'Estado/Provincia', + ], + 'postcode' => [ + 'label' => 'Código postal', + ], + 'contact_email' => [ + 'label' => 'Correo de contacto', + ], + 'contact_phone' => [ + 'label' => 'Teléfono de contacto', + ], + ], + + 'form' => [ + 'title' => [ + 'label' => 'Título', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'company_name' => [ + 'label' => 'Nombre de la empresa', + ], + 'line_one' => [ + 'label' => 'Línea Uno', + ], + 'line_two' => [ + 'label' => 'Línea Dos', + ], + 'line_three' => [ + 'label' => 'Línea Tres', + ], + 'city' => [ + 'label' => 'Ciudad', + ], + 'country_id' => [ + 'label' => 'País', + ], + 'state' => [ + 'label' => 'Estado/Provincia', + ], + 'postcode' => [ + 'label' => 'Código postal', + ], + 'contact_email' => [ + 'label' => 'Correo de contacto', + ], + 'contact_phone' => [ + 'label' => 'Teléfono de contacto', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/attribute.php b/packages/admin/resources/lang/es/attribute.php new file mode 100644 index 0000000000..5d6945f42f --- /dev/null +++ b/packages/admin/resources/lang/es/attribute.php @@ -0,0 +1,55 @@ + 'Atributo', + + 'plural_label' => 'Atributos', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'description' => [ + 'label' => 'Descripción', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'type' => [ + 'label' => 'Tipo', + ], + ], + + 'form' => [ + 'attributable_type' => [ + 'label' => 'Tipo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'description' => [ + 'label' => 'Descripción', + 'helper' => 'Se usa para mostrar el texto de ayuda debajo de la entrada', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'searchable' => [ + 'label' => 'Buscable', + ], + 'filterable' => [ + 'label' => 'Filtrable', + ], + 'required' => [ + 'label' => 'Requerido', + ], + 'type' => [ + 'label' => 'Tipo', + ], + 'validation_rules' => [ + 'label' => 'Reglas de validación', + 'helper' => 'Reglas para el campo de atributo, ejemplo: min:1|max:10|...', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/attributegroup.php b/packages/admin/resources/lang/es/attributegroup.php new file mode 100644 index 0000000000..785ad2fe8d --- /dev/null +++ b/packages/admin/resources/lang/es/attributegroup.php @@ -0,0 +1,46 @@ + 'Grupo de Atributos', + + 'plural_label' => 'Grupos de Atributos', + + 'table' => [ + 'attributable_type' => [ + 'label' => 'Tipo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'position' => [ + 'label' => 'Posición', + ], + ], + + 'form' => [ + 'attributable_type' => [ + 'label' => 'Tipo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'position' => [ + 'label' => 'Posición', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este grupo de atributos no puede ser eliminado porque tiene atributos asociados.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/auth.php b/packages/admin/resources/lang/es/auth.php new file mode 100644 index 0000000000..5c73f08cce --- /dev/null +++ b/packages/admin/resources/lang/es/auth.php @@ -0,0 +1,32 @@ + 'Administrador', + 'roles.admin.description' => 'Administrador con acceso completo', + 'roles.staff.label' => 'Personal', + 'roles.staff.description' => 'Personal con acceso fundamental', + /** + * Permisos. + */ + 'permissions.settings.label' => 'Configuraciones', + 'permissions.settings.description' => 'Otorga acceso al área de configuraciones del centro', + 'permissions.settings:core.label' => 'Configuraciones Principales', + 'permissions.settings:core.description' => 'Acceso a configuraciones fundamentales de la tienda, como canales, idiomas, monedas, etc.', + 'permissions.settings:manage-staff.label' => 'Gestionar Personal', + 'permissions.settings:manage-staff.description' => 'Permite al miembro del personal editar a otros miembros del personal', + 'permissions.settings:manage-attributes.label' => 'Gestionar Atributos', + 'permissions.settings:manage-attributes.description' => 'Permite al miembro del personal editar y crear atributos adicionales', + 'permissions.catalog:manage-products.label' => 'Gestionar Productos', + 'permissions.catalog:manage-products.description' => 'Permite al miembro del personal editar productos, tipos de productos y marcas', + 'permissions.catalog:manage-collections.label' => 'Gestionar Colecciones', + 'permissions.catalog:manage-collections.description' => 'Permite al miembro del personal editar colecciones y sus grupos', + 'permissions.sales:manage-orders.label' => 'Gestionar Pedidos', + 'permissions.sales:manage-orders.description' => 'Permite al miembro del personal gestionar pedidos', + 'permissions.sales:manage-customers.label' => 'Gestionar Clientes', + 'permissions.sales:manage-customers.description' => 'Permite al miembro del personal gestionar clientes', + 'permissions.sales:manage-discounts.label' => 'Gestionar Descuentos', + 'permissions.sales:manage-discounts.description' => 'Permite al miembro del personal gestionar descuentos', +]; diff --git a/packages/admin/resources/lang/es/brand.php b/packages/admin/resources/lang/es/brand.php new file mode 100644 index 0000000000..72bfc11790 --- /dev/null +++ b/packages/admin/resources/lang/es/brand.php @@ -0,0 +1,72 @@ + 'Marca', + + 'plural_label' => 'Marcas', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'products_count' => [ + 'label' => 'N.º de productos', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Esta marca no puede ser eliminada porque tiene productos asociados.', + ], + ], + ], + 'pages' => [ + 'products' => [ + 'label' => 'Productos', + 'actions' => [ + 'attach' => [ + 'label' => 'Asociar un producto', + 'form' => [ + 'record_id' => [ + 'label' => 'Producto', + ], + ], + 'notification' => [ + 'success' => 'Producto asociado a la marca', + ], + ], + 'detach' => [ + 'notification' => [ + 'success' => 'Producto desasociado.', + ], + ], + ], + ], + 'collections' => [ + 'label' => 'Colecciones', + 'table' => [ + 'header_actions' => [ + 'attach' => [ + 'record_select' => [ + 'placeholder' => 'Seleccionar una colección', + ], + ], + ], + ], + 'actions' => [ + 'attach' => [ + 'label' => 'Asociar una colección', + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/channel.php b/packages/admin/resources/lang/es/channel.php new file mode 100644 index 0000000000..1df11a96f2 --- /dev/null +++ b/packages/admin/resources/lang/es/channel.php @@ -0,0 +1,39 @@ + 'Canal', + + 'plural_label' => 'Canales', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'url' => [ + 'label' => 'URL', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'url' => [ + 'label' => 'URL', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/collection.php b/packages/admin/resources/lang/es/collection.php new file mode 100644 index 0000000000..2714530c8c --- /dev/null +++ b/packages/admin/resources/lang/es/collection.php @@ -0,0 +1,45 @@ + 'Colección', + + 'plural_label' => 'Colecciones', + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + + 'pages' => [ + 'children' => [ + 'label' => 'Colecciones Hijas', + 'actions' => [ + 'create_child' => [ + 'label' => 'Crear Colección Hija', + ], + ], + 'table' => [ + 'children_count' => [ + 'label' => 'N.º Hijas', + ], + 'name' => [ + 'label' => 'Nombre', + ], + ], + ], + 'edit' => [ + 'label' => 'Información Básica', + ], + 'products' => [ + 'label' => 'Productos', + 'actions' => [ + 'attach' => [ + 'label' => 'Asociar Producto', + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/collectiongroup.php b/packages/admin/resources/lang/es/collectiongroup.php new file mode 100644 index 0000000000..15fde58348 --- /dev/null +++ b/packages/admin/resources/lang/es/collectiongroup.php @@ -0,0 +1,37 @@ + 'Grupo de Colecciones', + + 'plural_label' => 'Grupos de Colecciones', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'collections_count' => [ + 'label' => 'N.º Colecciones', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este grupo de colecciones no puede ser eliminado porque tiene colecciones asociadas.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/components.php b/packages/admin/resources/lang/es/components.php new file mode 100644 index 0000000000..cb56c5cf4b --- /dev/null +++ b/packages/admin/resources/lang/es/components.php @@ -0,0 +1,109 @@ + [ + 'notification' => [ + 'updated' => 'Etiquetas actualizadas', + ], + ], + + 'activity-log' => [ + 'input' => [ + 'placeholder' => 'Agregar un comentario', + ], + + 'action' => [ + 'add-comment' => 'Agregar Comentario', + ], + + 'system' => 'Sistema', + + 'partials' => [ + 'orders' => [ + 'order_created' => 'Pedido Creado', + + 'status_change' => 'Estado actualizado', + + 'capture' => 'Pago de :amount con tarjeta terminando en :last_four', + + 'authorized' => 'Autorizado de :amount con tarjeta terminando en :last_four', + + 'refund' => 'Reembolso de :amount con tarjeta terminando en :last_four', + + 'address' => ':type actualizado', + + 'billingAddress' => 'Dirección de facturación', + + 'shippingAddress' => 'Dirección de envío', + ], + + 'update' => [ + 'updated' => ':model actualizado', + ], + + 'create' => [ + 'created' => ':model creado', + ], + + 'tags' => [ + 'updated' => 'Etiquetas actualizadas', + 'added' => 'Agregado', + 'removed' => 'Eliminado', + ], + ], + + 'notification' => [ + 'comment_added' => 'Comentario agregado', + ], + ], + + 'forms' => [ + 'youtube' => [ + 'helperText' => 'Ingresa el ID del video de YouTube. ej. dQw4w9WgXcQ', + ], + ], + + 'collection-tree-view' => [ + 'actions' => [ + 'move' => [ + 'form' => [ + 'target_id' => [ + 'label' => 'Colección Padre', + ], + ], + ], + ], + 'notifications' => [ + 'collections-reordered' => [ + 'success' => 'Colecciones Reordenadas', + ], + 'node-expanded' => [ + 'danger' => 'No se pueden cargar las colecciones', + ], + 'delete' => [ + 'danger' => 'No se puede eliminar la colección', + ], + ], + ], + + 'product-options-list' => [ + 'add-option' => [ + 'label' => 'Agregar Opción', + ], + 'delete-option' => [ + 'label' => 'Eliminar Opción', + ], + 'remove-shared-option' => [ + 'label' => 'Eliminar Opción Compartida', + ], + 'add-value' => [ + 'label' => 'Agregar Otro Valor', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'values' => [ + 'label' => 'Valores', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/currency.php b/packages/admin/resources/lang/es/currency.php new file mode 100644 index 0000000000..653a95842b --- /dev/null +++ b/packages/admin/resources/lang/es/currency.php @@ -0,0 +1,51 @@ + 'Moneda', + + 'plural_label' => 'Monedas', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'Código', + ], + 'exchange_rate' => [ + 'label' => 'Tasa de Cambio', + ], + 'decimal_places' => [ + 'label' => 'Decimales', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'Código', + ], + 'exchange_rate' => [ + 'label' => 'Tasa de Cambio', + ], + 'decimal_places' => [ + 'label' => 'Decimales', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/customer.php b/packages/admin/resources/lang/es/customer.php new file mode 100644 index 0000000000..341ac80497 --- /dev/null +++ b/packages/admin/resources/lang/es/customer.php @@ -0,0 +1,63 @@ + 'Cliente', + + 'plural_label' => 'Clientes', + + 'table' => [ + 'full_name' => [ + 'label' => 'Nombre', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'title' => [ + 'label' => 'Título', + ], + 'company_name' => [ + 'label' => 'Nombre de la Empresa', + ], + 'vat_no' => [ + 'label' => 'NIF', + ], + 'account_reference' => [ + 'label' => 'Referencia de Cuenta', + ], + 'new' => [ + 'label' => 'Nuevo', + ], + 'returning' => [ + 'label' => 'Recurrente', + ], + ], + + 'form' => [ + 'title' => [ + 'label' => 'Título', + ], + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'company_name' => [ + 'label' => 'Nombre de la Empresa', + ], + 'account_ref' => [ + 'label' => 'Referencia de Cuenta', + ], + 'vat_no' => [ + 'label' => 'NIF', + ], + 'customer_groups' => [ + 'label' => 'Grupos de Clientes', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/customergroup.php b/packages/admin/resources/lang/es/customergroup.php new file mode 100644 index 0000000000..d8d5c5e0e9 --- /dev/null +++ b/packages/admin/resources/lang/es/customergroup.php @@ -0,0 +1,40 @@ + 'Grupo de Clientes', + + 'plural_label' => 'Grupos de Clientes', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este grupo de clientes no puede ser eliminado ya que hay clientes asociados.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/discount.php b/packages/admin/resources/lang/es/discount.php new file mode 100644 index 0000000000..4f9e051c5f --- /dev/null +++ b/packages/admin/resources/lang/es/discount.php @@ -0,0 +1,324 @@ + 'Descuentos', + 'label' => 'Descuento', + 'form' => [ + 'conditions' => [ + 'heading' => 'Condiciones', + ], + 'buy_x_get_y' => [ + 'heading' => 'Compra X Obtén Y', + ], + 'amount_off' => [ + 'heading' => 'Cantidad Descontada', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Fin', + ], + 'priority' => [ + 'label' => 'Prioridad', + 'helper_text' => 'Los descuentos con mayor prioridad se aplicarán primero.', + 'options' => [ + 'low' => [ + 'label' => 'Baja', + ], + 'medium' => [ + 'label' => 'Media', + ], + 'high' => [ + 'label' => 'Alta', + ], + ], + ], + 'stop' => [ + 'label' => 'Detener otros descuentos después de este', + ], + 'coupon' => [ + 'label' => 'Cupón', + 'helper_text' => 'Introduce el cupón necesario para que se aplique el descuento, si se deja en blanco se aplicará automáticamente.', + ], + 'max_uses' => [ + 'label' => 'Máximo de usos', + 'helper_text' => 'Deja en blanco para usos ilimitados.', + ], + 'max_uses_per_user' => [ + 'label' => 'Máximo de usos por usuario', + 'helper_text' => 'Deja en blanco para usos ilimitados.', + ], + 'minimum_cart_amount' => [ + 'label' => 'Monto Mínimo del Carrito', + ], + 'min_qty' => [ + 'label' => 'Cantidad de Producto', + 'helper_text' => 'Establece cuántos productos calificativos son necesarios para que se aplique el descuento.', + ], + 'reward_qty' => [ + 'label' => 'No. de artículos gratuitos', + 'helper_text' => 'Cuántos de cada artículo tienen descuento.', + ], + 'max_reward_qty' => [ + 'label' => 'Cantidad máxima de recompensa', + 'helper_text' => 'La cantidad máxima de productos que se pueden descontar, independientemente de los criterios.', + ], + 'automatic_rewards' => [ + 'label' => 'Agregar recompensas automáticamente', + 'helper_text' => 'Activa para agregar productos de recompensa cuando no estén presentes en el carrito.', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'status' => [ + 'label' => 'Estado', + \Lunar\Models\Discount::ACTIVE => [ + 'label' => 'Activo', + ], + \Lunar\Models\Discount::PENDING => [ + 'label' => 'Pendiente', + ], + \Lunar\Models\Discount::EXPIRED => [ + 'label' => 'Expirado', + ], + \Lunar\Models\Discount::SCHEDULED => [ + 'label' => 'Programado', + ], + ], + 'type' => [ + 'label' => 'Tipo', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Fin', + ], + ], + 'pages' => [ + 'availability' => [ + 'label' => 'Disponibilidad', + ], + 'limitations' => [ + 'label' => 'Limitaciones', + ], + ], + 'relationmanagers' => [ + 'collections' => [ + 'title' => 'Colecciones', + 'description' => 'Selecciona a qué colecciones se debe limitar este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Adjuntar Colección', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + ], + ], + 'brands' => [ + 'title' => 'Marcas', + 'description' => 'Selecciona a qué marcas se debe limitar este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Adjuntar Marca', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + ], + ], + 'products' => [ + 'title' => 'Productos', + 'description' => 'Selecciona a qué productos se debe limitar este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + ], + ], + 'rewards' => [ + 'title' => 'Recompensas de Productos', + 'description' => 'Selecciona qué productos serán descontados si existen en el carrito y se cumplen las condiciones anteriores.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + ], + ], + 'conditions' => [ + 'title' => 'Condiciones de Producto', + 'description' => 'Selecciona los productos necesarios para que se aplique el descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + ], + ], + 'productvariants' => [ + 'title' => 'Variantes de Productos', + 'description' => 'Selecciona qué variantes de productos se debe limitar a este descuento.', + 'actions' => [ + 'attach' => [ + 'label' => 'Agregar Variante de Producto', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'values' => [ + 'label' => 'Opción(es)', + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Limitación', + ], + 'exclusion' => [ + 'label' => 'Exclusión', + ], + ], + ], + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/fieldtypes.php b/packages/admin/resources/lang/es/fieldtypes.php new file mode 100644 index 0000000000..021935d74c --- /dev/null +++ b/packages/admin/resources/lang/es/fieldtypes.php @@ -0,0 +1,72 @@ + [ + 'label' => 'Desplegable', + 'form' => [ + 'lookups' => [ + 'label' => 'Búsquedas', + 'key_label' => 'Etiqueta', + 'value_label' => 'Valor', + ], + ], + ], + 'listfield' => [ + 'label' => 'Campo de Lista', + ], + 'text' => [ + 'label' => 'Texto', + 'form' => [ + 'richtext' => [ + 'label' => 'Texto Enriquecido', + ], + ], + ], + 'translatedtext' => [ + 'label' => 'Texto Traducido', + 'form' => [ + 'richtext' => [ + 'label' => 'Texto Enriquecido', + ], + 'locales' => 'Locales', + ], + ], + 'toggle' => [ + 'label' => 'Activar/Desactivar', + ], + 'youtube' => [ + 'label' => 'YouTube', + ], + 'vimeo' => [ + 'label' => 'Vimeo', + ], + 'number' => [ + 'label' => 'Número', + 'form' => [ + 'min' => [ + 'label' => 'Mín.', + ], + 'max' => [ + 'label' => 'Máx.', + ], + ], + ], + 'file' => [ + 'label' => 'Archivo', + 'form' => [ + 'file_types' => [ + 'label' => 'Tipos de Archivo Permitidos', + 'placeholder' => 'Nuevo MIME', + ], + 'multiple' => [ + 'label' => 'Permitir Múltiples Archivos', + ], + 'min_files' => [ + 'label' => 'Mín. Archivos', + ], + 'max_files' => [ + 'label' => 'Máx. Archivos', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/global.php b/packages/admin/resources/lang/es/global.php new file mode 100644 index 0000000000..240c2cbecb --- /dev/null +++ b/packages/admin/resources/lang/es/global.php @@ -0,0 +1,12 @@ + [ + 'catalog' => 'Catálogo', + 'sales' => 'Ventas', + 'reports' => 'Informes', + 'settings' => 'Configuraciones', + ], + +]; diff --git a/packages/admin/resources/lang/es/language.php b/packages/admin/resources/lang/es/language.php new file mode 100644 index 0000000000..86a4129959 --- /dev/null +++ b/packages/admin/resources/lang/es/language.php @@ -0,0 +1,33 @@ + 'Idioma', + + 'plural_label' => 'Idiomas', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'Código', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'Código', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/order.php b/packages/admin/resources/lang/es/order.php new file mode 100644 index 0000000000..2aee39a6da --- /dev/null +++ b/packages/admin/resources/lang/es/order.php @@ -0,0 +1,292 @@ + 'Pedido', + + 'plural_label' => 'Pedidos', + + 'breadcrumb' => [ + 'manage' => 'Gestionar', + ], + + 'transactions' => [ + 'capture' => 'Capturado', + 'intent' => 'Intención', + 'refund' => 'Reembolsado', + 'failed' => 'Fallido', + ], + + 'table' => [ + 'status' => [ + 'label' => 'Estado', + ], + 'reference' => [ + 'label' => 'Referencia', + ], + 'customer_reference' => [ + 'label' => 'Referencia del Cliente', + ], + 'customer' => [ + 'label' => 'Cliente', + ], + 'tags' => [ + 'label' => 'Etiquetas', + ], + 'postcode' => [ + 'label' => 'Código Postal', + ], + 'email' => [ + 'label' => 'Correo Electrónico', + 'copy_message' => 'Dirección de correo electrónico copiada', + ], + 'phone' => [ + 'label' => 'Teléfono', + ], + 'total' => [ + 'label' => 'Total', + ], + 'date' => [ + 'label' => 'Fecha', + ], + 'new_customer' => [ + 'label' => 'Tipo de Cliente', + ], + 'placed_after' => [ + 'label' => 'Realizado después de', + ], + 'placed_before' => [ + 'label' => 'Realizado antes de', + ], + ], + + 'form' => [ + 'address' => [ + 'first_name' => [ + 'label' => 'Nombre', + ], + 'last_name' => [ + 'label' => 'Apellido', + ], + 'line_one' => [ + 'label' => 'Dirección Línea 1', + ], + 'line_two' => [ + 'label' => 'Dirección Línea 2', + ], + 'line_three' => [ + 'label' => 'Dirección Línea 3', + ], + 'company_name' => [ + 'label' => 'Nombre de la Empresa', + ], + 'contact_phone' => [ + 'label' => 'Teléfono', + ], + 'contact_email' => [ + 'label' => 'Correo Electrónico', + ], + 'city' => [ + 'label' => 'Ciudad', + ], + 'state' => [ + 'label' => 'Estado / Provincia', + ], + 'postcode' => [ + 'label' => 'Código Postal', + ], + 'country_id' => [ + 'label' => 'País', + ], + ], + + 'reference' => [ + 'label' => 'Referencia', + ], + 'status' => [ + 'label' => 'Estado', + ], + 'transaction' => [ + 'label' => 'Transacción', + ], + 'amount' => [ + 'label' => 'Cantidad', + + 'hint' => [ + 'less_than_total' => 'Está a punto de capturar un monto menor al valor total de la transacción', + ], + ], + + 'notes' => [ + 'label' => 'Notas', + ], + 'confirm' => [ + 'label' => 'Confirmar', + + 'alert' => 'Se requiere confirmación', + + 'hint' => [ + 'capture' => 'Por favor confirme que desea capturar este pago', + 'refund' => 'Por favor confirme que desea reembolsar esta cantidad.', + ], + ], + ], + + 'infolist' => [ + 'notes' => [ + 'label' => 'Notas', + 'placeholder' => 'Sin notas en este pedido', + ], + 'delivery_instructions' => [ + 'label' => 'Instrucciones de Entrega', + ], + 'shipping_total' => [ + 'label' => 'Total de Envío', + ], + 'paid' => [ + 'label' => 'Pagado', + ], + 'refund' => [ + 'label' => 'Reembolso', + ], + 'unit_price' => [ + 'label' => 'Precio Unitario', + ], + 'quantity' => [ + 'label' => 'Cantidad', + ], + 'sub_total' => [ + 'label' => 'Subtotal', + ], + 'discount_total' => [ + 'label' => 'Total de Descuentos', + ], + 'total' => [ + 'label' => 'Total', + ], + 'current_stock_level' => [ + 'message' => 'Nivel de Stock Actual: :count', + ], + 'purchase_stock_level' => [ + 'message' => 'al momento de hacer el pedido: :count', + ], + 'status' => [ + 'label' => 'Estado', + ], + 'reference' => [ + 'label' => 'Referencia', + ], + 'customer_reference' => [ + 'label' => 'Referencia del Cliente', + ], + 'channel' => [ + 'label' => 'Canal', + ], + 'date_created' => [ + 'label' => 'Fecha de Creación', + ], + 'date_placed' => [ + 'label' => 'Fecha de Pedido', + ], + 'new_returning' => [ + 'label' => 'Nuevo / Recurrente', + ], + 'new_customer' => [ + 'label' => 'Nuevo Cliente', + ], + 'returning_customer' => [ + 'label' => 'Cliente Recurrente', + ], + 'shipping_address' => [ + 'label' => 'Dirección de Envío', + ], + 'billing_address' => [ + 'label' => 'Dirección de Facturación', + ], + 'address_not_set' => [ + 'label' => 'No se ha establecido dirección', + ], + 'billing_matches_shipping' => [ + 'label' => 'Igual que la dirección de envío', + ], + 'additional_info' => [ + 'label' => 'Información Adicional', + ], + 'no_additional_info' => [ + 'label' => 'Sin Información Adicional', + ], + 'tags' => [ + 'label' => 'Etiquetas', + ], + 'timeline' => [ + 'label' => 'Cronología', + ], + 'transactions' => [ + 'label' => 'Transacciones', + 'placeholder' => 'Sin transacciones', + ], + 'alert' => [ + 'requires_capture' => 'Este pedido aún requiere que se capture el pago.', + 'partially_refunded' => 'Este pedido ha sido parcialmente reembolsado.', + 'refunded' => 'Este pedido ha sido reembolsado.', + ], + ], + + 'action' => [ + 'bulk_update_status' => [ + 'label' => 'Actualizar Estado', + 'notification' => 'Estado de pedidos actualizado', + ], + 'update_status' => [ + 'new_status' => [ + 'label' => 'Nuevo estado', + ], + 'additional_content' => [ + 'label' => 'Contenido adicional', + ], + 'additional_email_recipient' => [ + 'label' => 'Destinatario adicional de correo electrónico', + 'placeholder' => 'opcional', + ], + ], + 'download_order_pdf' => [ + 'label' => 'Descargar PDF', + 'notification' => 'Descargando PDF del pedido', + ], + 'edit_address' => [ + 'label' => 'Editar', + + 'notification' => [ + 'error' => 'Error', + + 'billing_address' => [ + 'saved' => 'Dirección de facturación guardada', + ], + + 'shipping_address' => [ + 'saved' => 'Dirección de envío guardada', + ], + ], + ], + 'edit_tags' => [ + 'label' => 'Editar', + ], + 'capture_payment' => [ + 'label' => 'Capturar Pago', + + 'notification' => [ + 'error' => 'Hubo un problema con la captura', + 'success' => 'Captura exitosa', + ], + ], + 'refund_payment' => [ + 'label' => 'Reembolsar', + + 'notification' => [ + 'error' => 'Hubo un problema con el reembolso', + 'success' => 'Reembolso exitoso', + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/product.php b/packages/admin/resources/lang/es/product.php new file mode 100644 index 0000000000..f17797c69c --- /dev/null +++ b/packages/admin/resources/lang/es/product.php @@ -0,0 +1,121 @@ + 'Producto', + + 'plural_label' => 'Productos', + + 'status' => [ + 'unpublished' => [ + 'content' => 'Actualmente en estado de borrador, este producto está oculto en todos los canales y grupos de clientes.', + ], + 'availability' => [ + 'customer_groups' => 'Este producto actualmente no está disponible para todos los grupos de clientes.', + 'channels' => 'Este producto actualmente no está disponible para todos los canales.', + ], + ], + + 'table' => [ + 'status' => [ + 'label' => 'Estado', + 'states' => [ + 'deleted' => 'Eliminado', + 'draft' => 'Borrador', + 'published' => 'Publicado', + ], + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'brand' => [ + 'label' => 'Marca', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'stock' => [ + 'label' => 'Stock', + ], + 'producttype' => [ + 'label' => 'Tipo de Producto', + ], + ], + + 'actions' => [ + 'edit_status' => [ + 'label' => 'Actualizar Estado', + 'heading' => 'Actualizar Estado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'brand' => [ + 'label' => 'Marca', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'producttype' => [ + 'label' => 'Tipo de Producto', + ], + 'status' => [ + 'label' => 'Estado', + 'options' => [ + 'published' => [ + 'label' => 'Publicado', + 'description' => 'Este producto estará disponible en todos los grupos de clientes y canales habilitados', + ], + 'draft' => [ + 'label' => 'Borrador', + 'description' => 'Este producto estará oculto en todos los canales y grupos de clientes', + ], + ], + ], + 'tags' => [ + 'label' => 'Etiquetas', + ], + 'collections' => [ + 'label' => 'Colecciones', + ], + ], + + 'pages' => [ + 'availability' => [ + 'label' => 'Disponibilidad', + ], + 'identifiers' => [ + 'label' => 'Identificadores del Producto', + ], + 'inventory' => [ + 'label' => 'Inventario', + ], + 'pricing' => [ + 'form' => [ + 'tax_class_id' => [ + 'label' => 'Clase de Impuesto', + ], + 'tax_ref' => [ + 'label' => 'Referencia de Impuesto', + 'helper_text' => 'Opcional, para integración con sistemas de terceros.', + ], + ], + ], + 'shipping' => [ + 'label' => 'Envío', + ], + 'variants' => [ + 'label' => 'Variantes', + ], + 'collections' => [ + 'label' => 'Colecciones', + ], + 'associations' => [ + 'label' => 'Asociaciones de Productos', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/productoption.php b/packages/admin/resources/lang/es/productoption.php new file mode 100644 index 0000000000..5515f234e3 --- /dev/null +++ b/packages/admin/resources/lang/es/productoption.php @@ -0,0 +1,124 @@ + 'Opción de Producto', + + 'plural_label' => 'Opciones de Producto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'label' => [ + 'label' => 'Etiqueta', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + 'shared' => [ + 'label' => 'Compartido', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'label' => [ + 'label' => 'Etiqueta', + ], + 'handle' => [ + 'label' => 'Identificador', + ], + ], + + 'widgets' => [ + 'product-options' => [ + 'notifications' => [ + 'save-variants' => [ + 'success' => [ + 'title' => 'Variantes de Producto Guardadas', + ], + ], + ], + 'actions' => [ + 'cancel' => [ + 'label' => 'Cancelar', + ], + 'save-options' => [ + 'label' => 'Guardar Opciones', + ], + 'add-shared-option' => [ + 'label' => 'Agregar Opción Compartida', + 'form' => [ + 'product_option' => [ + 'label' => 'Opción de Producto', + ], + 'no_shared_components' => [ + 'label' => 'No hay opciones compartidas disponibles.', + ], + ], + ], + 'add-restricted-option' => [ + 'label' => 'Agregar Opción', + ], + ], + 'options-list' => [ + 'empty' => [ + 'heading' => 'No hay opciones de producto configuradas', + 'description' => 'Agrega una opción de producto compartida o restringida para comenzar a generar algunas variantes.', + ], + ], + 'options-table' => [ + 'title' => 'Opciones de Producto', + 'configure-options' => [ + 'label' => 'Configurar Opciones', + ], + 'table' => [ + 'option' => [ + 'label' => 'Opción', + ], + 'values' => [ + 'label' => 'Valores', + ], + ], + ], + 'variants-table' => [ + 'title' => 'Variantes de Producto', + 'actions' => [ + 'create' => [ + 'label' => 'Crear Variante', + ], + 'edit' => [ + 'label' => 'Editar', + ], + 'delete' => [ + 'label' => 'Eliminar', + ], + ], + 'empty' => [ + 'heading' => 'No Hay Variantes Configuradas', + ], + 'table' => [ + 'new' => [ + 'label' => 'NUEVO', + ], + 'option' => [ + 'label' => 'Opción', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'price' => [ + 'label' => 'Precio', + ], + 'stock' => [ + 'label' => 'Stock', + ], + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/producttype.php b/packages/admin/resources/lang/es/producttype.php new file mode 100644 index 0000000000..6fc2112696 --- /dev/null +++ b/packages/admin/resources/lang/es/producttype.php @@ -0,0 +1,52 @@ + 'Tipo de Producto', + + 'plural_label' => 'Tipos de Producto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'products_count' => [ + 'label' => 'Cantidad de Productos', + ], + 'product_attributes_count' => [ + 'label' => 'Atributos de Producto', + ], + 'variant_attributes_count' => [ + 'label' => 'Atributos de Variante', + ], + ], + + 'tabs' => [ + 'product_attributes' => [ + 'label' => 'Atributos de Producto', + ], + 'variant_attributes' => [ + 'label' => 'Atributos de Variante', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + + 'attributes' => [ + 'no_groups' => 'No hay grupos de atributos disponibles.', + 'no_attributes' => 'No hay atributos disponibles.', + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Este tipo de producto no puede ser eliminado ya que hay productos asociados.', + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/productvariant.php b/packages/admin/resources/lang/es/productvariant.php new file mode 100644 index 0000000000..9b030a6e51 --- /dev/null +++ b/packages/admin/resources/lang/es/productvariant.php @@ -0,0 +1,105 @@ + 'Variante de Producto', + 'plural_label' => 'Variantes de Producto', + 'pages' => [ + 'edit' => [ + 'title' => 'Información Básica', + ], + 'media' => [ + 'title' => 'Medios', + 'form' => [ + 'no_selection' => [ + 'label' => 'Actualmente no tienes una imagen seleccionada para esta variante.', + ], + 'no_media_available' => [ + 'label' => 'Actualmente no hay medios disponibles para este producto.', + ], + 'images' => [ + 'label' => 'Imagen Principal', + 'helper_text' => 'Selecciona la imagen del producto que representa esta variante.', + ], + ], + ], + 'identifiers' => [ + 'title' => 'Identificadores', + ], + 'inventory' => [ + 'title' => 'Inventario', + ], + 'shipping' => [ + 'title' => 'Envío', + ], + ], + 'form' => [ + 'sku' => [ + 'label' => 'SKU', + ], + 'gtin' => [ + 'label' => 'Número Global de Artículo Comercial (GTIN)', + ], + 'mpn' => [ + 'label' => 'Número de Parte del Fabricante (MPN)', + ], + 'ean' => [ + 'label' => 'UPC/EAN', + ], + 'stock' => [ + 'label' => 'En Stock', + ], + 'backorder' => [ + 'label' => 'En Pedido Pendiente', + ], + 'purchasable' => [ + 'label' => 'Comprabilidad', + 'options' => [ + 'always' => 'Siempre', + 'in_stock' => 'En Stock', + 'in_stock_or_on_backorder' => 'En Stock o en Pedido Pendiente', + ], + ], + 'unit_quantity' => [ + 'label' => 'Cantidad por Unidad', + 'helper_text' => 'Cuántos artículos individuales componen 1 unidad.', + ], + 'min_quantity' => [ + 'label' => 'Cantidad Mínima', + 'helper_text' => 'La cantidad mínima de una variante de producto que se puede comprar en una sola compra.', + ], + 'quantity_increment' => [ + 'label' => 'Incremento de Cantidad', + 'helper_text' => 'La variante de producto debe comprarse en múltiplos de esta cantidad.', + ], + 'tax_class_id' => [ + 'label' => 'Clase Impositiva', + ], + 'shippable' => [ + 'label' => 'Enviable', + ], + 'length_value' => [ + 'label' => 'Longitud', + ], + 'length_unit' => [ + 'label' => 'Unidad de Longitud', + ], + 'width_value' => [ + 'label' => 'Anchura', + ], + 'width_unit' => [ + 'label' => 'Unidad de Anchura', + ], + 'height_value' => [ + 'label' => 'Altura', + ], + 'height_unit' => [ + 'label' => 'Unidad de Altura', + ], + 'weight_value' => [ + 'label' => 'Peso', + ], + 'weight_unit' => [ + 'label' => 'Unidad de Peso', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/relationmanagers.php b/packages/admin/resources/lang/es/relationmanagers.php new file mode 100644 index 0000000000..9342e63036 --- /dev/null +++ b/packages/admin/resources/lang/es/relationmanagers.php @@ -0,0 +1,262 @@ + [ + 'actions' => [ + 'attach' => [ + 'label' => 'Adjuntar Grupo de Clientes', + ], + ], + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalización', + ], + 'visible' => [ + 'label' => 'Visible', + ], + 'purchasable' => [ + 'label' => 'Comprable', + ], + ], + 'table' => [ + 'description' => 'Asocia grupos de clientes a este :type para determinar su disponibilidad.', + 'name' => [ + 'label' => 'Nombre', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalización', + ], + 'visible' => [ + 'label' => 'Visible', + ], + 'purchasable' => [ + 'label' => 'Comprable', + ], + ], + ], + 'channels' => [ + 'actions' => [ + 'attach' => [ + 'label' => 'Programar otro Canal', + ], + ], + 'form' => [ + 'enabled' => [ + 'label' => 'Habilitado', + 'helper_text_false' => 'Este canal no estará habilitado incluso si hay una fecha de inicio presente.', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + 'helper_text' => 'Deja en blanco para estar disponible desde cualquier fecha.', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalización', + 'helper_text' => 'Deja en blanco para estar disponible indefinidamente.', + ], + ], + 'table' => [ + 'description' => 'Determina qué canales están habilitados y programa la disponibilidad.', + 'name' => [ + 'label' => 'Nombre', + ], + 'enabled' => [ + 'label' => 'Habilitado', + ], + 'starts_at' => [ + 'label' => 'Fecha de Inicio', + ], + 'ends_at' => [ + 'label' => 'Fecha de Finalización', + ], + ], + ], + 'medias' => [ + 'title' => 'Medios', + 'title_plural' => 'Medios', + 'actions' => [ + 'create' => [ + 'label' => 'Crear Medio', + ], + 'view' => [ + 'label' => 'Ver', + ], + ], + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'media' => [ + 'label' => 'Imagen', + ], + 'primary' => [ + 'label' => 'Primario', + ], + ], + 'table' => [ + 'image' => [ + 'label' => 'Imagen', + ], + 'file' => [ + 'label' => 'Archivo', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'primary' => [ + 'label' => 'Primario', + ], + ], + ], + 'urls' => [ + 'title' => 'URL', + 'title_plural' => 'URLs', + 'actions' => [ + 'create' => [ + 'label' => 'Crear URL', + ], + ], + 'filters' => [ + 'language_id' => [ + 'label' => 'Idioma', + ], + ], + 'form' => [ + 'slug' => [ + 'label' => 'Slug', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + 'language' => [ + 'label' => 'Idioma', + ], + ], + 'table' => [ + 'slug' => [ + 'label' => 'Slug', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + 'language' => [ + 'label' => 'Idioma', + ], + ], + ], + 'customer_group_pricing' => [ + 'title' => 'Precios de Grupo de Clientes', + 'title_plural' => 'Precios de Grupo de Clientes', + 'table' => [ + 'heading' => 'Precios de Grupo de Clientes', + 'description' => 'Asocia precios a grupos de clientes para determinar el precio del producto.', + 'empty_state' => [ + 'label' => 'No existen precios de grupos de clientes.', + 'description' => 'Crea un precio de grupo de clientes para comenzar.', + ], + 'actions' => [ + 'create' => [ + 'label' => 'Agregar Precio de Grupo de Clientes', + 'modal' => [ + 'heading' => 'Crear Precio de Grupo de Clientes', + ], + ], + ], + ], + ], + 'pricing' => [ + 'title' => 'Precios', + 'title_plural' => 'Precios', + 'tab_name' => 'Descuentos por Cantidad', + 'table' => [ + 'heading' => 'Descuentos por Cantidad', + 'description' => 'Reduce el precio cuando un cliente compra en mayores cantidades.', + 'empty_state' => [ + 'label' => 'No existen descuentos por cantidad.', + ], + 'actions' => [ + 'create' => [ + 'label' => 'Agregar Descuento por Cantidad', + ], + ], + 'price' => [ + 'label' => 'Precio', + ], + 'customer_group' => [ + 'label' => 'Grupo de Clientes', + 'placeholder' => 'Todos los Grupos de Clientes', + ], + 'min_quantity' => [ + 'label' => 'Cantidad Mínima', + ], + 'currency' => [ + 'label' => 'Moneda', + ], + ], + 'form' => [ + 'price' => [ + 'label' => 'Precio', + 'helper_text' => 'El precio de compra, antes de descuentos.', + ], + 'customer_group_id' => [ + 'label' => 'Grupo de Clientes', + 'placeholder' => 'Todos los Grupos de Clientes', + 'helper_text' => 'Selecciona a qué grupo de clientes aplicar este precio.', + ], + 'min_quantity' => [ + 'label' => 'Cantidad Mínima', + 'helper_text' => 'Selecciona la cantidad mínima para la que estará disponible este precio.', + 'validation' => [ + 'unique' => 'El Grupo de Clientes y la Cantidad Mínima deben ser únicos.', + ], + ], + 'currency_id' => [ + 'label' => 'Moneda', + 'helper_text' => 'Selecciona la moneda para este precio.', + ], + 'compare_price' => [ + 'label' => 'Precio Comparativo', + 'helper_text' => 'El precio original o RRP, para comparación con su precio de compra.', + ], + 'basePrices' => [ + 'title' => 'Precios', + 'form' => [ + 'price' => [ + 'label' => 'Precio', + 'helper_text' => 'El precio de compra, antes de descuentos.', + ], + 'compare_price' => [ + 'label' => 'Precio Comparativo', + 'helper_text' => 'El precio original o RRP, para comparación con su precio de compra.', + ], + ], + 'tooltip' => 'Generado automáticamente en base a las tasas de cambio de divisas.', + ], + ], + ], + 'tax_rate_amounts' => [ + 'table' => [ + 'description' => '', + 'percentage' => [ + 'label' => 'Porcentaje', + ], + 'tax_class' => [ + 'label' => 'Clase Impositiva', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/es/staff.php b/packages/admin/resources/lang/es/staff.php new file mode 100644 index 0000000000..bb244d3cc8 --- /dev/null +++ b/packages/admin/resources/lang/es/staff.php @@ -0,0 +1,81 @@ + 'Personal', + + 'plural_label' => 'Personal', + + 'table' => [ + 'firstname' => [ + 'label' => 'Nombre', + ], + 'lastname' => [ + 'label' => 'Apellido', + ], + 'email' => [ + 'label' => 'Correo Electrónico', + ], + 'admin' => [ + 'badge' => 'Super Admin', + ], + ], + + 'form' => [ + 'firstname' => [ + 'label' => 'Nombre', + ], + 'lastname' => [ + 'label' => 'Apellido', + ], + 'email' => [ + 'label' => 'Correo Electrónico', + ], + 'password' => [ + 'label' => 'Contraseña', + 'hint' => 'Restablecer contraseña', + ], + 'admin' => [ + 'label' => 'Super Admin', + 'helper' => 'Los roles de super admin no se pueden cambiar en el hub.', + ], + 'roles' => [ + 'label' => 'Roles', + 'helper' => ':roles tienen acceso completo', + ], + 'permissions' => [ + 'label' => 'Permisos', + ], + 'role' => [ + 'label' => 'Nombre del Rol', + ], + ], + + 'action' => [ + 'acl' => [ + 'label' => 'Control de Acceso', + ], + 'add-role' => [ + 'label' => 'Agregar Rol', + ], + 'delete-role' => [ + 'label' => 'Eliminar Rol', + 'heading' => 'Eliminar rol: :role', + ], + ], + + 'acl' => [ + 'title' => 'Control de Acceso', + 'tooltip' => [ + 'roles-included' => 'El permiso está incluido en los siguientes roles', + ], + 'notification' => [ + 'updated' => 'Actualizado', + 'error' => 'Error', + 'no-role' => 'Rol no registrado en Lunar', + 'no-permission' => 'Permiso no registrado en Lunar', + 'no-role-permission' => 'Rol y Permiso no registrados en Lunar', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/tag.php b/packages/admin/resources/lang/es/tag.php new file mode 100644 index 0000000000..279326801e --- /dev/null +++ b/packages/admin/resources/lang/es/tag.php @@ -0,0 +1,21 @@ + 'Etiqueta', + + 'plural_label' => 'Etiquetas', + + 'table' => [ + 'value' => [ + 'label' => 'Valor', + ], + ], + + 'form' => [ + 'value' => [ + 'label' => 'Valor', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/taxclass.php b/packages/admin/resources/lang/es/taxclass.php new file mode 100644 index 0000000000..63a22c831d --- /dev/null +++ b/packages/admin/resources/lang/es/taxclass.php @@ -0,0 +1,27 @@ + 'Clase de Impuesto', + + 'plural_label' => 'Clases de Impuesto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/taxrate.php b/packages/admin/resources/lang/es/taxrate.php new file mode 100644 index 0000000000..c29cb30587 --- /dev/null +++ b/packages/admin/resources/lang/es/taxrate.php @@ -0,0 +1,33 @@ + 'Tasa de Impuesto', + + 'plural_label' => 'Tasas de Impuesto', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'tax_zone' => [ + 'label' => 'Zona Fiscal', + ], + 'priority' => [ + 'label' => 'Prioridad', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'priority' => [ + 'label' => 'Prioridad', + ], + 'tax_zone_id' => [ + 'label' => 'Zona Fiscal', + ], + ], + +]; diff --git a/packages/admin/resources/lang/es/taxzone.php b/packages/admin/resources/lang/es/taxzone.php new file mode 100644 index 0000000000..638c82d3de --- /dev/null +++ b/packages/admin/resources/lang/es/taxzone.php @@ -0,0 +1,69 @@ + 'Zona Fiscal', + + 'plural_label' => 'Zonas Fiscales', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'zone_type' => [ + 'label' => 'Tipo de Zona', + ], + 'active' => [ + 'label' => 'Activo', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'zone_type' => [ + 'label' => 'Tipo de Zona', + 'options' => [ + 'country' => 'Limitar a Países', + 'states' => 'Limitar a Estados', + 'postcodes' => 'Limitar a Códigos Postales', + ], + ], + 'price_display' => [ + 'label' => 'Visualización de Precios', + 'options' => [ + 'include_tax' => 'Incluir Impuesto', + 'exclude_tax' => 'Excluir Impuesto', + ], + ], + 'active' => [ + 'label' => 'Activo', + ], + 'default' => [ + 'label' => 'Predeterminado', + ], + + 'zone_countries' => [ + 'label' => 'Países', + ], + + 'zone_country' => [ + 'label' => 'País', + ], + + 'zone_states' => [ + 'label' => 'Estados', + ], + + 'zone_postcodes' => [ + 'label' => 'Códigos Postales', + 'helper' => 'Enumera cada código postal en una nueva línea. Soporta comodines como NW*', + ], + + ], + +]; diff --git a/packages/admin/resources/lang/es/user.php b/packages/admin/resources/lang/es/user.php new file mode 100644 index 0000000000..7abb94ae03 --- /dev/null +++ b/packages/admin/resources/lang/es/user.php @@ -0,0 +1,29 @@ + 'Usuario', + + 'plural_label' => 'Usuarios', + + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'email' => [ + 'label' => 'Correo Electrónico', + ], + ], + + 'form' => [ + 'email' => [ + 'label' => 'Correo Electrónico', + ], + 'password' => [ + 'label' => 'Nueva Contraseña', + ], + 'password_confirmation' => [ + 'label' => 'Confirmar Nueva Contraseña', + ], + ], +]; diff --git a/packages/admin/resources/lang/es/widgets.php b/packages/admin/resources/lang/es/widgets.php new file mode 100644 index 0000000000..93fb0c8852 --- /dev/null +++ b/packages/admin/resources/lang/es/widgets.php @@ -0,0 +1,118 @@ + [ + 'orders' => [ + 'order_stats_overview' => [ + 'stat_one' => [ + 'label' => 'Pedidos hoy', + 'increase' => 'Aumento del :percentage% desde :count ayer', + 'decrease' => 'Disminución del :percentage% desde :count ayer', + 'neutral' => 'Sin cambios en comparación con ayer', + ], + 'stat_two' => [ + 'label' => 'Pedidos en los últimos 7 días', + 'increase' => 'Aumento del :percentage% desde :count el periodo anterior', + 'decrease' => 'Disminución del :percentage% desde :count el periodo anterior', + 'neutral' => 'Sin cambios en comparación con el periodo anterior', + ], + 'stat_three' => [ + 'label' => 'Pedidos en los últimos 30 días', + 'increase' => 'Aumento del :percentage% desde :count el periodo anterior', + 'decrease' => 'Disminución del :percentage% desde :count el periodo anterior', + 'neutral' => 'Sin cambios en comparación con el periodo anterior', + ], + 'stat_four' => [ + 'label' => 'Ventas hoy', + 'increase' => 'Aumento del :percentage% desde :total ayer', + 'decrease' => 'Disminución del :percentage% desde :total ayer', + 'neutral' => 'Sin cambios en comparación con ayer', + ], + 'stat_five' => [ + 'label' => 'Ventas en los últimos 7 días', + 'increase' => 'Aumento del :percentage% desde :total el periodo anterior', + 'decrease' => 'Disminución del :percentage% desde :total el periodo anterior', + 'neutral' => 'Sin cambios en comparación con el periodo anterior', + ], + 'stat_six' => [ + 'label' => 'Ventas en los últimos 30 días', + 'increase' => 'Aumento del :percentage% desde :total el periodo anterior', + 'decrease' => 'Disminución del :percentage% desde :total el periodo anterior', + 'neutral' => 'Sin cambios en comparación con el periodo anterior', + ], + ], + 'order_totals_chart' => [ + 'heading' => 'Totales de pedidos del último año', + 'series_one' => [ + 'label' => 'Este Periodo', + ], + 'series_two' => [ + 'label' => 'Periodo Anterior', + ], + 'yaxis' => [ + 'label' => 'Ingresos :currency', + ], + ], + 'order_sales_chart' => [ + 'heading' => 'Informe de Pedidos / Ventas', + 'series_one' => [ + 'label' => 'Pedidos', + ], + 'series_two' => [ + 'label' => 'Ingresos', + ], + 'yaxis' => [ + 'series_one' => [ + 'label' => '# Pedidos', + ], + 'series_two' => [ + 'label' => 'Valor Total', + ], + ], + ], + 'average_order_value' => [ + 'heading' => 'Valor Promedio del Pedido', + ], + 'new_returning_customers' => [ + 'heading' => 'Nuevos vs Clientes Recurrentes', + 'series_one' => [ + 'label' => 'Nuevos Clientes', + ], + 'series_two' => [ + 'label' => 'Clientes Recurrentes', + ], + ], + 'popular_products' => [ + 'heading' => 'Más vendidos (últimos 12 meses)', + 'description' => 'Estas cifras se basan en el número de veces que un producto aparece en un pedido, no en la cantidad pedida.', + ], + 'latest_orders' => [ + 'heading' => 'Últimos pedidos', + ], + ], + ], + 'customer' => [ + 'stats_overview' => [ + 'total_orders' => [ + 'label' => 'Total de pedidos', + ], + 'avg_spend' => [ + 'label' => 'Gasto Promedio', + ], + 'total_spend' => [ + 'label' => 'Gasto Total', + ], + ], + ], + 'variant_switcher' => [ + 'label' => 'Cambiar Variante', + 'table' => [ + 'sku' => [ + 'label' => 'SKU', + ], + 'values' => [ + 'label' => 'Valores', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/actions.php b/packages/admin/resources/lang/nl/actions.php new file mode 100644 index 0000000000..c7d1a3783f --- /dev/null +++ b/packages/admin/resources/lang/nl/actions.php @@ -0,0 +1,46 @@ + [ + 'create_root' => [ + 'label' => 'Maak Hoofdcategorie', + ], + 'create_child' => [ + 'label' => 'Maak Subcategorie', + ], + 'move' => [ + 'label' => 'Verplaats Categorie', + ], + 'delete' => [ + 'label' => 'Verwijderen', + ], + ], + 'orders' => [ + 'update_status' => [ + 'label' => 'Status Bijwerken', + 'wizard' => [ + 'step_one' => [ + 'label' => 'Status', + ], + 'step_two' => [ + 'label' => 'Mailers & Meldingen', + 'no_mailers' => 'Er zijn geen mailers beschikbaar voor deze status.', + ], + 'step_three' => [ + 'label' => 'Voorbeeld & Opslaan', + 'no_mailers' => 'Er zijn geen mailers gekozen voor voorbeeld.', + ], + ], + 'notification' => [ + 'label' => 'Orderstatus bijgewerkt', + ], + 'billing_email' => [ + 'label' => 'Facturatie E-mail', + ], + 'shipping_email' => [ + 'label' => 'Verzend E-mail', + ], + ], + + ], +]; diff --git a/packages/admin/resources/lang/nl/activity.php b/packages/admin/resources/lang/nl/activity.php new file mode 100644 index 0000000000..3b181fcef9 --- /dev/null +++ b/packages/admin/resources/lang/nl/activity.php @@ -0,0 +1,29 @@ + 'Activiteit', + + 'plural_label' => 'Activiteiten', + + 'table' => [ + 'subject' => 'Onderwerp', + 'description' => 'Beschrijving', + 'log' => 'Logboek', + 'logged_at' => 'Gelogd Op', + 'event' => 'Gebeurtenis', + 'logged_from' => 'Gelogd Vanaf', + 'logged_until' => 'Gelogd Tot', + ], + + 'form' => [ + 'causer_type' => 'Veroorzaker Type', + 'causer_id' => 'Veroorzaker Id', + 'subject_type' => 'Onderwerp Type', + 'subject_id' => 'Onderwerp Id', + 'description' => 'Beschrijving', + 'attributes' => 'Attributen', + 'old' => 'Oud', + ], + +]; diff --git a/packages/admin/resources/lang/nl/address.php b/packages/admin/resources/lang/nl/address.php new file mode 100644 index 0000000000..8a64008810 --- /dev/null +++ b/packages/admin/resources/lang/nl/address.php @@ -0,0 +1,93 @@ + 'Adres', + + 'plural_label' => 'Adressen', + + 'table' => [ + 'title' => [ + 'label' => 'Titel', + ], + 'first_name' => [ + 'label' => 'Voornaam', + ], + 'last_name' => [ + 'label' => 'Achternaam', + ], + 'company_name' => [ + 'label' => 'Bedrijfsnaam', + ], + 'line_one' => [ + 'label' => 'Adres', + ], + 'line_two' => [ + 'label' => 'Adresregel Twee', + ], + 'line_three' => [ + 'label' => 'Adresregel Drie', + ], + 'city' => [ + 'label' => 'Stad', + ], + 'country_id' => [ + 'label' => 'Land', + ], + 'state' => [ + 'label' => 'Provincie', + ], + 'postcode' => [ + 'label' => 'Postcode', + ], + 'contact_email' => [ + 'label' => 'Contact E-mail', + ], + 'contact_phone' => [ + 'label' => 'Contact Telefoon', + ], + ], + + 'form' => [ + 'title' => [ + 'label' => 'Titel', + ], + 'first_name' => [ + 'label' => 'Voornaam', + ], + 'last_name' => [ + 'label' => 'Achternaam', + ], + 'company_name' => [ + 'label' => 'Bedrijfsnaam', + ], + 'line_one' => [ + 'label' => 'Adresregel Een', + ], + 'line_two' => [ + 'label' => 'Adresregel Twee', + ], + 'line_three' => [ + 'label' => 'Adresregel Drie', + ], + 'city' => [ + 'label' => 'Stad', + ], + 'country_id' => [ + 'label' => 'Land', + ], + 'state' => [ + 'label' => 'Provincie', + ], + 'postcode' => [ + 'label' => 'Postcode', + ], + 'contact_email' => [ + 'label' => 'Contact E-mail', + ], + 'contact_phone' => [ + 'label' => 'Contact Telefoon', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/attribute.php b/packages/admin/resources/lang/nl/attribute.php new file mode 100644 index 0000000000..9ac83854d6 --- /dev/null +++ b/packages/admin/resources/lang/nl/attribute.php @@ -0,0 +1,55 @@ + 'Attribuut', + + 'plural_label' => 'Attributen', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'description' => [ + 'label' => 'Beschrijving', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'type' => [ + 'label' => 'Type', + ], + ], + + 'form' => [ + 'attributable_type' => [ + 'label' => 'Type', + ], + 'name' => [ + 'label' => 'Naam', + ], + 'description' => [ + 'label' => 'Beschrijving', + 'helper' => 'Gebruik om de helptekst onder de invoer weer te geven', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'searchable' => [ + 'label' => 'Doorzoekbaar', + ], + 'filterable' => [ + 'label' => 'Filterbaar', + ], + 'required' => [ + 'label' => 'Verplicht', + ], + 'type' => [ + 'label' => 'Type', + ], + 'validation_rules' => [ + 'label' => 'Validatieregels', + 'helper' => 'Regels voor attribuutveld, voorbeeld: min:1|max:10|...', + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/attributegroup.php b/packages/admin/resources/lang/nl/attributegroup.php new file mode 100644 index 0000000000..a23a2e3113 --- /dev/null +++ b/packages/admin/resources/lang/nl/attributegroup.php @@ -0,0 +1,46 @@ + 'Attribuutgroep', + + 'plural_label' => 'Attribuutgroepen', + + 'table' => [ + 'attributable_type' => [ + 'label' => 'Type', + ], + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'position' => [ + 'label' => 'Positie', + ], + ], + + 'form' => [ + 'attributable_type' => [ + 'label' => 'Type', + ], + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'position' => [ + 'label' => 'Positie', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Deze attribuutgroep kan niet worden verwijderd omdat er attributen aan zijn gekoppeld.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/auth.php b/packages/admin/resources/lang/nl/auth.php new file mode 100644 index 0000000000..77df920a5f --- /dev/null +++ b/packages/admin/resources/lang/nl/auth.php @@ -0,0 +1,32 @@ + 'Beheerder', + 'roles.admin.description' => 'Beheerder met volledige toegang', + 'roles.staff.label' => 'Personeel', + 'roles.staff.description' => 'Personeel met fundamentele toegang', + /** + * Permissions. + */ + 'permissions.settings.label' => 'Instellingen', + 'permissions.settings.description' => 'Geeft toegang tot het instellingengebied van de hub', + 'permissions.settings:core.label' => 'Kerninstellingen', + 'permissions.settings:core.description' => 'Toegang tot fundamentele winkelinstellingen, zoals kanalen, talen, valuta, enz.', + 'permissions.settings:manage-staff.label' => 'Beheer Personeel', + 'permissions.settings:manage-staff.description' => 'Sta het personeelslid toe om ander personeel te bewerken', + 'permissions.settings:manage-attributes.label' => 'Beheer Attributen', + 'permissions.settings:manage-attributes.description' => 'Sta het personeelslid toe om extra attributen te bewerken en te maken', + 'permissions.catalog:manage-products.label' => 'Beheer Producten', + 'permissions.catalog:manage-products.description' => 'Sta het personeelslid toe om producten, producttypen en merken te bewerken', + 'permissions.catalog:manage-collections.label' => 'Beheer Collecties', + 'permissions.catalog:manage-collections.description' => 'Sta het personeelslid toe om collecties en hun groepen te bewerken', + 'permissions.sales:manage-orders.label' => 'Beheer Bestellingen', + 'permissions.sales:manage-orders.description' => 'Sta het personeelslid toe om bestellingen te beheren', + 'permissions.sales:manage-customers.label' => 'Beheer Klanten', + 'permissions.sales:manage-customers.description' => 'Sta het personeelslid toe om klanten te beheren', + 'permissions.sales:manage-discounts.label' => 'Beheer Kortingen', + 'permissions.sales:manage-discounts.description' => 'Sta het personeelslid toe om kortingen te beheren', +]; diff --git a/packages/admin/resources/lang/nl/brand.php b/packages/admin/resources/lang/nl/brand.php new file mode 100644 index 0000000000..75cd5cd220 --- /dev/null +++ b/packages/admin/resources/lang/nl/brand.php @@ -0,0 +1,72 @@ + 'Merk', + + 'plural_label' => 'Merken', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'products_count' => [ + 'label' => 'Aantal Producten', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Dit merk kan niet worden verwijderd omdat er producten aan zijn gekoppeld.', + ], + ], + ], + 'pages' => [ + 'products' => [ + 'label' => 'Producten', + 'actions' => [ + 'attach' => [ + 'label' => 'Koppel een product', + 'form' => [ + 'record_id' => [ + 'label' => 'Product', + ], + ], + 'notification' => [ + 'success' => 'Product gekoppeld aan merk', + ], + ], + 'detach' => [ + 'notification' => [ + 'success' => 'Product ontkoppeld.', + ], + ], + ], + ], + 'collections' => [ + 'label' => 'Collecties', + 'table' => [ + 'header_actions' => [ + 'attach' => [ + 'record_select' => [ + 'placeholder' => 'Selecteer een collectie', + ], + ], + ], + ], + 'actions' => [ + 'attach' => [ + 'label' => 'Koppel een collectie', + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/channel.php b/packages/admin/resources/lang/nl/channel.php new file mode 100644 index 0000000000..ade258936a --- /dev/null +++ b/packages/admin/resources/lang/nl/channel.php @@ -0,0 +1,39 @@ + 'Kanaal', + + 'plural_label' => 'Kanalen', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'url' => [ + 'label' => 'URL', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'url' => [ + 'label' => 'URL', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/collection.php b/packages/admin/resources/lang/nl/collection.php new file mode 100644 index 0000000000..4b98132e17 --- /dev/null +++ b/packages/admin/resources/lang/nl/collection.php @@ -0,0 +1,45 @@ + 'Collectie', + + 'plural_label' => 'Collecties', + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + ], + + 'pages' => [ + 'children' => [ + 'label' => 'Subcollecties', + 'actions' => [ + 'create_child' => [ + 'label' => 'Maak Subcollectie', + ], + ], + 'table' => [ + 'children_count' => [ + 'label' => 'Aantal Kinderen', + ], + 'name' => [ + 'label' => 'Naam', + ], + ], + ], + 'edit' => [ + 'label' => 'Basisinformatie', + ], + 'products' => [ + 'label' => 'Producten', + 'actions' => [ + 'attach' => [ + 'label' => 'Product Toevoegen', + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/collectiongroup.php b/packages/admin/resources/lang/nl/collectiongroup.php new file mode 100644 index 0000000000..64a617597c --- /dev/null +++ b/packages/admin/resources/lang/nl/collectiongroup.php @@ -0,0 +1,37 @@ + 'Collectiegroep', + + 'plural_label' => 'Collectiegroepen', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'collections_count' => [ + 'label' => 'Aantal Collecties', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Deze collectiegroep kan niet worden verwijderd omdat er collecties aan zijn gekoppeld.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/components.php b/packages/admin/resources/lang/nl/components.php new file mode 100644 index 0000000000..aa742c853b --- /dev/null +++ b/packages/admin/resources/lang/nl/components.php @@ -0,0 +1,109 @@ + [ + 'notification' => [ + 'updated' => 'Tags bijgewerkt', + ], + ], + + 'activity-log' => [ + 'input' => [ + 'placeholder' => 'Voeg een opmerking toe', + ], + + 'action' => [ + 'add-comment' => 'Voeg opmerking toe', + ], + + 'system' => 'Systeem', + + 'partials' => [ + 'orders' => [ + 'order_created' => 'Bestelling aangemaakt', + + 'status_change' => 'Status bijgewerkt', + + 'capture' => 'Betaling van :amount op kaart eindigend op :last_four', + + 'authorized' => 'Geautoriseerd bedrag van :amount op kaart eindigend op :last_four', + + 'refund' => 'Terugbetaling van :amount op kaart eindigend op :last_four', + + 'address' => ':type bijgewerkt', + + 'billingAddress' => 'Factuuradres', + + 'shippingAddress' => 'Verzendadres', + ], + + 'update' => [ + 'updated' => ':model bijgewerkt', + ], + + 'create' => [ + 'created' => ':model aangemaakt', + ], + + 'tags' => [ + 'updated' => 'Tags bijgewerkt', + 'added' => 'Toegevoegd', + 'removed' => 'Verwijderd', + ], + ], + + 'notification' => [ + 'comment_added' => 'Opmerking toegevoegd', + ], + ], + + 'forms' => [ + 'youtube' => [ + 'helperText' => 'Voer de ID van de YouTube-video in. bijv. dQw4w9WgXcQ', + ], + ], + + 'collection-tree-view' => [ + 'actions' => [ + 'move' => [ + 'form' => [ + 'target_id' => [ + 'label' => 'Bovenliggende collectie', + ], + ], + ], + ], + 'notifications' => [ + 'collections-reordered' => [ + 'success' => 'Collecties opnieuw gerangschikt', + ], + 'node-expanded' => [ + 'danger' => 'Kan collecties niet laden', + ], + 'delete' => [ + 'danger' => 'Kan collectie niet verwijderen', + ], + ], + ], + + 'product-options-list' => [ + 'add-option' => [ + 'label' => 'Optie toevoegen', + ], + 'delete-option' => [ + 'label' => 'Optie verwijderen', + ], + 'remove-shared-option' => [ + 'label' => 'Gedeelde optie verwijderen', + ], + 'add-value' => [ + 'label' => 'Nog een waarde toevoegen', + ], + 'name' => [ + 'label' => 'Naam', + ], + 'values' => [ + 'label' => 'Waarden', + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/currency.php b/packages/admin/resources/lang/nl/currency.php new file mode 100644 index 0000000000..1f903244b1 --- /dev/null +++ b/packages/admin/resources/lang/nl/currency.php @@ -0,0 +1,51 @@ + 'Valuta', + + 'plural_label' => 'Valuta\'s', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'code' => [ + 'label' => 'Code', + ], + 'exchange_rate' => [ + 'label' => 'Wisselkoers', + ], + 'decimal_places' => [ + 'label' => 'Decimalen', + ], + 'enabled' => [ + 'label' => 'Ingeschakeld', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'code' => [ + 'label' => 'Code', + ], + 'exchange_rate' => [ + 'label' => 'Wisselkoers', + ], + 'decimal_places' => [ + 'label' => 'Decimalen', + ], + 'enabled' => [ + 'label' => 'Ingeschakeld', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/customer.php b/packages/admin/resources/lang/nl/customer.php new file mode 100644 index 0000000000..b7411131cc --- /dev/null +++ b/packages/admin/resources/lang/nl/customer.php @@ -0,0 +1,63 @@ + 'Klant', + + 'plural_label' => 'Klanten', + + 'table' => [ + 'full_name' => [ + 'label' => 'Naam', + ], + 'first_name' => [ + 'label' => 'Voornaam', + ], + 'last_name' => [ + 'label' => 'Achternaam', + ], + 'title' => [ + 'label' => 'Titel', + ], + 'company_name' => [ + 'label' => 'Bedrijfsnaam', + ], + 'vat_no' => [ + 'label' => 'BTW Nr.', + ], + 'account_reference' => [ + 'label' => 'Account Referentie', + ], + 'new' => [ + 'label' => 'Nieuw', + ], + 'returning' => [ + 'label' => 'Terugkerend', + ], + ], + + 'form' => [ + 'title' => [ + 'label' => 'Titel', + ], + 'first_name' => [ + 'label' => 'Voornaam', + ], + 'last_name' => [ + 'label' => 'Achternaam', + ], + 'company_name' => [ + 'label' => 'Bedrijfsnaam', + ], + 'account_ref' => [ + 'label' => 'Account Referentie', + ], + 'vat_no' => [ + 'label' => 'BTW Nr.', + ], + 'customer_groups' => [ + 'label' => 'Klantengroepen', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/customergroup.php b/packages/admin/resources/lang/nl/customergroup.php new file mode 100644 index 0000000000..4b98637373 --- /dev/null +++ b/packages/admin/resources/lang/nl/customergroup.php @@ -0,0 +1,40 @@ + 'Klantengroep', + + 'plural_label' => 'Klantengroepen', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Deze klantengroep kan niet worden verwijderd omdat er klanten aan zijn gekoppeld.', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/discount.php b/packages/admin/resources/lang/nl/discount.php new file mode 100644 index 0000000000..675d4b10c4 --- /dev/null +++ b/packages/admin/resources/lang/nl/discount.php @@ -0,0 +1,324 @@ + 'Kortingen', + 'label' => 'Korting', + 'form' => [ + 'conditions' => [ + 'heading' => 'Voorwaarden', + ], + 'buy_x_get_y' => [ + 'heading' => 'Koop X Krijg Y', + ], + 'amount_off' => [ + 'heading' => 'Bedrag Korting', + ], + 'name' => [ + 'label' => 'Naam', + ], + 'handle' => [ + 'label' => 'Handle', + ], + 'starts_at' => [ + 'label' => 'Startdatum', + ], + 'ends_at' => [ + 'label' => 'Einddatum', + ], + 'priority' => [ + 'label' => 'Prioriteit', + 'helper_text' => 'Kortingen met een hogere prioriteit worden eerst toegepast.', + 'options' => [ + 'low' => [ + 'label' => 'Laag', + ], + 'medium' => [ + 'label' => 'Middel', + ], + 'high' => [ + 'label' => 'Hoog', + ], + ], + ], + 'stop' => [ + 'label' => 'Stop andere kortingen na deze toe te passen', + ], + 'coupon' => [ + 'label' => 'Coupon', + 'helper_text' => 'Voer de vereiste coupon in voor de korting, als deze leeg is, wordt deze automatisch toegepast.', + ], + 'max_uses' => [ + 'label' => 'Maximaal gebruik', + 'helper_text' => 'Laat leeg voor onbeperkt gebruik.', + ], + 'max_uses_per_user' => [ + 'label' => 'Maximaal gebruik per gebruiker', + 'helper_text' => 'Laat leeg voor onbeperkt gebruik.', + ], + 'minimum_cart_amount' => [ + 'label' => 'Minimale Winkelwagenbedrag', + ], + 'min_qty' => [ + 'label' => 'Producthoeveelheid', + 'helper_text' => 'Stel in hoeveel kwalificerende producten nodig zijn voor de korting.', + ], + 'reward_qty' => [ + 'label' => 'Aantal gratis items', + 'helper_text' => 'Hoeveel van elk item worden afgeprijsd.', + ], + 'max_reward_qty' => [ + 'label' => 'Maximale beloningshoeveelheid', + 'helper_text' => 'Het maximale aantal producten dat kan worden afgeprijsd, ongeacht de criteria.', + ], + 'automatic_rewards' => [ + 'label' => 'Automatisch beloningen toevoegen', + 'helper_text' => 'Schakel in om beloningsproducten toe te voegen wanneer deze niet in de winkelwagen aanwezig zijn.', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'status' => [ + 'label' => 'Status', + \Lunar\Models\Discount::ACTIVE => [ + 'label' => 'Actief', + ], + \Lunar\Models\Discount::PENDING => [ + 'label' => 'In afwachting', + ], + \Lunar\Models\Discount::EXPIRED => [ + 'label' => 'Verlopen', + ], + \Lunar\Models\Discount::SCHEDULED => [ + 'label' => 'Gepland', + ], + ], + 'type' => [ + 'label' => 'Type', + ], + 'starts_at' => [ + 'label' => 'Startdatum', + ], + 'ends_at' => [ + 'label' => 'Einddatum', + ], + ], + 'pages' => [ + 'availability' => [ + 'label' => 'Beschikbaarheid', + ], + 'limitations' => [ + 'label' => 'Beperkingen', + ], + ], + 'relationmanagers' => [ + 'collections' => [ + 'title' => 'Collecties', + 'description' => 'Selecteer welke collecties beperkt moeten worden tot deze korting.', + 'actions' => [ + 'attach' => [ + 'label' => 'Collectie Toevoegen', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'type' => [ + 'label' => 'Type', + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + ], + ], + 'brands' => [ + 'title' => 'Merken', + 'description' => 'Selecteer welke merken beperkt moeten worden tot deze korting.', + 'actions' => [ + 'attach' => [ + 'label' => 'Merk Toevoegen', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'type' => [ + 'label' => 'Type', + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + ], + ], + 'products' => [ + 'title' => 'Producten', + 'description' => 'Selecteer welke producten beperkt moeten worden tot deze korting.', + 'actions' => [ + 'attach' => [ + 'label' => 'Product Toevoegen', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'type' => [ + 'label' => 'Type', + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + ], + ], + 'rewards' => [ + 'title' => 'Productbeloningen', + 'description' => 'Selecteer welke producten worden afgeprijsd als ze in de winkelwagen zitten en aan de bovenstaande voorwaarden voldoen.', + 'actions' => [ + 'attach' => [ + 'label' => 'Product Toevoegen', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'type' => [ + 'label' => 'Type', + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + ], + ], + 'conditions' => [ + 'title' => 'Productvoorwaarden', + 'description' => 'Selecteer de producten die nodig zijn voor de korting.', + 'actions' => [ + 'attach' => [ + 'label' => 'Product Toevoegen', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'type' => [ + 'label' => 'Type', + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + ], + ], + 'productvariants' => [ + 'title' => 'Productvarianten', + 'description' => 'Selecteer welke productvarianten beperkt moeten worden tot deze korting.', + 'actions' => [ + 'attach' => [ + 'label' => 'Productvariant Toevoegen', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'values' => [ + 'label' => 'Optie(s)', + ], + ], + 'form' => [ + 'type' => [ + 'options' => [ + 'limitation' => [ + 'label' => 'Beperking', + ], + 'exclusion' => [ + 'label' => 'Uitsluiting', + ], + ], + ], + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/fieldtypes.php b/packages/admin/resources/lang/nl/fieldtypes.php new file mode 100644 index 0000000000..4b36c2846f --- /dev/null +++ b/packages/admin/resources/lang/nl/fieldtypes.php @@ -0,0 +1,72 @@ + [ + 'label' => 'Keuzelijst', + 'form' => [ + 'lookups' => [ + 'label' => 'Opzoekingen', + 'key_label' => 'Label', + 'value_label' => 'Waarde', + ], + ], + ], + 'listfield' => [ + 'label' => 'Lijstveld', + ], + 'text' => [ + 'label' => 'Tekst', + 'form' => [ + 'richtext' => [ + 'label' => 'Rich Text', + ], + ], + ], + 'translatedtext' => [ + 'label' => 'Vertaald Tekst', + 'form' => [ + 'richtext' => [ + 'label' => 'Rich Text', + ], + 'locales' => 'Talen', + ], + ], + 'toggle' => [ + 'label' => 'Schakelaar', + ], + 'youtube' => [ + 'label' => 'YouTube', + ], + 'vimeo' => [ + 'label' => 'Vimeo', + ], + 'number' => [ + 'label' => 'Nummer', + 'form' => [ + 'min' => [ + 'label' => 'Min.', + ], + 'max' => [ + 'label' => 'Max.', + ], + ], + ], + 'file' => [ + 'label' => 'Bestand', + 'form' => [ + 'file_types' => [ + 'label' => 'Toegestane Bestandstypen', + 'placeholder' => 'Nieuwe MIME', + ], + 'multiple' => [ + 'label' => 'Meerdere Bestanden Toestaan', + ], + 'min_files' => [ + 'label' => 'Min. Bestanden', + ], + 'max_files' => [ + 'label' => 'Max. Bestanden', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/global.php b/packages/admin/resources/lang/nl/global.php new file mode 100644 index 0000000000..a98f7688da --- /dev/null +++ b/packages/admin/resources/lang/nl/global.php @@ -0,0 +1,12 @@ + [ + 'catalog' => 'Catalogus', + 'sales' => 'Verkoop', + 'reports' => 'Rapporten', + 'settings' => 'Instellingen', + ], + +]; diff --git a/packages/admin/resources/lang/nl/language.php b/packages/admin/resources/lang/nl/language.php new file mode 100644 index 0000000000..58803b8877 --- /dev/null +++ b/packages/admin/resources/lang/nl/language.php @@ -0,0 +1,33 @@ + 'Taal', + + 'plural_label' => 'Talen', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'code' => [ + 'label' => 'Code', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'code' => [ + 'label' => 'Code', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/order.php b/packages/admin/resources/lang/nl/order.php new file mode 100644 index 0000000000..311cce8d89 --- /dev/null +++ b/packages/admin/resources/lang/nl/order.php @@ -0,0 +1,292 @@ + 'Bestelling', + + 'plural_label' => 'Bestellingen', + + 'breadcrumb' => [ + 'manage' => 'Beheren', + ], + + 'transactions' => [ + 'capture' => 'Geïncasseerd', + 'intent' => 'Voorgenomen', + 'refund' => 'Terugbetaald', + 'failed' => 'Mislukt', + ], + + 'table' => [ + 'status' => [ + 'label' => 'Status', + ], + 'reference' => [ + 'label' => 'Referentie', + ], + 'customer_reference' => [ + 'label' => 'Klantreferentie', + ], + 'customer' => [ + 'label' => 'Klant', + ], + 'tags' => [ + 'label' => 'Tags', + ], + 'postcode' => [ + 'label' => 'Postcode', + ], + 'email' => [ + 'label' => 'E-mail', + 'copy_message' => 'E-mailadres gekopieerd', + ], + 'phone' => [ + 'label' => 'Telefoon', + ], + 'total' => [ + 'label' => 'Totaal', + ], + 'date' => [ + 'label' => 'Datum', + ], + 'new_customer' => [ + 'label' => 'Klanttype', + ], + 'placed_after' => [ + 'label' => 'Geplaatst na', + ], + 'placed_before' => [ + 'label' => 'Geplaatst voor', + ], + ], + + 'form' => [ + 'address' => [ + 'first_name' => [ + 'label' => 'Voornaam', + ], + 'last_name' => [ + 'label' => 'Achternaam', + ], + 'line_one' => [ + 'label' => 'Adresregel 1', + ], + 'line_two' => [ + 'label' => 'Adresregel 2', + ], + 'line_three' => [ + 'label' => 'Adresregel 3', + ], + 'company_name' => [ + 'label' => 'Bedrijfsnaam', + ], + 'contact_phone' => [ + 'label' => 'Telefoon', + ], + 'contact_email' => [ + 'label' => 'E-mailadres', + ], + 'city' => [ + 'label' => 'Stad', + ], + 'state' => [ + 'label' => 'Staat / Provincie', + ], + 'postcode' => [ + 'label' => 'Postcode', + ], + 'country_id' => [ + 'label' => 'Land', + ], + ], + + 'reference' => [ + 'label' => 'Referentie', + ], + 'status' => [ + 'label' => 'Status', + ], + 'transaction' => [ + 'label' => 'Transactie', + ], + 'amount' => [ + 'label' => 'Bedrag', + + 'hint' => [ + 'less_than_total' => 'Je staat op het punt een bedrag te incasseren dat minder is dan de totale transactiewaarde', + ], + ], + + 'notes' => [ + 'label' => 'Notities', + ], + 'confirm' => [ + 'label' => 'Bevestigen', + + 'alert' => 'Bevestiging vereist', + + 'hint' => [ + 'capture' => 'Bevestig alstublieft dat u deze betaling wilt incasseren', + 'refund' => 'Bevestig alstublieft dat u dit bedrag wilt terugbetalen.', + ], + ], + ], + + 'infolist' => [ + 'notes' => [ + 'label' => 'Notities', + 'placeholder' => 'Geen notities bij deze bestelling', + ], + 'delivery_instructions' => [ + 'label' => 'Leveringsinstructies', + ], + 'shipping_total' => [ + 'label' => 'Verzendkosten Totaal', + ], + 'paid' => [ + 'label' => 'Betaald', + ], + 'refund' => [ + 'label' => 'Terugbetaling', + ], + 'unit_price' => [ + 'label' => 'Eenheidsprijs', + ], + 'quantity' => [ + 'label' => 'Aantal', + ], + 'sub_total' => [ + 'label' => 'Subtotaal', + ], + 'discount_total' => [ + 'label' => 'Korting Totaal', + ], + 'total' => [ + 'label' => 'Totaal', + ], + 'current_stock_level' => [ + 'message' => 'Huidig Voorraadniveau: :count', + ], + 'purchase_stock_level' => [ + 'message' => 'op het moment van bestelling: :count', + ], + 'status' => [ + 'label' => 'Status', + ], + 'reference' => [ + 'label' => 'Referentie', + ], + 'customer_reference' => [ + 'label' => 'Klantreferentie', + ], + 'channel' => [ + 'label' => 'Kanaal', + ], + 'date_created' => [ + 'label' => 'Aanmaakdatum', + ], + 'date_placed' => [ + 'label' => 'Plaatsingsdatum', + ], + 'new_returning' => [ + 'label' => 'Nieuw / Terugkerend', + ], + 'new_customer' => [ + 'label' => 'Nieuwe Klant', + ], + 'returning_customer' => [ + 'label' => 'Terugkerende Klant', + ], + 'shipping_address' => [ + 'label' => 'Verzendadres', + ], + 'billing_address' => [ + 'label' => 'Factuuradres', + ], + 'address_not_set' => [ + 'label' => 'Geen adres ingesteld', + ], + 'billing_matches_shipping' => [ + 'label' => 'Zelfde als verzendadres', + ], + 'additional_info' => [ + 'label' => 'Aanvullende informatie', + ], + 'no_additional_info' => [ + 'label' => 'Geen aanvullende informatie', + ], + 'tags' => [ + 'label' => 'Tags', + ], + 'timeline' => [ + 'label' => 'Tijdlijn', + ], + 'transactions' => [ + 'label' => 'Transacties', + 'placeholder' => 'Geen transacties', + ], + 'alert' => [ + 'requires_capture' => 'Deze bestelling moet nog worden geïncasseerd.', + 'partially_refunded' => 'Deze bestelling is gedeeltelijk terugbetaald.', + 'refunded' => 'Deze bestelling is terugbetaald.', + ], + ], + + 'action' => [ + 'bulk_update_status' => [ + 'label' => 'Status Bijwerken', + 'notification' => 'Bestellingsstatus bijgewerkt', + ], + 'update_status' => [ + 'new_status' => [ + 'label' => 'Nieuwe status', + ], + 'additional_content' => [ + 'label' => 'Aanvullende inhoud', + ], + 'additional_email_recipient' => [ + 'label' => 'Aanvullende e-mailontvanger', + 'placeholder' => 'optioneel', + ], + ], + 'download_order_pdf' => [ + 'label' => 'PDF Downloaden', + 'notification' => 'Bestelling PDF downloaden', + ], + 'edit_address' => [ + 'label' => 'Bewerken', + + 'notification' => [ + 'error' => 'Fout', + + 'billing_address' => [ + 'saved' => 'Factuuradres opgeslagen', + ], + + 'shipping_address' => [ + 'saved' => 'Verzendadres opgeslagen', + ], + ], + ], + 'edit_tags' => [ + 'label' => 'Bewerken', + ], + 'capture_payment' => [ + 'label' => 'Betaling Incasseren', + + 'notification' => [ + 'error' => 'Er was een probleem met het incasseren', + 'success' => 'Incasseren succesvol', + ], + ], + 'refund_payment' => [ + 'label' => 'Terugbetaling', + + 'notification' => [ + 'error' => 'Er was een probleem met de terugbetaling', + 'success' => 'Terugbetaling succesvol', + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/product.php b/packages/admin/resources/lang/nl/product.php new file mode 100644 index 0000000000..1720034b0f --- /dev/null +++ b/packages/admin/resources/lang/nl/product.php @@ -0,0 +1,121 @@ + 'Product', + + 'plural_label' => 'Producten', + + 'status' => [ + 'unpublished' => [ + 'content' => 'Momenteel in conceptstatus, dit product is verborgen op alle kanalen en klantgroepen.', + ], + 'availability' => [ + 'customer_groups' => 'Dit product is momenteel niet beschikbaar voor alle klantgroepen.', + 'channels' => 'Dit product is momenteel niet beschikbaar voor alle kanalen.', + ], + ], + + 'table' => [ + 'status' => [ + 'label' => 'Status', + 'states' => [ + 'deleted' => 'Verwijderd', + 'draft' => 'Concept', + 'published' => 'Gepubliceerd', + ], + ], + 'name' => [ + 'label' => 'Naam', + ], + 'brand' => [ + 'label' => 'Merk', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'stock' => [ + 'label' => 'Voorraad', + ], + 'producttype' => [ + 'label' => 'Producttype', + ], + ], + + 'actions' => [ + 'edit_status' => [ + 'label' => 'Status Bijwerken', + 'heading' => 'Status Bijwerken', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'brand' => [ + 'label' => 'Merk', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'producttype' => [ + 'label' => 'Producttype', + ], + 'status' => [ + 'label' => 'Status', + 'options' => [ + 'published' => [ + 'label' => 'Gepubliceerd', + 'description' => 'Dit product zal beschikbaar zijn voor alle ingeschakelde klantgroepen en kanalen', + ], + 'draft' => [ + 'label' => 'Concept', + 'description' => 'Dit product zal verborgen zijn op alle kanalen en klantgroepen', + ], + ], + ], + 'tags' => [ + 'label' => 'Tags', + ], + 'collections' => [ + 'label' => 'Collecties', + ], + ], + + 'pages' => [ + 'availability' => [ + 'label' => 'Beschikbaarheid', + ], + 'identifiers' => [ + 'label' => 'Product Identificatoren', + ], + 'inventory' => [ + 'label' => 'Voorraad', + ], + 'pricing' => [ + 'form' => [ + 'tax_class_id' => [ + 'label' => 'Belastingklasse', + ], + 'tax_ref' => [ + 'label' => 'Belastingreferentie', + 'helper_text' => 'Optioneel, voor integratie met systemen van derden.', + ], + ], + ], + 'shipping' => [ + 'label' => 'Verzending', + ], + 'variants' => [ + 'label' => 'Varianten', + ], + 'collections' => [ + 'label' => 'Collecties', + ], + 'associations' => [ + 'label' => 'Productassociaties', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/productoption.php b/packages/admin/resources/lang/nl/productoption.php new file mode 100644 index 0000000000..d99beca27e --- /dev/null +++ b/packages/admin/resources/lang/nl/productoption.php @@ -0,0 +1,124 @@ + 'Productoptie', + + 'plural_label' => 'Productopties', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'label' => [ + 'label' => 'Label', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + 'shared' => [ + 'label' => 'Gedeeld', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'label' => [ + 'label' => 'Label', + ], + 'handle' => [ + 'label' => 'Handvat', + ], + ], + + 'widgets' => [ + 'product-options' => [ + 'notifications' => [ + 'save-variants' => [ + 'success' => [ + 'title' => 'Productvarianten opgeslagen', + ], + ], + ], + 'actions' => [ + 'cancel' => [ + 'label' => 'Annuleren', + ], + 'save-options' => [ + 'label' => 'Opties opslaan', + ], + 'add-shared-option' => [ + 'label' => 'Gedeelde optie toevoegen', + 'form' => [ + 'product_option' => [ + 'label' => 'Productoptie', + ], + 'no_shared_components' => [ + 'label' => 'Er zijn geen gedeelde opties beschikbaar.', + ], + ], + ], + 'add-restricted-option' => [ + 'label' => 'Optie toevoegen', + ], + ], + 'options-list' => [ + 'empty' => [ + 'heading' => 'Er zijn geen productopties geconfigureerd', + 'description' => 'Voeg een gedeelde of beperkte productoptie toe om enkele varianten te genereren.', + ], + ], + 'options-table' => [ + 'title' => 'Productopties', + 'configure-options' => [ + 'label' => 'Opties configureren', + ], + 'table' => [ + 'option' => [ + 'label' => 'Optie', + ], + 'values' => [ + 'label' => 'Waarden', + ], + ], + ], + 'variants-table' => [ + 'title' => 'Productvarianten', + 'actions' => [ + 'create' => [ + 'label' => 'Variant maken', + ], + 'edit' => [ + 'label' => 'Bewerken', + ], + 'delete' => [ + 'label' => 'Verwijderen', + ], + ], + 'empty' => [ + 'heading' => 'Geen varianten geconfigureerd', + ], + 'table' => [ + 'new' => [ + 'label' => 'NIEUW', + ], + 'option' => [ + 'label' => 'Optie', + ], + 'sku' => [ + 'label' => 'SKU', + ], + 'price' => [ + 'label' => 'Prijs', + ], + 'stock' => [ + 'label' => 'Voorraad', + ], + ], + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/producttype.php b/packages/admin/resources/lang/nl/producttype.php new file mode 100644 index 0000000000..2f674d3a30 --- /dev/null +++ b/packages/admin/resources/lang/nl/producttype.php @@ -0,0 +1,52 @@ + 'Producttype', + + 'plural_label' => 'Producttypen', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'products_count' => [ + 'label' => 'Aantal producten', + ], + 'product_attributes_count' => [ + 'label' => 'Productattributen', + ], + 'variant_attributes_count' => [ + 'label' => 'Variantattributen', + ], + ], + + 'tabs' => [ + 'product_attributes' => [ + 'label' => 'Productattributen', + ], + 'variant_attributes' => [ + 'label' => 'Variantattributen', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + ], + + 'attributes' => [ + 'no_groups' => 'Er zijn geen attributengroepen beschikbaar.', + 'no_attributes' => 'Er zijn geen attributen beschikbaar.', + ], + + 'action' => [ + 'delete' => [ + 'notification' => [ + 'error_protected' => 'Dit producttype kan niet worden verwijderd omdat er producten aan zijn gekoppeld.', + ], + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/productvariant.php b/packages/admin/resources/lang/nl/productvariant.php new file mode 100644 index 0000000000..468a51f04e --- /dev/null +++ b/packages/admin/resources/lang/nl/productvariant.php @@ -0,0 +1,105 @@ + 'Productvariant', + 'plural_label' => 'Productvarianten', + 'pages' => [ + 'edit' => [ + 'title' => 'Basisinformatie', + ], + 'media' => [ + 'title' => 'Media', + 'form' => [ + 'no_selection' => [ + 'label' => 'U heeft momenteel geen afbeelding geselecteerd voor deze variant.', + ], + 'no_media_available' => [ + 'label' => 'Er is momenteel geen media beschikbaar voor dit product.', + ], + 'images' => [ + 'label' => 'Primaire Afbeelding', + 'helper_text' => 'Selecteer de productafbeelding die deze variant vertegenwoordigt.', + ], + ], + ], + 'identifiers' => [ + 'title' => 'Identificatoren', + ], + 'inventory' => [ + 'title' => 'Voorraad', + ], + 'shipping' => [ + 'title' => 'Verzending', + ], + ], + 'form' => [ + 'sku' => [ + 'label' => 'Artikelnummer (SKU)', + ], + 'gtin' => [ + 'label' => 'Globaal Handelsartikelnummer (GTIN)', + ], + 'mpn' => [ + 'label' => 'Fabrikant Onderdeelnummer (MPN)', + ], + 'ean' => [ + 'label' => 'UPC/EAN', + ], + 'stock' => [ + 'label' => 'Op Voorraad', + ], + 'backorder' => [ + 'label' => 'In Nabestelling', + ], + 'purchasable' => [ + 'label' => 'Koopbaarheid', + 'options' => [ + 'always' => 'Altijd', + 'in_stock' => 'Op Voorraad', + 'in_stock_or_on_backorder' => 'Op Voorraad of In Nabestelling', + ], + ], + 'unit_quantity' => [ + 'label' => 'Eenheidsaantal', + 'helper_text' => 'Hoeveel individuele items vormen 1 eenheid.', + ], + 'min_quantity' => [ + 'label' => 'Minimale Hoeveelheid', + 'helper_text' => 'De minimale hoeveelheid van een productvariant die in één aankoop kan worden gekocht.', + ], + 'quantity_increment' => [ + 'label' => 'Hoeveelheidsverhoging', + 'helper_text' => 'De productvariant moet in veelvouden van deze hoeveelheid worden gekocht.', + ], + 'tax_class_id' => [ + 'label' => 'Belastingklasse', + ], + 'shippable' => [ + 'label' => 'Verzendbaar', + ], + 'length_value' => [ + 'label' => 'Lengte', + ], + 'length_unit' => [ + 'label' => 'Lengte-eenheid', + ], + 'width_value' => [ + 'label' => 'Breedte', + ], + 'width_unit' => [ + 'label' => 'Breedte-eenheid', + ], + 'height_value' => [ + 'label' => 'Hoogte', + ], + 'height_unit' => [ + 'label' => 'Hoogte-eenheid', + ], + 'weight_value' => [ + 'label' => 'Gewicht', + ], + 'weight_unit' => [ + 'label' => 'Gewichtseenheid', + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/relationmanagers.php b/packages/admin/resources/lang/nl/relationmanagers.php new file mode 100644 index 0000000000..f982eead63 --- /dev/null +++ b/packages/admin/resources/lang/nl/relationmanagers.php @@ -0,0 +1,262 @@ + [ + 'actions' => [ + 'attach' => [ + 'label' => 'Klantengroep Koppelen', + ], + ], + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'enabled' => [ + 'label' => 'Ingeschakeld', + ], + 'starts_at' => [ + 'label' => 'Startdatum', + ], + 'ends_at' => [ + 'label' => 'Einddatum', + ], + 'visible' => [ + 'label' => 'Zichtbaar', + ], + 'purchasable' => [ + 'label' => 'Koopbaar', + ], + ], + 'table' => [ + 'description' => 'Koppel klantengroepen aan dit :type om de beschikbaarheid te bepalen.', + 'name' => [ + 'label' => 'Naam', + ], + 'enabled' => [ + 'label' => 'Ingeschakeld', + ], + 'starts_at' => [ + 'label' => 'Startdatum', + ], + 'ends_at' => [ + 'label' => 'Einddatum', + ], + 'visible' => [ + 'label' => 'Zichtbaar', + ], + 'purchasable' => [ + 'label' => 'Koopbaar', + ], + ], + ], + 'channels' => [ + 'actions' => [ + 'attach' => [ + 'label' => 'Nog een Kanaal Inplannen', + ], + ], + 'form' => [ + 'enabled' => [ + 'label' => 'Ingeschakeld', + 'helper_text_false' => 'Dit kanaal wordt niet ingeschakeld, zelfs als er een startdatum aanwezig is.', + ], + 'starts_at' => [ + 'label' => 'Startdatum', + 'helper_text' => 'Laat leeg om beschikbaar te zijn vanaf elke datum.', + ], + 'ends_at' => [ + 'label' => 'Einddatum', + 'helper_text' => 'Laat leeg om onbeperkt beschikbaar te zijn.', + ], + ], + 'table' => [ + 'description' => 'Bepaal welke kanalen zijn ingeschakeld en plan de beschikbaarheid.', + 'name' => [ + 'label' => 'Naam', + ], + 'enabled' => [ + 'label' => 'Ingeschakeld', + ], + 'starts_at' => [ + 'label' => 'Startdatum', + ], + 'ends_at' => [ + 'label' => 'Einddatum', + ], + ], + ], + 'medias' => [ + 'title' => 'Media', + 'title_plural' => 'Media', + 'actions' => [ + 'create' => [ + 'label' => 'Media Aanmaken', + ], + 'view' => [ + 'label' => 'Bekijken', + ], + ], + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'media' => [ + 'label' => 'Afbeelding', + ], + 'primary' => [ + 'label' => 'Primair', + ], + ], + 'table' => [ + 'image' => [ + 'label' => 'Afbeelding', + ], + 'file' => [ + 'label' => 'Bestand', + ], + 'name' => [ + 'label' => 'Naam', + ], + 'primary' => [ + 'label' => 'Primair', + ], + ], + ], + 'urls' => [ + 'title' => 'URL', + 'title_plural' => 'URLs', + 'actions' => [ + 'create' => [ + 'label' => 'URL Aanmaken', + ], + ], + 'filters' => [ + 'language_id' => [ + 'label' => 'Taal', + ], + ], + 'form' => [ + 'slug' => [ + 'label' => 'Slug', + ], + 'default' => [ + 'label' => 'Standaard', + ], + 'language' => [ + 'label' => 'Taal', + ], + ], + 'table' => [ + 'slug' => [ + 'label' => 'Slug', + ], + 'default' => [ + 'label' => 'Standaard', + ], + 'language' => [ + 'label' => 'Taal', + ], + ], + ], + 'customer_group_pricing' => [ + 'title' => 'Klantengroep Prijzen', + 'title_plural' => 'Klantengroep Prijzen', + 'table' => [ + 'heading' => 'Klantengroep Prijzen', + 'description' => 'Koppel prijs aan klantengroepen om de productprijs te bepalen.', + 'empty_state' => [ + 'label' => 'Er bestaan geen klantengroep prijzen.', + 'description' => 'Maak een klantengroep prijs om te beginnen.', + ], + 'actions' => [ + 'create' => [ + 'label' => 'Klantengroep Prijs Toevoegen', + 'modal' => [ + 'heading' => 'Klantengroep Prijs Aanmaken', + ], + ], + ], + ], + ], + 'pricing' => [ + 'title' => 'Prijzen', + 'title_plural' => 'Prijzen', + 'tab_name' => 'Prijsbreuken', + 'table' => [ + 'heading' => 'Prijsbreuken', + 'description' => 'Verlaag de prijs wanneer een klant in grotere hoeveelheden koopt.', + 'empty_state' => [ + 'label' => 'Er bestaan geen prijsbreuken.', + ], + 'actions' => [ + 'create' => [ + 'label' => 'Prijsbreuk Toevoegen', + ], + ], + 'price' => [ + 'label' => 'Prijs', + ], + 'customer_group' => [ + 'label' => 'Klantengroep', + 'placeholder' => 'Alle Klantengroepen', + ], + 'min_quantity' => [ + 'label' => 'Minimale Hoeveelheid', + ], + 'currency' => [ + 'label' => 'Valuta', + ], + ], + 'form' => [ + 'price' => [ + 'label' => 'Prijs', + 'helper_text' => 'De aankoopprijs, voor kortingen.', + ], + 'customer_group_id' => [ + 'label' => 'Klantengroep', + 'placeholder' => 'Alle Klantengroepen', + 'helper_text' => 'Selecteer welke klantengroep deze prijs van toepassing is.', + ], + 'min_quantity' => [ + 'label' => 'Minimale Hoeveelheid', + 'helper_text' => 'Selecteer de minimale hoeveelheid waarvoor deze prijs beschikbaar is.', + 'validation' => [ + 'unique' => 'Klantengroep en Minimale Hoeveelheid moeten uniek zijn.', + ], + ], + 'currency_id' => [ + 'label' => 'Valuta', + 'helper_text' => 'Selecteer de valuta voor deze prijs.', + ], + 'compare_price' => [ + 'label' => 'Vergelijkingsprijs', + 'helper_text' => 'De oorspronkelijke prijs of adviesprijs, ter vergelijking met de aankoopprijs.', + ], + 'basePrices' => [ + 'title' => 'Prijzen', + 'form' => [ + 'price' => [ + 'label' => 'Prijs', + 'helper_text' => 'De aankoopprijs, voor kortingen.', + ], + 'compare_price' => [ + 'label' => 'Vergelijkingsprijs', + 'helper_text' => 'De oorspronkelijke prijs of adviesprijs, ter vergelijking met de aankoopprijs.', + ], + ], + 'tooltip' => 'Automatisch gegenereerd op basis van wisselkoersen.', + ], + ], + ], + 'tax_rate_amounts' => [ + 'table' => [ + 'description' => '', + 'percentage' => [ + 'label' => 'Percentage', + ], + 'tax_class' => [ + 'label' => 'Belastingklasse', + ], + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/staff.php b/packages/admin/resources/lang/nl/staff.php new file mode 100644 index 0000000000..bf9add60b6 --- /dev/null +++ b/packages/admin/resources/lang/nl/staff.php @@ -0,0 +1,81 @@ + 'Personeel', + + 'plural_label' => 'Personeel', + + 'table' => [ + 'firstname' => [ + 'label' => 'Voornaam', + ], + 'lastname' => [ + 'label' => 'Achternaam', + ], + 'email' => [ + 'label' => 'E-mail', + ], + 'admin' => [ + 'badge' => 'Super Admin', + ], + ], + + 'form' => [ + 'firstname' => [ + 'label' => 'Voornaam', + ], + 'lastname' => [ + 'label' => 'Achternaam', + ], + 'email' => [ + 'label' => 'E-mail', + ], + 'password' => [ + 'label' => 'Wachtwoord', + 'hint' => 'Wachtwoord resetten', + ], + 'admin' => [ + 'label' => 'Super Admin', + 'helper' => 'Super admin rollen kunnen niet worden gewijzigd in de hub.', + ], + 'roles' => [ + 'label' => 'Rollen', + 'helper' => ':roles hebben volledige toegang', + ], + 'permissions' => [ + 'label' => 'Machtigingen', + ], + 'role' => [ + 'label' => 'Rolnaam', + ], + ], + + 'action' => [ + 'acl' => [ + 'label' => 'Toegangscontrole', + ], + 'add-role' => [ + 'label' => 'Rol toevoegen', + ], + 'delete-role' => [ + 'label' => 'Rol verwijderen', + 'heading' => 'Rol verwijderen: :role', + ], + ], + + 'acl' => [ + 'title' => 'Toegangscontrole', + 'tooltip' => [ + 'roles-included' => 'Machtiging is inbegrepen in de volgende rollen', + ], + 'notification' => [ + 'updated' => 'Bijgewerkt', + 'error' => 'Fout', + 'no-role' => 'Rol niet geregistreerd in Lunar', + 'no-permission' => 'Machtiging niet geregistreerd in Lunar', + 'no-role-permission' => 'Rol en Machtiging niet geregistreerd in Lunar', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/tag.php b/packages/admin/resources/lang/nl/tag.php new file mode 100644 index 0000000000..ece834d9d7 --- /dev/null +++ b/packages/admin/resources/lang/nl/tag.php @@ -0,0 +1,21 @@ + 'Label', + + 'plural_label' => 'Labels', + + 'table' => [ + 'value' => [ + 'label' => 'Waarde', + ], + ], + + 'form' => [ + 'value' => [ + 'label' => 'Waarde', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/taxclass.php b/packages/admin/resources/lang/nl/taxclass.php new file mode 100644 index 0000000000..506e5962b0 --- /dev/null +++ b/packages/admin/resources/lang/nl/taxclass.php @@ -0,0 +1,27 @@ + 'Belastingklasse', + + 'plural_label' => 'Belastingklassen', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/taxrate.php b/packages/admin/resources/lang/nl/taxrate.php new file mode 100644 index 0000000000..dbd6e7cd3d --- /dev/null +++ b/packages/admin/resources/lang/nl/taxrate.php @@ -0,0 +1,33 @@ + 'Belastingtarief', + + 'plural_label' => 'Belastingtarieven', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'tax_zone' => [ + 'label' => 'Belastingzone', + ], + 'priority' => [ + 'label' => 'Prioriteit', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'priority' => [ + 'label' => 'Prioriteit', + ], + 'tax_zone_id' => [ + 'label' => 'Belastingzone', + ], + ], + +]; diff --git a/packages/admin/resources/lang/nl/taxzone.php b/packages/admin/resources/lang/nl/taxzone.php new file mode 100644 index 0000000000..d1aabe7b7d --- /dev/null +++ b/packages/admin/resources/lang/nl/taxzone.php @@ -0,0 +1,69 @@ + 'Belastingzone', + + 'plural_label' => 'Belastingzones', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'zone_type' => [ + 'label' => 'Zonetype', + ], + 'active' => [ + 'label' => 'Actief', + ], + 'default' => [ + 'label' => 'Standaard', + ], + ], + + 'form' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'zone_type' => [ + 'label' => 'Zonetype', + 'options' => [ + 'country' => 'Beperk tot Landen', + 'states' => 'Beperk tot Staten', + 'postcodes' => 'Beperk tot Postcodes', + ], + ], + 'price_display' => [ + 'label' => 'Prijsweergave', + 'options' => [ + 'include_tax' => 'Inclusief Belasting', + 'exclude_tax' => 'Exclusief Belasting', + ], + ], + 'active' => [ + 'label' => 'Actief', + ], + 'default' => [ + 'label' => 'Standaard', + ], + + 'zone_countries' => [ + 'label' => 'Landen', + ], + + 'zone_country' => [ + 'label' => 'Land', + ], + + 'zone_states' => [ + 'label' => 'Staten', + ], + + 'zone_postcodes' => [ + 'label' => 'Postcodes', + 'helper' => 'Plaats elke postcode op een nieuwe regel. Ondersteunt wildcards zoals NW*', + ], + + ], + +]; diff --git a/packages/admin/resources/lang/nl/user.php b/packages/admin/resources/lang/nl/user.php new file mode 100644 index 0000000000..ffe06b5994 --- /dev/null +++ b/packages/admin/resources/lang/nl/user.php @@ -0,0 +1,29 @@ + 'Gebruiker', + + 'plural_label' => 'Gebruikers', + + 'table' => [ + 'name' => [ + 'label' => 'Naam', + ], + 'email' => [ + 'label' => 'E-mail', + ], + ], + + 'form' => [ + 'email' => [ + 'label' => 'E-mail', + ], + 'password' => [ + 'label' => 'Nieuw Wachtwoord', + ], + 'password_confirmation' => [ + 'label' => 'Bevestig Nieuw Wachtwoord', + ], + ], +]; diff --git a/packages/admin/resources/lang/nl/widgets.php b/packages/admin/resources/lang/nl/widgets.php new file mode 100644 index 0000000000..fcfa019967 --- /dev/null +++ b/packages/admin/resources/lang/nl/widgets.php @@ -0,0 +1,118 @@ + [ + 'orders' => [ + 'order_stats_overview' => [ + 'stat_one' => [ + 'label' => 'Bestellingen vandaag', + 'increase' => ':percentage% toename ten opzichte van :count gisteren', + 'decrease' => ':percentage% afname ten opzichte van :count gisteren', + 'neutral' => 'Geen verandering ten opzichte van gisteren', + ], + 'stat_two' => [ + 'label' => 'Bestellingen afgelopen 7 dagen', + 'increase' => ':percentage% toename ten opzichte van :count vorige periode', + 'decrease' => ':percentage% afname ten opzichte van :count vorige periode', + 'neutral' => 'Geen verandering ten opzichte van vorige periode', + ], + 'stat_three' => [ + 'label' => 'Bestellingen afgelopen 30 dagen', + 'increase' => ':percentage% toename ten opzichte van :count vorige periode', + 'decrease' => ':percentage% afname ten opzichte van :count vorige periode', + 'neutral' => 'Geen verandering ten opzichte van vorige periode', + ], + 'stat_four' => [ + 'label' => 'Verkopen vandaag', + 'increase' => ':percentage% toename ten opzichte van :total gisteren', + 'decrease' => ':percentage% afname ten opzichte van :total gisteren', + 'neutral' => 'Geen verandering ten opzichte van gisteren', + ], + 'stat_five' => [ + 'label' => 'Verkopen afgelopen 7 dagen', + 'increase' => ':percentage% toename ten opzichte van :total vorige periode', + 'decrease' => ':percentage% afname ten opzichte van :total vorige periode', + 'neutral' => 'Geen verandering ten opzichte van vorige periode', + ], + 'stat_six' => [ + 'label' => 'Verkopen afgelopen 30 dagen', + 'increase' => ':percentage% toename ten opzichte van :total vorige periode', + 'decrease' => ':percentage% afname ten opzichte van :total vorige periode', + 'neutral' => 'Geen verandering ten opzichte van vorige periode', + ], + ], + 'order_totals_chart' => [ + 'heading' => 'Bestellingstotalen van het afgelopen jaar', + 'series_one' => [ + 'label' => 'Deze Periode', + ], + 'series_two' => [ + 'label' => 'Vorige Periode', + ], + 'yaxis' => [ + 'label' => 'Omzet :currency', + ], + ], + 'order_sales_chart' => [ + 'heading' => 'Bestellingen / Verkooprapport', + 'series_one' => [ + 'label' => 'Bestellingen', + ], + 'series_two' => [ + 'label' => 'Omzet', + ], + 'yaxis' => [ + 'series_one' => [ + 'label' => '# Bestellingen', + ], + 'series_two' => [ + 'label' => 'Totale Waarde', + ], + ], + ], + 'average_order_value' => [ + 'heading' => 'Gemiddelde Bestelwaarde', + ], + 'new_returning_customers' => [ + 'heading' => 'Nieuwe vs Terugkerende Klanten', + 'series_one' => [ + 'label' => 'Nieuwe Klanten', + ], + 'series_two' => [ + 'label' => 'Terugkerende Klanten', + ], + ], + 'popular_products' => [ + 'heading' => 'Bestverkochte producten (laatste 12 maanden)', + 'description' => 'Deze cijfers zijn gebaseerd op het aantal keren dat een product in een bestelling voorkomt, niet op de bestelde hoeveelheid.', + ], + 'latest_orders' => [ + 'heading' => 'Laatste bestellingen', + ], + ], + ], + 'customer' => [ + 'stats_overview' => [ + 'total_orders' => [ + 'label' => 'Totaal aantal bestellingen', + ], + 'avg_spend' => [ + 'label' => 'Gem. Uitgave', + ], + 'total_spend' => [ + 'label' => 'Totale Uitgave', + ], + ], + ], + 'variant_switcher' => [ + 'label' => 'Variant Wisselen', + 'table' => [ + 'sku' => [ + 'label' => 'SKU', + ], + 'values' => [ + 'label' => 'Waarden', + ], + ], + ], +]; diff --git a/packages/admin/src/Filament/Resources/CollectionGroupResource.php b/packages/admin/src/Filament/Resources/CollectionGroupResource.php index d96f76427d..d506b2184c 100644 --- a/packages/admin/src/Filament/Resources/CollectionGroupResource.php +++ b/packages/admin/src/Filament/Resources/CollectionGroupResource.php @@ -21,8 +21,6 @@ class CollectionGroupResource extends BaseResource protected static ?int $navigationSort = 3; - protected static ?string $navigationLabel = 'Collections'; - public static function getLabel(): string { return __('lunarpanel::collectiongroup.label'); diff --git a/packages/admin/src/Filament/Resources/DiscountResource.php b/packages/admin/src/Filament/Resources/DiscountResource.php index 82b052e342..8eff546762 100644 --- a/packages/admin/src/Filament/Resources/DiscountResource.php +++ b/packages/admin/src/Filament/Resources/DiscountResource.php @@ -361,7 +361,8 @@ protected static function getTableColumns(): array \Lunar\Models\Discount::SCHEDULED => 'info', }), Tables\Columns\TextColumn::make('name') - ->label(__('lunarpanel::discount.table.name.label')), + ->label(__('lunarpanel::discount.table.name.label')) + ->searchable(), Tables\Columns\TextColumn::make('type') ->formatStateUsing(function ($state) { return (new $state)->getName(); diff --git a/packages/admin/src/Filament/Resources/ProductResource/Pages/ManageProductInventory.php b/packages/admin/src/Filament/Resources/ProductResource/Pages/ManageProductInventory.php index 900356b578..da6d6ef1ff 100644 --- a/packages/admin/src/Filament/Resources/ProductResource/Pages/ManageProductInventory.php +++ b/packages/admin/src/Filament/Resources/ProductResource/Pages/ManageProductInventory.php @@ -92,7 +92,7 @@ protected function getFormActions(): array ]; } - public function form(Form $form): Form + public function getDefaultForm(Form $form): Form { return (new ManageVariantInventory)->form($form)->statePath(''); } diff --git a/packages/admin/src/Filament/Resources/ProductVariantResource/Pages/ManageVariantInventory.php b/packages/admin/src/Filament/Resources/ProductVariantResource/Pages/ManageVariantInventory.php index 3dec22cadd..72aac2712d 100644 --- a/packages/admin/src/Filament/Resources/ProductVariantResource/Pages/ManageVariantInventory.php +++ b/packages/admin/src/Filament/Resources/ProductVariantResource/Pages/ManageVariantInventory.php @@ -61,7 +61,7 @@ protected function getDefaultHeaderActions(): array ]; } - public function form(Form $form): Form + public function getDefaultForm(Form $form): Form { return $form->schema([ Section::make()->schema([ diff --git a/packages/admin/src/Support/Forms/Components/Attributes.php b/packages/admin/src/Support/Forms/Components/Attributes.php index 429b3fde61..4f474aa802 100644 --- a/packages/admin/src/Support/Forms/Components/Attributes.php +++ b/packages/admin/src/Support/Forms/Components/Attributes.php @@ -61,7 +61,8 @@ protected function setUp(): void 'model' => $group, 'fields' => $attributes->groupBy('attribute_group_id')->get($group->id, []), ]; - }); + }) + ->filter(fn ($group) => count($group['fields'])); $groupComponents = []; diff --git a/packages/admin/src/Support/Pages/BaseCreateRecord.php b/packages/admin/src/Support/Pages/BaseCreateRecord.php index 4a0b803d8e..0c5e414618 100644 --- a/packages/admin/src/Support/Pages/BaseCreateRecord.php +++ b/packages/admin/src/Support/Pages/BaseCreateRecord.php @@ -9,6 +9,7 @@ abstract class BaseCreateRecord extends CreateRecord { use Concerns\ExtendsFooterWidgets; use Concerns\ExtendsFormActions; + use Concerns\ExtendsForms; use Concerns\ExtendsHeaderActions; use Concerns\ExtendsHeaderWidgets; use Concerns\ExtendsHeadings; diff --git a/packages/admin/src/Support/Pages/BaseEditRecord.php b/packages/admin/src/Support/Pages/BaseEditRecord.php index f63f3de97c..4e43fbed8a 100644 --- a/packages/admin/src/Support/Pages/BaseEditRecord.php +++ b/packages/admin/src/Support/Pages/BaseEditRecord.php @@ -9,6 +9,7 @@ abstract class BaseEditRecord extends EditRecord { use Concerns\ExtendsFooterWidgets; use Concerns\ExtendsFormActions; + use Concerns\ExtendsForms; use Concerns\ExtendsHeaderActions; use Concerns\ExtendsHeaderWidgets; use Concerns\ExtendsHeadings; diff --git a/packages/admin/src/Support/Pages/Concerns/ExtendsForms.php b/packages/admin/src/Support/Pages/Concerns/ExtendsForms.php new file mode 100644 index 0000000000..d699471537 --- /dev/null +++ b/packages/admin/src/Support/Pages/Concerns/ExtendsForms.php @@ -0,0 +1,18 @@ +getDefaultForm($form)); + } + + public function getDefaultForm(Form $form): Form + { + return $form; + } +} diff --git a/packages/core/config/media.php b/packages/core/config/media.php index d2d0814963..05039f101b 100644 --- a/packages/core/config/media.php +++ b/packages/core/config/media.php @@ -5,12 +5,12 @@ return [ 'definitions' => [ - Lunar\Models\Asset::class => StandardMediaDefinitions::class, - Lunar\Models\Brand::class => StandardMediaDefinitions::class, - Lunar\Models\Collection::class => StandardMediaDefinitions::class, - Lunar\Models\Product::class => StandardMediaDefinitions::class, - Lunar\Models\ProductOption::class => StandardMediaDefinitions::class, - Lunar\Models\ProductOptionValue::class => StandardMediaDefinitions::class, + 'asset' => StandardMediaDefinitions::class, + 'brand' => StandardMediaDefinitions::class, + 'collection' => StandardMediaDefinitions::class, + 'product' => StandardMediaDefinitions::class, + 'product-option' => StandardMediaDefinitions::class, + 'product-option-value' => StandardMediaDefinitions::class, ], 'collection' => 'images', diff --git a/packages/core/resources/lang/es/base.php b/packages/core/resources/lang/es/base.php new file mode 100644 index 0000000000..526e2863ca --- /dev/null +++ b/packages/core/resources/lang/es/base.php @@ -0,0 +1,9 @@ + [ + 'collection-titles' => [ + 'images' => 'Imágenes', + ], + ], +]; diff --git a/packages/core/resources/lang/es/exceptions.php b/packages/core/resources/lang/es/exceptions.php new file mode 100644 index 0000000000..a0732874e7 --- /dev/null +++ b/packages/core/resources/lang/es/exceptions.php @@ -0,0 +1,21 @@ + 'El modelo ":class" no implementa la interfaz comprable.', + 'cart_line_id_mismatch' => 'Esta línea del carrito no pertenece a este carrito.', + 'invalid_cart_line_quantity' => 'Se esperaba que la cantidad fuera al menos "1", se encontró ":quantity".', + 'maximum_cart_line_quantity' => 'La cantidad no puede exceder :quantity.', + 'carts.invalid_action' => 'La acción del carrito no es válida.', + 'carts.shipping_missing' => 'Se requiere una dirección de envío.', + 'carts.billing_missing' => 'Se requiere una dirección de facturación.', + 'carts.billing_incomplete' => 'La dirección de facturación está incompleta.', + 'carts.order_exists' => 'Ya existe un pedido para este carrito.', + 'carts.shipping_option_missing' => 'Opción de envío faltante.', + 'missing_currency_price' => 'No existe un precio para la moneda ":currency".', + 'minimum_quantity' => 'Debes agregar un mínimo de :quantity artículos.', + 'quantity_increment' => 'La cantidad :quantity debe ser en incrementos de :increment.', + 'fieldtype_missing' => 'El FieldType ":class" no existe.', + 'invalid_fieldtype' => 'La clase ":class" no implementa la interfaz FieldType.', + 'discounts.invalid_type' => 'La colección solo debe contener ":expected", se encontró ":actual".', + 'disallow_multiple_cart_orders' => 'Los carritos solo pueden tener un pedido asociado.', +]; diff --git a/packages/core/resources/lang/nl/base.php b/packages/core/resources/lang/nl/base.php new file mode 100644 index 0000000000..9f681208d9 --- /dev/null +++ b/packages/core/resources/lang/nl/base.php @@ -0,0 +1,9 @@ + [ + 'collection-titles' => [ + 'images' => 'Afbeeldingen', + ], + ], +]; diff --git a/packages/core/resources/lang/nl/exceptions.php b/packages/core/resources/lang/nl/exceptions.php new file mode 100644 index 0000000000..3ca3a30950 --- /dev/null +++ b/packages/core/resources/lang/nl/exceptions.php @@ -0,0 +1,21 @@ + 'Het ":class" model implementeert de koopbare interface niet.', + 'cart_line_id_mismatch' => 'Deze winkelwagenregel behoort niet tot deze winkelwagen', + 'invalid_cart_line_quantity' => 'Verwachte hoeveelheid is minimaal "1", ":quantity" gevonden.', + 'maximum_cart_line_quantity' => 'Hoeveelheid mag niet meer zijn dan :quantity.', + 'carts.invalid_action' => 'De winkelwagenactie was ongeldig', + 'carts.shipping_missing' => 'Een verzendadres is vereist', + 'carts.billing_missing' => 'Een factuuradres is vereist', + 'carts.billing_incomplete' => 'Het factuuradres is onvolledig', + 'carts.order_exists' => 'Er bestaat al een bestelling voor deze winkelwagen', + 'carts.shipping_option_missing' => 'Ontbrekende verzendoptie', + 'missing_currency_price' => 'Er bestaat geen prijs voor valuta ":currency"', + 'minimum_quantity' => 'U moet minimaal :quantity items toevoegen.', + 'quantity_increment' => 'Hoeveelheid :quantity moet in stappen van :increment zijn', + 'fieldtype_missing' => 'FieldType ":class" bestaat niet', + 'invalid_fieldtype' => 'Klasse ":class" implementeert de FieldType interface niet.', + 'discounts.invalid_type' => 'Collectie moet alleen ":expected" bevatten, gevonden ":actual"', + 'disallow_multiple_cart_orders' => 'Winkelwagens kunnen slechts één bestelling hebben.', +]; diff --git a/packages/core/src/Base/Traits/HasMedia.php b/packages/core/src/Base/Traits/HasMedia.php index 90fddbd88d..a2876f2b02 100644 --- a/packages/core/src/Base/Traits/HasMedia.php +++ b/packages/core/src/Base/Traits/HasMedia.php @@ -63,6 +63,11 @@ protected function getDefinitionClass() { $conversionClasses = config('lunar.media.definitions', []); - return $conversionClasses[static::class] ?? StandardMediaDefinitions::class; + $alias = \Illuminate\Support\Str::snake(class_basename(static::class)); + + return $conversionClasses[$alias] + ?? $conversionClasses[static::class] // fallback for published config + ?? $conversionClasses[get_parent_class(static::class)] // fallback use parent class + ?? StandardMediaDefinitions::class; } } diff --git a/packages/core/src/FieldTypes/Toggle.php b/packages/core/src/FieldTypes/Toggle.php index a229b16071..9949210133 100644 --- a/packages/core/src/FieldTypes/Toggle.php +++ b/packages/core/src/FieldTypes/Toggle.php @@ -26,7 +26,7 @@ public function jsonSerialize(): mixed /** * Create a new instance of Toggle field type. * - * @param string $value + * @param bool|string $value */ public function __construct($value = false) { diff --git a/packages/core/src/Search/ScoutIndexer.php b/packages/core/src/Search/ScoutIndexer.php index 89decd3af2..d0552057de 100644 --- a/packages/core/src/Search/ScoutIndexer.php +++ b/packages/core/src/Search/ScoutIndexer.php @@ -12,7 +12,8 @@ class ScoutIndexer implements ScoutIndexerInterface { public function searchableAs(Model $model): string { - $name = str_replace('lunar_', '', $model->getTable()); + $tablePrefix = config('lunar.database.table_prefix'); + $name = str_replace($tablePrefix, '', $model->getTable()); return config('scout.prefix').$name; } diff --git a/packages/table-rate-shipping/config/shipping-tables.php b/packages/table-rate-shipping/config/shipping-tables.php index f08c83397c..9badb4badf 100644 --- a/packages/table-rate-shipping/config/shipping-tables.php +++ b/packages/table-rate-shipping/config/shipping-tables.php @@ -5,7 +5,15 @@ return [ 'enabled' => env('LUNAR_SHIPPING_TABLES_ENABLED', true), + /* + * What method should we use for a shipping rate tax calculation? + * Options are 'default' for the system-wide default tax rate, + * or 'highest' to select the highest tax rate in the cart + */ + 'shipping_rate_tax_calculation' => 'default', + 'resolvers' => [ 'postcode' => PostcodeResolver::class, ], + ]; diff --git a/packages/table-rate-shipping/resources/lang/es/plugin.php b/packages/table-rate-shipping/resources/lang/es/plugin.php new file mode 100644 index 0000000000..67e90b2b92 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/plugin.php @@ -0,0 +1,7 @@ + [ + 'group' => 'Envío', + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/relationmanagers.php b/packages/table-rate-shipping/resources/lang/es/relationmanagers.php new file mode 100644 index 0000000000..5b4d6c6015 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/relationmanagers.php @@ -0,0 +1,77 @@ + [ + 'customer_groups' => [ + 'description' => 'Asocia grupos de clientes a este método de envío para determinar su disponibilidad.', + ], + ], + 'shipping_rates' => [ + 'title_plural' => 'Tarifas de Envío', + 'actions' => [ + 'create' => [ + 'label' => 'Crear Tarifa de Envío', + ], + ], + 'notices' => [ + 'prices_incl_tax' => 'Todos los precios incluyen impuestos, que se tendrán en cuenta al calcular el gasto mínimo.', + 'prices_excl_tax' => 'Todos los precios excluyen impuestos, el gasto mínimo se basará en el subtotal del carrito.', + ], + 'form' => [ + 'shipping_method_id' => [ + 'label' => 'Método de Envío', + ], + 'price' => [ + 'label' => 'Precio', + ], + 'prices' => [ + 'label' => 'Desglose de Precios', + 'repeater' => [ + 'customer_group_id' => [ + 'label' => 'Grupo de Clientes', + 'placeholder' => 'Cualquiera', + ], + 'currency_id' => [ + 'label' => 'Moneda', + ], + 'min_quantity' => [ + 'label' => 'Gasto Mín.', + ], + 'price' => [ + 'label' => 'Precio', + ], + ], + ], + ], + 'table' => [ + 'shipping_method' => [ + 'label' => 'Método de Envío', + ], + 'price' => [ + 'label' => 'Precio', + ], + 'price_breaks_count' => [ + 'label' => 'Desglose de Precios', + ], + ], + ], + 'exclusions' => [ + 'title_plural' => 'Exclusiones de Envío', + 'form' => [ + 'purchasable' => [ + 'label' => 'Producto', + ], + ], + 'actions' => [ + 'create' => [ + 'label' => 'Agregar lista de exclusión de envío', + ], + 'attach' => [ + 'label' => 'Agregar lista de exclusión', + ], + 'detach' => [ + 'label' => 'Eliminar', + ], + ], + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/shippingexclusionlist.php b/packages/table-rate-shipping/resources/lang/es/shippingexclusionlist.php new file mode 100644 index 0000000000..47a1e13f82 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/shippingexclusionlist.php @@ -0,0 +1,19 @@ + 'Lista de Exclusión de Envío', + 'label_plural' => 'Listas de Exclusión de Envío', + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'exclusions_count' => [ + 'label' => 'N° Productos', + ], + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/shippingmethod.php b/packages/table-rate-shipping/resources/lang/es/shippingmethod.php new file mode 100644 index 0000000000..b77269d1b7 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/shippingmethod.php @@ -0,0 +1,58 @@ + 'Métodos de Envío', + 'label' => 'Método de Envío', + 'form' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'description' => [ + 'label' => 'Descripción', + ], + 'code' => [ + 'label' => 'Código', + ], + 'cutoff' => [ + 'label' => 'Corte', + ], + 'charge_by' => [ + 'label' => 'Cargar Por', + 'options' => [ + 'cart_total' => 'Total del Carrito', + 'weight' => 'Peso', + ], + ], + 'driver' => [ + 'label' => 'Tipo', + 'options' => [ + 'ship-by' => 'Estándar', + 'collection' => 'Recogida', + ], + ], + 'stock_available' => [ + 'label' => 'El stock de todos los artículos del carrito debe estar disponible', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'code' => [ + 'label' => 'Código', + ], + 'driver' => [ + 'label' => 'Tipo', + 'options' => [ + 'ship-by' => 'Estándar', + 'collection' => 'Recogida', + ], + ], + ], + 'pages' => [ + 'availability' => [ + 'label' => 'Disponibilidad', + 'customer_groups' => 'Este método de envío no está disponible actualmente para todos los grupos de clientes.', + ], + ], +]; diff --git a/packages/table-rate-shipping/resources/lang/es/shippingzone.php b/packages/table-rate-shipping/resources/lang/es/shippingzone.php new file mode 100644 index 0000000000..8fd52fa774 --- /dev/null +++ b/packages/table-rate-shipping/resources/lang/es/shippingzone.php @@ -0,0 +1,50 @@ + 'Zona de Envío', + 'label_plural' => 'Zonas de Envío', + 'form' => [ + 'unrestricted' => [ + 'content' => 'Esta zona de envío no tiene restricciones y estará disponible para todos los clientes al momento de pagar.', + ], + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'options' => [ + 'unrestricted' => 'Sin Restricciones', + 'countries' => 'Limitar a Países', + 'states' => 'Limitar a Estados / Provincias', + 'postcodes' => 'Limitar a Códigos Postales', + ], + ], + 'country' => [ + 'label' => 'País', + ], + 'states' => [ + 'label' => 'Estados', + ], + 'countries' => [ + 'label' => 'Países', + ], + 'postcodes' => [ + 'label' => 'Códigos Postales', + 'helper' => 'Lista cada código postal en una nueva línea. Soporta comodines como NW*', + ], + ], + 'table' => [ + 'name' => [ + 'label' => 'Nombre', + ], + 'type' => [ + 'label' => 'Tipo', + 'options' => [ + 'unrestricted' => 'Sin Restricciones', + 'countries' => 'Limitar a Países', + 'states' => 'Limitar a Estados / Provincias', + 'postcodes' => 'Limitar a Códigos Postales', + ], + ], + ], +]; diff --git a/packages/table-rate-shipping/src/Models/ShippingRate.php b/packages/table-rate-shipping/src/Models/ShippingRate.php index bcb5a08975..a0769d76b6 100644 --- a/packages/table-rate-shipping/src/Models/ShippingRate.php +++ b/packages/table-rate-shipping/src/Models/ShippingRate.php @@ -28,6 +28,8 @@ class ShippingRate extends BaseModel implements Contracts\ShippingRate, Purchasa */ protected $guarded = []; + private ?TaxClass $resolvedTaxClass; + protected static function booted() { self::deleting(function (self $shippingRate) { @@ -73,7 +75,7 @@ public function getUnitQuantity(): int */ public function getTaxClass(): TaxClass { - return TaxClass::getDefault(); + return $this->resolvedTaxClass ?? TaxClass::getDefault(); } public function getTaxReference(): ?string @@ -139,6 +141,10 @@ public function getThumbnail(): ?string */ public function getShippingOption(Cart $cart): ?ShippingOption { + if (config('lunar.shipping-tables.shipping_rate_tax_calculation') == 'highest') { + $this->resolvedTaxClass = $this->resolveHighestTaxRateInCart($cart); + } + return $this->shippingMethod->driver()->resolve( new ShippingOptionRequest( shippingRate: $this, @@ -156,4 +162,23 @@ public function getTotalInventory(): int { return 1; } + + private function resolveHighestTaxRateInCart(Cart $cart): ?TaxClass + { + $highestRate = false; + $highestTaxClass = null; + + foreach ($cart->lines as $cartLine) { + if ($cartLine->purchasable->taxClass) { + foreach ($cartLine->purchasable->taxClass->taxRateAmounts as $amount) { + if ($highestRate === false || $amount->percentage > $highestRate) { + $highestRate = $amount->percentage; + $highestTaxClass = $cartLine->purchasable->taxClass; + } + } + } + } + + return $highestTaxClass; + } } diff --git a/tests/core/Stubs/TestStandardMediaDefinitions.php b/tests/core/Stubs/TestStandardMediaDefinitions.php new file mode 100644 index 0000000000..b866c4a5b6 --- /dev/null +++ b/tests/core/Stubs/TestStandardMediaDefinitions.php @@ -0,0 +1,7 @@ +setValue(false); + + expect($field->getValue())->toEqual(false); +}); + +test('can set value in constructor', function () { + $field = new Toggle(true); + + expect($field->getValue())->toEqual(true); +}); + +test('check it does not allow array', function () { + $this->expectException(FieldTypeException::class); + + new Toggle(['foo']); +}); diff --git a/tests/core/Unit/Traits/HasMediaTraitTest.php b/tests/core/Unit/Traits/HasMediaTraitTest.php index 1603bb8a54..8c6e82c373 100644 --- a/tests/core/Unit/Traits/HasMediaTraitTest.php +++ b/tests/core/Unit/Traits/HasMediaTraitTest.php @@ -2,8 +2,10 @@ uses(\Lunar\Tests\Core\TestCase::class); use Illuminate\Http\UploadedFile; +use Illuminate\Support\Facades\Config; use Lunar\Base\StandardMediaDefinitions; use Lunar\Models\Product; +use Lunar\Tests\Core\Stubs\TestStandardMediaDefinitions; uses(\Illuminate\Foundation\Testing\RefreshDatabase::class); @@ -12,7 +14,7 @@ expect($definitions)->toHaveCount(6); - expect($definitions[Product::class])->toEqual(StandardMediaDefinitions::class); + expect($definitions['product'])->toEqual(StandardMediaDefinitions::class); $file = UploadedFile::fake()->image('avatar.jpg'); @@ -28,6 +30,31 @@ expect($image->hasGeneratedConversion('zoom'))->toBeTrue(); }); +test('custom conversions are loaded', function () { + Config::set('lunar.media.definitions', [ + 'product' => TestStandardMediaDefinitions::class, + ]); + + $product = invade(new Product); + + expect($product->getDefinitionClass())->toEqual(TestStandardMediaDefinitions::class); +}); + +test('custom conversions are loaded for extended model', function () { + \Lunar\Facades\ModelManifest::replace( + \Lunar\Models\Contracts\Product::class, + \Lunar\Tests\Core\Stubs\Models\Product::class + ); + + Config::set('lunar.media.definitions', [ + 'product' => TestStandardMediaDefinitions::class, + ]); + + $product = invade(app(\Lunar\Models\Contracts\Product::class)); + + expect($product->getDefinitionClass())->toEqual(TestStandardMediaDefinitions::class); +}); + test('images can have fallback url', function () { $testImageUrl = 'https://picsum.photos/200'; config()->set('lunar.media.fallback.url', $testImageUrl); diff --git a/tests/shipping/Unit/Resolvers/ShippingOptionResolverTest.php b/tests/shipping/Unit/Resolvers/ShippingOptionResolverTest.php index df09ede477..426bf3ee26 100644 --- a/tests/shipping/Unit/Resolvers/ShippingOptionResolverTest.php +++ b/tests/shipping/Unit/Resolvers/ShippingOptionResolverTest.php @@ -6,7 +6,10 @@ use Lunar\Models\CartAddress; use Lunar\Models\Country; use Lunar\Models\Currency; +use Lunar\Models\Price; +use Lunar\Models\ProductVariant; use Lunar\Models\TaxClass; +use Lunar\Models\TaxRateAmount; use Lunar\Shipping\DataTransferObjects\ShippingOptionLookup; use Lunar\Shipping\Facades\Shipping; use Lunar\Shipping\Models\ShippingMethod; @@ -95,3 +98,118 @@ $this->assertcount(1, $options); }); + +test('sets tax rate to the highest basket rate', function () { + config()->set('lunar.shipping-tables.shipping_rate_tax_calculation', 'highest'); + + $currency = Currency::factory()->create([ + 'default' => true, + ]); + + $country = Country::factory()->create(); + + TaxClass::factory()->create([ + 'default' => true, + 'name' => 'default', + ]); + + $higherRate = TaxClass::factory()->create([ + 'default' => false, + 'name' => 'higher', + ]); + + $taxAmount = TaxRateAmount::factory()->create(); + $taxAmount->percentage = 90; + + $higherRate->taxRateAmounts()->save($taxAmount); + + $customerGroup = \Lunar\Models\CustomerGroup::factory()->create([ + 'default' => true, + ]); + + $shippingZone = ShippingZone::factory()->create([ + 'type' => 'countries', + ]); + + $shippingZone->countries()->attach($country); + + $shippingMethod = ShippingMethod::factory()->create([ + 'driver' => 'ship-by', + 'data' => [ + 'minimum_spend' => [ + "{$currency->code}" => 200, + ], + ], + ]); + + $shippingMethod->customerGroups()->sync([ + $customerGroup->id => ['enabled' => true, 'visible' => true, 'starts_at' => now(), 'ends_at' => null], + ]); + + $shippingRate = \Lunar\Shipping\Models\ShippingRate::factory() + ->create([ + 'shipping_method_id' => $shippingMethod->id, + 'shipping_zone_id' => $shippingZone->id, + ]); + + $shippingRate->prices()->createMany([ + [ + 'price' => 600, + 'min_quantity' => 1, + 'currency_id' => $currency->id, + ], + [ + 'price' => 500, + 'min_quantity' => 700, + 'currency_id' => $currency->id, + ], + [ + 'price' => 0, + 'min_quantity' => 800, + 'currency_id' => $currency->id, + ], + ]); + + $cart = $this->createCart($currency, 500); + + $purchasable = ProductVariant::factory()->create(); + $purchasable->stock = 50; + $purchasable->tax_class_id = $higherRate->id; + $purchasable->save(); + + Price::factory()->create([ + 'price' => 300, + 'min_quantity' => 1, + 'currency_id' => $currency->id, + 'priceable_type' => $purchasable->getMorphClass(), + 'priceable_id' => $purchasable->id, + ]); + + $cart->lines()->create([ + 'purchasable_type' => $purchasable->getMorphClass(), + 'purchasable_id' => $purchasable->id, + 'quantity' => 1, + ]); + + $cart->shippingAddress()->create( + CartAddress::factory()->make([ + 'country_id' => $country->id, + 'state' => null, + ])->toArray() + ); + + $shippingRates = Shipping::shippingRates( + $cart->refresh()->calculate() + )->get(); + + $options = Shipping::shippingOptions()->cart( + $cart->refresh()->calculate() + )->get( + new ShippingOptionLookup( + shippingRates: $shippingRates + ) + ); + + $this->assertcount(1, $options); + $this->assertSame($options->first()->option->taxClass->id, $higherRate->id); +});