diff --git a/packages/pwa-kit-create-app/CHANGELOG.md b/packages/pwa-kit-create-app/CHANGELOG.md
index ae13f61fd3..bbe648eba0 100644
--- a/packages/pwa-kit-create-app/CHANGELOG.md
+++ b/packages/pwa-kit-create-app/CHANGELOG.md
@@ -1,6 +1,6 @@
## v1.4.0-dev (Jan 06, 2022)
- Generate `test-project` with the correct Einstein's site id [#285](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/285)
-
+- Generator creates a project configured to use a single-locale [#325](https://github.com/SalesforceCommerceCloud/pwa-kit/pull/325)
## v1.3.0 (Jan 06, 2022)
## v1.1.0 (Sep 27, 2021)
diff --git a/packages/pwa-kit-create-app/assets/pwa/l10n.config.js b/packages/pwa-kit-create-app/assets/pwa/l10n.config.js
new file mode 100644
index 0000000000..807c8c2e0a
--- /dev/null
+++ b/packages/pwa-kit-create-app/assets/pwa/l10n.config.js
@@ -0,0 +1,24 @@
+/*
+ * Copyright (c) 2021, salesforce.com, inc.
+ * All rights reserved.
+ * SPDX-License-Identifier: BSD-3-Clause
+ * For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
+ */
+
+const pkgLocalizationConfig = {
+ l10n: {
+ supportedCurrencies: ['USD'],
+ defaultCurrency: 'USD',
+ supportedLocales: [
+ {
+ id: 'en-US',
+ preferredCurrency: 'USD'
+ }
+ ],
+ defaultLocale: 'en-US'
+ }
+}
+
+module.exports = {
+ pkgLocalizationConfig
+}
diff --git a/packages/pwa-kit-create-app/assets/pwa/pwa-kit.config.json b/packages/pwa-kit-create-app/assets/pwa/pwa-kit.config.json
new file mode 100644
index 0000000000..877ec7eaf5
--- /dev/null
+++ b/packages/pwa-kit-create-app/assets/pwa/pwa-kit.config.json
@@ -0,0 +1,5 @@
+{
+ "url": {
+ "locale": "none"
+ }
+}
diff --git a/packages/pwa-kit-create-app/scripts/create-mobify-app.js b/packages/pwa-kit-create-app/scripts/create-mobify-app.js
index 2e4760b6c3..24bdd8ab24 100755
--- a/packages/pwa-kit-create-app/scripts/create-mobify-app.js
+++ b/packages/pwa-kit-create-app/scripts/create-mobify-app.js
@@ -117,9 +117,11 @@ const runGenerator = (answers, {outputDir}) => {
extractTemplate('pwa', outputDir)
+ const {pkgLocalizationConfig} = require(`../assets/pwa/l10n.config`)
const pkgJsonPath = p.resolve(outputDir, 'package.json')
const pkgJSON = readJson(pkgJsonPath)
- const finalPkgData = merge(pkgJSON, answers['scaffold-pwa'])
+ const pkgDataWithAnswers = merge(pkgJSON, answers['scaffold-pwa'])
+ const finalPkgData = merge(pkgDataWithAnswers, pkgLocalizationConfig)
npmInstallables.forEach((pkgName) => {
const keys = ['dependencies', 'devDependencies']
@@ -150,6 +152,20 @@ const runGenerator = (answers, {outputDir}) => {
]
})
+ const PWAKitConfigJsonTemplatePath = p.resolve(
+ p.join(
+ process.cwd(),
+ 'packages',
+ 'pwa-kit-create-app',
+ 'assets',
+ 'pwa',
+ 'pwa-kit.config.json'
+ )
+ )
+ const PWAKitConfigJsonTemplate = readJson(PWAKitConfigJsonTemplatePath)
+ const PWAKitConfigJsonPath = p.resolve(outputDir, 'pwa-kit.config.json')
+ writeJson(PWAKitConfigJsonPath, PWAKitConfigJsonTemplate)
+
const APIConfigTemplate = require(`../assets/pwa/api.config`).template
const commerceApi = {
proxyPath: answers['scaffold-pwa'].mobify.ssrParameters.proxyConfigs[0].path,
@@ -299,7 +315,7 @@ const testProjectAnswers = () => {
projectId: 'scaffold-pwa',
instanceUrl: 'https://zzrf-001.sandbox.us01.dx.commercecloud.salesforce.com',
clientId: 'c9c45bfd-0ed3-4aa2-9971-40f88962b836',
- siteId: 'RefArchGlobal',
+ siteId: 'RefArch',
organizationId: 'f_ecom_zzrf_001',
shortCode: 'kv7kzm78',
einsteinId: '1ea06c6e-c936-4324-bcf0-fada93f83bb1',
diff --git a/packages/pwa/app/components/drawer-menu/index.test.js b/packages/pwa/app/components/drawer-menu/index.test.js
index e5a5d42d96..881355d255 100644
--- a/packages/pwa/app/components/drawer-menu/index.test.js
+++ b/packages/pwa/app/components/drawer-menu/index.test.js
@@ -38,12 +38,10 @@ test('Renders DrawerMenu with root', () => {
const drawer = document.querySelector('.chakra-portal')
const accordion = document.querySelector('.chakra-accordion')
- const localeSelector = document.querySelector('.sf-locale-selector')
const socialIcons = document.querySelector('.sf-social-icons')
expect(drawer).toBeInTheDocument()
expect(accordion).toBeInTheDocument()
- expect(localeSelector).toBeInTheDocument()
expect(socialIcons).toBeInTheDocument()
})
diff --git a/packages/pwa/app/components/header/index.test.js b/packages/pwa/app/components/header/index.test.js
index fa092f01a5..6a29f49633 100644
--- a/packages/pwa/app/components/header/index.test.js
+++ b/packages/pwa/app/components/header/index.test.js
@@ -9,7 +9,7 @@ import PropTypes from 'prop-types'
import {fireEvent, screen, waitFor} from '@testing-library/react'
import Header from './index'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import useCustomer from '../../commerce-api/hooks/useCustomer'
import {setupServer} from 'msw/node'
import {rest} from 'msw'
@@ -47,11 +47,11 @@ const MockedComponent = ({history}) => {
const onAccountClick = () => {
// Link to account page for registered customer, open auth modal otherwise
if (customer.isRegistered) {
- history.push('/en-GB/account')
+ history.push(getPathname('/account'))
}
}
const onWishlistClick = () => {
- history.push('/en-GB/account/wishlist')
+ history.push(getPathname('/account/wishlist'))
}
return (
@@ -112,7 +112,7 @@ beforeEach(() => {
// Since we're testing some navigation logic, we are using a simple Router
// around our component. We need to initialize the default route/path here.
- window.history.pushState({}, 'Account', '/en-GB/account')
+ window.history.pushState({}, 'Account', getPathname('/account'))
})
afterEach(() => {
localStorage.clear()
@@ -232,12 +232,12 @@ test('route to account page when an authenticated users click on account icon',
const accountIcon = document.querySelector('svg[aria-label="My account"]')
fireEvent.click(accountIcon)
await waitFor(() => {
- expect(history.push).toHaveBeenCalledWith('/en-GB/account')
+ expect(history.push).toHaveBeenCalledWith(getPathname('/account'))
})
fireEvent.keyDown(accountIcon, {key: 'Enter', code: 'Enter'})
await waitFor(() => {
- expect(history.push).toHaveBeenCalledWith('/en-GB/account')
+ expect(history.push).toHaveBeenCalledWith(getPathname('/account'))
})
})
@@ -283,7 +283,7 @@ test('route to wishlist page when an authenticated users click on wishlist icon'
const wishlistIcon = document.querySelector('button[aria-label="Wishlist"]')
fireEvent.click(wishlistIcon)
await waitFor(() => {
- expect(history.push).toHaveBeenCalledWith('/en-GB/account/wishlist')
+ expect(history.push).toHaveBeenCalledWith(getPathname('/account/wishlist'))
})
})
diff --git a/packages/pwa/app/components/image-gallery/index.test.js b/packages/pwa/app/components/image-gallery/index.test.js
index 1e129bb134..6f4aeb40dd 100644
--- a/packages/pwa/app/components/image-gallery/index.test.js
+++ b/packages/pwa/app/components/image-gallery/index.test.js
@@ -11,7 +11,7 @@ import {screen, fireEvent, waitFor} from '@testing-library/react'
import ImageGallery from './index'
import {Skeleton as ImageGallerySkeleton} from './index'
import {createMemoryHistory} from 'history'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
const MockComponent = ({imageGroups = [], selectedVariationAttributes = {}}) => {
return !imageGroups.length ? (
@@ -30,7 +30,7 @@ MockComponent.propTypes = {
describe('Image Gallery Component', () => {
test('renders component with all images', () => {
const history = createMemoryHistory()
- history.push('/en-GB/image-gallery')
+ history.push(getPathname('/image-gallery'))
renderWithProviders()
expect(screen.getAllByAltText(/Ruffle Front V-Neck Cardigan/).length).toEqual(3)
@@ -43,7 +43,7 @@ describe('Image Gallery Component', () => {
test('can select thumbnail image with enter keyboard', async () => {
const history = createMemoryHistory()
- history.push('/en-GB/image-gallery')
+ history.push(getPathname('/image-gallery'))
renderWithProviders(
diff --git a/packages/pwa/app/components/link/index.test.js b/packages/pwa/app/components/link/index.test.js
index d6f04fb673..c8b845a0af 100644
--- a/packages/pwa/app/components/link/index.test.js
+++ b/packages/pwa/app/components/link/index.test.js
@@ -5,8 +5,9 @@
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
import React from 'react'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import Link from './index'
+import {DEFAULT_LOCALE} from '../../constants'
import {getUrlConfig} from '../../utils/utils'
jest.mock('../../utils/utils', () => {
@@ -21,7 +22,7 @@ test('renders a link with locale prepended', () => {
locale: 'path'
}))
const {getByText} = renderWithProviders(My Page)
- expect(getByText(/My Page/i)).toHaveAttribute('href', '/en-GB/mypage')
+ expect(getByText(/My Page/i)).toHaveAttribute('href', getPathname('/mypage'))
})
test('renders a link with locale as query param', () => {
@@ -29,7 +30,7 @@ test('renders a link with locale as query param', () => {
locale: 'query_param'
}))
const {getByText} = renderWithProviders(My Page)
- expect(getByText(/My Page/i)).toHaveAttribute('href', '/mypage?locale=en-GB')
+ expect(getByText(/My Page/i)).toHaveAttribute('href', `/mypage?locale=${DEFAULT_LOCALE}`)
})
test('accepts `to` prop as well', () => {
@@ -37,7 +38,7 @@ test('accepts `to` prop as well', () => {
locale: 'path'
}))
const {getByText} = renderWithProviders(My Page)
- expect(getByText(/My Page/i)).toHaveAttribute('href', '/en-GB/mypage')
+ expect(getByText(/My Page/i)).toHaveAttribute('href', getPathname('/mypage'))
})
test('does not modify root url', () => {
diff --git a/packages/pwa/app/components/search/index.test.js b/packages/pwa/app/components/search/index.test.js
index 63a93cf131..b5df435cc7 100644
--- a/packages/pwa/app/components/search/index.test.js
+++ b/packages/pwa/app/components/search/index.test.js
@@ -5,7 +5,7 @@
* For full license text, see the LICENSE file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
import React from 'react'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import user from '@testing-library/user-event'
import {screen, waitFor} from '@testing-library/react'
import SearchInput from './index'
@@ -56,7 +56,7 @@ test('changes url when enter is pressed', async () => {
renderWithProviders()
const searchInput = document.querySelector('input[type="search"]')
await user.type(searchInput, 'Dresses{enter}')
- await waitFor(() => expect(window.location.pathname).toEqual('/en-GB/search'))
+ await waitFor(() => expect(window.location.pathname).toEqual(getPathname('/search')))
await waitFor(() => expect(window.location.search).toEqual('?q=Dresses'))
})
diff --git a/packages/pwa/app/hooks/use-auth-modal.test.js b/packages/pwa/app/hooks/use-auth-modal.test.js
index b8e80cb36b..b2c117b1df 100644
--- a/packages/pwa/app/hooks/use-auth-modal.test.js
+++ b/packages/pwa/app/hooks/use-auth-modal.test.js
@@ -7,7 +7,7 @@
import React from 'react'
import {screen, within, waitFor} from '@testing-library/react'
import user from '@testing-library/user-event'
-import {renderWithProviders} from '../utils/test-utils'
+import {renderWithProviders, getPathname} from '../utils/test-utils'
import {AuthModal, useAuthModal} from './use-auth-modal'
import {BrowserRouter as Router, Route} from 'react-router-dom'
import Account from '../pages/account'
@@ -125,7 +125,7 @@ const MockedComponent = () => {
-
+
@@ -245,6 +245,5 @@ test('Allows customer to create an account', async () => {
user.click(withinForm.getByText(/create account/i))
// wait for redirecting to account page
- expect(await screen.findByText(/customer@test.com/i, {}, {timeout: 30000})).toBeInTheDocument()
- expect(await screen.queryAllByText(/Log out/i, {}, {timeout: 30000}).length).toEqual(2)
+ expect(await screen.findByText(/welcome tester/i, {}, {timeout: 30000})).toBeInTheDocument()
})
diff --git a/packages/pwa/app/pages/account/index.test.js b/packages/pwa/app/pages/account/index.test.js
index cda60fa3d0..64f7398505 100644
--- a/packages/pwa/app/pages/account/index.test.js
+++ b/packages/pwa/app/pages/account/index.test.js
@@ -10,7 +10,7 @@ import {screen, waitFor, within} from '@testing-library/react'
import user from '@testing-library/user-event'
import {rest} from 'msw'
import {setupServer} from 'msw/node'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import {
mockedGuestCustomer,
mockedRegisteredCustomer,
@@ -20,7 +20,6 @@ import {
} from '../../commerce-api/mock-data'
import useCustomer from '../../commerce-api/hooks/useCustomer'
import Account from './index'
-import {getUrlConfig} from '../../utils/utils'
jest.mock('../../commerce-api/utils', () => {
const originalModule = jest.requireActual('../../commerce-api/utils')
@@ -30,14 +29,6 @@ jest.mock('../../commerce-api/utils', () => {
}
})
-jest.mock('../../utils/utils', () => {
- const original = jest.requireActual('../../utils/utils')
- return {
- ...original,
- getUrlConfig: jest.fn()
- }
-})
-
const MockedComponent = () => {
const customer = useCustomer()
@@ -49,7 +40,7 @@ const MockedComponent = () => {
return (
- } />
+ } />
)
}
@@ -98,13 +89,10 @@ const server = setupServer(
beforeEach(() => {
jest.resetModules()
server.listen({onUnhandledRequest: 'error'})
- getUrlConfig.mockImplementation(() => ({
- locale: 'path'
- }))
// Since we're testing some navigation logic, we are using a simple Router
// around our component. We need to initialize the default route/path here.
- window.history.pushState({}, 'Account', '/en-GB/account')
+ window.history.pushState({}, 'Account', getPathname('/account'))
})
afterEach(() => {
localStorage.clear()
@@ -119,7 +107,7 @@ test('Redirects to login page if the customer is not logged in', async () => {
})
)
renderWithProviders()
- await waitFor(() => expect(window.location.pathname).toEqual('/en-GB/login'))
+ await waitFor(() => expect(window.location.pathname).toEqual(getPathname('/login')))
})
test('Provides navigation for subpages', async () => {
@@ -128,11 +116,11 @@ test('Provides navigation for subpages', async () => {
const nav = within(screen.getByTestId('account-detail-nav'))
user.click(nav.getByText('Addresses'))
- await waitFor(() => expect(window.location.pathname).toEqual('/en-GB/account/addresses'))
+ await waitFor(() => expect(window.location.pathname).toEqual(getPathname('/account/addresses')))
user.click(nav.getByText('Order History'))
- await waitFor(() => expect(window.location.pathname).toEqual('/en-GB/account/orders'))
+ await waitFor(() => expect(window.location.pathname).toEqual(getPathname('/account/orders')))
user.click(nav.getByText('Payment Methods'))
- await waitFor(() => expect(window.location.pathname).toEqual('/en-GB/account/payments'))
+ await waitFor(() => expect(window.location.pathname).toEqual(getPathname('/account/payments')))
})
test('Renders account detail page by default for logged-in customer', async () => {
@@ -149,7 +137,7 @@ test('Allows customer to sign out', async () => {
expect(await screen.findByTestId('account-detail-page')).toBeInTheDocument()
user.click(screen.getAllByText(/Log Out/)[0])
await waitFor(() => {
- expect(window.location.pathname).toEqual('/en-GB/login')
+ expect(window.location.pathname).toEqual(getPathname('/login'))
})
})
diff --git a/packages/pwa/app/pages/account/orders.test.js b/packages/pwa/app/pages/account/orders.test.js
index 66c3bced55..c753df9579 100644
--- a/packages/pwa/app/pages/account/orders.test.js
+++ b/packages/pwa/app/pages/account/orders.test.js
@@ -10,7 +10,7 @@ import {screen} from '@testing-library/react'
import user from '@testing-library/user-event'
import {rest} from 'msw'
import {setupServer} from 'msw/node'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import {
mockedRegisteredCustomer,
mockOrderHistory,
@@ -18,15 +18,6 @@ import {
} from '../../commerce-api/mock-data'
import useCustomer from '../../commerce-api/hooks/useCustomer'
import Orders from './orders'
-import {getUrlConfig} from '../../utils/utils'
-
-jest.mock('../../utils/utils', () => {
- const original = jest.requireActual('../../utils/utils')
- return {
- ...original,
- getUrlConfig: jest.fn()
- }
-})
jest.mock('../../commerce-api/utils', () => {
const originalModule = jest.requireActual('../../commerce-api/utils')
@@ -51,7 +42,7 @@ const MockedComponent = () => {
return (
-
+
@@ -105,12 +96,10 @@ const server = setupServer(
// Set up and clean up
beforeEach(() => {
jest.resetModules()
- getUrlConfig.mockImplementation(() => ({
- locale: 'path'
- }))
+
server.listen({onUnhandledRequest: 'error'})
- window.history.pushState({}, 'Account', '/en-GB/account/orders')
+ window.history.pushState({}, 'Account', getPathname('/account/orders'))
})
afterEach(() => {
localStorage.clear()
diff --git a/packages/pwa/app/pages/checkout/index.test.js b/packages/pwa/app/pages/checkout/index.test.js
index 5ba8f09d03..aaae2e4b5e 100644
--- a/packages/pwa/app/pages/checkout/index.test.js
+++ b/packages/pwa/app/pages/checkout/index.test.js
@@ -11,7 +11,7 @@ import {screen, waitFor, waitForElementToBeRemoved, within} from '@testing-libra
import user from '@testing-library/user-event'
import {rest} from 'msw'
import {setupServer} from 'msw/node'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import useShopper from '../../commerce-api/hooks/useShopper'
import {
ocapiBasketWithItem,
@@ -24,7 +24,6 @@ import {
mockedCustomerProductLists,
productsResponse
} from '../../commerce-api/mock-data'
-import {getUrlConfig} from '../../utils/utils'
jest.setTimeout(60000)
@@ -48,14 +47,6 @@ jest.mock('../../commerce-api/utils', () => {
}
})
-jest.mock('../../utils/utils', () => {
- const original = jest.requireActual('../../utils/utils')
- return {
- ...original,
- getUrlConfig: jest.fn()
- }
-})
-
jest.mock('../../commerce-api/pkce', () => {
return {
createCodeVerifier: jest.fn().mockReturnValue('codeverifier'),
@@ -72,10 +63,10 @@ const WrappedCheckout = () => {
useShopper()
return (
-
+
-
+
success
@@ -169,9 +160,6 @@ const server = setupServer(
// Set up and clean up
beforeAll(() => {
- getUrlConfig.mockImplementation(() => ({
- locale: 'path'
- }))
jest.resetModules()
server.listen({onUnhandledRequest: 'error'})
})
@@ -284,7 +272,7 @@ test('Can proceed through checkout steps as guest', async () => {
)
// Set the initial browser router path and render our component tree.
- window.history.pushState({}, 'Checkout', '/en-GB/checkout')
+ window.history.pushState({}, 'Checkout', getPathname('/checkout'))
renderWithProviders()
// Wait for checkout to load and display first step
@@ -515,7 +503,7 @@ test('Can proceed through checkout as registered customer', async () => {
)
// Set the initial browser router path and render our component tree.
- window.history.pushState({}, 'Checkout', '/en-GB/checkout')
+ window.history.pushState({}, 'Checkout', getPathname('/checkout'))
renderWithProviders()
// Switch to login
@@ -598,7 +586,7 @@ test('Can proceed through checkout as registered customer', async () => {
user.click(placeOrderBtn)
await waitFor(() => {
- expect(window.location.pathname).toEqual('/en-GB/checkout/confirmation')
+ expect(window.location.pathname).toEqual(getPathname('/checkout/confirmation'))
})
})
@@ -672,7 +660,7 @@ test('Can edit address during checkout as a registered customer', async () => {
)
// Set the initial browser router path and render our component tree.
- window.history.pushState({}, 'Checkout', '/en-GB/checkout')
+ window.history.pushState({}, 'Checkout', getPathname('/checkout'))
renderWithProviders()
// Switch to login
@@ -799,7 +787,7 @@ test('Can add address during checkout as a registered customer', async () => {
)
// Set the initial browser router path and render our component tree.
- window.history.pushState({}, 'Checkout', '/en-GB/checkout')
+ window.history.pushState({}, 'Checkout', getPathname('/checkout'))
renderWithProviders()
// Switch to login
diff --git a/packages/pwa/app/pages/login/index.test.js b/packages/pwa/app/pages/login/index.test.js
index a146400a9a..3aeb5e8995 100644
--- a/packages/pwa/app/pages/login/index.test.js
+++ b/packages/pwa/app/pages/login/index.test.js
@@ -9,13 +9,12 @@ import {screen} from '@testing-library/react'
import user from '@testing-library/user-event'
import {rest} from 'msw'
import {setupServer} from 'msw/node'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import Login from '.'
import {BrowserRouter as Router, Route} from 'react-router-dom'
import Account from '../account'
import Registration from '../registration'
import ResetPassword from '../reset-password'
-import {getUrlConfig} from '../../utils/utils'
jest.setTimeout(60000)
@@ -29,14 +28,6 @@ const mockRegisteredCustomer = {
login: 'darek@test.com'
}
-jest.mock('../../utils/utils', () => {
- const original = jest.requireActual('../../utils/utils')
- return {
- ...original,
- getUrlConfig: jest.fn()
- }
-})
-
jest.mock('commerce-sdk-isomorphic', () => {
const sdk = jest.requireActual('commerce-sdk-isomorphic')
return {
@@ -102,13 +93,13 @@ const MockedComponent = () => {
return (
-
+
-
+
-
+
@@ -119,9 +110,6 @@ const server = setupServer()
// Set up and clean up
beforeEach(() => {
- getUrlConfig.mockImplementation(() => ({
- locale: 'path'
- }))
jest.resetModules()
server.listen({
onUnhandledRequest: 'error'
diff --git a/packages/pwa/app/pages/registration/index.test.jsx b/packages/pwa/app/pages/registration/index.test.jsx
index affd9aba81..c6f80c94c0 100644
--- a/packages/pwa/app/pages/registration/index.test.jsx
+++ b/packages/pwa/app/pages/registration/index.test.jsx
@@ -7,10 +7,9 @@
import React from 'react'
import {screen, within, waitFor} from '@testing-library/react'
import user from '@testing-library/user-event'
-import {renderWithProviders} from '../../utils/test-utils'
+import {renderWithProviders, getPathname} from '../../utils/test-utils'
import Registration from '.'
import {BrowserRouter as Router, Route} from 'react-router-dom'
-import {getUrlConfig} from '../../utils/utils'
import Account from '../account'
jest.setTimeout(60000)
@@ -40,14 +39,6 @@ jest.mock('../../commerce-api/auth', () => {
})
})
-jest.mock('../../utils/utils', () => {
- const original = jest.requireActual('../../utils/utils')
- return {
- ...original,
- getUrlConfig: jest.fn()
- }
-})
-
jest.mock('commerce-sdk-isomorphic', () => {
const sdk = jest.requireActual('commerce-sdk-isomorphic')
return {
@@ -131,7 +122,7 @@ const MockedComponent = () => {
return (
-
+
@@ -141,9 +132,6 @@ const MockedComponent = () => {
// Set up and clean up
// Set up and clean up
beforeEach(() => {
- getUrlConfig.mockImplementation(() => ({
- locale: 'path'
- }))
jest.useFakeTimers()
})
afterEach(() => {
diff --git a/packages/pwa/app/pages/reset-password/index.test.jsx b/packages/pwa/app/pages/reset-password/index.test.jsx
index 77eb66ea82..c6081c3c25 100644
--- a/packages/pwa/app/pages/reset-password/index.test.jsx
+++ b/packages/pwa/app/pages/reset-password/index.test.jsx
@@ -9,9 +9,8 @@ import {screen, waitFor, within} from '@testing-library/react'
import user from '@testing-library/user-event'
import {rest} from 'msw'
import {setupServer} from 'msw/node'
-import {renderWithProviders} from '../../utils/test-utils'
+import {getPathname, renderWithProviders} from '../../utils/test-utils'
import ResetPassword from '.'
-import {getUrlConfig} from '../../utils/utils'
jest.setTimeout(60000)
@@ -24,13 +23,6 @@ const mockRegisteredCustomer = {
lastName: 'Testing',
login: 'darek@test.com'
}
-jest.mock('../../utils/utils', () => {
- const original = jest.requireActual('../../utils/utils')
- return {
- ...original,
- getUrlConfig: jest.fn()
- }
-})
jest.mock('commerce-sdk-isomorphic', () => {
const sdk = jest.requireActual('commerce-sdk-isomorphic')
@@ -105,9 +97,6 @@ const server = setupServer(
// Set up and clean up
beforeEach(() => {
- getUrlConfig.mockImplementation(() => ({
- locale: 'path'
- }))
jest.resetModules()
server.listen({
onUnhandledRequest: 'error'
@@ -128,7 +117,7 @@ test('Allows customer to go to sign in page', async () => {
user.click(screen.getByText('Sign in'))
await waitFor(() => {
- expect(window.location.pathname).toEqual('/en-GB/login')
+ expect(window.location.pathname).toEqual(getPathname('/login'))
})
})
@@ -161,7 +150,7 @@ test('Allows customer to generate password token', async () => {
user.click(screen.getByText('Back to Sign In'))
await waitFor(() => {
- expect(window.location.pathname).toEqual('/en-GB/login')
+ expect(window.location.pathname).toEqual(getPathname('/login'))
})
})
diff --git a/packages/pwa/app/translations/compiled/en-US.json b/packages/pwa/app/translations/compiled/en-US.json
new file mode 100644
index 0000000000..c1c3e89a43
--- /dev/null
+++ b/packages/pwa/app/translations/compiled/en-US.json
@@ -0,0 +1,3318 @@
+{
+ "account.accordion.button.my_account": [
+ {
+ "type": 0,
+ "value": "My Account"
+ }
+ ],
+ "account.heading.my_account": [
+ {
+ "type": 0,
+ "value": "My Account"
+ }
+ ],
+ "account.logout_button.button.log_out": [
+ {
+ "type": 0,
+ "value": "Log Out"
+ }
+ ],
+ "account_addresses.badge.default": [
+ {
+ "type": 0,
+ "value": "Default"
+ }
+ ],
+ "account_addresses.button.add_address": [
+ {
+ "type": 0,
+ "value": "Add Address"
+ }
+ ],
+ "account_addresses.info.address_updated": [
+ {
+ "type": 0,
+ "value": "Address updated"
+ }
+ ],
+ "account_addresses.info.new_address_saved": [
+ {
+ "type": 0,
+ "value": "New address saved"
+ }
+ ],
+ "account_addresses.page_action_placeholder.button.add_address": [
+ {
+ "type": 0,
+ "value": "Add Address"
+ }
+ ],
+ "account_addresses.page_action_placeholder.heading.no_saved_addresses": [
+ {
+ "type": 0,
+ "value": "No Saved Addresses"
+ }
+ ],
+ "account_addresses.page_action_placeholder.message.add_new_address": [
+ {
+ "type": 0,
+ "value": "Add a new address method for faster checkout."
+ }
+ ],
+ "account_addresses.title.addresses": [
+ {
+ "type": 0,
+ "value": "Addresses"
+ }
+ ],
+ "account_detail.title.account_details": [
+ {
+ "type": 0,
+ "value": "Account Details"
+ }
+ ],
+ "account_order_detail.heading.billing_address": [
+ {
+ "type": 0,
+ "value": "Billing Address"
+ }
+ ],
+ "account_order_detail.heading.num_of_items": [
+ {
+ "type": 1,
+ "value": "count"
+ },
+ {
+ "type": 0,
+ "value": " items"
+ }
+ ],
+ "account_order_detail.heading.payment_method": [
+ {
+ "type": 0,
+ "value": "Payment Method"
+ }
+ ],
+ "account_order_detail.heading.shipping_address": [
+ {
+ "type": 0,
+ "value": "Shipping Address"
+ }
+ ],
+ "account_order_detail.heading.shipping_method": [
+ {
+ "type": 0,
+ "value": "Shipping Method"
+ }
+ ],
+ "account_order_detail.label.order_number": [
+ {
+ "type": 0,
+ "value": "Order Number: "
+ },
+ {
+ "type": 1,
+ "value": "orderNumber"
+ }
+ ],
+ "account_order_detail.label.ordered_date": [
+ {
+ "type": 0,
+ "value": "Ordered: "
+ },
+ {
+ "type": 1,
+ "value": "date"
+ }
+ ],
+ "account_order_detail.label.pending_tracking_number": [
+ {
+ "type": 0,
+ "value": "Pending"
+ }
+ ],
+ "account_order_detail.label.tracking_number": [
+ {
+ "type": 0,
+ "value": "Tracking Number"
+ }
+ ],
+ "account_order_detail.link.back_to_history": [
+ {
+ "type": 0,
+ "value": "Back to Order History"
+ }
+ ],
+ "account_order_detail.title.order_details": [
+ {
+ "type": 0,
+ "value": "Order Details"
+ }
+ ],
+ "account_order_history.button.continue_shopping": [
+ {
+ "type": 0,
+ "value": "Continue Shopping"
+ }
+ ],
+ "account_order_history.description.once_you_place_order": [
+ {
+ "type": 0,
+ "value": "Once you place an order the details will show up here."
+ }
+ ],
+ "account_order_history.heading.no_order_yet": [
+ {
+ "type": 0,
+ "value": "You haven't placed an order yet."
+ }
+ ],
+ "account_order_history.label.num_of_items": [
+ {
+ "type": 1,
+ "value": "count"
+ },
+ {
+ "type": 0,
+ "value": " items"
+ }
+ ],
+ "account_order_history.label.order_number": [
+ {
+ "type": 0,
+ "value": "Order Number: "
+ },
+ {
+ "type": 1,
+ "value": "orderNumber"
+ }
+ ],
+ "account_order_history.label.ordered_date": [
+ {
+ "type": 0,
+ "value": "Ordered: "
+ },
+ {
+ "type": 1,
+ "value": "date"
+ }
+ ],
+ "account_order_history.label.shipped_to": [
+ {
+ "type": 0,
+ "value": "Shipped to: "
+ },
+ {
+ "type": 1,
+ "value": "name"
+ }
+ ],
+ "account_order_history.link.view_details": [
+ {
+ "type": 0,
+ "value": "View details"
+ }
+ ],
+ "account_order_history.title.order_history": [
+ {
+ "type": 0,
+ "value": "Order History"
+ }
+ ],
+ "account_payment_methods.button.add_method": [
+ {
+ "type": 0,
+ "value": "Add Payment Method"
+ }
+ ],
+ "account_payment_methods.description.add_method_for_faster_checkout": [
+ {
+ "type": 0,
+ "value": "Add a new payment method for faster checkout."
+ }
+ ],
+ "account_payment_methods.heading.no_saved_methods": [
+ {
+ "type": 0,
+ "value": "No Saved Payment Methods"
+ }
+ ],
+ "account_payment_methods.info.new_method_saved": [
+ {
+ "type": 0,
+ "value": "New Payment Method Saved"
+ }
+ ],
+ "account_payment_methods.title.payment_methods": [
+ {
+ "type": 0,
+ "value": "Payment Methods"
+ }
+ ],
+ "account_wishlist.button.continue_shopping": [
+ {
+ "type": 0,
+ "value": "Continue Shopping"
+ }
+ ],
+ "account_wishlist.description.continue_shopping": [
+ {
+ "type": 0,
+ "value": "Continue shopping and add items to your wishlist."
+ }
+ ],
+ "account_wishlist.heading.no_wishlist": [
+ {
+ "type": 0,
+ "value": "No Wishlist Items"
+ }
+ ],
+ "account_wishlist.title.wishlist": [
+ {
+ "type": 0,
+ "value": "Wishlist"
+ }
+ ],
+ "action_card.action.edit": [
+ {
+ "type": 0,
+ "value": "Edit"
+ }
+ ],
+ "action_card.action.remove": [
+ {
+ "type": 0,
+ "value": "Remove"
+ }
+ ],
+ "add_to_cart_modal.info.added_to_cart": [
+ {
+ "type": 1,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " "
+ },
+ {
+ "offset": 0,
+ "options": {
+ "one": {
+ "value": [
+ {
+ "type": 0,
+ "value": "item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 0,
+ "value": "items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " added to cart"
+ }
+ ],
+ "add_to_cart_modal.label.cart_subtotal": [
+ {
+ "type": 0,
+ "value": "Cart Subtotal ("
+ },
+ {
+ "type": 1,
+ "value": "itemAccumulatedCount"
+ },
+ {
+ "type": 0,
+ "value": " item)"
+ }
+ ],
+ "add_to_cart_modal.label.quantity": [
+ {
+ "type": 0,
+ "value": "Qty"
+ }
+ ],
+ "add_to_cart_modal.link.checkout": [
+ {
+ "type": 0,
+ "value": "Proceed to Checkout"
+ }
+ ],
+ "add_to_cart_modal.link.view_cart": [
+ {
+ "type": 0,
+ "value": "View Cart"
+ }
+ ],
+ "add_to_cart_modal.recommended_products.title.might_also_like": [
+ {
+ "type": 0,
+ "value": "You Might Also Like"
+ }
+ ],
+ "auth_modal.description.now_signed_in": [
+ {
+ "type": 0,
+ "value": "You're now signed in."
+ }
+ ],
+ "auth_modal.error.incorrect_email_or_password": [
+ {
+ "type": 0,
+ "value": "Something's not right with your email or password. Try again."
+ }
+ ],
+ "auth_modal.info.welcome_user": [
+ {
+ "type": 0,
+ "value": "Welcome "
+ },
+ {
+ "type": 1,
+ "value": "name"
+ },
+ {
+ "type": 0,
+ "value": ","
+ }
+ ],
+ "auth_modal.password_reset_success.button.back_to_sign_in": [
+ {
+ "type": 0,
+ "value": "Back to Sign In"
+ }
+ ],
+ "auth_modal.password_reset_success.info.will_email_shortly": [
+ {
+ "type": 0,
+ "value": "You will receive an email at "
+ },
+ {
+ "children": [
+ {
+ "type": 1,
+ "value": "email"
+ }
+ ],
+ "type": 8,
+ "value": "b"
+ },
+ {
+ "type": 0,
+ "value": " with a link to reset your password shortly."
+ }
+ ],
+ "auth_modal.password_reset_success.title.password_reset": [
+ {
+ "type": 0,
+ "value": "Password Reset"
+ }
+ ],
+ "card_payment_form.heading.new_payment_method": [
+ {
+ "type": 0,
+ "value": "Add New Payment Method"
+ }
+ ],
+ "cart.info.added_to_wishlist": [
+ {
+ "type": 1,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " "
+ },
+ {
+ "offset": 0,
+ "options": {
+ "one": {
+ "value": [
+ {
+ "type": 0,
+ "value": "item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 0,
+ "value": "items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " added to wishlist"
+ }
+ ],
+ "cart.info.removed_from_cart": [
+ {
+ "type": 0,
+ "value": "Item removed from cart"
+ }
+ ],
+ "cart.recommended_products.title.may_also_like": [
+ {
+ "type": 0,
+ "value": "You May Also Like"
+ }
+ ],
+ "cart.recommended_products.title.recently_viewed": [
+ {
+ "type": 0,
+ "value": "Recently Viewed"
+ }
+ ],
+ "cart_cta.link.checkout": [
+ {
+ "type": 0,
+ "value": "Proceed to Checkout"
+ }
+ ],
+ "cart_secondary_button_group.action.added_to_wishlist": [
+ {
+ "type": 0,
+ "value": "Add to Wishlist"
+ }
+ ],
+ "cart_secondary_button_group.action.edit": [
+ {
+ "type": 0,
+ "value": "Edit"
+ }
+ ],
+ "cart_secondary_button_group.action.remove": [
+ {
+ "type": 0,
+ "value": "Remove"
+ }
+ ],
+ "cart_secondary_button_group.label.this_is_gift": [
+ {
+ "type": 0,
+ "value": "This is a gift."
+ }
+ ],
+ "cart_secondary_button_group.link_learn_more": [
+ {
+ "type": 0,
+ "value": "Learn More"
+ }
+ ],
+ "cart_skeleton.heading.order_summary": [
+ {
+ "type": 0,
+ "value": "Order Summary"
+ }
+ ],
+ "cart_skeleton.title.cart": [
+ {
+ "type": 0,
+ "value": "Cart"
+ }
+ ],
+ "cart_title.title.cart_num_of_items": [
+ {
+ "type": 0,
+ "value": "Cart ("
+ },
+ {
+ "offset": 0,
+ "options": {
+ "=0": {
+ "value": [
+ {
+ "type": 0,
+ "value": "0 items"
+ }
+ ]
+ },
+ "one": {
+ "value": [
+ {
+ "type": 7
+ },
+ {
+ "type": 0,
+ "value": " item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 7
+ },
+ {
+ "type": 0,
+ "value": " items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "itemCount"
+ },
+ {
+ "type": 0,
+ "value": ")"
+ }
+ ],
+ "cc_radio_group.action.remove": [
+ {
+ "type": 0,
+ "value": "Remove"
+ }
+ ],
+ "cc_radio_group.button.add_new_card": [
+ {
+ "type": 0,
+ "value": "Add New Card"
+ }
+ ],
+ "checkout.button.place_order": [
+ {
+ "type": 0,
+ "value": "Place Order"
+ }
+ ],
+ "checkout_confirmation.button.create_account": [
+ {
+ "type": 0,
+ "value": "Create Account"
+ }
+ ],
+ "checkout_confirmation.heading.billing_address": [
+ {
+ "type": 0,
+ "value": "Billing Address"
+ }
+ ],
+ "checkout_confirmation.heading.create_account": [
+ {
+ "type": 0,
+ "value": "Create an account for faster checkout"
+ }
+ ],
+ "checkout_confirmation.heading.credit_card": [
+ {
+ "type": 0,
+ "value": "Credit Card"
+ }
+ ],
+ "checkout_confirmation.heading.delivery_details": [
+ {
+ "type": 0,
+ "value": "Delivery Details"
+ }
+ ],
+ "checkout_confirmation.heading.order_summary": [
+ {
+ "type": 0,
+ "value": "Order Summary"
+ }
+ ],
+ "checkout_confirmation.heading.payment_details": [
+ {
+ "type": 0,
+ "value": "Payment Details"
+ }
+ ],
+ "checkout_confirmation.heading.shipping_address": [
+ {
+ "type": 0,
+ "value": "Shipping Address"
+ }
+ ],
+ "checkout_confirmation.heading.shipping_method": [
+ {
+ "type": 0,
+ "value": "Shipping Method"
+ }
+ ],
+ "checkout_confirmation.heading.thank_you_for_order": [
+ {
+ "type": 0,
+ "value": "Thank you for your order!"
+ }
+ ],
+ "checkout_confirmation.label.free": [
+ {
+ "type": 0,
+ "value": "Free"
+ }
+ ],
+ "checkout_confirmation.label.order_number": [
+ {
+ "type": 0,
+ "value": "Order Number"
+ }
+ ],
+ "checkout_confirmation.label.order_total": [
+ {
+ "type": 0,
+ "value": "Order Total"
+ }
+ ],
+ "checkout_confirmation.label.promo_applied": [
+ {
+ "type": 0,
+ "value": "Promotion applied"
+ }
+ ],
+ "checkout_confirmation.label.shipping": [
+ {
+ "type": 0,
+ "value": "Shipping"
+ }
+ ],
+ "checkout_confirmation.label.subtotal": [
+ {
+ "type": 0,
+ "value": "Subtotal"
+ }
+ ],
+ "checkout_confirmation.label.tax": [
+ {
+ "type": 0,
+ "value": "Tax"
+ }
+ ],
+ "checkout_confirmation.link.continue_shopping": [
+ {
+ "type": 0,
+ "value": "Continue Shopping"
+ }
+ ],
+ "checkout_confirmation.link.login": [
+ {
+ "type": 0,
+ "value": "Log in here"
+ }
+ ],
+ "checkout_confirmation.message.already_has_account": [
+ {
+ "type": 0,
+ "value": "This email already has an account."
+ }
+ ],
+ "checkout_confirmation.message.num_of_items_in_order": [
+ {
+ "offset": 0,
+ "options": {
+ "=0": {
+ "value": [
+ {
+ "type": 0,
+ "value": "0 items"
+ }
+ ]
+ },
+ "one": {
+ "value": [
+ {
+ "type": 7
+ },
+ {
+ "type": 0,
+ "value": " item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 7
+ },
+ {
+ "type": 0,
+ "value": " items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "itemCount"
+ }
+ ],
+ "checkout_confirmation.message.will_email_shortly": [
+ {
+ "type": 0,
+ "value": "We will send an email to "
+ },
+ {
+ "children": [
+ {
+ "type": 1,
+ "value": "email"
+ }
+ ],
+ "type": 8,
+ "value": "b"
+ },
+ {
+ "type": 0,
+ "value": " with your confirmation number and receipt shortly."
+ }
+ ],
+ "checkout_footer.link.privacy_policy": [
+ {
+ "type": 0,
+ "value": "Privacy Policy"
+ }
+ ],
+ "checkout_footer.link.returns_exchanges": [
+ {
+ "type": 0,
+ "value": "Returns & Exchanges"
+ }
+ ],
+ "checkout_footer.link.shipping": [
+ {
+ "type": 0,
+ "value": "Shipping"
+ }
+ ],
+ "checkout_footer.link.site_map": [
+ {
+ "type": 0,
+ "value": "Site Map"
+ }
+ ],
+ "checkout_footer.link.terms_conditions": [
+ {
+ "type": 0,
+ "value": "Terms & Conditions"
+ }
+ ],
+ "checkout_footer.message.copyright": [
+ {
+ "type": 0,
+ "value": "2021 Salesforce or its affiliates. All rights reserved. This is a demo store only. Orders made WILL NOT be processed."
+ }
+ ],
+ "checkout_header.link.cart": [
+ {
+ "type": 0,
+ "value": "Back to cart"
+ }
+ ],
+ "checkout_payment.action.remove": [
+ {
+ "type": 0,
+ "value": "Remove"
+ }
+ ],
+ "checkout_payment.button.review_order": [
+ {
+ "type": 0,
+ "value": "Review Order"
+ }
+ ],
+ "checkout_payment.heading.billing_address": [
+ {
+ "type": 0,
+ "value": "Billing Address"
+ }
+ ],
+ "checkout_payment.heading.credit_card": [
+ {
+ "type": 0,
+ "value": "Credit Card"
+ }
+ ],
+ "checkout_payment.label.same_as_shipping": [
+ {
+ "type": 0,
+ "value": "Same as shipping address"
+ }
+ ],
+ "checkout_payment.title.payment": [
+ {
+ "type": 0,
+ "value": "Payment"
+ }
+ ],
+ "confirmation_modal.default.action.no": [
+ {
+ "type": 0,
+ "value": "No"
+ }
+ ],
+ "confirmation_modal.default.action.yes": [
+ {
+ "type": 0,
+ "value": "Yes"
+ }
+ ],
+ "confirmation_modal.default.message.you_want_to_continue": [
+ {
+ "type": 0,
+ "value": "Are you sure you want to continue?"
+ }
+ ],
+ "confirmation_modal.default.title.confirm_action": [
+ {
+ "type": 0,
+ "value": "Confirm Action"
+ }
+ ],
+ "confirmation_modal.remove_cart_item.action.no": [
+ {
+ "type": 0,
+ "value": "No, keep item"
+ }
+ ],
+ "confirmation_modal.remove_cart_item.action.yes": [
+ {
+ "type": 0,
+ "value": "Yes, remove item"
+ }
+ ],
+ "confirmation_modal.remove_cart_item.message.sure_to_remove": [
+ {
+ "type": 0,
+ "value": "Are you sure you want to remove this item from your cart?"
+ }
+ ],
+ "confirmation_modal.remove_cart_item.title.confirm_remove": [
+ {
+ "type": 0,
+ "value": "Confirm Remove Item"
+ }
+ ],
+ "confirmation_modal.remove_wishlist_item.action.no": [
+ {
+ "type": 0,
+ "value": "No, keep item"
+ }
+ ],
+ "confirmation_modal.remove_wishlist_item.action.yes": [
+ {
+ "type": 0,
+ "value": "Yes, remove item"
+ }
+ ],
+ "confirmation_modal.remove_wishlist_item.message.sure_to_remove": [
+ {
+ "type": 0,
+ "value": "Are you sure you want to remove this item from your wishlist?"
+ }
+ ],
+ "confirmation_modal.remove_wishlist_item.title.confirm_remove": [
+ {
+ "type": 0,
+ "value": "Confirm Remove Item"
+ }
+ ],
+ "contact_info.action.sign_out": [
+ {
+ "type": 0,
+ "value": "Sign Out"
+ }
+ ],
+ "contact_info.button.already_have_account": [
+ {
+ "type": 0,
+ "value": "Already have an account? Log in"
+ }
+ ],
+ "contact_info.button.checkout_as_guest": [
+ {
+ "type": 0,
+ "value": "Checkout as Guest"
+ }
+ ],
+ "contact_info.button.login": [
+ {
+ "type": 0,
+ "value": "Log In"
+ }
+ ],
+ "contact_info.error.incorrect_username_or_password": [
+ {
+ "type": 0,
+ "value": "Incorrect username or password, please try again."
+ }
+ ],
+ "contact_info.link.forgot_password": [
+ {
+ "type": 0,
+ "value": "Forgot password?"
+ }
+ ],
+ "contact_info.title.contact_info": [
+ {
+ "type": 0,
+ "value": "Contact Info"
+ }
+ ],
+ "credit_card_fields.tool_tip.security_code": [
+ {
+ "type": 0,
+ "value": "This "
+ },
+ {
+ "type": 1,
+ "value": "length"
+ },
+ {
+ "type": 0,
+ "value": "-digit code can be found on the "
+ },
+ {
+ "type": 1,
+ "value": "side"
+ },
+ {
+ "type": 0,
+ "value": " of your card."
+ }
+ ],
+ "drawer_menu.button.account_details": [
+ {
+ "type": 0,
+ "value": "Account Details"
+ }
+ ],
+ "drawer_menu.button.addresses": [
+ {
+ "type": 0,
+ "value": "Addresses"
+ }
+ ],
+ "drawer_menu.button.log_out": [
+ {
+ "type": 0,
+ "value": "Log Out"
+ }
+ ],
+ "drawer_menu.button.my_account": [
+ {
+ "type": 0,
+ "value": "My Account"
+ }
+ ],
+ "drawer_menu.button.order_history": [
+ {
+ "type": 0,
+ "value": "Order History"
+ }
+ ],
+ "drawer_menu.button.payment_methods": [
+ {
+ "type": 0,
+ "value": "Payment Methods"
+ }
+ ],
+ "drawer_menu.link.about_us": [
+ {
+ "type": 0,
+ "value": "About Us"
+ }
+ ],
+ "drawer_menu.link.customer_support": [
+ {
+ "type": 0,
+ "value": "Customer Support"
+ }
+ ],
+ "drawer_menu.link.customer_support.contact_us": [
+ {
+ "type": 0,
+ "value": "Contact Us"
+ }
+ ],
+ "drawer_menu.link.customer_support.shipping_and_returns": [
+ {
+ "type": 0,
+ "value": "Shipping & Returns"
+ }
+ ],
+ "drawer_menu.link.our_company": [
+ {
+ "type": 0,
+ "value": "Our Company"
+ }
+ ],
+ "drawer_menu.link.privacy_and_security": [
+ {
+ "type": 0,
+ "value": "Privacy & Security"
+ }
+ ],
+ "drawer_menu.link.privacy_policy": [
+ {
+ "type": 0,
+ "value": "Privacy Policy"
+ }
+ ],
+ "drawer_menu.link.shop_all": [
+ {
+ "type": 0,
+ "value": "Shop All"
+ }
+ ],
+ "drawer_menu.link.sign_in": [
+ {
+ "type": 0,
+ "value": "Sign In"
+ }
+ ],
+ "drawer_menu.link.site_map": [
+ {
+ "type": 0,
+ "value": "Site Map"
+ }
+ ],
+ "drawer_menu.link.store_locator": [
+ {
+ "type": 0,
+ "value": "Store Locator"
+ }
+ ],
+ "drawer_menu.link.terms_and_conditions": [
+ {
+ "type": 0,
+ "value": "Terms & Conditions"
+ }
+ ],
+ "empty_cart.description.empty_cart": [
+ {
+ "type": 0,
+ "value": "Your cart is empty."
+ }
+ ],
+ "empty_cart.link.continue_shopping": [
+ {
+ "type": 0,
+ "value": "Continue Shopping"
+ }
+ ],
+ "empty_cart.link.sign_in": [
+ {
+ "type": 0,
+ "value": "Sign In"
+ }
+ ],
+ "empty_cart.message.continue_shopping": [
+ {
+ "type": 0,
+ "value": "Continue shopping to add items to your cart."
+ }
+ ],
+ "empty_cart.message.sign_in_or_continue_shopping": [
+ {
+ "type": 0,
+ "value": "Sign in to retrieve your saved items or continue shopping."
+ }
+ ],
+ "empty_search_results.info.cant_find_anything_for_category": [
+ {
+ "type": 0,
+ "value": "We couldn’t find anything for "
+ },
+ {
+ "type": 1,
+ "value": "category"
+ },
+ {
+ "type": 0,
+ "value": ". Try searching for a product or "
+ },
+ {
+ "type": 1,
+ "value": "link"
+ },
+ {
+ "type": 0,
+ "value": "."
+ }
+ ],
+ "empty_search_results.info.cant_find_anything_for_query": [
+ {
+ "type": 0,
+ "value": "We couldn’t find anything for \""
+ },
+ {
+ "type": 1,
+ "value": "searchQuery"
+ },
+ {
+ "type": 0,
+ "value": "\"."
+ }
+ ],
+ "empty_search_results.info.double_check_spelling": [
+ {
+ "type": 0,
+ "value": "Double-check your spelling and try again or "
+ },
+ {
+ "type": 1,
+ "value": "link"
+ },
+ {
+ "type": 0,
+ "value": "."
+ }
+ ],
+ "empty_search_results.link.contact_us": [
+ {
+ "type": 0,
+ "value": "Contact Us"
+ }
+ ],
+ "empty_search_results.recommended_products.title.most_viewed": [
+ {
+ "type": 0,
+ "value": "Most Viewed"
+ }
+ ],
+ "empty_search_results.recommended_products.title.top_sellers": [
+ {
+ "type": 0,
+ "value": "Top Sellers"
+ }
+ ],
+ "footer.column.account": [
+ {
+ "type": 0,
+ "value": "Account"
+ }
+ ],
+ "footer.column.customer_support": [
+ {
+ "type": 0,
+ "value": "Customer Support"
+ }
+ ],
+ "footer.column.our_company": [
+ {
+ "type": 0,
+ "value": "Our Company"
+ }
+ ],
+ "footer.link.about_us": [
+ {
+ "type": 0,
+ "value": "About Us"
+ }
+ ],
+ "footer.link.contact_us": [
+ {
+ "type": 0,
+ "value": "Contact Us"
+ }
+ ],
+ "footer.link.order_status": [
+ {
+ "type": 0,
+ "value": "Order Status"
+ }
+ ],
+ "footer.link.privacy_policy": [
+ {
+ "type": 0,
+ "value": "Privacy Policy"
+ }
+ ],
+ "footer.link.shipping": [
+ {
+ "type": 0,
+ "value": "Shipping"
+ }
+ ],
+ "footer.link.signin_create_account": [
+ {
+ "type": 0,
+ "value": "Sign in or create account"
+ }
+ ],
+ "footer.link.site_map": [
+ {
+ "type": 0,
+ "value": "Site Map"
+ }
+ ],
+ "footer.link.store_locator": [
+ {
+ "type": 0,
+ "value": "Store Locator"
+ }
+ ],
+ "footer.link.terms_conditions": [
+ {
+ "type": 0,
+ "value": "Terms & Conditions"
+ }
+ ],
+ "footer.message.copyright": [
+ {
+ "type": 0,
+ "value": "2021 Salesforce or its affiliates. All rights reserved. This is a demo store only. Orders made WILL NOT be processed."
+ }
+ ],
+ "footer.subscribe.button.sign_up": [
+ {
+ "type": 0,
+ "value": "Sign Up"
+ }
+ ],
+ "footer.subscribe.description.sign_up": [
+ {
+ "type": 0,
+ "value": "Sign up to stay in the loop about the hottest deals"
+ }
+ ],
+ "footer.subscribe.heading.first_to_know": [
+ {
+ "type": 0,
+ "value": "Be the first to know"
+ }
+ ],
+ "form_action_buttons.button.cancel": [
+ {
+ "type": 0,
+ "value": "Cancel"
+ }
+ ],
+ "form_action_buttons.button.save": [
+ {
+ "type": 0,
+ "value": "Save"
+ }
+ ],
+ "global.account.link.account_details": [
+ {
+ "type": 0,
+ "value": "Account Details"
+ }
+ ],
+ "global.account.link.addresses": [
+ {
+ "type": 0,
+ "value": "Addresses"
+ }
+ ],
+ "global.account.link.order_history": [
+ {
+ "type": 0,
+ "value": "Order History"
+ }
+ ],
+ "global.account.link.payment_methods": [
+ {
+ "type": 0,
+ "value": "Payment Methods"
+ }
+ ],
+ "global.account.link.wishlist": [
+ {
+ "type": 0,
+ "value": "Wishlist"
+ }
+ ],
+ "global.error.something_went_wrong": [
+ {
+ "type": 0,
+ "value": "Something went wrong. Try again!"
+ }
+ ],
+ "header.button.assistive_msg.logo": [
+ {
+ "type": 0,
+ "value": "Logo"
+ }
+ ],
+ "header.button.assistive_msg.menu": [
+ {
+ "type": 0,
+ "value": "Menu"
+ }
+ ],
+ "header.button.assistive_msg.my_account": [
+ {
+ "type": 0,
+ "value": "My account"
+ }
+ ],
+ "header.button.assistive_msg.my_cart": [
+ {
+ "type": 0,
+ "value": "My cart"
+ }
+ ],
+ "header.button.assistive_msg.wishlist": [
+ {
+ "type": 0,
+ "value": "Wishlist"
+ }
+ ],
+ "header.field.placeholder.search_for_products": [
+ {
+ "type": 0,
+ "value": "Search for products..."
+ }
+ ],
+ "header.popover.action.log_out": [
+ {
+ "type": 0,
+ "value": "Log out"
+ }
+ ],
+ "header.popover.title.my_account": [
+ {
+ "type": 0,
+ "value": "My Account"
+ }
+ ],
+ "home.description.contact_our_staff": [
+ {
+ "type": 0,
+ "value": "Contact our support staff."
+ }
+ ],
+ "home.description.features": [
+ {
+ "type": 0,
+ "value": "Out-of-the-box features so that you focus only on adding enhancements."
+ }
+ ],
+ "home.description.get_you_to_the_right_place": [
+ {
+ "type": 0,
+ "value": "They will get you to the right place."
+ }
+ ],
+ "home.description.shop_products": [
+ {
+ "type": 0,
+ "value": "This section contains content from the catalog. "
+ },
+ {
+ "type": 1,
+ "value": "docLink"
+ },
+ {
+ "type": 0,
+ "value": " on how to replace it."
+ }
+ ],
+ "home.features.description.cart_checkout": [
+ {
+ "type": 0,
+ "value": "Ecommerce best practice for a shopper's cart and checkout experience."
+ }
+ ],
+ "home.features.description.components": [
+ {
+ "type": 0,
+ "value": "Built using Chakra UI, a simple, modular and accessible React component library."
+ }
+ ],
+ "home.features.description.einstein_recommendations": [
+ {
+ "type": 0,
+ "value": "Deliver the next best product or offer to every shopper through product recommendations."
+ }
+ ],
+ "home.features.description.my_account": [
+ {
+ "type": 0,
+ "value": "Shoppers can manage account information such as their profile, addresses, payments and orders."
+ }
+ ],
+ "home.features.description.shopper_login": [
+ {
+ "type": 0,
+ "value": "Enable shoppers to easily log in with a more personalized shopping experience."
+ }
+ ],
+ "home.features.description.wishlist": [
+ {
+ "type": 0,
+ "value": "Registered shoppers can add product items to their wishlist from purchasing later."
+ }
+ ],
+ "home.features.heading.cart_checkout": [
+ {
+ "type": 0,
+ "value": "Cart & Checkout"
+ }
+ ],
+ "home.features.heading.components": [
+ {
+ "type": 0,
+ "value": "Components & Design Kit"
+ }
+ ],
+ "home.features.heading.einstein_recommendations": [
+ {
+ "type": 0,
+ "value": "Einstein Recommendations"
+ }
+ ],
+ "home.features.heading.my_account": [
+ {
+ "type": 0,
+ "value": "My Account"
+ }
+ ],
+ "home.features.heading.shopper_login": [
+ {
+ "type": 0,
+ "value": "Shopper Login and API Access Service"
+ }
+ ],
+ "home.features.heading.wishlist": [
+ {
+ "type": 0,
+ "value": "Wishlist"
+ }
+ ],
+ "home.heading.features": [
+ {
+ "type": 0,
+ "value": "Features"
+ }
+ ],
+ "home.heading.here_to_help": [
+ {
+ "type": 0,
+ "value": "We're here to help"
+ }
+ ],
+ "home.heading.shop_products": [
+ {
+ "type": 0,
+ "value": "Shop Products"
+ }
+ ],
+ "home.hero_features.link.design_kit": [
+ {
+ "type": 0,
+ "value": "Create with the Figma PWA Design Kit"
+ }
+ ],
+ "home.hero_features.link.on_github": [
+ {
+ "type": 0,
+ "value": "Download on Github"
+ }
+ ],
+ "home.hero_features.link.on_managed_runtime": [
+ {
+ "type": 0,
+ "value": "Deploy on Managed Runtime"
+ }
+ ],
+ "home.link.contact_us": [
+ {
+ "type": 0,
+ "value": "Contact Us"
+ }
+ ],
+ "home.link.get_started": [
+ {
+ "type": 0,
+ "value": "Get started"
+ }
+ ],
+ "home.link.read_docs": [
+ {
+ "type": 0,
+ "value": "Read docs"
+ }
+ ],
+ "home.title.react_starter_store": [
+ {
+ "type": 0,
+ "value": "The React PWA Starter Store for Retail"
+ }
+ ],
+ "item_attributes.label.promotions": [
+ {
+ "type": 0,
+ "value": "Promotions"
+ }
+ ],
+ "item_attributes.label.quantity": [
+ {
+ "type": 0,
+ "value": "Quantity: "
+ },
+ {
+ "type": 1,
+ "value": "quantity"
+ }
+ ],
+ "item_image.label.sale": [
+ {
+ "type": 0,
+ "value": "Sale"
+ }
+ ],
+ "lCPCxk": [
+ {
+ "type": 0,
+ "value": "Please select all your options above"
+ }
+ ],
+ "locale_text.message.ar-SA": [
+ {
+ "type": 0,
+ "value": "Arabic (Saudi Arabia)"
+ }
+ ],
+ "locale_text.message.bn-BD": [
+ {
+ "type": 0,
+ "value": "Bangla (Bangladesh)"
+ }
+ ],
+ "locale_text.message.bn-IN": [
+ {
+ "type": 0,
+ "value": "Bangla (India)"
+ }
+ ],
+ "locale_text.message.cs-CZ": [
+ {
+ "type": 0,
+ "value": "Czech (Czech Republic)"
+ }
+ ],
+ "locale_text.message.da-DK": [
+ {
+ "type": 0,
+ "value": "Danish (Denmark)"
+ }
+ ],
+ "locale_text.message.de-AT": [
+ {
+ "type": 0,
+ "value": "German (Austria)"
+ }
+ ],
+ "locale_text.message.de-CH": [
+ {
+ "type": 0,
+ "value": "German (Switzerland)"
+ }
+ ],
+ "locale_text.message.de-DE": [
+ {
+ "type": 0,
+ "value": "German (Germany)"
+ }
+ ],
+ "locale_text.message.el-GR": [
+ {
+ "type": 0,
+ "value": "Greek (Greece)"
+ }
+ ],
+ "locale_text.message.en-AU": [
+ {
+ "type": 0,
+ "value": "English (Australia)"
+ }
+ ],
+ "locale_text.message.en-CA": [
+ {
+ "type": 0,
+ "value": "English (Canada)"
+ }
+ ],
+ "locale_text.message.en-GB": [
+ {
+ "type": 0,
+ "value": "English (United Kingdom)"
+ }
+ ],
+ "locale_text.message.en-IE": [
+ {
+ "type": 0,
+ "value": "English (Ireland)"
+ }
+ ],
+ "locale_text.message.en-IN": [
+ {
+ "type": 0,
+ "value": "English (India)"
+ }
+ ],
+ "locale_text.message.en-NZ": [
+ {
+ "type": 0,
+ "value": "English (New Zealand)"
+ }
+ ],
+ "locale_text.message.en-US": [
+ {
+ "type": 0,
+ "value": "English (United States)"
+ }
+ ],
+ "locale_text.message.en-ZA": [
+ {
+ "type": 0,
+ "value": "English (South Africa)"
+ }
+ ],
+ "locale_text.message.es-AR": [
+ {
+ "type": 0,
+ "value": "Spanish (Argentina)"
+ }
+ ],
+ "locale_text.message.es-CL": [
+ {
+ "type": 0,
+ "value": "Spanish (Chile)"
+ }
+ ],
+ "locale_text.message.es-CO": [
+ {
+ "type": 0,
+ "value": "Spanish (Columbia)"
+ }
+ ],
+ "locale_text.message.es-ES": [
+ {
+ "type": 0,
+ "value": "Spanish (Spain)"
+ }
+ ],
+ "locale_text.message.es-MX": [
+ {
+ "type": 0,
+ "value": "Spanish (Mexico)"
+ }
+ ],
+ "locale_text.message.es-US": [
+ {
+ "type": 0,
+ "value": "Spanish (United States)"
+ }
+ ],
+ "locale_text.message.fi-FI": [
+ {
+ "type": 0,
+ "value": "Finnish (Finland)"
+ }
+ ],
+ "locale_text.message.fr-BE": [
+ {
+ "type": 0,
+ "value": "French (Belgium)"
+ }
+ ],
+ "locale_text.message.fr-CA": [
+ {
+ "type": 0,
+ "value": "French (Canada)"
+ }
+ ],
+ "locale_text.message.fr-CH": [
+ {
+ "type": 0,
+ "value": "French (Switzerland)"
+ }
+ ],
+ "locale_text.message.fr-FR": [
+ {
+ "type": 0,
+ "value": "French (France)"
+ }
+ ],
+ "locale_text.message.he-IL": [
+ {
+ "type": 0,
+ "value": "Hebrew (Israel)"
+ }
+ ],
+ "locale_text.message.hi-IN": [
+ {
+ "type": 0,
+ "value": "Hindi (India)"
+ }
+ ],
+ "locale_text.message.hu-HU": [
+ {
+ "type": 0,
+ "value": "Hungarian (Hungary)"
+ }
+ ],
+ "locale_text.message.id-ID": [
+ {
+ "type": 0,
+ "value": "Indonesian (Indonesia)"
+ }
+ ],
+ "locale_text.message.it-CH": [
+ {
+ "type": 0,
+ "value": "Italian (Switzerland)"
+ }
+ ],
+ "locale_text.message.it-IT": [
+ {
+ "type": 0,
+ "value": "Italian (Italy)"
+ }
+ ],
+ "locale_text.message.ja-JP": [
+ {
+ "type": 0,
+ "value": "Japanese (Japan)"
+ }
+ ],
+ "locale_text.message.ko-KR": [
+ {
+ "type": 0,
+ "value": "Korean (Republic of Korea)"
+ }
+ ],
+ "locale_text.message.nl-BE": [
+ {
+ "type": 0,
+ "value": "Dutch (Belgium)"
+ }
+ ],
+ "locale_text.message.nl-NL": [
+ {
+ "type": 0,
+ "value": "Dutch (The Netherlands)"
+ }
+ ],
+ "locale_text.message.no-NO": [
+ {
+ "type": 0,
+ "value": "Norwegian (Norway)"
+ }
+ ],
+ "locale_text.message.pl-PL": [
+ {
+ "type": 0,
+ "value": "Polish (Poland)"
+ }
+ ],
+ "locale_text.message.pt-BR": [
+ {
+ "type": 0,
+ "value": "Portuguese (Brazil)"
+ }
+ ],
+ "locale_text.message.pt-PT": [
+ {
+ "type": 0,
+ "value": "Portuguese (Portugal)"
+ }
+ ],
+ "locale_text.message.ro-RO": [
+ {
+ "type": 0,
+ "value": "Romanian (Romania)"
+ }
+ ],
+ "locale_text.message.ru-RU": [
+ {
+ "type": 0,
+ "value": "Russian (Russian Federation)"
+ }
+ ],
+ "locale_text.message.sk-SK": [
+ {
+ "type": 0,
+ "value": "Slovak (Slovakia)"
+ }
+ ],
+ "locale_text.message.sv-SE": [
+ {
+ "type": 0,
+ "value": "Swedish (Sweden)"
+ }
+ ],
+ "locale_text.message.ta-IN": [
+ {
+ "type": 0,
+ "value": "Tamil (India)"
+ }
+ ],
+ "locale_text.message.ta-LK": [
+ {
+ "type": 0,
+ "value": "Tamil (Sri Lanka)"
+ }
+ ],
+ "locale_text.message.th-TH": [
+ {
+ "type": 0,
+ "value": "Thai (Thailand)"
+ }
+ ],
+ "locale_text.message.tr-TR": [
+ {
+ "type": 0,
+ "value": "Turkish (Turkey)"
+ }
+ ],
+ "locale_text.message.zh-CN": [
+ {
+ "type": 0,
+ "value": "Chinese (China)"
+ }
+ ],
+ "locale_text.message.zh-HK": [
+ {
+ "type": 0,
+ "value": "Chinese (Hong Kong)"
+ }
+ ],
+ "locale_text.message.zh-TW": [
+ {
+ "type": 0,
+ "value": "Chinese (Taiwan)"
+ }
+ ],
+ "login_form.action.create_account": [
+ {
+ "type": 0,
+ "value": "Create account"
+ }
+ ],
+ "login_form.button.sign_in": [
+ {
+ "type": 0,
+ "value": "Sign In"
+ }
+ ],
+ "login_form.link.forgot_password": [
+ {
+ "type": 0,
+ "value": "Forgot password?"
+ }
+ ],
+ "login_form.message.dont_have_account": [
+ {
+ "type": 0,
+ "value": "Don't have an account?"
+ }
+ ],
+ "login_form.message.welcome_back": [
+ {
+ "type": 0,
+ "value": "Welcome Back"
+ }
+ ],
+ "login_page.error.incorrect_username_or_password": [
+ {
+ "type": 0,
+ "value": "Incorrect username or password, please try again."
+ }
+ ],
+ "offline_banner.description.browsing_offline_mode": [
+ {
+ "type": 0,
+ "value": "You're currently browsing in offline mode"
+ }
+ ],
+ "order_summary.action.remove_promo": [
+ {
+ "type": 0,
+ "value": "Remove"
+ }
+ ],
+ "order_summary.cart_items.action.num_of_items_in_cart": [
+ {
+ "offset": 0,
+ "options": {
+ "=0": {
+ "value": [
+ {
+ "type": 0,
+ "value": "0 items"
+ }
+ ]
+ },
+ "one": {
+ "value": [
+ {
+ "type": 7
+ },
+ {
+ "type": 0,
+ "value": " item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 7
+ },
+ {
+ "type": 0,
+ "value": " items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "itemCount"
+ },
+ {
+ "type": 0,
+ "value": " in cart"
+ }
+ ],
+ "order_summary.cart_items.link.edit_cart": [
+ {
+ "type": 0,
+ "value": "Edit cart"
+ }
+ ],
+ "order_summary.heading.order_summary": [
+ {
+ "type": 0,
+ "value": "Order Summary"
+ }
+ ],
+ "order_summary.label.estimated_total": [
+ {
+ "type": 0,
+ "value": "Estimated Total"
+ }
+ ],
+ "order_summary.label.free": [
+ {
+ "type": 0,
+ "value": "Free"
+ }
+ ],
+ "order_summary.label.order_total": [
+ {
+ "type": 0,
+ "value": "Order Total"
+ }
+ ],
+ "order_summary.label.promo_applied": [
+ {
+ "type": 0,
+ "value": "Promotion applied"
+ }
+ ],
+ "order_summary.label.promotions_applied": [
+ {
+ "type": 0,
+ "value": "Promotions applied"
+ }
+ ],
+ "order_summary.label.shipping": [
+ {
+ "type": 0,
+ "value": "Shipping"
+ }
+ ],
+ "order_summary.label.subtotal": [
+ {
+ "type": 0,
+ "value": "Subtotal"
+ }
+ ],
+ "order_summary.label.tax": [
+ {
+ "type": 0,
+ "value": "Tax"
+ }
+ ],
+ "page_not_found.action.go_back": [
+ {
+ "type": 0,
+ "value": "Back to previous page"
+ }
+ ],
+ "page_not_found.link.homepage": [
+ {
+ "type": 0,
+ "value": "Go to home page"
+ }
+ ],
+ "page_not_found.message.suggestion_to_try": [
+ {
+ "type": 0,
+ "value": "Please try retyping the address, going back to the previous page, or going to the home page."
+ }
+ ],
+ "page_not_found.title.page_cant_be_found": [
+ {
+ "type": 0,
+ "value": "The page you're looking for can't be found."
+ }
+ ],
+ "pagination.field.num_of_pages": [
+ {
+ "type": 0,
+ "value": "of "
+ },
+ {
+ "type": 1,
+ "value": "numOfPages"
+ }
+ ],
+ "pagination.link.next": [
+ {
+ "type": 0,
+ "value": "Next"
+ }
+ ],
+ "pagination.link.prev": [
+ {
+ "type": 0,
+ "value": "Prev"
+ }
+ ],
+ "password_card.info.password_updated": [
+ {
+ "type": 0,
+ "value": "Password updated"
+ }
+ ],
+ "password_card.label.password": [
+ {
+ "type": 0,
+ "value": "Password"
+ }
+ ],
+ "password_card.title.password": [
+ {
+ "type": 0,
+ "value": "Password"
+ }
+ ],
+ "password_requirements.error.eight_letter_minimum": [
+ {
+ "type": 0,
+ "value": "8 characters minimum"
+ }
+ ],
+ "password_requirements.error.one_lowercase_letter": [
+ {
+ "type": 0,
+ "value": "1 lowercase letter"
+ }
+ ],
+ "password_requirements.error.one_number": [
+ {
+ "type": 0,
+ "value": "1 number"
+ }
+ ],
+ "password_requirements.error.one_special_character": [
+ {
+ "type": 0,
+ "value": "1 special character (example: , S ! % #)"
+ }
+ ],
+ "password_requirements.error.one_uppercase_letter": [
+ {
+ "type": 0,
+ "value": "1 uppercase letter"
+ }
+ ],
+ "payment_selection.button.save_and_continue": [
+ {
+ "type": 0,
+ "value": "Save & Continue"
+ }
+ ],
+ "payment_selection.heading.add_new_card": [
+ {
+ "type": 0,
+ "value": "Add New Card"
+ }
+ ],
+ "payment_selection.heading.credit_card": [
+ {
+ "type": 0,
+ "value": "Credit Card"
+ }
+ ],
+ "payment_selection.message.select_payment_method": [
+ {
+ "type": 0,
+ "value": "Please select a payment method."
+ }
+ ],
+ "payment_selection.tooltip.secure_payment": [
+ {
+ "type": 0,
+ "value": "This is a secure SSL encrypted payment."
+ }
+ ],
+ "price_per_item.label.each": [
+ {
+ "type": 0,
+ "value": "ea"
+ }
+ ],
+ "product_detail.accordion.button.product_detail": [
+ {
+ "type": 0,
+ "value": "Product Detail"
+ }
+ ],
+ "product_detail.accordion.button.questions": [
+ {
+ "type": 0,
+ "value": "Questions"
+ }
+ ],
+ "product_detail.accordion.button.reviews": [
+ {
+ "type": 0,
+ "value": "Reviews"
+ }
+ ],
+ "product_detail.accordion.button.size_fit": [
+ {
+ "type": 0,
+ "value": "Size & Fit"
+ }
+ ],
+ "product_detail.accordion.message.coming_soon": [
+ {
+ "type": 0,
+ "value": "Coming Soon"
+ }
+ ],
+ "product_detail.info.added_to_wishlist": [
+ {
+ "type": 1,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " "
+ },
+ {
+ "offset": 0,
+ "options": {
+ "one": {
+ "value": [
+ {
+ "type": 0,
+ "value": "item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 0,
+ "value": "items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " added to wishlist"
+ }
+ ],
+ "product_detail.recommended_products.title.complete_set": [
+ {
+ "type": 0,
+ "value": "Complete the Set"
+ }
+ ],
+ "product_detail.recommended_products.title.might_also_like": [
+ {
+ "type": 0,
+ "value": "You might also like"
+ }
+ ],
+ "product_detail.recommended_products.title.recently_viewed": [
+ {
+ "type": 0,
+ "value": "Recently Viewed"
+ }
+ ],
+ "product_item.label.quantity": [
+ {
+ "type": 0,
+ "value": "Quantity:"
+ }
+ ],
+ "product_list.button.filter": [
+ {
+ "type": 0,
+ "value": "Filter"
+ }
+ ],
+ "product_list.button.sort_by": [
+ {
+ "type": 0,
+ "value": "Sort By: "
+ },
+ {
+ "type": 1,
+ "value": "sortOption"
+ }
+ ],
+ "product_list.drawer.title.sort_by": [
+ {
+ "type": 0,
+ "value": "Sort By"
+ }
+ ],
+ "product_list.info.added_to_wishlist": [
+ {
+ "type": 1,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " "
+ },
+ {
+ "offset": 0,
+ "options": {
+ "one": {
+ "value": [
+ {
+ "type": 0,
+ "value": "item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 0,
+ "value": "items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " added to wishlist"
+ }
+ ],
+ "product_list.info.removed_from_wishlist": [
+ {
+ "type": 0,
+ "value": "Item removed from wishlist"
+ }
+ ],
+ "product_list.modal.button.clear_filters": [
+ {
+ "type": 0,
+ "value": "Clear Filters"
+ }
+ ],
+ "product_list.modal.button.view_items": [
+ {
+ "type": 0,
+ "value": "View "
+ },
+ {
+ "type": 1,
+ "value": "prroductCount"
+ },
+ {
+ "type": 0,
+ "value": " items"
+ }
+ ],
+ "product_list.modal.title.filter": [
+ {
+ "type": 0,
+ "value": "Filter"
+ }
+ ],
+ "product_list.select.sort_by": [
+ {
+ "type": 0,
+ "value": "Sort By: "
+ },
+ {
+ "type": 1,
+ "value": "sortOption"
+ }
+ ],
+ "product_tile.assistive_msg.wishlist": [
+ {
+ "type": 0,
+ "value": "Wishlist"
+ }
+ ],
+ "product_view.button.add_to_cart": [
+ {
+ "type": 0,
+ "value": "Add to Cart"
+ }
+ ],
+ "product_view.button.add_to_wishlist": [
+ {
+ "type": 0,
+ "value": "Add to Wishlist"
+ }
+ ],
+ "product_view.button.update": [
+ {
+ "type": 0,
+ "value": "Update"
+ }
+ ],
+ "product_view.label.quantity": [
+ {
+ "type": 0,
+ "value": "Quantity"
+ }
+ ],
+ "product_view.link.full_details": [
+ {
+ "type": 0,
+ "value": "See full details"
+ }
+ ],
+ "profile_card.info.profile_updated": [
+ {
+ "type": 0,
+ "value": "Profile updated"
+ }
+ ],
+ "profile_card.label.email": [
+ {
+ "type": 0,
+ "value": "Email"
+ }
+ ],
+ "profile_card.label.full_name": [
+ {
+ "type": 0,
+ "value": "Full Name"
+ }
+ ],
+ "profile_card.label.phone": [
+ {
+ "type": 0,
+ "value": "Phone Number"
+ }
+ ],
+ "profile_card.message.not_provided": [
+ {
+ "type": 0,
+ "value": "Not provided"
+ }
+ ],
+ "profile_card.title.my_profile": [
+ {
+ "type": 0,
+ "value": "My Profile"
+ }
+ ],
+ "promo_code_fields.button.apply": [
+ {
+ "type": 0,
+ "value": "Apply"
+ }
+ ],
+ "promo_popover.heading.promo_applied": [
+ {
+ "type": 0,
+ "value": "Promotions Applied"
+ }
+ ],
+ "promocode.accordion.button.have_promocode": [
+ {
+ "type": 0,
+ "value": "Do you have a promo code?"
+ }
+ ],
+ "recent_searches.action.clear_searches": [
+ {
+ "type": 0,
+ "value": "Clear recent searches"
+ }
+ ],
+ "recent_searches.heading.recent_searches": [
+ {
+ "type": 0,
+ "value": "Recent Searches"
+ }
+ ],
+ "recommended_products.info.added_to_wishlist": [
+ {
+ "type": 1,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " "
+ },
+ {
+ "offset": 0,
+ "options": {
+ "one": {
+ "value": [
+ {
+ "type": 0,
+ "value": "item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 0,
+ "value": "items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " added to wishlist"
+ }
+ ],
+ "recommended_products.info.removed_from_wishlist": [
+ {
+ "type": 0,
+ "value": "Item removed from wishlist"
+ }
+ ],
+ "register_form.action.sign_in": [
+ {
+ "type": 0,
+ "value": "Sign in"
+ }
+ ],
+ "register_form.button.create_account": [
+ {
+ "type": 0,
+ "value": "Create Account"
+ }
+ ],
+ "register_form.heading.lets_get_started": [
+ {
+ "type": 0,
+ "value": "Let's get started!"
+ }
+ ],
+ "register_form.message.agree_to_policy_terms": [
+ {
+ "type": 0,
+ "value": "By creating an account, you agree to Salesforce "
+ },
+ {
+ "children": [
+ {
+ "type": 0,
+ "value": "Privacy Policy"
+ }
+ ],
+ "type": 8,
+ "value": "policy"
+ },
+ {
+ "type": 0,
+ "value": " and "
+ },
+ {
+ "children": [
+ {
+ "type": 0,
+ "value": "Terms & Conditions"
+ }
+ ],
+ "type": 8,
+ "value": "terms"
+ }
+ ],
+ "register_form.message.already_have_account": [
+ {
+ "type": 0,
+ "value": "Already have an account?"
+ }
+ ],
+ "register_form.message.create_an_account": [
+ {
+ "type": 0,
+ "value": "Create an account and get first access to the very best products, inspiration and community."
+ }
+ ],
+ "reset_password.button.back_to_sign_in": [
+ {
+ "type": 0,
+ "value": "Back to Sign In"
+ }
+ ],
+ "reset_password.info.receive_email_shortly": [
+ {
+ "type": 0,
+ "value": "You will receive an email at "
+ },
+ {
+ "children": [
+ {
+ "type": 1,
+ "value": "email"
+ }
+ ],
+ "type": 8,
+ "value": "b"
+ },
+ {
+ "type": 0,
+ "value": " with a link to reset your password shortly."
+ }
+ ],
+ "reset_password.title.password_reset": [
+ {
+ "type": 0,
+ "value": "Password Reset"
+ }
+ ],
+ "reset_password_form.action.sign_in": [
+ {
+ "type": 0,
+ "value": "Sign in"
+ }
+ ],
+ "reset_password_form.button.reset_password": [
+ {
+ "type": 0,
+ "value": "Reset Password"
+ }
+ ],
+ "reset_password_form.message.enter_your_email": [
+ {
+ "type": 0,
+ "value": "Enter your email to receive instructions on how to reset your password"
+ }
+ ],
+ "reset_password_form.message.return_to_sign_in": [
+ {
+ "type": 0,
+ "value": "Or return to"
+ }
+ ],
+ "reset_password_form.title.reset_password": [
+ {
+ "type": 0,
+ "value": "Reset Password"
+ }
+ ],
+ "search.action.cancel": [
+ {
+ "type": 0,
+ "value": "Cancel"
+ }
+ ],
+ "selected_refinements.action.clear_all": [
+ {
+ "type": 0,
+ "value": "Clear All"
+ }
+ ],
+ "shipping_address.button.continue_to_shipping": [
+ {
+ "type": 0,
+ "value": "Continue to Shipping Method"
+ }
+ ],
+ "shipping_address.title.shipping_address": [
+ {
+ "type": 0,
+ "value": "Shipping Address"
+ }
+ ],
+ "shipping_address_edit_form.button.save_and_continue": [
+ {
+ "type": 0,
+ "value": "Save & Continue to Shipping Method"
+ }
+ ],
+ "shipping_address_form.heading.edit_address": [
+ {
+ "type": 0,
+ "value": "Edit Address"
+ }
+ ],
+ "shipping_address_form.heading.new_address": [
+ {
+ "type": 0,
+ "value": "Add New Address"
+ }
+ ],
+ "shipping_address_selection.button.add_address": [
+ {
+ "type": 0,
+ "value": "Add New Address"
+ }
+ ],
+ "shipping_address_selection.button.submit": [
+ {
+ "type": 0,
+ "value": "Submit"
+ }
+ ],
+ "shipping_address_selection.title.add_address": [
+ {
+ "type": 0,
+ "value": "Add New Address"
+ }
+ ],
+ "shipping_address_selection.title.edit_shipping": [
+ {
+ "type": 0,
+ "value": "Edit Shipping Address"
+ }
+ ],
+ "shipping_options.action.send_as_a_gift": [
+ {
+ "type": 0,
+ "value": "Do you want to send this as a gift?"
+ }
+ ],
+ "shipping_options.button.continue_to_payment": [
+ {
+ "type": 0,
+ "value": "Continue to Payment"
+ }
+ ],
+ "shipping_options.title.shipping_gift_options": [
+ {
+ "type": 0,
+ "value": "Shipping & Gift Options"
+ }
+ ],
+ "signout_confirmation_dialog.button.cancel": [
+ {
+ "type": 0,
+ "value": "Cancel"
+ }
+ ],
+ "signout_confirmation_dialog.button.sign_out": [
+ {
+ "type": 0,
+ "value": "Sign Out"
+ }
+ ],
+ "signout_confirmation_dialog.heading.sign_out": [
+ {
+ "type": 0,
+ "value": "Sign Out"
+ }
+ ],
+ "signout_confirmation_dialog.message.sure_to_sign_out": [
+ {
+ "type": 0,
+ "value": "Are you sure you want to sign out? You will need to sign back in to proceed with your current order."
+ }
+ ],
+ "toggle_card.action.edit": [
+ {
+ "type": 0,
+ "value": "Edit"
+ }
+ ],
+ "update_password_fields.button.forgot_password": [
+ {
+ "type": 0,
+ "value": "Forgot Password?"
+ }
+ ],
+ "use_address_fields.error.please_enter_first_name": [
+ {
+ "type": 0,
+ "value": "Please enter your first name."
+ }
+ ],
+ "use_address_fields.error.please_enter_last_name": [
+ {
+ "type": 0,
+ "value": "Please enter your last name."
+ }
+ ],
+ "use_address_fields.error.please_enter_phone_number": [
+ {
+ "type": 0,
+ "value": "Please enter your phone number."
+ }
+ ],
+ "use_address_fields.error.please_enter_your_postal_or_zip": [
+ {
+ "type": 0,
+ "value": "Please enter your "
+ },
+ {
+ "type": 1,
+ "value": "postalOrZip"
+ },
+ {
+ "type": 0,
+ "value": "."
+ }
+ ],
+ "use_address_fields.error.please_select_your_address": [
+ {
+ "type": 0,
+ "value": "Please enter your address."
+ }
+ ],
+ "use_address_fields.error.please_select_your_city": [
+ {
+ "type": 0,
+ "value": "Please enter your city."
+ }
+ ],
+ "use_address_fields.error.please_select_your_country": [
+ {
+ "type": 0,
+ "value": "Please select your country."
+ }
+ ],
+ "use_address_fields.error.please_select_your_state_or_province": [
+ {
+ "type": 0,
+ "value": "Please select your "
+ },
+ {
+ "type": 1,
+ "value": "stateOrProvince"
+ },
+ {
+ "type": 0,
+ "value": "."
+ }
+ ],
+ "use_address_fields.error.required": [
+ {
+ "type": 0,
+ "value": "Required"
+ }
+ ],
+ "use_address_fields.error.state_code_invalid": [
+ {
+ "type": 0,
+ "value": "Please enter 2-letter state/province."
+ }
+ ],
+ "use_address_fields.label.address": [
+ {
+ "type": 0,
+ "value": "Address"
+ }
+ ],
+ "use_address_fields.label.city": [
+ {
+ "type": 0,
+ "value": "City"
+ }
+ ],
+ "use_address_fields.label.country": [
+ {
+ "type": 0,
+ "value": "Country"
+ }
+ ],
+ "use_address_fields.label.first_name": [
+ {
+ "type": 0,
+ "value": "First Name"
+ }
+ ],
+ "use_address_fields.label.last_name": [
+ {
+ "type": 0,
+ "value": "Last Name"
+ }
+ ],
+ "use_address_fields.label.phone": [
+ {
+ "type": 0,
+ "value": "Phone"
+ }
+ ],
+ "use_address_fields.label.postal_code": [
+ {
+ "type": 0,
+ "value": "Postal Code"
+ }
+ ],
+ "use_address_fields.label.preferred": [
+ {
+ "type": 0,
+ "value": "Set as default"
+ }
+ ],
+ "use_address_fields.label.province": [
+ {
+ "type": 0,
+ "value": "Province"
+ }
+ ],
+ "use_address_fields.label.state": [
+ {
+ "type": 0,
+ "value": "State"
+ }
+ ],
+ "use_address_fields.label.zipCode": [
+ {
+ "type": 0,
+ "value": "Zip Code"
+ }
+ ],
+ "use_credit_card_fields.error.required": [
+ {
+ "type": 0,
+ "value": "Required"
+ }
+ ],
+ "use_credit_card_fields.error.required_card_number": [
+ {
+ "type": 0,
+ "value": "Please enter your card number."
+ }
+ ],
+ "use_credit_card_fields.error.required_expiry": [
+ {
+ "type": 0,
+ "value": "Please enter your expiration date."
+ }
+ ],
+ "use_credit_card_fields.error.required_name": [
+ {
+ "type": 0,
+ "value": "Please enter your name as shown on your card."
+ }
+ ],
+ "use_credit_card_fields.error.required_security_code": [
+ {
+ "type": 0,
+ "value": "Please enter your security code."
+ }
+ ],
+ "use_credit_card_fields.error.valid_card_number": [
+ {
+ "type": 0,
+ "value": "Please enter a valid card number."
+ }
+ ],
+ "use_credit_card_fields.error.valid_date": [
+ {
+ "type": 0,
+ "value": "Please enter a valid date."
+ }
+ ],
+ "use_credit_card_fields.error.valid_name": [
+ {
+ "type": 0,
+ "value": "Please enter a valid name."
+ }
+ ],
+ "use_credit_card_fields.error.valid_security_code": [
+ {
+ "type": 0,
+ "value": "Please enter a valid security code."
+ }
+ ],
+ "use_credit_card_fields.label.card_number": [
+ {
+ "type": 0,
+ "value": "Card Number"
+ }
+ ],
+ "use_credit_card_fields.label.card_type": [
+ {
+ "type": 0,
+ "value": "Card Type"
+ }
+ ],
+ "use_credit_card_fields.label.expiry": [
+ {
+ "type": 0,
+ "value": "Expiration Date"
+ }
+ ],
+ "use_credit_card_fields.label.name": [
+ {
+ "type": 0,
+ "value": "Name on Card"
+ }
+ ],
+ "use_credit_card_fields.label.security_code": [
+ {
+ "type": 0,
+ "value": "Security Code"
+ }
+ ],
+ "use_login_fields.error.required_email": [
+ {
+ "type": 0,
+ "value": "Please enter your email address."
+ }
+ ],
+ "use_login_fields.error.required_password": [
+ {
+ "type": 0,
+ "value": "Please enter your password."
+ }
+ ],
+ "use_login_fields.label.email": [
+ {
+ "type": 0,
+ "value": "Email"
+ }
+ ],
+ "use_login_fields.label.password": [
+ {
+ "type": 0,
+ "value": "Password"
+ }
+ ],
+ "use_product.message.inventory_remaining": [
+ {
+ "type": 0,
+ "value": "Only "
+ },
+ {
+ "type": 1,
+ "value": "stockLevel"
+ },
+ {
+ "type": 0,
+ "value": " left!"
+ }
+ ],
+ "use_product.message.out_of_stock": [
+ {
+ "type": 0,
+ "value": "Out of stock"
+ }
+ ],
+ "use_profile_fields.error.required_email": [
+ {
+ "type": 0,
+ "value": "Please enter a valid email address."
+ }
+ ],
+ "use_profile_fields.error.required_first_name": [
+ {
+ "type": 0,
+ "value": "Please enter your first name."
+ }
+ ],
+ "use_profile_fields.error.required_last_name": [
+ {
+ "type": 0,
+ "value": "Please enter your last name."
+ }
+ ],
+ "use_profile_fields.error.required_phone": [
+ {
+ "type": 0,
+ "value": "Please enter your phone number."
+ }
+ ],
+ "use_profile_fields.label.email": [
+ {
+ "type": 0,
+ "value": "Email"
+ }
+ ],
+ "use_profile_fields.label.first_name": [
+ {
+ "type": 0,
+ "value": "First Name"
+ }
+ ],
+ "use_profile_fields.label.last_name": [
+ {
+ "type": 0,
+ "value": "Last Name"
+ }
+ ],
+ "use_profile_fields.label.phone": [
+ {
+ "type": 0,
+ "value": "Phone Number"
+ }
+ ],
+ "use_promo_code_fields.error.required_promo_code": [
+ {
+ "type": 0,
+ "value": "Please provide a valid promo code."
+ }
+ ],
+ "use_promo_code_fields.label.promo_code": [
+ {
+ "type": 0,
+ "value": "Promo Code"
+ }
+ ],
+ "use_promocode.error.check_the_code": [
+ {
+ "type": 0,
+ "value": "Check the code and try again, it may already be applied or the promo has expired."
+ }
+ ],
+ "use_promocode.info.promo_applied": [
+ {
+ "type": 0,
+ "value": "Promotion applied"
+ }
+ ],
+ "use_promocode.info.promo_removed": [
+ {
+ "type": 0,
+ "value": "Promotion removed"
+ }
+ ],
+ "use_registration_fields.error.contain_number": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one number."
+ }
+ ],
+ "use_registration_fields.error.lowercase_letter": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one lowercase letter."
+ }
+ ],
+ "use_registration_fields.error.minimum_characters": [
+ {
+ "type": 0,
+ "value": "Password must contain at least 8 characters."
+ }
+ ],
+ "use_registration_fields.error.required_email": [
+ {
+ "type": 0,
+ "value": "Please enter a valid email address."
+ }
+ ],
+ "use_registration_fields.error.required_first_name": [
+ {
+ "type": 0,
+ "value": "Please enter your first name."
+ }
+ ],
+ "use_registration_fields.error.required_last_name": [
+ {
+ "type": 0,
+ "value": "Please enter your last name."
+ }
+ ],
+ "use_registration_fields.error.required_password": [
+ {
+ "type": 0,
+ "value": "Please create a password."
+ }
+ ],
+ "use_registration_fields.error.special_character": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one special character."
+ }
+ ],
+ "use_registration_fields.error.uppercase_letter": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one uppercase letter."
+ }
+ ],
+ "use_registration_fields.label.email": [
+ {
+ "type": 0,
+ "value": "Email"
+ }
+ ],
+ "use_registration_fields.label.first_name": [
+ {
+ "type": 0,
+ "value": "First Name"
+ }
+ ],
+ "use_registration_fields.label.last_name": [
+ {
+ "type": 0,
+ "value": "Last Name"
+ }
+ ],
+ "use_registration_fields.label.password": [
+ {
+ "type": 0,
+ "value": "Password"
+ }
+ ],
+ "use_registration_fields.label.sign_up_to_emails": [
+ {
+ "type": 0,
+ "value": "Sign me up for Salesforce emails (you can unsubscribe at any time)"
+ }
+ ],
+ "use_reset_password_fields.error.required_email": [
+ {
+ "type": 0,
+ "value": "Please enter a valid email address."
+ }
+ ],
+ "use_reset_password_fields.label.email": [
+ {
+ "type": 0,
+ "value": "Email"
+ }
+ ],
+ "use_update_password_fields.error.contain_number": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one number."
+ }
+ ],
+ "use_update_password_fields.error.lowercase_letter": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one lowercase letter."
+ }
+ ],
+ "use_update_password_fields.error.minimum_characters": [
+ {
+ "type": 0,
+ "value": "Password must contain at least 8 characters."
+ }
+ ],
+ "use_update_password_fields.error.required_new_password": [
+ {
+ "type": 0,
+ "value": "Please provide a new password."
+ }
+ ],
+ "use_update_password_fields.error.required_password": [
+ {
+ "type": 0,
+ "value": "Please enter your password."
+ }
+ ],
+ "use_update_password_fields.error.special_character": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one special character."
+ }
+ ],
+ "use_update_password_fields.error.uppercase_letter": [
+ {
+ "type": 0,
+ "value": "Password must contain at least one uppercase letter."
+ }
+ ],
+ "use_update_password_fields.label.current_password": [
+ {
+ "type": 0,
+ "value": "Current Password"
+ }
+ ],
+ "use_update_password_fields.label.new_password": [
+ {
+ "type": 0,
+ "value": "New Password"
+ }
+ ],
+ "wishlist_primary_action.info.added_to_cart": [
+ {
+ "type": 1,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " "
+ },
+ {
+ "offset": 0,
+ "options": {
+ "one": {
+ "value": [
+ {
+ "type": 0,
+ "value": "item"
+ }
+ ]
+ },
+ "other": {
+ "value": [
+ {
+ "type": 0,
+ "value": "items"
+ }
+ ]
+ }
+ },
+ "pluralType": "cardinal",
+ "type": 6,
+ "value": "quantity"
+ },
+ {
+ "type": 0,
+ "value": " added to cart"
+ }
+ ],
+ "wishlist_secondary_button_group.action.remove": [
+ {
+ "type": 0,
+ "value": "Remove"
+ }
+ ],
+ "wishlist_secondary_button_group.info.item_removed": [
+ {
+ "type": 0,
+ "value": "Item removed from wishlist"
+ }
+ ],
+ "with_registration.info.please_sign_in": [
+ {
+ "type": 0,
+ "value": "Please sign in to continue!"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/packages/pwa/app/translations/en-US.json b/packages/pwa/app/translations/en-US.json
new file mode 100644
index 0000000000..f8968950d3
--- /dev/null
+++ b/packages/pwa/app/translations/en-US.json
@@ -0,0 +1,1413 @@
+{
+ "account.accordion.button.my_account": {
+ "defaultMessage": "My Account"
+ },
+ "account.heading.my_account": {
+ "defaultMessage": "My Account"
+ },
+ "account.logout_button.button.log_out": {
+ "defaultMessage": "Log Out"
+ },
+ "account_addresses.badge.default": {
+ "defaultMessage": "Default"
+ },
+ "account_addresses.button.add_address": {
+ "defaultMessage": "Add Address"
+ },
+ "account_addresses.info.address_updated": {
+ "defaultMessage": "Address updated"
+ },
+ "account_addresses.info.new_address_saved": {
+ "defaultMessage": "New address saved"
+ },
+ "account_addresses.page_action_placeholder.button.add_address": {
+ "defaultMessage": "Add Address"
+ },
+ "account_addresses.page_action_placeholder.heading.no_saved_addresses": {
+ "defaultMessage": "No Saved Addresses"
+ },
+ "account_addresses.page_action_placeholder.message.add_new_address": {
+ "defaultMessage": "Add a new address method for faster checkout."
+ },
+ "account_addresses.title.addresses": {
+ "defaultMessage": "Addresses"
+ },
+ "account_detail.title.account_details": {
+ "defaultMessage": "Account Details"
+ },
+ "account_order_detail.heading.billing_address": {
+ "defaultMessage": "Billing Address"
+ },
+ "account_order_detail.heading.num_of_items": {
+ "defaultMessage": "{count} items"
+ },
+ "account_order_detail.heading.payment_method": {
+ "defaultMessage": "Payment Method"
+ },
+ "account_order_detail.heading.shipping_address": {
+ "defaultMessage": "Shipping Address"
+ },
+ "account_order_detail.heading.shipping_method": {
+ "defaultMessage": "Shipping Method"
+ },
+ "account_order_detail.label.order_number": {
+ "defaultMessage": "Order Number: {orderNumber}"
+ },
+ "account_order_detail.label.ordered_date": {
+ "defaultMessage": "Ordered: {date}"
+ },
+ "account_order_detail.label.pending_tracking_number": {
+ "defaultMessage": "Pending"
+ },
+ "account_order_detail.label.tracking_number": {
+ "defaultMessage": "Tracking Number"
+ },
+ "account_order_detail.link.back_to_history": {
+ "defaultMessage": "Back to Order History"
+ },
+ "account_order_detail.title.order_details": {
+ "defaultMessage": "Order Details"
+ },
+ "account_order_history.button.continue_shopping": {
+ "defaultMessage": "Continue Shopping"
+ },
+ "account_order_history.description.once_you_place_order": {
+ "defaultMessage": "Once you place an order the details will show up here."
+ },
+ "account_order_history.heading.no_order_yet": {
+ "defaultMessage": "You haven't placed an order yet."
+ },
+ "account_order_history.label.num_of_items": {
+ "defaultMessage": "{count} items",
+ "description": "Number of items in order"
+ },
+ "account_order_history.label.order_number": {
+ "defaultMessage": "Order Number: {orderNumber}"
+ },
+ "account_order_history.label.ordered_date": {
+ "defaultMessage": "Ordered: {date}"
+ },
+ "account_order_history.label.shipped_to": {
+ "defaultMessage": "Shipped to: {name}"
+ },
+ "account_order_history.link.view_details": {
+ "defaultMessage": "View details"
+ },
+ "account_order_history.title.order_history": {
+ "defaultMessage": "Order History"
+ },
+ "account_payment_methods.button.add_method": {
+ "defaultMessage": "Add Payment Method"
+ },
+ "account_payment_methods.description.add_method_for_faster_checkout": {
+ "defaultMessage": "Add a new payment method for faster checkout."
+ },
+ "account_payment_methods.heading.no_saved_methods": {
+ "defaultMessage": "No Saved Payment Methods"
+ },
+ "account_payment_methods.info.new_method_saved": {
+ "defaultMessage": "New Payment Method Saved"
+ },
+ "account_payment_methods.title.payment_methods": {
+ "defaultMessage": "Payment Methods"
+ },
+ "account_wishlist.button.continue_shopping": {
+ "defaultMessage": "Continue Shopping"
+ },
+ "account_wishlist.description.continue_shopping": {
+ "defaultMessage": "Continue shopping and add items to your wishlist."
+ },
+ "account_wishlist.heading.no_wishlist": {
+ "defaultMessage": "No Wishlist Items"
+ },
+ "account_wishlist.title.wishlist": {
+ "defaultMessage": "Wishlist"
+ },
+ "action_card.action.edit": {
+ "defaultMessage": "Edit"
+ },
+ "action_card.action.remove": {
+ "defaultMessage": "Remove"
+ },
+ "add_to_cart_modal.info.added_to_cart": {
+ "defaultMessage": "{quantity} {quantity, plural, one {item} other {items}} added to cart"
+ },
+ "add_to_cart_modal.label.cart_subtotal": {
+ "defaultMessage": "Cart Subtotal ({itemAccumulatedCount} item)"
+ },
+ "add_to_cart_modal.label.quantity": {
+ "defaultMessage": "Qty"
+ },
+ "add_to_cart_modal.link.checkout": {
+ "defaultMessage": "Proceed to Checkout"
+ },
+ "add_to_cart_modal.link.view_cart": {
+ "defaultMessage": "View Cart"
+ },
+ "add_to_cart_modal.recommended_products.title.might_also_like": {
+ "defaultMessage": "You Might Also Like"
+ },
+ "auth_modal.description.now_signed_in": {
+ "defaultMessage": "You're now signed in."
+ },
+ "auth_modal.error.incorrect_email_or_password": {
+ "defaultMessage": "Something's not right with your email or password. Try again."
+ },
+ "auth_modal.info.welcome_user": {
+ "defaultMessage": "Welcome {name},"
+ },
+ "auth_modal.password_reset_success.button.back_to_sign_in": {
+ "defaultMessage": "Back to Sign In"
+ },
+ "auth_modal.password_reset_success.info.will_email_shortly": {
+ "defaultMessage": "You will receive an email at {email} with a link to reset your password shortly."
+ },
+ "auth_modal.password_reset_success.title.password_reset": {
+ "defaultMessage": "Password Reset"
+ },
+ "card_payment_form.heading.new_payment_method": {
+ "defaultMessage": "Add New Payment Method"
+ },
+ "cart.info.added_to_wishlist": {
+ "defaultMessage": "{quantity} {quantity, plural, one {item} other {items}} added to wishlist"
+ },
+ "cart.info.removed_from_cart": {
+ "defaultMessage": "Item removed from cart"
+ },
+ "cart.recommended_products.title.may_also_like": {
+ "defaultMessage": "You May Also Like"
+ },
+ "cart.recommended_products.title.recently_viewed": {
+ "defaultMessage": "Recently Viewed"
+ },
+ "cart_cta.link.checkout": {
+ "defaultMessage": "Proceed to Checkout"
+ },
+ "cart_secondary_button_group.action.added_to_wishlist": {
+ "defaultMessage": "Add to Wishlist"
+ },
+ "cart_secondary_button_group.action.edit": {
+ "defaultMessage": "Edit"
+ },
+ "cart_secondary_button_group.action.remove": {
+ "defaultMessage": "Remove"
+ },
+ "cart_secondary_button_group.label.this_is_gift": {
+ "defaultMessage": "This is a gift."
+ },
+ "cart_secondary_button_group.link_learn_more": {
+ "defaultMessage": "Learn More"
+ },
+ "cart_skeleton.heading.order_summary": {
+ "defaultMessage": "Order Summary"
+ },
+ "cart_skeleton.title.cart": {
+ "defaultMessage": "Cart"
+ },
+ "cart_title.title.cart_num_of_items": {
+ "defaultMessage": "Cart ({itemCount, plural, =0 {0 items} one {# item} other {# items}})"
+ },
+ "cc_radio_group.action.remove": {
+ "defaultMessage": "Remove"
+ },
+ "cc_radio_group.button.add_new_card": {
+ "defaultMessage": "Add New Card"
+ },
+ "checkout.button.place_order": {
+ "defaultMessage": "Place Order"
+ },
+ "checkout_confirmation.button.create_account": {
+ "defaultMessage": "Create Account"
+ },
+ "checkout_confirmation.heading.billing_address": {
+ "defaultMessage": "Billing Address"
+ },
+ "checkout_confirmation.heading.create_account": {
+ "defaultMessage": "Create an account for faster checkout"
+ },
+ "checkout_confirmation.heading.credit_card": {
+ "defaultMessage": "Credit Card"
+ },
+ "checkout_confirmation.heading.delivery_details": {
+ "defaultMessage": "Delivery Details"
+ },
+ "checkout_confirmation.heading.order_summary": {
+ "defaultMessage": "Order Summary"
+ },
+ "checkout_confirmation.heading.payment_details": {
+ "defaultMessage": "Payment Details"
+ },
+ "checkout_confirmation.heading.shipping_address": {
+ "defaultMessage": "Shipping Address"
+ },
+ "checkout_confirmation.heading.shipping_method": {
+ "defaultMessage": "Shipping Method"
+ },
+ "checkout_confirmation.heading.thank_you_for_order": {
+ "defaultMessage": "Thank you for your order!"
+ },
+ "checkout_confirmation.label.free": {
+ "defaultMessage": "Free"
+ },
+ "checkout_confirmation.label.order_number": {
+ "defaultMessage": "Order Number"
+ },
+ "checkout_confirmation.label.order_total": {
+ "defaultMessage": "Order Total"
+ },
+ "checkout_confirmation.label.promo_applied": {
+ "defaultMessage": "Promotion applied"
+ },
+ "checkout_confirmation.label.shipping": {
+ "defaultMessage": "Shipping"
+ },
+ "checkout_confirmation.label.subtotal": {
+ "defaultMessage": "Subtotal"
+ },
+ "checkout_confirmation.label.tax": {
+ "defaultMessage": "Tax"
+ },
+ "checkout_confirmation.link.continue_shopping": {
+ "defaultMessage": "Continue Shopping"
+ },
+ "checkout_confirmation.link.login": {
+ "defaultMessage": "Log in here"
+ },
+ "checkout_confirmation.message.already_has_account": {
+ "defaultMessage": "This email already has an account."
+ },
+ "checkout_confirmation.message.num_of_items_in_order": {
+ "defaultMessage": "{itemCount, plural, =0 {0 items} one {# item} other {# items}}",
+ "description": "# item(s) in order"
+ },
+ "checkout_confirmation.message.will_email_shortly": {
+ "defaultMessage": "We will send an email to {email} with your confirmation number and receipt shortly."
+ },
+ "checkout_footer.link.privacy_policy": {
+ "defaultMessage": "Privacy Policy"
+ },
+ "checkout_footer.link.returns_exchanges": {
+ "defaultMessage": "Returns & Exchanges"
+ },
+ "checkout_footer.link.shipping": {
+ "defaultMessage": "Shipping"
+ },
+ "checkout_footer.link.site_map": {
+ "defaultMessage": "Site Map"
+ },
+ "checkout_footer.link.terms_conditions": {
+ "defaultMessage": "Terms & Conditions"
+ },
+ "checkout_footer.message.copyright": {
+ "defaultMessage": "2021 Salesforce or its affiliates. All rights reserved. This is a demo store only. Orders made WILL NOT be processed."
+ },
+ "checkout_header.link.cart": {
+ "defaultMessage": "Back to cart"
+ },
+ "checkout_payment.action.remove": {
+ "defaultMessage": "Remove"
+ },
+ "checkout_payment.button.review_order": {
+ "defaultMessage": "Review Order"
+ },
+ "checkout_payment.heading.billing_address": {
+ "defaultMessage": "Billing Address"
+ },
+ "checkout_payment.heading.credit_card": {
+ "defaultMessage": "Credit Card"
+ },
+ "checkout_payment.label.same_as_shipping": {
+ "defaultMessage": "Same as shipping address"
+ },
+ "checkout_payment.title.payment": {
+ "defaultMessage": "Payment"
+ },
+ "confirmation_modal.default.action.no": {
+ "defaultMessage": "No"
+ },
+ "confirmation_modal.default.action.yes": {
+ "defaultMessage": "Yes"
+ },
+ "confirmation_modal.default.message.you_want_to_continue": {
+ "defaultMessage": "Are you sure you want to continue?"
+ },
+ "confirmation_modal.default.title.confirm_action": {
+ "defaultMessage": "Confirm Action"
+ },
+ "confirmation_modal.remove_cart_item.action.no": {
+ "defaultMessage": "No, keep item"
+ },
+ "confirmation_modal.remove_cart_item.action.yes": {
+ "defaultMessage": "Yes, remove item"
+ },
+ "confirmation_modal.remove_cart_item.message.sure_to_remove": {
+ "defaultMessage": "Are you sure you want to remove this item from your cart?"
+ },
+ "confirmation_modal.remove_cart_item.title.confirm_remove": {
+ "defaultMessage": "Confirm Remove Item"
+ },
+ "confirmation_modal.remove_wishlist_item.action.no": {
+ "defaultMessage": "No, keep item"
+ },
+ "confirmation_modal.remove_wishlist_item.action.yes": {
+ "defaultMessage": "Yes, remove item"
+ },
+ "confirmation_modal.remove_wishlist_item.message.sure_to_remove": {
+ "defaultMessage": "Are you sure you want to remove this item from your wishlist?"
+ },
+ "confirmation_modal.remove_wishlist_item.title.confirm_remove": {
+ "defaultMessage": "Confirm Remove Item"
+ },
+ "contact_info.action.sign_out": {
+ "defaultMessage": "Sign Out"
+ },
+ "contact_info.button.already_have_account": {
+ "defaultMessage": "Already have an account? Log in"
+ },
+ "contact_info.button.checkout_as_guest": {
+ "defaultMessage": "Checkout as Guest"
+ },
+ "contact_info.button.login": {
+ "defaultMessage": "Log In"
+ },
+ "contact_info.error.incorrect_username_or_password": {
+ "defaultMessage": "Incorrect username or password, please try again."
+ },
+ "contact_info.link.forgot_password": {
+ "defaultMessage": "Forgot password?"
+ },
+ "contact_info.title.contact_info": {
+ "defaultMessage": "Contact Info"
+ },
+ "credit_card_fields.tool_tip.security_code": {
+ "defaultMessage": "This {length}-digit code can be found on the {side} of your card.",
+ "description": "Credit card security code help text"
+ },
+ "drawer_menu.button.account_details": {
+ "defaultMessage": "Account Details"
+ },
+ "drawer_menu.button.addresses": {
+ "defaultMessage": "Addresses"
+ },
+ "drawer_menu.button.log_out": {
+ "defaultMessage": "Log Out"
+ },
+ "drawer_menu.button.my_account": {
+ "defaultMessage": "My Account"
+ },
+ "drawer_menu.button.order_history": {
+ "defaultMessage": "Order History"
+ },
+ "drawer_menu.button.payment_methods": {
+ "defaultMessage": "Payment Methods"
+ },
+ "drawer_menu.link.about_us": {
+ "defaultMessage": "About Us"
+ },
+ "drawer_menu.link.customer_support": {
+ "defaultMessage": "Customer Support"
+ },
+ "drawer_menu.link.customer_support.contact_us": {
+ "defaultMessage": "Contact Us"
+ },
+ "drawer_menu.link.customer_support.shipping_and_returns": {
+ "defaultMessage": "Shipping & Returns"
+ },
+ "drawer_menu.link.our_company": {
+ "defaultMessage": "Our Company"
+ },
+ "drawer_menu.link.privacy_and_security": {
+ "defaultMessage": "Privacy & Security"
+ },
+ "drawer_menu.link.privacy_policy": {
+ "defaultMessage": "Privacy Policy"
+ },
+ "drawer_menu.link.shop_all": {
+ "defaultMessage": "Shop All"
+ },
+ "drawer_menu.link.sign_in": {
+ "defaultMessage": "Sign In"
+ },
+ "drawer_menu.link.site_map": {
+ "defaultMessage": "Site Map"
+ },
+ "drawer_menu.link.store_locator": {
+ "defaultMessage": "Store Locator"
+ },
+ "drawer_menu.link.terms_and_conditions": {
+ "defaultMessage": "Terms & Conditions"
+ },
+ "empty_cart.description.empty_cart": {
+ "defaultMessage": "Your cart is empty."
+ },
+ "empty_cart.link.continue_shopping": {
+ "defaultMessage": "Continue Shopping"
+ },
+ "empty_cart.link.sign_in": {
+ "defaultMessage": "Sign In"
+ },
+ "empty_cart.message.continue_shopping": {
+ "defaultMessage": "Continue shopping to add items to your cart."
+ },
+ "empty_cart.message.sign_in_or_continue_shopping": {
+ "defaultMessage": "Sign in to retrieve your saved items or continue shopping."
+ },
+ "empty_search_results.info.cant_find_anything_for_category": {
+ "defaultMessage": "We couldn’t find anything for {category}. Try searching for a product or {link}."
+ },
+ "empty_search_results.info.cant_find_anything_for_query": {
+ "defaultMessage": "We couldn’t find anything for \"{searchQuery}\"."
+ },
+ "empty_search_results.info.double_check_spelling": {
+ "defaultMessage": "Double-check your spelling and try again or {link}."
+ },
+ "empty_search_results.link.contact_us": {
+ "defaultMessage": "Contact Us"
+ },
+ "empty_search_results.recommended_products.title.most_viewed": {
+ "defaultMessage": "Most Viewed"
+ },
+ "empty_search_results.recommended_products.title.top_sellers": {
+ "defaultMessage": "Top Sellers"
+ },
+ "footer.column.account": {
+ "defaultMessage": "Account"
+ },
+ "footer.column.customer_support": {
+ "defaultMessage": "Customer Support"
+ },
+ "footer.column.our_company": {
+ "defaultMessage": "Our Company"
+ },
+ "footer.link.about_us": {
+ "defaultMessage": "About Us"
+ },
+ "footer.link.contact_us": {
+ "defaultMessage": "Contact Us"
+ },
+ "footer.link.order_status": {
+ "defaultMessage": "Order Status"
+ },
+ "footer.link.privacy_policy": {
+ "defaultMessage": "Privacy Policy"
+ },
+ "footer.link.shipping": {
+ "defaultMessage": "Shipping"
+ },
+ "footer.link.signin_create_account": {
+ "defaultMessage": "Sign in or create account"
+ },
+ "footer.link.site_map": {
+ "defaultMessage": "Site Map"
+ },
+ "footer.link.store_locator": {
+ "defaultMessage": "Store Locator"
+ },
+ "footer.link.terms_conditions": {
+ "defaultMessage": "Terms & Conditions"
+ },
+ "footer.message.copyright": {
+ "defaultMessage": "2021 Salesforce or its affiliates. All rights reserved. This is a demo store only. Orders made WILL NOT be processed."
+ },
+ "footer.subscribe.button.sign_up": {
+ "defaultMessage": "Sign Up"
+ },
+ "footer.subscribe.description.sign_up": {
+ "defaultMessage": "Sign up to stay in the loop about the hottest deals"
+ },
+ "footer.subscribe.heading.first_to_know": {
+ "defaultMessage": "Be the first to know"
+ },
+ "form_action_buttons.button.cancel": {
+ "defaultMessage": "Cancel"
+ },
+ "form_action_buttons.button.save": {
+ "defaultMessage": "Save"
+ },
+ "global.account.link.account_details": {
+ "defaultMessage": "Account Details"
+ },
+ "global.account.link.addresses": {
+ "defaultMessage": "Addresses"
+ },
+ "global.account.link.order_history": {
+ "defaultMessage": "Order History"
+ },
+ "global.account.link.payment_methods": {
+ "defaultMessage": "Payment Methods"
+ },
+ "global.account.link.wishlist": {
+ "defaultMessage": "Wishlist"
+ },
+ "global.error.something_went_wrong": {
+ "defaultMessage": "Something went wrong. Try again!"
+ },
+ "header.button.assistive_msg.logo": {
+ "defaultMessage": "Logo"
+ },
+ "header.button.assistive_msg.menu": {
+ "defaultMessage": "Menu"
+ },
+ "header.button.assistive_msg.my_account": {
+ "defaultMessage": "My account"
+ },
+ "header.button.assistive_msg.my_cart": {
+ "defaultMessage": "My cart"
+ },
+ "header.button.assistive_msg.wishlist": {
+ "defaultMessage": "Wishlist"
+ },
+ "header.field.placeholder.search_for_products": {
+ "defaultMessage": "Search for products..."
+ },
+ "header.popover.action.log_out": {
+ "defaultMessage": "Log out"
+ },
+ "header.popover.title.my_account": {
+ "defaultMessage": "My Account"
+ },
+ "home.description.contact_our_staff": {
+ "defaultMessage": "Contact our support staff."
+ },
+ "home.description.features": {
+ "defaultMessage": "Out-of-the-box features so that you focus only on adding enhancements."
+ },
+ "home.description.get_you_to_the_right_place": {
+ "defaultMessage": "They will get you to the right place."
+ },
+ "home.description.shop_products": {
+ "defaultMessage": "This section contains content from the catalog. {docLink} on how to replace it.",
+ "description": "{docLink} is a html button that links the user to https://sfdc.co/business-manager-manage-catalogs"
+ },
+ "home.features.description.cart_checkout": {
+ "defaultMessage": "Ecommerce best practice for a shopper's cart and checkout experience."
+ },
+ "home.features.description.components": {
+ "defaultMessage": "Built using Chakra UI, a simple, modular and accessible React component library."
+ },
+ "home.features.description.einstein_recommendations": {
+ "defaultMessage": "Deliver the next best product or offer to every shopper through product recommendations."
+ },
+ "home.features.description.my_account": {
+ "defaultMessage": "Shoppers can manage account information such as their profile, addresses, payments and orders."
+ },
+ "home.features.description.shopper_login": {
+ "defaultMessage": "Enable shoppers to easily log in with a more personalized shopping experience."
+ },
+ "home.features.description.wishlist": {
+ "defaultMessage": "Registered shoppers can add product items to their wishlist from purchasing later."
+ },
+ "home.features.heading.cart_checkout": {
+ "defaultMessage": "Cart & Checkout"
+ },
+ "home.features.heading.components": {
+ "defaultMessage": "Components & Design Kit"
+ },
+ "home.features.heading.einstein_recommendations": {
+ "defaultMessage": "Einstein Recommendations"
+ },
+ "home.features.heading.my_account": {
+ "defaultMessage": "My Account"
+ },
+ "home.features.heading.shopper_login": {
+ "defaultMessage": "Shopper Login and API Access Service"
+ },
+ "home.features.heading.wishlist": {
+ "defaultMessage": "Wishlist"
+ },
+ "home.heading.features": {
+ "defaultMessage": "Features"
+ },
+ "home.heading.here_to_help": {
+ "defaultMessage": "We're here to help"
+ },
+ "home.heading.shop_products": {
+ "defaultMessage": "Shop Products"
+ },
+ "home.hero_features.link.design_kit": {
+ "defaultMessage": "Create with the Figma PWA Design Kit"
+ },
+ "home.hero_features.link.on_github": {
+ "defaultMessage": "Download on Github"
+ },
+ "home.hero_features.link.on_managed_runtime": {
+ "defaultMessage": "Deploy on Managed Runtime"
+ },
+ "home.link.contact_us": {
+ "defaultMessage": "Contact Us"
+ },
+ "home.link.get_started": {
+ "defaultMessage": "Get started"
+ },
+ "home.link.read_docs": {
+ "defaultMessage": "Read docs"
+ },
+ "home.title.react_starter_store": {
+ "defaultMessage": "The React PWA Starter Store for Retail"
+ },
+ "item_attributes.label.promotions": {
+ "defaultMessage": "Promotions"
+ },
+ "item_attributes.label.quantity": {
+ "defaultMessage": "Quantity: {quantity}"
+ },
+ "item_image.label.sale": {
+ "defaultMessage": "Sale",
+ "description": "A sale badge placed on top of a product image"
+ },
+ "lCPCxk": {
+ "defaultMessage": "Please select all your options above"
+ },
+ "locale_text.message.ar-SA": {
+ "defaultMessage": "Arabic (Saudi Arabia)"
+ },
+ "locale_text.message.bn-BD": {
+ "defaultMessage": "Bangla (Bangladesh)"
+ },
+ "locale_text.message.bn-IN": {
+ "defaultMessage": "Bangla (India)"
+ },
+ "locale_text.message.cs-CZ": {
+ "defaultMessage": "Czech (Czech Republic)"
+ },
+ "locale_text.message.da-DK": {
+ "defaultMessage": "Danish (Denmark)"
+ },
+ "locale_text.message.de-AT": {
+ "defaultMessage": "German (Austria)"
+ },
+ "locale_text.message.de-CH": {
+ "defaultMessage": "German (Switzerland)"
+ },
+ "locale_text.message.de-DE": {
+ "defaultMessage": "German (Germany)"
+ },
+ "locale_text.message.el-GR": {
+ "defaultMessage": "Greek (Greece)"
+ },
+ "locale_text.message.en-AU": {
+ "defaultMessage": "English (Australia)"
+ },
+ "locale_text.message.en-CA": {
+ "defaultMessage": "English (Canada)"
+ },
+ "locale_text.message.en-GB": {
+ "defaultMessage": "English (United Kingdom)"
+ },
+ "locale_text.message.en-IE": {
+ "defaultMessage": "English (Ireland)"
+ },
+ "locale_text.message.en-IN": {
+ "defaultMessage": "English (India)"
+ },
+ "locale_text.message.en-NZ": {
+ "defaultMessage": "English (New Zealand)"
+ },
+ "locale_text.message.en-US": {
+ "defaultMessage": "English (United States)"
+ },
+ "locale_text.message.en-ZA": {
+ "defaultMessage": "English (South Africa)"
+ },
+ "locale_text.message.es-AR": {
+ "defaultMessage": "Spanish (Argentina)"
+ },
+ "locale_text.message.es-CL": {
+ "defaultMessage": "Spanish (Chile)"
+ },
+ "locale_text.message.es-CO": {
+ "defaultMessage": "Spanish (Columbia)"
+ },
+ "locale_text.message.es-ES": {
+ "defaultMessage": "Spanish (Spain)"
+ },
+ "locale_text.message.es-MX": {
+ "defaultMessage": "Spanish (Mexico)"
+ },
+ "locale_text.message.es-US": {
+ "defaultMessage": "Spanish (United States)"
+ },
+ "locale_text.message.fi-FI": {
+ "defaultMessage": "Finnish (Finland)"
+ },
+ "locale_text.message.fr-BE": {
+ "defaultMessage": "French (Belgium)"
+ },
+ "locale_text.message.fr-CA": {
+ "defaultMessage": "French (Canada)"
+ },
+ "locale_text.message.fr-CH": {
+ "defaultMessage": "French (Switzerland)"
+ },
+ "locale_text.message.fr-FR": {
+ "defaultMessage": "French (France)"
+ },
+ "locale_text.message.he-IL": {
+ "defaultMessage": "Hebrew (Israel)"
+ },
+ "locale_text.message.hi-IN": {
+ "defaultMessage": "Hindi (India)"
+ },
+ "locale_text.message.hu-HU": {
+ "defaultMessage": "Hungarian (Hungary)"
+ },
+ "locale_text.message.id-ID": {
+ "defaultMessage": "Indonesian (Indonesia)"
+ },
+ "locale_text.message.it-CH": {
+ "defaultMessage": "Italian (Switzerland)"
+ },
+ "locale_text.message.it-IT": {
+ "defaultMessage": "Italian (Italy)"
+ },
+ "locale_text.message.ja-JP": {
+ "defaultMessage": "Japanese (Japan)"
+ },
+ "locale_text.message.ko-KR": {
+ "defaultMessage": "Korean (Republic of Korea)"
+ },
+ "locale_text.message.nl-BE": {
+ "defaultMessage": "Dutch (Belgium)"
+ },
+ "locale_text.message.nl-NL": {
+ "defaultMessage": "Dutch (The Netherlands)"
+ },
+ "locale_text.message.no-NO": {
+ "defaultMessage": "Norwegian (Norway)"
+ },
+ "locale_text.message.pl-PL": {
+ "defaultMessage": "Polish (Poland)"
+ },
+ "locale_text.message.pt-BR": {
+ "defaultMessage": "Portuguese (Brazil)"
+ },
+ "locale_text.message.pt-PT": {
+ "defaultMessage": "Portuguese (Portugal)"
+ },
+ "locale_text.message.ro-RO": {
+ "defaultMessage": "Romanian (Romania)"
+ },
+ "locale_text.message.ru-RU": {
+ "defaultMessage": "Russian (Russian Federation)"
+ },
+ "locale_text.message.sk-SK": {
+ "defaultMessage": "Slovak (Slovakia)"
+ },
+ "locale_text.message.sv-SE": {
+ "defaultMessage": "Swedish (Sweden)"
+ },
+ "locale_text.message.ta-IN": {
+ "defaultMessage": "Tamil (India)"
+ },
+ "locale_text.message.ta-LK": {
+ "defaultMessage": "Tamil (Sri Lanka)"
+ },
+ "locale_text.message.th-TH": {
+ "defaultMessage": "Thai (Thailand)"
+ },
+ "locale_text.message.tr-TR": {
+ "defaultMessage": "Turkish (Turkey)"
+ },
+ "locale_text.message.zh-CN": {
+ "defaultMessage": "Chinese (China)"
+ },
+ "locale_text.message.zh-HK": {
+ "defaultMessage": "Chinese (Hong Kong)"
+ },
+ "locale_text.message.zh-TW": {
+ "defaultMessage": "Chinese (Taiwan)"
+ },
+ "login_form.action.create_account": {
+ "defaultMessage": "Create account"
+ },
+ "login_form.button.sign_in": {
+ "defaultMessage": "Sign In"
+ },
+ "login_form.link.forgot_password": {
+ "defaultMessage": "Forgot password?"
+ },
+ "login_form.message.dont_have_account": {
+ "defaultMessage": "Don't have an account?"
+ },
+ "login_form.message.welcome_back": {
+ "defaultMessage": "Welcome Back"
+ },
+ "login_page.error.incorrect_username_or_password": {
+ "defaultMessage": "Incorrect username or password, please try again."
+ },
+ "offline_banner.description.browsing_offline_mode": {
+ "defaultMessage": "You're currently browsing in offline mode"
+ },
+ "order_summary.action.remove_promo": {
+ "defaultMessage": "Remove"
+ },
+ "order_summary.cart_items.action.num_of_items_in_cart": {
+ "defaultMessage": "{itemCount, plural, =0 {0 items} one {# item} other {# items}} in cart",
+ "description": "clicking it would expand/show the items in cart"
+ },
+ "order_summary.cart_items.link.edit_cart": {
+ "defaultMessage": "Edit cart"
+ },
+ "order_summary.heading.order_summary": {
+ "defaultMessage": "Order Summary"
+ },
+ "order_summary.label.estimated_total": {
+ "defaultMessage": "Estimated Total"
+ },
+ "order_summary.label.free": {
+ "defaultMessage": "Free"
+ },
+ "order_summary.label.order_total": {
+ "defaultMessage": "Order Total"
+ },
+ "order_summary.label.promo_applied": {
+ "defaultMessage": "Promotion applied"
+ },
+ "order_summary.label.promotions_applied": {
+ "defaultMessage": "Promotions applied"
+ },
+ "order_summary.label.shipping": {
+ "defaultMessage": "Shipping"
+ },
+ "order_summary.label.subtotal": {
+ "defaultMessage": "Subtotal"
+ },
+ "order_summary.label.tax": {
+ "defaultMessage": "Tax"
+ },
+ "page_not_found.action.go_back": {
+ "defaultMessage": "Back to previous page"
+ },
+ "page_not_found.link.homepage": {
+ "defaultMessage": "Go to home page"
+ },
+ "page_not_found.message.suggestion_to_try": {
+ "defaultMessage": "Please try retyping the address, going back to the previous page, or going to the home page."
+ },
+ "page_not_found.title.page_cant_be_found": {
+ "defaultMessage": "The page you're looking for can't be found."
+ },
+ "pagination.field.num_of_pages": {
+ "defaultMessage": "of {numOfPages}"
+ },
+ "pagination.link.next": {
+ "defaultMessage": "Next"
+ },
+ "pagination.link.prev": {
+ "defaultMessage": "Prev"
+ },
+ "password_card.info.password_updated": {
+ "defaultMessage": "Password updated"
+ },
+ "password_card.label.password": {
+ "defaultMessage": "Password"
+ },
+ "password_card.title.password": {
+ "defaultMessage": "Password"
+ },
+ "password_requirements.error.eight_letter_minimum": {
+ "defaultMessage": "8 characters minimum",
+ "description": "Password requirement"
+ },
+ "password_requirements.error.one_lowercase_letter": {
+ "defaultMessage": "1 lowercase letter",
+ "description": "Password requirement"
+ },
+ "password_requirements.error.one_number": {
+ "defaultMessage": "1 number",
+ "description": "Password requirement"
+ },
+ "password_requirements.error.one_special_character": {
+ "defaultMessage": "1 special character (example: , S ! % #)",
+ "description": "Password requirement"
+ },
+ "password_requirements.error.one_uppercase_letter": {
+ "defaultMessage": "1 uppercase letter",
+ "description": "Password requirement"
+ },
+ "payment_selection.button.save_and_continue": {
+ "defaultMessage": "Save & Continue"
+ },
+ "payment_selection.heading.add_new_card": {
+ "defaultMessage": "Add New Card"
+ },
+ "payment_selection.heading.credit_card": {
+ "defaultMessage": "Credit Card"
+ },
+ "payment_selection.message.select_payment_method": {
+ "defaultMessage": "Please select a payment method."
+ },
+ "payment_selection.tooltip.secure_payment": {
+ "defaultMessage": "This is a secure SSL encrypted payment."
+ },
+ "price_per_item.label.each": {
+ "defaultMessage": "ea",
+ "description": "Abbreviated 'each', follows price per item, like $10/ea"
+ },
+ "product_detail.accordion.button.product_detail": {
+ "defaultMessage": "Product Detail"
+ },
+ "product_detail.accordion.button.questions": {
+ "defaultMessage": "Questions"
+ },
+ "product_detail.accordion.button.reviews": {
+ "defaultMessage": "Reviews"
+ },
+ "product_detail.accordion.button.size_fit": {
+ "defaultMessage": "Size & Fit"
+ },
+ "product_detail.accordion.message.coming_soon": {
+ "defaultMessage": "Coming Soon"
+ },
+ "product_detail.info.added_to_wishlist": {
+ "defaultMessage": "{quantity} {quantity, plural, one {item} other {items}} added to wishlist"
+ },
+ "product_detail.recommended_products.title.complete_set": {
+ "defaultMessage": "Complete the Set"
+ },
+ "product_detail.recommended_products.title.might_also_like": {
+ "defaultMessage": "You might also like"
+ },
+ "product_detail.recommended_products.title.recently_viewed": {
+ "defaultMessage": "Recently Viewed"
+ },
+ "product_item.label.quantity": {
+ "defaultMessage": "Quantity:"
+ },
+ "product_list.button.filter": {
+ "defaultMessage": "Filter"
+ },
+ "product_list.button.sort_by": {
+ "defaultMessage": "Sort By: {sortOption}"
+ },
+ "product_list.drawer.title.sort_by": {
+ "defaultMessage": "Sort By"
+ },
+ "product_list.info.added_to_wishlist": {
+ "defaultMessage": "{quantity} {quantity, plural, one {item} other {items}} added to wishlist"
+ },
+ "product_list.info.removed_from_wishlist": {
+ "defaultMessage": "Item removed from wishlist"
+ },
+ "product_list.modal.button.clear_filters": {
+ "defaultMessage": "Clear Filters"
+ },
+ "product_list.modal.button.view_items": {
+ "defaultMessage": "View {prroductCount} items"
+ },
+ "product_list.modal.title.filter": {
+ "defaultMessage": "Filter"
+ },
+ "product_list.select.sort_by": {
+ "defaultMessage": "Sort By: {sortOption}"
+ },
+ "product_tile.assistive_msg.wishlist": {
+ "defaultMessage": "Wishlist"
+ },
+ "product_view.button.add_to_cart": {
+ "defaultMessage": "Add to Cart"
+ },
+ "product_view.button.add_to_wishlist": {
+ "defaultMessage": "Add to Wishlist"
+ },
+ "product_view.button.update": {
+ "defaultMessage": "Update"
+ },
+ "product_view.label.quantity": {
+ "defaultMessage": "Quantity"
+ },
+ "product_view.link.full_details": {
+ "defaultMessage": "See full details"
+ },
+ "profile_card.info.profile_updated": {
+ "defaultMessage": "Profile updated"
+ },
+ "profile_card.label.email": {
+ "defaultMessage": "Email"
+ },
+ "profile_card.label.full_name": {
+ "defaultMessage": "Full Name"
+ },
+ "profile_card.label.phone": {
+ "defaultMessage": "Phone Number"
+ },
+ "profile_card.message.not_provided": {
+ "defaultMessage": "Not provided"
+ },
+ "profile_card.title.my_profile": {
+ "defaultMessage": "My Profile"
+ },
+ "promo_code_fields.button.apply": {
+ "defaultMessage": "Apply"
+ },
+ "promo_popover.heading.promo_applied": {
+ "defaultMessage": "Promotions Applied"
+ },
+ "promocode.accordion.button.have_promocode": {
+ "defaultMessage": "Do you have a promo code?"
+ },
+ "recent_searches.action.clear_searches": {
+ "defaultMessage": "Clear recent searches"
+ },
+ "recent_searches.heading.recent_searches": {
+ "defaultMessage": "Recent Searches"
+ },
+ "recommended_products.info.added_to_wishlist": {
+ "defaultMessage": "{quantity} {quantity, plural, one {item} other {items}} added to wishlist"
+ },
+ "recommended_products.info.removed_from_wishlist": {
+ "defaultMessage": "Item removed from wishlist"
+ },
+ "register_form.action.sign_in": {
+ "defaultMessage": "Sign in"
+ },
+ "register_form.button.create_account": {
+ "defaultMessage": "Create Account"
+ },
+ "register_form.heading.lets_get_started": {
+ "defaultMessage": "Let's get started!"
+ },
+ "register_form.message.agree_to_policy_terms": {
+ "defaultMessage": "By creating an account, you agree to Salesforce Privacy Policy and Terms & Conditions"
+ },
+ "register_form.message.already_have_account": {
+ "defaultMessage": "Already have an account?"
+ },
+ "register_form.message.create_an_account": {
+ "defaultMessage": "Create an account and get first access to the very best products, inspiration and community."
+ },
+ "reset_password.button.back_to_sign_in": {
+ "defaultMessage": "Back to Sign In"
+ },
+ "reset_password.info.receive_email_shortly": {
+ "defaultMessage": "You will receive an email at {email} with a link to reset your password shortly."
+ },
+ "reset_password.title.password_reset": {
+ "defaultMessage": "Password Reset"
+ },
+ "reset_password_form.action.sign_in": {
+ "defaultMessage": "Sign in"
+ },
+ "reset_password_form.button.reset_password": {
+ "defaultMessage": "Reset Password"
+ },
+ "reset_password_form.message.enter_your_email": {
+ "defaultMessage": "Enter your email to receive instructions on how to reset your password"
+ },
+ "reset_password_form.message.return_to_sign_in": {
+ "defaultMessage": "Or return to",
+ "description": "Precedes link to return to sign in"
+ },
+ "reset_password_form.title.reset_password": {
+ "defaultMessage": "Reset Password"
+ },
+ "search.action.cancel": {
+ "defaultMessage": "Cancel"
+ },
+ "selected_refinements.action.clear_all": {
+ "defaultMessage": "Clear All"
+ },
+ "shipping_address.button.continue_to_shipping": {
+ "defaultMessage": "Continue to Shipping Method"
+ },
+ "shipping_address.title.shipping_address": {
+ "defaultMessage": "Shipping Address"
+ },
+ "shipping_address_edit_form.button.save_and_continue": {
+ "defaultMessage": "Save & Continue to Shipping Method"
+ },
+ "shipping_address_form.heading.edit_address": {
+ "defaultMessage": "Edit Address"
+ },
+ "shipping_address_form.heading.new_address": {
+ "defaultMessage": "Add New Address"
+ },
+ "shipping_address_selection.button.add_address": {
+ "defaultMessage": "Add New Address"
+ },
+ "shipping_address_selection.button.submit": {
+ "defaultMessage": "Submit"
+ },
+ "shipping_address_selection.title.add_address": {
+ "defaultMessage": "Add New Address"
+ },
+ "shipping_address_selection.title.edit_shipping": {
+ "defaultMessage": "Edit Shipping Address"
+ },
+ "shipping_options.action.send_as_a_gift": {
+ "defaultMessage": "Do you want to send this as a gift?"
+ },
+ "shipping_options.button.continue_to_payment": {
+ "defaultMessage": "Continue to Payment"
+ },
+ "shipping_options.title.shipping_gift_options": {
+ "defaultMessage": "Shipping & Gift Options"
+ },
+ "signout_confirmation_dialog.button.cancel": {
+ "defaultMessage": "Cancel"
+ },
+ "signout_confirmation_dialog.button.sign_out": {
+ "defaultMessage": "Sign Out"
+ },
+ "signout_confirmation_dialog.heading.sign_out": {
+ "defaultMessage": "Sign Out"
+ },
+ "signout_confirmation_dialog.message.sure_to_sign_out": {
+ "defaultMessage": "Are you sure you want to sign out? You will need to sign back in to proceed with your current order."
+ },
+ "toggle_card.action.edit": {
+ "defaultMessage": "Edit"
+ },
+ "update_password_fields.button.forgot_password": {
+ "defaultMessage": "Forgot Password?"
+ },
+ "use_address_fields.error.please_enter_first_name": {
+ "defaultMessage": "Please enter your first name."
+ },
+ "use_address_fields.error.please_enter_last_name": {
+ "defaultMessage": "Please enter your last name."
+ },
+ "use_address_fields.error.please_enter_phone_number": {
+ "defaultMessage": "Please enter your phone number."
+ },
+ "use_address_fields.error.please_enter_your_postal_or_zip": {
+ "defaultMessage": "Please enter your {postalOrZip}."
+ },
+ "use_address_fields.error.please_select_your_address": {
+ "defaultMessage": "Please enter your address."
+ },
+ "use_address_fields.error.please_select_your_city": {
+ "defaultMessage": "Please enter your city."
+ },
+ "use_address_fields.error.please_select_your_country": {
+ "defaultMessage": "Please select your country."
+ },
+ "use_address_fields.error.please_select_your_state_or_province": {
+ "defaultMessage": "Please select your {stateOrProvince}."
+ },
+ "use_address_fields.error.required": {
+ "defaultMessage": "Required"
+ },
+ "use_address_fields.error.state_code_invalid": {
+ "defaultMessage": "Please enter 2-letter state/province."
+ },
+ "use_address_fields.label.address": {
+ "defaultMessage": "Address"
+ },
+ "use_address_fields.label.city": {
+ "defaultMessage": "City"
+ },
+ "use_address_fields.label.country": {
+ "defaultMessage": "Country"
+ },
+ "use_address_fields.label.first_name": {
+ "defaultMessage": "First Name"
+ },
+ "use_address_fields.label.last_name": {
+ "defaultMessage": "Last Name"
+ },
+ "use_address_fields.label.phone": {
+ "defaultMessage": "Phone"
+ },
+ "use_address_fields.label.postal_code": {
+ "defaultMessage": "Postal Code"
+ },
+ "use_address_fields.label.preferred": {
+ "defaultMessage": "Set as default"
+ },
+ "use_address_fields.label.province": {
+ "defaultMessage": "Province"
+ },
+ "use_address_fields.label.state": {
+ "defaultMessage": "State"
+ },
+ "use_address_fields.label.zipCode": {
+ "defaultMessage": "Zip Code"
+ },
+ "use_credit_card_fields.error.required": {
+ "defaultMessage": "Required"
+ },
+ "use_credit_card_fields.error.required_card_number": {
+ "defaultMessage": "Please enter your card number."
+ },
+ "use_credit_card_fields.error.required_expiry": {
+ "defaultMessage": "Please enter your expiration date."
+ },
+ "use_credit_card_fields.error.required_name": {
+ "defaultMessage": "Please enter your name as shown on your card."
+ },
+ "use_credit_card_fields.error.required_security_code": {
+ "defaultMessage": "Please enter your security code."
+ },
+ "use_credit_card_fields.error.valid_card_number": {
+ "defaultMessage": "Please enter a valid card number."
+ },
+ "use_credit_card_fields.error.valid_date": {
+ "defaultMessage": "Please enter a valid date."
+ },
+ "use_credit_card_fields.error.valid_name": {
+ "defaultMessage": "Please enter a valid name."
+ },
+ "use_credit_card_fields.error.valid_security_code": {
+ "defaultMessage": "Please enter a valid security code."
+ },
+ "use_credit_card_fields.label.card_number": {
+ "defaultMessage": "Card Number"
+ },
+ "use_credit_card_fields.label.card_type": {
+ "defaultMessage": "Card Type"
+ },
+ "use_credit_card_fields.label.expiry": {
+ "defaultMessage": "Expiration Date"
+ },
+ "use_credit_card_fields.label.name": {
+ "defaultMessage": "Name on Card"
+ },
+ "use_credit_card_fields.label.security_code": {
+ "defaultMessage": "Security Code"
+ },
+ "use_login_fields.error.required_email": {
+ "defaultMessage": "Please enter your email address."
+ },
+ "use_login_fields.error.required_password": {
+ "defaultMessage": "Please enter your password."
+ },
+ "use_login_fields.label.email": {
+ "defaultMessage": "Email"
+ },
+ "use_login_fields.label.password": {
+ "defaultMessage": "Password"
+ },
+ "use_product.message.inventory_remaining": {
+ "defaultMessage": "Only {stockLevel} left!"
+ },
+ "use_product.message.out_of_stock": {
+ "defaultMessage": "Out of stock"
+ },
+ "use_profile_fields.error.required_email": {
+ "defaultMessage": "Please enter a valid email address."
+ },
+ "use_profile_fields.error.required_first_name": {
+ "defaultMessage": "Please enter your first name."
+ },
+ "use_profile_fields.error.required_last_name": {
+ "defaultMessage": "Please enter your last name."
+ },
+ "use_profile_fields.error.required_phone": {
+ "defaultMessage": "Please enter your phone number."
+ },
+ "use_profile_fields.label.email": {
+ "defaultMessage": "Email"
+ },
+ "use_profile_fields.label.first_name": {
+ "defaultMessage": "First Name"
+ },
+ "use_profile_fields.label.last_name": {
+ "defaultMessage": "Last Name"
+ },
+ "use_profile_fields.label.phone": {
+ "defaultMessage": "Phone Number"
+ },
+ "use_promo_code_fields.error.required_promo_code": {
+ "defaultMessage": "Please provide a valid promo code."
+ },
+ "use_promo_code_fields.label.promo_code": {
+ "defaultMessage": "Promo Code"
+ },
+ "use_promocode.error.check_the_code": {
+ "defaultMessage": "Check the code and try again, it may already be applied or the promo has expired."
+ },
+ "use_promocode.info.promo_applied": {
+ "defaultMessage": "Promotion applied"
+ },
+ "use_promocode.info.promo_removed": {
+ "defaultMessage": "Promotion removed"
+ },
+ "use_registration_fields.error.contain_number": {
+ "defaultMessage": "Password must contain at least one number."
+ },
+ "use_registration_fields.error.lowercase_letter": {
+ "defaultMessage": "Password must contain at least one lowercase letter."
+ },
+ "use_registration_fields.error.minimum_characters": {
+ "defaultMessage": "Password must contain at least 8 characters."
+ },
+ "use_registration_fields.error.required_email": {
+ "defaultMessage": "Please enter a valid email address."
+ },
+ "use_registration_fields.error.required_first_name": {
+ "defaultMessage": "Please enter your first name."
+ },
+ "use_registration_fields.error.required_last_name": {
+ "defaultMessage": "Please enter your last name."
+ },
+ "use_registration_fields.error.required_password": {
+ "defaultMessage": "Please create a password."
+ },
+ "use_registration_fields.error.special_character": {
+ "defaultMessage": "Password must contain at least one special character."
+ },
+ "use_registration_fields.error.uppercase_letter": {
+ "defaultMessage": "Password must contain at least one uppercase letter."
+ },
+ "use_registration_fields.label.email": {
+ "defaultMessage": "Email"
+ },
+ "use_registration_fields.label.first_name": {
+ "defaultMessage": "First Name"
+ },
+ "use_registration_fields.label.last_name": {
+ "defaultMessage": "Last Name"
+ },
+ "use_registration_fields.label.password": {
+ "defaultMessage": "Password"
+ },
+ "use_registration_fields.label.sign_up_to_emails": {
+ "defaultMessage": "Sign me up for Salesforce emails (you can unsubscribe at any time)"
+ },
+ "use_reset_password_fields.error.required_email": {
+ "defaultMessage": "Please enter a valid email address."
+ },
+ "use_reset_password_fields.label.email": {
+ "defaultMessage": "Email"
+ },
+ "use_update_password_fields.error.contain_number": {
+ "defaultMessage": "Password must contain at least one number."
+ },
+ "use_update_password_fields.error.lowercase_letter": {
+ "defaultMessage": "Password must contain at least one lowercase letter."
+ },
+ "use_update_password_fields.error.minimum_characters": {
+ "defaultMessage": "Password must contain at least 8 characters."
+ },
+ "use_update_password_fields.error.required_new_password": {
+ "defaultMessage": "Please provide a new password."
+ },
+ "use_update_password_fields.error.required_password": {
+ "defaultMessage": "Please enter your password."
+ },
+ "use_update_password_fields.error.special_character": {
+ "defaultMessage": "Password must contain at least one special character."
+ },
+ "use_update_password_fields.error.uppercase_letter": {
+ "defaultMessage": "Password must contain at least one uppercase letter."
+ },
+ "use_update_password_fields.label.current_password": {
+ "defaultMessage": "Current Password"
+ },
+ "use_update_password_fields.label.new_password": {
+ "defaultMessage": "New Password"
+ },
+ "wishlist_primary_action.info.added_to_cart": {
+ "defaultMessage": "{quantity} {quantity, plural, one {item} other {items}} added to cart"
+ },
+ "wishlist_secondary_button_group.action.remove": {
+ "defaultMessage": "Remove"
+ },
+ "wishlist_secondary_button_group.info.item_removed": {
+ "defaultMessage": "Item removed from wishlist"
+ },
+ "with_registration.info.please_sign_in": {
+ "defaultMessage": "Please sign in to continue!"
+ }
+}
diff --git a/packages/pwa/app/utils/locale.test.js b/packages/pwa/app/utils/locale.test.js
index e431f5e676..addd13fb42 100644
--- a/packages/pwa/app/utils/locale.test.js
+++ b/packages/pwa/app/utils/locale.test.js
@@ -19,15 +19,18 @@ const supportedLocales = getSupportedLocalesIds()
const nonSupportedLocale = 'nl-NL'
// Make sure this supported locale is not the default locale.
// Otherwise, our code would fall back to default and incorrectly pass the tests
-const supportedLocale = supportedLocales[1]
+const supportedLocale = supportedLocales.length > 1 ? supportedLocales[1] : supportedLocales[0]
const testId1 = 'footer.link.privacy_policy'
-const testId2 = 'homepage.message.welcome'
+const testId2 =
+ supportedLocales.length > 1 ? 'homepage.message.welcome' : 'account.heading.my_account'
test('our assumptions before further testing', () => {
expect(supportedLocales.includes(nonSupportedLocale)).toBe(false)
- expect(DEFAULT_LOCALE).toBe('en-GB')
- expect(supportedLocale).not.toBe(DEFAULT_LOCALE)
+ if (supportedLocales.length > 1) {
+ expect(DEFAULT_LOCALE).toBe('en-GB')
+ expect(supportedLocale).not.toBe(DEFAULT_LOCALE)
+ }
})
describe('whichLocaleToLoad', () => {
@@ -55,7 +58,9 @@ describe('loadLocaleData', () => {
expect(messages[testId1][0].value).toMatch(/^\[!! Ṕŕíííṿâćććẏ ṔṔṔŏĺíííćẏ !!]$/)
})
test('handling a not-found translation file', async () => {
- expect(supportedLocale).not.toBe(DEFAULT_LOCALE)
+ if (supportedLocales.length > 1) {
+ expect(supportedLocale).not.toBe(DEFAULT_LOCALE)
+ }
jest.mock(`../translations/compiled/${supportedLocale}.json`, () => {
throw new Error()
@@ -94,8 +99,9 @@ describe('getLocaleConfig', () => {
})
test('with getUserPreferredLocales parameter', async () => {
const locale = supportedLocale
- expect(locale).not.toBe(DEFAULT_LOCALE)
-
+ if (supportedLocales.length > 1) {
+ expect(locale).not.toBe(DEFAULT_LOCALE)
+ }
const config = await getLocaleConfig({
getUserPreferredLocales: () => [locale]
})
diff --git a/packages/pwa/app/utils/test-utils.js b/packages/pwa/app/utils/test-utils.js
index a1029dc3a5..d21c3c457d 100644
--- a/packages/pwa/app/utils/test-utils.js
+++ b/packages/pwa/app/utils/test-utils.js
@@ -21,11 +21,12 @@ import {
import {AddToCartModalContext} from '../hooks/use-add-to-cart-modal'
import {commerceAPIConfig, einsteinAPIConfig} from '../api.config'
import {IntlProvider} from 'react-intl'
-import {DEFAULT_LOCALE, DEFAULT_CURRENCY} from '../constants'
+import {DEFAULT_LOCALE, DEFAULT_CURRENCY, urlPartPositions} from '../constants'
import {mockCategories as initialMockCategories} from '../commerce-api/mock-data'
// Contexts
import {CategoriesProvider, CurrencyProvider} from '../contexts'
+import {getUrlConfig} from './utils'
export const renderWithReactIntl = (node, locale = DEFAULT_LOCALE) => {
return render(
@@ -146,3 +147,16 @@ export const renderWithProviders = (children, options) =>
wrapper: () => {children},
...options
})
+
+/**
+ * This is used to obtain the URL pathname that would include
+ * or not include the locale shortcode in the URL according to
+ * the locale type configuration set in the pwa-kit.config.json
+ * file.
+ * @param path The pathname that we want to use
+ * @returns {`${string|string}${string}`} URL pathname for the given path
+ */
+export const getPathname = (path) => {
+ const {locale: localeType} = getUrlConfig()
+ return `${localeType === urlPartPositions.PATH ? `/${DEFAULT_LOCALE}` : ''}${path}`
+}