From 074c6f56250a1e39a19000f19ebb8cdceee3a528 Mon Sep 17 00:00:00 2001 From: Nemanja Popovic Date: Fri, 13 May 2016 12:55:34 +0200 Subject: [PATCH] 1.0.4 --- bower.json | 1 - config/karma.conf.js | 2 +- public/img/g_signInLogo-mobile.png | Bin 16188 -> 3874 bytes public/img/g_signInLogo.png | Bin 1783 -> 3874 bytes public/index.html | 2 + .../app/account/controllers/account-ctrl.js | 2 +- .../account/templates/addresses-dialog.html | 10 ++ public/js/app/auth/auth-index.js | 2 +- .../controllers/auth-modal-dialog-ctrl.js | 29 ++-- .../js/app/auth/directives/create-account.js | 7 - public/js/app/auth/services/auth-service.js | 71 ++++++---- .../js/app/auth/services/google-provider.js | 131 ++++++++++++++++++ public/js/app/auth/templates/auth.html | 10 +- public/js/app/auth/templates/signin.html | 2 +- .../app/checkout/controllers/checkout-ctrl.js | 37 +++-- .../app/checkout/templates/checkout-form.html | 7 +- .../services/order-details-svc.js | 4 + .../confirmation/templates/confirmation.html | 2 +- .../js/app/coupons/controllers/coupon-ctrl.js | 8 +- .../js/app/coupons/services/coupon-service.js | 45 +++++- .../controllers/browse-products-ctrl.js | 2 - .../directives/product-img-carousel.js | 93 +++++++++++++ .../products/templates/product-detail.html | 19 +-- .../templates/product-img-carousel.html | 22 +++ .../controllers/sidebar-navigation-ctrl.js | 2 +- .../shared/controllers/top-navigation-ctrl.js | 16 ++- public/js/app/shared/i18n/dev/dev_de.json | 25 +++- public/js/app/shared/i18n/dev/dev_en.json | 24 +++- public/js/app/shared/i18n/lang/lang_de.json | 2 +- public/js/app/shared/i18n/lang/lang_en.json | 2 +- public/js/app/shared/settings.js | 4 +- .../shared/templates/sidebar-navigation.html | 2 +- .../app/shared/templates/top-navigation.html | 2 +- .../app/shipping/services/shipping-service.js | 2 +- public/less/_navigation.less | 37 ++++- public/less/_product-img-carousel.less | 58 ++++++++ public/less/main.less | 1 + test/e2e/cart-tests.js | 11 +- test/e2e/checkout-tests.js | 14 +- test/e2e/coupon-tests.js | 14 +- test/unit/account/account-svc-spec.js | 2 +- test/unit/auth/auth-modal-dialog-ctrl-spec.js | 57 ++++---- test/unit/auth/auth-service-spec.js | 15 +- test/unit/checkout/checkout-ctrl-spec.js | 21 ++- .../confirmation/order-detail-svc-spec.js | 6 +- test/unit/coupons/coupon-ctrl-spec.js | 15 +- test/unit/coupons/coupon-service-spec.js | 117 +++++++++++----- test/unit/shared/top-navigation-ctrl-spec.js | 38 ++++- 48 files changed, 786 insertions(+), 209 deletions(-) create mode 100644 public/js/app/auth/services/google-provider.js create mode 100644 public/js/app/products/directives/product-img-carousel.js create mode 100644 public/js/app/products/templates/product-img-carousel.html create mode 100644 public/less/_product-img-carousel.less diff --git a/bower.json b/bower.json index 7db45b86d..19779e11b 100644 --- a/bower.json +++ b/bower.json @@ -30,7 +30,6 @@ "angular-cookie": "~4.0.2", "angular-bootstrap": "~0.11.0", "angular-xeditable": "~0.1.8", - "angular-directive.g-signin": "~0.1.2", "angular-ui-select": "~0.13.2", "angular-sanitize": "~1.3.0", "angular-touch": "~1.3.0", diff --git a/config/karma.conf.js b/config/karma.conf.js index e0b16c08d..320fb7b7d 100644 --- a/config/karma.conf.js +++ b/config/karma.conf.js @@ -28,7 +28,6 @@ module.exports = function(config){ 'public/js/vendor/angular-sanitize/angular-sanitize.js', 'public/js/vendor/angular-ui-select/dist/select.min.js', 'public/js/vendor/angular-ui-notification/dist/angular-ui-notification.min.js', - 'public/js/vendor/angular-directive.g-signin/google-plus-signin.js', 'public/js/vendor/algoliasearch/dist/algoliasearch.angular.js', // dummy config/bootstrap for testing @@ -146,6 +145,7 @@ module.exports = function(config){ 'public/js/app/auth/services/anon-auth-service.js', 'public/js/app/auth/services/auth-dialog-manager.js', 'public/js/app/auth/services/session-service.js', + 'public/js/app/auth/services/google-provider.js', 'public/js/app/shared/router.js', 'public/js/app/shared/http-proxy.js', diff --git a/public/img/g_signInLogo-mobile.png b/public/img/g_signInLogo-mobile.png index 0cdc9a506e9653e9f9b55c609a49970af296a194..89715168489e50feca5041161ffc2e41709de77d 100644 GIT binary patch literal 3874 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 literal 16188 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 diff --git a/public/img/g_signInLogo.png b/public/img/g_signInLogo.png index aa6ddc47105cc695fd9d44b241d9923264032083..89715168489e50feca5041161ffc2e41709de77d 100644 GIT binary patch literal 3874 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 literal 1783 zcmbVNc~BE)6c2|;0o$s8$5dS64An}K-A%{^0m-FwxEfKQMP!p~NQ7iVvXFqo5v7c` zAfOiTs0V6Cs@RssqZ|XuSg_C;>V;NEk*HXqDiaXGc7tI1hvOgJnceSu-}ip+{oXaZ zH9mIbEU$%L6bfZl)GD!zTt6e<<({tO*W%cDid+`pk|caJrov5#0i{GLF*yoEX_0hP zh9b(`tgC1kh2oZ>Nl3zzVxsv9OiM?cI&`yEPogQ5un4mrQDmSvAVS1Q&J8qc;sFt6K!FfCo2CFE7Qo@rp%6BQ#|Z{tQf7c$1`N_b9zTT12Vr39 zp_1MVN)=xwmQML1B>`29<9a@WVKSNMCMF#-q%$BMkH-LE1`N|k4Vp1mha+a1&bVaS zf*3U_3>rPI!E}JrA|l7KaRHTN`X&UeJ|^a^VV!X*QDn*(W<<|`=paL@b;dQRZNz2h zzck*dZA{43qYN2p#Ig+vvL31>(_k`p?|0->B-!xe3>va1NTwK5WNT3!9win~$s4*- zqvSIoE(d195~dIa*<1+X!f+&)BNcHVE-6bRr)|6o%VKdL9*ZmHz(OGeNmxRTgeT-O zLnIPNB9gG6X>63vh$A`$I_+0O`klgx-izgn3@CzQh6D`DobG^lHHKqGHKqqdB4B9@ zqR{A^@-k+;TfNE8XFHMeyr*gKo>g0uTr7$7Cq^a+`4~O7x6zTo_3Y#sE#2l)Ox$K(cgf=UI7sU6?^)f^w#}>2)^ILeshV&+ zgU;O_oEKM^!tcE>frTX&D2=eGXt?$LrL&jxLAmh(lTcFJSl_%An(-_I5O-qdwS z?Pqtjlx> + @@ -169,6 +170,7 @@ + diff --git a/public/js/app/account/controllers/account-ctrl.js b/public/js/app/account/controllers/account-ctrl.js index ad5ed4b18..5d69937da 100644 --- a/public/js/app/account/controllers/account-ctrl.js +++ b/public/js/app/account/controllers/account-ctrl.js @@ -34,7 +34,7 @@ angular.module('ds.account') // show more or less addresses. $scope.showAddressDefault = 6; - $scope.showAddressButtons = ($scope.addresses.length >= $scope.showAddressDefault); + $scope.showAddressButtons = ($scope.addresses.length > $scope.showAddressDefault); $scope.showAllAddressButton = true; $scope.showAddressFilter = $scope.showAddressDefault; diff --git a/public/js/app/account/templates/addresses-dialog.html b/public/js/app/account/templates/addresses-dialog.html index 55fffa2c2..5ac410e59 100644 --- a/public/js/app/account/templates/addresses-dialog.html +++ b/public/js/app/account/templates/addresses-dialog.html @@ -6,4 +6,14 @@
+
+ + +
\ No newline at end of file diff --git a/public/js/app/auth/auth-index.js b/public/js/app/auth/auth-index.js index 8a14042af..d0b958704 100644 --- a/public/js/app/auth/auth-index.js +++ b/public/js/app/auth/auth-index.js @@ -12,4 +12,4 @@ 'use strict'; -angular.module('ds.auth', ['ipCookie','directive.g+signin']); \ No newline at end of file +angular.module('ds.auth', ['ipCookie', 'ds.ygooglesignin']); \ No newline at end of file diff --git a/public/js/app/auth/controllers/auth-modal-dialog-ctrl.js b/public/js/app/auth/controllers/auth-modal-dialog-ctrl.js index 90fc4e1cc..a2a590a29 100644 --- a/public/js/app/auth/controllers/auth-modal-dialog-ctrl.js +++ b/public/js/app/auth/controllers/auth-modal-dialog-ctrl.js @@ -16,8 +16,8 @@ angular.module('ds.auth') * Controller for handling authentication related modal dialogs (signUp/signIn). */ .controller('AuthModalDialogCtrl', ['$rootScope', '$scope', 'AuthSvc', - 'settings', 'AuthDialogManager', 'loginOpts', 'showAsGuest', '$state', - function ($rootScope, $scope, AuthSvc, settings, AuthDialogManager, loginOpts, showAsGuest, $state) { + 'settings', 'AuthDialogManager', 'loginOpts', 'showAsGuest', '$state', 'YGoogleSignin', '$window', + function ($rootScope, $scope, AuthSvc, settings, AuthDialogManager, loginOpts, showAsGuest, $state, YGoogleSignin, $window) { $scope.user = { signup: {}, @@ -36,15 +36,10 @@ angular.module('ds.auth') $scope.googleClientId = settings.googleClientId; // determines "continue as guest" button: $scope.showAsGuest = showAsGuest; + $scope.cookiesEnabled = $window.navigator.cookieEnabled; AuthSvc.initFBAPI(); - - // react to event fired by goole+ signing directive - $scope.$on('event:google-plus-signin-success', function (event, authResult) { - if( authResult.status.method && authResult.status.method !== 'AUTO' ){ - AuthSvc.onGoogleLogIn( authResult[settings.configKeys.googleResponseToken]); - } - }); + AuthSvc.initGoogleAPI(); $scope.$on('authlogin:error', function(){ var response = { status: 0 }; @@ -60,8 +55,14 @@ angular.module('ds.auth') $scope.signup = function (authModel, signUpForm) { if (signUpForm.$valid) { AuthSvc.signup(authModel, loginOpts).then( - function () { - $scope.closeDialog(); + function (response) { + if (response.cookiesDisabled) { + $scope.showCreateAccountErrMsg = true; + $scope.user.signup.email = ''; + $scope.user.signup.password = ''; + } else { + $scope.closeDialog(); + } }, function (response) { $scope.errors.signup = AuthSvc.extractServerSideErrors(response); } @@ -100,6 +101,12 @@ angular.module('ds.auth') AuthSvc.faceBookLogin(); }; + $scope.googleLogin = function () { + YGoogleSignin.login().then(function (user) { + AuthSvc.onGoogleLogIn(user); + }); + }; + var unbind = $rootScope.$on('user:socialLogIn', function(eve, obj){ if(obj.loggedIn){ $scope.closeDialog(); diff --git a/public/js/app/auth/directives/create-account.js b/public/js/app/auth/directives/create-account.js index c0a845321..35a2596a2 100644 --- a/public/js/app/auth/directives/create-account.js +++ b/public/js/app/auth/directives/create-account.js @@ -46,13 +46,6 @@ angular.module('ds.auth') AuthSvc.faceBookLogin(); }; - // react to event fired by goole+ signing directive - $scope.$on('event:google-plus-signin-success', function (event, authResult) { - if( authResult.status.method && authResult.status.method !== 'AUTO' ){ - AuthSvc.onGoogleLogIn( authResult[settings.configKeys.googleResponseToken]); - } - }); - } }; }]); diff --git a/public/js/app/auth/services/auth-service.js b/public/js/app/auth/services/auth-service.js index eacf53561..9fadabfa9 100644 --- a/public/js/app/auth/services/auth-service.js +++ b/public/js/app/auth/services/auth-service.js @@ -16,8 +16,8 @@ * Encapsulates access to the "authentication" service. */ angular.module('ds.auth') - .factory('AuthSvc', ['AuthREST', '$rootScope', 'settings', 'TokenSvc', 'GlobalData', 'appConfig', '$state', '$q', 'SessionSvc', '$window', - function (AuthREST, $rootScope, settings, TokenSvc, GlobalData, appConfig, $state, $q, SessionSvc, $window) { + .factory('AuthSvc', ['AuthREST', '$rootScope', 'settings', 'TokenSvc', 'GlobalData', 'appConfig', '$state', '$q', 'SessionSvc', '$window', 'YGoogleSignin', + function (AuthREST, $rootScope, settings, TokenSvc, GlobalData, appConfig, $state, $q, SessionSvc, $window, YGoogleSignin) { function loginAndSetToken(user) { return AuthREST.Customers.all('login').customPOST(user).then(function (response) { @@ -117,27 +117,20 @@ angular.module('ds.auth') }, - onGoogleLogIn: function (gToken) { - - AuthenticationService.socialLogin('google', gToken).then(function () { + onGoogleLogIn: function (user) { + AuthenticationService.socialLogin('google', user.token).then(function () { $rootScope.$emit('user:socialLogIn', {loggedIn: true}); try { - window.gapi.client.load('plus', 'v1').then(function () { - window.gapi.client.plus.people.get({ - 'userId': 'me' - }).then(function (response) { - if (response.result) { - SessionSvc.afterSocialLogin({ - email: response.result.emails[0].value, - firstName: response.result.name.givenName, - lastName: response.result.name.familyName - }); - } - - }); + if (user.image) { + GlobalData.user.image = user.image; + } + SessionSvc.afterSocialLogin({ + email: user.email, + firstName: user.firstname, + lastName: user.lastname }); } catch (error) { - console.error('Unable to load Google+ user profile'); + console.error('Unable to load Google user profile'); } }, function () { $rootScope.$emit('user:socialLogIn', {loggedIn: false}); @@ -145,6 +138,22 @@ angular.module('ds.auth') }, + initGoogleAPI: function () { + YGoogleSignin.loadData(settings.googleClientId); + }, + + isGoogleLoggedIn: function (customer) { + if (customer && customer.accounts) { + for (var i = 0; i < customer.accounts.length; i++) { + if (customer.accounts[i].providerId === 'google') { + return true; + } + return false; + } + } + return false; + }, + fbParse: function () { if (typeof FB !== 'undefined') { FB.XFBML.parse(); @@ -183,13 +192,18 @@ angular.module('ds.auth') signup: function (user, context) { var def = $q.defer(); AuthREST.Customers.all('signup').customPOST(user).then(function () { - loginAndSetToken(user).then(function () { - settings.hybrisUser = user.email; - def.resolve({}); - SessionSvc.afterLoginFromSignUp(context); - }, function (error) { - def.reject(error); - }); + if ($window.navigator.cookieEnabled) { + loginAndSetToken(user).then(function () { + settings.hybrisUser = user.email; + def.resolve({}); + SessionSvc.afterLoginFromSignUp(context); + }, function (error) { + def.reject(error); + }); + } else { + def.resolve({cookiesDisabled: true}); + } + }, function (error) { def.reject(error); }); @@ -198,6 +212,11 @@ angular.module('ds.auth') /** Logs the customer out and removes the token cookie. */ signOut: function () { + if (GlobalData.customerAccount.accounts[0].providerId === 'google') { + YGoogleSignin.logout().then(function () { + GlobalData.user.image = settings.avatarImagePlaceholder; + }); + } AuthREST.Customers.all('logout').customGET('', {accessToken: TokenSvc.getToken().getAccessToken()}); // unset token after logout - new anonymous token will be generated for next request automatically TokenSvc.unsetToken(settings.accessCookie); diff --git a/public/js/app/auth/services/google-provider.js b/public/js/app/auth/services/google-provider.js new file mode 100644 index 000000000..f921c0a00 --- /dev/null +++ b/public/js/app/auth/services/google-provider.js @@ -0,0 +1,131 @@ +/** + * [y] hybris Platform + * + * Copyright (c) 2000-2016 hybris AG + * All rights reserved. + * + * This software is the confidential and proprietary information of hybris + * ("Confidential Information"). You shall not disclose such Confidential + * Information and shall use it only in accordance with the terms of the + * license agreement you entered into with hybris. + */ + +'use strict'; + +angular.module('ds.ygooglesignin', []) + .provider('YGoogleSignin', [ function() { + + this.$get = ['$q', function($q) { + + var GoogleObject = function() {}; + var user; + var url = 'https://apis.google.com/js/client:platform.js?onload=onLoad'; + + function isScriptExist () { + var scripts = document.getElementsByTagName('script'); + for (var i = 0; i < scripts.length; i++) { + if (scripts[i].src === url) { + return true; + } + } + return false; + } + + GoogleObject.prototype.loadData = function (googleClientId) { + var deferred = $q.defer(); + if (!isScriptExist()) { + var meta = document.createElement('meta'); + meta.name = 'google-signin-scope'; + meta.content = 'profile email'; + document.getElementsByTagName('head')[0].appendChild(meta); + + meta.name = 'google-signin-client_id'; + meta.content = googleClientId; + document.getElementsByTagName('head')[0].appendChild(meta); + + var params = { + /* jshint ignore:start */ + client_id: googleClientId, + cookie_policy: 'single_host_origin' + /* jshint ignore:end */ + }; + + var s, r, t; + r = false; + s = document.createElement('script'); + s.type = 'text/javascript'; + s.src = url; + t = document.getElementsByTagName('script')[0]; + t.parentNode.insertBefore(s, t); + s.onload = s.onreadystatechange = function() { + if (!r && (!this.readyState || this.readyState === 'complete')) { + r = true; + window.gapi.load('auth2', function() { + window.gapi.auth2.init(params).then(function () { + deferred.resolve(); + }); + }); + } + }; + } + + return deferred.promise; + }; + + GoogleObject.prototype.getUser = function (googleClientId) { + var deferred = $q.defer(); + this.loadData(googleClientId).then(function () { + var auth2 = window.gapi.auth2.getAuthInstance(); + if (auth2.isSignedIn.get()) { + var profile = auth2.currentUser.get().getBasicProfile(); + user = { + firstName: profile.Za, + lastName: profile.Na, + email: profile.hg, + image: profile.Ph, + }; + } else { + user = {}; + } + deferred.resolve(user); + }); + return deferred.promise; + }; + + GoogleObject.prototype.login = function () { + var params = { + scope: 'profile email' + }; + var deferred = $q.defer(); + window.gapi.load('auth2', function() { + var auth2 = window.gapi.auth2.getAuthInstance(); + auth2.signIn(params).then(function (response) { + user = { + firstname: response.wc.Za, + lastname: response.wc.Na, + email: response.wc.hg, + image: response.wc.Ph, + /* jshint ignore:start */ + token: response.hg.access_token + /* jshint ignore:end */ + }; + deferred.resolve(user); + }); + }); + return deferred.promise; + }; + + GoogleObject.prototype.logout = function () { + var deferred = $q.defer(); + var auth2 = window.gapi.auth2.getAuthInstance(); + auth2.signOut().then(function () { + deferred.resolve(); + }); + return deferred.promise; + }; + + return new GoogleObject(); + + } ]; + + }]); \ No newline at end of file diff --git a/public/js/app/auth/templates/auth.html b/public/js/app/auth/templates/auth.html index c44bd6766..646d011a1 100644 --- a/public/js/app/auth/templates/auth.html +++ b/public/js/app/auth/templates/auth.html @@ -19,11 +19,13 @@
+

{{'COOKIES_ENABLED_ERROR' | translate}}

+
-
+
@@ -42,9 +44,8 @@
-
-
{{'LOG_IN_WITH_GOOGLE_PLUS' | translate}}
- +
+
{{'LOG_IN_WITH_GOOGLE' | translate}}
@@ -58,6 +59,7 @@
+

{{'CREATE_ACCOUNT_ERROR' | translate}}

diff --git a/public/js/app/auth/templates/signin.html b/public/js/app/auth/templates/signin.html index 4db97d277..dd5d56b97 100644 --- a/public/js/app/auth/templates/signin.html +++ b/public/js/app/auth/templates/signin.html @@ -21,7 +21,7 @@ - + {{'FORGOT_PASSWORD' | translate }} diff --git a/public/js/app/checkout/controllers/checkout-ctrl.js b/public/js/app/checkout/controllers/checkout-ctrl.js index 87ef02b79..ef705211b 100644 --- a/public/js/app/checkout/controllers/checkout-ctrl.js +++ b/public/js/app/checkout/controllers/checkout-ctrl.js @@ -119,7 +119,7 @@ angular.module('ds.checkout') $scope.addresses = response; selectedBillingAddress = defaultAddress; selectedShippingAddress = defaultAddress; - if ($scope.isShipToCountry(defaultAddress.country) || !$scope.shippingConfigured) { + if ($scope.isShipToCountry(defaultAddress.country) || !$scope.shippingZones.length) { populateBillTo(defaultAddress); } updateShippingCost(defaultAddress); @@ -444,7 +444,7 @@ angular.module('ds.checkout') else if (target === $scope.order.shipTo) { selectedShippingAddress = address; $scope.$emit('localizedAddress:updated', address.country, 'shipping'); - updateShippingCost($scope.order.shipTo); + updateShippingCost(selectedShippingAddress); } addressModalInstance.close(); @@ -475,6 +475,8 @@ angular.module('ds.checkout') $scope.isDialog = true; $scope.showAddressDefault = 6; $scope.showAddressFilter = $scope.showAddressDefault; + $scope.showAllAddressButton = $scope.showAddressDefault < $scope.addresses.length; + $scope.showAllAddresses = false; $scope.target = target; $scope.addType = addType; }); @@ -487,6 +489,15 @@ angular.module('ds.checkout') addressModalInstance.close(); }; + $scope.toggleAddresses = function () { + if ($scope.showAddressFilter === $scope.addresses.length) { + $scope.showAddressFilter = $scope.showAddressDefault; + } else { + $scope.showAddressFilter = $scope.addresses.length; + } + $scope.showAllAddresses = $scope.showAddressFilter === $scope.addresses.length; + }; + $scope.$on('goToStep2', function(){ if( $scope.wiz.step1Done && $scope.wiz.step2Done){ $scope.wiz.step2Done = false; @@ -515,7 +526,7 @@ angular.module('ds.checkout') }; $scope.disableAddress = function (country) { - if (!$scope.isShipToCountry(country) && $scope.shippingConfigured && $scope.isDialog && $scope.addType !== 'billing') { + if (!$scope.isShipToCountry(country) && $scope.shippingZones.length && $scope.isDialog && $scope.addType !== 'billing') { return true; } else { return false; @@ -527,7 +538,7 @@ angular.module('ds.checkout') }; $scope.ifShipAddressApplicable = function (address, target) { - if ($scope.shippingConfigured && $scope.addType !== 'billing') { + if ($scope.shippingZones.length && $scope.addType !== 'billing') { if ($scope.isShipToCountry(address.country)) { $scope.selectAddress(address, target); } @@ -614,15 +625,15 @@ angular.module('ds.checkout') }); var updateShippingCost = function (shipToAddress) { - if (!shipToAddress.zipCode) { - shipToAddress.zipCode = ''; - } - var address = shipToAddress; - if (!address.zipCode) { - address.zipCode = ''; - } - var cart = $scope.cart; - if ($scope.isShipToCountry(shipToAddress.country)) { + + if ($scope.isShipToCountry(shipToAddress.country) && $scope.shippingConfigured) { + + if (!shipToAddress.zipCode) { + shipToAddress.zipCode = ''; + } + + var address = shipToAddress; + var cart = $scope.cart; var data = { 'cartTotal': { diff --git a/public/js/app/checkout/templates/checkout-form.html b/public/js/app/checkout/templates/checkout-form.html index 07110985a..a29edccae 100644 --- a/public/js/app/checkout/templates/checkout-form.html +++ b/public/js/app/checkout/templates/checkout-form.html @@ -119,11 +119,10 @@

{{'STEP_2_BILLING_INFORMATION' | translate}} -
- {{'DELIVERY_METHOD' | translate}} -
-
+
+ {{'DELIVERY_METHOD' | translate}} +
diff --git a/public/js/app/confirmation/services/order-details-svc.js b/public/js/app/confirmation/services/order-details-svc.js index 204ce8758..f71183985 100644 --- a/public/js/app/confirmation/services/order-details-svc.js +++ b/public/js/app/confirmation/services/order-details-svc.js @@ -55,6 +55,10 @@ angular.module('ds.confirmation') confirmationDetails.shipping = orderDetails.shipping; } + if (orderDetails.subTotalPrice) { + confirmationDetails.subTotalPrice = orderDetails.subTotalPrice; + } + if (orderDetails.tax) { confirmationDetails.tax = orderDetails.tax; } diff --git a/public/js/app/confirmation/templates/confirmation.html b/public/js/app/confirmation/templates/confirmation.html index d70e8d755..2278d3170 100644 --- a/public/js/app/confirmation/templates/confirmation.html +++ b/public/js/app/confirmation/templates/confirmation.html @@ -173,7 +173,7 @@

Create An Account

{{'SUBTOTAL' | translate}} - {{ confirmationDetails.totalPrice - confirmationDetails.shipping.total.amount + confirmationDetails.discountAmount - confirmationDetails.tax.total.amount | currency: currencySymbol}} + {{ confirmationDetails.subTotalPrice | currency: currencySymbol}} {{'SHIPPING' | translate}} diff --git a/public/js/app/coupons/controllers/coupon-ctrl.js b/public/js/app/coupons/controllers/coupon-ctrl.js index e1cf16739..64c06857c 100644 --- a/public/js/app/coupons/controllers/coupon-ctrl.js +++ b/public/js/app/coupons/controllers/coupon-ctrl.js @@ -103,10 +103,9 @@ angular.module('ds.coupon') }; var redeemCouponError = function (couponError) { - $scope.coupon.error = couponError; - if (couponError.status === 400) { - $scope.couponErrorMessage = couponError.data.details[0].message; - } + var errorMessages = CouponSvc.redeemCouponError(couponError); + // Just display the first coupon error message + $scope.couponErrorMessage = errorMessages[0]; }; var isValidCouponCode = function (code) { @@ -116,5 +115,4 @@ angular.module('ds.coupon') } return true; }; - }]); diff --git a/public/js/app/coupons/services/coupon-service.js b/public/js/app/coupons/services/coupon-service.js index 9f2415d94..8173f52db 100644 --- a/public/js/app/coupons/services/coupon-service.js +++ b/public/js/app/coupons/services/coupon-service.js @@ -16,15 +16,50 @@ * Provides a variety of coupon: access, validation, and redemptions services. */ angular.module('ds.coupon') - .factory('CouponSvc', ['CartSvc', 'CouponREST', - function(CartSvc, CouponREST){ + .factory('CouponSvc', ['CartSvc', 'CouponREST', '$translate', + function(CartSvc, CouponREST, $translate) { return { - getCoupon: function (couponCode) { + getCoupon: function(couponCode) { return CouponREST.Coupon.one('coupons', couponCode).get(); - } + }, + + redeemCouponError: function(couponError) { + if (couponError.status === 400) { + // Look for the COUPON error(s) by code, defined here: + //https://devportal.yaas.io/services/coupon/latest/index.html#ValidateCouponRedemption + // This is built to work with multiple coupon errors + var filteredMessages = couponError.data.details + .filter(function(msg) { + if ( + msg.type === 'coupon_not_active' || + msg.type === 'coupon_expired' || + msg.type === 'coupon_redemptions_exceeded' || + msg.type === 'coupon_redemption_forbidden' || + msg.type === 'coupon_order_total_too_low' || + msg.type === 'coupon_currency_incorrect' || + msg.type === 'coupon_discount_currency_incorrect' || + msg.type === 'coupon_discount_amount_incorrect' + ) { + return true; + } + else { + return false; + } + }) + .map(function(msg) { + return $translate.instant(msg.type.toUpperCase()); + }); + + return filteredMessages; + } + else { + var error = $translate.instant('COUPON_ERROR'); + return [error]; + } + } }; - }]); \ No newline at end of file + }]); \ No newline at end of file diff --git a/public/js/app/products/controllers/browse-products-ctrl.js b/public/js/app/products/controllers/browse-products-ctrl.js index 96384e678..a399146db 100644 --- a/public/js/app/products/controllers/browse-products-ctrl.js +++ b/public/js/app/products/controllers/browse-products-ctrl.js @@ -316,6 +316,4 @@ angular.module('ds.products') $scope.refineContainerShowing = !$scope.refineContainerShowing; }; - $scope.setSortedPage(); - }]); diff --git a/public/js/app/products/directives/product-img-carousel.js b/public/js/app/products/directives/product-img-carousel.js new file mode 100644 index 000000000..679d62522 --- /dev/null +++ b/public/js/app/products/directives/product-img-carousel.js @@ -0,0 +1,93 @@ +/** + * [y] hybris Platform + * + * Copyright (c) 2000-2016 hybris AG + * All rights reserved. + * + * This software is the confidential and proprietary information of hybris + * ("Confidential Information"). You shall not disclose such Confidential + * Information and shall use it only in accordance with the terms of the + * license agreement you entered into with hybris. + */ + + (function () { + 'use strict'; + + angular.module('ds.products') + .directive('productImgCarousel', ['$timeout', function ($timeout) { + + function templateLink (scope, elem) { + + scope.currentIndex = 0; + + var container = elem[0].querySelector('.main-image-container'); + container.style.height = container.offsetWidth + 'px'; + + var positionImages = function () { + var images = elem[0].querySelector('.product-images').children; + for (var i = 0; i < images.length; i++) { + if (images[i].className.indexOf('product-image') > -1) { + images[i].style.transform = 'translateX(' + i * 100 + '%)'; + } + } + }; + + var positionMobileThumbs = function () { + var mobileThumbs = elem[0].querySelector('.mobileThumbs'); + var count = mobileThumbs.children.length; + var width = mobileThumbs.children[0].offsetWidth; + var translateValue = count * width / 2; + mobileThumbs.style.transform = 'translateX(-' + translateValue + 'px)'; + }; + + function FShandler() { + if (!document.fullscreen && !document.mozFullScreen && !document.webkitIsFullScreen && !document.msFullscreenElement) { + positionImages(); + } + } + + window.addEventListener('resize', function() { + container.style.height = container.offsetWidth + 'px'; + positionMobileThumbs(); + }, true); + + document.addEventListener('fullscreenchange', FShandler, false); + document.addEventListener('webkitfullscreenchange', FShandler, false); + document.addEventListener('mozfullscreenchange', FShandler, false); + document.addEventListener('MSFullscreenChange', FShandler, false); + + scope.moveCarousel = function (index) { + elem[0].querySelector('.product-images').style.transform = 'translateX(-' + index * 100 + '%)'; + scope.currentIndex = index; + }; + + scope.enlargeImage = function () { + var image = elem[0].querySelector('.product-images').children[scope.currentIndex]; + image.style.transform = 'translateX(0)'; + if (image.requestFullscreen) { + image.requestFullscreen(); + } else if (image.msRequestFullscreen) { + image.msRequestFullscreen(); + } else if (image.mozRequestFullScreen) { + image.mozRequestFullScreen(); + } else if (image.webkitRequestFullscreen) { + image.webkitRequestFullscreen(); + } + }; + + $timeout(positionImages, 0); + $timeout(positionMobileThumbs, 0); + } + + + return { + restrict: 'E', + templateUrl: 'js/app/products/templates/product-img-carousel.html', + link: templateLink, + scope: { + images: '=' + } + }; + + }]); +})(); \ No newline at end of file diff --git a/public/js/app/products/templates/product-detail.html b/public/js/app/products/templates/product-detail.html index 77a86c34c..4aa2e9a55 100644 --- a/public/js/app/products/templates/product-detail.html +++ b/public/js/app/products/templates/product-detail.html @@ -8,22 +8,9 @@
- @@ -85,7 +72,7 @@

{{product.product.name}}

- +
diff --git a/public/js/app/products/templates/product-img-carousel.html b/public/js/app/products/templates/product-img-carousel.html new file mode 100644 index 000000000..6702af3a7 --- /dev/null +++ b/public/js/app/products/templates/product-img-carousel.html @@ -0,0 +1,22 @@ + \ No newline at end of file diff --git a/public/js/app/shared/controllers/sidebar-navigation-ctrl.js b/public/js/app/shared/controllers/sidebar-navigation-ctrl.js index cb33f51a0..2f2ac3aa2 100644 --- a/public/js/app/shared/controllers/sidebar-navigation-ctrl.js +++ b/public/js/app/shared/controllers/sidebar-navigation-ctrl.js @@ -29,7 +29,7 @@ angular.module('ds.shared') $scope.user = GlobalData.user; $scope.categories = CategorySvc.getCategoriesFromCache(); - + $scope.GlobalData = GlobalData; // binds logo in sidebar $scope.store = GlobalData.store; diff --git a/public/js/app/shared/controllers/top-navigation-ctrl.js b/public/js/app/shared/controllers/top-navigation-ctrl.js index 7eceddf71..89cde6538 100644 --- a/public/js/app/shared/controllers/top-navigation-ctrl.js +++ b/public/js/app/shared/controllers/top-navigation-ctrl.js @@ -14,9 +14,9 @@ angular.module('ds.shared') /** Handles interactions with the top menu (mobile menu, mobile search, mobile cart & full screen cart icon) */ - .controller('TopNavigationCtrl', ['$scope', '$rootScope', '$state', '$controller', '$timeout', 'GlobalData', 'CartSvc', 'AuthSvc', 'AuthDialogManager', 'CategorySvc', 'settings', + .controller('TopNavigationCtrl', ['$scope', '$rootScope', '$state', '$controller', '$timeout', 'GlobalData', 'CartSvc', 'AuthSvc', 'AuthDialogManager', 'CategorySvc', 'settings', 'YGoogleSignin', - function ($scope, $rootScope, $state, $controller, $timeout, GlobalData, CartSvc, AuthSvc, AuthDialogManager, CategorySvc, settings) { + function ($scope, $rootScope, $state, $controller, $timeout, GlobalData, CartSvc, AuthSvc, AuthDialogManager, CategorySvc, settings, YGoogleSignin) { $scope.GlobalData = GlobalData; $scope.categories = CategorySvc.getCategoriesFromCache(); @@ -24,6 +24,18 @@ angular.module('ds.shared') $scope.isAuthenticated = AuthSvc.isAuthenticated; $scope.user = GlobalData.user; + if (AuthSvc.isGoogleLoggedIn(GlobalData.customerAccount)) { + YGoogleSignin.getUser(settings.googleClientId).then(function (googleUser) { + if (googleUser.image) { + $scope.user.image = googleUser.image; + } else { + $scope.user.image = settings.avatarImagePlaceholder; + } + }); + } else { + $scope.user.image = settings.avatarImagePlaceholder; + } + var unbindCats = $rootScope.$on('categories:updated', function(eve, obj){ if(!$scope.categories || obj.source === settings.eventSource.languageUpdate){ $scope.categories = obj.categories; diff --git a/public/js/app/shared/i18n/dev/dev_de.json b/public/js/app/shared/i18n/dev/dev_de.json index 44cda276c..9fa3df8f3 100644 --- a/public/js/app/shared/i18n/dev/dev_de.json +++ b/public/js/app/shared/i18n/dev/dev_de.json @@ -238,6 +238,25 @@ "COUPON_CODE": "Couponcode hinzufügen", //XMSG "COUPON_ERROR": "Coupon nicht gültig.", + + //XMSG + "COUPON_NOT_ACTIVE": "The coupon is not active", + //XMSG + "COUPON_EXPIRED": "The coupon is not active", + //XMSG + "COUPON_REDEMPTIONS_EXCEEDED": "Coupon has reached maximum number of redemptions", + //XMSG + "COUPON_REDEMPTION_FORBIDDEN": "Current customer is not allowed to redeem the coupon", + //XMSG + "COUPON_ORDER_TOTAL_TOO_LOW": "The order value is too low for this coupon", + //XMSG + "COUPON_CURRENCY_INCORRECT": "Currency inconsistent with coupon", + //XMSG + "COUPON_DISCOUNT_CURRENCY_INCORRECT": "Discount currency invalid inconsistent coupon", + //XMSG + "COUPON_DISCOUNT_AMOUNT_INCORRECT": "Discount amount exceeds allowed coupon discount", + + //XMSG "COUPON_ERR_CURRENCY": "Währung für Coupon ungültig", //XMSG @@ -382,7 +401,7 @@ //XBUT "SIGN_IN_WITH_FACEBOOK": "Über Facebook anmelden", //XBUT - "LOG_IN_WITH_GOOGLE_PLUS": "Über Google+ anmelden", + "LOG_IN_WITH_GOOGLE": "Über Google anmelden", //XBUT "MY_ACCOUNT": "Mein Konto", //XBUT @@ -544,6 +563,10 @@ //XMSG "CHECK_EMAIL_INSTRUCT_CHANGE_EMAIL": "...and follow the link to confirm change of your email. The link will be valid for 24 hours.", //XMSG + "COOKIES_ENABLED_ERROR": "Cookies must be enabled in your browser to sign in. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.", + //XMSG + "CREATE_ACCOUNT_ERROR": "Customer account was created successfully, but cookies must be enabled to login. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.", + //XMSG "PASSWORD_REQUIRED": "Das Kennwort muss mindestens 6 Zeichen haben.", //XMSG "PASSWORDS_MUST_MATCH": "Die Kennwörter müssen übereinstimmen.", diff --git a/public/js/app/shared/i18n/dev/dev_en.json b/public/js/app/shared/i18n/dev/dev_en.json index 0a1e58aae..31d7e71c1 100644 --- a/public/js/app/shared/i18n/dev/dev_en.json +++ b/public/js/app/shared/i18n/dev/dev_en.json @@ -236,6 +236,24 @@ "COUPON_NOT_APPLIED": "Not Applied", //XLNK "COUPON_CODE": "Add Coupon Code", + + //XMSG + "COUPON_NOT_ACTIVE": "The coupon is not active", + //XMSG + "COUPON_EXPIRED": "The coupon is not active", + //XMSG + "COUPON_REDEMPTIONS_EXCEEDED": "Coupon has reached maximum number of redemptions", + //XMSG + "COUPON_REDEMPTION_FORBIDDEN": "Current customer is not allowed to redeem the coupon", + //XMSG + "COUPON_ORDER_TOTAL_TOO_LOW": "The order value is too low for this coupon", + //XMSG + "COUPON_CURRENCY_INCORRECT": "Currency inconsistent with coupon", + //XMSG + "COUPON_DISCOUNT_CURRENCY_INCORRECT": "Discount currency invalid inconsistent coupon", + //XMSG + "COUPON_DISCOUNT_AMOUNT_INCORRECT": "Discount amount exceeds allowed coupon discount", + //XMSG "COUPON_ERROR": "Coupon not valid.", //XMSG @@ -382,7 +400,7 @@ //XBUT "SIGN_IN_WITH_FACEBOOK": "Sign in with Facebook", //XBUT - "LOG_IN_WITH_GOOGLE_PLUS": "Sign in with Google +", + "LOG_IN_WITH_GOOGLE": "Sign in with Google", //XBUT "MY_ACCOUNT": "My Account", //XBUT @@ -546,6 +564,10 @@ //XMSG "CHECK_EMAIL_INSTRUCT_CHANGE_EMAIL": "...and follow the link to confirm change of your email. The link will be valid for 24 hours.", //XMSG + "COOKIES_ENABLED_ERROR": "Cookies must be enabled in your browser to sign in. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.", + //XMSG + "CREATE_ACCOUNT_ERROR": "Customer account was created successfully, but cookies must be enabled to login. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.", + //XMSG "PASSWORD_REQUIRED": "Password with 6 character minimum required.", //XMSG "PASSWORDS_MUST_MATCH": "Passwords must match.", diff --git a/public/js/app/shared/i18n/lang/lang_de.json b/public/js/app/shared/i18n/lang/lang_de.json index 6053b1b25..b8a692564 100644 --- a/public/js/app/shared/i18n/lang/lang_de.json +++ b/public/js/app/shared/i18n/lang/lang_de.json @@ -1 +1 @@ -{"en":"Englisch","de":"Deutsch","fr":"Französisch","es":"Spanisch","BACK_TO_CHECKOUT":"Zurück zur Kasse","CHECKOUT":"Kasse","CANCEL":"Cancel","CONTINUE_SHOPPING":"Einkauf fortsetzen","NOTE":"Note","ADD_NOTE":"Add Note","EDIT_NOTE":"Edit Note","DELETE_NOTE":"Delete Note","UNABLE_TO_SAVE_NOTE":"Unable to save note","SHOP":"Einkaufen","EST_ORDER_TOTAL":"Geschätzte Bestellsumme","PREVIEW_ORDER":"Preview Order","PAYMENT_REVIEW":"Payment & Review","PLEASE_CORRECT_MESSAGE_ERRORS":"Something went wrong, please try again","FREE_SHIPPING":"Versand und Rücksendung in den USA kostenlos","ITEM":"Position","ITEM_PRICE":"Positionspreis","TOTAL_PRICE":"Gesamtpreis","CART_UNAVAILABLE":"Der Warenkorb ist zurzeit nicht verfügbar. Versuchen Sie es noch einmal.","CART_EMPTY":"Ihr Warenkorb ist leer","CART_ITEM_UPDATE_ERROR":"Die Aktualisierung war nicht erfolgreich. Versuchen Sie es noch einmal.","ESTIMATE_TAX":"Steuern schätzen","APPLY":"Anwenden","ESTIMATE_TAX_ERROR":"Felder \"Postleitzahl\" und \"Ländercode\" sind erforderlich","ADDITIONAL_SHIPPING_OPTIONS":"Additional shipping options are available in checkout.","SELECT_A_COUNTRY":"Land auswählen","ADDRESS":"Adresse","ADDRESS_LINE_1":"Adresszeile 1","ADDRESS_LINE_2":"Adresszeile 2","CANT_BE_SHIPPED":"Items cannot be shipped to this location","BILLING_ADDRESS":"Rechnungsadresse","CITY":"Ort","PROVINCE":"Provinz/Bundesland","CONTINUE":"Weiter","COST":"Cost","COUNTRY":"Land","CREDIT_CARD_NUMBER":"Kreditkartennummer","CVC_NUMBER":"Prüfnummer","DELIVERY_METHOD":"Liefermethode","EMAIL":"E-Mail","EDIT":"Bearbeiten","FIRST_NAME":"Vorname","FREE_STANDARD_SHIPPING":"Kostenloser Standardversand","FLAT_RATE_SHPPING":"Pauschale","INVALID_EXPIRATION_DATE":"Ungültiges Ablaufdatum","ITEMS":"Positionen","LAST_NAME":"Nachname","LAST_NAME_REQUIRED":"Nachname erforderlich","METHOD":"Versandart","MIDDLE_NAME":"Zweiter Vorname","MONTH":"Monat","NAME":"Name","NO_ITEMS_IN_CART":"Ihr Warenkorb enthält keine Positionen.","OPTIONAL":"Optional","ORDER_DETAILS":"Bestelldetails","ORDER_DATE":"Bestelldatum","ORDER_PENDING":"Einen Augenblick bitte... Ihre Bestellung wird ausgeführt","ORDER_TOTAL":"Bestellsumme","PAYMENT":"Zahlung","PHONE_REQUIRED":"Telefon erforderlich","PLACE_ORDER":"Bestellen","PLACED_AT":"Bestellt am","PLEASE_CORRECT_ERRORS":"Korrigieren Sie vor dem Bestellen die oben aufgeführten Fehler.","PLEASE_CORRECT_ERRORS_PREVIEW":"Please correct the errors above before previewing your order.","PLEASE_CORRECT_ERRORS_ADDRESS":"Please correct the address details before previewing your order.","PLEASE_ENTER_VALID_CC":"Geben Sie eine gültige Kreditkartennummer ein","PLEASE_ENTER_VALID_CODE":"Geben Sie einen gültigen Code ein","PLEASE_ENTER_VALID_EMAIL":"Geben Sie eine gültige E-Mail-Adresse im Format name@beispiel.com ein","REQUIRED":"Erforderlich","SAME_AS_SHIPPING_ADDRESS":"Same As Shipping Address","SECURE_CHECKOUT":"Sichere Kaufabwicklung","SELECT_FROM_ADDRESS_BOOK":"Aus Adressbuch auswählen","ADDRESS_BOOK":"Address Book","SHIPPING":"Versand","SHIPPING_ADDRESS":"Lieferadresse","SIMPLE_3_STEP_CHECKOUT":"Einfache Kaufabwicklung in 3 Schritten","SIMPLE_4_STEP_CHECKOUT":"Einfache Kaufabwicklung in 4 Schritten","STATE":"Bundesstaat","STEP_1_MY_DETAILS":"Schritt 1: Meine Details","STEP_2_BILLING_INFORMATION":"Schritt 2: Billing Information","STEP_3_PAYMENT":"Schritt 3: Zahlung","STEP_4_REVIEW_ORDER":"Schritt 4: Bestellung prüfen","SUBTOTAL":"Zwischensumme","DISCOUNT":"Rabatt","TAX":"Steuern","TOTAL":"Summe","YEAR":"Jahr","DEFAULT":"Standard","DISTRICT":"Stadtbezirk","STREET_NAME":"Straße/Hausnummer","BUILDING_NAME":"Gebäudename/-nummer","ROOM_NUMBER":"Zimmernummer","PREFECTURE":"Präfektur","POSTAL_CODE":"Postleitzahl","ZIP":"Postleitzahl","CITY_VILLAGE":"Stadt/Dorf/Stadtbezirk","SUBAREA":"Stadtteil","FURTHER_SUBAREA":"Stadtteilabschnitt, Blocknummer/Hausnummer","COUPON_APPLY":"Anwenden","COUPON_APPLIED":"Angewendet","COUPON_NOT_APPLIED":"Not Applied","COUPON_CODE":"Couponcode hinzufügen","COUPON_ERROR":"Coupon nicht gültig.","COUPON_ERR_CURRENCY":"Währung für Coupon ungültig","COUPON_ERR_ANONYMOUS":"Melden Sie sich an, um den Couponcode zu verwenden","COUPON_ERR_UNAVAILABLE":"Coupon nicht mehr verfügbar","COUPON_MINIMUM_NOT_MET":"Aktuelle Bestellsumme entspricht nicht der erforderlichen Mindestsumme für diesen Coupon","COUPON_NOT_VALID":"Coupon nicht gültig","COUPONS":"Coupon Code","A_COPY_OF_YOUR_ORDER_DETAILS_HAS_BEEN_SENT_TO":"

Eine Kopie Ihrer Bestelldetails wurde gesendet an {{emailAddress}}

","ENJOY_YOUR_ITEMS":"Viel Freude an Ihrem Einkauf!","FOR_YOUR_ORDER":"für Ihre Bestellung!","ITEM_IN_YOUR_ORDER":"Position in Ihrer Bestellung","ITEMS_IN_YOUR_ORDER":"Positionen in Ihrer Bestellung","QUESTIONS":"

Bei Fragen kontaktieren Sie uns unter {{contactInfo}}.

","ORDER":"Bestellung","RETURN_TO_SHOPPING":"Zurück zum Einkauf","SUCCESS":"Vorgang war erfolgreich!","ACCOUNT_SUCCESS":"Ihr Konto wurde erfolgreich angelegt.","THANK_YOU":"Vielen Dank","THANK_YOU_FOR_YOUR_ORDER":"Vielen Dank
für Ihre Bestellung!","THE_SHIPMENT_IS_SCHEDULED_TO_ARRIVE_AT_THE_FOLLOWING_LOCATION":"Die Bestellung wird geliefert an","YOUR_ORDER_IS":"Ihre Bestellnummer lautet ","ONE_MORE_STEP":"Nur ein weiterer Schritt zum Anlegen eines Kontos mit schneller Kaufabwicklung und einem einfachen Zugriff auf frühere Bestellungen","SKU":"Lagermengeneinheit","YOUR_CHECKOUT_HAS_BEEN_ACCEPTED_ORDER_NOT_CREATED":"Ihre Kaufabwicklung wurde angenommen, aber die Bestellung wurde nicht angelegt. Verwenden Sie zur Verfolgung folgende Kaufabwicklungs-ID-Nummer: ","YOUR_ORDER_WILL_BE_CREATED":"Ihre Bestellung wird so schnell wie möglich angelegt.","PRODUCTS":"Produkte","BACK_TO":"Zurück zu","REGION":"Region","SHIPPING_INFORMATION":"Shipping information","SHIPPING_ZONE":"Shipping Zone","STANDARD_SHIPPING":"Standard Shipping","SHIPPING_RATE":"Shipping Rate","ZONE":"Zone","BUY":"Kaufen","ADD_TO_CART":"In den Warenkorb","PRODUCTS_ADDED_TO_CART":"product(s) successfully added to your cart","PRODUCT_DESCRIPTION":"Produktbeschreibung","PRODUCT_DETAILS":"Produktdetails","OUT_OF_STOCK":"nicht vorrätig","QTY":"Menge","INCLUDES":"Includes","NO_LIMIT":"No Limit","DESTINATION_COUNTRY":"Destination country(s)","ERROR_ADDING_TO_CART":"Hinzufügen zum Warenkorb war nicht erfolgreich. Versuchen Sie es noch einmal.","NEWEST":"neueste","OF":"von","PRICE_HIGH_LOW":"Preis (höchster - niedrigster)","PRICE_LOW_HIGH":"Preis (niedrigster - höchster)","SORT_BY":"Sortieren nach","VIEWING":"Anzeigen","PRODUCTS_FROM_TO":"
{{productsFrom}}-{{productsTo}} von {{total}}
","ALL_PRODUCTS":"Alle Produkte","EMPTY_MSG":"Demo-Filiale - demnächst verfügbar","LANGUAGES":"Sprachen","SELECT_LANGUAGE":"Sprache auswählen","SIGN_OUT":"Abmelden","SIGN_IN":"Anmelden","SIGN_IN_WITH_FACEBOOK":"Über Facebook anmelden","LOG_IN_WITH_GOOGLE_PLUS":"Über Google+ anmelden","MY_ACCOUNT":"Mein Konto","CREATE_ACCOUNT":"Konto anlegen","CONTINUE_AS_GUEST":"Weiter als Gast","UPDATE_ACCOUNT_DETAILS":"Kontodetails aktualisieren","UPDATE_EMAIL":"E-Mail aktualisieren","ADD":"Hinzufügen","REGION_PREFERENCES":"Regionspräferenzen","NEW_EMAIL":"Neue E-Mail","CURRENT_EMAIL":"Current Email","ADDRESSBOOK":"Adressbuch","NO_ADDRESSES":"Sie haben keine Adressen gespeichert.","FAIL_ADDRESSES":"Die Adressen sind nicht verfügbar. Versuchen Sie es später noch einmal.","ADD_ADDRESS":"Adresse hinzufügen","CLOSE":"Schließen","COMPANY_NAME":"Unternehmen","CONFIRM_DELETE_ADDRESS_TITLE":"Delete Address","CONFIRM_ADDRESS_REMOVAL":"Are you sure you want to delete this address?","FULL_NAME":"Vollständiger Name","CONTACT_PHONE":"Telefon","FAIL_CUSTOMER_DETAILS":"Die Kundendetails sind nicht verfügbar. Versuchen Sie es später noch einmal.","DATE":"Datum","NAME_REQUIRED":"Name erforderlich","STREET":"Straße","STREET_NUMBER":"Hausnummer","WELCOME":"Willkommen","NOT_SET":"Nicht festgelegt","ORDER_HISTORY":"Bestellhistorie","ORDER_NUMBER":"Bestellnummer","ORDER_STATUS":"Bestellstatus","FAIL_ORDER":"Die Bestellungen sind nicht verfügbar. Versuchen Sie es später noch einmal.","NO_ORDERS":"Sie haben keine Bestellungen gespeichert","ORDER_ITEM_COUNT":"{{number}} Position","ORDER_ITEMS_COUNT":"{{number}} Positionen","SHIPPING_DETAILS":"VERSANDDETAILS","SAVE":"Sichern","UPDATE_PASSWORD":"Kennwort aktualisieren","CURRENT_PASSWORD":"Aktuelles Kennwort","NEW_PASSWORD":"Neues Kennwort","CONFIRM_NEW_PASSWORD":"Neues Kennwort bestätigen","PASSWORDS_NO_MATCH":"Kennwörter stimmen nicht überein","WRONG_CURRENT_PASSWORD":"Geben Sie ein korrektes aktuelles Kennwort an.","PASSWORD_TOO_SHORT":"Kennwort zu kurz","SHOW_ALL":"Alles anzeigen","SHOW_LESS":"Weniger anzeigen","ITEMS_IN_ORDER":"Positionen in Bestellung","SAVE_ADDRESS_ERROR":"Es ist ein Fehler aufgetreten; die Aktualisierungen wurden nicht gesichert. Sichern Sie die Aktualisierungen.","REMOVE_ADDRESS_ERROR":"Löschen der Adresse fehlgeschlagen. Versuchen Sie es noch einmal.","UPDATE_DEFAULT_ADDRESS_ERROR":"Aktualisieren der Standardadresse fehlgeschlagen. Versuchen Sie es noch einmal.","EDIT_EMAIL_UPDATED":"Your email is being updated...","EDIT_EMAIL_SUCESSFULLY_UPDATED":"Email sucessfully updated","EDIT_EMAIL_CHANGED_MSG":"Your email has changed. You must sign in with your updated email","OOPS_MSG":"Oops!","EDIT_EMAIL_CHANGE_FAILED":"Something went wrong. Please reset your email again","RESET_EMAIL":"RESET EMAIL","EDIT_EMAIL_PASSWORD_NOT_CORRECT":"Password is not correct. Try again","EDIT_EMAIL_ALREADY_IN_USE":"This email is already in use. Try again","EDIT_EMAIL_SOMETHING_WENT_WRONG":"Something went wrong. Try again","FORGOT_PW":"Kennwort vergessen?","PASSWORD":"Kennwort","PASSWORD_MINCHAR":"Mindestens 6 Zeichen","CONFIRM_PASSWORD":"Kennwort bestätigen","TOKEN":"Token","RESET_PASSWORD":"Kennwort zurücksetzen","RESET_PW_TITLE":"Kennwort zurücksetzen","RESET_PW_INSTRUCT":"Legen Sie ein neues Kennwort an.","FORGOT_PW_INSTRUCT":"Geben Sie unten die E-Mail-Adresse Ihres Kontos an. Sie erhalten eine E-Mail mit einem Link zum Zurücksetzen Ihres Kennworts.","REQUEST_PW_EXPIRED":"Anforderung zum Zurücksetzen des Kennworts abgelaufen","REQUEST_PW_EXPIRED_MSG":"Die Anforderung zum Zurücksetzen Ihres Kennworts ist abgelaufen. Geben Sie Ihre E-Mail ein, um eine neue Anforderung zu übermitteln.","CHECK_EMAIL":"Überprüfen Sie Ihre E-Mail","CHECK_EMAIL_INSTRUCT":"... und wählen Sie den Link, um Ihr Kennwort zurückzusetzen. Der Link ist 24 Stunden gültig.","CHECK_EMAIL_INSTRUCT_CHANGE_EMAIL":"...and follow the link to confirm change of your email. The link will be valid for 24 hours.","PASSWORD_REQUIRED":"Das Kennwort muss mindestens 6 Zeichen haben.","PASSWORDS_MUST_MATCH":"Die Kennwörter müssen übereinstimmen.","PW_SUCCESS":"Erfolgreich","PW_CHANGED_MSG":"Ihr Kennwort wurde zurückgesetzt. Sie können sich nun an Ihrem Konto anmelden.","INVALID_TOKEN":"Der Link zum Zurücksetzen des Kennworts ist nicht mehr gültig. Fordern Sie einen neuen Link an.","PW_CHANGE_FAILED":"Aktualisierung des Kennworts fehlgeschlagen.","RESET_PW_REPEAT":"Fordern Sie erneut einen Link zum Zurücksetzen des Kennworts an.","FIELD_REQUIRED":"Das Feld ist erforderlich.","FIELD_TOO_SHORT":"Das Feld ist zu kurz.","FIELDS_NOT_MATCHING":"Die Felder stimmen nicht überein.","SERVER_UNAVAILABLE":"Der Server ist nicht verfügbar, versuchen Sie es später erneut.","INVALID_CREDENTIALS":"Sie haben eine ungültige E-Mail-Adresse oder ein ungültiges Kennwort eingegeben.","PASSWORD_INVALID":"Kennwort ungültig - mindestens 6 Zeichen erforderlich.","ACCOUNT_LOCKED":"Das Konto wurde gesperrt, weil die Anzahl der ungültigen Anmeldeversuche überschritten wurde. Versuchen Sie es nach 5 Minuten noch einmal.","ACCOUNT_ALREADY_EXISTS":"E-Mail-Adresse wird für das vorhandene Konto bereits verwendet.","FORGOT_PASSWORD":"Kennwort vergessen?","EMAIL_NOT_FOUND":"Dieser E-Mail-Adresse ist kein Konto zugeordnet.","ENTER_EMAIL":"E-Mail-Adresse eingeben","ENTER_EXISTING_EMAIL":"Geben Sie die E-Mail-Adresse eines vorhandenen Kontos ein","LOGIN_FAILED":"Anmeldung fehlgeschlagen","ACCOUNT_EMAIL":"E-Mail-Adresse für Konto","ERROR_TITLE":"Interner Fehler","ERROR_MESSAGE":"Hoppla, es ist ein Problem aufgetreten.","ERROR_TITLE_401":"Keine Berechtigung","ERROR_MESSAGE_401":"Hoppla, es ist ein Problem aufgetreten. Ihre Anmeldedaten lassen keinen Zugriff auf diese Seite zu.","ERROR_TITLE_404":"Seite nicht gefunden","ERROR_MESSAGE_404":"Hoppla, es ist ein Problem aufgetreten. Diese Seite ist nicht vorhanden.","ERROR_REDIRECT":"Hier ist eine Seite, die Ihnen weiterhilft.","ERROR_BUTTON_TEXT":"STARTSEITE","DR":"Dr.","MR":"Herr","MRS":"Frau","MS":"Frau","TITLE":"Anrede","COMPLETED":"Abgeschlossen","CONFIRMED":"Bestätigt","CREATED":"Angelegt","DECLINED":"Abgelehnt","SHIPPED":"Versendet","CREDIT_CARD":"Kreditkarte","ON":"am","QUANTITY":"Menge","SHIPPED_BY_ON":"Geliefert von: {{carrier}} am {{shippedDate}}","TRACKING_NUMBER":"Verfolgungsnummer: {{trackingNumber}}","FOUND_FOR":"{{total}} gefunden für {{searchString}}","SEARCH":"Suchen","SEARCH_RESULTS":"Suchergebnisse","MOST_RELEVANT":"Relevanteste","RESULTS":"Ergebnisse","SEE_ALL":"Alle anzeigen","SEARCH_UNAVAILABLE":"Die Suche ist zurzeit nicht verfügbar.","NO_RESULTS_FOUND":"Keine Ergebnisse gefunden.","IN":"im","TERMS_AND_CONDITIONS":"Geschäftsbedingungen","CONTACT_US":"Kontakt","SITE_MAP":"Sitemap"} \ No newline at end of file +{"en":"Englisch","de":"Deutsch","fr":"Französisch","es":"Spanisch","BACK_TO_CHECKOUT":"Zurück zur Kasse","CHECKOUT":"Kasse","CANCEL":"Cancel","CONTINUE_SHOPPING":"Einkauf fortsetzen","NOTE":"Note","ADD_NOTE":"Add Note","EDIT_NOTE":"Edit Note","DELETE_NOTE":"Delete Note","UNABLE_TO_SAVE_NOTE":"Unable to save note","SHOP":"Einkaufen","EST_ORDER_TOTAL":"Geschätzte Bestellsumme","PREVIEW_ORDER":"Preview Order","PAYMENT_REVIEW":"Payment & Review","PLEASE_CORRECT_MESSAGE_ERRORS":"Something went wrong, please try again","FREE_SHIPPING":"Versand und Rücksendung in den USA kostenlos","ITEM":"Position","ITEM_PRICE":"Positionspreis","TOTAL_PRICE":"Gesamtpreis","CART_UNAVAILABLE":"Der Warenkorb ist zurzeit nicht verfügbar. Versuchen Sie es noch einmal.","CART_EMPTY":"Ihr Warenkorb ist leer","CART_ITEM_UPDATE_ERROR":"Die Aktualisierung war nicht erfolgreich. Versuchen Sie es noch einmal.","ESTIMATE_TAX":"Steuern schätzen","APPLY":"Anwenden","ESTIMATE_TAX_ERROR":"Felder \"Postleitzahl\" und \"Ländercode\" sind erforderlich","ADDITIONAL_SHIPPING_OPTIONS":"Additional shipping options are available in checkout.","SELECT_A_COUNTRY":"Land auswählen","ADDRESS":"Adresse","ADDRESS_LINE_1":"Adresszeile 1","ADDRESS_LINE_2":"Adresszeile 2","CANT_BE_SHIPPED":"Items cannot be shipped to this location","BILLING_ADDRESS":"Rechnungsadresse","CITY":"Ort","PROVINCE":"Provinz/Bundesland","CONTINUE":"Weiter","COST":"Cost","COUNTRY":"Land","CREDIT_CARD_NUMBER":"Kreditkartennummer","CVC_NUMBER":"Prüfnummer","DELIVERY_METHOD":"Liefermethode","EMAIL":"E-Mail","EDIT":"Bearbeiten","FIRST_NAME":"Vorname","FREE_STANDARD_SHIPPING":"Kostenloser Standardversand","FLAT_RATE_SHPPING":"Pauschale","INVALID_EXPIRATION_DATE":"Ungültiges Ablaufdatum","ITEMS":"Positionen","LAST_NAME":"Nachname","LAST_NAME_REQUIRED":"Nachname erforderlich","METHOD":"Versandart","MIDDLE_NAME":"Zweiter Vorname","MONTH":"Monat","NAME":"Name","NO_ITEMS_IN_CART":"Ihr Warenkorb enthält keine Positionen.","OPTIONAL":"Optional","ORDER_DETAILS":"Bestelldetails","ORDER_DATE":"Bestelldatum","ORDER_PENDING":"Einen Augenblick bitte... Ihre Bestellung wird ausgeführt","ORDER_TOTAL":"Bestellsumme","PAYMENT":"Zahlung","PHONE_REQUIRED":"Telefon erforderlich","PLACE_ORDER":"Bestellen","PLACED_AT":"Bestellt am","PLEASE_CORRECT_ERRORS":"Korrigieren Sie vor dem Bestellen die oben aufgeführten Fehler.","PLEASE_CORRECT_ERRORS_PREVIEW":"Please correct the errors above before previewing your order.","PLEASE_CORRECT_ERRORS_ADDRESS":"Please correct the address details before previewing your order.","PLEASE_ENTER_VALID_CC":"Geben Sie eine gültige Kreditkartennummer ein","PLEASE_ENTER_VALID_CODE":"Geben Sie einen gültigen Code ein","PLEASE_ENTER_VALID_EMAIL":"Geben Sie eine gültige E-Mail-Adresse im Format name@beispiel.com ein","REQUIRED":"Erforderlich","SAME_AS_SHIPPING_ADDRESS":"Same As Shipping Address","SECURE_CHECKOUT":"Sichere Kaufabwicklung","SELECT_FROM_ADDRESS_BOOK":"Aus Adressbuch auswählen","ADDRESS_BOOK":"Address Book","SHIPPING":"Versand","SHIPPING_ADDRESS":"Lieferadresse","SIMPLE_3_STEP_CHECKOUT":"Einfache Kaufabwicklung in 3 Schritten","SIMPLE_4_STEP_CHECKOUT":"Einfache Kaufabwicklung in 4 Schritten","STATE":"Bundesstaat","STEP_1_MY_DETAILS":"Schritt 1: Meine Details","STEP_2_BILLING_INFORMATION":"Schritt 2: Billing Information","STEP_3_PAYMENT":"Schritt 3: Zahlung","STEP_4_REVIEW_ORDER":"Schritt 4: Bestellung prüfen","SUBTOTAL":"Zwischensumme","DISCOUNT":"Rabatt","TAX":"Steuern","TOTAL":"Summe","YEAR":"Jahr","DEFAULT":"Standard","DISTRICT":"Stadtbezirk","STREET_NAME":"Straße/Hausnummer","BUILDING_NAME":"Gebäudename/-nummer","ROOM_NUMBER":"Zimmernummer","PREFECTURE":"Präfektur","POSTAL_CODE":"Postleitzahl","ZIP":"Postleitzahl","CITY_VILLAGE":"Stadt/Dorf/Stadtbezirk","SUBAREA":"Stadtteil","FURTHER_SUBAREA":"Stadtteilabschnitt, Blocknummer/Hausnummer","COUPON_APPLY":"Anwenden","COUPON_APPLIED":"Angewendet","COUPON_NOT_APPLIED":"Not Applied","COUPON_CODE":"Couponcode hinzufügen","COUPON_ERROR":"Coupon nicht gültig.","COUPON_NOT_ACTIVE":"The coupon is not active","COUPON_EXPIRED":"The coupon is not active","COUPON_REDEMPTIONS_EXCEEDED":"Coupon has reached maximum number of redemptions","COUPON_REDEMPTION_FORBIDDEN":"Current customer is not allowed to redeem the coupon","COUPON_ORDER_TOTAL_TOO_LOW":"The order value is too low for this coupon","COUPON_CURRENCY_INCORRECT":"Currency inconsistent with coupon","COUPON_DISCOUNT_CURRENCY_INCORRECT":"Discount currency invalid inconsistent coupon","COUPON_DISCOUNT_AMOUNT_INCORRECT":"Discount amount exceeds allowed coupon discount","COUPON_ERR_CURRENCY":"Währung für Coupon ungültig","COUPON_ERR_ANONYMOUS":"Melden Sie sich an, um den Couponcode zu verwenden","COUPON_ERR_UNAVAILABLE":"Coupon nicht mehr verfügbar","COUPON_MINIMUM_NOT_MET":"Aktuelle Bestellsumme entspricht nicht der erforderlichen Mindestsumme für diesen Coupon","COUPON_NOT_VALID":"Coupon nicht gültig","COUPONS":"Coupon Code","A_COPY_OF_YOUR_ORDER_DETAILS_HAS_BEEN_SENT_TO":"

Eine Kopie Ihrer Bestelldetails wurde gesendet an {{emailAddress}}

","ENJOY_YOUR_ITEMS":"Viel Freude an Ihrem Einkauf!","FOR_YOUR_ORDER":"für Ihre Bestellung!","ITEM_IN_YOUR_ORDER":"Position in Ihrer Bestellung","ITEMS_IN_YOUR_ORDER":"Positionen in Ihrer Bestellung","QUESTIONS":"

Bei Fragen kontaktieren Sie uns unter {{contactInfo}}.

","ORDER":"Bestellung","RETURN_TO_SHOPPING":"Zurück zum Einkauf","SUCCESS":"Vorgang war erfolgreich!","ACCOUNT_SUCCESS":"Ihr Konto wurde erfolgreich angelegt.","THANK_YOU":"Vielen Dank","THANK_YOU_FOR_YOUR_ORDER":"Vielen Dank
für Ihre Bestellung!","THE_SHIPMENT_IS_SCHEDULED_TO_ARRIVE_AT_THE_FOLLOWING_LOCATION":"Die Bestellung wird geliefert an","YOUR_ORDER_IS":"Ihre Bestellnummer lautet ","ONE_MORE_STEP":"Nur ein weiterer Schritt zum Anlegen eines Kontos mit schneller Kaufabwicklung und einem einfachen Zugriff auf frühere Bestellungen","SKU":"Lagermengeneinheit","YOUR_CHECKOUT_HAS_BEEN_ACCEPTED_ORDER_NOT_CREATED":"Ihre Kaufabwicklung wurde angenommen, aber die Bestellung wurde nicht angelegt. Verwenden Sie zur Verfolgung folgende Kaufabwicklungs-ID-Nummer: ","YOUR_ORDER_WILL_BE_CREATED":"Ihre Bestellung wird so schnell wie möglich angelegt.","PRODUCTS":"Produkte","BACK_TO":"Zurück zu","REGION":"Region","SHIPPING_INFORMATION":"Shipping information","SHIPPING_ZONE":"Shipping Zone","STANDARD_SHIPPING":"Standard Shipping","SHIPPING_RATE":"Shipping Rate","ZONE":"Zone","BUY":"Kaufen","ADD_TO_CART":"In den Warenkorb","PRODUCTS_ADDED_TO_CART":"product(s) successfully added to your cart","PRODUCT_DESCRIPTION":"Produktbeschreibung","PRODUCT_DETAILS":"Produktdetails","OUT_OF_STOCK":"nicht vorrätig","QTY":"Menge","INCLUDES":"Includes","NO_LIMIT":"No Limit","DESTINATION_COUNTRY":"Destination country(s)","ERROR_ADDING_TO_CART":"Hinzufügen zum Warenkorb war nicht erfolgreich. Versuchen Sie es noch einmal.","NEWEST":"neueste","OF":"von","PRICE_HIGH_LOW":"Preis (höchster - niedrigster)","PRICE_LOW_HIGH":"Preis (niedrigster - höchster)","SORT_BY":"Sortieren nach","VIEWING":"Anzeigen","PRODUCTS_FROM_TO":"
{{productsFrom}}-{{productsTo}} von {{total}}
","ALL_PRODUCTS":"Alle Produkte","EMPTY_MSG":"Demo-Filiale - demnächst verfügbar","LANGUAGES":"Sprachen","SELECT_LANGUAGE":"Sprache auswählen","SIGN_OUT":"Abmelden","SIGN_IN":"Anmelden","SIGN_IN_WITH_FACEBOOK":"Über Facebook anmelden","LOG_IN_WITH_GOOGLE":"Über Google anmelden","MY_ACCOUNT":"Mein Konto","CREATE_ACCOUNT":"Konto anlegen","CONTINUE_AS_GUEST":"Weiter als Gast","UPDATE_ACCOUNT_DETAILS":"Kontodetails aktualisieren","UPDATE_EMAIL":"E-Mail aktualisieren","ADD":"Hinzufügen","REGION_PREFERENCES":"Regionspräferenzen","NEW_EMAIL":"Neue E-Mail","CURRENT_EMAIL":"Current Email","ADDRESSBOOK":"Adressbuch","NO_ADDRESSES":"Sie haben keine Adressen gespeichert.","FAIL_ADDRESSES":"Die Adressen sind nicht verfügbar. Versuchen Sie es später noch einmal.","ADD_ADDRESS":"Adresse hinzufügen","CLOSE":"Schließen","COMPANY_NAME":"Unternehmen","CONFIRM_DELETE_ADDRESS_TITLE":"Delete Address","CONFIRM_ADDRESS_REMOVAL":"Are you sure you want to delete this address?","FULL_NAME":"Vollständiger Name","CONTACT_PHONE":"Telefon","FAIL_CUSTOMER_DETAILS":"Die Kundendetails sind nicht verfügbar. Versuchen Sie es später noch einmal.","DATE":"Datum","NAME_REQUIRED":"Name erforderlich","STREET":"Straße","STREET_NUMBER":"Hausnummer","WELCOME":"Willkommen","NOT_SET":"Nicht festgelegt","ORDER_HISTORY":"Bestellhistorie","ORDER_NUMBER":"Bestellnummer","ORDER_STATUS":"Bestellstatus","FAIL_ORDER":"Die Bestellungen sind nicht verfügbar. Versuchen Sie es später noch einmal.","NO_ORDERS":"Sie haben keine Bestellungen gespeichert","ORDER_ITEM_COUNT":"{{number}} Position","ORDER_ITEMS_COUNT":"{{number}} Positionen","SHIPPING_DETAILS":"VERSANDDETAILS","SAVE":"Sichern","UPDATE_PASSWORD":"Kennwort aktualisieren","CURRENT_PASSWORD":"Aktuelles Kennwort","NEW_PASSWORD":"Neues Kennwort","CONFIRM_NEW_PASSWORD":"Neues Kennwort bestätigen","PASSWORDS_NO_MATCH":"Kennwörter stimmen nicht überein","WRONG_CURRENT_PASSWORD":"Geben Sie ein korrektes aktuelles Kennwort an.","PASSWORD_TOO_SHORT":"Kennwort zu kurz","SHOW_ALL":"Alles anzeigen","SHOW_LESS":"Weniger anzeigen","ITEMS_IN_ORDER":"Positionen in Bestellung","SAVE_ADDRESS_ERROR":"Es ist ein Fehler aufgetreten; die Aktualisierungen wurden nicht gesichert. Sichern Sie die Aktualisierungen.","REMOVE_ADDRESS_ERROR":"Löschen der Adresse fehlgeschlagen. Versuchen Sie es noch einmal.","UPDATE_DEFAULT_ADDRESS_ERROR":"Aktualisieren der Standardadresse fehlgeschlagen. Versuchen Sie es noch einmal.","EDIT_EMAIL_UPDATED":"Your email is being updated...","EDIT_EMAIL_SUCESSFULLY_UPDATED":"Email sucessfully updated","EDIT_EMAIL_CHANGED_MSG":"Your email has changed. You must sign in with your updated email","OOPS_MSG":"Oops!","EDIT_EMAIL_CHANGE_FAILED":"Something went wrong. Please reset your email again","RESET_EMAIL":"RESET EMAIL","EDIT_EMAIL_PASSWORD_NOT_CORRECT":"Password is not correct. Try again","EDIT_EMAIL_ALREADY_IN_USE":"This email is already in use. Try again","EDIT_EMAIL_SOMETHING_WENT_WRONG":"Something went wrong. Try again","FORGOT_PW":"Kennwort vergessen?","PASSWORD":"Kennwort","PASSWORD_MINCHAR":"Mindestens 6 Zeichen","CONFIRM_PASSWORD":"Kennwort bestätigen","TOKEN":"Token","RESET_PASSWORD":"Kennwort zurücksetzen","RESET_PW_TITLE":"Kennwort zurücksetzen","RESET_PW_INSTRUCT":"Legen Sie ein neues Kennwort an.","FORGOT_PW_INSTRUCT":"Geben Sie unten die E-Mail-Adresse Ihres Kontos an. Sie erhalten eine E-Mail mit einem Link zum Zurücksetzen Ihres Kennworts.","REQUEST_PW_EXPIRED":"Anforderung zum Zurücksetzen des Kennworts abgelaufen","REQUEST_PW_EXPIRED_MSG":"Die Anforderung zum Zurücksetzen Ihres Kennworts ist abgelaufen. Geben Sie Ihre E-Mail ein, um eine neue Anforderung zu übermitteln.","CHECK_EMAIL":"Überprüfen Sie Ihre E-Mail","CHECK_EMAIL_INSTRUCT":"... und wählen Sie den Link, um Ihr Kennwort zurückzusetzen. Der Link ist 24 Stunden gültig.","CHECK_EMAIL_INSTRUCT_CHANGE_EMAIL":"...and follow the link to confirm change of your email. The link will be valid for 24 hours.","COOKIES_ENABLED_ERROR":"Cookies must be enabled in your browser to sign in. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.","CREATE_ACCOUNT_ERROR":"Customer account was created successfully, but cookies must be enabled to login. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.","PASSWORD_REQUIRED":"Das Kennwort muss mindestens 6 Zeichen haben.","PASSWORDS_MUST_MATCH":"Die Kennwörter müssen übereinstimmen.","PW_SUCCESS":"Erfolgreich","PW_CHANGED_MSG":"Ihr Kennwort wurde zurückgesetzt. Sie können sich nun an Ihrem Konto anmelden.","INVALID_TOKEN":"Der Link zum Zurücksetzen des Kennworts ist nicht mehr gültig. Fordern Sie einen neuen Link an.","PW_CHANGE_FAILED":"Aktualisierung des Kennworts fehlgeschlagen.","RESET_PW_REPEAT":"Fordern Sie erneut einen Link zum Zurücksetzen des Kennworts an.","FIELD_REQUIRED":"Das Feld ist erforderlich.","FIELD_TOO_SHORT":"Das Feld ist zu kurz.","FIELDS_NOT_MATCHING":"Die Felder stimmen nicht überein.","SERVER_UNAVAILABLE":"Der Server ist nicht verfügbar, versuchen Sie es später erneut.","INVALID_CREDENTIALS":"Sie haben eine ungültige E-Mail-Adresse oder ein ungültiges Kennwort eingegeben.","PASSWORD_INVALID":"Kennwort ungültig - mindestens 6 Zeichen erforderlich.","ACCOUNT_LOCKED":"Das Konto wurde gesperrt, weil die Anzahl der ungültigen Anmeldeversuche überschritten wurde. Versuchen Sie es nach 5 Minuten noch einmal.","ACCOUNT_ALREADY_EXISTS":"E-Mail-Adresse wird für das vorhandene Konto bereits verwendet.","FORGOT_PASSWORD":"Kennwort vergessen?","EMAIL_NOT_FOUND":"Dieser E-Mail-Adresse ist kein Konto zugeordnet.","ENTER_EMAIL":"E-Mail-Adresse eingeben","ENTER_EXISTING_EMAIL":"Geben Sie die E-Mail-Adresse eines vorhandenen Kontos ein","LOGIN_FAILED":"Anmeldung fehlgeschlagen","ACCOUNT_EMAIL":"E-Mail-Adresse für Konto","ERROR_TITLE":"Interner Fehler","ERROR_MESSAGE":"Hoppla, es ist ein Problem aufgetreten.","ERROR_TITLE_401":"Keine Berechtigung","ERROR_MESSAGE_401":"Hoppla, es ist ein Problem aufgetreten. Ihre Anmeldedaten lassen keinen Zugriff auf diese Seite zu.","ERROR_TITLE_404":"Seite nicht gefunden","ERROR_MESSAGE_404":"Hoppla, es ist ein Problem aufgetreten. Diese Seite ist nicht vorhanden.","ERROR_REDIRECT":"Hier ist eine Seite, die Ihnen weiterhilft.","ERROR_BUTTON_TEXT":"STARTSEITE","DR":"Dr.","MR":"Herr","MRS":"Frau","MS":"Frau","TITLE":"Anrede","COMPLETED":"Abgeschlossen","CONFIRMED":"Bestätigt","CREATED":"Angelegt","DECLINED":"Abgelehnt","SHIPPED":"Versendet","CREDIT_CARD":"Kreditkarte","ON":"am","QUANTITY":"Menge","SHIPPED_BY_ON":"Geliefert von: {{carrier}} am {{shippedDate}}","TRACKING_NUMBER":"Verfolgungsnummer: {{trackingNumber}}","FOUND_FOR":"{{total}} gefunden für {{searchString}}","SEARCH":"Suchen","SEARCH_RESULTS":"Suchergebnisse","MOST_RELEVANT":"Relevanteste","RESULTS":"Ergebnisse","SEE_ALL":"Alle anzeigen","SEARCH_UNAVAILABLE":"Die Suche ist zurzeit nicht verfügbar.","NO_RESULTS_FOUND":"Keine Ergebnisse gefunden.","IN":"im","TERMS_AND_CONDITIONS":"Geschäftsbedingungen","CONTACT_US":"Kontakt","SITE_MAP":"Sitemap"} \ No newline at end of file diff --git a/public/js/app/shared/i18n/lang/lang_en.json b/public/js/app/shared/i18n/lang/lang_en.json index c3db9d29f..4902dac89 100644 --- a/public/js/app/shared/i18n/lang/lang_en.json +++ b/public/js/app/shared/i18n/lang/lang_en.json @@ -1 +1 @@ -{"en":"English","de":"German","fr":"French","es":"Spanish","BACK_TO_CHECKOUT":"Back to checkout","CANCEL":"Cancel","CHECKOUT":"Checkout","CONTINUE_SHOPPING":"Continue shopping","SHOP":"Shop","NOTE":"Note","ADD_NOTE":"Add Note","EDIT_NOTE":"Edit Note","DELETE_NOTE":"Delete Note","UNABLE_TO_SAVE_NOTE":"Unable to save note","EST_ORDER_TOTAL":"Est. order total","PREVIEW_ORDER":"Preview Order","PAYMENT_REVIEW":"Payment & Review","PLEASE_CORRECT_MESSAGE_ERRORS":"Something went wrong, please try again","FREE_SHIPPING":"Free Shipping and Returns in the US","ITEM":"Item","ITEM_PRICE":"Item Price","TOTAL_PRICE":"Total Price","CART_UNAVAILABLE":"The cart is currently unavailable. Please try again.","CART_EMPTY":"Your cart is empty","CART_ITEM_UPDATE_ERROR":"The update was not successful. Please try again.","ESTIMATE_TAX":"Estimate Tax","APPLY":"Apply","ESTIMATE_TAX_ERROR":"Zip/Postal Code and Country Code fields are required","ADDITIONAL_SHIPPING_OPTIONS":"Additional shipping options are available in checkout.","SELECT_A_COUNTRY":"Select a country","ADDRESS":"Address","ADDRESS_LINE_1":"Address Line 1","ADDRESS_LINE_2":"Address Line 2","CANT_BE_SHIPPED":"Items cannot be shipped to this location","BILLING_ADDRESS":"Billing Address","CITY":"City","PROVINCE":"Province","CONTINUE":"Continue","COST":"Cost","COUNTRY":"Country","CREDIT_CARD_NUMBER":"Credit Card Number","CVC_NUMBER":"CVC Number","DELIVERY_METHOD":"Delivery Method","EMAIL":"Email","EDIT":"Edit","FIRST_NAME":"First Name","FREE_STANDARD_SHIPPING":"Free Standard Shipping","FLAT_RATE_SHPPING":"Flat Rate","INVALID_EXPIRATION_DATE":"Invalid Expiration Date","ITEMS":"Items","LAST_NAME":"Last Name","LAST_NAME_REQUIRED":"Last Name Required","METHOD":"Method","MIDDLE_NAME":"Middle Name","MONTH":"Month","NAME":"Name","NO_ITEMS_IN_CART":"There are no items in your cart.","OPTIONAL":"Optional","ORDER_DETAILS":"Order Details","ORDER_DATE":"Order Date","ORDER_PENDING":"One moment... Placing your order","ORDER_TOTAL":"Order Total","PAYMENT":"Payment","PHONE_REQUIRED":"Phone Required","PLACE_ORDER":"Place Order","PLACED_AT":"Placed At","PLEASE_CORRECT_ERRORS":"Please correct the errors above before placing your order.","PLEASE_CORRECT_ERRORS_PREVIEW":"Please correct the errors above before previewing your order.","PLEASE_CORRECT_ERRORS_ADDRESS":"Please correct the address details before previewing your order.","PLEASE_ENTER_VALID_CC":"Please enter a valid credit card number","PLEASE_ENTER_VALID_CODE":"Please enter a valid code","PLEASE_ENTER_VALID_EMAIL":"Please enter a valid email in the format name@example.com","REQUIRED":"Required","SAME_AS_SHIPPING_ADDRESS":"Same As Shipping Address","SECURE_CHECKOUT":"Secure Checkout","SELECT_FROM_ADDRESS_BOOK":"Select from address book","ADDRESS_BOOK":"Address Book","SHIPPING":"Shipping","SHIPPING_ADDRESS":"Shipping Address","SIMPLE_3_STEP_CHECKOUT":"Simple 3 Step Checkout","SIMPLE_4_STEP_CHECKOUT":"Simple 4 Step Checkout","STATE":"State","STEP_1_MY_DETAILS":"Step 1. My Details","STEP_2_BILLING_INFORMATION":"Step 2. Billing Information","STEP_3_PAYMENT":"Step 3. Payment","STEP_4_REVIEW_ORDER":"Step 4. Review Order","SUBTOTAL":"Subtotal","DISCOUNT":"Discount","TAX":"Tax","TOTAL":"Total","YEAR":"Year","DEFAULT":"Default","DISTRICT":"District","STREET_NAME":"Street Name/ Number","BUILDING_NAME":"Building Name/ Number","ROOM_NUMBER":"Room Number","PREFECTURE":"Prefecture","POSTAL_CODE":"Postal Code","ZIP":"Zip/ Postal Code","CITY_VILLAGE":"City/ Village/ City Ward","SUBAREA":"Subarea","FURTHER_SUBAREA":"Further Subarea, Block #/ House #","COUPON_APPLY":"Apply","COUPON_APPLIED":"Applied","COUPON_NOT_APPLIED":"Not Applied","COUPON_CODE":"Add Coupon Code","COUPON_ERROR":"Coupon not valid.","COUPON_ERR_CURRENCY":"Currency invalid with coupon","COUPON_ERR_ANONYMOUS":"Sign in to use coupon code","COUPON_ERR_UNAVAILABLE":"Coupon no longer available","COUPON_MINIMUM_NOT_MET":"Current order total does not meet the required minimum for this coupon","COUPON_NOT_VALID":"Coupon Not Valid","COUPONS":"Coupon Code","A_COPY_OF_YOUR_ORDER_DETAILS_HAS_BEEN_SENT_TO":"

A copy of your order details has been sent to {{emailAddress}}

","ENJOY_YOUR_ITEMS":"Enjoy your items!","FOR_YOUR_ORDER":"for your order!","ITEM_IN_YOUR_ORDER":"Item in your order","ITEMS_IN_YOUR_ORDER":"Items in your order","QUESTIONS":"

If you have any questions, contact us at {{contactInfo}}.

","ORDER":"Order","RETURN_TO_SHOPPING":"Return to shopping","SUCCESS":"Success!","ACCOUNT_SUCCESS":"Your account was successfully created!","THANK_YOU":"Thank you","THANK_YOU_FOR_YOUR_ORDER":"Thank you
for your order!","THE_SHIPMENT_IS_SCHEDULED_TO_ARRIVE_AT_THE_FOLLOWING_LOCATION":"The order will be shipped to","YOUR_ORDER_IS":"Your order # is ","ONE_MORE_STEP":"One More Step to Create an Account for a Fast Checkout and Easy Access to Previous Orders","SKU":"SKU","YOUR_CHECKOUT_HAS_BEEN_ACCEPTED_ORDER_NOT_CREATED":"Your checkout has been accepted, but the order has not been created. For tracking purposes, please use the following checkout ID number: ","YOUR_ORDER_WILL_BE_CREATED":"Your order will be created as soon as possible.","PRODUCTS":"Products","BACK_TO":"Back To","REGION":"Region","SHIPPING_INFORMATION":"Shipping information","SHIPPING_ZONE":"Shipping Zone","STANDARD_SHIPPING":"Standard Shipping","SHIPPING_RATE":"Shipping Rate","ZONE":"Zone","BUY":"Buy","ADD_TO_CART":"Add to Cart","PRODUCTS_ADDED_TO_CART":"product(s) successfully added to your cart","PRODUCT_DESCRIPTION":"Product Description","PRODUCT_DETAILS":"Product Details","OUT_OF_STOCK":"out of stock","QTY":"Qty","INCLUDES":"Includes","DESTINATION_COUNTRY":"Destination country(s)","NO_LIMIT":"No Limit","ERROR_ADDING_TO_CART":"Add to Cart was not successful. Please try again.","NEWEST":"newest","OF":"of","PRICE_HIGH_LOW":"price high - low","PRICE_LOW_HIGH":"price low - high","SORT_BY":"Sort by","VIEWING":"Viewing","PRODUCTS_FROM_TO":"
{{productsFrom}}-{{productsTo}} of {{total}}
","ALL_PRODUCTS":"All Products","EMPTY_MSG":"Demo Store - Coming Soon","LANGUAGES":"Languages","SELECT_LANGUAGE":"Select a language","SIGN_OUT":"Sign Out","SIGN_IN":"Sign In","SIGN_IN_WITH_FACEBOOK":"Sign in with Facebook","LOG_IN_WITH_GOOGLE_PLUS":"Sign in with Google +","MY_ACCOUNT":"My Account","CREATE_ACCOUNT":"Create Account","CONTINUE_AS_GUEST":"Continue as our guest","UPDATE_ACCOUNT_DETAILS":"Update Account details","UPDATE_EMAIL":"Update Email","ADD":"Add","REGION_PREFERENCES":"Region Preferences","NEW_EMAIL":"New Email","CURRENT_EMAIL":"Current Email","ADDRESSBOOK":"Addressbook","NO_ADDRESSES":"You have no addresses stored!","FAIL_ADDRESSES":"Addresses not available. Try again later.","ADD_ADDRESS":"Add Address","CLOSE":"Close","COMPANY_NAME":"Company","CONFIRM_DELETE_ADDRESS_TITLE":"Delete Address","CONFIRM_ADDRESS_REMOVAL":"Are you sure you want to delete this address?","FULL_NAME":"Full Name","CONTACT_PHONE":"Phone","FAIL_CUSTOMER_DETAILS":"Customer details not available. Try again later.","DATE":"Date","NAME_REQUIRED":"Name Required","STREET":"Street","STREET_NUMBER":"Street Number","WELCOME":"Welcome","NOT_SET":"Not Set","ORDER_HISTORY":"Order History","ORDER_NUMBER":"Order Number","ORDER_STATUS":"Order Status","FAIL_ORDER":"Orders not available. Try again later.","NO_ORDERS":"You have no orders stored","ORDER_ITEM_COUNT":"{{number}} Item","ORDER_ITEMS_COUNT":"{{number}} Items","SHIPPING_DETAILS":"SHIPPING DETAILS","SAVE":"Save","UPDATE_PASSWORD":"Update password","CURRENT_PASSWORD":"Current password","NEW_PASSWORD":"New password","CONFIRM_NEW_PASSWORD":"Confirm new password","PASSWORDS_NO_MATCH":"Passwords do not match","WRONG_CURRENT_PASSWORD":"Please provide correct current password!","PASSWORD_TOO_SHORT":"Password too short","SHOW_ALL":"Show all","SHOW_LESS":"Show less","ITEMS_IN_ORDER":"Items in Order","SAVE_ADDRESS_ERROR":"An error occured and updates not saved. Save updates.","REMOVE_ADDRESS_ERROR":"Deleting address failed. Please try again.","UPDATE_DEFAULT_ADDRESS_ERROR":"Updating default address failed. Please try again.","EDIT_EMAIL_UPDATED":"Your email is being updated...","EDIT_EMAIL_SUCESSFULLY_UPDATED":"Email sucessfully updated","EDIT_EMAIL_CHANGED_MSG":"Your email has changed. You must sign in with your updated email","OOPS_MSG":"Oops!","EDIT_EMAIL_CHANGE_FAILED":"Something went wrong. Please reset your email again","RESET_EMAIL":"RESET EMAIL","EDIT_EMAIL_PASSWORD_NOT_CORRECT":"Password is not correct. Try again","EDIT_EMAIL_ALREADY_IN_USE":"This email is already in use. Try again","EDIT_EMAIL_SOMETHING_WENT_WRONG":"Something went wrong. Try again","FORGOT_PW":"Forgot your password?","PASSWORD":"Password","PASSWORD_MINCHAR":"Min. 6 characters","CONFIRM_PASSWORD":"Confirm Password","TOKEN":"Token","RESET_PASSWORD":"Reset Password","RESET_PW_TITLE":"Reset Your Password","RESET_PW_INSTRUCT":"Please create a new password.","FORGOT_PW_INSTRUCT":"Please enter your account email address below. An email will be sent to you with a link to reset your password.","REQUEST_PW_EXPIRED":"Reset Password Request Expired","REQUEST_PW_EXPIRED_MSG":"The request to reset your password has expired. Please enter your email to make a new request.","CHECK_EMAIL":"Check Your Email","CHECK_EMAIL_INSTRUCT":"...and follow the link to reset your password. The link will be valid for 24 hours.","CHECK_EMAIL_INSTRUCT_CHANGE_EMAIL":"...and follow the link to confirm change of your email. The link will be valid for 24 hours.","PASSWORD_REQUIRED":"Password with 6 character minimum required.","PASSWORDS_MUST_MATCH":"Passwords must match.","PW_SUCCESS":"Success","PW_CHANGED_MSG":"Your password has been reset. You can now sign into your account.","INVALID_TOKEN":"This reset-password link is no longer valid. Please request a new one.","PW_CHANGE_FAILED":"Update of password failed.","RESET_PW_REPEAT":"Request another reset-password link.","FIELD_REQUIRED":"Field is required!","FIELD_TOO_SHORT":"Field too short!","FIELDS_NOT_MATCHING":"Fields not matching!","SERVER_UNAVAILABLE":"Server is unavailable, please try again later.","INVALID_CREDENTIALS":"You entered an invalid email or password.","PASSWORD_INVALID":"Password invalid - minimum of 6 characters required.","ACCOUNT_LOCKED":"Account has been locked due to excessive number of invalid login attempts. Please wait 5 minutes and try again.","ACCOUNT_ALREADY_EXISTS":"Email address already in use for existing account.","FORGOT_PASSWORD":"Forgot password?","EMAIL_NOT_FOUND":"There is no account associated with that email address.","ENTER_EMAIL":"Enter Email","ENTER_EXISTING_EMAIL":"Enter the email address of an existing account","LOGIN_FAILED":"Login failed","ACCOUNT_EMAIL":"Account Email","ERROR_TITLE":"Internal Error","ERROR_MESSAGE":"Oops! There's a problem.","ERROR_TITLE_401":"Unauthorized","ERROR_MESSAGE_401":"Oops! There's a problem. Your login credentials don't allow access to this page.","ERROR_TITLE_404":"Page not found","ERROR_MESSAGE_404":"Oops! There's a problem. This page doesn't exist.","ERROR_REDIRECT":"Here is a page to help you get back on track.","ERROR_BUTTON_TEXT":"HOMEPAGE","DR":"Dr.","MR":"Mr.","MRS":"Mrs.","MS":"Ms.","TITLE":"Title","COMPLETED":"Completed","CONFIRMED":"Confirmed","CREATED":"Created","DECLINED":"Declined","SHIPPED":"Shipped","CREDIT_CARD":"Credit Card","ON":"on","QUANTITY":"Quantity","SHIPPED_BY_ON":"Shipped by: {{carrier}} on {{shippedDate}}","TRACKING_NUMBER":"Tracking Number: {{trackingNumber}}","FOUND_FOR":"{{total}} found for {{searchString}}","SEARCH":"Search","SEARCH_RESULTS":"Search results","MOST_RELEVANT":"Most Relevant","RESULTS":"Results","SEE_ALL":"See All","SEARCH_UNAVAILABLE":"Search is currently unavailable.","NO_RESULTS_FOUND":"No results found.","IN":"in","TERMS_AND_CONDITIONS":"Terms & Conditions","CONTACT_US":"Contact Us","SITE_MAP":"Site Map"} \ No newline at end of file +{"en":"English","de":"German","fr":"French","es":"Spanish","BACK_TO_CHECKOUT":"Back to checkout","CANCEL":"Cancel","CHECKOUT":"Checkout","CONTINUE_SHOPPING":"Continue shopping","SHOP":"Shop","NOTE":"Note","ADD_NOTE":"Add Note","EDIT_NOTE":"Edit Note","DELETE_NOTE":"Delete Note","UNABLE_TO_SAVE_NOTE":"Unable to save note","EST_ORDER_TOTAL":"Est. order total","PREVIEW_ORDER":"Preview Order","PAYMENT_REVIEW":"Payment & Review","PLEASE_CORRECT_MESSAGE_ERRORS":"Something went wrong, please try again","FREE_SHIPPING":"Free Shipping and Returns in the US","ITEM":"Item","ITEM_PRICE":"Item Price","TOTAL_PRICE":"Total Price","CART_UNAVAILABLE":"The cart is currently unavailable. Please try again.","CART_EMPTY":"Your cart is empty","CART_ITEM_UPDATE_ERROR":"The update was not successful. Please try again.","ESTIMATE_TAX":"Estimate Tax","APPLY":"Apply","ESTIMATE_TAX_ERROR":"Zip/Postal Code and Country Code fields are required","ADDITIONAL_SHIPPING_OPTIONS":"Additional shipping options are available in checkout.","SELECT_A_COUNTRY":"Select a country","ADDRESS":"Address","ADDRESS_LINE_1":"Address Line 1","ADDRESS_LINE_2":"Address Line 2","CANT_BE_SHIPPED":"Items cannot be shipped to this location","BILLING_ADDRESS":"Billing Address","CITY":"City","PROVINCE":"Province","CONTINUE":"Continue","COST":"Cost","COUNTRY":"Country","CREDIT_CARD_NUMBER":"Credit Card Number","CVC_NUMBER":"CVC Number","DELIVERY_METHOD":"Delivery Method","EMAIL":"Email","EDIT":"Edit","FIRST_NAME":"First Name","FREE_STANDARD_SHIPPING":"Free Standard Shipping","FLAT_RATE_SHPPING":"Flat Rate","INVALID_EXPIRATION_DATE":"Invalid Expiration Date","ITEMS":"Items","LAST_NAME":"Last Name","LAST_NAME_REQUIRED":"Last Name Required","METHOD":"Method","MIDDLE_NAME":"Middle Name","MONTH":"Month","NAME":"Name","NO_ITEMS_IN_CART":"There are no items in your cart.","OPTIONAL":"Optional","ORDER_DETAILS":"Order Details","ORDER_DATE":"Order Date","ORDER_PENDING":"One moment... Placing your order","ORDER_TOTAL":"Order Total","PAYMENT":"Payment","PHONE_REQUIRED":"Phone Required","PLACE_ORDER":"Place Order","PLACED_AT":"Placed At","PLEASE_CORRECT_ERRORS":"Please correct the errors above before placing your order.","PLEASE_CORRECT_ERRORS_PREVIEW":"Please correct the errors above before previewing your order.","PLEASE_CORRECT_ERRORS_ADDRESS":"Please correct the address details before previewing your order.","PLEASE_ENTER_VALID_CC":"Please enter a valid credit card number","PLEASE_ENTER_VALID_CODE":"Please enter a valid code","PLEASE_ENTER_VALID_EMAIL":"Please enter a valid email in the format name@example.com","REQUIRED":"Required","SAME_AS_SHIPPING_ADDRESS":"Same As Shipping Address","SECURE_CHECKOUT":"Secure Checkout","SELECT_FROM_ADDRESS_BOOK":"Select from address book","ADDRESS_BOOK":"Address Book","SHIPPING":"Shipping","SHIPPING_ADDRESS":"Shipping Address","SIMPLE_3_STEP_CHECKOUT":"Simple 3 Step Checkout","SIMPLE_4_STEP_CHECKOUT":"Simple 4 Step Checkout","STATE":"State","STEP_1_MY_DETAILS":"Step 1. My Details","STEP_2_BILLING_INFORMATION":"Step 2. Billing Information","STEP_3_PAYMENT":"Step 3. Payment","STEP_4_REVIEW_ORDER":"Step 4. Review Order","SUBTOTAL":"Subtotal","DISCOUNT":"Discount","TAX":"Tax","TOTAL":"Total","YEAR":"Year","DEFAULT":"Default","DISTRICT":"District","STREET_NAME":"Street Name/ Number","BUILDING_NAME":"Building Name/ Number","ROOM_NUMBER":"Room Number","PREFECTURE":"Prefecture","POSTAL_CODE":"Postal Code","ZIP":"Zip/ Postal Code","CITY_VILLAGE":"City/ Village/ City Ward","SUBAREA":"Subarea","FURTHER_SUBAREA":"Further Subarea, Block #/ House #","COUPON_APPLY":"Apply","COUPON_APPLIED":"Applied","COUPON_NOT_APPLIED":"Not Applied","COUPON_CODE":"Add Coupon Code","COUPON_NOT_ACTIVE":"The coupon is not active","COUPON_EXPIRED":"The coupon is not active","COUPON_REDEMPTIONS_EXCEEDED":"Coupon has reached maximum number of redemptions","COUPON_REDEMPTION_FORBIDDEN":"Current customer is not allowed to redeem the coupon","COUPON_ORDER_TOTAL_TOO_LOW":"The order value is too low for this coupon","COUPON_CURRENCY_INCORRECT":"Currency inconsistent with coupon","COUPON_DISCOUNT_CURRENCY_INCORRECT":"Discount currency invalid inconsistent coupon","COUPON_DISCOUNT_AMOUNT_INCORRECT":"Discount amount exceeds allowed coupon discount","COUPON_ERROR":"Coupon not valid.","COUPON_ERR_CURRENCY":"Currency invalid with coupon","COUPON_ERR_ANONYMOUS":"Sign in to use coupon code","COUPON_ERR_UNAVAILABLE":"Coupon no longer available","COUPON_MINIMUM_NOT_MET":"Current order total does not meet the required minimum for this coupon","COUPON_NOT_VALID":"Coupon Not Valid","COUPONS":"Coupon Code","A_COPY_OF_YOUR_ORDER_DETAILS_HAS_BEEN_SENT_TO":"

A copy of your order details has been sent to {{emailAddress}}

","ENJOY_YOUR_ITEMS":"Enjoy your items!","FOR_YOUR_ORDER":"for your order!","ITEM_IN_YOUR_ORDER":"Item in your order","ITEMS_IN_YOUR_ORDER":"Items in your order","QUESTIONS":"

If you have any questions, contact us at {{contactInfo}}.

","ORDER":"Order","RETURN_TO_SHOPPING":"Return to shopping","SUCCESS":"Success!","ACCOUNT_SUCCESS":"Your account was successfully created!","THANK_YOU":"Thank you","THANK_YOU_FOR_YOUR_ORDER":"Thank you
for your order!","THE_SHIPMENT_IS_SCHEDULED_TO_ARRIVE_AT_THE_FOLLOWING_LOCATION":"The order will be shipped to","YOUR_ORDER_IS":"Your order # is ","ONE_MORE_STEP":"One More Step to Create an Account for a Fast Checkout and Easy Access to Previous Orders","SKU":"SKU","YOUR_CHECKOUT_HAS_BEEN_ACCEPTED_ORDER_NOT_CREATED":"Your checkout has been accepted, but the order has not been created. For tracking purposes, please use the following checkout ID number: ","YOUR_ORDER_WILL_BE_CREATED":"Your order will be created as soon as possible.","PRODUCTS":"Products","BACK_TO":"Back To","REGION":"Region","SHIPPING_INFORMATION":"Shipping information","SHIPPING_ZONE":"Shipping Zone","STANDARD_SHIPPING":"Standard Shipping","SHIPPING_RATE":"Shipping Rate","ZONE":"Zone","BUY":"Buy","ADD_TO_CART":"Add to Cart","PRODUCTS_ADDED_TO_CART":"product(s) successfully added to your cart","PRODUCT_DESCRIPTION":"Product Description","PRODUCT_DETAILS":"Product Details","OUT_OF_STOCK":"out of stock","QTY":"Qty","INCLUDES":"Includes","DESTINATION_COUNTRY":"Destination country(s)","NO_LIMIT":"No Limit","ERROR_ADDING_TO_CART":"Add to Cart was not successful. Please try again.","NEWEST":"newest","OF":"of","PRICE_HIGH_LOW":"price high - low","PRICE_LOW_HIGH":"price low - high","SORT_BY":"Sort by","VIEWING":"Viewing","PRODUCTS_FROM_TO":"
{{productsFrom}}-{{productsTo}} of {{total}}
","ALL_PRODUCTS":"All Products","EMPTY_MSG":"Demo Store - Coming Soon","LANGUAGES":"Languages","SELECT_LANGUAGE":"Select a language","SIGN_OUT":"Sign Out","SIGN_IN":"Sign In","SIGN_IN_WITH_FACEBOOK":"Sign in with Facebook","LOG_IN_WITH_GOOGLE":"Sign in with Google","MY_ACCOUNT":"My Account","CREATE_ACCOUNT":"Create Account","CONTINUE_AS_GUEST":"Continue as our guest","UPDATE_ACCOUNT_DETAILS":"Update Account details","UPDATE_EMAIL":"Update Email","ADD":"Add","REGION_PREFERENCES":"Region Preferences","NEW_EMAIL":"New Email","CURRENT_EMAIL":"Current Email","ADDRESSBOOK":"Addressbook","NO_ADDRESSES":"You have no addresses stored!","FAIL_ADDRESSES":"Addresses not available. Try again later.","ADD_ADDRESS":"Add Address","CLOSE":"Close","COMPANY_NAME":"Company","CONFIRM_DELETE_ADDRESS_TITLE":"Delete Address","CONFIRM_ADDRESS_REMOVAL":"Are you sure you want to delete this address?","FULL_NAME":"Full Name","CONTACT_PHONE":"Phone","FAIL_CUSTOMER_DETAILS":"Customer details not available. Try again later.","DATE":"Date","NAME_REQUIRED":"Name Required","STREET":"Street","STREET_NUMBER":"Street Number","WELCOME":"Welcome","NOT_SET":"Not Set","ORDER_HISTORY":"Order History","ORDER_NUMBER":"Order Number","ORDER_STATUS":"Order Status","FAIL_ORDER":"Orders not available. Try again later.","NO_ORDERS":"You have no orders stored","ORDER_ITEM_COUNT":"{{number}} Item","ORDER_ITEMS_COUNT":"{{number}} Items","SHIPPING_DETAILS":"SHIPPING DETAILS","SAVE":"Save","UPDATE_PASSWORD":"Update password","CURRENT_PASSWORD":"Current password","NEW_PASSWORD":"New password","CONFIRM_NEW_PASSWORD":"Confirm new password","PASSWORDS_NO_MATCH":"Passwords do not match","WRONG_CURRENT_PASSWORD":"Please provide correct current password!","PASSWORD_TOO_SHORT":"Password too short","SHOW_ALL":"Show all","SHOW_LESS":"Show less","ITEMS_IN_ORDER":"Items in Order","SAVE_ADDRESS_ERROR":"An error occured and updates not saved. Save updates.","REMOVE_ADDRESS_ERROR":"Deleting address failed. Please try again.","UPDATE_DEFAULT_ADDRESS_ERROR":"Updating default address failed. Please try again.","EDIT_EMAIL_UPDATED":"Your email is being updated...","EDIT_EMAIL_SUCESSFULLY_UPDATED":"Email sucessfully updated","EDIT_EMAIL_CHANGED_MSG":"Your email has changed. You must sign in with your updated email","OOPS_MSG":"Oops!","EDIT_EMAIL_CHANGE_FAILED":"Something went wrong. Please reset your email again","RESET_EMAIL":"RESET EMAIL","EDIT_EMAIL_PASSWORD_NOT_CORRECT":"Password is not correct. Try again","EDIT_EMAIL_ALREADY_IN_USE":"This email is already in use. Try again","EDIT_EMAIL_SOMETHING_WENT_WRONG":"Something went wrong. Try again","FORGOT_PW":"Forgot your password?","PASSWORD":"Password","PASSWORD_MINCHAR":"Min. 6 characters","CONFIRM_PASSWORD":"Confirm Password","TOKEN":"Token","RESET_PASSWORD":"Reset Password","RESET_PW_TITLE":"Reset Your Password","RESET_PW_INSTRUCT":"Please create a new password.","FORGOT_PW_INSTRUCT":"Please enter your account email address below. An email will be sent to you with a link to reset your password.","REQUEST_PW_EXPIRED":"Reset Password Request Expired","REQUEST_PW_EXPIRED_MSG":"The request to reset your password has expired. Please enter your email to make a new request.","CHECK_EMAIL":"Check Your Email","CHECK_EMAIL_INSTRUCT":"...and follow the link to reset your password. The link will be valid for 24 hours.","CHECK_EMAIL_INSTRUCT_CHANGE_EMAIL":"...and follow the link to confirm change of your email. The link will be valid for 24 hours.","COOKIES_ENABLED_ERROR":"Cookies must be enabled in your browser to sign in. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.","CREATE_ACCOUNT_ERROR":"Customer account was created successfully, but cookies must be enabled to login. To find out more, see the Help or Preferences area of your browser. Once enabled, sign in.","PASSWORD_REQUIRED":"Password with 6 character minimum required.","PASSWORDS_MUST_MATCH":"Passwords must match.","PW_SUCCESS":"Success","PW_CHANGED_MSG":"Your password has been reset. You can now sign into your account.","INVALID_TOKEN":"This reset-password link is no longer valid. Please request a new one.","PW_CHANGE_FAILED":"Update of password failed.","RESET_PW_REPEAT":"Request another reset-password link.","FIELD_REQUIRED":"Field is required!","FIELD_TOO_SHORT":"Field too short!","FIELDS_NOT_MATCHING":"Fields not matching!","SERVER_UNAVAILABLE":"Server is unavailable, please try again later.","INVALID_CREDENTIALS":"You entered an invalid email or password.","PASSWORD_INVALID":"Password invalid - minimum of 6 characters required.","ACCOUNT_LOCKED":"Account has been locked due to excessive number of invalid login attempts. Please wait 5 minutes and try again.","ACCOUNT_ALREADY_EXISTS":"Email address already in use for existing account.","FORGOT_PASSWORD":"Forgot password?","EMAIL_NOT_FOUND":"There is no account associated with that email address.","ENTER_EMAIL":"Enter Email","ENTER_EXISTING_EMAIL":"Enter the email address of an existing account","LOGIN_FAILED":"Login failed","ACCOUNT_EMAIL":"Account Email","ERROR_TITLE":"Internal Error","ERROR_MESSAGE":"Oops! There's a problem.","ERROR_TITLE_401":"Unauthorized","ERROR_MESSAGE_401":"Oops! There's a problem. Your login credentials don't allow access to this page.","ERROR_TITLE_404":"Page not found","ERROR_MESSAGE_404":"Oops! There's a problem. This page doesn't exist.","ERROR_REDIRECT":"Here is a page to help you get back on track.","ERROR_BUTTON_TEXT":"HOMEPAGE","DR":"Dr.","MR":"Mr.","MRS":"Mrs.","MS":"Ms.","TITLE":"Title","COMPLETED":"Completed","CONFIRMED":"Confirmed","CREATED":"Created","DECLINED":"Declined","SHIPPED":"Shipped","CREDIT_CARD":"Credit Card","ON":"on","QUANTITY":"Quantity","SHIPPED_BY_ON":"Shipped by: {{carrier}} on {{shippedDate}}","TRACKING_NUMBER":"Tracking Number: {{trackingNumber}}","FOUND_FOR":"{{total}} found for {{searchString}}","SEARCH":"Search","SEARCH_RESULTS":"Search results","MOST_RELEVANT":"Most Relevant","RESULTS":"Results","SEE_ALL":"See All","SEARCH_UNAVAILABLE":"Search is currently unavailable.","NO_RESULTS_FOUND":"No results found.","IN":"in","TERMS_AND_CONDITIONS":"Terms & Conditions","CONTACT_US":"Contact Us","SITE_MAP":"Site Map"} \ No newline at end of file diff --git a/public/js/app/shared/settings.js b/public/js/app/shared/settings.js index 8728fc503..2a726f3b4 100644 --- a/public/js/app/shared/settings.js +++ b/public/js/app/shared/settings.js @@ -84,5 +84,7 @@ angular.module('ds.shared') unknown: 'unknown', languageUpdate: 'languageUpdate', siteUpdate: 'siteUpdate' - } + }, + + avatarImagePlaceholder: './img/user-icon_small_active.png' }); \ No newline at end of file diff --git a/public/js/app/shared/templates/sidebar-navigation.html b/public/js/app/shared/templates/sidebar-navigation.html index 2f46cea29..884951938 100644 --- a/public/js/app/shared/templates/sidebar-navigation.html +++ b/public/js/app/shared/templates/sidebar-navigation.html @@ -42,7 +42,7 @@
- +