@viur/shop-components 0.1.2 → 0.1.4-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="item-wrapper">
2
+ <div class="viur-shop-item-wrapper">
3
3
  <sl-card horizontal class="viur-shop-cart-leaf">
4
4
  <img
5
5
  class="viur-shop-cart-leaf-image"
@@ -12,44 +12,48 @@
12
12
  )
13
13
  "
14
14
  />
15
+ <h5 v-if="item.shop_art_no_or_gtin" class="viur-shop-cart-leaf-artno" slot="header">
16
+ {{ getValue(item.shop_art_no_or_gtin) }}
17
+ </h5>
15
18
  <h4
16
19
  class="viur-shop-cart-leaf-headline headline"
17
20
  v-html="getValue(item.shop_name)"
18
21
  ></h4>
19
- <h5 class="viur-shop-cart-leaf-artno">
20
- {{ getValue(item.shop_art_no_or_gtin) }}
21
- </h5>
22
22
  <div
23
23
  class="viur-shop-cart-leaf-description"
24
24
  v-html="getValue(item.shop_description)"
25
25
  ></div>
26
- <sl-input
27
- :disabled="!edit"
28
- class="viur-shop-cart-leaf-value viur-shop-cart-leaf-value--quantity"
29
- type="number"
30
- placeholder="Number"
31
- min="0"
32
- noSpinButtons
33
- :value="item.quantity"
34
- @sl-change="changeAmount($event.target.value)"
35
- >
36
- <dialog-Button slot="prefix" class="decent" v-if="item.quantity===1" variant="danger" outline>
37
- <sl-icon name="trash"></sl-icon>
38
- <template #dialog="{close}">
39
- {{ $t('messages.remove_article_from_cart') }}
40
- <sl-bar>
41
- <sl-button slot="left" @click="close">{{$t('actions.cancel')}}</sl-button>
42
- <sl-button slot="right" variant="danger" @click="removeArticle(); close()">{{ $t('actions.delete') }}</sl-button>
43
- </sl-bar>
44
- </template>
45
- </dialog-Button>
46
- <sl-button slot="prefix" v-else @click="changeAmount(item.quantity-=1)">
47
- <sl-icon name="dash-lg"></sl-icon>
48
- </sl-button>
49
- <sl-button slot="suffix" @click="changeAmount(item.quantity+=1)">
50
- <sl-icon name="plus-lg"></sl-icon>
51
- </sl-button>
52
- </sl-input>
26
+
27
+ <div class="viur-shop-cart-leaf-quantity">
28
+ <div class="viur-shop-cart-leaf-label">{{$t('shop.quantity')}}</div>
29
+ <sl-input
30
+ :disabled="!edit"
31
+ class="viur-shop-cart-leaf-value viur-shop-cart-leaf-value--quantity"
32
+ type="number"
33
+ placeholder="Number"
34
+ min="0"
35
+ noSpinButtons
36
+ :value="item.quantity"
37
+ @sl-change="changeAmount($event.target.value)"
38
+ >
39
+ <dialog-Button slot="prefix" class="decent" v-if="item.quantity===1" variant="danger" outline>
40
+ <sl-icon name="trash"></sl-icon>
41
+ <template #dialog="{close}">
42
+ {{ $t('messages.remove_article_from_cart') }}
43
+ <sl-bar>
44
+ <sl-button slot="left" @click="close">{{$t('actions.cancel')}}</sl-button>
45
+ <sl-button slot="right" variant="danger" @click="removeArticle(); close()">{{ $t('actions.delete') }}</sl-button>
46
+ </sl-bar>
47
+ </template>
48
+ </dialog-Button>
49
+ <sl-button slot="prefix" v-else @click="changeAmount(item.quantity-=1)">
50
+ <sl-icon name="dash-lg"></sl-icon>
51
+ </sl-button>
52
+ <sl-button slot="suffix" @click="changeAmount(item.quantity+=1)">
53
+ <sl-icon name="plus-lg"></sl-icon>
54
+ </sl-button>
55
+ </sl-input>
56
+ </div>
53
57
 
54
58
  <div class="viur-shop-cart-leaf-unitprice">
55
59
  <div class="viur-shop-cart-leaf-label">{{$t('shop.unit_price')}}</div>
