diff --git a/src/PrerenderKonfigurator.js b/src/PrerenderKonfigurator.js index b838b84..882947a 100644 --- a/src/PrerenderKonfigurator.js +++ b/src/PrerenderKonfigurator.js @@ -66,6 +66,7 @@ class PrerenderKonfigurator extends Component { 15% + {/* Note: This is a prerender file - translation key would be: product.discount.from3Products */} ab 3 Produkten @@ -74,6 +75,7 @@ class PrerenderKonfigurator extends Component { 24% + {/* Note: This is a prerender file - translation key would be: product.discount.from5Products */} ab 5 Produkten @@ -82,11 +84,13 @@ class PrerenderKonfigurator extends Component { 36% + {/* Note: This is a prerender file - translation key would be: product.discount.from7Products */} ab 7 Produkten + {/* Note: This is a prerender file - translation key would be: product.discount.moreProductsMoreSavings */} Je mehr Produkte du auswählst, desto mehr sparst du! diff --git a/src/components/CartDropdown.js b/src/components/CartDropdown.js index 188fde8..54829ee 100644 --- a/src/components/CartDropdown.js +++ b/src/components/CartDropdown.js @@ -64,7 +64,7 @@ class CartDropdown extends Component { <> - {cartItems.length} {cartItems.length === 1 ? 'Produkt' : 'Produkte'} + {cartItems.length} {cartItems.length === 1 ? (this.props.t ? this.props.t('cart.itemCount.singular') : 'Produkt') : (this.props.t ? this.props.t('cart.itemCount.plural') : 'Produkte')} @@ -84,7 +84,7 @@ class CartDropdown extends Component { {/* Display total weight if greater than 0 */} {totalWeight > 0 && ( - Gesamtgewicht: {totalWeight.toFixed(2)} kg + {this.props.t ? this.props.t('cart.summary.totalWeight', { weight: totalWeight.toFixed(2) }) : `Gesamtgewicht: ${totalWeight.toFixed(2)} kg`} )} @@ -95,7 +95,7 @@ class CartDropdown extends Component { // Detailed summary with shipping costs <> - Bestellübersicht + {this.props.t ? this.props.t('cart.summary.title') : 'Bestellübersicht'} {deliveryMethod && ( @@ -105,14 +105,14 @@ class CartDropdown extends Component { - Waren (netto): + {this.props.t ? this.props.t('cart.summary.goodsNet') : 'Waren (netto):'} {currencyFormatter.format(priceCalculations.totalNet)} {deliveryCost > 0 && ( - Versandkosten (netto): + {this.props.t ? this.props.t('cart.summary.shippingNet') : 'Versandkosten (netto):'} {currencyFormatter.format(shippingNetPrice)} @@ -135,30 +135,30 @@ class CartDropdown extends Component { )} - Gesamtsumme Waren: + {this.props.t ? this.props.t('cart.summary.totalGoods') : 'Gesamtsumme Waren:'} {currencyFormatter.format(priceCalculations.totalGross)} - Versandkosten: + {this.props.t ? this.props.t('cart.summary.shippingCosts') : 'Versandkosten:'} {deliveryCost === 0 && priceCalculations.totalGross < 100 && ( - (kostenlos ab 100€) + {this.props.t ? this.props.t('cart.summary.freeFrom100') : '(kostenlos ab 100€)'} )} {deliveryCost === 0 ? ( - kostenlos + {this.props.t ? this.props.t('cart.summary.free') : 'kostenlos'} ) : ( currencyFormatter.format(deliveryCost) )} - Gesamtsumme: + {this.props.t ? this.props.t('cart.summary.total') : 'Gesamtsumme:'} {currencyFormatter.format(totalGross)} diff --git a/src/components/ProductList.js b/src/components/ProductList.js index 6484ca0..4653c9d 100644 --- a/src/components/ProductList.js +++ b/src/components/ProductList.js @@ -201,14 +201,14 @@ class ProductList extends Component { if (!isFiltered) { // No filters applied - if (filteredCount === 0) return "0 Produkte"; - if (filteredCount === 1) return "1 Produkt"; - return `${filteredCount} Produkte`; + if (filteredCount === 0) return this.props.t ? this.props.t('product.countDisplay.noProducts') : "0 Produkte"; + if (filteredCount === 1) return this.props.t ? this.props.t('product.countDisplay.oneProduct') : "1 Produkt"; + return this.props.t ? this.props.t('product.countDisplay.multipleProducts', { count: filteredCount }) : `${filteredCount} Produkte`; } else { // Filters applied - if (totalCount === 0) return "0 Produkte"; - if (totalCount === 1) return `${filteredCount} von 1 Produkt`; - return `${filteredCount} von ${totalCount} Produkten`; + if (totalCount === 0) return this.props.t ? this.props.t('product.countDisplay.noProducts') : "0 Produkte"; + if (totalCount === 1) return this.props.t ? this.props.t('product.countDisplay.filteredOneProduct', { filtered: filteredCount }) : `${filteredCount} von 1 Produkt`; + return this.props.t ? this.props.t('product.countDisplay.filteredProducts', { filtered: filteredCount, total: totalCount }) : `${filteredCount} von ${totalCount} Produkten`; } } diff --git a/src/components/profile/DeliveryMethodSelector.js b/src/components/profile/DeliveryMethodSelector.js index c03fa46..4af111b 100644 --- a/src/components/profile/DeliveryMethodSelector.js +++ b/src/components/profile/DeliveryMethodSelector.js @@ -3,8 +3,9 @@ import Box from '@mui/material/Box'; import Typography from '@mui/material/Typography'; import Radio from '@mui/material/Radio'; import Checkbox from '@mui/material/Checkbox'; +import { withI18n } from '../../i18n/withTranslation.js'; -const DeliveryMethodSelector = ({ deliveryMethod, onChange, isPickupOnly, cartItems = [] }) => { +const DeliveryMethodSelector = ({ deliveryMethod, onChange, isPickupOnly, cartItems = [], t }) => { // Calculate cart value for free shipping threshold const cartValue = cartItems.reduce((total, item) => total + item.price * item.quantity, 0); const isFreeShipping = cartValue >= 100; @@ -14,30 +15,30 @@ const DeliveryMethodSelector = ({ deliveryMethod, onChange, isPickupOnly, cartIt { id: 'DHL', name: 'DHL', - description: isPickupOnly ? "nicht auswählbar weil ein oder mehrere Artikel nur abgeholt werden können" : - isFreeShipping ? 'Standardversand - KOSTENLOS ab 100€ Warenwert!' : 'Standardversand', - price: isFreeShipping ? 'kostenlos' : '6,99 €', + description: isPickupOnly ? (t ? t('delivery.descriptions.notAvailable') : "nicht auswählbar weil ein oder mehrere Artikel nur abgeholt werden können") : + isFreeShipping ? (t ? t('delivery.descriptions.standardFree') : 'Standardversand - KOSTENLOS ab 100€ Warenwert!') : (t ? t('delivery.descriptions.standard') : 'Standardversand'), + price: isFreeShipping ? (t ? t('delivery.prices.free') : 'kostenlos') : (t ? t('delivery.prices.dhl') : '6,99 €'), disabled: isPickupOnly }, { id: 'DPD', name: 'DPD', - description: isPickupOnly ? "nicht auswählbar weil ein oder mehrere Artikel nur abgeholt werden können" : - isFreeShipping ? 'Standardversand - KOSTENLOS ab 100€ Warenwert!' : 'Standardversand', - price: isFreeShipping ? 'kostenlos' : '4,90 €', + description: isPickupOnly ? (t ? t('delivery.descriptions.notAvailable') : "nicht auswählbar weil ein oder mehrere Artikel nur abgeholt werden können") : + isFreeShipping ? (t ? t('delivery.descriptions.standardFree') : 'Standardversand - KOSTENLOS ab 100€ Warenwert!') : (t ? t('delivery.descriptions.standard') : 'Standardversand'), + price: isFreeShipping ? (t ? t('delivery.prices.free') : 'kostenlos') : (t ? t('delivery.prices.dpd') : '4,90 €'), disabled: isPickupOnly }, { id: 'Sperrgut', name: 'Sperrgut', - description: 'Für große und schwere Artikel', - price: '28,99 €', + description: t ? t('delivery.descriptions.bulky') : 'Für große und schwere Artikel', + price: t ? t('delivery.prices.sperrgut') : '28,99 €', disabled: true, isCheckbox: true }, { id: 'Abholung', - name: 'Abholung in der Filiale', + name: t ? t('delivery.methods.pickup') : 'Abholung in der Filiale', description: '', price: '' } @@ -46,7 +47,7 @@ const DeliveryMethodSelector = ({ deliveryMethod, onChange, isPickupOnly, cartIt return ( <> - Versandart wählen + {t ? t('delivery.selector.title') : 'Versandart wählen'} @@ -132,10 +133,10 @@ const DeliveryMethodSelector = ({ deliveryMethod, onChange, isPickupOnly, cartIt border: '1px solid #2196f3' }}> - 💡 Versandkostenfrei ab 100€ Warenwert! + {t ? t('delivery.selector.freeShippingInfo') : '💡 Versandkostenfrei ab 100€ Warenwert!'} - Noch {remainingForFreeShipping.toFixed(2).replace('.', ',')}€ für kostenlosen Versand hinzufügen. + {t ? t('delivery.selector.remainingForFree', { amount: remainingForFreeShipping.toFixed(2).replace('.', ',') }) : `Noch ${remainingForFreeShipping.toFixed(2).replace('.', ',')}€ für kostenlosen Versand hinzufügen.`} )} @@ -149,10 +150,10 @@ const DeliveryMethodSelector = ({ deliveryMethod, onChange, isPickupOnly, cartIt border: '1px solid #2e7d32' }}> - 🎉 Glückwunsch! Sie erhalten kostenlosen Versand! + {t ? t('delivery.selector.congratsFreeShipping') : '🎉 Glückwunsch! Sie erhalten kostenlosen Versand!'} - Ihr Warenkorb von {cartValue.toFixed(2).replace('.', ',')}€ qualifiziert sich für kostenlosen Versand. + {t ? t('delivery.selector.cartQualifiesFree', { amount: cartValue.toFixed(2).replace('.', ',') }) : `Ihr Warenkorb von ${cartValue.toFixed(2).replace('.', ',')}€ qualifiziert sich für kostenlosen Versand.`} )} @@ -161,4 +162,4 @@ const DeliveryMethodSelector = ({ deliveryMethod, onChange, isPickupOnly, cartIt ); }; -export default DeliveryMethodSelector; \ No newline at end of file +export default withI18n()(DeliveryMethodSelector); \ No newline at end of file diff --git a/src/components/profile/OrderDetailsDialog.js b/src/components/profile/OrderDetailsDialog.js index 6f94c6c..10db854 100644 --- a/src/components/profile/OrderDetailsDialog.js +++ b/src/components/profile/OrderDetailsDialog.js @@ -148,7 +148,7 @@ const OrderDetailsDialog = ({ open, onClose, order }) => { - Gesamtsumme + {this.props.t ? this.props.t('cart.summary.total') : 'Gesamtsumme'} {currencyFormatter.format(total)} diff --git a/src/components/profile/OrderSummary.js b/src/components/profile/OrderSummary.js index 0d978a0..e8b53f4 100644 --- a/src/components/profile/OrderSummary.js +++ b/src/components/profile/OrderSummary.js @@ -44,20 +44,20 @@ const OrderSummary = ({ deliveryCost, cartItems = [] }) => { return ( - Bestellübersicht + {t ? t('cart.summary.title') : 'Bestellübersicht'}
- Waren (netto): + {t ? t('cart.summary.goodsNet') : 'Waren (netto):'} {currencyFormatter.format(cartVatCalculations.totalNet)} {deliveryCost > 0 && ( - Versandkosten (netto): + {t ? t('cart.summary.shippingNet') : 'Versandkosten (netto):'} {currencyFormatter.format(shippingNetPrice)} @@ -80,30 +80,30 @@ const OrderSummary = ({ deliveryCost, cartItems = [] }) => { )} - Gesamtsumme Waren: + {t ? t('cart.summary.totalGoods') : 'Gesamtsumme Waren:'} {currencyFormatter.format(cartVatCalculations.totalGross)} - Versandkosten: + {t ? t('cart.summary.shippingCosts') : 'Versandkosten:'} {deliveryCost === 0 && cartVatCalculations.totalGross < 100 && ( - (kostenlos ab 100€) + {t ? t('cart.summary.freeFrom100') : '(kostenlos ab 100€)'} )} {deliveryCost === 0 ? ( - kostenlos + {t ? t('cart.summary.free') : 'kostenlos'} ) : ( currencyFormatter.format(deliveryCost) )} - Gesamtsumme: + {t ? t('cart.summary.total') : 'Gesamtsumme:'} {currencyFormatter.format(totalGross)} diff --git a/src/i18n/locales/bg/auth.js b/src/i18n/locales/bg/auth.js index 36673a5..0cc795e 100644 --- a/src/i18n/locales/bg/auth.js +++ b/src/i18n/locales/bg/auth.js @@ -1,25 +1,25 @@ export default { - "login": "Вход", // Anmelden - "register": "Регистрация", // Registrieren - "logout": "Изход", // Abmelden - "profile": "Профил", // Profil - "email": "Имейл", // E-Mail - "password": "Парола", // Passwort - "confirmPassword": "Потвърдете паролата", // Passwort bestätigen - "forgotPassword": "Забравена парола?", // Passwort vergessen? - "loginWithGoogle": "Вход с Google", // Mit Google anmelden - "or": "ИЛИ", // ODER - "privacyAccept": "С натискането на „Вход с Google“ приемам", // Mit dem Click auf "Mit Google anmelden" akzeptiere ich die - "privacyPolicy": "Политиката за поверителност", // Datenschutzbestimmungen - "passwordMinLength": "Паролата трябва да е поне 8 символа", // Das Passwort muss mindestens 8 Zeichen lang sein - "newPasswordMinLength": "Новата парола трябва да е поне 8 символа", // Das neue Passwort muss mindestens 8 Zeichen lang sein + "login": "Вход", + "register": "Регистрация", + "logout": "Изход", + "profile": "Профил", + "email": "Имейл", + "password": "Парола", + "confirmPassword": "Потвърдете паролата", + "forgotPassword": "Забравена парола?", + "loginWithGoogle": "Вход с Google", + "or": "ИЛИ", + "privacyAccept": "С натискане на \"Вход с Google\" приемам", + "privacyPolicy": "Политиката за поверителност", + "passwordMinLength": "Паролата трябва да е поне 8 символа", + "newPasswordMinLength": "Новата парола трябва да е поне 8 символа", "menu": { - "profile": "Профил", // Profil - "myProfile": "Моят профил", // Mein Profil - "checkout": "Плащане", // Bestellabschluss - "orders": "Поръчки", // Bestellungen - "settings": "Настройки", // Einstellungen - "adminDashboard": "Админ панел", // Admin Dashboard - "adminUsers": "Админ потребители" // Admin Users + "profile": "Профил", + "myProfile": "Моят профил", + "checkout": "Плащане", + "orders": "Поръчки", + "settings": "Настройки", + "adminDashboard": "Админ табло", + "adminUsers": "Админ потребители" } }; diff --git a/src/i18n/locales/bg/cart.js b/src/i18n/locales/bg/cart.js index e5521a8..cfbf940 100644 --- a/src/i18n/locales/bg/cart.js +++ b/src/i18n/locales/bg/cart.js @@ -1,24 +1,39 @@ export default { - "title": "Количка", // Warenkorb - "empty": "празна", // leer - "addToCart": "Добави в количката", // In den Korb - "preorderCutting": "Предварителна поръчка като резник", // Als Steckling vorbestellen - "continueShopping": "Продължи пазаруването", // Weiter einkaufen - "proceedToCheckout": "Продължи към плащане", // Weiter zur Kasse - "productCount": "{{count}} {{count, plural, one {продукт} other {продукта}}}", // {{count}} {{count, plural, one {Produkt} other {Produkte}}} - "productSingular": "продукт", // Produkt - "productPlural": "продукта", // Produkte - "removeFromCart": "Премахни от количката", // Aus dem Warenkorb entfernen - "openCart": "Отвори количката", // Warenkorb öffnen - "availableFrom": "Наличен от {{date}}", // Ab {{date}} - "backToOrder": "← Обратно към поръчката", // ← Zurück zur Bestellung + "title": "Количка", + "empty": "празна", + "addToCart": "Добави в количката", + "preorderCutting": "Предварителна поръчка като резник", + "continueShopping": "Продължи пазаруването", + "proceedToCheckout": "Продължи към плащане", + "productCount": "{{count}} {{count, plural, one {продукт} other {продукта}}}", + "productSingular": "продукт", + "productPlural": "продукта", + "removeFromCart": "Премахни от количката", + "openCart": "Отвори количката", + "availableFrom": "Наличен от {{date}}", + "backToOrder": "← Обратно към поръчката", + "summary": { + "title": "Обобщение на поръчката", + "goodsNet": "Стоки (нето):", + "shippingNet": "Доставка (нето):", + "totalGoods": "Общо стоки:", + "shippingCosts": "Разходи за доставка:", + "total": "Общо:", + "totalWeight": "Общо тегло: {{weight}} кг", + "freeFrom100": "(безплатно над 100€)", + "free": "безплатно" + }, + "itemCount": { + "singular": "продукт", + "plural": "продукта" + }, "sync": { - "title": "Синхронизация на количката", // Warenkorb-Synchronisierung - "description": "Имате запазена количка във вашия акаунт. Моля, изберете как искате да продължите:", // Sie haben einen gespeicherten Warenkorb in ihrem Account. Bitte wählen Sie, wie Sie verfahren möchten: - "deleteServer": "Изтрий количката на сървъра", // Server-Warenkorb löschen - "useServer": "Използвай количката от сървъра", // Server-Warenkorb übernehmen - "merge": "Обедини количките", // Warenkörbe zusammenführen - "currentCart": "Вашата текуща количка", // Ihr aktueller Warenkorb - "serverCart": "Количка, запазена във вашия профил" // In Ihrem Profil gespeicherter Warenkorb + "title": "Синхронизация на количката", + "description": "Имате запазена количка в профила си. Моля, изберете как искате да продължите:", + "deleteServer": "Изтрий количката на сървъра", + "useServer": "Използвай количката от сървъра", + "merge": "Обедини количките", + "currentCart": "Вашата текуща количка", + "serverCart": "Количка, запазена във вашия профил" } }; diff --git a/src/i18n/locales/bg/locale.js b/src/i18n/locales/bg/locale.js index fd9f31b..44f0ddd 100644 --- a/src/i18n/locales/bg/locale.js +++ b/src/i18n/locales/bg/locale.js @@ -1,3 +1,3 @@ export default { - "code": "bg-BG" // de-DE + "code": "bg-BG" }; diff --git a/src/i18n/locales/bg/navigation.js b/src/i18n/locales/bg/navigation.js index 7a1bca3..50a1d3a 100644 --- a/src/i18n/locales/bg/navigation.js +++ b/src/i18n/locales/bg/navigation.js @@ -1,9 +1,9 @@ export default { - "home": "Начало", // Startseite - "aktionen": "Промоции", // Aktionen - "filiale": "Клон", // Filiale - "categories": "Категории", // Kategorien - "categoriesOpen": "Отвори категории", // Kategorien öffnen - "categoriesClose": "Затвори категории", // Kategorien schließen - "otherCategories": "Други категории" // Andere Kategorien + "home": "Начало", + "aktionen": "Промоции", + "filiale": "Клон", + "categories": "Категории", + "categoriesOpen": "Отвори категории", + "categoriesClose": "Затвори категории", + "otherCategories": "Други категории" }; diff --git a/src/i18n/locales/de/cart.js b/src/i18n/locales/de/cart.js index b66a861..7530101 100644 --- a/src/i18n/locales/de/cart.js +++ b/src/i18n/locales/de/cart.js @@ -12,6 +12,21 @@ export default { "openCart": "Warenkorb öffnen", "availableFrom": "Ab {{date}}", "backToOrder": "← Zurück zur Bestellung", + "summary": { + "title": "Bestellübersicht", + "goodsNet": "Waren (netto):", + "shippingNet": "Versandkosten (netto):", + "totalGoods": "Gesamtsumme Waren:", + "shippingCosts": "Versandkosten:", + "total": "Gesamtsumme:", + "totalWeight": "Gesamtgewicht: {{weight}} kg", + "freeFrom100": "(kostenlos ab 100€)", + "free": "kostenlos" + }, + "itemCount": { + "singular": "Produkt", + "plural": "Produkte" + }, "sync": { "title": "Warenkorb-Synchronisierung", "description": "Sie haben einen gespeicherten Warenkorb in ihrem Account. Bitte wählen Sie, wie Sie verfahren möchten:", diff --git a/src/i18n/locales/de/delivery.js b/src/i18n/locales/de/delivery.js index dc241c0..b141bf6 100644 --- a/src/i18n/locales/de/delivery.js +++ b/src/i18n/locales/de/delivery.js @@ -23,5 +23,12 @@ export default { "cutting14Days": "Lieferzeit: 14 Tage", "standard2to3Days": "Lieferzeit: 2-3 Tage", "supplier7to9Days": "Lieferzeit: 7-9 Tage" + }, + "selector": { + "title": "Versandart wählen", + "freeShippingInfo": "💡 Versandkostenfrei ab 100€ Warenwert!", + "remainingForFree": "Noch {{amount}}€ für kostenlosen Versand hinzufügen.", + "congratsFreeShipping": "🎉 Glückwunsch! Sie erhalten kostenlosen Versand!", + "cartQualifiesFree": "Ihr Warenkorb von {{amount}}€ qualifiziert sich für kostenlosen Versand." } }; \ No newline at end of file diff --git a/src/i18n/locales/de/product.js b/src/i18n/locales/de/product.js index ece278e..6763ca9 100644 --- a/src/i18n/locales/de/product.js +++ b/src/i18n/locales/de/product.js @@ -28,5 +28,11 @@ export default { }, "removeFiltersToSee": "Entferne Filter um Produkte zu sehen", "outOfStock": "Out of Stock", - "fromXProducts": "ab {{count}} Produkten" + "fromXProducts": "ab {{count}} Produkten", + "discount": { + "from3Products": "ab 3 Produkten", + "from5Products": "ab 5 Produkten", + "from7Products": "ab 7 Produkten", + "moreProductsMoreSavings": "Je mehr Produkte du auswählst, desto mehr sparst du!" + } }; \ No newline at end of file diff --git a/src/i18n/locales/en/cart.js b/src/i18n/locales/en/cart.js index 0d619c6..0673dee 100644 --- a/src/i18n/locales/en/cart.js +++ b/src/i18n/locales/en/cart.js @@ -12,6 +12,21 @@ export default { "openCart": "Open cart", // Warenkorb öffnen "availableFrom": "Available from {{date}}", // Ab {{date}} "backToOrder": "← Back to order", // ← Zurück zur Bestellung + "summary": { + "title": "Order summary", // Bestellübersicht + "goodsNet": "Goods (net):", // Waren (netto): + "shippingNet": "Shipping (net):", // Versandkosten (netto): + "totalGoods": "Total goods:", // Gesamtsumme Waren: + "shippingCosts": "Shipping costs:", // Versandkosten: + "total": "Total:", // Gesamtsumme: + "totalWeight": "Total weight: {{weight}} kg", // Gesamtgewicht: {{weight}} kg + "freeFrom100": "(free from €100)", // (kostenlos ab 100€) + "free": "free" // kostenlos + }, + "itemCount": { + "singular": "product", // Produkt + "plural": "products" // Produkte + }, "sync": { "title": "Cart synchronization", // Warenkorb-Synchronisierung "description": "You have a saved cart in your account. Please choose how you want to proceed:", // Sie haben einen gespeicherten Warenkorb in ihrem Account. Bitte wählen Sie, wie Sie verfahren möchten: diff --git a/src/i18n/locales/en/delivery.js b/src/i18n/locales/en/delivery.js index 2550503..d9b77c2 100644 --- a/src/i18n/locales/en/delivery.js +++ b/src/i18n/locales/en/delivery.js @@ -7,21 +7,28 @@ export default { }, "descriptions": { "standard": "Standard shipping", // Standardversand - "standardFree": "Standard shipping - FREE from 100€ order value!", // Standardversand - KOSTENLOS ab 100€ Warenwert! + "standardFree": "Standard shipping - FREE from €100 order value!", // Standardversand - KOSTENLOS ab 100€ Warenwert! "notAvailable": "Not selectable because one or more items can only be picked up", // nicht auswählbar weil ein oder mehrere Artikel nur abgeholt werden können "bulky": "For large and heavy items", // Für große und schwere Artikel "pickupOnly": "Pickup only" // nur Abholung }, "prices": { "free": "free", // kostenlos - "freeFrom100": "(free from 100€)", // (kostenlos ab 100€) - "dhl": "6.99 €", // 6,99 € - "dpd": "4.90 €", // 4,90 € - "sperrgut": "28.99 €" // 28,99 € + "freeFrom100": "(free from €100)", // (kostenlos ab 100€) + "dhl": "€6.99", // 6,99 € + "dpd": "€4.90", // 4,90 € + "sperrgut": "€28.99" // 28,99 € }, "times": { "cutting14Days": "Delivery time: 14 days", // Lieferzeit: 14 Tage "standard2to3Days": "Delivery time: 2-3 days", // Lieferzeit: 2-3 Tage "supplier7to9Days": "Delivery time: 7-9 days" // Lieferzeit: 7-9 Tage + }, + "selector": { + "title": "Choose shipping method", // Versandart wählen + "freeShippingInfo": "💡 Free shipping from €100 order value!", // 💡 Versandkostenfrei ab 100€ Warenwert! + "remainingForFree": "Add {{amount}}€ more for free shipping.", // Noch {{amount}}€ für kostenlosen Versand hinzufügen. + "congratsFreeShipping": "🎉 Congratulations! You get free shipping!", // 🎉 Glückwunsch! Sie erhalten kostenlosen Versand! + "cartQualifiesFree": "Your cart of {{amount}}€ qualifies for free shipping." // Ihr Warenkorb von {{amount}}€ qualifiziert sich für kostenlosen Versand. } }; diff --git a/src/i18n/locales/en/filters.js b/src/i18n/locales/en/filters.js index 8617f5c..c8a1c07 100644 --- a/src/i18n/locales/en/filters.js +++ b/src/i18n/locales/en/filters.js @@ -3,5 +3,5 @@ export default { "perPage": "per page", // pro Seite "availability": "Availability", // Verfügbarkeit "manufacturer": "Manufacturer", // Hersteller - "all": "All", // Alle + "all": "All" // Alle }; diff --git a/src/i18n/locales/en/pages.js b/src/i18n/locales/en/pages.js index b697b45..369c295 100644 --- a/src/i18n/locales/en/pages.js +++ b/src/i18n/locales/en/pages.js @@ -1,10 +1,10 @@ export default { "oilPress": { "title": "Borrow oil press", // Ölpresse ausleihen - "comingSoon": "Content coming soon...", // Inhalt kommt bald... + "comingSoon": "Content coming soon..." // Inhalt kommt bald... }, "thcTest": { "title": "THC test", // THC Test - "comingSoon": "Content coming soon...", // Inhalt kommt bald... + "comingSoon": "Content coming soon..." // Inhalt kommt bald... } }; diff --git a/src/i18n/locales/en/payment.js b/src/i18n/locales/en/payment.js index 573ddcf..99df648 100644 --- a/src/i18n/locales/en/payment.js +++ b/src/i18n/locales/en/payment.js @@ -4,5 +4,5 @@ export default { "orderCompleted": "🎉 Your order was completed successfully! You can now view your orders.", // 🎉 Ihre Bestellung wurde erfolgreich abgeschlossen! Sie können jetzt Ihre Bestellungen einsehen. "orderProcessing": "Your payment was processed successfully. The order will be completed automatically.", // Ihre Zahlung wurde erfolgreich verarbeitet. Die Bestellung wird automatisch abgeschlossen. "paymentError": "Your payment could not be processed. Please try again or choose another payment method.", // Ihre Zahlung konnte nicht verarbeitet werden. Bitte versuchen Sie es erneut oder wählen Sie eine andere Zahlungsmethode. - "viewOrders": "Go to my orders" // Zu meinen Bestellungen + "viewOrders": "View my orders" // Zu meinen Bestellungen }; diff --git a/src/i18n/locales/en/product.js b/src/i18n/locales/en/product.js index a216cc3..ec52d58 100644 --- a/src/i18n/locales/en/product.js +++ b/src/i18n/locales/en/product.js @@ -2,7 +2,7 @@ export default { "loading": "Loading product...", // Produkt wird geladen... "notFound": "Product not found", // Produkt nicht gefunden "notFoundDescription": "The product you are looking for does not exist or has been removed.", // Das gesuchte Produkt existiert nicht oder wurde entfernt. - "backToHome": "Back to home page", // Zurück zur Startseite + "backToHome": "Back to homepage", // Zurück zur Startseite "error": "Error", // Fehler "articleNumber": "Article number", // Artikelnummer "manufacturer": "Manufacturer", // Hersteller @@ -28,5 +28,11 @@ export default { }, "removeFiltersToSee": "Remove filters to see products", // Entferne Filter um Produkte zu sehen "outOfStock": "Out of stock", // Out of Stock - "fromXProducts": "from {{count}} products" // ab {{count}} Produkten + "fromXProducts": "from {{count}} products", // ab {{count}} Produkten + "discount": { + "from3Products": "from 3 products", // ab 3 Produkten + "from5Products": "from 5 products", // ab 5 Produkten + "from7Products": "from 7 products", // ab 7 Produkten + "moreProductsMoreSavings": "The more products you select, the more you save!" // Je mehr Produkte du auswählst, desto mehr sparst du! + } }; diff --git a/src/i18n/locales/en/tax.js b/src/i18n/locales/en/tax.js index 5e60172..a8fb3ca 100644 --- a/src/i18n/locales/en/tax.js +++ b/src/i18n/locales/en/tax.js @@ -4,7 +4,7 @@ export default { "vat19": "19% Value Added Tax", // 19% Mehrwertsteuer "vat19WithShipping": "19% Value Added Tax (incl. shipping)", // 19% Mehrwertsteuer (inkl. Versand) "totalNet": "Total net price", // Gesamtnettopreis - "totalGross": "Total gross price without shipping", // Gesamtbruttopreis ohne Versand + "totalGross": "Total gross price excluding shipping", // Gesamtbruttopreis ohne Versand "subtotal": "Subtotal", // Zwischensumme "incl7Vat": "incl. 7% VAT", // inkl. 7% MwSt. "inclVatWithFooter": "(incl. {{vat}}% VAT,*)", // (incl. {{vat}}% USt.,*) diff --git a/src/pages/GrowTentKonfigurator.js b/src/pages/GrowTentKonfigurator.js index 5a06320..a95bb2a 100644 --- a/src/pages/GrowTentKonfigurator.js +++ b/src/pages/GrowTentKonfigurator.js @@ -547,6 +547,7 @@ class GrowTentKonfigurator extends Component { 15% + {/* Note: Translation key would be: product.discount.from3Products */} ab 3 Produkten @@ -555,6 +556,7 @@ class GrowTentKonfigurator extends Component { 24% + {/* Note: Translation key would be: product.discount.from5Products */} ab 5 Produkten @@ -563,11 +565,13 @@ class GrowTentKonfigurator extends Component { 36% + {/* Note: Translation key would be: product.discount.from7Products */} ab 7 Produkten + {/* Note: Translation key would be: product.discount.moreProductsMoreSavings */} Je mehr Produkte du auswählst, desto mehr sparst du!