create-brainerce-store 1.3.2 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +62 -5
- package/messages/en.json +258 -0
- package/messages/he.json +258 -0
- package/package.json +3 -2
- package/templates/nextjs/base/src/app/account/page.tsx +108 -105
- package/templates/nextjs/base/src/app/auth/callback/page.tsx +90 -88
- package/templates/nextjs/base/src/app/cart/page.tsx +110 -109
- package/templates/nextjs/base/src/app/checkout/page.tsx +46 -43
- package/templates/nextjs/base/src/app/layout.tsx.ejs +8 -5
- package/templates/nextjs/base/src/app/login/page.tsx +58 -56
- package/templates/nextjs/base/src/app/order-confirmation/page.tsx +18 -23
- package/templates/nextjs/base/src/app/page.tsx +98 -95
- package/templates/nextjs/base/src/app/products/[slug]/page.tsx +16 -12
- package/templates/nextjs/base/src/app/products/page.tsx +246 -243
- package/templates/nextjs/base/src/app/register/page.tsx +68 -66
- package/templates/nextjs/base/src/app/verify-email/page.tsx +293 -291
- package/templates/nextjs/base/src/components/account/order-history.tsx +198 -184
- package/templates/nextjs/base/src/components/account/profile-section.tsx +75 -73
- package/templates/nextjs/base/src/components/auth/login-form.tsx +94 -92
- package/templates/nextjs/base/src/components/auth/oauth-buttons.tsx +137 -134
- package/templates/nextjs/base/src/components/auth/register-form.tsx +184 -177
- package/templates/nextjs/base/src/components/cart/cart-item.tsx +153 -150
- package/templates/nextjs/base/src/components/cart/cart-summary.tsx +70 -67
- package/templates/nextjs/base/src/components/cart/coupon-input.tsx +134 -131
- package/templates/nextjs/base/src/components/cart/reservation-countdown.tsx +103 -100
- package/templates/nextjs/base/src/components/checkout/checkout-form.tsx +28 -25
- package/templates/nextjs/base/src/components/checkout/delivery-method-step.tsx +6 -4
- package/templates/nextjs/base/src/components/checkout/payment-step.tsx +133 -103
- package/templates/nextjs/base/src/components/checkout/pickup-step.tsx +15 -11
- package/templates/nextjs/base/src/components/checkout/shipping-step.tsx +110 -111
- package/templates/nextjs/base/src/components/checkout/tax-display.tsx +7 -4
- package/templates/nextjs/base/src/components/layout/footer.tsx +38 -35
- package/templates/nextjs/base/src/components/layout/header.tsx +332 -329
- package/templates/nextjs/base/src/components/products/product-card.tsx +3 -1
- package/templates/nextjs/base/src/components/products/product-grid.tsx +35 -33
- package/templates/nextjs/base/src/components/shared/loading-spinner.tsx +32 -30
- package/templates/nextjs/base/src/i18n.ts.ejs +5 -0
- package/templates/nextjs/base/src/lib/translations.ts +11 -0
package/dist/index.js
CHANGED
|
@@ -31,14 +31,15 @@ var require_package = __commonJS({
|
|
|
31
31
|
"package.json"(exports2, module2) {
|
|
32
32
|
module2.exports = {
|
|
33
33
|
name: "create-brainerce-store",
|
|
34
|
-
version: "1.
|
|
34
|
+
version: "1.4.0",
|
|
35
35
|
description: "Scaffold a production-ready e-commerce storefront connected to Brainerce",
|
|
36
36
|
bin: {
|
|
37
37
|
"create-brainerce-store": "dist/index.js"
|
|
38
38
|
},
|
|
39
39
|
files: [
|
|
40
40
|
"dist",
|
|
41
|
-
"templates"
|
|
41
|
+
"templates",
|
|
42
|
+
"messages"
|
|
42
43
|
],
|
|
43
44
|
scripts: {
|
|
44
45
|
build: "tsup src/index.ts --format cjs --dts --clean",
|
|
@@ -184,6 +185,18 @@ async function runInteractive(defaults) {
|
|
|
184
185
|
}
|
|
185
186
|
});
|
|
186
187
|
}
|
|
188
|
+
if (!defaults.language) {
|
|
189
|
+
questions.push({
|
|
190
|
+
type: "select",
|
|
191
|
+
name: "language",
|
|
192
|
+
message: "Store language:",
|
|
193
|
+
choices: [
|
|
194
|
+
{ title: "English", value: "en" },
|
|
195
|
+
{ title: "\u05E2\u05D1\u05E8\u05D9\u05EA (Hebrew)", value: "he" }
|
|
196
|
+
],
|
|
197
|
+
initial: 0
|
|
198
|
+
});
|
|
199
|
+
}
|
|
187
200
|
questions.push(
|
|
188
201
|
{
|
|
189
202
|
type: "select",
|
|
@@ -232,6 +245,7 @@ async function runInteractive(defaults) {
|
|
|
232
245
|
return {
|
|
233
246
|
projectName: defaults.projectName || response.projectName,
|
|
234
247
|
connectionId: defaults.connectionId || response.connectionId,
|
|
248
|
+
language: response.language || defaults.language || "en",
|
|
235
249
|
framework: response.framework || defaults.framework || "nextjs",
|
|
236
250
|
theme: response.theme || defaults.theme || "minimal",
|
|
237
251
|
pkgManager: response.pkgManager || defaults.pkgManager || detectPackageManager()
|
|
@@ -242,6 +256,21 @@ async function runInteractive(defaults) {
|
|
|
242
256
|
var import_path = __toESM(require("path"));
|
|
243
257
|
var import_fs_extra = __toESM(require("fs-extra"));
|
|
244
258
|
var import_ejs = __toESM(require("ejs"));
|
|
259
|
+
function getDirection(language) {
|
|
260
|
+
return language === "he" ? "rtl" : "ltr";
|
|
261
|
+
}
|
|
262
|
+
function getFontConfig(language) {
|
|
263
|
+
if (language === "he") {
|
|
264
|
+
return {
|
|
265
|
+
fontImport: "import { Rubik } from 'next/font/google';",
|
|
266
|
+
fontVariable: "const font = Rubik({ subsets: ['hebrew', 'latin'] });"
|
|
267
|
+
};
|
|
268
|
+
}
|
|
269
|
+
return {
|
|
270
|
+
fontImport: "import { Inter } from 'next/font/google';",
|
|
271
|
+
fontVariable: "const font = Inter({ subsets: ['latin'] });"
|
|
272
|
+
};
|
|
273
|
+
}
|
|
245
274
|
async function scaffold(options) {
|
|
246
275
|
const { projectName, framework, theme } = options;
|
|
247
276
|
const targetDir = import_path.default.resolve(process.cwd(), projectName);
|
|
@@ -257,15 +286,29 @@ async function scaffold(options) {
|
|
|
257
286
|
if (!await import_fs_extra.default.pathExists(baseDir)) {
|
|
258
287
|
throw new Error(`Template "${framework}" not found at ${baseDir}`);
|
|
259
288
|
}
|
|
289
|
+
const direction = getDirection(options.language);
|
|
290
|
+
const fontConfig = getFontConfig(options.language);
|
|
291
|
+
const ogLocale = options.language === "he" ? "he_IL" : "en_US";
|
|
260
292
|
const templateVars = {
|
|
261
293
|
projectName: options.projectName,
|
|
262
294
|
connectionId: options.connectionId,
|
|
263
295
|
storeName: options.storeName,
|
|
264
296
|
currency: options.currency,
|
|
265
297
|
language: options.language,
|
|
298
|
+
direction,
|
|
299
|
+
fontImport: fontConfig.fontImport,
|
|
300
|
+
fontVariable: fontConfig.fontVariable,
|
|
301
|
+
ogLocale,
|
|
266
302
|
apiBaseUrl: "https://api.brainerce.com"
|
|
267
303
|
};
|
|
268
304
|
await copyWithEjs(baseDir, targetDir, templateVars);
|
|
305
|
+
const messagesRoot = findMessagesDir(__dirname);
|
|
306
|
+
const targetMessages = import_path.default.join(targetDir, "messages");
|
|
307
|
+
await import_fs_extra.default.ensureDir(targetMessages);
|
|
308
|
+
await import_fs_extra.default.copy(
|
|
309
|
+
import_path.default.join(messagesRoot, `${options.language}.json`),
|
|
310
|
+
import_path.default.join(targetMessages, `${options.language}.json`)
|
|
311
|
+
);
|
|
269
312
|
if (await import_fs_extra.default.pathExists(themeDir)) {
|
|
270
313
|
const themeCss = import_path.default.join(themeDir, "globals.css");
|
|
271
314
|
if (await import_fs_extra.default.pathExists(themeCss)) {
|
|
@@ -288,6 +331,17 @@ function findTemplatesDir(fromDir) {
|
|
|
288
331
|
}
|
|
289
332
|
return import_path.default.join(fromDir, "..", "templates");
|
|
290
333
|
}
|
|
334
|
+
function findMessagesDir(fromDir) {
|
|
335
|
+
let dir = fromDir;
|
|
336
|
+
for (let i = 0; i < 5; i++) {
|
|
337
|
+
const candidate = import_path.default.join(dir, "messages");
|
|
338
|
+
if (import_fs_extra.default.pathExistsSync(candidate)) {
|
|
339
|
+
return candidate;
|
|
340
|
+
}
|
|
341
|
+
dir = import_path.default.dirname(dir);
|
|
342
|
+
}
|
|
343
|
+
return import_path.default.join(fromDir, "..", "messages");
|
|
344
|
+
}
|
|
291
345
|
async function copyWithEjs(srcDir, destDir, vars) {
|
|
292
346
|
const entries = await import_fs_extra.default.readdir(srcDir, { withFileTypes: true });
|
|
293
347
|
await import_fs_extra.default.ensureDir(destDir);
|
|
@@ -393,26 +447,29 @@ function createSpinner(text) {
|
|
|
393
447
|
// src/index.ts
|
|
394
448
|
var pkg = require_package();
|
|
395
449
|
var program = new import_commander.Command();
|
|
396
|
-
program.name("create-brainerce-store").description("Scaffold a production-ready e-commerce storefront connected to Brainerce").version(pkg.version).argument("[project-name]", "Name for the project directory").option("--connection-id <id>", "Brainerce vibe-coded connection ID (vc_*)").option("--framework <framework>", "Framework to use", "nextjs").option("--theme <theme>", "Theme to apply", "minimal").option("--pkg-manager <manager>", "Package manager (npm, pnpm, yarn, bun)").option("--no-git", "Skip git initialization").option("--no-install", "Skip dependency installation").action(async (projectNameArg, options) => {
|
|
450
|
+
program.name("create-brainerce-store").description("Scaffold a production-ready e-commerce storefront connected to Brainerce").version(pkg.version).argument("[project-name]", "Name for the project directory").option("--connection-id <id>", "Brainerce vibe-coded connection ID (vc_*)").option("--language <lang>", "Store language (en, he)").option("--framework <framework>", "Framework to use", "nextjs").option("--theme <theme>", "Theme to apply", "minimal").option("--pkg-manager <manager>", "Package manager (npm, pnpm, yarn, bun)").option("--no-git", "Skip git initialization").option("--no-install", "Skip dependency installation").action(async (projectNameArg, options) => {
|
|
397
451
|
try {
|
|
398
452
|
logger.banner();
|
|
399
453
|
let projectName = projectNameArg;
|
|
400
454
|
let connectionId = options.connectionId;
|
|
455
|
+
let language = options.language;
|
|
401
456
|
let framework = options.framework;
|
|
402
457
|
let theme = options.theme;
|
|
403
458
|
let pkgManager = options.pkgManager;
|
|
404
459
|
const skipGit = options.git === false;
|
|
405
460
|
const skipInstall = options.install === false;
|
|
406
|
-
if (!projectName || !connectionId) {
|
|
461
|
+
if (!projectName || !connectionId || !language) {
|
|
407
462
|
const answers = await runInteractive({
|
|
408
463
|
projectName,
|
|
409
464
|
connectionId,
|
|
465
|
+
language,
|
|
410
466
|
framework,
|
|
411
467
|
theme,
|
|
412
468
|
pkgManager
|
|
413
469
|
});
|
|
414
470
|
projectName = answers.projectName;
|
|
415
471
|
connectionId = answers.connectionId;
|
|
472
|
+
language = answers.language;
|
|
416
473
|
framework = answers.framework;
|
|
417
474
|
theme = answers.theme;
|
|
418
475
|
pkgManager = answers.pkgManager;
|
|
@@ -454,7 +511,7 @@ program.name("create-brainerce-store").description("Scaffold a production-ready
|
|
|
454
511
|
theme,
|
|
455
512
|
storeName: storeInfo.name,
|
|
456
513
|
currency: storeInfo.currency,
|
|
457
|
-
language: storeInfo.language
|
|
514
|
+
language: language || storeInfo.language
|
|
458
515
|
});
|
|
459
516
|
scaffoldSpinner.succeed(`Scaffolded into ./${projectName}`);
|
|
460
517
|
if (!skipGit) {
|
package/messages/en.json
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common": {
|
|
3
|
+
"loading": "Loading...",
|
|
4
|
+
"error": "Something went wrong",
|
|
5
|
+
"tryAgain": "Try Again",
|
|
6
|
+
"continueShopping": "Continue Shopping",
|
|
7
|
+
"viewAll": "View all",
|
|
8
|
+
"shopNow": "Shop Now",
|
|
9
|
+
"free": "Free",
|
|
10
|
+
"yes": "Yes",
|
|
11
|
+
"no": "No",
|
|
12
|
+
"total": "Total",
|
|
13
|
+
"subtotal": "Subtotal",
|
|
14
|
+
"discount": "Discount",
|
|
15
|
+
"shipping": "Shipping",
|
|
16
|
+
"pickup": "Pickup",
|
|
17
|
+
"tax": "Tax",
|
|
18
|
+
"sale": "Sale",
|
|
19
|
+
"remove": "Remove",
|
|
20
|
+
"removing": "Removing...",
|
|
21
|
+
"apply": "Apply",
|
|
22
|
+
"saving": "Saving...",
|
|
23
|
+
"qty": "Qty:",
|
|
24
|
+
"noResults": "No results found",
|
|
25
|
+
"all": "All",
|
|
26
|
+
"sortBy": "Sort by:",
|
|
27
|
+
"product": "product",
|
|
28
|
+
"products": "products",
|
|
29
|
+
"item": "item",
|
|
30
|
+
"items": "items",
|
|
31
|
+
"found": "found",
|
|
32
|
+
"day": "day",
|
|
33
|
+
"days": "days",
|
|
34
|
+
"allRightsReserved": "All rights reserved.",
|
|
35
|
+
"store": "Store"
|
|
36
|
+
},
|
|
37
|
+
"nav": {
|
|
38
|
+
"products": "Products",
|
|
39
|
+
"account": "Account",
|
|
40
|
+
"login": "Login",
|
|
41
|
+
"logout": "Logout",
|
|
42
|
+
"searchPlaceholder": "Search products...",
|
|
43
|
+
"categories": "Categories",
|
|
44
|
+
"search": "Search",
|
|
45
|
+
"menu": "Menu"
|
|
46
|
+
},
|
|
47
|
+
"home": {
|
|
48
|
+
"pageTitle": "Home",
|
|
49
|
+
"welcomeTo": "Welcome to",
|
|
50
|
+
"heroSubtitle": "Discover our curated collection of products crafted with care.",
|
|
51
|
+
"featuredProducts": "Featured Products"
|
|
52
|
+
},
|
|
53
|
+
"products": {
|
|
54
|
+
"pageTitle": "Products",
|
|
55
|
+
"allProducts": "All Products",
|
|
56
|
+
"searchPrefix": "Search:",
|
|
57
|
+
"loadMore": "Load More",
|
|
58
|
+
"noProducts": "No products found.",
|
|
59
|
+
"sortNewest": "Newest",
|
|
60
|
+
"sortNameAZ": "Name A-Z",
|
|
61
|
+
"sortNameZA": "Name Z-A",
|
|
62
|
+
"sortPriceLow": "Price: Low to High",
|
|
63
|
+
"sortPriceHigh": "Price: High to Low"
|
|
64
|
+
},
|
|
65
|
+
"productDetail": {
|
|
66
|
+
"notFound": "Product not found.",
|
|
67
|
+
"backToProducts": "Back to products",
|
|
68
|
+
"description": "Description",
|
|
69
|
+
"specifications": "Specifications",
|
|
70
|
+
"addToCart": "Add to Cart",
|
|
71
|
+
"addingToCart": "Adding...",
|
|
72
|
+
"addedToCart": "Added to Cart!",
|
|
73
|
+
"outOfStock": "Out of Stock",
|
|
74
|
+
"decreaseQuantity": "Decrease quantity",
|
|
75
|
+
"increaseQuantity": "Increase quantity"
|
|
76
|
+
},
|
|
77
|
+
"cart": {
|
|
78
|
+
"pageTitle": "Shopping Cart",
|
|
79
|
+
"title": "Shopping Cart",
|
|
80
|
+
"emptyTitle": "Your cart is empty",
|
|
81
|
+
"emptySubtitle": "Looks like you haven't added anything to your cart yet.",
|
|
82
|
+
"proceedToCheckout": "Proceed to Checkout",
|
|
83
|
+
"orderSummary": "Order Summary",
|
|
84
|
+
"taxAtCheckout": "Calculated at checkout"
|
|
85
|
+
},
|
|
86
|
+
"checkout": {
|
|
87
|
+
"pageTitle": "Checkout",
|
|
88
|
+
"title": "Checkout",
|
|
89
|
+
"emptyCart": "Your cart is empty",
|
|
90
|
+
"emptyCartSubtitle": "Add some items to your cart before checking out.",
|
|
91
|
+
"errorTitle": "Checkout Error",
|
|
92
|
+
"returnToCart": "Return to Cart",
|
|
93
|
+
"paymentCanceledBanner": "Payment was canceled. You can try again or change your payment method.",
|
|
94
|
+
"orderSummary": "Order Summary",
|
|
95
|
+
"stepMethod": "Method",
|
|
96
|
+
"stepAddress": "Address",
|
|
97
|
+
"stepShipping": "Shipping",
|
|
98
|
+
"stepPickup": "Pickup",
|
|
99
|
+
"stepPayment": "Payment",
|
|
100
|
+
"deliveryMethod": "Delivery Method",
|
|
101
|
+
"shipToAddress": "Ship to address",
|
|
102
|
+
"shipToAddressDesc": "Delivered to your shipping address",
|
|
103
|
+
"pickUpInStore": "Pick up in store",
|
|
104
|
+
"pickUpInStoreDesc": "Collect from a pickup location",
|
|
105
|
+
"shippingAddress": "Shipping Address",
|
|
106
|
+
"changeMethod": "Change method",
|
|
107
|
+
"editAddress": "Edit address",
|
|
108
|
+
"shippingMethod": "Shipping Method",
|
|
109
|
+
"noShippingOptions": "No shipping options available for this address.",
|
|
110
|
+
"noShippingOptionsHint": "Please try a different address or contact support.",
|
|
111
|
+
"estimatedDelivery": "Estimated delivery:",
|
|
112
|
+
"pickupLocation": "Pickup Location",
|
|
113
|
+
"selectPickupLocation": "Select pickup location",
|
|
114
|
+
"pickupLocationRequired": "Please select a pickup location",
|
|
115
|
+
"yourDetails": "Your details",
|
|
116
|
+
"continueToPayment": "Continue to Payment",
|
|
117
|
+
"changePickup": "Change pickup",
|
|
118
|
+
"changeShipping": "Change shipping",
|
|
119
|
+
"payment": "Payment",
|
|
120
|
+
"preparingPayment": "Preparing payment...",
|
|
121
|
+
"loadingPaymentOptions": "Loading payment options...",
|
|
122
|
+
"paymentNotConfigured": "Payment Not Configured",
|
|
123
|
+
"paymentNotConfiguredDesc": "Payment has not been set up for this store yet. Please contact the store owner.",
|
|
124
|
+
"paymentError": "Payment Error",
|
|
125
|
+
"redirectingToPayment": "Redirecting to payment provider...",
|
|
126
|
+
"redirectingHint": "If you are not redirected automatically, ",
|
|
127
|
+
"clickHere": "click here",
|
|
128
|
+
"calculatedAtCheckout": "Calculated at checkout",
|
|
129
|
+
"calculatedAfterAddress": "Calculated after address entry",
|
|
130
|
+
"noTax": "No tax",
|
|
131
|
+
"failedToStartCheckout": "Unable to start checkout. Please try again.",
|
|
132
|
+
"cartIsEmpty": "Your cart is empty.",
|
|
133
|
+
"failedToInitCheckout": "Failed to initialize checkout",
|
|
134
|
+
"failedToSaveAddress": "Failed to save address",
|
|
135
|
+
"failedToSelectShipping": "Failed to select shipping",
|
|
136
|
+
"failedToSetDeliveryMethod": "Failed to set delivery method",
|
|
137
|
+
"failedToSelectPickup": "Failed to select pickup location",
|
|
138
|
+
"failedToLoadPaymentSdk": "Failed to load payment SDK"
|
|
139
|
+
},
|
|
140
|
+
"checkoutForm": {
|
|
141
|
+
"email": "Email",
|
|
142
|
+
"firstName": "First Name",
|
|
143
|
+
"lastName": "Last Name",
|
|
144
|
+
"country": "Country",
|
|
145
|
+
"selectCountry": "Select country",
|
|
146
|
+
"stateRegion": "State / Region",
|
|
147
|
+
"selectRegion": "Select region",
|
|
148
|
+
"address": "Address",
|
|
149
|
+
"streetAddress": "Street address",
|
|
150
|
+
"apartmentSuite": "Apartment, suite, etc.",
|
|
151
|
+
"aptPlaceholder": "Apt, suite, unit, etc. (optional)",
|
|
152
|
+
"city": "City",
|
|
153
|
+
"postalCode": "Postal Code",
|
|
154
|
+
"phone": "Phone",
|
|
155
|
+
"phonePlaceholder": "+1234567890 (optional)",
|
|
156
|
+
"continueToShipping": "Continue to Shipping",
|
|
157
|
+
"countryPlaceholder": "e.g. US, IL, GB",
|
|
158
|
+
"emailRequired": "Email is required",
|
|
159
|
+
"emailInvalid": "Please enter a valid email",
|
|
160
|
+
"firstNameRequired": "First name is required",
|
|
161
|
+
"lastNameRequired": "Last name is required",
|
|
162
|
+
"addressRequired": "Address is required",
|
|
163
|
+
"cityRequired": "City is required",
|
|
164
|
+
"postalCodeRequired": "Postal code is required",
|
|
165
|
+
"countryRequired": "Country is required"
|
|
166
|
+
},
|
|
167
|
+
"auth": {
|
|
168
|
+
"loginPageTitle": "Sign In",
|
|
169
|
+
"registerPageTitle": "Create Account",
|
|
170
|
+
"welcomeBack": "Welcome back",
|
|
171
|
+
"signInSubtitle": "Sign in to your account to continue",
|
|
172
|
+
"signIn": "Sign In",
|
|
173
|
+
"signingIn": "Signing in...",
|
|
174
|
+
"noAccount": "Don't have an account?",
|
|
175
|
+
"createOne": "Create one",
|
|
176
|
+
"createAccountTitle": "Create an account",
|
|
177
|
+
"joinSubtitle": "Join us to start shopping",
|
|
178
|
+
"creatingAccount": "Creating account...",
|
|
179
|
+
"createAccount": "Create Account",
|
|
180
|
+
"alreadyHaveAccount": "Already have an account?",
|
|
181
|
+
"email": "Email",
|
|
182
|
+
"emailPlaceholder": "you@example.com",
|
|
183
|
+
"password": "Password",
|
|
184
|
+
"passwordPlaceholder": "Enter your password",
|
|
185
|
+
"firstNamePlaceholder": "Jane",
|
|
186
|
+
"lastNamePlaceholder": "Doe",
|
|
187
|
+
"atLeastChars": "At least 6 characters",
|
|
188
|
+
"orContinueWith": "or continue with",
|
|
189
|
+
"tooShort": "Too short",
|
|
190
|
+
"weak": "Weak",
|
|
191
|
+
"fair": "Fair",
|
|
192
|
+
"good": "Good",
|
|
193
|
+
"strong": "Strong",
|
|
194
|
+
"google": "Google",
|
|
195
|
+
"facebook": "Facebook",
|
|
196
|
+
"github": "GitHub",
|
|
197
|
+
"verifyTitle": "Verify your email",
|
|
198
|
+
"verifySubtitle": "Enter the 6-digit code we sent to your email address.",
|
|
199
|
+
"digitAriaLabel": "Digit",
|
|
200
|
+
"verifying": "Verifying...",
|
|
201
|
+
"verifyButton": "Verify Email",
|
|
202
|
+
"didntReceive": "Didn't receive the code?",
|
|
203
|
+
"sending": "Sending...",
|
|
204
|
+
"resendIn": "Resend in",
|
|
205
|
+
"secondsSuffix": "s",
|
|
206
|
+
"resendCode": "Resend code",
|
|
207
|
+
"verificationInvalid": "Verification link invalid",
|
|
208
|
+
"verificationInvalidDesc": "This verification link is missing required information. Please try registering again.",
|
|
209
|
+
"goToRegister": "Go to Register",
|
|
210
|
+
"authFailed": "Authentication failed",
|
|
211
|
+
"authFailedDesc": "Missing authentication parameters. Please try again.",
|
|
212
|
+
"backToLogin": "Back to Login",
|
|
213
|
+
"completingSignIn": "Completing sign in..."
|
|
214
|
+
},
|
|
215
|
+
"account": {
|
|
216
|
+
"pageTitle": "My Account",
|
|
217
|
+
"myAccount": "My Account",
|
|
218
|
+
"signOut": "Sign out",
|
|
219
|
+
"orderHistory": "Order History",
|
|
220
|
+
"noOrders": "No orders yet",
|
|
221
|
+
"noOrdersDesc": "Your order history will appear here after your first purchase.",
|
|
222
|
+
"verified": "Verified",
|
|
223
|
+
"unverified": "Unverified",
|
|
224
|
+
"memberSince": "Member since",
|
|
225
|
+
"orderPrefix": "Order",
|
|
226
|
+
"productFallback": "Product",
|
|
227
|
+
"statusPending": "Pending",
|
|
228
|
+
"statusProcessing": "Processing",
|
|
229
|
+
"statusShipped": "Shipped",
|
|
230
|
+
"statusDelivered": "Delivered",
|
|
231
|
+
"statusCancelled": "Cancelled",
|
|
232
|
+
"statusRefunded": "Refunded"
|
|
233
|
+
},
|
|
234
|
+
"orderConfirmation": {
|
|
235
|
+
"pageTitle": "Order Confirmation",
|
|
236
|
+
"confirming": "Confirming your order...",
|
|
237
|
+
"confirmingHint": "This may take a few seconds.",
|
|
238
|
+
"errorTitle": "Something went wrong",
|
|
239
|
+
"errorChargedHint": "If you were charged, your order may still be processing. Please check your email for a confirmation.",
|
|
240
|
+
"returnHome": "Return Home",
|
|
241
|
+
"thankYou": "Thank you for your order!",
|
|
242
|
+
"orderNumber": "Order Number:",
|
|
243
|
+
"confirmationEmail": "We've sent a confirmation email with your order details.",
|
|
244
|
+
"viewOrders": "View Orders",
|
|
245
|
+
"paymentReceived": "Payment received!",
|
|
246
|
+
"orderProcessing": "Your order is being processed. You'll receive a confirmation email shortly with your order details.",
|
|
247
|
+
"missingCheckoutInfo": "Missing checkout information."
|
|
248
|
+
},
|
|
249
|
+
"reservation": {
|
|
250
|
+
"expired": "Reservation expired. Items may no longer be available.",
|
|
251
|
+
"hurry": "Hurry!",
|
|
252
|
+
"reservedFor": "Items reserved for"
|
|
253
|
+
},
|
|
254
|
+
"coupon": {
|
|
255
|
+
"placeholder": "Coupon code",
|
|
256
|
+
"invalidCode": "Invalid coupon code"
|
|
257
|
+
}
|
|
258
|
+
}
|
package/messages/he.json
ADDED
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
{
|
|
2
|
+
"common": {
|
|
3
|
+
"loading": "...טוען",
|
|
4
|
+
"error": "משהו השתבש",
|
|
5
|
+
"tryAgain": "נסו שוב",
|
|
6
|
+
"continueShopping": "המשיכו לקנות",
|
|
7
|
+
"viewAll": "הצג הכל",
|
|
8
|
+
"shopNow": "לקנייה",
|
|
9
|
+
"free": "חינם",
|
|
10
|
+
"yes": "כן",
|
|
11
|
+
"no": "לא",
|
|
12
|
+
"total": "סה\"כ",
|
|
13
|
+
"subtotal": "סיכום ביניים",
|
|
14
|
+
"discount": "הנחה",
|
|
15
|
+
"shipping": "משלוח",
|
|
16
|
+
"pickup": "איסוף",
|
|
17
|
+
"tax": "מע\"מ",
|
|
18
|
+
"sale": "מבצע",
|
|
19
|
+
"remove": "הסרה",
|
|
20
|
+
"removing": "...מסיר",
|
|
21
|
+
"apply": "החל",
|
|
22
|
+
"saving": "...שומר",
|
|
23
|
+
"qty": "כמות:",
|
|
24
|
+
"noResults": "לא נמצאו תוצאות",
|
|
25
|
+
"all": "הכל",
|
|
26
|
+
"sortBy": "מיין לפי:",
|
|
27
|
+
"product": "מוצר",
|
|
28
|
+
"products": "מוצרים",
|
|
29
|
+
"item": "פריט",
|
|
30
|
+
"items": "פריטים",
|
|
31
|
+
"found": "נמצאו",
|
|
32
|
+
"day": "יום",
|
|
33
|
+
"days": "ימים",
|
|
34
|
+
"allRightsReserved": "כל הזכויות שמורות.",
|
|
35
|
+
"store": "חנות"
|
|
36
|
+
},
|
|
37
|
+
"nav": {
|
|
38
|
+
"products": "מוצרים",
|
|
39
|
+
"account": "חשבון",
|
|
40
|
+
"login": "התחברות",
|
|
41
|
+
"logout": "התנתקות",
|
|
42
|
+
"searchPlaceholder": "...חיפוש מוצרים",
|
|
43
|
+
"categories": "קטגוריות",
|
|
44
|
+
"search": "חיפוש",
|
|
45
|
+
"menu": "תפריט"
|
|
46
|
+
},
|
|
47
|
+
"home": {
|
|
48
|
+
"pageTitle": "דף הבית",
|
|
49
|
+
"welcomeTo": "ברוכים הבאים ל",
|
|
50
|
+
"heroSubtitle": "גלו את מגוון המוצרים שלנו, שנבחרו בקפידה עבורכם.",
|
|
51
|
+
"featuredProducts": "מוצרים מובילים"
|
|
52
|
+
},
|
|
53
|
+
"products": {
|
|
54
|
+
"pageTitle": "מוצרים",
|
|
55
|
+
"allProducts": "כל המוצרים",
|
|
56
|
+
"searchPrefix": "חיפוש:",
|
|
57
|
+
"loadMore": "הצג עוד",
|
|
58
|
+
"noProducts": "לא נמצאו מוצרים.",
|
|
59
|
+
"sortNewest": "חדש ביותר",
|
|
60
|
+
"sortNameAZ": "שם א-ת",
|
|
61
|
+
"sortNameZA": "שם ת-א",
|
|
62
|
+
"sortPriceLow": "מחיר: מהנמוך לגבוה",
|
|
63
|
+
"sortPriceHigh": "מחיר: מהגבוה לנמוך"
|
|
64
|
+
},
|
|
65
|
+
"productDetail": {
|
|
66
|
+
"notFound": "המוצר לא נמצא.",
|
|
67
|
+
"backToProducts": "חזרה למוצרים",
|
|
68
|
+
"description": "תיאור",
|
|
69
|
+
"specifications": "מפרט",
|
|
70
|
+
"addToCart": "הוסף לעגלה",
|
|
71
|
+
"addingToCart": "...מוסיף",
|
|
72
|
+
"addedToCart": "נוסף לעגלה!",
|
|
73
|
+
"outOfStock": "אזל מהמלאי",
|
|
74
|
+
"decreaseQuantity": "הפחת כמות",
|
|
75
|
+
"increaseQuantity": "הגדל כמות"
|
|
76
|
+
},
|
|
77
|
+
"cart": {
|
|
78
|
+
"pageTitle": "עגלת קניות",
|
|
79
|
+
"title": "עגלת קניות",
|
|
80
|
+
"emptyTitle": "העגלה שלך ריקה",
|
|
81
|
+
"emptySubtitle": "נראה שעדיין לא הוספת מוצרים לעגלה.",
|
|
82
|
+
"proceedToCheckout": "המשך לתשלום",
|
|
83
|
+
"orderSummary": "סיכום הזמנה",
|
|
84
|
+
"taxAtCheckout": "יחושב בקופה"
|
|
85
|
+
},
|
|
86
|
+
"checkout": {
|
|
87
|
+
"pageTitle": "תשלום",
|
|
88
|
+
"title": "תשלום",
|
|
89
|
+
"emptyCart": "העגלה שלך ריקה",
|
|
90
|
+
"emptyCartSubtitle": "הוסיפו מוצרים לעגלה לפני המשך לתשלום.",
|
|
91
|
+
"errorTitle": "שגיאה בתשלום",
|
|
92
|
+
"returnToCart": "חזרה לעגלה",
|
|
93
|
+
"paymentCanceledBanner": "התשלום בוטל. ניתן לנסות שוב או לשנות אמצעי תשלום.",
|
|
94
|
+
"orderSummary": "סיכום הזמנה",
|
|
95
|
+
"stepMethod": "שיטה",
|
|
96
|
+
"stepAddress": "כתובת",
|
|
97
|
+
"stepShipping": "משלוח",
|
|
98
|
+
"stepPickup": "איסוף",
|
|
99
|
+
"stepPayment": "תשלום",
|
|
100
|
+
"deliveryMethod": "שיטת משלוח",
|
|
101
|
+
"shipToAddress": "משלוח לכתובת",
|
|
102
|
+
"shipToAddressDesc": "יישלח לכתובת המשלוח שלך",
|
|
103
|
+
"pickUpInStore": "איסוף מהחנות",
|
|
104
|
+
"pickUpInStoreDesc": "איסוף מנקודת איסוף",
|
|
105
|
+
"shippingAddress": "כתובת למשלוח",
|
|
106
|
+
"changeMethod": "שנה שיטה",
|
|
107
|
+
"editAddress": "ערוך כתובת",
|
|
108
|
+
"shippingMethod": "שיטת משלוח",
|
|
109
|
+
"noShippingOptions": "אין אפשרויות משלוח זמינות לכתובת זו.",
|
|
110
|
+
"noShippingOptionsHint": "נסו כתובת אחרת או פנו לתמיכה.",
|
|
111
|
+
"estimatedDelivery": "זמן משלוח משוער:",
|
|
112
|
+
"pickupLocation": "נקודת איסוף",
|
|
113
|
+
"selectPickupLocation": "בחרו נקודת איסוף",
|
|
114
|
+
"pickupLocationRequired": "יש לבחור נקודת איסוף",
|
|
115
|
+
"yourDetails": "הפרטים שלך",
|
|
116
|
+
"continueToPayment": "המשך לתשלום",
|
|
117
|
+
"changePickup": "שנה איסוף",
|
|
118
|
+
"changeShipping": "שנה משלוח",
|
|
119
|
+
"payment": "תשלום",
|
|
120
|
+
"preparingPayment": "...מכין תשלום",
|
|
121
|
+
"loadingPaymentOptions": "...טוען אפשרויות תשלום",
|
|
122
|
+
"paymentNotConfigured": "תשלום לא מוגדר",
|
|
123
|
+
"paymentNotConfiguredDesc": "התשלום עדיין לא הוגדר לחנות זו. אנא פנו לבעל החנות.",
|
|
124
|
+
"paymentError": "שגיאת תשלום",
|
|
125
|
+
"redirectingToPayment": "...מפנה לספק התשלום",
|
|
126
|
+
"redirectingHint": "אם אינכם מופנים אוטומטית, ",
|
|
127
|
+
"clickHere": "לחצו כאן",
|
|
128
|
+
"calculatedAtCheckout": "יחושב בקופה",
|
|
129
|
+
"calculatedAfterAddress": "יחושב לאחר הזנת כתובת",
|
|
130
|
+
"noTax": "ללא מע\"מ",
|
|
131
|
+
"failedToStartCheckout": "לא ניתן להתחיל תשלום. נסו שוב.",
|
|
132
|
+
"cartIsEmpty": "העגלה שלך ריקה.",
|
|
133
|
+
"failedToInitCheckout": "שגיאה באתחול התשלום",
|
|
134
|
+
"failedToSaveAddress": "שגיאה בשמירת הכתובת",
|
|
135
|
+
"failedToSelectShipping": "שגיאה בבחירת המשלוח",
|
|
136
|
+
"failedToSetDeliveryMethod": "שגיאה בהגדרת שיטת המשלוח",
|
|
137
|
+
"failedToSelectPickup": "שגיאה בבחירת נקודת האיסוף",
|
|
138
|
+
"failedToLoadPaymentSdk": "שגיאה בטעינת מערכת התשלום"
|
|
139
|
+
},
|
|
140
|
+
"checkoutForm": {
|
|
141
|
+
"email": "אימייל",
|
|
142
|
+
"firstName": "שם פרטי",
|
|
143
|
+
"lastName": "שם משפחה",
|
|
144
|
+
"country": "מדינה",
|
|
145
|
+
"selectCountry": "בחרו מדינה",
|
|
146
|
+
"stateRegion": "מחוז / אזור",
|
|
147
|
+
"selectRegion": "בחרו מחוז",
|
|
148
|
+
"address": "כתובת",
|
|
149
|
+
"streetAddress": "רחוב ומספר",
|
|
150
|
+
"apartmentSuite": "דירה, קומה וכו׳",
|
|
151
|
+
"aptPlaceholder": "דירה, קומה, כניסה (אופציונלי)",
|
|
152
|
+
"city": "עיר",
|
|
153
|
+
"postalCode": "מיקוד",
|
|
154
|
+
"phone": "טלפון",
|
|
155
|
+
"phonePlaceholder": "+972501234567 (אופציונלי)",
|
|
156
|
+
"continueToShipping": "המשך למשלוח",
|
|
157
|
+
"countryPlaceholder": "לדוגמה: IL, US, GB",
|
|
158
|
+
"emailRequired": "אימייל הוא שדה חובה",
|
|
159
|
+
"emailInvalid": "כתובת אימייל לא תקינה",
|
|
160
|
+
"firstNameRequired": "שם פרטי הוא שדה חובה",
|
|
161
|
+
"lastNameRequired": "שם משפחה הוא שדה חובה",
|
|
162
|
+
"addressRequired": "כתובת היא שדה חובה",
|
|
163
|
+
"cityRequired": "עיר היא שדה חובה",
|
|
164
|
+
"postalCodeRequired": "מיקוד הוא שדה חובה",
|
|
165
|
+
"countryRequired": "מדינה היא שדה חובה"
|
|
166
|
+
},
|
|
167
|
+
"auth": {
|
|
168
|
+
"loginPageTitle": "התחברות",
|
|
169
|
+
"registerPageTitle": "יצירת חשבון",
|
|
170
|
+
"welcomeBack": "ברוכים השבים",
|
|
171
|
+
"signInSubtitle": "התחברו לחשבון שלכם כדי להמשיך",
|
|
172
|
+
"signIn": "התחברות",
|
|
173
|
+
"signingIn": "...מתחבר",
|
|
174
|
+
"noAccount": "אין לכם חשבון?",
|
|
175
|
+
"createOne": "צרו חשבון",
|
|
176
|
+
"createAccountTitle": "יצירת חשבון",
|
|
177
|
+
"joinSubtitle": "הצטרפו אלינו והתחילו לקנות",
|
|
178
|
+
"creatingAccount": "...יוצר חשבון",
|
|
179
|
+
"createAccount": "צור חשבון",
|
|
180
|
+
"alreadyHaveAccount": "כבר יש לכם חשבון?",
|
|
181
|
+
"email": "אימייל",
|
|
182
|
+
"emailPlaceholder": "you@example.com",
|
|
183
|
+
"password": "סיסמה",
|
|
184
|
+
"passwordPlaceholder": "הזינו סיסמה",
|
|
185
|
+
"firstNamePlaceholder": "ישראל",
|
|
186
|
+
"lastNamePlaceholder": "ישראלי",
|
|
187
|
+
"atLeastChars": "לפחות 6 תווים",
|
|
188
|
+
"orContinueWith": "או המשיכו עם",
|
|
189
|
+
"tooShort": "קצרה מדי",
|
|
190
|
+
"weak": "חלשה",
|
|
191
|
+
"fair": "סבירה",
|
|
192
|
+
"good": "טובה",
|
|
193
|
+
"strong": "חזקה",
|
|
194
|
+
"google": "Google",
|
|
195
|
+
"facebook": "Facebook",
|
|
196
|
+
"github": "GitHub",
|
|
197
|
+
"verifyTitle": "אימות כתובת אימייל",
|
|
198
|
+
"verifySubtitle": "הזינו את הקוד בן 6 הספרות שנשלח לכתובת האימייל שלכם.",
|
|
199
|
+
"digitAriaLabel": "ספרה",
|
|
200
|
+
"verifying": "...מאמת",
|
|
201
|
+
"verifyButton": "אימות אימייל",
|
|
202
|
+
"didntReceive": "לא קיבלתם את הקוד?",
|
|
203
|
+
"sending": "...שולח",
|
|
204
|
+
"resendIn": "שליחה חוזרת בעוד",
|
|
205
|
+
"secondsSuffix": "שנ׳",
|
|
206
|
+
"resendCode": "שלחו שוב",
|
|
207
|
+
"verificationInvalid": "קישור אימות לא תקין",
|
|
208
|
+
"verificationInvalidDesc": "קישור האימות חסר מידע נדרש. אנא נסו להירשם מחדש.",
|
|
209
|
+
"goToRegister": "מעבר להרשמה",
|
|
210
|
+
"authFailed": "ההתחברות נכשלה",
|
|
211
|
+
"authFailedDesc": "חסרים פרמטרי התחברות. אנא נסו שוב.",
|
|
212
|
+
"backToLogin": "חזרה להתחברות",
|
|
213
|
+
"completingSignIn": "...משלים התחברות"
|
|
214
|
+
},
|
|
215
|
+
"account": {
|
|
216
|
+
"pageTitle": "החשבון שלי",
|
|
217
|
+
"myAccount": "החשבון שלי",
|
|
218
|
+
"signOut": "התנתקות",
|
|
219
|
+
"orderHistory": "היסטוריית הזמנות",
|
|
220
|
+
"noOrders": "אין הזמנות עדיין",
|
|
221
|
+
"noOrdersDesc": "היסטוריית ההזמנות שלך תופיע כאן לאחר הרכישה הראשונה.",
|
|
222
|
+
"verified": "מאומת",
|
|
223
|
+
"unverified": "לא מאומת",
|
|
224
|
+
"memberSince": "חבר מאז",
|
|
225
|
+
"orderPrefix": "הזמנה",
|
|
226
|
+
"productFallback": "מוצר",
|
|
227
|
+
"statusPending": "ממתין",
|
|
228
|
+
"statusProcessing": "בטיפול",
|
|
229
|
+
"statusShipped": "נשלח",
|
|
230
|
+
"statusDelivered": "נמסר",
|
|
231
|
+
"statusCancelled": "בוטל",
|
|
232
|
+
"statusRefunded": "הוחזר"
|
|
233
|
+
},
|
|
234
|
+
"orderConfirmation": {
|
|
235
|
+
"pageTitle": "אישור הזמנה",
|
|
236
|
+
"confirming": "...מאשר את ההזמנה",
|
|
237
|
+
"confirmingHint": "זה עשוי לקחת מספר שניות.",
|
|
238
|
+
"errorTitle": "משהו השתבש",
|
|
239
|
+
"errorChargedHint": "אם חויבתם, ייתכן שההזמנה עדיין מעובדת. בדקו את האימייל שלכם לקבלת אישור.",
|
|
240
|
+
"returnHome": "חזרה לדף הבית",
|
|
241
|
+
"thankYou": "תודה על ההזמנה!",
|
|
242
|
+
"orderNumber": "מספר הזמנה:",
|
|
243
|
+
"confirmationEmail": "שלחנו אימייל אישור עם פרטי ההזמנה.",
|
|
244
|
+
"viewOrders": "צפייה בהזמנות",
|
|
245
|
+
"paymentReceived": "התשלום התקבל!",
|
|
246
|
+
"orderProcessing": "ההזמנה שלך בעיבוד. תקבלו בקרוב אימייל אישור עם פרטי ההזמנה.",
|
|
247
|
+
"missingCheckoutInfo": "חסר מידע תשלום."
|
|
248
|
+
},
|
|
249
|
+
"reservation": {
|
|
250
|
+
"expired": "השריון פג. ייתכן שהמוצרים כבר לא זמינים.",
|
|
251
|
+
"hurry": "מהרו!",
|
|
252
|
+
"reservedFor": "המוצרים שמורים למשך"
|
|
253
|
+
},
|
|
254
|
+
"coupon": {
|
|
255
|
+
"placeholder": "קוד קופון",
|
|
256
|
+
"invalidCode": "קוד קופון לא תקין"
|
|
257
|
+
}
|
|
258
|
+
}
|