@@ -63,11 +67,13 @@
63
67
  </sl-format-number>
64
68
  </div>
65
69
 
66
-
67
- <div class="availability"
68
- :class="`availability--${item.shop_availability}`"
69
- >
70
+ <div class="viur-shop-cart-leaf-availability">
71
+ <div class="viur-shop-cart-leaf-label">{{ $t('shop.availability') }}</div>
72
+ <div class="availability"
73
+ :class="`availability--${item.shop_availability}`"
74
+ >
70
75
  {{$t(item.shop_availability)}}
76
+ </div>
71
77
  </div>
72
78
 
73
79
  <div class="viur-shop-cart-leaf-price">
@@ -125,44 +131,44 @@ function removeArticle(){
125
131
  @layer foundation.shop {
126
132
 
127
133
  .availability {
128
- display: flex;
129
- flex-basis: 70%;
130
- font-size: .9em;
131
- align-items: center;
132
- justify-content: flex-end;
133
- white-space: nowrap;
134
- &:before {
135
- content: '';
136
- display: block;
137
- background-color: #666;
138
- width: .7em;
139
- height: .7em;
140
- border-radius: 50%;
141
- margin-right: 5px;
142
- margin-bottom: 2px;
134
+ display: flex;
135
+ flex-basis: 70%;
136
+ font-size: .9em;
137
+ align-items: center;
138
+ justify-content: flex-start;
139
+ white-space: nowrap;
140
+ &:before {
141
+ content: '';
142
+ display: block;
143
+ background-color: #666;
144
+ width: .7em;
145
+ height: .7em;
146
+ border-radius: 50%;
147
+ margin-right: 5px;
148
+ margin-bottom: 2px;
149
+ }
143
150
  }
144
- }
145
- .availability--onrequest,
146
- .availability--instock {
147
- color: var(--ignt-color-success);
148
- &:before {
149
- background-color: var(--ignt-color-success);
151
+ .availability--onrequest,
152
+ .availability--instock {
153
+ color: var(--ignt-color-success);
154
+ &:before {
155
+ background-color: var(--ignt-color-success);
156
+ }
150
157
  }
151
- }
152
- .availability--discontinued,
153
- .availability--outofstock {
154
- color: var(--ignt-color-danger);
155
- &:before {
156
- background-color: var(--ignt-color-danger);
158
+ .availability--discontinued,
159
+ .availability--outofstock {
160
+ color: var(--ignt-color-danger);
161
+ &:before {
162
+ background-color: var(--ignt-color-danger);
163
+ }
157
164
  }
158
- }
159
- .availability--limited,
160
- .availability--preorder {
161
- color: var(--ignt-color-warning);
162
- &:before {
163
- background-color: var(--ignt-color-warning);
165
+ .availability--limited,
166
+ .availability--preorder {
167
+ color: var(--ignt-color-warning);
168
+ &:before {
169
+ background-color: var(--ignt-color-warning);
170
+ }
164
171
  }
165
- }
166
172
 
167
173
  .viur-shop-cart-leaf {
168
174
  --shop-leaf-label-color: var(--ignt-color-primary);
@@ -174,6 +180,7 @@ function removeArticle(){
174
180
  &::part(base) {
175
181
  display: flex;
176
182
  position: relative;
183
+ padding-bottom: var(--shop-leaf-gap, var(--ignt-spacing-small));
177
184
  }
178
185
 
179
186
  &::part(header) {
@@ -189,8 +196,9 @@ function removeArticle(){
189
196
  &::part(body) {
190
197
  display: grid;
191
198
  grid-template-columns: repeat(5, minmax(0, 1fr));
192
- gap: var(--sl-spacing-medium);
193
- padding: var(--sl-spacing-large);
199
+ grid-template-rows: fit-content(20%) 1fr fit-content(20%);
200
+ gap: var(--shop-leaf-gap, var(--ignt-spacing-small));
201
+ padding: 0 var(--sl-spacing-large);
194
202
  height: 100%;
195
203
  }
196
204
 
@@ -201,8 +209,8 @@ function removeArticle(){
201
209
  @media (max-width: 600px) {
202
210
  &::part(body) {
203
211
  grid-template-columns: repeat(2, minmax(0, 1fr));
204
- gap: var(--sl-spacing-medium);
205
- padding: var(--sl-spacing-large);
212
+ gap: var(--shop-leaf-gap, var(--ignt-spacing-small));
213
+ padding: 0 var(--sl-spacing-large);
206
214
  height: 100%;
207
215
  }
208
216
 
@@ -219,7 +227,6 @@ function removeArticle(){
219
227
 
220
228
  .viur-shop-cart-leaf-headline {
221
229
  grid-column: 1 / span 4;
222
- order: -2;
223
230
  margin: 0;
224
231
  font-size: var(--shop-leaf-headline-font-size);
225
232
 
@@ -229,6 +236,7 @@ function removeArticle(){
229
236
  }
230
237
 
231
238
  .viur-shop-cart-leaf-artno {
239
+ font-size: .8em;
232
240
  grid-column: 1 / span 5;
233
241
  margin: 0;
234
242
 
@@ -284,6 +292,7 @@ function removeArticle(){
284
292
  }
285
293
 
286
294
  .viur-shop-cart-leaf-unitprice {
295
+ grid-column: 3 / span 1;
287
296
  align-self: center;
288
297
 
289
298
  @media (max-width: 600px) {
@@ -291,6 +300,12 @@ function removeArticle(){
291
300
  }
292
301
  }
293
302
 
303
+ .viur-shop-cart-leaf-availability {
304
+ grid-column: 4 / span 1;
305
+ align-self: center;
306
+ text-align: right;
307
+ }
308
+
294
309
  .viur-shop-cart-leaf-label,
295
310
  .viur-shop-cart-leaf-value--quantity::part(form-control-label) {
296
311
  color: var(--shop-leaf-label-color);
@@ -317,7 +332,7 @@ function removeArticle(){
317
332
  }
318
333
  }
319
334
 
320
- .item-wrapper{
335
+ .viur-shop-item-wrapper{
321
336
  position: relative;
322
337
  }
323
338
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div class="item-wrapper">
2
+ <div class="viur-shop-item-wrapper">
3
3
  <sl-card horizontal class="viur-shop-cart-leaf-small">
4
4
  <img
5
5
  class="viur-shop-cart-leaf-image"
@@ -46,7 +46,7 @@
46
46
  </sl-input>
47
47
 
48
48
  <div class="viur-shop-cart-leaf-article-number">
49
- <div class="viur-shop-cart-leaf-label">{{ $t('shop.articlenumber') }}</div>
49
+ <div class="viur-shop-cart-leaf-label">{{ $t('shop.article_number') }}</div>
50
50
  {{ getValue(item.shop_art_no_or_gtin) }}
51
51
  </div>
52
52
 
@@ -222,7 +222,7 @@ function removeArticle(){
222
222
  }
223
223
  }
224
224
 
225
- .item-wrapper{
225
+ .viur-shop-item-wrapper{
226
226
  position: relative;
227
227
  }
228
228
 
@@ -12,7 +12,7 @@
12
12
  </shop-alert>
13
13
 
14
14
  <template v-if="shopStore.state.cartRoot.discount">
15
- <div class="discount-view">
15
+ <div class="viur-shop-discount-view">
16
16
  <span>Code: {{ shopStore.state.cartRoot.discount.dest.name }}</span>
17
17
  <sl-button size="small" outline variant="danger" @click="removeDiscountAction" :loading="state.loading">
18
18
  <sl-icon name="x-lg" slot="prefix"></sl-icon>
@@ -20,15 +20,16 @@
20
20
  </sl-button>
21
21
  </div>
22
22
  </template>
23
- <template v-else>
23
+ <sl-button-group v-else>
24
24
  <sl-input
25
- placeholder="Rabattcode eingeben"
25
+ class="viur-shop-discount-input"
26
+ :placeholder="$t('shop.add_discount_placeholder')"
26
27
  v-model="state.code"
27
28
  @keypress.enter="addDiscountAction()"
28
29
  >
29
30
  </sl-input>
30
- <button @click="addDiscountAction()" :loading="state.loading">{{ $t('shop.add_discount') }}</button>
31
- </template>
31
+ <sl-button @click="addDiscountAction()" :loading="state.loading">{{ $t('shop.add_discount') }}</sl-button>
32
+ </sl-button-group>
32
33
  </template>
33
34
 
34
35
  <script setup>
@@ -81,11 +82,15 @@ function removeDiscountAction(){
81
82
 
82
83
  </script>
83
84
  <style scoped>
84
- .discount-view{
85
+ .viur-shop-discount-view{
85
86
  font-size:0.8em;
86
87
  display: flex;
87
88
  align-items: center;
88
89
  justify-content: space-between;
89
90
  }
90
91
 
91
- </style>
92
+ .viur-shop-discount-input {
93
+ flex-basis: 100%;
94
+ }
95
+
96
+ </style>
@@ -198,4 +198,11 @@ onBeforeMount(()=>{
198
198
  .loading{
199
199
  font-size:3rem;
200
200
  }
201
- </style>
201
+ </style>
202
+
203
+ <style>
204
+ /* global style to overwrite UnzerCSS */
205
+ .unzerUI.primary.button, .unzerUI.primary.buttons .button {
206
+ background-color: var(--ignt-color-primary) !important;
207
+ }
208
+ </style>
@@ -19,7 +19,7 @@
19
19
  <template v-if="tab && shopStore.state.tabs[tab]">
20
20
  {{ shopStore.state.tabIndexMap[tab] + 1 }}.
21
21
  <span class="viur-shop-order-status-span">
22
- {{ shopStore.state.tabs[tab]?.displayName }}
22
+ {{ $t(shopStore.state.tabs[tab]?.displayName) }}
23
23
  </span>
24
24
  </template>
25
25
  <template v-else>
@@ -43,46 +43,46 @@ export const useAddress = defineStore("useAddressStore", () => {
43
43
 
44
44
  })
45
45
 
46
- function saveForm(type,shippingIsBilling=false){
46
+ function saveForm(type,billingIsShipping=false){
47
47
  state[`${type}IsUpdating`] = true
48
48
  return state[`${type}Form`].sendData().then(async (resp)=>{
49
49
  let data = await resp.json()
50
+
50
51
  if (['addSuccess','editSuccess'].includes(data['action'])){
51
52
  state[`${type}Data`] = data['values']
52
- await updateAddresses(type, shippingIsBilling)
53
+ await updateAddresses(type, billingIsShipping)
53
54
  }
54
55
  state[`${type}IsUpdating`] = undefined
55
56
  return data
56
57
  })
57
58
  }
58
59
 
59
- function saveAddresses(shippingIsBilling=false){
60
- if (shippingIsBilling) {
61
- return saveForm('shipping',shippingIsBilling)
60
+ function saveAddresses(billingIsShipping=false){
61
+ if (billingIsShipping) {
62
+ return saveForm('billing',billingIsShipping)
62
63
  }else{
63
64
  return new Promise((resolve, reject) => {
64
65
  saveForm('shipping').then(()=>{
65
66
  saveForm('billing').then(()=>{
66
- resolve({'actions':'editSuccess'})
67
+ resolve({'action':'editSuccess'})
67
68
  }).catch((e)=>reject(e))
68
69
  }).catch((e)=>reject(e))
69
70
  })
70
71
  }
71
72
  }
72
73
 
73
- async function updateAddresses(type, shippingIsBilling=false) {
74
+ async function updateAddresses(type, billingIsShipping=false) {
74
75
  let key = state[`${type}Data`]['key']
75
-
76
76
  if (type === 'shipping'){
77
77
  const {updateCart} = useCart()
78
78
  updateCart({shipping_address_key:key})
79
- if(shippingIsBilling){
80
- const {addOrUpdateOrder} = useOrder()
81
- await addOrUpdateOrder({billing_address_key:key})
82
- }
83
79
  }else if (type === 'billing'){
84
80
  const {addOrUpdateOrder} = useOrder()
85
81
  await addOrUpdateOrder({billing_address_key:key})
82
+ if(billingIsShipping){
83
+ const {updateCart} = useCart()
84
+ updateCart({shipping_address_key:key})
85
+ }
86
86
  }
87
87
  }
88
88
 
@@ -84,7 +84,7 @@ export function useCart() {
84
84
  shipping_address_key,
85
85
  shipping_key,
86
86
  discount_key,
87
- project_data
87
+ commission
88
88
  } = {}){
89
89
 
90
90
  let data= {
@@ -97,8 +97,8 @@ export function useCart() {
97
97
  cart_key:cart_key ? cart_key : shopStore.state.cartRoot['key'],
98
98
  }
99
99
 
100
- if (project_data) {
101
- data.project_data = JSON.stringify(project_data)
100
+ if (commission) {
101
+ data.commission = commission
102
102
  }
103
103
 
104
104
  return Request.post(`${shopStore.state.shopApiUrl}/cart_update`, {
@@ -13,7 +13,7 @@ export function useOrder() {
13
13
  function updateOrderState(key,data){
14
14
  shopStore.state.order = data
15
15
  shopStore.state.orderKey = key
16
-
16
+
17
17
  const params = useUrlSearchParams('hash')
18
18
  params['order'] = shopStore.state.orderKey
19
19
 
@@ -38,7 +38,6 @@ export function useOrder() {
38
38
  function addOrUpdateOrder({
39
39
  payment_provider,
40
40
  billing_address_key,
41
- email,
42
41
  customer_key,
43
42
  state_ordered,
44
43
  state_paid,
@@ -49,7 +48,6 @@ export function useOrder() {
49
48
  let data = {
50
49
  payment_provider:payment_provider?payment_provider:shopStore.state.order?.['payment_provider'],
51
50
  billing_address_key:billing_address_key?billing_address_key:shopStore.state.order?.['billing_address_key']?.['dest']?.['key'],
52
- email:email?email:shopStore.state.order?.['email'],
53
51
  customer_key:customer_key?customer_key:shopStore.state.order?.['customer_key']?.['dest']?.['key'],
54
52
  state_ordered:state_ordered?state_ordered:shopStore.state.order?.['state_ordered'],
55
53
  state_paid:state_paid?state_paid:shopStore.state.order?.['state_paid'],
@@ -58,7 +56,7 @@ export function useOrder() {
58
56
  if (shopStore.state.orderKey){
59
57
  url = shopStore.state.shopApiUrl+"/order_update"
60
58
  data["order_key"] = shopStore.state.orderKey
61
-
59
+
62
60
  }else{
63
61
  data["cart_key"] = shopStore.state.cartRoot['key']
64
62
  }
@@ -77,4 +75,4 @@ export function useOrder() {
77
75
  fetchOrder,
78
76
  addOrUpdateOrder
79
77
  }
80
- }
78
+ }
package/src/main.js CHANGED
@@ -5,6 +5,7 @@ import { getTranslations } from "./utils";
5
5
  import { de_translations, en_translations } from "@viur/vue-utils";
6
6
  import en from "./translations/en"
7
7
  import de from "./translations/de"
8
+ import fr from "./translations/fr"
8
9
 
9
10
  export { default as ViurShop } from "./Shop.vue";
10
11
 
@@ -14,18 +15,26 @@ const ViurShopComponents = {
14
15
  let defaultLocale = options?.defaultLocale?options.defaultLocale:'de'
15
16
  let locale = options?.locale?options.locale:['de']
16
17
  let fallback = options?.fallback?options.fallback:'en'
18
+
19
+ let additionals = options?.additionals?options.additionals:{}
20
+
17
21
  app.use(createPinia());
18
22
 
19
23
  let messages = {}
20
24
  // fetch translations from server
21
- let data = await getTranslations(locale)
25
+ let data = await getTranslations(locale,options?.pattern)
22
26
  for(const loc of locale){
27
+ let locAdditionals = additionals?.[loc]?additionals[loc]:{}
28
+
29
+
23
30
  if (loc === 'de'){
24
- messages[loc] = { ...de_translations, ...de, ...data[loc]}
31
+ messages[loc] = { ...de_translations, ...de, ...locAdditionals, ...data[loc]}
32
+ }else if (loc === 'fr'){
33
+ messages[loc] = { ...fr, ...locAdditionals, ...data[loc]}
25
34
  }else if (loc === 'en'){
26
- messages[loc] = {...en_translations, ...en, ...data[loc]}
35
+ messages[loc] = {...en_translations, ...en, ...locAdditionals, ...data[loc]}
27
36
  }else{
28
- messages[loc] = {...data[loc]}
37
+ messages[loc] = {...locAdditionals, ...data[loc]}
29
38
  }
30
39
  }
31
40
 
@@ -41,4 +50,4 @@ const ViurShopComponents = {
41
50
  };
42
51
 
43
52
  // Export the plugin as default
44
- export default ViurShopComponents;
53
+ export default ViurShopComponents;
package/src/shop.js CHANGED
@@ -24,7 +24,7 @@ export const useViurShopStore = defineStore("viurshopStore", () => {
24
24
  tabs:{
25
25
  cart: {
26
26
  component: shallowRef(ShopCart),
27
- displayName: "Warenkorb",
27
+ displayName: "shop.order_step_cart", //Warenkorb
28
28
  icon: { name: "cart3" },
29
29
  active:computed(()=>!state.order?.['is_checkout_in_progress'] && !state.order?.['is_ordered']), //active if no orderkey or checkout not startet
30
30
  validating:false,
@@ -32,7 +32,7 @@ export const useViurShopStore = defineStore("viurshopStore", () => {
32
32
  },
33
33
  userdata: {
34
34
  component: shallowRef(ShopUserDataGuest),
35
- displayName: "Daten Eingeben",
35
+ displayName: "shop.order_step_data", //Daten Eingeben
36
36
  icon: { name: "card-list" },
37
37
  active:computed(()=>!state.order?.['is_checkout_in_progress'] && !state.order?.['is_ordered'] && state.cartList.length>0), //active if checkout not startet and cart is not empty
38
38
  validating:false,
@@ -40,7 +40,7 @@ export const useViurShopStore = defineStore("viurshopStore", () => {
40
40
  },
41
41
  shippingmethod: {
42
42
  component: shallowRef(ShopShippingMethod),
43
- displayName: "Versandart",
43
+ displayName: "shop.order_step_shipping", // Versandart
44
44
  icon: { name: "truck" },
45
45
  active:computed(()=>!state.order?.['is_checkout_in_progress'] && !state.order?.['is_ordered'] && state.cartRoot?.['shipping_address']), // we need a shipping country
46
46
  validating:false,
@@ -48,7 +48,7 @@ export const useViurShopStore = defineStore("viurshopStore", () => {
48
48
  },
49
49
  paymentprovider: {
50
50
  component: shallowRef(ShopPaymentProvider),
51
- displayName: "Zahlungsart auswählen",
51
+ displayName: "shop.order_step_payment", //Zahlungsart auswählen
52
52
  icon: { name: "credit-card" },
53
53
  active:computed(()=>!state.order?.['is_checkout_in_progress'] && state.order && state.cartRoot?.['shipping']), // we need a active order
54
54
  validating:false,
@@ -56,7 +56,7 @@ export const useViurShopStore = defineStore("viurshopStore", () => {
56
56
  },
57
57
  confirm: {
58
58
  component: shallowRef(ShopOrderConfirm),
59
- displayName: "Bestellung prüfen",
59
+ displayName: "shop.order_step_verify", //Bestellung prüfen
60
60
  icon: { name: "clipboard-check" },
61
61
  active:computed(()=>!state.order?.['is_paid'] && state.canCheckout?.['status']), // active if canCheckout and not already paid
62
62
  validating:false,
@@ -64,7 +64,7 @@ export const useViurShopStore = defineStore("viurshopStore", () => {
64
64
  },
65
65
  complete: {
66
66
  component: shallowRef(ShopOrderComplete),
67
- displayName: "Bestellung Abgeschlossen",
67
+ displayName: "shop.order_step_complete", //Bestellung Abgeschlossen
68
68
  icon: { name: "bag-check" },
69
69
  active:computed(()=>state.order?.['is_ordered']), // active if ordered
70
70
  validating:false,
@@ -5,32 +5,60 @@ export default {
5
5
  delete: "Löschen"
6
6
  },
7
7
  shop:{
8
- "check_order":"Bestellung prüfen",
8
+ "check_order":"Prüfen und absenden",
9
9
  "order_pay":"Zahlungspflichtig bestellen",
10
- "order_number":"Ihre Bestellnummer",
10
+ "order_number":"Ihre Vorgangsnummer",
11
11
  "order_thanks":"Vielen Dank für Ihre Bestellung",
12
- "order_message":"Wir haben Ihre Bestellung erhalten und werden diese schenllstmöglich bearbeiten.<br /> Sie erhalten in wenigen Minuten eine Bestätigung per E-Mail.",
12
+ "order_message":"Wir haben Ihre Bestellung erhalten und werden diese schnellstmöglich bearbeiten.<br /> Sie erhalten in wenigen Minuten eine Bestätigung per E-Mail.",
13
13
  "order_paid":"Ihre Zahlung ist bei uns eingegangen.",
14
14
  "order_ready_to_ship":"Ihre Bestellung ist fertig für den Versand.",
15
- "cart_empty":"Der Warenkorb ist leer.",
15
+ "cart_empty":"Es befinden sich noch keine Artikel im Warenkorb.",
16
16
  "order_summary":"Bestellzusammenfassung",
17
17
  "deliverytime":"Lieferzeit",
18
18
  "day": "Tag | Tage",
19
+ "availability": "Verfügbarkeit",
20
+ "quantity": "Anzahl",
19
21
  "unit_price":"Stückpreis",
20
22
  "total_price":"Gesamtpreis",
21
- "articlenumber":"Artikelnummer",
23
+ "article_number":"Artikelnummer",
22
24
  "pay":"Bezahlen",
23
- "add_discount":"Rabattcode hinzufügen",
24
- "use_shipping_as_billing_address": "Verwende Lieferadresse als Rechnungsadresse",
25
+ "add_discount":"Hinzufügen",
26
+ "add_discount_placeholder":"Dein Rabattcode",
27
+ "use_shipping_as_billing_address": "Lieferung zur Rechnungsadresse",
25
28
  "no_valid_shipping_found":"Keine passenden Versandarten gefunden.",
26
29
  "error_message":"Eine Fehler ist aufgetreten.",
27
- "free_shipping":"Kostenlos"
30
+ "free_shipping":"Versandkostenfrei",
31
+ "proceed-checkout":"Zur Kasse gehen",
32
+ "summary_headline":"Zusammenfassung",
33
+ "summary_subtotal":"Zwischensumme",
34
+ "summary_shipping_total":"Versand- und Bearbeitungspauschale",
35
+ "summary_delivery_time":"Lieferzeit",
36
+ "summary_discount":"Sie sparen bei Ihrem Einkauf im Aktionszeitraum",
37
+ "summary_checkout":"Zur Kasse gehen",
38
+ "summary_total":"Gesamtbetrag",
39
+ "summary_vat":"inkl. {percentage} MwSt.",
40
+ "discount_not_found": "Dieser Rabattcode existiert nicht.",
41
+ "discount_not_active": "Dieser Rabattcode ist nicht aktiv.",
42
+ "discount_not_available": "Dieser Rabattcode ist für dieses Land nicht verfügbar.",
43
+ "discount_already_used": "Dieser Rabattcode wurde bereits benutzt.",
44
+ "discount_invalid_period": "Der Rabattzeitraum hat noch nicht begonnen oder ist bereits vorbei.",
45
+ "discount_minimum_not_reached": "Der Mindestbestellwert von {{minimum_order_value}} € wurde nicht erreicht.",
46
+ "discount_no_sale_article": "Der Rabattcode ist nicht auf bereits rabattierte Artikel anwendbar.",
47
+ "discount_scope_not_satisfied": "Der Rabattcode ist für diesen Warenkorb / diese Artikel nicht anwendbar.",
48
+ "order_step_cart":"Warenkorb",
49
+ "order_step_data":"Daten",
50
+ "order_step_shipping":"Versandart",
51
+ "order_step_payment":"Zahlungsart",
52
+ "order_step_verify":"Bestellung prüfen",
53
+ "order_step_complete":"Bestellung Abgeschlossen"
54
+
55
+
28
56
  },
29
57
  messages:{
30
58
  loading:"Daten werden abgefragt...",
31
59
  updating:"Daten werden aktualisiert...",
32
- wait_for_payment:"warte auf Zahlung...",
60
+ wait_for_payment:"Warte auf Zahlung...",
33
61
  remove_article_from_cart:"Wollen sie den Artikel wirklich entfernen?",
34
- order_check_later:"Sie können Ihre Bestellung am Ende noch einmal überprüfen."
62
+ order_check_later:"Sie können Ihre Bestellung am Ende noch einmal überprüfen.",
35
63
  }
36
- }
64
+ }