diff --git a/package.json b/package.json index dc5c0e6c3..cf99f33f7 100755 --- a/package.json +++ b/package.json @@ -25,8 +25,9 @@ "vue-template-compiler": "^2.6.11" }, "dependencies": { + "opencollective": "^1.0.3", "opencollective-postinstall": "^2.0.1", - "opencollective": "^1.0.3" + "vee-validate": "^3.3.0" }, "collective": { "type": "opencollective", diff --git a/packages/Webkul/Admin/src/Config/system.php b/packages/Webkul/Admin/src/Config/system.php index cade2e2a0..efad8bd08 100644 --- a/packages/Webkul/Admin/src/Config/system.php +++ b/packages/Webkul/Admin/src/Config/system.php @@ -206,10 +206,68 @@ return [ 'channel_based' => true, ], ], + ], [ + 'key' => 'catalog.rich_snippets', + 'name' => 'admin::app.admin.system.rich-snippets', + 'sort' => 3, + ], [ + 'key' => 'catalog.rich_snippets.products', + 'name' => 'admin::app.admin.system.products', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'enable', + 'title' => 'admin::app.admin.system.enable', + 'type' => 'boolean', + ], [ + 'name' => 'show_sku', + 'title' => 'admin::app.admin.system.show-sku', + 'type' => 'boolean', + ], [ + 'name' => 'show_weight', + 'title' => 'admin::app.admin.system.show-weight', + 'type' => 'boolean', + ], [ + 'name' => 'show_categories', + 'title' => 'admin::app.admin.system.show-categories', + 'type' => 'boolean', + ], [ + 'name' => 'show_images', + 'title' => 'admin::app.admin.system.show-images', + 'type' => 'boolean', + ], [ + 'name' => 'show_reviews', + 'title' => 'admin::app.admin.system.show-reviews', + 'type' => 'boolean', + ], [ + 'name' => 'show_ratings', + 'title' => 'admin::app.admin.system.show-ratings', + 'type' => 'boolean', + ], [ + 'name' => 'show_offers', + 'title' => 'admin::app.admin.system.show-offers', + 'type' => 'boolean', + ], + ], + ], [ + 'key' => 'catalog.rich_snippets.categories', + 'name' => 'admin::app.admin.system.categories', + 'sort' => 1, + 'fields' => [ + [ + 'name' => 'enable', + 'title' => 'admin::app.admin.system.enable', + 'type' => 'boolean', + ], [ + 'name' => 'show_search_input_field', + 'title' => 'admin::app.admin.system.show-search-input-field', + 'type' => 'boolean', + ] + ] ], [ 'key' => 'customer', 'name' => 'admin::app.admin.system.customer', - 'sort' => 3, + 'sort' => 4, ], [ 'key' => 'customer.settings', 'name' => 'admin::app.admin.system.settings', @@ -252,7 +310,7 @@ return [ ], [ 'key' => 'emails', 'name' => 'admin::app.admin.emails.email', - 'sort' => 1, + 'sort' => 5, ], [ 'key' => 'emails.general', 'name' => 'admin::app.admin.emails.notification_label', diff --git a/packages/Webkul/Admin/src/Resources/assets/js/app.js b/packages/Webkul/Admin/src/Resources/assets/js/app.js index 86c5b4ec4..57d05ff8b 100755 --- a/packages/Webkul/Admin/src/Resources/assets/js/app.js +++ b/packages/Webkul/Admin/src/Resources/assets/js/app.js @@ -1,5 +1,7 @@ import Vue from 'vue'; -import VeeValidate from 'vee-validate'; +import VeeValidate, { Validator } from 'vee-validate'; +import de from 'vee-validate/dist/locale/de'; +import ar from 'vee-validate/dist/locale/ar'; import './bootstrap'; @@ -7,6 +9,10 @@ window.Vue = Vue; window.VeeValidate = VeeValidate; Vue.use(VeeValidate, { + dictionary: { + ar: ar, + de: de, + }, events: 'input|change|blur', }); Vue.prototype.$http = axios @@ -30,6 +36,8 @@ $(document).ready(function () { mounted() { this.addServerErrors(); this.addFlashMessages(); + + this.$validator.localize(document.documentElement.lang); }, methods: { @@ -90,7 +98,7 @@ $(document).ready(function () { if (typeof flashMessages == 'undefined') { return; }; - + const flashes = this.$refs.flashes; flashMessages.forEach(function(flash) { diff --git a/packages/Webkul/Admin/src/Resources/lang/ar/app.php b/packages/Webkul/Admin/src/Resources/lang/ar/app.php index 276740aac..62f7485d4 100644 --- a/packages/Webkul/Admin/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/ar/app.php @@ -1323,7 +1323,21 @@ return [ 'cheapest-first' => 'Cheapest First', 'expensive-first' => 'Expensive First', 'comma-seperated' => 'Comma Seperated', - 'favicon' => 'Favicon' + 'favicon' => 'Favicon', + 'seo' => 'SEO', + 'rich-snippets' => 'Rich Snippets', + 'products' => 'Products', + 'enable' => 'Enable', + 'show-weight' => 'Show Weight', + 'show-categories' => 'Show Categories', + 'show-images' => 'Show Images', + 'show-reviews' => 'Show Reviews', + 'show-ratings' => 'Show Ratings', + 'show-offers' => 'Show Offers', + 'show-sku' => 'Show SKU', + 'categories' => 'Categories', + 'show-sku' => 'Show SKU', + 'show-search-input-field' => 'Show Search Input Field' ] ] ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/de/app.php b/packages/Webkul/Admin/src/Resources/lang/de/app.php new file mode 100755 index 000000000..ae91473b8 --- /dev/null +++ b/packages/Webkul/Admin/src/Resources/lang/de/app.php @@ -0,0 +1,1326 @@ + 'Speichern', + 'create' => 'Erstellen', + 'update' => 'Update', + 'delete' => 'Löschen', + 'failed' => 'Fehlgeschlagen', + 'store' => 'Speichern', + 'image' => 'Bild', + 'no result' => 'Kein Ergebnis', + 'product' => 'Produkt', + 'attribute' => 'Attribut', + 'actions' => 'Aktionen', + 'id' => 'Id', + 'action' => 'Aktion', + 'yes' => 'Ja', + 'no' => 'Nein', + 'true' => 'Wahr', + 'false' => 'Falsch', + 'apply' => 'Anwenden', + 'label' => 'Label', + 'name' => 'Name', + 'title' => 'Titel', + 'code' => 'Code', + 'type' => 'Typ', + 'required' => 'Erforderlich', + 'unique' => 'Einzigartig', + 'locale-based' => 'Sprachabhängig', + 'channel-based' => 'Channelabhängig', + 'status' => 'Status', + 'select-option' => 'Wählen Sie eine Option', + 'category' => 'Kategorie', + 'common' => + array ( + 'no-result-found' => 'Wir konnten keine Aufzeichnungen finden.', + 'country' => 'Land', + 'state' => 'Staat', + 'true' => 'Wahr', + 'false' => 'Falsch', + ), + 'layouts' => + array ( + 'my-account' => 'Mein Konto', + 'logout' => 'Logout', + 'visit-shop' => 'Shop besuchen', + 'dashboard' => 'Dashboard', + 'sales' => 'Vertrieb', + 'orders' => 'Bestellungen', + 'shipments' => 'Sendungen', + 'invoices' => 'Rechnungen', + 'refunds' => 'Erstattungen', + 'catalog' => 'Katalog', + 'products' => 'Produkte', + 'categories' => 'Kategorien', + 'attributes' => 'Attribute', + 'attribute-families' => 'Attributgruppen', + 'customers' => 'Kunden', + 'groups' => 'Gruppen', + 'reviews' => 'Bewertungen', + 'newsletter-subscriptions' => 'Newsletter-Abonnements', + 'configure' => 'Konfigurieren', + 'settings' => 'Einstellungen', + 'locales' => 'Sprachen', + 'currencies' => 'Währungen', + 'exchange-rates' => 'Wechselkurse', + 'inventory-sources' => 'Inventar-Quellen', + 'channels' => 'Kanäle', + 'users' => 'Benutzer', + 'roles' => 'Rollen', + 'sliders' => 'Slider', + 'taxes' => 'Steuern', + 'tax-categories' => 'Steuer-Kategorien', + 'tax-rates' => 'Steuersätze', + 'promotions' => 'Promotions', + 'discount' => 'Rabatt', + 'cms' => 'CMS', + ), + 'acl' => + array ( + 'dashboard' => 'Dashboard', + 'sales' => 'Vertrieb', + 'orders' => 'Bestellungen', + 'shipments' => 'Sendungen', + 'invoices' => 'Rechnungen', + 'catalog' => 'Katalog', + 'products' => 'Produkte', + 'categories' => 'Kategorien', + 'attributes' => 'Attribute', + 'attribute-families' => 'Attributgruppen', + 'customers' => 'Kunden', + 'groups' => 'Gruppen', + 'reviews' => 'Bewertungen', + 'newsletter-subscriptions' => 'Newsletter-Abonnements', + 'configure' => 'Konfigurieren', + 'settings' => 'Einstellungen', + 'locales' => 'Sprachen', + 'currencies' => 'Währungen', + 'exchange-rates' => 'Wechselkurse', + 'inventory-sources' => 'Inventarquellen', + 'channels' => 'Kanäle', + 'users' => 'Benutzer', + 'roles' => 'Rollen', + 'sliders' => 'Sliders', + 'taxes' => 'Steuern', + 'tax-categories' => 'Steuerkategorien', + 'tax-rates' => 'Steuersätze', + 'edit' => 'Bearbeiten', + 'create' => 'Hinzufügen', + 'delete' => 'Löschen', + 'promotions' => 'Promotions', + 'cart-rules' => 'Warenkorbregeln', + 'catalog-rules' => 'Katalogregeln', + ), + 'dashboard' => + array ( + 'title' => 'Dashboard', + 'from' => 'Von', + 'to' => 'An', + 'total-customers' => 'Anzahl Kunden', + 'total-orders' => 'Anzahl Aufträge', + 'total-sale' => 'Gesamterlös', + 'average-sale' => 'Durchschnitt pro Verkauf', + 'increased' => ':progress%', + 'decreased' => ':progress%', + 'sales' => 'Vertrieb', + 'top-performing-categories' => 'Top Kategorien', + 'product-count' => ':count Produkte', + 'top-selling-products' => 'Top Produkte', + 'sale-count' => ':count Verkäufe', + 'customer-with-most-sales' => 'Kunden Mit Dem Meisten Umsatz', + 'order-count' => ':count Bestellungen', + 'revenue' => 'Einnahmen :total', + 'stock-threshold' => 'Lagerbestand', + 'qty-left' => ':qty Verbleibend', + ), + 'datagrid' => + array ( + 'mass-ops' => + array ( + 'method-error' => 'Fehler! Falsche Methode erkannt, überprüfen Sie die Konfiguration der Massenaktion', + 'delete-success' => 'Ausgewählte :resource wurden erfolgreich gelöscht', + 'partial-action' => 'Einige Aktionen wurden nicht durchgeführt, aufgrund von System-Einschränkungen von :resource', + 'update-success' => 'Ausgewählt :resource wurden erfolgreich aktualisiert', + 'no-resource' => 'Die bereitgestellte Ressource reicht für die Aktion nicht aus', + ), + 'id' => 'Id', + 'status' => 'Status', + 'code' => 'Code', + 'admin-name' => 'Name', + 'name' => 'Name', + 'direction' => 'Richtung', + 'fullname' => 'Vollständiger Name', + 'type' => 'Typ', + 'required' => 'Erforderlich', + 'unique' => 'Einzigartig', + 'per-locale' => 'Sprach-basierend', + 'per-channel' => 'Channel-basierend', + 'position' => 'Position', + 'locale' => 'Sprache', + 'hostname' => 'Hostname', + 'email' => 'E-Mail', + 'group' => 'Gruppe', + 'phone' => 'Telefon', + 'gender' => 'Geschlecht', + 'title' => 'Titel', + 'layout' => 'Layout', + 'url-key' => 'URL-Schlüssel', + 'comment' => 'Kommentar', + 'product-name' => 'Produkt', + 'currency-name' => 'Währungsname', + 'exch-rate' => 'Tauschrate', + 'priority' => 'Priorität', + 'subscribed' => 'Abonniert', + 'base-total' => 'Basis Gesamt', + 'grand-total' => 'Gesamtsumme', + 'order-date' => 'Bestelldatum', + 'channel-name' => 'Kanal Name', + 'billed-to' => 'Rechnung an', + 'shipped-to' => 'Versendet an', + 'order-id' => 'Auftragsnummer', + 'invoice-date' => 'Rechnungsdatum', + 'total-qty' => 'Gesamtmenge', + 'inventory-source' => 'Inventar Quelle', + 'shipment-date' => 'Versand Datum', + 'shipment-to' => 'Versand', + 'sku' => 'SKU', + 'price' => 'Preis', + 'qty' => 'Menge', + 'permission-type' => 'Berechtigungsart', + 'identifier' => 'Bezeichner', + 'state' => 'Bundesland', + 'country' => 'Land', + 'tax-rate' => 'Rate', + 'role' => 'Rolle', + 'sub-total' => 'Zwischensumme', + 'no-of-products' => 'Anzahl der Produkte', + 'attribute-family' => 'Attributgruppe', + 'starts-from' => 'Beginnt von', + 'ends-till' => 'Endet bis', + 'per-cust' => 'Pro Kunde', + 'usage-throttle' => 'Einsatzzeiten', + 'for-guest' => 'Für Gäste', + 'order_number' => 'Auftragsnummer', + 'refund-date' => 'Rückerstattung Datum', + 'refunded' => 'Erstattet', + 'start' => 'Starten', + 'end' => 'Ende', + 'active' => 'Aktiv', + 'inactive' => 'Inaktiv', + 'true' => 'Wahr', + 'false' => 'Falsch', + 'approved' => 'Genehmigt', + 'pending' => 'Ausstehend', + 'disapproved' => 'Abgelehnt', + 'coupon-code' => 'Gutschein-Code', + 'times-used' => 'Mal Verwendet', + 'created-date' => 'Erstellt-Datum', + 'expiration-date' => 'Ablaufdatum', + 'edit' => 'Bearbeiten', + 'delete' => 'Löschen', + 'view' => 'Anzeigen', + 'rtl' => 'RTL', + 'ltr' => 'LTR', + 'update-status' => 'Update-Status', + ), + 'account' => + array ( + 'title' => 'Mein Konto', + 'save-btn-title' => 'Speichern', + 'general' => 'Allgemein', + 'name' => 'Name', + 'email' => 'E-Mail', + 'password' => 'Passwort', + 'confirm-password' => 'Passwort bestätigen', + 'change-password' => 'Änderung des Account-Passworts', + 'current-password' => 'Aktuelles Passwort', + ), + 'users' => + array ( + 'forget-password' => + array ( + 'title' => 'Passwort vergessen', + 'header-title' => 'Passwort wiederherstellen', + 'email' => 'Registrierte E-Mail-Adresse', + 'password' => 'Passwort', + 'confirm-password' => 'Passwort bestätigen', + 'back-link-title' => 'Zurück zur Anmeldung', + 'submit-btn-title' => 'E-Mail zum Zurücksetzen des Passworts senden', + ), + 'reset-password' => + array ( + 'title' => 'Passwort zurücksetzen', + 'email' => 'Registrierte E-Mail-Adresse', + 'password' => 'Passwort', + 'confirm-password' => 'Passwort bestätigen', + 'back-link-title' => 'Zurück zur Anmeldung', + 'submit-btn-title' => 'Passwort Zurücksetzen', + ), + 'roles' => + array ( + 'title' => 'Rollen', + 'add-role-title' => 'Rolle hinzufügen', + 'edit-role-title' => 'Rolle bearbeiten', + 'save-btn-title' => 'Rolle speichern', + 'general' => 'Allgemein', + 'name' => 'Name', + 'description' => 'Beschreibung', + 'access-control' => 'Zugangskontrolle', + 'permissions' => 'Berechtigungen', + 'custom' => 'Benutzerdefiniert', + 'all' => 'Alle', + ), + 'users' => + array ( + 'title' => 'Benutzer', + 'add-user-title' => 'Benutzer hinzufügen', + 'edit-user-title' => 'Benutzer bearbeiten', + 'save-btn-title' => 'Benutzer speichern', + 'general' => 'Allgemein', + 'email' => 'E-Mail', + 'name' => 'Name', + 'password' => 'Passwort', + 'confirm-password' => 'Passwort bestätigen', + 'status-and-role' => 'Status und Rolle', + 'role' => 'Rolle', + 'status' => 'Status', + 'account-is-active' => 'Konto ist aktiv', + 'current-password' => 'Geben Sie das aktuelle Passwort ein', + 'confirm-delete' => 'Bestätigen Sie dieses Konto zu löschen', + 'confirm-delete-title' => 'Bestätigen Sie das Passwort vor dem Löschen', + 'delete-last' => 'Es ist mindestens ein Administrator erforderlich.', + 'delete-success' => 'Erfolg! Benutzer gelöscht', + 'incorrect-password' => 'Das von Ihnen eingegebene Passwort ist falsch', + 'password-match' => 'Aktuelle Passwörter stimmt nicht überein.', + 'account-save' => 'Konto-Änderungen erfolgreich gespeichert.', + 'login-error' => 'Bitte überprüfen Sie Ihre Anmeldeinformationen und versuchen Sie es erneut.', + 'activate-warning' => 'Ihr Konto ist noch nicht aktiviert, kontaktieren Sie bitte den Administrator.', + ), + 'sessions' => + array ( + 'title' => 'Anmelden', + 'email' => 'E-Mail', + 'password' => 'Passwort', + 'forget-password-link-title' => 'Passwort vergessen?', + 'remember-me' => 'Anmeldung merken', + 'submit-btn-title' => 'Anmelden', + ), + ), + 'sales' => + array ( + 'orders' => + array ( + 'title' => 'Bestellungen', + 'view-title' => 'Bestellung #:order_id', + 'cancel-btn-title' => 'Abbrechen', + 'shipment-btn-title' => 'Sendung', + 'invoice-btn-title' => 'Rechnung', + 'info' => 'Informationen', + 'invoices' => 'Rechnungen', + 'shipments' => 'Sendungen', + 'order-and-account' => 'Bestellung und Rechnung', + 'order-info' => 'Bestellinformationen', + 'order-date' => 'Bestelldatum', + 'order-status' => 'Bestellstatus', + 'order-status-canceled' => 'Abgebrochen', + 'order-status-closed' => 'Geschlossen', + 'order-status-fraud' => 'Betrug', + 'order-status-pending' => 'Ausstehend', + 'order-status-pending-payment' => 'Ausstehende Zahlung', + 'order-status-processing' => 'Verarbeitung', + 'order-status-success' => 'Abgeschlossen', + 'channel' => 'Kanal', + 'customer-name' => 'Name des Kunden', + 'email' => 'E-Mail', + 'contact-number' => 'Kontakt-Nummer', + 'account-info' => 'Account-Informationen', + 'address' => 'Adresse', + 'shipping-address' => 'Versandadresse', + 'billing-address' => 'Rechnungsadresse', + 'payment-and-shipping' => 'Zahlung und Versand', + 'payment-info' => 'Zahlungsinformationen', + 'payment-method' => 'Zahlungsmethode', + 'currency' => 'Währung', + 'shipping-info' => 'Versand-Informationen', + 'shipping-method' => 'Versandart', + 'shipping-price' => 'Versandkosten', + 'products-ordered' => 'Bestellte Produkte', + 'SKU' => 'SKU', + 'product-name' => 'Produktname', + 'qty' => 'Menge', + 'item-status' => 'Produktstatus', + 'item-ordered' => 'Bestellt (:qty_ordered)', + 'item-invoice' => 'In Rechnung gestellt (:qty_invoiced)', + 'item-shipped' => 'Versand (:qty_shipped)', + 'item-canceled' => 'Abgebrochen (:qty_canceled)', + 'item-refunded' => 'Erstattet (:qty_refunded)', + 'price' => 'Preis', + 'total' => 'Insgesamt', + 'subtotal' => 'Zwischensumme', + 'shipping-handling' => 'Versand & Verpackungskosten', + 'discount' => 'Rabatt', + 'tax' => 'Umsatzsteuer', + 'tax-percent' => 'Umsatzsteuer Prozent', + 'tax-amount' => 'Umsatzsteuer Betrag', + 'discount-amount' => 'Rabatt Betrag', + 'grand-total' => 'Gesamtsumme', + 'total-paid' => 'Insgesamt Bezahlt', + 'total-refunded' => 'Insgesamt Erstattet', + 'total-due' => 'Insgesamt fällig', + 'cancel-confirm-msg' => 'Sind Sie sicher, dass Sie diese Bestellung stornieren möchten?', + 'refund-btn-title' => 'Rückerstattung', + 'refunds' => 'Erstattungen', + ), + 'invoices' => + array ( + 'title' => 'Rechnungen', + 'id' => 'Id', + 'invoice-id' => 'Rechnungsnummer', + 'date' => 'Rechnungsdatum', + 'order-id' => 'Auftragsnummer', + 'customer-name' => 'Name des Kunden', + 'status' => 'Status', + 'amount' => 'Betrag', + 'action' => 'Aktion', + 'add-title' => 'Rechnung erstellen', + 'save-btn-title' => 'Rechnung speichern', + 'qty' => 'Menge', + 'qty-ordered' => 'Bestellte Menge', + 'qty-to-invoice' => 'Menge in Rechnung zu stellen', + 'view-title' => 'Rechnung #:invoice_id', + 'bill-to' => 'Rechnung an', + 'ship-to' => 'Versenden an', + 'print' => 'Drucken', + 'order-date' => 'Bestell-Datum', + 'creation-error' => 'Die Erstellung einer Bestellrechnung ist nicht zulässig.', + 'product-error' => 'Eine Rechnung kann nicht ohne Produkte erstellt werden.', + ), + 'shipments' => + array ( + 'title' => 'Sendungen', + 'id' => 'Id', + 'date' => 'Versanddatum', + 'order-id' => 'Auftragsnummer', + 'order-date' => 'Bestelldatum', + 'customer-name' => 'Name des Kunden', + 'total-qty' => 'Menge insgesamt', + 'action' => 'Aktion', + 'add-title' => 'Sendung anlegen', + 'save-btn-title' => 'Versandkosten sparen', + 'qty-ordered' => 'Bestellte Menge', + 'qty-to-ship' => 'Menge zu versenden', + 'available-sources' => 'Verfügbaren Quellen', + 'source' => 'Quelle', + 'select-source' => 'Bitte wählen sie die Quelle', + 'qty-available' => 'Menge verfügbar', + 'inventory-source' => 'Inventarquelle', + 'carrier-title' => 'Zulieferer', + 'tracking-number' => 'Tracking-Nummer', + 'view-title' => 'Versand #:shipment_id', + 'creation-error' => 'Für diese Bestellung kann kein Versand erstellt werden.', + 'order-error' => 'Die Erstellung von Auftragssendungen ist nicht zulässig.', + 'quantity-invalid' => 'Die angeforderte Menge ist ungültig oder nicht verfügbar.', + ), + 'refunds' => + array ( + 'title' => 'Erstattungen', + 'id' => 'Id', + 'add-title' => 'Erstattung erstellen', + 'save-btn-title' => 'Rückerstattung', + 'order-id' => 'Auftragsnummer', + 'qty-ordered' => 'Bestellte Menge', + 'qty-to-refund' => 'Menge zu erstatten', + 'refund-shipping' => 'Erstattung Versand', + 'adjustment-refund' => 'Rückerstattung anpassen', + 'adjustment-fee' => 'Gebühr anpassen', + 'update-qty' => 'Mengen anpassen', + 'invalid-qty' => 'Wir haben eine ungültige Menge gefunden, um Artikel zu erstatten.', + 'refund-limit-error' => 'Das meiste Geld, das zur Rückerstattung zur Verfügung steht, ist :Höhe.', + 'refunded' => 'Erstattet', + 'date' => 'Rückerstattungsdatum', + 'customer-name' => 'Name des Kunden', + 'status' => 'Status', + 'action' => 'Aktion', + 'view-title' => 'Rückerstattung #:refund_id', + 'invalid-refund-amount-error' => 'Der Rückerstattungsbetrag sollte nicht Null sein.', + ), + ), + 'catalog' => + array ( + 'products' => + array ( + 'title' => 'Produkte', + 'add-product-btn-title' => 'Produkt hinzufügen', + 'add-title' => 'Produkt hinzufügen', + 'edit-title' => 'Produkt bearbeiten', + 'save-btn-title' => 'Produkt speichern', + 'general' => 'Allgemein', + 'product-type' => 'Produkttyp', + 'simple' => 'Einfach', + 'configurable' => 'Konfigurierbar', + 'familiy' => 'Attributgruppe', + 'sku' => 'SKU', + 'configurable-attributes' => 'Konfigurierbare Attribute', + 'attribute-header' => 'Attribut(s)', + 'attribute-option-header' => 'Attribut Option(s)', + 'no' => 'Nein', + 'yes' => 'Ja', + 'disabled' => 'Deaktiviert', + 'enabled' => 'Aktiviert', + 'add-variant-btn-title' => 'Variante hinzufügen', + 'name' => 'Name', + 'qty' => 'Menge', + 'price' => 'Preis', + 'weight' => 'Gewicht', + 'status' => 'Status', + 'add-variant-title' => 'Variante hinzufügen', + 'variant-already-exist-message' => 'Eine Variante mit denselben Attributoptionen ist bereits vorhanden.', + 'add-image-btn-title' => 'Bild hinzufügen', + 'mass-delete-success' => 'Alle ausgewählten Produkte wurden erfolgreich gelöscht', + 'mass-update-success' => 'Alle ausgewählten Produkte wurden erfolgreich aktualisiert', + 'configurable-error' => 'Bitte wählen Sie mindestens eine konfigurierbares Attribut.', + 'categories' => 'Kategorien', + 'images' => 'Bilder', + 'inventories' => 'Vorräte', + 'variations' => 'Variationen', + 'downloadable' => 'Herunterladbare Informationen', + 'links' => 'Links', + 'add-link-btn-title' => 'Link hinzufügen', + 'samples' => 'Beispiele', + 'add-sample-btn-title' => 'Beispiel hinzufügen', + 'downloads' => 'Download erlaubt', + 'file' => 'Datei', + 'sample' => 'Beispiel', + 'upload-file' => 'Datei hochladen', + 'url' => 'Url', + 'sort-order' => 'Sortierreihenfolge', + 'browse-file' => 'Datei durchsuchen', + 'product-link' => 'Verlinkte Produkte', + 'cross-selling' => 'Cross-Selling', + 'up-selling' => 'Up Selling', + 'related-products' => 'Verwandte Produkte', + 'product-search-hint' => 'Geben Sie den Produktnamen ein', + 'no-result-found' => 'Produkte nicht mit demselben Namen gefunden.', + 'searching' => 'Suche ...', + 'grouped-products' => 'Gruppierte Produkte', + 'search-products' => 'Produkte suchen', + 'channel' => 'Kanäle', + 'bundle-items' => 'Artikel bündeln', + 'add-option-btn-title' => 'Option hinzufügen', + 'option-title' => 'Option Titel', + 'input-type' => 'Input Type', + 'is-required' => 'Ist erforderlich', + 'select' => 'Select', + 'radio' => 'Radio', + 'checkbox' => 'Checkbox', + 'multiselect' => 'Multiselect', + 'new-option' => 'Neue Option', + 'is-default' => 'Ist Standard', + ), + 'attributes' => + array ( + 'title' => 'Attribute', + 'add-title' => 'Attribut hinzufügen', + 'edit-title' => 'Attribut bearbeiten', + 'save-btn-title' => 'Attribut speichern', + 'general' => 'Allgemein', + 'code' => 'Attribut-Code', + 'type' => 'Attribut-Typ', + 'text' => 'Text', + 'textarea' => 'Textarea', + 'price' => 'Preis', + 'boolean' => 'Boolean', + 'select' => 'Select', + 'multiselect' => 'Multiselect', + 'datetime' => 'Datetime', + 'date' => 'Datum', + 'label' => 'Label', + 'admin' => 'Admin', + 'options' => 'Optionen', + 'position' => 'Position', + 'add-option-btn-title' => 'Option hinzufügen', + 'validations' => 'Validierungen', + 'input_validation' => 'Eingabe-Validierung', + 'is_required' => 'Ist erforderlich', + 'is_unique' => 'Ist einzigartig', + 'number' => 'Anzahl', + 'decimal' => 'Dezimal', + 'email' => 'E-Mail', + 'url' => 'URL', + 'configuration' => 'Konfiguration', + 'status' => 'Status', + 'yes' => 'Ja', + 'no' => 'Nein', + 'value_per_locale' => 'Wert pro Sprache', + 'value_per_channel' => 'Wert pro Kanal', + 'is_filterable' => 'Verwendung in der geschichteten Navigation', + 'is_configurable' => 'Verwenden Sie diese Option, um ein konfigurierbares Produkt zu erstellen', + 'admin_name' => 'Admin-Name', + 'is_visible_on_front' => 'Sichtbar auf der Produktansichtseite im Frontend', + 'swatch_type' => 'Farbfeld-Typ', + 'dropdown' => 'Dropdown', + 'color-swatch' => 'Farbfeld', + 'image-swatch' => 'Bild Farbfeld', + 'text-swatch' => 'Text Farbfeld', + 'swatch' => 'Farbfeld', + 'image' => 'Bild', + 'file' => 'Datei', + 'checkbox' => 'Checkbox', + 'use_in_flat' => 'In Produkt Flat Tabelle erstellen', + 'is_comparable' => 'Attribut ist vergleichbar', + 'default_null_option' => 'Erstellen Sie eine leere Standardoption', + ), + 'families' => + array ( + 'title' => 'Familien', + 'add-family-btn-title' => 'Familie hinzufügen', + 'add-title' => 'Familie hinzufügen', + 'edit-title' => 'Familie bearbeiten', + 'save-btn-title' => 'Familie speichern', + 'general' => 'Allgemein', + 'code' => 'Familien Code', + 'name' => 'Name', + 'groups' => 'Gruppen', + 'add-group-title' => 'Gruppe hinzufügen', + 'position' => 'Position', + 'attribute-code' => 'Code', + 'type' => 'Typ', + 'add-attribute-title' => 'Attribut hinzufügen', + 'search' => 'Suche', + 'group-exist-error' => 'Eine gleichnamige Gruppe existiert bereits.', + ), + 'categories' => + array ( + 'title' => 'Kategorien', + 'add-title' => 'Kategorie hinzufügen', + 'edit-title' => 'Kategorie bearbeiten', + 'save-btn-title' => 'Kategorie speichern', + 'general' => 'Allgemein', + 'name' => 'Name', + 'visible-in-menu' => 'Sichtbar im Menü', + 'yes' => 'Ja', + 'no' => 'Nein', + 'position' => 'Position', + 'display-mode' => 'Display-Modus', + 'products-and-description' => 'Produkte und Beschreibung', + 'products-only' => 'Nur Produkte', + 'description-only' => 'Nur Beschreibungen', + 'description-and-images' => 'Beschreibung und Bilder', + 'description' => 'Beschreibung', + 'parent-category' => 'Übergeordnete Kategorie', + 'seo' => 'Suchmaschinen-Optimierung', + 'slug' => 'Slug', + 'meta_title' => 'Meta Titel', + 'meta_description' => 'Meta-Beschreibung', + 'meta_keywords' => 'Meta-Schlüsselworte', + 'image' => 'Bild', + 'filterable-attributes' => 'Filterbare Attribute', + 'attributes' => 'Attribute', + ), + ), + 'configuration' => + array ( + 'title' => 'Konfiguration', + 'save-btn-title' => 'Speichern', + 'save-message' => 'Konfiguration erfolgreich gespeichert', + 'yes' => 'Ja', + 'no' => 'Nein', + 'delete' => 'Löschen', + 'tax-categories' => + array ( + 'title' => 'Steuerkategorien', + 'add-title' => 'Steuerkategorie hinzufügen', + 'edit-title' => 'Steuerkategorie bearbeiten', + 'save-btn-title' => 'Steuerkategorie speichern', + 'general' => 'Steuerkategorie', + 'select-channel' => 'Wählen Sie einen Kanal', + 'name' => 'Name', + 'code' => 'Code', + 'description' => 'Beschreibung', + 'select-taxrates' => 'Wählen Sie die Steuersätze', + 'edit' => + array ( + 'title' => 'Steuerkategorie bearbeiten', + 'edit-button-title' => 'Steuerkategorie bearbeiten', + ), + ), + 'tax-rates' => + array ( + 'title' => 'Steuersätze', + 'add-title' => 'Steuersatz hinzufügen', + 'edit-title' => 'Steuersatz bearbeiten', + 'save-btn-title' => 'Steuersatz speichern', + 'general' => 'Steuersatz', + 'identifier' => 'Bezeichnung', + 'is_zip' => 'Postleitzahlen Reichweite aktivieren', + 'zip_from' => 'Postleitzahl von', + 'zip_to' => 'Postleitzahl bis', + 'state' => 'Staat', + 'select-state' => 'Wählen Sie eine Region, ein Bundesland oder eine Provinz aus.', + 'country' => 'Land', + 'tax_rate' => 'Rate', + 'edit' => + array ( + 'title' => 'Steuersatz bearbeiten', + 'edit-button-title' => 'Steuersatz bearbeiten', + ), + 'zip_code' => 'Postleitzahl', + ), + 'sales' => + array ( + 'shipping-method' => + array ( + 'title' => 'Versand-Methoden', + 'save-btn-title' => 'Speichern', + 'description' => 'Bearbeiten', + 'active' => 'Aktiv', + 'status' => 'Status', + ), + ), + ), + 'settings' => + array ( + 'locales' => + array ( + 'title' => 'Sprachen', + 'add-title' => 'Sprache hinzufügen', + 'edit-title' => 'Sprache bearbeiten', + 'save-btn-title' => 'Sprache speichern', + 'general' => 'Allgemein', + 'code' => 'Code', + 'name' => 'Name', + 'direction' => 'Richtung', + 'create-success' => 'Sprache erfolgreich erstellt.', + 'update-success' => 'Sprache erfolgreich aktualisiert.', + 'delete-success' => 'Sprache erfolgreich gelöscht.', + 'last-delete-error' => 'Mindestens eine Sprache ist erforderlich.', + ), + 'countries' => + array ( + 'title' => 'Länder', + 'add-title' => 'Land hinzufügen', + 'save-btn-title' => 'Land speichern', + 'general' => 'Allgemein', + 'code' => 'Code', + 'name' => 'Name', + ), + 'currencies' => + array ( + 'title' => 'Währungen', + 'add-title' => 'Währung hinzufügen', + 'edit-title' => 'Währung bearbeiten', + 'save-btn-title' => 'Währung speichern', + 'general' => 'Allgemein', + 'code' => 'Code', + 'name' => 'Name', + 'symbol' => 'Symbol', + 'create-success' => 'Währung erfolgreich erstellt.', + 'update-success' => 'Währung erfolgreich aktualisiert.', + 'delete-success' => 'Währung erfolgreich gelöscht.', + 'last-delete-error' => 'Mindestens eine Währung ist erforderlich.', + ), + 'exchange_rates' => + array ( + 'title' => 'Wechselkurse', + 'add-title' => 'Wechselkurs hinzufügen', + 'edit-title' => 'Wechselkurs bearbeiten', + 'save-btn-title' => 'Wechselkurs speichern', + 'general' => 'Allgemein', + 'source_currency' => 'Quell-Währung', + 'target_currency' => 'Ziel-Währung', + 'rate' => 'Rate', + 'exchange-class-not-found' => ':service Wechselkursklasse nicht gefunden', + 'update-rates' => 'Rate aktualisieren mit :service', + 'create-success' => 'Wechselkurs erfolgreich erstellt.', + 'update-success' => 'Wechselkurse erfolgreichaktualisiert.', + 'delete-success' => 'Wechselkurs erfolgreich gelöscht.', + 'last-delete-error' => 'Mindestens ein Wechselkurs ist erforderlich.', + ), + 'inventory_sources' => + array ( + 'title' => 'Inventar-Quellen', + 'add-title' => 'Inventar Quelle hinzufügen', + 'edit-title' => 'Inventar Quelle bearbeiten', + 'save-btn-title' => 'Inventar Quelle speichern', + 'general' => 'Allgemein', + 'code' => 'Code', + 'name' => 'Name', + 'description' => 'Beschreibung', + 'source-is-active' => 'Quelle ist aktiv', + 'contact-info' => 'Kontakt-Informationen', + 'contact_name' => 'Name', + 'contact_email' => 'E-Mail', + 'contact_number' => 'Kontakt-Nummer', + 'contact_fax' => 'Fax', + 'address' => 'Quell-Adresse', + 'country' => 'Land', + 'state' => 'Staat', + 'city' => 'Stadt', + 'street' => 'Straße', + 'postcode' => 'Postleitzahl', + 'priority' => 'Priorität', + 'latitude' => 'Breite', + 'longitude' => 'Länge', + 'status' => 'Status', + 'create-success' => 'Inventar Quelle erfolgreich erstellt.', + 'update-success' => 'Inventar Quelle erfolgreich aktualisiert.', + 'delete-success' => 'Inventar Quelle erfolgreich gelöscht.', + 'last-delete-error' => 'Mindestens eine Inventar-Quelle erforderlich ist.', + ), + 'channels' => + array ( + 'title' => 'Kanäle', + 'add-title' => 'Kanal hinzufügen', + 'edit-title' => 'Kanal bearbeiten', + 'save-btn-title' => 'Kanal speichern', + 'general' => 'Allgemein', + 'code' => 'Code', + 'name' => 'Name', + 'description' => 'Beschreibung', + 'hostname' => 'Hostname', + 'currencies-and-locales' => 'Währungen und Spachen', + 'locales' => 'Sprachen', + 'default-locale' => 'Standard-Sprache', + 'currencies' => 'Währungen', + 'base-currency' => 'Standard-Währung', + 'root-category' => 'Root-Kategorie', + 'inventory_sources' => 'Inventar-Quellen', + 'design' => 'Design', + 'theme' => 'Theme', + 'home_page_content' => 'Startseite Inhalt', + 'footer_content' => 'Fußzeile Inhalt', + 'logo' => 'Logo', + 'favicon' => 'Favicon', + 'create-success' => 'Kanal erfolgreich erstellt.', + 'update-success' => 'Kanal erfolgreich aktualisiert.', + 'delete-success' => 'Kanal erfolgreich gelöscht.', + 'last-delete-error' => 'Mindestens ein Kanal ist erforderlich.', + 'seo' => 'Home-Page-SEO', + 'seo-title' => 'Meta Titel', + 'seo-description' => 'Meta-Beschreibung', + 'seo-keywords' => 'Meta-keywords', + ), + 'sliders' => + array ( + 'title' => 'Sliders', + 'name' => 'Name', + 'add-title' => 'Slider erstellen', + 'edit-title' => 'Slider editieren', + 'save-btn-title' => 'Slider speichern', + 'general' => 'Allgemein', + 'image' => 'Bild', + 'content' => 'Inhalt', + 'channels' => 'Kanal', + 'created-success' => 'Slider erfolgreich erstellt', + 'created-fault' => 'Fehler beim Erstellen des Slider-Elements', + 'update-success' => 'Slider-Eintrag wurde erfolgreich aktualisiert', + 'update-fail' => 'Slider kann nicht aktualisiert werden', + 'delete-success' => 'Der letzte Slider kann nicht gelöscht werden', + 'delete-fail' => 'Slider erfolgreich gelöscht', + ), + 'tax-categories' => + array ( + 'title' => 'Steuerkategorien', + 'add-title' => 'Steuerkategorie erstellen', + 'edit-title' => 'Steuerkategorie bearbeiten', + 'save-btn-title' => 'Steuern-Kategorie speichern', + 'general' => 'Steuerkategorie', + 'select-channel' => 'Wählen Sie einen Kanal', + 'name' => 'Name', + 'code' => 'Code', + 'description' => 'Beschreibung', + 'select-taxrates' => 'Wählen Sie die Steuersätze', + 'edit' => + array ( + 'title' => 'Steuerkategorie bearbeiten', + 'edit-button-title' => 'Steuerkategorie bearbeiten', + ), + 'create-success' => 'Neue Steuerkategorie Angelegt', + 'create-error' => 'Fehler Bei Der Erstellung Der Steuerkategorie', + 'update-success' => 'Erfolgreich Aktualisiert, Steuerkategorie', + 'update-error' => 'Fehler Beim Update Der Steuerkategorie', + 'atleast-one' => 'Nicht Löschen Sie Die Letzte Steuerart', + 'delete' => 'Steuer Kategorie Wurde Erfolgreich Gelöscht', + ), + 'tax-rates' => + array ( + 'title' => 'Steuersätze', + 'add-title' => 'Steuersatz erstellen', + 'edit-title' => 'Steuersatz bearbeiten', + 'save-btn-title' => 'Steuersatz speichern', + 'general' => 'Steuersatz', + 'identifier' => 'Bezeichner', + 'is_zip' => 'Postleitzahlen Reichweite aktivieren', + 'zip_from' => 'Postleitzahl von', + 'zip_to' => 'Postleitzahl bis', + 'state' => 'Staat', + 'select-state' => 'Wählen Sie eine Region, ein Bundesland oder eine Provinz aus.', + 'country' => 'Land', + 'tax_rate' => 'Rate', + 'edit' => + array ( + 'title' => 'Steuersatz bearbeiten', + 'edit-button-title' => 'Steuersatz bearbeiten', + ), + 'zip_code' => 'Postleitzahl', + 'create-success' => 'Steuersatz erfolgreich erstellt', + 'create-error' => 'Steuersatz kann nicht erstellt werden', + 'update-success' => 'Steuersatz erfolgreich aktualisiert', + 'update-error' => 'Fehler! Steuersatz Kann nicht aktualisiert werden', + 'delete' => 'Steuersatz erfolgreich gelöscht', + 'atleast-one' => 'Letzter Steuersatz kann nicht gelöscht werden', + ), + 'development' => + array ( + 'title' => 'Entwicklung', + ), + ), + 'customers' => + array ( + 'groups' => + array ( + 'add-title' => 'Gruppe hinzufügen', + 'edit-title' => 'Gruppe bearbeiten', + 'save-btn-title' => 'Gruppe speichern', + 'title' => 'Gruppen', + 'code' => 'Code', + 'name' => 'Name', + 'is_user_defined' => 'Benutzer definiert', + 'yes' => 'Ja', + ), + 'addresses' => + array ( + 'title' => ':customer_name\'s Adressen-Liste', + 'vat_id' => 'Umsatzsteuer-ID', + 'create-title' => 'Kunden-Adresse erstellen', + 'edit-title' => 'Kunden-Adresse bearbeiten', + 'title-orders' => ':customer_name Auftragsliste', + 'address-list' => 'Adressliste', + 'order-list' => 'Bestellliste', + 'address-id' => 'Adresse-ID', + 'address-1' => 'Adresse 1', + 'city' => 'Stadt', + 'state-name' => 'Staat', + 'country-name' => 'Land', + 'postcode' => 'Postleitzahl', + 'default-address' => 'Standard-Adresse', + 'yes' => 'Ja', + 'not-approved' => 'Nicht zugelassen', + 'no' => 'Nein', + 'dash' => '-', + 'delete' => 'Löschen', + 'create-btn-title' => 'Adresse hinzufügen', + 'save-btn-title' => 'Adresse speichern', + 'general' => 'Allgemein', + 'success-create' => 'Erfolg: Kunden-Adresse erstellt wurde.', + 'success-update' => 'Erfolg: Kunden-Adresse erfolgreich aktualisiert.', + 'success-delete' => 'Erfolg: Kunden-Adresse erfolgreich gelöscht.', + 'success-mass-delete' => 'Erfolg: Die ausgewählten Adressen wurden erfolgreich gelöscht.', + 'error-create' => 'Fehler: Kunde-Adresse nicht erstellt.', + ), + 'note' => + array ( + 'title' => 'Notiz hinzufügen', + 'save-note' => 'Notiz speichern', + 'enter-note' => 'Hinweis eingeben', + 'help-title' => 'Notiz zu diesem Kunden hinzufügen', + ), + 'customers' => + array ( + 'add-title' => 'Kunden hinzufügen', + 'edit-title' => 'Kunde bearbeiten', + 'title' => 'Kunden', + 'first_name' => 'Vorname', + 'last_name' => 'Nachname', + 'gender' => 'Geschlecht', + 'email' => 'E-Mail', + 'date_of_birth' => 'Geburtsdatum', + 'phone' => 'Telefon', + 'customer_group' => 'Kundengruppe', + 'save-btn-title' => 'Kunde speichern', + 'channel_name' => 'Kanalname', + 'state' => 'Staat', + 'select-state' => 'Wählen Sie eine Region, ein Bundesland, oder eine Provinz aus.', + 'country' => 'Land', + 'other' => 'Andere', + 'male' => 'Männlich', + 'female' => 'Weiblich', + 'group-default' => 'Die Standardgruppe kann nicht gelöscht werden.', + 'edit-help-title' => 'Kunde bearbeiten', + 'delete-help-title' => 'Kunde löschen', + 'addresses' => 'Adressen', + 'mass-destroy-success' => 'Kunden erfolgreich gelöscht', + 'mass-update-success' => 'Kunden erfolgreich aktualisiert', + 'status' => 'Status', + 'active' => 'Aktiv', + 'inactive' => 'Inaktiv', + ), + 'reviews' => + array ( + 'title' => 'Bewertungen', + 'edit-title' => 'Bewertung bearbeiten', + 'rating' => 'Bewertung', + 'status' => 'Status', + 'comment' => 'Kommentar', + 'pending' => 'Ausstehend', + 'approved' => 'Genehmigen', + 'disapproved' => 'Missbilligen', + ), + 'subscribers' => + array ( + 'title' => 'Newsletter-Abonnenten', + 'title-edit' => 'Newsletter-Abonnenten bearbeiten', + 'email' => 'E-Mail', + 'is_subscribed' => 'Abonniert', + 'edit-btn-title' => 'Abonnenten bearbeiten', + 'update-success' => 'Der Abonnent wurde erfolgreich aktualisiert', + 'update-failed' => 'Fehler! Sie können den Abonnenten nicht kündigen', + 'delete' => 'Der Abonnent wurde erfolgreich gelöscht', + 'delete-failed' => 'Fehler! Abonnenten können nicht gelöscht werden', + ), + ), + 'promotions' => + array ( + 'cart-rules' => + array ( + 'title' => 'Warenkorbregeln', + 'add-title' => 'Warenkorbregel hinzufügen', + 'edit-title' => 'Warenkorbregel bearbeiten', + 'save-btn-title' => 'Warenkorbregel speichern', + 'rule-information' => 'Regelinformationen', + 'name' => 'Name', + 'description' => 'Beschreibung', + 'status' => 'Status', + 'is-active' => 'Warenkorbregel ist aktiv', + 'channels' => 'Kanäle', + 'customer-groups' => 'Kundengruppen', + 'coupon-type' => 'Gutscheintyp', + 'no-coupon' => 'Ohne Gutschein', + 'specific-coupon' => 'Gutscheintyp', + 'auto-generate-coupon' => 'Gutschein automatisch generieren', + 'no' => 'Nein', + 'yes' => 'Ja', + 'coupon-code' => 'Gutscheincode', + 'uses-per-coupon' => 'Verwendungen pro Gutschein', + 'uses-per-customer' => 'Verwendungen pro Kunde', + 'uses-per-customer-control-info' => 'Wird nur für angemeldete Kunden verwendet.', + 'from' => 'Von', + 'to' => 'An', + 'priority' => 'Priorität', + 'conditions' => 'Bedingungen', + 'condition-type' => 'Bedingungen Typ', + 'all-conditions-true' => 'Alle Bedingungen sind erfüllt', + 'any-condition-true' => 'Jede Bedingung ist wahr', + 'add-condition' => 'Bedingung hinzufügen', + 'choose-condition-to-add' => 'Wählen Sie eine Bedingung zum Hinzufügen aus', + 'cart-attribute' => 'Warenkorbattribut', + 'subtotal' => 'Zwischensumme', + 'total-items-qty' => 'Gesamtmenge der Artikel', + 'total-weight' => 'Gesamtgewicht', + 'payment-method' => 'Zahlungsmethode', + 'shipping-method' => 'Versandart', + 'shipping-postcode' => 'Postleitzahl', + 'shipping-state' => 'Versand Staat', + 'shipping-country' => 'Versand Land', + 'cart-item-attribute' => 'Warenkorb-Item-Attribut', + 'price-in-cart' => 'Betrag im Warenkorb', + 'qty-in-cart' => 'Menge im Warenkorb', + 'product-attribute' => 'Produkt-Attribut', + 'attribute-name-children-only' => ':attribute_name (Nur Kinder)', + 'attribute-name-parent-only' => ':attribute_name (Nur Eltern)', + 'is-equal-to' => 'Gleich', + 'is-not-equal-to' => 'Ist nicht gleich', + 'equals-or-greater-than' => 'Gleich oder größer als', + 'equals-or-less-than' => 'Gleich oder weniger als', + 'greater-than' => 'Größer als', + 'less-than' => 'Weniger als', + 'contain' => 'Enthalten', + 'contains' => 'Enthält', + 'does-not-contain' => 'Nicht enthalten', + 'actions' => 'Aktionen', + 'action-type' => 'Aktion Typ', + 'percentage-product-price' => 'Prozentsatz des Produktpreises', + 'fixed-amount' => 'Fester Betrag', + 'fixed-amount-whole-cart' => 'Fester Betrag für gesamten Warenkorb', + 'buy-x-get-y-free' => 'Kaufen Sie X, erhalten Sie Y kostenfrei', + 'discount-amount' => 'Rabattbetrag', + 'discount-quantity' => 'Maximale Anzahl reduzierter Artikel', + 'discount-step' => 'Kaufe Sie Menge X', + 'free-shipping' => 'Kostenloser Versand', + 'apply-to-shipping' => 'Auf den Versand anwenden', + 'coupon-codes' => 'Gutschein-Codes', + 'coupon-qty' => 'Gutschein Menge', + 'code-length' => 'Code-Länge', + 'code-format' => 'Code-Format', + 'alphanumeric' => 'Alphanumerisch', + 'alphabetical' => 'Alphabetisch', + 'numeric' => 'Numerisch', + 'code-prefix' => 'Code-Präfix', + 'code-suffix' => 'Code Suffix', + 'generate' => 'Generieren', + 'cart-rule-not-defind-error' => 'Warenkorb-Regel ist nicht definiert', + 'mass-delete-success' => 'Alle ausgewählten Gutscheine wurden erfolgreich gelöscht.', + 'end-other-rules' => 'Ende Andere Regeln', + 'children-categories' => 'Kategorien (Nur Kinder)', + 'parent-categories' => 'Kategorien (Nur Eltern)', + 'categories' => 'Kategorien', + 'attribute_family' => 'Attributgruppe', + ), + 'catalog-rules' => + array ( + 'title' => 'Katalogregeln', + 'add-title' => 'Katalogregel hinzufügen', + 'edit-title' => 'Katalogregel bearbeiten', + 'save-btn-title' => 'Katalogregel speichern', + 'rule-information' => 'Regeliformationen', + 'name' => 'Name', + 'description' => 'Beschreibung', + 'status' => 'Status', + 'is-active' => 'Katalogregel ist aktiv', + 'channels' => 'Kanäle', + 'customer-groups' => 'Kundengruppen', + 'no' => 'Nein', + 'yes' => 'Ja', + 'from' => 'Von', + 'to' => 'An', + 'priority' => 'Priorität', + 'conditions' => 'Bedingungen', + 'condition-type' => 'Bedingungen Typ', + 'all-conditions-true' => 'Alle Bedingungen sind erfüllt', + 'any-condition-true' => 'Jede Bedingung ist wahr', + 'add-condition' => 'Bedingung hinzufügen', + 'choose-condition-to-add' => 'Wählen Sie eine Bedingung zum Hinzufügen aus', + 'product-attribute' => 'Produkt-Attribut', + 'attribute-name-children-only' => ':attribute_name (Nur Kinder)', + 'attribute-name-parent-only' => ':attribute_name (Nur Eltern)', + 'is-equal-to' => 'Gleich', + 'is-not-equal-to' => 'Ist nicht gleich', + 'equals-or-greater-than' => 'Gleich oder größer als', + 'equals-or-less-than' => 'Gleich oder weniger als', + 'greater-than' => 'Größer als', + 'less-than' => 'Weniger als', + 'contain' => 'Enthalten', + 'contains' => 'Enthält', + 'does-not-contain' => 'Nicht enthalten', + 'actions' => 'Aktionen', + 'action-type' => 'Aktion Typ', + 'percentage-product-price' => 'Prozentsatz des Produktpreises', + 'fixed-amount' => 'Fester Betrag', + 'fixed-amount-whole-cart' => 'Fester Betrag für gesamten Warenkob', + 'buy-x-get-y-free' => 'Kaufen Sie X, erhalten Sie Y kostenfrei', + 'discount-amount' => 'Rabatt-Betrag', + 'mass-delete-success' => 'Alle ausgewählten Gutscheine wurden erfolgreich gelöscht.', + 'end-other-rules' => 'Ende Andere Regeln', + 'categories' => 'Kategorien', + 'attribute_family' => 'Attributgruppe', + ), + ), + 'error' => + array ( + 'go-to-home' => 'HOME ÖFFNEN', + 'in-maitainace' => 'In Bearbeitung', + 'right-back' => 'Gleich wieder zurück', + 404 => + array ( + 'page-title' => '404-Seite nicht gefunden', + 'name' => '404', + 'title' => 'Seite nicht gefunden', + 'message' => 'Die gesuchte Seite existiert nicht oder wurde verschoben. Navigieren Sie mit dem Seitenmenü.', + ), + 403 => + array ( + 'page-title' => '403 Verboten-Fehler', + 'name' => '403', + 'title' => 'Verboten-Fehler', + 'message' => 'Sie haben keine Berechtigung um auf diese Seite zuzugreifen.', + ), + 500 => + array ( + 'page-title' => '500 Interner Serverfehler', + 'name' => '500', + 'title' => 'Interner Serverfehler', + 'message' => 'Der Server hat einen internen Fehler.', + ), + 401 => + array ( + 'page-title' => '401 Unauthorisiert', + 'name' => '401', + 'title' => 'Unauthorisiert', + 'message' => 'Die Anforderung wurde nicht angewendet, da keine gültigen Authentifizierungsdaten für die Zielressource vorhanden sind.', + ), + ), + 'export' => + array ( + 'export' => 'Export', + 'import' => 'Import', + 'format' => 'Wählen Sie ein Format', + 'download' => 'Download', + 'upload' => 'Hochladen', + 'csv' => 'CSV', + 'xls' => 'XLS', + 'file' => 'Datei', + 'upload-error' => 'Die Datei muss von folgendem Typ sein: xls, xlsx, csv.', + 'duplicate-error' => 'Bezeichner müssen eindeutig sein, doppelte Bezeichner :identifier in Zeile :position.', + 'enough-row-error' => 'die Datei hat nicht genug Zeilen', + 'allowed-type' => 'Erlaubter Typ :', + 'file-type' => 'csv, xls, xlsx.', + 'no-records' => 'Nichts zu exportieren', + 'illegal-format' => 'Fehler! Diese Art von Format wird entweder nicht unterstützt oder ist unzulässig', + ), + 'cms' => + array ( + 'pages' => + array ( + 'general' => 'Allgemein', + 'seo' => 'SEO', + 'pages' => 'Seiten', + 'title' => 'Seiten', + 'add-title' => 'Seite hinzufügen', + 'content' => 'Inhalt', + 'url-key' => 'URL-Schlüssel', + 'channel' => 'Kanäle', + 'locale' => 'Sprachen', + 'create-btn-title' => 'Seite speichern', + 'edit-title' => 'Seite bearbeiten', + 'edit-btn-title' => 'Seite speichern', + 'create-success' => 'Seite erfolgreich erstellt', + 'create-partial' => 'Einige der angeforderten Seiten sind bereits vorhanden', + 'create-failure' => 'Alle angeforderten Seiten sind bereits vorhanden', + 'update-success' => 'Seite erfolgreich aktualisiert', + 'update-failure' => 'Die Seite kann nicht aktualisiert werden', + 'page-title' => 'Titel der Seite', + 'layout' => 'Layout', + 'meta_keywords' => 'Meta-Schlüsselworte', + 'meta_description' => 'Meta-Beschreibung', + 'meta_title' => 'Meta Titel', + 'delete-success' => 'CMS-Seite erfolgreich gelöscht', + 'delete-failure' => 'CMS-Seite kann nicht gelöscht werden', + 'preview' => 'Vorschau', + 'one-col' => '
Use class: "static-container one-column" for one column layout.
', + 'two-col' => '
Use class: "static-container two-column" for two column layout.
', + 'three-col' => '
Use class: "static-container three-column" for three column layout.
', + 'helper-classes' => 'Helfer-Klassen', + ), + ), + 'response' => + array ( + 'being-used' => 'Diese Ressource :name wird verwendet in :source', + 'cannot-delete-default' => 'Der Standardkanal kann nicht gelöscht werden', + 'create-success' => ':name erfolgreich erstellt.', + 'update-success' => ':name erfolgreich aktualisiert.', + 'delete-success' => ':name erfolgreich gelöscht.', + 'delete-failed' => 'Fehler beim löschen von :name.', + 'last-delete-error' => 'Zumindest ein :name ist erforderlich.', + 'user-define-error' => 'System :name kann nicht gelöscht werden', + 'attribute-error' => ':name wird in konfigurierbaren Produkten verwendet.', + 'attribute-product-error' => ':name wird in Produkten verwendet.', + 'customer-associate' => ':name können nicht gelöscht werden, weil Kunden dieser Gruppe zugeordnet sind.', + 'currency-delete-error' => 'Diese Währung ist als Kanalbasiswährung festgelegt und kann daher nicht gelöscht werden.', + 'upload-success' => ':name erfolgreich hochgeladen.', + 'delete-category-root' => 'Die Root-Kategorie kann nicht gelöscht werden', + 'create-root-failure' => 'Kategorie mit dem Namen Root ist bereits vorhanden', + 'cancel-success' => ':name erfolgreich abgebrochen.', + 'cancel-error' => ':name können nicht storniert werden.', + 'already-taken' => 'Der :name wird bereits verwendet.', + 'order-pending' => 'Konto kann nicht gelöscht werden, da einige Bestellungen ausstehen oder verarbeitet werden.', + ), + 'footer' => + array ( + 'copy-right' => 'Powered by Bagisto, A Community Project by Webkul', + ), + 'admin' => + array ( + 'emails' => + array ( + 'email' => 'E-Mail', + 'notification_label' => 'Benachrichtigungen', + 'notifications' => + array ( + 'verification' => 'Senden von Bestätigungs-E-Mails', + 'registration' => 'Senden von Anmeldungs-E-Mails', + 'customer' => 'Senden von Kunden-E-Mails', + 'new-order' => 'Senden von Auftragsbestätigungs-E-Mails', + 'new-admin' => 'Senden von Admin Einladungs-E-Mails', + 'new-invoice' => 'Senden von Rechnungs-Bestätigungs-E-Mails', + 'new-refund' => 'Senden von Erstattungs-Benachrichtigungs-E-Mails', + 'new-shipment' => 'Senden von Versand-Benachrichtigungs-E-Mails', + 'new-inventory-source' => 'Senden von Inventar-Quellen-E-Mail-Benachrichtigungen', + 'cancel-order' => 'Senden von Abbrechen E-Mails eines Bestellvorgangs', + ), + ), + 'system' => + array ( + 'catalog' => 'Katalog', + 'products' => 'Produkte', + 'guest-checkout' => 'Gastbestellungen', + 'allow-guest-checkout' => 'Gastbestellungen erlauben', + 'allow-guest-checkout-hint' => 'Hinweis: Wenn diese Option aktiviert ist, kann sie für jedes Produkt einzeln konfiguriert werden.', + 'review' => 'Überprüfen', + 'allow-guest-review' => 'Gastbewertungen erlauben', + 'inventory' => 'Inventar', + 'stock-options' => 'Inventaroptionen', + 'allow-backorders' => 'Nachbestellungen zulassen', + 'customer' => 'Kunden', + 'settings' => 'Einstellungen', + 'address' => 'Adresse', + 'street-lines' => 'Adresszeilen (Standard: 1)', + 'sales' => 'Vertrieb', + 'shipping-methods' => 'Versand-Methoden', + 'free-shipping' => 'Kostenloser Versand', + 'flate-rate-shipping' => 'Pauschale Versandkosten', + 'shipping' => 'Versand', + 'origin' => 'Herkunft', + 'country' => 'Land', + 'state' => 'Bundesland', + 'zip' => 'Postleitzahl', + 'city' => 'Stadt', + 'street-address' => 'Anschrift', + 'title' => 'Titel', + 'description' => 'Beschreibung', + 'rate' => 'Rate', + 'status' => 'Status', + 'type' => 'Typ', + 'payment-methods' => 'Zahlungsmethoden', + 'cash-on-delivery' => 'Nachnahme', + 'money-transfer' => 'Überweisung', + 'paypal-standard' => 'Paypal-Standard', + 'business-account' => 'Paypal-Geschäftskonto', + 'newsletter' => 'Newsletter-Abonnement', + 'newsletter-subscription' => 'Newsletter-Abonnement erlauben', + 'email' => 'E-Mail-Prüfung', + 'email-verification' => 'E-Mail-Prüfung erlauben', + 'sort_order' => 'Sortierreihenfolge', + 'general' => 'Allgemein', + 'footer' => 'Fußzeile', + 'content' => 'Inhalt', + 'footer-content' => 'Fußzeile Text', + 'footer-toggle' => 'Fußzeile aktiv', + 'locale-options' => 'Einheit-Optionen', + 'weight-unit' => 'Gewichtseinheit', + 'email-settings' => 'E-Mail Einstellungen', + 'email-sender-name' => 'E-Mail-Adresse des Absenders', + 'shop-email-from' => 'E-Mail-Adresse des Shops (bei Bestellungen, etc.)', + 'admin-name' => 'Name des Admins', + 'admin-email' => 'E-Mail-Adresse des Admins', + 'admin-page-limit' => 'Elemente pro Seite (Admin)', + 'design' => 'Design', + 'admin-logo' => 'Admin-Logo', + 'logo-image' => 'Logo-Bild', + 'credit-max' => 'Kunden Kredit Max', + 'credit-max-value' => 'Kredit Max-Wert', + 'use-credit-max' => 'Verwendung von Kredit-Max', + 'order-settings' => 'Bestelleinstellungen', + 'orderNumber' => 'Auftragsnummer Einstellungen', + 'order-number-prefix' => 'Auftragsnummer Präfix', + 'order-number-length' => 'Auftragsnummer Länge', + 'order-number-suffix' => 'Auftragsnummer Suffix', + 'default' => 'Standard', + 'sandbox' => 'Sandbox', + 'all-channels' => 'Alle', + 'all-locales' => 'Alle', + 'invoice-slip-design' => 'Rechnungsdesign', + 'logo' => 'Logo', + ), + ), +); \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/lang/en/app.php b/packages/Webkul/Admin/src/Resources/lang/en/app.php index dfb8ac0d9..b13b2ec4e 100755 --- a/packages/Webkul/Admin/src/Resources/lang/en/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/en/app.php @@ -1331,7 +1331,21 @@ return [ 'cheapest-first' => 'Cheapest First', 'expensive-first' => 'Expensive First', 'comma-seperated' => 'Comma Seperated', - 'favicon' => 'Favicon' + 'favicon' => 'Favicon', + 'seo' => 'SEO', + 'rich-snippets' => 'Rich Snippets', + 'products' => 'Products', + 'enable' => 'Enable', + 'show-weight' => 'Show Weight', + 'show-categories' => 'Show Categories', + 'show-images' => 'Show Images', + 'show-reviews' => 'Show Reviews', + 'show-ratings' => 'Show Ratings', + 'show-offers' => 'Show Offers', + 'show-sku' => 'Show SKU', + 'categories' => 'Categories', + 'show-sku' => 'Show SKU', + 'show-search-input-field' => 'Show Search Input Field' ] ] ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/fa/app.php b/packages/Webkul/Admin/src/Resources/lang/fa/app.php index 0a1997c99..3b41edecb 100644 --- a/packages/Webkul/Admin/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/fa/app.php @@ -1329,7 +1329,21 @@ return [ 'cheapest-first' => 'Cheapest First', 'expensive-first' => 'Expensive First', 'comma-seperated' => 'Comma Seperated', - 'favicon' => 'Favicon' + 'favicon' => 'Favicon', + 'seo' => 'SEO', + 'rich-snippets' => 'Rich Snippets', + 'products' => 'Products', + 'enable' => 'Enable', + 'show-weight' => 'Show Weight', + 'show-categories' => 'Show Categories', + 'show-images' => 'Show Images', + 'show-reviews' => 'Show Reviews', + 'show-ratings' => 'Show Ratings', + 'show-offers' => 'Show Offers', + 'show-sku' => 'Show SKU', + 'categories' => 'Categories', + 'show-sku' => 'Show SKU', + 'show-search-input-field' => 'Show Search Input Field' ] ] ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/it/app.php b/packages/Webkul/Admin/src/Resources/lang/it/app.php index 2494bd14d..98b1f35d8 100644 --- a/packages/Webkul/Admin/src/Resources/lang/it/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/it/app.php @@ -1333,8 +1333,21 @@ return [ 'cheapest-first' => 'I più convenienti prima', 'expensive-first' => 'I più cari prima', 'comma-seperated' => 'Separato da virgola', - 'favicon' => 'Favicon' - + 'favicon' => 'Favicon', + 'seo' => 'SEO', + 'rich-snippets' => 'Rich Snippets', + 'products' => 'Products', + 'enable' => 'Enable', + 'show-weight' => 'Show Weight', + 'show-categories' => 'Show Categories', + 'show-images' => 'Show Images', + 'show-reviews' => 'Show Reviews', + 'show-ratings' => 'Show Ratings', + 'show-offers' => 'Show Offers', + 'show-sku' => 'Show SKU', + 'categories' => 'Categories', + 'show-sku' => 'Show SKU', + 'show-search-input-field' => 'Show Search Input Field' ] ] ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/nl/app.php b/packages/Webkul/Admin/src/Resources/lang/nl/app.php index d3d8dad69..13bee3cf1 100644 --- a/packages/Webkul/Admin/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/nl/app.php @@ -1328,7 +1328,21 @@ return [ 'cheapest-first' => 'Cheapest First', 'expensive-first' => 'Expensive First', 'comma-seperated' => 'Comma Seperated', - 'favicon' => 'Favicon' + 'favicon' => 'Favicon', + 'seo' => 'SEO', + 'rich-snippets' => 'Rich Snippets', + 'products' => 'Products', + 'enable' => 'Enable', + 'show-weight' => 'Show Weight', + 'show-categories' => 'Show Categories', + 'show-images' => 'Show Images', + 'show-reviews' => 'Show Reviews', + 'show-ratings' => 'Show Ratings', + 'show-offers' => 'Show Offers', + 'show-sku' => 'Show SKU', + 'categories' => 'Categories', + 'show-sku' => 'Show SKU', + 'show-search-input-field' => 'Show Search Input Field' ] ] ]; diff --git a/packages/Webkul/Admin/src/Resources/lang/pl/app.php b/packages/Webkul/Admin/src/Resources/lang/pl/app.php index ef6e30d42..964c29eac 100644 --- a/packages/Webkul/Admin/src/Resources/lang/pl/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pl/app.php @@ -1002,7 +1002,7 @@ return [ 'specific-coupon' => 'Konkretny kupon', 'auto-generate-coupon' => 'Automatyczniegeneruj kupon', 'no' => 'Nie', - 'yes' => 'Tak, + 'yes' => 'Tak', 'coupon-code' => 'Kod kuponu', 'uses-per-coupon' => 'Wartość wykorzystania na kupon', 'uses-per-customer' => 'Wartość wykorzystania na klienta', @@ -1318,7 +1318,21 @@ return [ 'all-customer-groups' => 'Wszystkie grupy klientów', 'invoice-slip-design' => 'Wzór wydruku faktury', 'logo' => 'Logo', - 'favicon' => 'Favicon' + 'favicon' => 'Favicon', + 'seo' => 'SEO', + 'rich-snippets' => 'Rich Snippets', + 'products' => 'Products', + 'enable' => 'Enable', + 'show-weight' => 'Show Weight', + 'show-categories' => 'Show Categories', + 'show-images' => 'Show Images', + 'show-reviews' => 'Show Reviews', + 'show-ratings' => 'Show Ratings', + 'show-offers' => 'Show Offers', + 'show-sku' => 'Show SKU', + 'categories' => 'Categories', + 'show-sku' => 'Show SKU', + 'show-search-input-field' => 'Show Search Input Field' ] ] ]; \ No newline at end of file diff --git a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php index 1088aa8d5..dcbe95494 100755 --- a/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Admin/src/Resources/lang/pt_BR/app.php @@ -1332,7 +1332,21 @@ return [ 'cheapest-first' => 'Cheapest First', 'expensive-first' => 'Expensive First', 'comma-seperated' => 'Comma Seperated', - 'favicon' => 'Favicon' + 'favicon' => 'Favicon', + 'seo' => 'SEO', + 'rich-snippets' => 'Rich Snippets', + 'products' => 'Products', + 'enable' => 'Enable', + 'show-weight' => 'Show Weight', + 'show-categories' => 'Show Categories', + 'show-images' => 'Show Images', + 'show-reviews' => 'Show Reviews', + 'show-ratings' => 'Show Ratings', + 'show-offers' => 'Show Offers', + 'show-sku' => 'Show SKU', + 'categories' => 'Categories', + 'show-sku' => 'Show SKU', + 'show-search-input-field' => 'Show Search Input Field' ] ] ]; diff --git a/packages/Webkul/Category/src/Database/Seeders/CategoryTableSeeder.php b/packages/Webkul/Category/src/Database/Seeders/CategoryTableSeeder.php index 71f4f1076..3f021a9b3 100755 --- a/packages/Webkul/Category/src/Database/Seeders/CategoryTableSeeder.php +++ b/packages/Webkul/Category/src/Database/Seeders/CategoryTableSeeder.php @@ -12,6 +12,8 @@ class CategoryTableSeeder extends Seeder { DB::table('categories')->delete(); + DB::table('category_translations')->delete(); + $now = Carbon::now(); DB::table('categories')->insert([ diff --git a/packages/Webkul/Category/src/Repositories/CategoryRepository.php b/packages/Webkul/Category/src/Repositories/CategoryRepository.php index b4c452ebd..7be582b2e 100755 --- a/packages/Webkul/Category/src/Repositories/CategoryRepository.php +++ b/packages/Webkul/Category/src/Repositories/CategoryRepository.php @@ -103,7 +103,7 @@ class CategoryRepository extends Repository { static $categories = []; - if(array_key_exists($id, $categories)) { + if (array_key_exists($id, $categories)) { return $categories[$id]; } diff --git a/packages/Webkul/Checkout/src/Cart.php b/packages/Webkul/Checkout/src/Cart.php index 41aedf801..635764533 100755 --- a/packages/Webkul/Checkout/src/Cart.php +++ b/packages/Webkul/Checkout/src/Cart.php @@ -690,7 +690,7 @@ class Cart if ($address === null) { $address = new class() { public $country; - + public $state; public $postcode; function __construct() diff --git a/packages/Webkul/Customer/src/Resources/lang/de/app.php b/packages/Webkul/Customer/src/Resources/lang/de/app.php new file mode 100755 index 000000000..9c197a591 --- /dev/null +++ b/packages/Webkul/Customer/src/Resources/lang/de/app.php @@ -0,0 +1,20 @@ + [ + 'success' => 'Artikel erfolgreich zur Wunschliste hinzugefügt', + 'failure' => 'Artikel kann nicht zur Wunschliste hinzugefügt werden', + 'already' => 'Artikel bereits in Ihrer Wunschliste vorhanden', + 'removed' => 'Artikel erfolgreich von der Wunschliste entfernt', + 'remove-fail' => 'Artikel kann nicht von der Wunschliste entfernt werden', + 'empty' => 'Sie haben keine Artikel auf Ihrer Wunschliste', + 'select-options' => 'Vor dem Hinzufügen zur Wunschliste müssen Optionen ausgewählt werden', + 'remove-all-success' => 'Alle Elemente von Ihrer Wunschliste wurden entfernt', + ], + 'reviews' => [ + 'empty' => 'Sie haben noch kein Produkt bewertet' + ], + 'forget_password' => [ + 'reset_link_sent' => 'Wir haben Ihren Link zum Zurücksetzen des Passworts per E-Mail gesendet.' + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/ProductImage.php b/packages/Webkul/Product/src/Helpers/ProductImage.php index 451eec453..8556f14bd 100755 --- a/packages/Webkul/Product/src/Helpers/ProductImage.php +++ b/packages/Webkul/Product/src/Helpers/ProductImage.php @@ -21,8 +21,9 @@ class ProductImage extends AbstractProduct $images = []; foreach ($product->images as $image) { - if (! Storage::has($image->path)) + if (! Storage::has($image->path)) { continue; + } $images[] = [ 'small_image_url' => url('cache/small/' . $image->path), diff --git a/packages/Webkul/Product/src/Helpers/Review.php b/packages/Webkul/Product/src/Helpers/Review.php index 4312f4e09..993e90b14 100755 --- a/packages/Webkul/Product/src/Helpers/Review.php +++ b/packages/Webkul/Product/src/Helpers/Review.php @@ -71,7 +71,7 @@ class Review extends AbstractProduct return $totalRating[$product->id]; } - return $totalRating[$product->id] = $product->reviews()->where('status','approved')->sum('rating'); + return $totalRating[$product->id] = $product->reviews()->where('status', 'approved')->sum('rating'); } /** @@ -85,7 +85,7 @@ class Review extends AbstractProduct $reviews = $product->reviews()->where('status', 'approved') ->select('rating', DB::raw('count(*) as total')) ->groupBy('rating') - ->orderBy('rating','desc') + ->orderBy('rating', 'desc') ->get(); $totalReviews = $this->getTotalReviews($product); diff --git a/packages/Webkul/Product/src/Helpers/SEO.php b/packages/Webkul/Product/src/Helpers/SEO.php new file mode 100644 index 000000000..8a7e44a3d --- /dev/null +++ b/packages/Webkul/Product/src/Helpers/SEO.php @@ -0,0 +1,185 @@ + 'https://schema.org/', + '@type' => 'Product', + 'name' => $product->name, + 'description' => $product->description, + 'url' => route('shop.productOrCategory.index', $product->url_key), + ]; + + if (core()->getConfigData('catalog.rich_snippets.products.show_sku')) { + $data['sku'] = $product->sku; + } + + if (core()->getConfigData('catalog.rich_snippets.products.show_weight')) { + $data['image'] = $product->weight; + } + + if (core()->getConfigData('catalog.rich_snippets.products.show_categories')) { + $data['categories'] = $this->getProductCategories($product); + } + + if (core()->getConfigData('catalog.rich_snippets.products.show_images')) { + $data['image'] = $this->getProductImages($product); + } + + if (core()->getConfigData('catalog.rich_snippets.products.show_reviews')) { + $data['review'] = $this->getProductReviews($product); + } + + if (core()->getConfigData('catalog.rich_snippets.products.show_ratings')) { + $data['aggregateRating'] = $this->getProductAggregateRating($product); + } + + if (core()->getConfigData('catalog.rich_snippets.products.show_offers')) { + $data['offers'] = $this->getProductOffers($product); + } + + return json_encode($data); + } + + /** + * Returns product categories + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return string + */ + public function getProductCategories($product) + { + if ($product instanceof \Webkul\Product\Models\ProductFlat) { + $categories = $product->product->categories; + } else { + $categories = $product->categories; + } + + $names = []; + + foreach ($categories as $key => $category) { + $names[] = $category->name; + } + + return implode(', ', $names); + } + + /** + * Returns product images + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getProductImages($product) + { + $images = []; + + foreach ($product->images as $image) { + if (! Storage::has($image->path)) { + continue; + } + + $images[] = $image->url; + } + + return $images; + } + + /** + * Returns product reviews + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getProductReviews($product) + { + $reviews = []; + + foreach ($product->reviews()->where('status', 'approved')->get() as $review) { + $reviews[] = [ + '@type' => 'Review', + 'reviewRating' => [ + '@type' => 'Rating', + 'ratingValue' => $review->rating, + 'bestRating' => '5', + ], + 'author' => [ + '@type' => 'Person', + 'name' => $review->name, + ], + ]; + } + + return $reviews; + } + + /** + * Returns product average ratings + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getProductAggregateRating($product) + { + $reviewHelper = app('Webkul\Product\Helpers\Review'); + + return [ + '@type' => 'AggregateRating', + 'ratingValue' => $reviewHelper->getAverageRating($product), + 'reviewCount' => $reviewHelper->getTotalReviews($product), + ]; + } + + /** + * Returns product average ratings + * + * @param \Webkul\Product\Contracts\Product|\Webkul\Product\Contracts\ProductFlat $product + * @return array + */ + public function getProductOffers($product) + { + return [ + '@type' => 'Offer', + 'priceCurrency' => core()->getCurrentCurrencyCode(), + 'price' => $product->getTypeInstance()->getMinimalPrice(), + 'availability' => 'https://schema.org/InStock', + ]; + } + + /** + * Returns product json ld data for category + * + * @param \Webkul\Category\Contracts\Category $category + * @return array + */ + public function getCategoryJsonLd($category) + { + $data = [ + '@type' => 'WebSite', + '@context' => 'http://schema.org', + 'url' => config('app.url'), + ]; + + if (core()->getConfigData('catalog.rich_snippets.categories.show_search_input_field')) { + $data['potentialAction'] = [ + '@type' => 'SearchAction', + 'target' => config('app.url') . '/search/?term={search_term_string}', + 'query-input' => 'required name=search_term_string', + ]; + } + + return json_encode($data); + } +} \ No newline at end of file diff --git a/packages/Webkul/Product/src/Helpers/Toolbar.php b/packages/Webkul/Product/src/Helpers/Toolbar.php index 7784b9fc8..42b52dc56 100755 --- a/packages/Webkul/Product/src/Helpers/Toolbar.php +++ b/packages/Webkul/Product/src/Helpers/Toolbar.php @@ -83,8 +83,9 @@ class Toolbar extends AbstractProduct public function isOrderCurrent($key) { $params = request()->input(); + $orderDirection = $params['order'] ?? 'asc'; - if (isset($params['sort']) && $key == $params['sort'] . '-' . $params['order']) { + if (isset($params['sort']) && $key == $params['sort'] . '-' . $orderDirection) { return true; } elseif (! isset($params['sort'])) { $sortBy = core()->getConfigData('catalog.products.storefront.sort_by') diff --git a/packages/Webkul/Product/src/Repositories/ProductRepository.php b/packages/Webkul/Product/src/Repositories/ProductRepository.php index 75c19a6e7..8838fd94d 100755 --- a/packages/Webkul/Product/src/Repositories/ProductRepository.php +++ b/packages/Webkul/Product/src/Repositories/ProductRepository.php @@ -140,18 +140,20 @@ class ProductRepository extends Repository if (isset($params['search'])) $qb->where('product_flat.name', 'like', '%' . urldecode($params['search']) . '%'); + # sort direction + $orderDirection = 'asc'; + if( isset($params['order']) && in_array($params['order'], ['desc', 'asc']) ){ + $orderDirection = $params['order']; + } + if (isset($params['sort'])) { $attribute = $this->attributeRepository->findOneByField('code', $params['sort']); if ($attribute) { - if ($params['sort'] == 'price') { - if ($attribute->code == 'price') { - $qb->orderBy('min_price', $params['order']); - } else { - $qb->orderBy($attribute->code, $params['order']); - } + if ($attribute->code == 'price') { + $qb->orderBy('min_price', $orderDirection); } else { - $qb->orderBy($params['sort'] == 'created_at' ? 'product_flat.created_at' : $attribute->code, $params['order']); + $qb->orderBy($params['sort'] == 'created_at' ? 'product_flat.created_at' : $attribute->code, $orderDirection); } } } diff --git a/packages/Webkul/Product/src/Type/Bundle.php b/packages/Webkul/Product/src/Type/Bundle.php index c61db3e80..6f797494d 100644 --- a/packages/Webkul/Product/src/Type/Bundle.php +++ b/packages/Webkul/Product/src/Type/Bundle.php @@ -542,29 +542,32 @@ class Bundle extends AbstractType { $bundleOptionQuantities = $data['bundle_option_qty'] ?? []; - foreach ($data['bundle_options'] as $optionId => $optionProductIds) { - $option = $this->productBundleOptionRepository->find($optionId); + $productBundleOptions = $this->productBundleOptionRepository + ->whereIn('id', array_keys($data['bundle_options'])) + ->orderBy('sort_order') + ->get(); + foreach ($productBundleOptions as $option) { $labels = []; - foreach ($optionProductIds as $optionProductId) { + foreach ($data['bundle_options'][$option->id] as $optionProductId) { if (! $optionProductId) { continue; } $optionProduct = $this->productBundleOptionProductRepository->find($optionProductId); - $qty = $data['bundle_option_qty'][$optionId] ?? $optionProduct->qty; + $qty = $data['bundle_option_qty'][$option->id] ?? $optionProduct->qty; - if (! isset($data['bundle_option_qty'][$optionId])) { - $bundleOptionQuantities[$optionId] = $qty; + if (! isset($data['bundle_option_qty'][$option->id])) { + $bundleOptionQuantities[$option->id] = $qty; } $labels[] = $qty . ' x ' . $optionProduct->product->name . ' ' . core()->currency($optionProduct->product->getTypeInstance()->getMinimalPrice()); } if (count($labels)) { - $data['attributes'][$option->id] = [ + $data['attributes'][] = [ 'attribute_name' => $option->label, 'option_id' => $option->id, 'option_label' => implode(', ', $labels), diff --git a/packages/Webkul/Shop/src/Resources/assets/js/app.js b/packages/Webkul/Shop/src/Resources/assets/js/app.js index 620825aca..05febfaf6 100755 --- a/packages/Webkul/Shop/src/Resources/assets/js/app.js +++ b/packages/Webkul/Shop/src/Resources/assets/js/app.js @@ -1,6 +1,6 @@ import $ from 'jquery'; import Vue from 'vue'; -import VeeValidate from 'vee-validate'; +import VeeValidate, { Validator } from 'vee-validate'; import de from 'vee-validate/dist/locale/de'; import ar from 'vee-validate/dist/locale/ar'; import axios from 'axios'; diff --git a/packages/Webkul/Shop/src/Resources/lang/ar/app.php b/packages/Webkul/Shop/src/Resources/lang/ar/app.php index 0a5f45754..0370e1aac 100644 --- a/packages/Webkul/Shop/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/ar/app.php @@ -370,6 +370,7 @@ return [ 'layered-nav-title' => 'المنتجات', 'price-label' => 'أقل من', 'remove-filter-link-title' => 'امسح الكل', + 'filter-to' => 'to', 'sort-by' => 'افرز حسب', 'from-a-z' => 'من a-z', 'from-z-a' => 'من ز-أ', diff --git a/packages/Webkul/Shop/src/Resources/lang/de/app.php b/packages/Webkul/Shop/src/Resources/lang/de/app.php new file mode 100755 index 000000000..17e9e6456 --- /dev/null +++ b/packages/Webkul/Shop/src/Resources/lang/de/app.php @@ -0,0 +1,675 @@ + 'Die angegebene Umsatzsteuer-ID hat ein falsches Format', + 'security-warning' => 'Verdächtige Aktivität gefunden!!!', + 'nothing-to-delete' => 'Nichts zu löschen', + + 'layouts' => [ + 'my-account' => 'Mein Konto', + 'profile' => 'Profil', + 'address' => 'Adresse', + 'reviews' => 'Bewertungen', + 'wishlist' => 'Wunschliste', + 'orders' => 'Bestellungen', + 'downloadable-products' => 'Herunterladbare Produkte' + ], + + 'common' => [ + 'error' => 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut.', + 'no-result-found' => 'Wir konnten keine Aufzeichnungen finden.' + ], + + 'home' => [ + 'page-title' => config('app.name') . ' - Start', + 'featured-products' => 'Ausgewählte Produkte', + 'new-products' => 'Neue Produkte', + 'verify-email' => 'Bestätigen Sie Ihr E-Mail-Konto', + 'resend-verify-email' => 'Bestätigungsmail erneut senden' + ], + + 'header' => [ + 'title' => 'Konto', + 'dropdown-text' => 'Warenkorb, Bestellungen und Wunschliste verwalten', + 'sign-in' => 'Anmelden', + 'sign-up' => 'Registrieren', + 'account' => 'Konto', + 'cart' => 'Warenkorb', + 'profile' => 'Profil', + 'wishlist' => 'Wunschliste', + 'cart' => 'Warenkorb', + 'logout' => 'Ausloggen', + 'search-text' => 'Nach Produkten suchen' + ], + + 'minicart' => [ + 'view-cart' => 'Warenkorb ansehen', + 'checkout' => 'Bestellen', + 'cart' => 'Warenkorb', + 'zero' => '0' + ], + + 'footer' => [ + 'subscribe-newsletter' => 'Newsletter abonnieren', + 'subscribe' => 'Abonnieren', + 'locale' => 'Sprache', + 'currency' => 'Währung', + ], + + 'subscription' => [ + 'unsubscribe' => 'Abmelden', + 'subscribe' => 'Abonnieren', + 'subscribed' => 'Sie haben jetzt Abonnement-E-Mails abonniert.', + 'not-subscribed' => 'Sie können keine Abonnement-E-Mails abonnieren. Versuchen Sie es später erneut.', + 'already' => 'Sie haben unsere Abonnementliste bereits abonniert.', + 'unsubscribed' => 'Sie werden von Abonnement-Mails abgemeldet.', + 'already-unsub' => 'Sie sind bereits abgemeldet.', + 'not-subscribed' => 'Error! E-Mails können derzeit nicht gesendet werden. Bitte versuchen Sie es später erneut.' + ], + + 'search' => [ + 'no-results' => 'Keine Ergebnisse gefunden', + 'page-title' => config('app.name') . ' - Suchen', + 'found-results' => 'Suchergebnisse gefunden', + 'found-result' => 'Suchergebnis gefunden' + ], + + 'reviews' => [ + 'title' => 'Titel', + 'add-review-page-title' => 'Bewertung hinzufügen', + 'write-review' => 'Bewertung schreiben', + 'review-title' => 'Geben Sie Ihrer Bewertung einen Titel', + 'product-review-page-title' => 'Produktbewertung', + 'rating-reviews' => 'Sterne & Bewertungen', + 'submit' => 'EINREICHEN', + 'delete-all' => 'Alle Bewertungen wurden erfolgreich gelöscht', + 'ratingreviews' => ':rating Sterne & :review Bewertungen', + 'star' => 'Sterne', + 'percentage' => ':percentage %', + 'id-star' => 'Sterne', + 'name' => 'Name', + ], + + 'customer' => [ + 'signup-text' => [ + 'account_exists' => 'Sie haben bereits ein Konto', + 'title' => 'Anmelden' + ], + + 'signup-form' => [ + 'page-title' => 'Neues Kundenkonto erstellen', + 'title' => 'Anmelden', + 'firstname' => 'Vorname', + 'lastname' => 'Nachname', + 'email' => 'E-Mail', + 'password' => 'Passwort', + 'confirm_pass' => 'Passwort bestätigen', + 'button_title' => 'Registrieren', + 'agree' => 'Zustimmen', + 'terms' => 'Regeln', + 'conditions' => 'Bedigungen', + 'using' => 'durch die Nutzung dieser Website', + 'agreement' => 'Zustimmung', + 'success' => 'Konto erfolgreich erstellt.', + 'success-verify' => 'Konto erfolgreich erstellt, eine E-Mail zur Bestätigung wurde versendet.', + 'success-verify-email-unsent' => 'Das Konto wurde erfolgreich erstellt, aber die Bestätigungs-E-Mail wurde nicht ordnungsgemäß gesendet. Zur Bestätigung wurde eine E-Mail gesendet.', + 'failed' => 'Error! Sie können Ihr Konto nicht erstellen. Bitte versuchen Sie es später erneut.', + 'already-verified' => 'Ihr Konto ist bereits verifiziert. Oder versuchen Sie erneut, eine neue Bestätigungs-E-Mail zu senden.', + 'verification-not-sent' => 'Error! Problem beim Senden einer Bestätigungs-E-Mail, versuchen Sie es später erneut.', + 'verification-sent' => 'Bestätigungs-E-Mail gesendet', + 'verified' => 'Ihr Konto wurde verifiziert. Versuchen Sie jetzt, sich anzumelden.', + 'verify-failed' => 'Wir können Ihr E-Mail-Konto nicht bestätigen.', + 'dont-have-account' => 'Sie haben kein Konto bei uns.', + 'customer-registration' => 'Kunde erfolgreich registriert' + ], + + 'login-text' => [ + 'no_account' => 'Sie haben noch keinen Account', + 'title' => 'Registrieren', + ], + + 'login-form' => [ + 'page-title' => 'Kundenlogin', + 'title' => 'Anmelden', + 'email' => 'E-Mail', + 'password' => 'Passwort', + 'forgot_pass' => 'Passwort vergessen?', + 'button_title' => 'Anmelden', + 'remember' => 'Angemeldet bleiben', + 'footer' => '© Copyright :year Webkul Software, All rights reserved', + 'invalid-creds' => 'Bitte überprüfen Sie Ihre Anmeldeinformationen und versuchen Sie es erneut.', + 'verify-first' => 'Bestätigung Sie zuerst Ihr E-Mail-Konto.', + 'not-activated' => 'Ihre Aktivierung erfordert die Genehmigung des Administrators', + 'resend-verification' => 'Senden Sie die Bestätigungsmail erneut' + ], + + 'forgot-password' => [ + 'title' => 'Passwort wiederherstellen', + 'email' => 'E-Mail', + 'submit' => 'E-Mail zum Zurücksetzen des Passworts senden', + 'page_title' => 'Haben Sie Ihr Passwort vergessen ?' + ], + + 'reset-password' => [ + 'title' => 'Passwort zurücksetzen', + 'email' => 'Registrierte E-Mail', + 'password' => 'Passwort', + 'confirm-password' => 'Passwort bestätigen', + 'back-link-title' => 'Zurück zur Anmeldung', + 'submit-btn-title' => 'Passwort zurücksetzen' + ], + + 'account' => [ + 'dashboard' => 'Profil bearbeiten', + 'menu' => 'Menu', + + 'profile' => [ + 'index' => [ + 'page-title' => 'Profil', + 'title' => 'Profil', + 'edit' => 'Bearbeiten', + ], + + 'edit-success' => 'Profil erfolgreich aktualisiert.', + 'edit-fail' => 'Error! Das Profil kann nicht aktualisiert werden. Bitte versuchen Sie es später erneut.', + 'unmatch' => 'Das alte Passwort stimmt nicht überein.', + + 'fname' => 'Vorname', + 'lname' => 'Nachname', + 'gender' => 'Geschlecht', + 'other' => 'Andere', + 'male' => 'Männlich', + 'female' => 'weiblich', + 'dob' => 'Geburtsdatum', + 'phone' => 'Telefon', + 'email' => 'E-Mail', + 'opassword' => 'Altes Passwort', + 'password' => 'Passwort', + 'cpassword' => 'Passwort bestätigen', + 'submit' => 'Profil aktualisieren', + + 'edit-profile' => [ + 'title' => 'Profil bearbeiten', + 'page-title' => 'Profilformular bearbeiten' + ] + ], + + 'address' => [ + 'index' => [ + 'page-title' => 'Adresse', + 'title' => 'Adresse', + 'add' => 'Adresse hinzufügen', + 'edit' => 'Bearbeiten', + 'empty' => 'Sie haben hier keine gespeicherten Adressen. Bitte versuchen Sie, diese zu erstellen, indem Sie auf den unten stehenden Link klicken', + 'create' => 'Adresse erstellen', + 'delete' => 'Löschen', + 'make-default' => 'Standard hinzufügen', + 'default' => 'Standard', + 'contact' => 'Kontakt', + 'confirm-delete' => 'Möchten Sie diese Adresse wirklich löschen?', + 'default-delete' => 'Die Standardadresse kann nicht geändert werden.', + 'enter-password' => 'Geben Sie Ihr Passwort ein.', + ], + + 'create' => [ + 'page-title' => 'Adressformular hinzufügen', + 'company_name' => 'Name der Firma', + 'first_name' => 'Vorname', + 'last_name' => 'Nachname', + 'vat_id' => 'Umsatzsteuer-ID', + 'vat_help_note' => '[Hinweis: Verwenden Sie den Ländercode mit der Umsatzsteuer-Identifikationsnummer. Z.B. INV01234567891]', + 'title' => 'Adresse hinzufügen', + 'street-address' => 'Straße', + 'country' => 'Land', + 'state' => 'Bundesland', + 'select-state' => 'Wählen Sie eine Region, ein Bundesland oder eine Provinz aus', + 'city' => 'Stadt', + 'postcode' => 'Postleitzahl', + 'phone' => 'Telefon', + 'submit' => 'Adresse speichern', + 'success' => 'Adresse wurde erfolgreich hinzugefügt.', + 'error' => 'Adresse kann nicht hinzugefügt werden.' + ], + + 'edit' => [ + 'page-title' => 'Adresse bearbeiten', + 'company_name' => 'Name der Firma', + 'first_name' => 'Vorname', + 'last_name' => 'Nachname', + 'vat_id' => 'Umsatzsteuer-ID', + 'title' => 'Adresse bearbeiten', + 'street-address' => 'Straße', + 'submit' => 'Adresse speichern', + 'success' => 'Adresse erfolgreich aktualisiert.', + ], + 'delete' => [ + 'success' => 'Adresse erfolgreich gelöscht', + 'failure' => 'Adresse kann nicht gelöscht werden', + 'wrong-password' => 'Falsches Passwort !' + ] + ], + + 'order' => [ + 'index' => [ + 'page-title' => 'Bestellungen', + 'title' => 'Bestellungen', + 'order_id' => 'Auftragsnummer', + 'date' => 'Datum', + 'status' => 'Status', + 'total' => 'Gesamt', + 'order_number' => 'Bestellnummer', + 'processing' => 'Wird bearbeitet', + 'completed' => 'Abgeschlossen', + 'canceled' => 'Abgebrochen', + 'closed' => 'Geschlossen', + 'pending' => 'Ausstehend', + 'pending-payment' => 'Ausstehende Zahlung', + 'fraud' => 'Betrug' + ], + + 'view' => [ + 'page-tile' => 'Bestellung #:order_id', + 'info' => 'Informationen', + 'placed-on' => 'Vom', + 'products-ordered' => 'Bestellte Produkte', + 'invoices' => 'Rechnungen', + 'shipments' => 'Sendungen', + 'SKU' => 'SKU', + 'product-name' => 'Name', + 'qty' => 'Menge', + 'item-status' => 'Artikelstatus', + 'item-ordered' => 'Bestellt (:qty_ordered)', + 'item-invoice' => 'In Rechnung gestellt (:qty_invoiced)', + 'item-shipped' => 'Versendet (:qty_shipped)', + 'item-canceled' => 'Abgebrochen (:qty_canceled)', + 'item-refunded' => 'Rückerstattet (:qty_refunded)', + 'price' => 'Preis', + 'total' => 'Gesamt', + 'subtotal' => 'Zwischensumme', + 'shipping-handling' => 'Versand & Bearbeitung', + 'tax' => 'Umsatzsteuer', + 'discount' => 'Rabatt', + 'tax-percent' => 'Umsatzsteuerprozent', + 'tax-amount' => 'Umsatzsteuerbetrag', + 'discount-amount' => 'Rabattbetrag', + 'grand-total' => 'Gesamtsumme', + 'total-paid' => 'Insgesamt bezahlt', + 'total-refunded' => 'Insgesamt erstattet', + 'total-due' => 'Insgesamt fällig', + 'shipping-address' => 'Lieferanschrift', + 'billing-address' => 'Rechnungsadresse', + 'shipping-method' => 'Versandart', + 'payment-method' => 'Zahlungsmethode', + 'individual-invoice' => 'Rechnung #:invoice_id', + 'individual-shipment' => 'Sendung #:shipment_id', + 'print' => 'Drucken', + 'invoice-id' => 'Rechnungsnummer', + 'order-id' => 'Auftragsnummer', + 'order-date' => 'Bestelldatum', + 'bill-to' => 'Rechnung an', + 'ship-to' => 'Versenden an', + 'contact' => 'Kontakt', + 'refunds' => 'Rückerstattungen', + 'individual-refund' => 'Rückerstattung #:refund_id', + 'adjustment-refund' => 'Anpassungsrückerstattung', + 'adjustment-fee' => 'Anpassungsgebühr', + ] + ], + + 'wishlist' => [ + 'page-title' => 'Wunschliste', + 'title' => 'Wunschliste', + 'deleteall' => 'Alles löschen', + 'moveall' => 'Alle Produkte zum Warenkorb hinzufügen', + 'move-to-cart' => 'In den Warenkorb legen', + 'error' => 'Das Produkt kann aufgrund unbekannter Probleme nicht zur Wunschliste hinzugefügt werden. Bitte versuchen Sie es später erneut', + 'add' => 'Artikel erfolgreich zur Wunschliste hinzugefügt', + 'remove' => 'Artikel erfolgreich von der Wunschliste entfernt', + 'moved' => 'Artikel erfolgreich in den Warenkorb verschoben', + 'option-missing' => 'Produktoptionen fehlen, sodass Artikel nicht auf die Wunschliste verschoben werden können.', + 'move-error' => 'Artikel kann nicht auf die Wunschliste verschoben werden. Bitte versuchen Sie es später erneut', + 'success' => 'Artikel erfolgreich zur Wunschliste hinzugefügt', + 'failure' => 'Artikel kann nicht zur Wunschliste hinzugefügt werden. Bitte versuchen Sie es später erneut', + 'already' => 'Artikel bereits in Ihrer Wunschliste vorhanden', + 'removed' => 'Artikel erfolgreich von der Wunschliste entfernt', + 'remove-fail' => 'Artikel kann nicht von der Wunschliste entfernt werden. Bitte versuchen Sie es später erneut', + 'empty' => 'Sie haben keine Artikel auf Ihrer Wunschliste', + 'remove-all-success' => 'Alle Artikel von Ihrer Wunschliste wurden entfernt', + ], + + 'downloadable_products' => [ + 'title' => 'Herunterladbare Produkte', + 'order-id' => 'Auftragsnummer', + 'date' => 'Datum', + 'name' => 'Titel', + 'status' => 'Status', + 'pending' => 'Ausstehend', + 'available' => 'Verfügbar', + 'expired' => 'Abgelaufen', + 'remaining-downloads' => 'Verbleibende Downloads', + 'unlimited' => 'Unbegrenzt', + 'download-error' => 'Der Download-Link ist abgelaufen.' + ], + + 'review' => [ + 'index' => [ + 'title' => 'Bewertungen', + 'page-title' => 'Bewertungen' + ], + + 'view' => [ + 'page-tile' => 'Bewertung #:id', + ] + ] + ] + ], + + 'products' => [ + 'layered-nav-title' => 'Einkaufen bei', + 'price-label' => 'Angebotspreis von', + 'remove-filter-link-title' => 'Alles löschen', + 'filter-to' => 'bis', + 'sort-by' => 'Sortieren', + 'from-a-z' => 'Von A-Z', + 'from-z-a' => 'Von Z-A', + 'newest-first' => 'Neuste zuerst', + 'oldest-first' => 'Älteste zuerst', + 'cheapest-first' => 'Günstigste zuerst', + 'expensive-first' => 'Teuerste zuerst', + 'show' => 'Anzeigen', + 'pager-info' => 'Zeige :showing von :total Artikeln', + 'description' => 'Beschreibung', + 'specification' => 'Spezifikation', + 'total-reviews' => ':total Bewertungen', + 'total-rating' => ':total_rating Sterne & :total_reviews Bewertungen', + 'by' => 'Durch :name', + 'up-sell-title' => 'Wir haben andere Produkte gefunden, die Ihnen gefallen könnten!', + 'related-product-title' => 'Verwandte Produkte', + 'cross-sell-title' => 'Mehr Auswahl', + 'reviews-title' => 'Sterne & Bewertungen', + 'write-review-btn' => 'Eine Bewertung schreiben', + 'choose-option' => 'Wähle eine Option', + 'sale' => 'Verkauf', + 'new' => 'Neu', + 'empty' => 'Keine Produkte in dieser Kategorie verfügbar', + 'add-to-cart' => 'In Warenkorb', + 'buy-now' => 'Jetzt kaufen', + 'whoops' => 'Hoppla!', + 'quantity' => 'Menge', + 'in-stock' => 'Auf Lager', + 'out-of-stock' => 'Nicht vorrättig', + 'view-all' => 'Alle ansehen', + 'select-above-options' => 'Bitte wählen Sie zuerst die oben genannten Optionen aus.', + 'less-quantity' => 'Die Menge kann nicht kleiner als eins sein.', + 'samples' => 'Beispiele', + 'links' => 'Links', + 'sample' => 'Beispiel', + 'name' => 'Name', + 'qty' => 'Menge', + 'starting-at' => 'Beginnt um', + 'customize-options' => 'Optionen anpassen', + 'choose-selection' => 'Wählen Sie eine Auswahl', + 'your-customization' => 'Ihre Anpassung', + 'total-amount' => 'Gesamtmenge', + 'none' => 'Keine', + 'available' => 'Verfügbar' + ], + + // 'reviews' => [ + // 'empty' => 'Sie haben noch kein Produkt bewertet' + // ] + + 'buynow' => [ + 'no-options' => 'Bitte wählen Sie Optionen aus, bevor Sie dieses Produkt kaufen.' + ], + + 'checkout' => [ + 'cart' => [ + 'integrity' => [ + 'missing_fields' => 'Einige erforderliche Felder für dieses Produkt fehlen.', + 'missing_options' => 'Für dieses Produkt fehlen Optionen.', + 'missing_links' => 'Für dieses Produkt fehlen herunterladbare Links.', + 'qty_missing' => 'Mindestens ein Produkt sollte mehr als 1 Menge enthalten.', + 'qty_impossible' => 'Es kann nicht mehr als eines dieser Produkte zum Warenkorb hinzugefügt werden.' + ], + 'create-error' => 'Beim Erstellen des Warenkorbs ist ein Problem aufgetreten.', + 'title' => 'Warenkorb', + 'empty' => 'Ihr Einkaufswagen ist leer', + 'update-cart' => 'Warenkorb aktualisieren', + 'continue-shopping' => 'Mit dem Einkaufen fortfahren', + 'proceed-to-checkout' => 'Zur Kasse', + 'remove' => 'Entfernen', + 'remove-link' => 'Entfernen', + 'move-to-wishlist' => 'Zur Wunschliste verschieben', + 'move-to-wishlist-success' => 'Artikel wurde erfolgreich auf die Wunschliste verschoben.', + 'move-to-wishlist-error' => 'Das Objekt kann nicht auf die Wunschliste verschoben werden. Bitte versuchen Sie es später erneut.', + 'add-config-warning' => 'Bitte wählen Sie die Option, bevor Sie sie zum Warenkorb hinzufügen.', + 'quantity' => [ + 'quantity' => 'Menge', + 'success' => 'Warenkorbartikel erfolgreich aktualisiert.', + 'illegal' => 'Die Menge kann nicht kleiner als eins sein.', + 'inventory_warning' => 'Die angeforderte Menge ist nicht verfügbar. Bitte versuchen Sie es später erneut.', + 'error' => 'Die Elemente können derzeit nicht aktualisiert werden. Bitte versuchen Sie es später erneut.' + ], + + 'item' => [ + 'error_remove' => 'Keine Artikel aus dem Warenkorb zu entfernen', + 'success' => 'Artikel wurde erfolgreich zum Warenkorb hinzugefügt', + 'success-remove' => 'Artikel wurde erfolgreich aus dem Warenkorb entfernt', + 'error-add' => 'Artikel kann nicht zum Warenkorb hinzugefügt werden. Bitte versuchen Sie es später erneut', + ], + 'quantity-error' => 'Die angeforderte Menge ist nicht verfügbar', + 'cart-subtotal' => 'Warenkorb Zwischensumme', + 'cart-remove-action' => 'Wollen Sie dies wirklich tun?', + 'partial-cart-update' => 'Nur einige der Produkte wurden aktualisiert', + 'link-missing' => '' + ], + + 'onepage' => [ + 'title' => 'Bestellen', + 'information' => 'Informationen', + 'shipping' => 'Versand', + 'payment' => 'Zahlung', + 'complete' => 'Komplett', + 'billing-address' => 'Rechnungsadresse', + 'sign-in' => 'Anmelden', + 'company-name' => 'Name der Firma', + 'first-name' => 'Vorname', + 'last-name' => 'Nachname', + 'email' => 'E-Mail', + 'address1' => 'Straße', + 'city' => 'Stadt', + 'state' => 'Bundesland', + 'select-state' => 'Wählen Sie eine Region, ein Bundesland oder eine Provinz aus', + 'postcode' => 'Postleitzahl', + 'phone' => 'Telefon', + 'country' => 'Land', + 'order-summary' => 'Bestellübersicht', + 'shipping-address' => 'Lieferanschrift', + 'use_for_shipping' => 'An diese Adresse liefern', + 'continue' => 'Weiter', + 'shipping-method' => 'Versandart wählen', + 'payment-methods' => 'Zahlungsmethode wählen', + 'payment-method' => 'Zahlungsmethode', + 'summary' => 'Bestellübersichty', + 'price' => 'Preis', + 'quantity' => 'Menge', + 'billing-address' => 'Rechnungsadresse', + 'shipping-address' => 'Lieferanschrift', + 'contact' => 'Kontakt', + 'place-order' => 'Bestellung aufgeben', + 'new-address' => 'Neue Adresse hinzufügen', + 'save_as_address' => 'Diese Adresse speichern', + 'apply-coupon' => 'Gutschein einlösen', + 'amt-payable' => 'Bezahlbarer Betrag', + 'got' => 'Erhalten', + 'free' => 'Frei', + 'coupon-used' => 'Gutschein verwendet', + 'applied' => 'Angewandt', + 'back' => 'Zurück', + 'cash-desc' => 'Barzahlung bei Lieferung', + 'money-desc' => 'Geldüberweisung', + 'paypal-desc' => 'Paypal Standard', + 'free-desc' => 'Dies ist ein kostenloser Versand', + 'flat-desc' => 'Dies ist eine Flatrate', + 'password' => 'Passwort', + 'login-exist-message' => 'Sie haben bereits ein Konto bei uns, melden Sie sich an oder fahren Sie als Gast fort.', + 'enter-coupon-code' => 'Gutscheincode eingeben' + ], + + 'total' => [ + 'order-summary' => 'Bestellübersicht', + 'sub-total' => 'Artikel', + 'grand-total' => 'Gesamtsumme', + 'delivery-charges' => 'Versandkosten', + 'tax' => 'Umsatzsteuer', + 'discount' => 'Rabatt', + 'price' => 'Preis', + 'disc-amount' => 'Rabattbetrag', + 'new-grand-total' => 'Neue Gesamtsumme', + 'coupon' => 'Gutschein', + 'coupon-applied' => 'Angewandter Gutschein', + 'remove-coupon' => 'Gutschein entfernen', + 'cannot-apply-coupon' => 'Gutschein kann nicht angewendet werden', + 'invalid-coupon' => 'Gutscheincode ist ungültig.', + 'success-coupon' => 'Gutscheincode erfolgreich angewendet.', + 'coupon-apply-issue' => 'Gutscheincode kann nicht angewendet werden.' + ], + + 'success' => [ + 'title' => 'Bestellung erfolgreich aufgegeben', + 'thanks' => 'Vielen Dank für Ihren Auftrag!', + 'order-id-info' => 'Ihre Bestellnummer lautet #:order_id', + 'info' => 'Wir senden Ihnen Ihre Bestelldaten und Tracking-Informationen per E-Mail' + ] + ], + + 'mail' => [ + 'order' => [ + 'subject' => 'Bestätigung der neuen Bestellung', + 'heading' => 'Bestellbestätigung!', + 'dear' => 'Sehr geehrte/r :customer_name', + 'dear-admin' => 'Sehr geehrte/r :admin_name', + 'greeting' => 'Danke für Ihre Bestellung :order_id vom :created_at', + 'greeting-admin' => 'Auftragsnummer :order_id vom :created_at', + 'summary' => 'Zusammenfassung der Bestellung', + 'shipping-address' => 'Lieferanschrift', + 'billing-address' => 'Rechnungsadresse', + 'contact' => 'Kontakt', + 'shipping' => 'Versandart', + 'payment' => 'Zahlungsmethode', + 'price' => 'Preis', + 'quantity' => 'Menge', + 'subtotal' => 'Zwischensumme', + 'shipping-handling' => 'Versand & Bearbeitung', + 'tax' => 'Umsatzsteuer', + 'discount' => 'Rabatt', + 'grand-total' => 'Gesamtsumme', + 'final-summary' => 'Vielen Dank für Ihr Interesse an unserem Shop. Nach dem Versand senden wir Ihnen die Sendungsverfolgungsnummer', + 'help' => 'Wenn Sie Hilfe benötigen, kontaktieren Sie uns bitte unter :support_email', + 'thanks' => 'Vielen Dank!', + 'cancel' => [ + 'subject' => 'Bestätigung der Bestellungsstornierung', + 'heading' => 'Bestellung storniert', + 'dear' => 'Sehr geehrte/r :customer_name', + 'greeting' => 'Ihre Bestellung mit der Bestellnummer #:order_id vom :created_at wurde storniert', + 'summary' => 'Zusammenfassung der Bestellung', + 'shipping-address' => 'Lieferanschrift', + 'billing-address' => 'Rechnungsadresse', + 'contact' => 'Kontakt', + 'shipping' => 'Versandart', + 'payment' => 'Zahlungsmethode', + 'subtotal' => 'Zwischensumme', + 'shipping-handling' => 'Versand & Bearbeitung', + 'tax' => 'Umsatzsteuer', + 'discount' => 'Rabatt', + 'grand-total' => 'Gesamtsumme', + 'final-summary' => 'Vielen Dank für Ihr Interesse an unserem Shop', + 'help' => 'Wenn Sie Hilfe benötigen, kontaktieren Sie uns bitte unter :support_email', + 'thanks' => 'Vielen Dank!', + ] + ], + + 'invoice' => [ + 'heading' => 'Ihre Rechnung #:invoice_id für die Bestellung #:order_id', + 'subject' => 'Rechnung für Ihre Bestellung #:order_id', + 'summary' => 'Zusammenfassung der Rechnung', + ], + + 'shipment' => [ + 'heading' => 'Sendung #:shipment_id wurde für die Bestellung #:order_id generiert', + 'inventory-heading' => 'Neue Sendung #:shipment_id wurde für die Bestellung #:order_id generiert', + 'subject' => 'Versand für Ihre Bestellung #:order_id', + 'inventory-subject' => 'Für die Bestellung #:order_id wurde eine neue Sendung generiert', + 'summary' => 'Zusammenfassung der Sendung', + 'carrier' => 'Zulieferer', + 'tracking-number' => 'Sendungsnummer', + 'greeting' => 'Eine Bestellung :order_id wurde aufgelegt am :created_at', + ], + + 'refund' => [ + 'heading' => 'Ihre Rückerstattung #:refund_id für die Bestellung #:order_id', + 'subject' => 'Rückerstattung für Ihre Bestellung #:order_id', + 'summary' => 'Zusammenfassung der Rückerstattung', + 'adjustment-refund' => 'Anpassungsrückerstattung', + 'adjustment-fee' => 'Anpassungsgebühr' + ], + + 'forget-password' => [ + 'subject' => 'Kundenpasswort zurücksetzen', + 'dear' => 'Sehr geehrte/r :name', + 'info' => 'Sie erhalten diese E-Mail, weil wir eine Anfrage zum Zurücksetzen des Passworts für Ihr Konto erhalten haben', + 'reset-password' => 'Passwort zurücksetzen', + 'final-summary' => 'Wenn Sie kein Zurücksetzen des Kennworts angefordert haben, sind keine weiteren Maßnahmen erforderlich', + 'thanks' => 'Vielen Dank!' + ], + + 'customer' => [ + 'new' => [ + 'dear' => 'Sehr geehrte/r :customer_name', + 'username-email' => 'Nutzername/E-Mail', + 'subject' => 'Neukundenregistrierung', + 'password' => 'Passwort', + 'summary' => 'Ihr Konto wurde erstellt. + Ihre Kontodaten weiter unten: ', + 'thanks' => 'Vielen Dank!', + ], + + 'registration' => [ + 'subject' => 'Neukundenregistrierung', + 'customer-registration' => 'Kunde erfolgreich registriert', + 'dear' => 'Sehr geehrte/r :customer_name', + 'greeting' => 'Willkommen und vielen Dank, dass Sie sich bei uns registriert haben!', + 'summary' => 'Ihr Konto wurde nun erfolgreich erstellt und Sie können sich mit Ihrer E-Mail-Adresse und Ihrem Passwort anmelden. Nach dem Anmelden können Sie auf andere Dienste zugreifen, einschließlich der Überprüfung früherer Bestellungen, Wunschliste und der Bearbeitung Ihrer Kontoinformationen.', + 'thanks' => 'Vielen Dank!', + ], + + 'verification' => [ + 'heading' => config('app.name') . ' - E-Mail-Verifizierung', + 'subject' => 'Bestätigungsmail', + 'verify' => 'Bestätigen Sie Ihr Konto', + 'summary' => 'Dies ist die E-Mail, um zu überprüfen, ob die von Ihnen eingegebene E-Mail-Adresse Ihre ist. + Klicken Sie unten auf die Schaltfläche "Konto bestätigen", um Ihr Konto zu bestätigen.' + ], + + 'subscription' => [ + 'subject' => 'Abonnement-E-Mail', + 'greeting' => ' Willkommen zu ' . config('app.name') . ' - E-Mail-Abonnement', + 'unsubscribe' => 'Abmelden', + 'summary' => 'Es ist eine Weile her, seit Sie ' . config('app.name') . ' gelesen haben und wir möchten Ihren Posteingang nicht überfluten. Wenn Sie nicht die neuesten + E-Mail-Marketing-Nachrichten erhalten möchten, klicken Sie auf die Schaltfläche unten.' + ] + ] + ], + + 'webkul' => [ + 'copy-right' => '© Copyright :year Webkul Software, All rights reserved', + ], + + 'response' => [ + 'create-success' => ':name erfolgreich erstellt.', + 'update-success' => ':name erfolgreich aktualisiert.', + 'delete-success' => ':name erfolgreich gelöscht.', + 'submit-success' => ':name erfolgreich eingereicht.' + ], +]; diff --git a/packages/Webkul/Shop/src/Resources/lang/en/app.php b/packages/Webkul/Shop/src/Resources/lang/en/app.php index 5f0703375..9d58783ec 100755 --- a/packages/Webkul/Shop/src/Resources/lang/en/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/en/app.php @@ -371,6 +371,7 @@ return [ 'layered-nav-title' => 'Shop By', 'price-label' => 'As low as', 'remove-filter-link-title' => 'Clear All', + 'filter-to' => 'to', 'sort-by' => 'Sort By', 'from-a-z' => 'From A-Z', 'from-z-a' => 'From Z-A', diff --git a/packages/Webkul/Shop/src/Resources/lang/es/app.php b/packages/Webkul/Shop/src/Resources/lang/es/app.php index 411e016c5..15eaf697e 100644 --- a/packages/Webkul/Shop/src/Resources/lang/es/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/es/app.php @@ -352,6 +352,7 @@ return [ 'layered-nav-title' => 'Comprado por', 'price-label' => 'Tan bajo como', 'remove-filter-link-title' => 'Limpiar todo', + 'filter-to' => 'a', 'sort-by' => 'Ordenar por', 'from-a-z' => 'De A-Z', 'from-z-a' => 'De Z-A', diff --git a/packages/Webkul/Shop/src/Resources/lang/fa/app.php b/packages/Webkul/Shop/src/Resources/lang/fa/app.php index d23ffe30e..58d2b4103 100644 --- a/packages/Webkul/Shop/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/fa/app.php @@ -370,6 +370,7 @@ return [ 'layered-nav-title' => 'خرید بوسیله ی', 'price-label' => 'به اندازه کم', 'remove-filter-link-title' => 'همه را پاک کن', + 'filter-to' => 'to', 'sort-by' => 'مرتب سازی بر اساس', 'from-a-z' => 'از A-Z', 'from-z-a' => 'از Z-A', diff --git a/packages/Webkul/Shop/src/Resources/lang/nl/app.php b/packages/Webkul/Shop/src/Resources/lang/nl/app.php index d696a0851..3e84b9069 100644 --- a/packages/Webkul/Shop/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/nl/app.php @@ -375,6 +375,7 @@ return [ 'layered-nav-title' => 'Winkelen per ', 'price-label' => 'Zo laag als', 'remove-filter-link-title' => 'Wis alles', + 'filter-to' => 'tot', 'sort-by' => 'Sorteer op', 'from-a-z' => 'Van A-Z', 'from-z-a' => 'Van Z-A', diff --git a/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php index be61d0502..5c04ccaaf 100755 --- a/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Shop/src/Resources/lang/pt_BR/app.php @@ -363,6 +363,7 @@ return [ 'layered-nav-title' => 'Compre por', 'price-label' => 'Tão baixo quanto', 'remove-filter-link-title' => 'Limpar Todos', + 'filter-to' => 'a', 'sort-by' => 'Ordernar por', 'from-a-z' => 'De A-Z', 'from-z-a' => 'De Z-A', diff --git a/packages/Webkul/Shop/src/Resources/views/products/index.blade.php b/packages/Webkul/Shop/src/Resources/views/products/index.blade.php index 7575e86a9..6a4df8163 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/index.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/index.blade.php @@ -6,7 +6,14 @@ @section('seo') meta_description : \Illuminate\Support\Str::limit(strip_tags($category->description), 120, '') }}"/> + + + @if (core()->getConfigData('catalog.rich_snippets.categories.enable')) + + @endif @stop @section('content-wrapper') diff --git a/packages/Webkul/Shop/src/Resources/views/products/view.blade.php b/packages/Webkul/Shop/src/Resources/views/products/view.blade.php index 0dfd7eda6..064bff10b 100755 --- a/packages/Webkul/Shop/src/Resources/views/products/view.blade.php +++ b/packages/Webkul/Shop/src/Resources/views/products/view.blade.php @@ -6,7 +6,36 @@ @section('seo') meta_description : \Illuminate\Support\Str::limit(strip_tags($product->description), 120, '') }}"/> + + + @if (core()->getConfigData('catalog.rich_snippets.products.enable')) + + @endif + + getProductBaseImage($product); ?> + + + + + + + + + + + + + + + + + + + + @stop @section('content-wrapper') diff --git a/packages/Webkul/Ui/src/Resources/lang/de/app.php b/packages/Webkul/Ui/src/Resources/lang/de/app.php new file mode 100755 index 000000000..b42420d92 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/lang/de/app.php @@ -0,0 +1,40 @@ + [ + 'actions' => 'Aktionen', + 'id' => 'Indexspalten haben nur einen Wert größer als Null', + + 'massaction' => [ + 'mass-delete-confirm' => 'Möchten Sie die ausgewählten :resource wirklich löschen?', + 'mass-update-status' => 'Möchten Sie den Status der ausgewählten :resource wirklich aktualisieren?', + 'delete' => 'Möchten Sie diese Aktion wirklich ausführen?', + 'edit' => 'Möchten Sie :resource wirklich bearbeiten?', + ], + + 'zero-index' => 'Indexspalten können nur Werte größer als Null haben', + 'no-records' => 'Keine Aufzeichnungen gefunden', + 'filter-fields-missing' => 'Einige der erforderlichen Felder sind null. Überprüfen Sie Spalte, Zustand und Wert ordnungsgemäß', + 'click_on_action' => 'Möchten Sie diese Aktion wirklich ausführen?', + 'search' => 'Suchen ...', + 'filter' => 'Filter', + 'column' => 'Wählen Sie eine Spalte', + 'condition' => 'Wählen Sie eine Bedingung', + 'contains' => 'Enthält', + 'ncontains' => 'Enthält nicht', + 'equals' => 'Ist gleich', + 'nequals' => 'Ist nicht gleich', + 'greater' => 'Größer als', + 'less' => 'Weniger als', + 'greatere' => 'Gleich oder größer als', + 'lesse' => 'Gleich oder weniger als', + 'value' => 'Wählen Sie einen Wert', + 'true' => 'Wahr / Aktiv', + 'false' => 'Falsch / Inaktiv', + 'between' => 'Ist zwischen', + 'apply' => 'Anwenden', + 'items-per-page' => 'Einträge pro Seite', + 'value-here' => 'Wert hier', + 'numeric-value-here' => 'Numerischer Wert hier', + 'submit' => 'Bestätigen' + ] +]; \ No newline at end of file diff --git a/packages/Webkul/Ui/src/Resources/lang/de/form.php b/packages/Webkul/Ui/src/Resources/lang/de/form.php new file mode 100644 index 000000000..a84013cc0 --- /dev/null +++ b/packages/Webkul/Ui/src/Resources/lang/de/form.php @@ -0,0 +1,6 @@ + 'Enter :attribute', + 'select-attribute' => 'Select :attribute' + ]; \ No newline at end of file diff --git a/packages/Webkul/Velocity/src/Resources/assets/js/app.js b/packages/Webkul/Velocity/src/Resources/assets/js/app.js index c7468b0c5..8047408f3 100755 --- a/packages/Webkul/Velocity/src/Resources/assets/js/app.js +++ b/packages/Webkul/Velocity/src/Resources/assets/js/app.js @@ -3,10 +3,14 @@ import accounting from 'accounting'; import VueCarousel from 'vue-carousel'; import VueToast from 'vue-toast-notification'; import 'vue-toast-notification/dist/index.css'; -import messagesAr from 'vee-validate/dist/locale/ar'; +import de from 'vee-validate/dist/locale/de'; +import ar from 'vee-validate/dist/locale/ar'; +import VeeValidate, { Validator } from 'vee-validate'; +import axios from 'axios'; -window.axios = require("axios"); -window.VeeValidate = require("vee-validate"); + +window.axios = axios; +window.VeeValidate = VeeValidate; window.jQuery = window.$ = require("jquery"); window.BootstrapSass = require("bootstrap-sass"); @@ -17,7 +21,8 @@ Vue.prototype.$http = axios; Vue.use(VeeValidate, { dictionary: { - ar: messagesAr + ar: ar, + de: de, } }); diff --git a/packages/Webkul/Velocity/src/Resources/lang/ar/app.php b/packages/Webkul/Velocity/src/Resources/lang/ar/app.php index 15094a173..5219a5efe 100644 --- a/packages/Webkul/Velocity/src/Resources/lang/ar/app.php +++ b/packages/Webkul/Velocity/src/Resources/lang/ar/app.php @@ -198,6 +198,8 @@ return [ 'removed' => 'تمت إزالة العنصر بنجاح من قائمة المقارنة', 'already_added' => 'تمت إضافة العنصر بالفعل لمقارنة القائمة', 'empty-text' => "ليس لديك أي عناصر في قائمة المقارنة الخاصة بك", + 'product_image' => 'Product Image', + 'actions' => 'Actions', ], 'login-form' => [ 'sign-up' => 'سجل', diff --git a/packages/Webkul/Velocity/src/Resources/lang/de/app.php b/packages/Webkul/Velocity/src/Resources/lang/de/app.php new file mode 100644 index 000000000..15b8cab59 --- /dev/null +++ b/packages/Webkul/Velocity/src/Resources/lang/de/app.php @@ -0,0 +1,295 @@ + [ + 'system' => [ + 'velocity' => [ + 'general' => 'Allgemein', + 'category' => 'Kategorie', + 'settings' => 'Einstellungen', + 'extension_name' => 'Velocity Theme', + 'error-module-inactive' => 'Warnung: Der Status des Velocity-Themes ist inaktiv', + ], + + 'settings' => [ + 'channels'=> [ + 'subscription_bar' => 'Inhalt der Abonnementleiste' + ], + ], + + 'general' => [ + 'status' => 'Status', + 'active' => 'Aktive', + 'inactive' => 'Inaktiv', + ], + 'category' => [ + 'all' => 'Alle', + 'left' => 'Links', + 'right' => 'Rechts', + 'active' => 'Aktiv', + 'custom' => 'Benutzerdefiniert', + 'inactive' => 'Inaktiv', + 'image-alignment' => 'Bildausrichtung', + 'icon-status' => 'Kategorie Symbol Status', + 'image-status' => 'Kategorie Bild Status', + 'sub-category-show' => 'Unterkategorie anzeigen', + 'image-height' => 'Bild Höhe [in Pixel]', + 'image-width' => 'Bild Breite [in Pixel]', + 'show-tooltip' => 'Tooltip der Kategorie anzeigen', + 'num-sub-category' => 'Anzahl der Unterkategorien', + ] + ], + 'layouts' => [ + 'velocity' => 'Velocity', + 'cms-pages' => 'CMS Seiten', + 'meta-data' => 'Metadaten', + 'category-menu' => 'Kategoriemenü', + 'header-content' => 'Header-Inhalt', + ], + 'contents' => [ + 'self' => 'Selbst', + 'active' => 'Aktiv', + 'new-tab' => 'Neuer Tab', + 'inactive' => 'Inaktiv', + 'title' => 'Inhaltsangabe', + 'select' => '-- Auswählen --', + 'add-title' => 'Inhalt hinzufügen', + 'btn-add-content' => 'Inhalt hinzufügen', + 'save-btn-title' => 'Inhalt speichern', + 'autocomplete' => '[automatisch vervollständigen]', + 'no-result-found' => 'Kein Eintrag gefunden.', + 'search-hint' => 'Produkt hier suchen...', + 'mass-delete-success' => 'Ausgewählter Inhalt erfolgreich gelöscht.', + 'tab' => [ + 'page' => 'Seiteneinstellung', + 'content' => 'Inhaltseinstellung', + 'meta_content' => 'Meta Daten', + ], + 'page' => [ + 'title' => 'Titel', + 'status' => 'Status', + 'position' => 'Position', + ], + 'content' => [ + 'content-type' => 'Inhaltstyp', + 'custom-title' => 'Benutzerdefinierter Titel', + 'category-slug' => 'Kategorie Slug', + 'link-target' => 'Seitenverknüpfungsziel', + 'custom-product' => 'Shop Produkte', + 'custom-heading' => 'Benutzerdefinierte Überschrift', + 'catalog-type' => 'Produktkatalogtyp', + 'static-description' => 'Inhaltsbeschreibung', + 'page-link' => 'Seiten Link [Bsp: http://example.com/../../]', + ], + 'datagrid' => [ + 'id' => 'Id', + 'title' => 'Titel', + 'status' => 'Status', + 'position' => 'Position', + 'content-type' => 'Inhaltstyp', + ] + ], + 'meta-data' => [ + 'footer' => 'Fusszeile', + 'title' => 'Velocity Metadaten', + 'activate-slider' => 'Slider aktivieren', + 'home-page-content' => 'Inhalt der Startseite', + 'footer-left-content' => 'Fußzeile Linker Inhalt', + 'subscription-content' => 'Abonnementleiste Inhalt', + 'sidebar-categories' => 'Seitenleisten-Kategorien', + 'footer-left-raw-content' => '

Wir lieben es, Software zu erstellen und die Probleme der realen Welt mit den Binärdateien zu lösen. Wir fühlen uns unseren Zielen sehr verpflichtet. Wir investieren unsere Ressourcen, um benutzerfreundliche Software und Anwendungen von Weltklasse für das Unternehmensgeschäft mit erstklassiger Technologie zu entwickeln.

', + 'slider-path' => 'Slider Pfad', + 'category-logo' => 'Kategorielogo', + 'product-policy' => 'Produktrichtlinie', + 'update-meta-data' => 'Metadaten aktualisieren', + 'product-view-image' => 'Produktansicht Bild', + 'advertisement-two' => 'Werbung Zwei Bilder', + 'advertisement-one' => 'Werbung Eins Bilder', + 'footer-middle-content' => 'Fußzeile Mittlerer Inhalt', + 'advertisement-four' => 'Werbung Vier Bilder', + 'advertisement-three' => 'Werbung Drei Bilder', + 'images' => 'Bilder', + 'general' => 'Allgemein', + 'add-image-btn-title' => 'Bild hinzufügen' + ], + 'category' => [ + 'save-btn-title' => 'Menü speichern', + 'title' => 'Kategoriemenüliste', + 'add-title' => 'Menüinhalt hinzufügen', + 'edit-title' => 'Menüinhalt bearbeiten', + 'btn-add-category' => 'Kategorieinhalt hinzufügen', + 'datagrid' => [ + 'category-id' => 'Kategorie Id', + 'category-name' => 'Kategorie Name', + 'category-icon' => 'Kategorie Symbol', + 'category-status' => 'Status', + ], + 'tab' => [ + 'general' => 'Allgemein', + ], + 'status' => 'Status', + 'active' => 'Aktiv', + 'inactive' => 'Inaktiv', + 'select' => '-- Auswählen --', + 'icon-class' => 'Symbol Klasse', + 'select-category' => 'Kategorie auswählen', + 'tooltip-content' => 'Tooltip-Inhalt', + 'mass-delete-success' => 'Ausgewähltes Kategorienmenü erfolgreich gelöscht.', + ], + 'general' => [ + 'locale_logo' => 'Logo Sprache', + ], + ], + + 'home' => [ + 'view-all' => 'Alle ansehen', + 'add-to-cart' => 'In den Warenkorb legen', + 'hot-categories' => 'Trend Kategorien', + 'payment-methods' => 'Zahlungsmethoden', + 'customer-reviews' => 'Kundenbewertungen', + 'shipping-methods' => 'Versandarten', + 'popular-categories' => 'Beliebte Kategorien', + ], + + 'header' => [ + 'cart' => 'Warenkorb', + 'cart' => 'Warenkorb', + 'guest' => 'Gast', + 'logout' => 'Ausloggen', + 'title' => 'Konto', + 'account' => 'Konto', + 'profile' => 'Profil', + 'wishlist' => 'Wunschzettel', + 'all-categories' => 'Alle Kategorien', + 'search-text' => 'Nach Produkten suchen', + 'welcome-message' => 'Herzlich willkommen, :customer_name', + 'dropdown-text' => 'Verwalten Sie Warenkorb, Bestellungen und Wunschliste', + ], + + 'menu-navbar' => [ + 'text-more' => 'Mehr', + 'text-category' => 'Kategorien', + ], + + 'minicart' => [ + 'cart' => 'Warenkorb', + 'view-cart' => 'Warenkorb ansehen', + ], + + 'checkout' => [ + 'qty' => 'Menge', + 'checkout' => 'Bestellen', + 'cart' => [ + 'view-cart' => 'Warenkorb ansehen', + 'cart-summary' => 'Warenkorb Zusammenfassung', + ], + 'qty' => 'Menge', + 'items' => 'Artikel', + 'subtotal' => 'Zwischensumme', + 'sub-total' => 'Zwischensumme', + 'proceed' => 'Zur Kasse', + ], + + 'customer' => [ + 'compare' => [ + 'text' => 'Vergleichen', + 'compare_similar_items' => 'Ähnliche Artikel vergleichen', + 'added' => 'Element erfolgreich zur Vergleichsliste hinzugefügt', + 'already_added' => 'Artikel bereits zur Vergleichsliste hinzugefügt', + 'removed' => 'Element erfolgreich aus Vergleichsliste entfernt', + 'empty-text' => "Sie haben keine Elemente in Ihrer Vergleichsliste", + 'product_image' => 'Produktbild', + 'actions' => 'Aktionen', + ], + 'login-form' => [ + 'sign-up' => 'Anmelden', + 'new-customer' => 'Neukunde', + 'customer-login' => 'Kundenlogin', + 'registered-user' => 'Registrierter Nutzer', + 'your-email-address' => 'Ihre E-mail-Adresse', + 'form-login-text' => 'Wenn Sie ein Konto haben, melden Sie sich mit Ihrer E-Mail-Adresse an.', + ], + 'signup-form' => [ + 'login' => 'Anmelden', + 'become-user' => 'Benutzer werden', + 'user-registration' => 'Benutzer Registration', + 'form-sginup-text' => 'Wenn Sie neu in unserem Shop sind, freuen wir uns, Sie als Mitglied zu begrüßen zu dürfen.', + ], + 'forget-password' => [ + 'login' => 'Anmelden', + 'forgot-password' => 'Passwort vergessen', + 'recover-password' => 'Passwort wiederherstellen', + 'recover-password-text' => 'Wenn Sie Ihr Passwort vergessen haben, stellen Sie es durch Eingabe Ihrer E-Mail-Adresse wieder her.', + ] + ], + + 'error' => [ + 'go-to-home' => 'Zur Startseite', + 'page-lost-short' => 'Inhalt verloren', + 'something_went_wrong' => 'Etwas ist schief gelaufen', + 'page-lost-description' => "Die gesuchte Seite ist nicht verfügbar. Versuchen Sie erneut zu suchen oder verwenden Sie die Schaltfläche Zurück.", + ], + + 'products' => [ + 'text' => 'Produkte', + 'details' => 'Details', + 'reviews-title' => 'Bewertungen', + 'reviewed' => 'Bewertet', + 'review-by' => 'Bewertung durch', + 'quick-view' => 'Schnellansicht', + 'not-available' => 'Nicht verfügbar', + 'submit-review' => 'Bewertung abschicken', + 'ratings' => ':totalRatings Sterne', + 'reviews-count' => ':totalReviews Bewertungen', + 'customer-rating' => 'Kundenbewertung', + 'more-infomation' => 'Mehr Informationen', + 'view-all-reviews' => 'Alle Bewertungen anzeigen', + 'write-your-review' => 'Schreiben Sie Ihre Bewertung', + 'short-description' => 'Kurze Beschreibungen', + 'recently-viewed' => 'Kürzlich angesehene Produkte', + 'be-first-review' => 'Sei der erste der eine Bewertung schreibt', + ], + + 'shop' => [ + 'gender' => [ + 'male' => 'Männlich', + 'other' => 'Andere', + 'female' => 'Weiblich', + ], + 'general' => [ + 'no' => 'Nein', + 'yes' => 'Ja', + 'view' => 'Ansicht', + 'filter' => 'Filter', + 'orders' => 'Bestellungen', + 'update' => 'Aktualisieren', + 'reviews' => 'Bewertungen', + 'addresses' => 'Adressen', + 'top-brands' => 'Top Marken', + 'new-password' => 'Neues Passwort', + 'downloadables' => 'Herunterladbare Produkte', + 'confirm-new-password' => 'Bestätigen Sie Ihr neues Passwort', + 'enter-current-password' => 'Geben Sie Ihr aktuelles Passwort ein', + + 'alert' => [ + 'info' => 'Information', + 'error' => 'Fehler', + 'success' => 'Erfolg', + 'warning' => 'Warnung', + ], + ], + 'wishlist' => [ + 'add-wishlist-text' => 'Produkt zur Wunschliste hinzufügen', + 'remove-wishlist-text' => 'Produkt von der Wunschliste entfernen' + ] + ], + + 'responsive' => [ + 'header' => [ + 'languages' => 'Sprachen', + 'greeting' => 'Herzlich willkommen, :customer !', + ] + ], +] + +?> diff --git a/packages/Webkul/Velocity/src/Resources/lang/en/app.php b/packages/Webkul/Velocity/src/Resources/lang/en/app.php index f5ff8d49c..b0ba677bd 100644 --- a/packages/Webkul/Velocity/src/Resources/lang/en/app.php +++ b/packages/Webkul/Velocity/src/Resources/lang/en/app.php @@ -198,6 +198,8 @@ return [ 'already_added' => 'Item already added to compare list', 'removed' => 'Item successfully removed from compare list', 'empty-text' => "You don't have any items in your compare list", + 'product_image' => 'Product Image', + 'actions' => 'Actions', ], 'login-form' => [ 'sign-up' => 'Sign up', diff --git a/packages/Webkul/Velocity/src/Resources/lang/fa/app.php b/packages/Webkul/Velocity/src/Resources/lang/fa/app.php index b53b5f3e3..efeb8259b 100644 --- a/packages/Webkul/Velocity/src/Resources/lang/fa/app.php +++ b/packages/Webkul/Velocity/src/Resources/lang/fa/app.php @@ -198,6 +198,8 @@ return [ 'already_added' => 'مورد در حال حاضر برای مقایسه لیست اضافه شده است', 'removed' => 'مورد با موفقیت از لیست مقایسه حذف شد', 'empty-text' => "شما هیچ موردی را در لیست مقایسه خود ندارید", + 'product_image' => 'Product Image', + 'actions' => 'Actions', ], 'login-form' => [ 'sign-up' => 'ثبت نام', diff --git a/packages/Webkul/Velocity/src/Resources/lang/nl/app.php b/packages/Webkul/Velocity/src/Resources/lang/nl/app.php index 0002a7478..f757c1c08 100644 --- a/packages/Webkul/Velocity/src/Resources/lang/nl/app.php +++ b/packages/Webkul/Velocity/src/Resources/lang/nl/app.php @@ -198,6 +198,8 @@ return [ 'already_added' => 'Item already added to compare list', 'removed' => 'Item successfully removed from compare list', 'empty-text' => "You don't have any items in your compare list", + 'product_image' => 'Product Image', + 'actions' => 'Actions', ], 'login-form' => [ 'sign-up' => 'Registreren', diff --git a/packages/Webkul/Velocity/src/Resources/lang/pt_BR/app.php b/packages/Webkul/Velocity/src/Resources/lang/pt_BR/app.php index ec69dbd4e..03ec3736b 100644 --- a/packages/Webkul/Velocity/src/Resources/lang/pt_BR/app.php +++ b/packages/Webkul/Velocity/src/Resources/lang/pt_BR/app.php @@ -200,6 +200,8 @@ return [ 'added' => 'Item adicionado com sucesso à lista de comparação', 'removed' => 'Item removido com sucesso da lista de comparação', 'empty-text' => "Você não possui nenhum item na sua lista de comparação", + 'product_image' => 'Imagem do Produto', + 'actions' => 'Ações', ], 'login-form' => [ 'sign-up' => 'Cadastrar', diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage.blade.php index ab5d50756..d1dce5102 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage.blade.php @@ -341,10 +341,34 @@ let address = this.allAddress.forEach(address => { if (address.id == this.address.billing.address_id) { this.address.billing.address1 = [address.address1]; + + if (address.email) { + this.address.billing.email = address.email; + } + + if (address.first_name) { + this.address.billing.first_name = address.first_name; + } + + if (address.last_name) { + this.address.billing.last_name = address.last_name; + } } if (address.id == this.address.shipping.address_id) { this.address.shipping.address1 = [address.address1]; + + if (address.email) { + this.address.shipping.email = address.email; + } + + if (address.first_name) { + this.address.shipping.first_name = address.first_name; + } + + if (address.last_name) { + this.address.shipping.last_name = address.last_name; + } } }); } @@ -499,17 +523,19 @@ backToSavedBillingAddress: function () { this.new_billing_address = false; - setTimeout(() => { - this.validateForm('address-form'); - }, 0); + this.validateFormAfterAction() }, backToSavedShippingAddress: function () { this.new_shipping_address = false; + this.validateFormAfterAction() + }, + + validateFormAfterAction: function () { setTimeout(() => { this.validateForm('address-form'); }, 0); - }, + } } }); diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-info.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-info.blade.php index 87ca1c3ef..ccddd6293 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-info.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-info.blade.php @@ -55,7 +55,9 @@
-
+
add_circle_outline @@ -79,11 +81,11 @@
@@ -183,7 +185,9 @@
-
+
add_circle_outline diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-new-form.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-new-form.blade.php index 1baa7ad50..964726891 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-new-form.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/checkout/onepage/customer-new-form.blade.php @@ -206,7 +206,7 @@ v-validate="'required'" name="shipping[postcode]" v-model="address.shipping.postcode" - @change="validateForm('address-form')" + @keyup="validateForm('address-form')" data-vv-as=""{{ __('shop::app.checkout.onepage.postcode') }}"" /> @@ -498,7 +498,7 @@ name="billing[phone]" v-validate="'required'" v-model="address.billing.phone" - @change="validateForm('address-form')" + @keyup="validateForm('address-form')" data-vv-as=""{{ __('shop::app.checkout.onepage.phone') }}"" /> diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php index 09e41ce85..072abcc03 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/guest/compare/compare-products.blade.php @@ -40,19 +40,19 @@ array_splice($comparableAttributes, 1, 0, [[ 'code' => 'image', - 'admin_name' => 'Product Image' + 'admin_name' => __('velocity::app.customer.compare.product_image') ]]); array_splice($comparableAttributes, 2, 0, [[ 'code' => 'addToCartHtml', - 'admin_name' => 'Actions' + 'admin_name' => __('velocity::app.customer.compare.actions') ]]); @endphp @foreach ($comparableAttributes as $attribute) - {{ $attribute['admin_name'] }} + {{ isset($attribute['name']) ? $attribute['name'] : $attribute['admin_name'] }} diff --git a/packages/Webkul/Velocity/src/Resources/views/shop/products/list/layered-navigation.blade.php b/packages/Webkul/Velocity/src/Resources/views/shop/products/list/layered-navigation.blade.php index debba31c1..5529f03e7 100644 --- a/packages/Webkul/Velocity/src/Resources/views/shop/products/list/layered-navigation.blade.php +++ b/packages/Webkul/Velocity/src/Resources/views/shop/products/list/layered-navigation.blade.php @@ -118,7 +118,7 @@ :value="sliderConfig.priceFrom" id="price_from" /> - + meta_description : str_limit(strip_tags($product->description), 120, '') }}"/> + + + @if (core()->getConfigData('catalog.rich_snippets.products.enable')) + + @endif + + getProductBaseImage($product); ?> + + + + + + + + + + + + + + + + + + + + @stop @push('css') diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php new file mode 100644 index 000000000..837835fed --- /dev/null +++ b/resources/lang/de/auth.php @@ -0,0 +1,19 @@ + 'Diese Zugangsdaten stimmen nicht mit unseren Aufzeichnungen überein.', + 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds erneut.', + +]; diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php new file mode 100644 index 000000000..ce092b8b4 --- /dev/null +++ b/resources/lang/de/pagination.php @@ -0,0 +1,19 @@ + '« Vorherige', + 'next' => 'Nächste »', + +]; diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php new file mode 100644 index 000000000..3c0ef5d22 --- /dev/null +++ b/resources/lang/de/passwords.php @@ -0,0 +1,22 @@ + 'Die Passwörter müssen aus mindestens sechs Zeichen bestehen und mit der Bestätigung übereinstimmen.', + 'reset' => 'Ihr Passwort wurde zurückgesetzt!', + 'sent' => 'Wir haben Ihnen einen Link zum Zurücksetzen des Passworts per E-Mail geschickt!', + 'token' => 'Dieses Token zum Zurücksetzen des Passworts ist ungültig.', + 'user' => 'Wir können keinen Benutzer mit dieser E-Mail-Adresse finden.', + +]; diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php new file mode 100644 index 000000000..ba59ab1ad --- /dev/null +++ b/resources/lang/de/validation.php @@ -0,0 +1,146 @@ + 'Das Attribut :attribute muss akzeptiert werden.', + 'active_url' => 'Das :attribute ist keine gültige URL.', + 'after' => 'Das Attribut :attribute muss ein Datum nach :date sein.', + 'after_or_equal' => 'Das Attribut :attribute muss ein Datum nach oder gleich :date sein.', + 'alpha' => 'Das Attribut :attribute darf nur Buchstaben enthalten.', + 'alpha_dash' => 'Das Attribut :darf nur Buchstaben, Zahlen, Striche und Unterstriche enthalten.', + 'alpha_num' => 'Das Attribut :attribute darf nur Buchstaben und Zahlen enthalten.', + 'array' => 'Das :attribute muss ein Array sein.', + 'before' => 'Das Attribut :attribute muss ein Datum vor :date sein.', + 'before_or_equal' => 'Das Attribut :attribute muss ein Datum vor oder gleich :date sein.', + 'between' => [ + 'numeric' => 'Das Attribut :attribute muss zwischen :min und :max liegen.', + 'file' => 'Das Attribut :attribute muss zwischen :min und :max Kilobyte liegen.', + 'string' => 'Das Attribut :attribute muss zwischen :min und :max Zeichen liegen.', + 'array' => 'Das Attribut :attribute muss zwischen :min und :max Elemente haben.', + ], + 'boolean' => 'Das Feld :attribute muss wahr oder falsch sein.', + 'confirmed' => 'Die Bestätigung des :attribute stimmt nicht überein.', + 'date' => 'Das Attribut :attribute ist kein gültiges Datum.', + 'date_format' => 'Das Attribut :attribute entspricht nicht dem Format :format.', + 'different' => 'Das Attribut :attribute und :other müssen unterschiedlich sein.', + 'digits' => 'Das Attribut :attribute muss aus Ziffern bestehen.', + 'digits_between' => 'Das Attribut :attribute muss zwischen :min und :max Ziffern liegen.', + 'dimensions' => 'Das Attribut :attribute hat ungültige Bildabmessungen.', + 'distinct' => 'Das Feld :attribute hat einen doppelten Wert.', + 'email' => 'Das Attribut :attribute muss eine gültige E-Mail-Adresse sein.', + 'exists' => 'Das ausgewählte :attribute ist ungültig.', + 'file' => 'Das Attribut :attribute muss eine Datei sein.', + 'filled' => 'Das Feld :attribute muss einen Wert haben.', + 'gt' => [ + 'numeric' => 'Das Attribut :attribute muss größer als :value sein.', + 'file' => 'Das Attribut :attribute muss größer als der Wert :value kilobytes sein.', + 'string' => 'Das Attribut :attribute muss größer als :value Zeichen sein.', + 'array' => 'Das Attribut :attribute muss mehr als :value items haben.', + ], + 'gte' => [ + 'numeric' => 'Das Attribut :attribute muss größer oder gleich :value sein.', + 'file' => 'Das Attribut :attribute muss größer oder gleich :value kilobytes sein.', + 'string' => 'Das Attribut :attribute muss größer oder gleich :value Zeichen sein.', + 'array' => 'Das Attribut :attribute muss :value items oder mehr haben.', + ], + 'image' => 'Das Attribut :attribute muss ein Bild sein.', + 'in' => 'Das ausgewählte :attribute ist ungültig.', + 'in_array' => 'Das Feld :attribute existiert nicht in :other.', + 'integer' => 'Das Attribut :attribute muss eine ganze Zahl sein.', + 'ip' => 'Das Attribut :attribute muss eine gültige IP-Adresse sein.', + 'ipv4' => 'Das :attribute muss eine gültige IPv4-Adresse sein.', + 'ipv6' => 'Das :attribute muss eine gültige IPv6-Adresse sein.', + 'json' => 'Das :attribute muss ein gültiger JSON-String sein.', + 'lt' => [ + 'numeric' => 'Das Attribut :attribute muss kleiner als :value sein.', + 'file' => 'Das Attribut :attribute muss kleiner als der Wert :value kilobytes sein.', + 'string' => 'Das Attribut :attribute muss kleiner als :value Zeichen sein.', + 'array' => 'Das Attribut :attribute muss kleiner als :value items sein.', + ], + 'lte' => [ + 'numeric' => 'Das Attribut :attribute muss kleiner oder gleich :value sein.', + 'file' => 'Das Attribut :attribute muss kleiner oder gleich :value kilobytes sein.', + 'string' => 'Das Attribut :attribute muss kleiner oder gleich :value Zeichen sein.', + 'array' => 'Das Attribut :attribute darf nicht mehr als :value items haben.', + ], + 'max' => [ + 'numeric' => 'Das Attribut :attribute darf nicht größer als :max sein.', + 'file' => 'Das Attribut :attribute darf nicht größer als :max Kilobytes sein.', + 'string' => 'Das Attribut :attribute darf nicht größer als :max Zeichen sein.', + 'array' => 'Das Attribut :attribute darf nicht mehr als :max Elemente enthalten.', + ], + 'mimes' => 'Das Attribut :attribute muss eine Datei vom Typ: :values sein.', + 'mimetypes' => 'Das Attribut :attribute muss eine Datei vom Typ: :values sein.', + 'min' => [ + 'numeric' => 'Das Attribut :attribute muss mindestens :min. sein.', + 'file' => 'Das Attribut :attribute muss mindestens :min Kilobytes betragen.', + 'string' => 'Das Attribut :attribute muss aus mindestens :min Zeichen bestehen.', + 'array' => 'Das Attribut :attribute muss mindestens :min Elemente enthalten.', + ], + 'not_in' => 'Das ausgewählte :attribute ist ungültig.', + 'not_regex' => 'Das Format des :attribute ist ungültig.', + 'numeric' => 'Das Attribut :attribute muss eine Zahl sein.', + 'present' => 'Das Feld :attribute muss vorhanden sein.', + 'regex' => 'Das Format des :attribute ist ungültig.', + 'required' => 'Das Feld :attribute ist erforderlich.', + 'required_if' => 'Das Feld :attribute wird benötigt, wenn :other der Wert :value ist.', + 'required_unless' => 'Das Feld :attribute ist erforderlich, es sei denn, :other steht in :values.', + 'required_with' => 'Das Feld :attribute ist erforderlich, wenn :values vorhanden ist.', + 'required_with_all' => 'Das Feld :attribute ist erforderlich, wenn :values vorhanden ist.', + 'required_without' => 'Das Attributfeld :attribute ist erforderlich, wenn :values nicht vorhanden ist.', + 'required_without_all' => 'Das Attributfeld :attribute wird benötigt, wenn keiner der :values vorhanden ist.', + 'same' => 'Das Attribut :attribute und :other müssen übereinstimmen.', + 'size' => [ + 'numeric' => 'Das Attribut :attribute muss :size sein.', + 'file' => 'Das Attribut :attribute muss :size kilobytes sein.', + 'string' => 'Das Attribut :attribute muss :size Zeichen sein.', + 'array' => 'Das Attribut :attribute muss :size Elemente enthalten.', + ], + 'string' => 'Das :attribute muss eine Zeichenkette sein.', + 'timezone' => 'Das Attribut :attribute muss eine gültige Zone sein.', + 'unique' => 'Das Attribut :attribute wurde bereits vergeben.', + 'uploaded' => 'Das :attribute konnte nicht hochgeladen werden.', + 'url' => 'Das Format des :attribute ist ungültig.', + + /* + |-------------------------------------------------------------------------- + | Custom Validation Language Lines + |-------------------------------------------------------------------------- + | + | Here you may specify custom validation messages for attributes using the + | convention "attribute.rule" to name the lines. This makes it quick to + | specify a specific custom language line for a given attribute rule. + | + */ + + 'custom' => [ + 'attribute-name' => [ + 'rule-name' => 'kundenspezifische Nachricht', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Custom Validation Attributes + |-------------------------------------------------------------------------- + | + | The following language lines are used to swap attribute place-holders + | with something more reader friendly such as E-Mail Address instead + | of "email". This simply helps us make messages a little cleaner. + | + */ + + 'attributes' => [], + +];