@primestyleai/tryon 5.10.126 → 5.10.128

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.
@@ -0,0 +1,2700 @@
1
+ "use client";
2
+ const f = "ps_session";
3
+ const E = "ps_mem_";
4
+ let y = null;
5
+ function S() {
6
+ try {
7
+ return typeof window < "u" && typeof window.localStorage < "u";
8
+ } catch {
9
+ return !1;
10
+ }
11
+ }
12
+ function b() {
13
+ if (typeof crypto < "u" && typeof crypto.randomUUID == "function")
14
+ return crypto.randomUUID();
15
+ const t = "0123456789abcdef";
16
+ let e = E;
17
+ for (let o = 0; o < 32; o++) e += t[Math.floor(Math.random() * 16)];
18
+ return e;
19
+ }
20
+ function P() {
21
+ if (!S()) return y;
22
+ try {
23
+ const t = window.localStorage.getItem(f);
24
+ if (!t) return null;
25
+ const e = JSON.parse(t);
26
+ return typeof e.id != "string" || typeof e.issuedAt != "number" ? null : {
27
+ id: e.id,
28
+ issuedAt: e.issuedAt,
29
+ lastSeenAt: typeof e.lastSeenAt == "number" ? e.lastSeenAt : e.issuedAt
30
+ };
31
+ } catch {
32
+ return null;
33
+ }
34
+ }
35
+ function p(t) {
36
+ if (y = t, !!S())
37
+ try {
38
+ window.localStorage.setItem(f, JSON.stringify(t));
39
+ } catch {
40
+ }
41
+ }
42
+ function A() {
43
+ const t = Date.now(), e = P();
44
+ if (e && t - e.lastSeenAt < 2592e6)
45
+ return t - e.lastSeenAt > 5 * 60 * 1e3 && p({ ...e, lastSeenAt: t }), e.id;
46
+ const o = { id: b(), issuedAt: t, lastSeenAt: t };
47
+ return p(o), o.id;
48
+ }
49
+ function I() {
50
+ if (typeof navigator > "u") return null;
51
+ const t = (navigator.userAgent || "").toLowerCase();
52
+ return /ipad|tablet|(android(?!.*mobile))/.test(t) ? "tablet" : /mobile|android|iphone|ipod|blackberry|iemobile|opera mini/.test(t) ? "mobile" : "desktop";
53
+ }
54
+ const T = "http://localhost:4000";
55
+ class O {
56
+ constructor(e, o) {
57
+ this.apiKey = e, this.baseUrl = (o || T).replace(/\/+$/, "");
58
+ }
59
+ get headers() {
60
+ return {
61
+ "Content-Type": "application/json",
62
+ Authorization: `Bearer ${this.apiKey}`
63
+ };
64
+ }
65
+ async submitTryOn(e, o, a, n, r) {
66
+ const s = {
67
+ garmentImage: o,
68
+ // Attribution fields — backend logs these into the TryOnEvent collection
69
+ // so non-technical operators can answer "which products are being tried on
70
+ // and by how many customers". Safe fallbacks when absent.
71
+ sessionId: A(),
72
+ deviceHint: I()
73
+ };
74
+ if (r?.modelImageId && (s.modelImageId = r.modelImageId), e && (s.modelImage = e), a && a.length > 0 && (s.fitInfo = a), n && n !== "apparel" && (s.category = n), r?.productId && (s.productId = r.productId), r?.productTitle && (s.productTitle = r.productTitle), r?.productDescription && (s.productDescription = r.productDescription), r?.productMaterial && (s.productMaterial = r.productMaterial), r?.silhouetteContext && (s.silhouetteContext = r.silhouetteContext), r?.editFromPrevious && (s.editFromPrevious = !0), console.log("[ps-sdk:api] POST /api/v1/tryon payload", {
75
+ modelImageBytes: e.length,
76
+ garmentImageBytes: o.length,
77
+ category: n || "apparel",
78
+ fitInfo: a?.map((i) => ({
79
+ area: i.area,
80
+ fit: i.fit,
81
+ userValue: i.userValue,
82
+ garmentRange: i.garmentRange
83
+ })) || null,
84
+ silhouetteContext: r?.silhouetteContext || null
85
+ }), a && a.length > 0) {
86
+ console.log("[ps-sdk:api] Body vs Garment (what Gemini will see):");
87
+ for (const i of a) {
88
+ const l = (i.garmentRange || "").replace(/[^\d.\-–]/g, " ").trim().split(/[\s\-–]+/).filter(Boolean).map(Number).filter((h) => !isNaN(h));
89
+ let u = "";
90
+ if (l.length && i.userValue != null) {
91
+ const h = (Math.min(...l) + Math.max(...l)) / 2, c = Math.round((i.userValue - h) * 10) / 10;
92
+ u = c > 0 ? `garment ${c} smaller` : c < 0 ? `garment ${Math.abs(c)} larger` : "matched";
93
+ }
94
+ console.log(`[ps-sdk:api] ${i.area.padEnd(10)} body=${i.userValue ?? "?"} garment=${i.garmentRange ?? "?"} → ${u}`);
95
+ }
96
+ }
97
+ const d = await fetch(`${this.baseUrl}/api/v1/tryon`, {
98
+ method: "POST",
99
+ headers: this.headers,
100
+ body: JSON.stringify(s)
101
+ });
102
+ if (!d.ok) {
103
+ const i = await d.json().catch(() => ({}));
104
+ throw d.status === 402 ? new g(
105
+ i.message || "Insufficient try-ons",
106
+ "INSUFFICIENT_BALANCE"
107
+ ) : new g(
108
+ i.message || "Failed to submit try-on",
109
+ "API_ERROR"
110
+ );
111
+ }
112
+ return d.json();
113
+ }
114
+ async getStatus(e) {
115
+ const o = await fetch(`${this.baseUrl}/api/v1/tryon/status/${e}`, {
116
+ headers: this.headers
117
+ });
118
+ if (!o.ok) {
119
+ const a = await o.json().catch(() => ({}));
120
+ throw new g(
121
+ a.message || "Failed to get status",
122
+ "API_ERROR"
123
+ );
124
+ }
125
+ return o.json();
126
+ }
127
+ getStreamUrl() {
128
+ return `${this.baseUrl}/api/v1/tryon/stream?key=${encodeURIComponent(this.apiKey)}`;
129
+ }
130
+ }
131
+ class g extends Error {
132
+ constructor(e, o) {
133
+ super(e), this.name = "PrimeStyleError", this.code = o;
134
+ }
135
+ }
136
+ class W {
137
+ constructor(e) {
138
+ this.eventSource = null, this.listeners = /* @__PURE__ */ new Map(), this.reconnectTimer = null, this.reconnectAttempts = 0, this.maxReconnectAttempts = 5, this.streamUrl = e;
139
+ }
140
+ connect() {
141
+ this.eventSource || (this.eventSource = new EventSource(this.streamUrl), this.eventSource.addEventListener("vto-update", (e) => {
142
+ try {
143
+ const o = JSON.parse(e.data);
144
+ this.emit(o.galleryId, o);
145
+ } catch {
146
+ }
147
+ }), this.eventSource.onopen = () => {
148
+ this.reconnectAttempts = 0;
149
+ }, this.eventSource.onerror = () => {
150
+ this.eventSource?.close(), this.eventSource = null, this.scheduleReconnect();
151
+ });
152
+ }
153
+ scheduleReconnect() {
154
+ if (this.reconnectAttempts >= this.maxReconnectAttempts || this.listeners.size === 0) return;
155
+ const e = Math.min(1e3 * 2 ** this.reconnectAttempts, 3e4);
156
+ this.reconnectAttempts++, this.reconnectTimer = setTimeout(() => {
157
+ this.connect();
158
+ }, e);
159
+ }
160
+ onJob(e, o) {
161
+ return this.listeners.has(e) || this.listeners.set(e, /* @__PURE__ */ new Set()), this.listeners.get(e).add(o), this.eventSource || this.connect(), () => {
162
+ const a = this.listeners.get(e);
163
+ a && (a.delete(o), a.size === 0 && this.listeners.delete(e)), this.listeners.size === 0 && this.disconnect();
164
+ };
165
+ }
166
+ emit(e, o) {
167
+ const a = this.listeners.get(e);
168
+ a && a.forEach((n) => n(o));
169
+ }
170
+ disconnect() {
171
+ this.reconnectTimer && (clearTimeout(this.reconnectTimer), this.reconnectTimer = null), this.eventSource && (this.eventSource.close(), this.eventSource = null), this.listeners.clear(), this.reconnectAttempts = 0;
172
+ }
173
+ }
174
+ const v = 512, w = 0.65;
175
+ function C(t, e = {}) {
176
+ const o = e.maxDimension ?? v, a = e.quality ?? w;
177
+ return new Promise((n, r) => {
178
+ const s = new FileReader();
179
+ s.onload = () => {
180
+ const d = new Image();
181
+ d.onload = () => {
182
+ try {
183
+ const i = document.createElement("canvas");
184
+ let { width: l, height: u } = d;
185
+ (l > o || u > o) && (l > u ? (u = Math.round(u * o / l), l = o) : (l = Math.round(l * o / u), u = o)), i.width = l, i.height = u;
186
+ const h = i.getContext("2d");
187
+ if (!h) {
188
+ r(new Error("Canvas context not available"));
189
+ return;
190
+ }
191
+ h.drawImage(d, 0, 0, l, u);
192
+ const c = i.toDataURL("image/jpeg", a);
193
+ n(c);
194
+ } catch (i) {
195
+ r(i);
196
+ }
197
+ }, d.onerror = () => r(new Error("Failed to load image")), d.src = s.result;
198
+ }, s.onerror = () => r(new Error("Failed to read file")), s.readAsDataURL(t);
199
+ });
200
+ }
201
+ function Y(t) {
202
+ return ["image/jpeg", "image/png", "image/webp", "image/avif"].includes(t.type);
203
+ }
204
+ async function F(t, e, o) {
205
+ try {
206
+ const a = typeof t == "string" ? t : await C(t, { maxDimension: 384, quality: 0.6 }), n = await fetch(`${e}/api/v1/sizing/age-check`, {
207
+ method: "POST",
208
+ headers: {
209
+ "Content-Type": "application/json",
210
+ Authorization: `Bearer ${o}`
211
+ },
212
+ body: JSON.stringify({ bodyImage: a })
213
+ });
214
+ if (!n.ok)
215
+ return console.warn(`[PS-SDK:AgeCheck] HTTP ${n.status} — failing open`), { isAdult: !0, confidence: "low" };
216
+ const r = await n.json();
217
+ return {
218
+ isAdult: r?.isAdult !== !1,
219
+ // anything other than explicit false → allow
220
+ confidence: r?.confidence === "high" ? "high" : "low",
221
+ reasoning: typeof r?.reasoning == "string" ? r.reasoning : void 0
222
+ };
223
+ } catch (a) {
224
+ return console.warn("[PS-SDK:AgeCheck] error — failing open:", a), { isAdult: !0, confidence: "low" };
225
+ }
226
+ }
227
+ const m = {};
228
+ function U(t, e) {
229
+ m[t] = { ...m[t] || {}, ...e };
230
+ }
231
+ function K(t) {
232
+ const e = t?.toLowerCase().split("-")[0] || "en";
233
+ return (o) => e === "en" || !m[e] ? o : m[e][o] ?? o;
234
+ }
235
+ function V() {
236
+ return typeof navigator > "u" ? "en" : (navigator.language || navigator.userLanguage || "en").split("-")[0].toLowerCase();
237
+ }
238
+ const j = [
239
+ "en",
240
+ "es",
241
+ "fr",
242
+ "de",
243
+ "it",
244
+ "pt",
245
+ "ja",
246
+ "zh",
247
+ "ko",
248
+ "ar"
249
+ ], x = {
250
+ en: "English",
251
+ es: "Español",
252
+ fr: "Français",
253
+ de: "Deutsch",
254
+ it: "Italiano",
255
+ pt: "Português",
256
+ ja: "日本語",
257
+ zh: "中文",
258
+ ko: "한국어",
259
+ ar: "العربية"
260
+ }, J = [
261
+ "Virtual Try-On",
262
+ "Find Your Size & See It On You",
263
+ "Get the perfect fit, then try it on virtually",
264
+ "Get Your Size",
265
+ "Instant fit recommendation",
266
+ "Try It On",
267
+ "See how it looks on you",
268
+ "Find My Size",
269
+ "Takes less than a minute",
270
+ "Upload a full body photo",
271
+ "JPEG, PNG or WebP (max 10MB)",
272
+ "Your photo",
273
+ "Let's find your best fit",
274
+ "Centimeters",
275
+ "Inches",
276
+ "Load saved profile...",
277
+ "HEIGHT",
278
+ "WEIGHT",
279
+ "feet",
280
+ "inches",
281
+ "cm",
282
+ "kg",
283
+ "How to measure",
284
+ "Hide guide",
285
+ "I know my measurements",
286
+ "Not sure? Use height & weight instead",
287
+ "Please fill in height and weight",
288
+ "Please fill in all required fields",
289
+ "Next",
290
+ "Analyzing your size...",
291
+ "RECOMMENDED SIZE",
292
+ "NOT RECOMMENDED",
293
+ "Edit measurements",
294
+ "Size guide",
295
+ "Your fit",
296
+ "Your measure",
297
+ "perfect fit",
298
+ "too tight",
299
+ "tight",
300
+ "a bit tight",
301
+ "too loose",
302
+ "loose",
303
+ "a bit loose",
304
+ "See fit on your photo",
305
+ "Hide visual fit",
306
+ "Analyzing...",
307
+ "Try it on",
308
+ "SIZE CHART",
309
+ "YOUR ESTIMATED MEASUREMENTS",
310
+ "Edit",
311
+ "Download",
312
+ "Size chart",
313
+ "Preparing your image...",
314
+ "Analyzing body proportions...",
315
+ "Matching garment to your photo...",
316
+ "Generating virtual try-on...",
317
+ "Refining details...",
318
+ "Almost there...",
319
+ "Complete!",
320
+ "This usually takes 15-25 seconds",
321
+ "Something went wrong",
322
+ "Try Again",
323
+ "SDK not configured. Please provide an API key.",
324
+ "Please upload a JPEG, PNG, or WebP image.",
325
+ "Image must be under 10MB.",
326
+ "Try-on generation failed",
327
+ "Failed to start try-on",
328
+ "No product image found. Please set the product-image attribute.",
329
+ "Powered by",
330
+ "My Profiles",
331
+ "History",
332
+ "No saved profiles yet.",
333
+ "No history yet.",
334
+ "Product",
335
+ "Women's",
336
+ "Men's",
337
+ "Profiles",
338
+ "Women's Profile",
339
+ "Men's Profile",
340
+ "Height",
341
+ "Weight",
342
+ "Chest",
343
+ "Bust",
344
+ "Waist",
345
+ "Hips",
346
+ "Shoulders",
347
+ "Sleeve",
348
+ "Inseam",
349
+ "Neck",
350
+ "Foot",
351
+ "Shoe EU",
352
+ "Shoe US",
353
+ "Shoe UK",
354
+ "Saved",
355
+ "Delete Profile",
356
+ "Shoe size (US)",
357
+ "Shoe size (UK)",
358
+ "Shoe size (EU)",
359
+ "Generating...",
360
+ "Foot length",
361
+ "Size",
362
+ "Try on size",
363
+ "lbs",
364
+ "in",
365
+ "e.g.",
366
+ "Drop your photo here or click to upload",
367
+ "This usually takes 15-20 seconds",
368
+ "Try-on result",
369
+ "Try Another",
370
+ "Back",
371
+ "You",
372
+ "Garment",
373
+ "Your Height",
374
+ "Your Weight",
375
+ "Drag or scroll to set your height",
376
+ "Drag or scroll to set your weight",
377
+ "Enter height and weight first",
378
+ // ── Field labels (FaceSizeView, HeadSizeView, FootSizeView, accessory) ──
379
+ "Lens Width",
380
+ "Bridge",
381
+ "Arm Length",
382
+ "Head Circumference",
383
+ "Face Width",
384
+ "Temple",
385
+ "Around widest point",
386
+ "Foot Length",
387
+ "Chest",
388
+ "Waist",
389
+ "Hips",
390
+ "Shoulder",
391
+ "Sleeve",
392
+ "Neck",
393
+ "Inseam",
394
+ "Thigh",
395
+ "Hip",
396
+ // ── Units ──
397
+ "Centimeters",
398
+ "Inches",
399
+ "Millimetre",
400
+ "Centimetre",
401
+ "Millimeters",
402
+ // ── Fit descriptors ──
403
+ "Tight",
404
+ "Loose",
405
+ "Short",
406
+ "Long",
407
+ "Perfect",
408
+ "Perfect fit",
409
+ "✓ Fit",
410
+ // Lowercase variants used inline by fitLabelFn / lengthFitLabelFn
411
+ "tight",
412
+ "loose",
413
+ "short",
414
+ "long",
415
+ "perfect fit",
416
+ "too tight",
417
+ "a bit tight",
418
+ "too loose",
419
+ "a bit loose",
420
+ "too short",
421
+ "a bit short",
422
+ "too long",
423
+ "a bit long",
424
+ // ── Misc ──
425
+ "Product",
426
+ "preview",
427
+ "Length",
428
+ "Length Adjustment",
429
+ "Regular",
430
+ "Big",
431
+ "Big & Tall"
432
+ ], D = {
433
+ "Virtual Try-On": "Probador Virtual",
434
+ "Find Your Size & See It On You": "Encuentra tu talla y pruébatelo",
435
+ "Get the perfect fit, then try it on virtually": "Encuentra el ajuste perfecto y pruébatelo virtualmente",
436
+ "Get Your Size": "Tu talla",
437
+ "Instant fit recommendation": "Recomendación de ajuste instantánea",
438
+ "Try It On": "Pruébatelo",
439
+ "See how it looks on you": "Mira cómo te queda",
440
+ "Find My Size": "Encontrar mi talla",
441
+ "Takes less than a minute": "Tarda menos de un minuto",
442
+ "Upload a full body photo": "Sube una foto de cuerpo entero",
443
+ "JPEG, PNG or WebP (max 10MB)": "JPEG, PNG o WebP (máx. 10MB)",
444
+ "Your photo": "Tu foto",
445
+ "Let's find your best fit": "Encontremos tu mejor ajuste",
446
+ Centimeters: "Centímetros",
447
+ Inches: "Pulgadas",
448
+ "Load saved profile...": "Cargar perfil guardado...",
449
+ HEIGHT: "ALTURA",
450
+ WEIGHT: "PESO",
451
+ feet: "pies",
452
+ inches: "pulgadas",
453
+ cm: "cm",
454
+ kg: "kg",
455
+ lbs: "libras",
456
+ in: "pulg",
457
+ "How to measure": "Cómo medir",
458
+ "Hide guide": "Ocultar guía",
459
+ "I know my measurements": "Conozco mis medidas",
460
+ "Not sure? Use height & weight instead": "¿No estás seguro? Usa altura y peso",
461
+ "Please fill in height and weight": "Por favor, introduce altura y peso",
462
+ "Please fill in all required fields": "Por favor, completa todos los campos obligatorios",
463
+ Next: "Siguiente",
464
+ "Analyzing your size...": "Analizando tu talla...",
465
+ "RECOMMENDED SIZE": "TALLA RECOMENDADA",
466
+ "NOT RECOMMENDED": "NO RECOMENDADA",
467
+ "Edit measurements": "Editar medidas",
468
+ "Size guide": "Guía de tallas",
469
+ "Your fit": "Tu ajuste",
470
+ "Your measure": "Tu medida",
471
+ "perfect fit": "ajuste perfecto",
472
+ "too tight": "demasiado ajustado",
473
+ tight: "ajustado",
474
+ "a bit tight": "un poco ajustado",
475
+ "too loose": "demasiado holgado",
476
+ loose: "holgado",
477
+ "a bit loose": "un poco holgado",
478
+ "See fit on your photo": "Ver ajuste en tu foto",
479
+ "Hide visual fit": "Ocultar ajuste visual",
480
+ "Analyzing...": "Analizando...",
481
+ "Try it on": "Pruébatelo",
482
+ "SIZE CHART": "TABLA DE TALLAS",
483
+ "YOUR ESTIMATED MEASUREMENTS": "TUS MEDIDAS ESTIMADAS",
484
+ Edit: "Editar",
485
+ Download: "Descargar",
486
+ "Size chart": "Tabla de tallas",
487
+ "Preparing your image...": "Preparando tu imagen...",
488
+ "Analyzing body proportions...": "Analizando proporciones corporales...",
489
+ "Matching garment to your photo...": "Ajustando la prenda a tu foto...",
490
+ "Generating virtual try-on...": "Generando probador virtual...",
491
+ "Refining details...": "Refinando detalles...",
492
+ "Almost there...": "Casi listo...",
493
+ "Complete!": "¡Completado!",
494
+ "This usually takes 15-25 seconds": "Normalmente tarda 15-25 segundos",
495
+ "Something went wrong": "Algo salió mal",
496
+ "Try Again": "Intentar de nuevo",
497
+ "SDK not configured. Please provide an API key.": "SDK no configurado. Por favor, proporciona una clave API.",
498
+ "Please upload a JPEG, PNG, or WebP image.": "Por favor, sube una imagen JPEG, PNG o WebP.",
499
+ "Image must be under 10MB.": "La imagen debe ser menor de 10MB.",
500
+ "Try-on generation failed": "Error al generar la prueba",
501
+ "Failed to start try-on": "Error al iniciar la prueba",
502
+ "No product image found. Please set the product-image attribute.": "No se encontró imagen del producto. Configura el atributo product-image.",
503
+ "Powered by": "Desarrollado por",
504
+ "My Profiles": "Mis Perfiles",
505
+ History: "Historial",
506
+ "No saved profiles yet.": "No hay perfiles guardados.",
507
+ "No history yet.": "No hay historial aún.",
508
+ Product: "Producto",
509
+ "Women's": "Mujer",
510
+ "Men's": "Hombre",
511
+ Profiles: "Perfiles",
512
+ "Women's Profile": "Perfil de Mujer",
513
+ "Men's Profile": "Perfil de Hombre",
514
+ Height: "Altura",
515
+ Weight: "Peso",
516
+ Chest: "Pecho",
517
+ Bust: "Busto",
518
+ Waist: "Cintura",
519
+ Hips: "Caderas",
520
+ Shoulders: "Hombros",
521
+ Sleeve: "Manga",
522
+ Inseam: "Entrepierna",
523
+ Neck: "Cuello",
524
+ Foot: "Pie",
525
+ "Shoe EU": "Zapato EU",
526
+ "Shoe US": "Zapato US",
527
+ "Shoe UK": "Zapato UK",
528
+ Saved: "Guardado",
529
+ "Delete Profile": "Eliminar Perfil",
530
+ "Shoe size (US)": "Talla de zapato (US)",
531
+ "Shoe size (UK)": "Talla de zapato (UK)",
532
+ "Shoe size (EU)": "Talla de zapato (EU)",
533
+ "Generating...": "Generando...",
534
+ "Foot length": "Longitud del pie",
535
+ Size: "Talla",
536
+ "Try on size": "Probar talla",
537
+ "e.g.": "ej.",
538
+ "Drop your photo here or click to upload": "Arrastra tu foto aquí o haz clic para subir",
539
+ "This usually takes 15-20 seconds": "Normalmente tarda 15-20 segundos",
540
+ "Try-on result": "Resultado de la prueba",
541
+ "Try Another": "Probar otra",
542
+ Back: "Atrás",
543
+ You: "Tú",
544
+ Garment: "Prenda",
545
+ "Your Height": "Tu Altura",
546
+ "Your Weight": "Tu Peso",
547
+ "Drag or scroll to set your height": "Arrastra o desplaza para establecer tu altura",
548
+ "Drag or scroll to set your weight": "Arrastra o desplaza para establecer tu peso",
549
+ "Enter height and weight first": "Introduce primero altura y peso",
550
+ // ── Field labels ──
551
+ "Lens Width": "Ancho de lente",
552
+ Bridge: "Puente",
553
+ "Arm Length": "Largo del brazo",
554
+ "Head Circumference": "Contorno de cabeza",
555
+ "Face Width": "Ancho de cara",
556
+ Temple: "Patilla",
557
+ "Around widest point": "Alrededor del punto más ancho",
558
+ "Foot Length": "Longitud del pie",
559
+ Shoulder: "Hombro",
560
+ Thigh: "Muslo",
561
+ Hip: "Cadera",
562
+ // ── Units ──
563
+ Millimetre: "Milímetro",
564
+ Centimetre: "Centímetro",
565
+ Millimeters: "Milímetros",
566
+ // ── Fit descriptors ──
567
+ Tight: "Ajustado",
568
+ Loose: "Holgado",
569
+ Short: "Corto",
570
+ Long: "Largo",
571
+ Perfect: "Perfecto",
572
+ "Perfect fit": "Ajuste perfecto",
573
+ "✓ Fit": "✓ Ajuste",
574
+ "too short": "demasiado corto",
575
+ "too long": "demasiado largo",
576
+ "a bit short": "un poco corto",
577
+ "a bit long": "un poco largo",
578
+ // ── Length pills ──
579
+ Length: "Largo",
580
+ "Length Adjustment": "Ajuste de largo",
581
+ Regular: "Regular",
582
+ Big: "Grande",
583
+ "Big & Tall": "Grande y alto",
584
+ // ── Misc ──
585
+ preview: "vista previa",
586
+ // ── BodyProfileView — photo upload area (left section) ──
587
+ "Upload your photo": "Sube tu foto",
588
+ "Upload a photo": "Subir una foto",
589
+ "Click or drag a full-body photo": "Haz clic o arrastra una foto de cuerpo entero",
590
+ "Or upload a photo for AI sizing": "O sube una foto para análisis con IA",
591
+ Photo: "Foto",
592
+ "How to take a good photo": "Cómo tomar una buena foto",
593
+ "How to take the best photo": "Cómo tomar la mejor foto",
594
+ Do: "Sí",
595
+ "Don't": "No",
596
+ "Quick Tip": "Consejo rápido",
597
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "Cuanto más sencilla sea tu foto, más precisos serán los resultados del probador virtual.",
598
+ "Choose a plain background (a light wall is ideal)": "Elige un fondo liso (una pared clara es ideal)",
599
+ "Stand facing the camera with your full body in frame": "Ponte de frente a la cámara con todo tu cuerpo en cuadro",
600
+ "Stand straight and still, arms relaxed by your sides": "Mantente recto e inmóvil, con los brazos relajados a los lados",
601
+ "Stand with your HEELS against a wall for best accuracy": "Coloca los TALONES contra una pared para mayor precisión",
602
+ "Use natural or even lighting (e.g. near a window)": "Usa luz natural o uniforme (p. ej. cerca de una ventana)",
603
+ "Wear fitted, simple clothing (e.g. neutral colors)": "Usa ropa ajustada y sencilla (p. ej. colores neutros)",
604
+ "Don't wear loose, baggy, or layered clothing": "No uses ropa holgada, suelta o con varias capas",
605
+ "Don't sit, pose, or bend your body": "No te sientes, poses ni dobles el cuerpo",
606
+ "Don't use strong backlighting": "No uses contraluz fuerte",
607
+ "Don't take mirror photos or selfies": "No tomes fotos de espejo ni selfies",
608
+ "Don't apply filters, effects, or edits": "No apliques filtros, efectos ni ediciones",
609
+ // ── Age gate ──
610
+ "Are you 18 or older?": "¿Tienes 18 años o más?",
611
+ Yes: "Sí",
612
+ No: "No",
613
+ "Please confirm your age": "Por favor confirma tu edad",
614
+ "Please confirm that the person in the photo is 18 or older before uploading.": "Por favor confirma que la persona en la foto tiene 18 años o más antes de subirla.",
615
+ "Under 18 — can't process this photo.": "Menor de 18 años — no se puede procesar esta foto.",
616
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "Esta foto parece ser de un menor. Sube una foto de una persona de 18 años o más.",
617
+ "Different photo needed": "Necesitas otra foto",
618
+ "Try another photo": "Probar otra foto",
619
+ // ── Photo step controls ──
620
+ Continue: "Continuar",
621
+ "Analyze My Size": "Analizar mi talla",
622
+ "Analyzing photo…": "Analizando foto…",
623
+ Details: "Detalles",
624
+ "Image must be under 10MB": "La imagen debe ser menor de 10MB",
625
+ "Please upload an image file": "Sube un archivo de imagen",
626
+ "Please upload a photo": "Sube una foto",
627
+ "Prefer not to upload a photo?": "¿Prefieres no subir una foto?",
628
+ "Enter measurements manually": "Introducir medidas manualmente",
629
+ "Legal Notice": "Aviso Legal",
630
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "Tu imagen se utilizará para generar una vista previa del probador virtual que muestra cómo pueden verse y ajustarse los artículos seleccionados. Las imágenes se procesan de forma segura y no se almacenan después de la generación.",
631
+ // ── BodyProfileView — form (right section) ──
632
+ "Body details": "Detalles del cuerpo",
633
+ "Your body details": "Tus datos corporales",
634
+ "Body Measurements": "Medidas corporales",
635
+ AGE: "EDAD",
636
+ years: "años",
637
+ "Enter your height": "Introduce tu altura",
638
+ "Enter your weight": "Introduce tu peso",
639
+ "Enter your bra size": "Introduce tu talla de sujetador",
640
+ "Please enter your height": "Introduce tu altura",
641
+ "Please enter your weight": "Introduce tu peso",
642
+ "Please enter a valid height": "Introduce una altura válida",
643
+ "Please enter a valid weight": "Introduce un peso válido",
644
+ "Please enter a valid height (100-250 cm)": "Introduce una altura válida (100-250 cm)",
645
+ "Please enter a valid weight (30-300 kg)": "Introduce un peso válido (30-300 kg)",
646
+ "Please select both band and cup size": "Selecciona la talla de banda y copa",
647
+ "Select your bra size": "Selecciona tu talla de sujetador",
648
+ BAND: "BANDA",
649
+ "BAND SIZE": "TALLA DE BANDA",
650
+ CUP: "COPA",
651
+ "CUP SIZE": "TALLA DE COPA",
652
+ "BRA REGION": "REGIÓN DEL SUJETADOR",
653
+ Imperial: "Imperial",
654
+ Metric: "Métrico",
655
+ "These calibrate the AI — all required.": "Estos calibran la IA — todos obligatorios.",
656
+ Using: "Usando",
657
+ "start fresh": "empezar de nuevo",
658
+ Close: "Cerrar",
659
+ // ── Body shape questions ──
660
+ "Which best describes your chest?": "¿Cuál describe mejor tu pecho?",
661
+ "WHICH BEST DESCRIBES YOUR CHEST?": "¿CUÁL DESCRIBE MEJOR TU PECHO?",
662
+ "Which best describes your hips?": "¿Cuál describe mejor tus caderas?",
663
+ "WHICH BEST DESCRIBES YOUR HIPS?": "¿CUÁL DESCRIBE MEJOR TUS CADERAS?",
664
+ "Which best describes your midsection?": "¿Cuál describe mejor tu cintura?",
665
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "¿CUÁL DESCRIBE MEJOR TU CINTURA?",
666
+ "Which best describes your seat?": "¿Cuál describe mejor tu trasero?",
667
+ "WHICH BEST DESCRIBES YOUR SEAT?": "¿CUÁL DESCRIBE MEJOR TU TRASERO?",
668
+ Average: "Media",
669
+ Narrow: "Estrecho",
670
+ Broad: "Ancho",
671
+ Curvy: "Curvilíneo",
672
+ "A slimmer, narrower chest build": "Un pecho más delgado y estrecho",
673
+ "A moderate, proportionate chest": "Un pecho moderado y proporcionado",
674
+ "A wider, more muscular chest": "Un pecho más ancho y musculoso",
675
+ "A flatter midsection with minimal protrusion": "Una cintura más plana con mínima protuberancia",
676
+ "A moderate, natural midsection shape": "Una cintura moderada y natural",
677
+ "A fuller, more rounded midsection": "Una cintura más llena y redondeada",
678
+ "A flatter backside with less projection": "Un trasero más plano con menos proyección",
679
+ "A moderate, natural backside shape": "Un trasero moderado y natural",
680
+ "A fuller, more rounded backside": "Un trasero más lleno y redondeado"
681
+ }, z = {
682
+ "Virtual Try-On": "Essayage Virtuel",
683
+ "Find Your Size & See It On You": "Trouvez votre taille et essayez-le",
684
+ "Get the perfect fit, then try it on virtually": "Trouvez la coupe parfaite, puis essayez-le virtuellement",
685
+ "Get Your Size": "Votre taille",
686
+ "Instant fit recommendation": "Recommandation de coupe instantanée",
687
+ "Try It On": "Essayer",
688
+ "See how it looks on you": "Voyez comment ça vous va",
689
+ "Find My Size": "Trouver ma taille",
690
+ "Takes less than a minute": "Prend moins d'une minute",
691
+ "Upload a full body photo": "Téléchargez une photo en pied",
692
+ "JPEG, PNG or WebP (max 10MB)": "JPEG, PNG ou WebP (max 10 Mo)",
693
+ "Your photo": "Votre photo",
694
+ "Let's find your best fit": "Trouvons votre meilleure coupe",
695
+ Centimeters: "Centimètres",
696
+ Inches: "Pouces",
697
+ "Load saved profile...": "Charger un profil enregistré...",
698
+ HEIGHT: "TAILLE",
699
+ WEIGHT: "POIDS",
700
+ feet: "pieds",
701
+ inches: "pouces",
702
+ cm: "cm",
703
+ kg: "kg",
704
+ lbs: "livres",
705
+ in: "po",
706
+ "How to measure": "Comment mesurer",
707
+ "Hide guide": "Masquer le guide",
708
+ "I know my measurements": "Je connais mes mesures",
709
+ "Not sure? Use height & weight instead": "Pas sûr ? Utilisez taille et poids",
710
+ "Please fill in height and weight": "Veuillez renseigner la taille et le poids",
711
+ "Please fill in all required fields": "Veuillez remplir tous les champs obligatoires",
712
+ Next: "Suivant",
713
+ "Analyzing your size...": "Analyse de votre taille...",
714
+ "RECOMMENDED SIZE": "TAILLE RECOMMANDÉE",
715
+ "NOT RECOMMENDED": "NON RECOMMANDÉE",
716
+ "Edit measurements": "Modifier les mesures",
717
+ "Size guide": "Guide des tailles",
718
+ "Your fit": "Votre coupe",
719
+ "Your measure": "Votre mesure",
720
+ "perfect fit": "coupe parfaite",
721
+ "too tight": "trop serré",
722
+ tight: "serré",
723
+ "a bit tight": "un peu serré",
724
+ "too loose": "trop ample",
725
+ loose: "ample",
726
+ "a bit loose": "un peu ample",
727
+ "See fit on your photo": "Voir la coupe sur votre photo",
728
+ "Hide visual fit": "Masquer la coupe visuelle",
729
+ "Analyzing...": "Analyse...",
730
+ "Try it on": "Essayer",
731
+ "SIZE CHART": "TABLEAU DES TAILLES",
732
+ "YOUR ESTIMATED MEASUREMENTS": "VOS MESURES ESTIMÉES",
733
+ Edit: "Modifier",
734
+ Download: "Télécharger",
735
+ "Size chart": "Tableau des tailles",
736
+ "Preparing your image...": "Préparation de votre image...",
737
+ "Analyzing body proportions...": "Analyse des proportions corporelles...",
738
+ "Matching garment to your photo...": "Ajustement du vêtement à votre photo...",
739
+ "Generating virtual try-on...": "Génération de l'essayage virtuel...",
740
+ "Refining details...": "Affinement des détails...",
741
+ "Almost there...": "Presque terminé...",
742
+ "Complete!": "Terminé !",
743
+ "This usually takes 15-25 seconds": "Cela prend généralement 15 à 25 secondes",
744
+ "Something went wrong": "Une erreur est survenue",
745
+ "Try Again": "Réessayer",
746
+ "SDK not configured. Please provide an API key.": "SDK non configuré. Veuillez fournir une clé API.",
747
+ "Please upload a JPEG, PNG, or WebP image.": "Veuillez télécharger une image JPEG, PNG ou WebP.",
748
+ "Image must be under 10MB.": "L'image doit faire moins de 10 Mo.",
749
+ "Try-on generation failed": "Échec de la génération de l'essayage",
750
+ "Failed to start try-on": "Impossible de démarrer l'essayage",
751
+ "No product image found. Please set the product-image attribute.": "Aucune image produit trouvée. Veuillez définir l'attribut product-image.",
752
+ "Powered by": "Propulsé par",
753
+ "My Profiles": "Mes Profils",
754
+ History: "Historique",
755
+ "No saved profiles yet.": "Aucun profil enregistré.",
756
+ "No history yet.": "Pas encore d'historique.",
757
+ Product: "Produit",
758
+ "Women's": "Femme",
759
+ "Men's": "Homme",
760
+ Profiles: "Profils",
761
+ "Women's Profile": "Profil Femme",
762
+ "Men's Profile": "Profil Homme",
763
+ Height: "Taille",
764
+ Weight: "Poids",
765
+ Chest: "Poitrine",
766
+ Bust: "Buste",
767
+ Waist: "Tour de taille",
768
+ Hips: "Hanches",
769
+ Shoulders: "Épaules",
770
+ Sleeve: "Manche",
771
+ Inseam: "Entrejambe",
772
+ Neck: "Cou",
773
+ Foot: "Pied",
774
+ "Shoe EU": "Chaussure EU",
775
+ "Shoe US": "Chaussure US",
776
+ "Shoe UK": "Chaussure UK",
777
+ Saved: "Enregistré",
778
+ "Delete Profile": "Supprimer le Profil",
779
+ "Shoe size (US)": "Pointure (US)",
780
+ "Shoe size (UK)": "Pointure (UK)",
781
+ "Shoe size (EU)": "Pointure (EU)",
782
+ "Generating...": "Génération...",
783
+ "Foot length": "Longueur du pied",
784
+ Size: "Taille",
785
+ "Try on size": "Essayer la taille",
786
+ "e.g.": "ex.",
787
+ "Drop your photo here or click to upload": "Déposez votre photo ici ou cliquez pour télécharger",
788
+ "This usually takes 15-20 seconds": "Cela prend généralement 15 à 20 secondes",
789
+ "Try-on result": "Résultat de l'essayage",
790
+ "Try Another": "Essayer une autre",
791
+ Back: "Retour",
792
+ You: "Vous",
793
+ Garment: "Vêtement",
794
+ "Your Height": "Votre Taille",
795
+ "Your Weight": "Votre Poids",
796
+ "Drag or scroll to set your height": "Glissez ou faites défiler pour définir votre taille",
797
+ "Drag or scroll to set your weight": "Glissez ou faites défiler pour définir votre poids",
798
+ "Enter height and weight first": "Saisissez d'abord la taille et le poids",
799
+ // ── Field labels ──
800
+ "Lens Width": "Largeur du verre",
801
+ Bridge: "Pont",
802
+ "Arm Length": "Longueur de branche",
803
+ "Head Circumference": "Tour de tête",
804
+ "Face Width": "Largeur du visage",
805
+ Temple: "Branche",
806
+ "Around widest point": "Autour du point le plus large",
807
+ "Foot Length": "Longueur du pied",
808
+ Shoulder: "Épaule",
809
+ Thigh: "Cuisse",
810
+ Hip: "Hanche",
811
+ // ── Units ──
812
+ Millimetre: "Millimètre",
813
+ Centimetre: "Centimètre",
814
+ Millimeters: "Millimètres",
815
+ // ── Fit descriptors ──
816
+ Tight: "Serré",
817
+ Loose: "Lâche",
818
+ Short: "Court",
819
+ Long: "Long",
820
+ Perfect: "Parfait",
821
+ "Perfect fit": "Ajustement parfait",
822
+ "✓ Fit": "✓ Ajusté",
823
+ "too short": "trop court",
824
+ "too long": "trop long",
825
+ "a bit short": "un peu court",
826
+ "a bit long": "un peu long",
827
+ // ── Length pills ──
828
+ Length: "Longueur",
829
+ "Length Adjustment": "Ajustement de longueur",
830
+ Regular: "Régulier",
831
+ Big: "Grand",
832
+ "Big & Tall": "Grand & Long",
833
+ // ── Misc ──
834
+ preview: "aperçu",
835
+ // ── BodyProfileView — photo upload area (left section) ──
836
+ "Upload your photo": "Téléchargez votre photo",
837
+ "Upload a photo": "Télécharger une photo",
838
+ "Click or drag a full-body photo": "Cliquez ou faites glisser une photo en pied",
839
+ "Or upload a photo for AI sizing": "Ou téléchargez une photo pour l'analyse par IA",
840
+ Photo: "Photo",
841
+ "How to take a good photo": "Comment prendre une bonne photo",
842
+ "How to take the best photo": "Comment prendre la meilleure photo",
843
+ Do: "À faire",
844
+ "Don't": "À éviter",
845
+ "Quick Tip": "Astuce rapide",
846
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "Plus votre photo est simple, plus les résultats de l'essayage virtuel seront précis.",
847
+ "Choose a plain background (a light wall is ideal)": "Choisissez un arrière-plan uni (un mur clair est idéal)",
848
+ "Stand facing the camera with your full body in frame": "Tenez-vous face à la caméra avec tout votre corps dans le cadre",
849
+ "Stand straight and still, arms relaxed by your sides": "Tenez-vous droit et immobile, bras détendus le long du corps",
850
+ "Stand with your HEELS against a wall for best accuracy": "Placez vos TALONS contre un mur pour une meilleure précision",
851
+ "Use natural or even lighting (e.g. near a window)": "Utilisez un éclairage naturel ou uniforme (par ex. près d'une fenêtre)",
852
+ "Wear fitted, simple clothing (e.g. neutral colors)": "Portez des vêtements ajustés et simples (par ex. couleurs neutres)",
853
+ "Don't wear loose, baggy, or layered clothing": "Ne portez pas de vêtements amples ou superposés",
854
+ "Don't sit, pose, or bend your body": "Ne vous asseyez pas, ne posez pas et ne courbez pas votre corps",
855
+ "Don't use strong backlighting": "N'utilisez pas de contre-jour fort",
856
+ "Don't take mirror photos or selfies": "Ne prenez pas de photos miroir ni de selfies",
857
+ "Don't apply filters, effects, or edits": "N'appliquez pas de filtres, d'effets ou d'éditions",
858
+ // ── Age gate ──
859
+ "Are you 18 or older?": "Avez-vous 18 ans ou plus ?",
860
+ Yes: "Oui",
861
+ No: "Non",
862
+ "Please confirm your age": "Veuillez confirmer votre âge",
863
+ "Please confirm that the person in the photo is 18 or older before uploading.": "Veuillez confirmer que la personne sur la photo a 18 ans ou plus avant le téléchargement.",
864
+ "Under 18 — can't process this photo.": "Moins de 18 ans — impossible de traiter cette photo.",
865
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "Cette photo semble être celle d'un mineur. Veuillez télécharger la photo d'une personne de 18 ans ou plus.",
866
+ "Different photo needed": "Une autre photo est nécessaire",
867
+ "Try another photo": "Essayez une autre photo",
868
+ // ── Photo step controls ──
869
+ Continue: "Continuer",
870
+ "Analyze My Size": "Analyser ma taille",
871
+ "Analyzing photo…": "Analyse de la photo…",
872
+ Details: "Détails",
873
+ "Image must be under 10MB": "L'image doit faire moins de 10 Mo",
874
+ "Please upload an image file": "Veuillez télécharger un fichier image",
875
+ "Please upload a photo": "Veuillez télécharger une photo",
876
+ "Prefer not to upload a photo?": "Vous préférez ne pas télécharger de photo ?",
877
+ "Enter measurements manually": "Saisir les mesures manuellement",
878
+ "Legal Notice": "Mention légale",
879
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "Votre image sera utilisée pour générer un aperçu d'essayage virtuel montrant l'apparence et l'ajustement des articles sélectionnés. Les images sont traitées de manière sécurisée et ne sont pas conservées après la génération.",
880
+ // ── BodyProfileView — form (right section) ──
881
+ "Body details": "Détails corporels",
882
+ "Your body details": "Vos détails corporels",
883
+ "Body Measurements": "Mensurations",
884
+ AGE: "ÂGE",
885
+ years: "ans",
886
+ "Enter your height": "Saisissez votre taille",
887
+ "Enter your weight": "Saisissez votre poids",
888
+ "Enter your bra size": "Saisissez votre taille de soutien-gorge",
889
+ "Please enter your height": "Veuillez saisir votre taille",
890
+ "Please enter your weight": "Veuillez saisir votre poids",
891
+ "Please enter a valid height": "Veuillez saisir une taille valide",
892
+ "Please enter a valid weight": "Veuillez saisir un poids valide",
893
+ "Please enter a valid height (100-250 cm)": "Veuillez saisir une taille valide (100-250 cm)",
894
+ "Please enter a valid weight (30-300 kg)": "Veuillez saisir un poids valide (30-300 kg)",
895
+ "Please select both band and cup size": "Veuillez sélectionner la taille de tour de poitrine et de bonnet",
896
+ "Select your bra size": "Sélectionnez votre taille de soutien-gorge",
897
+ BAND: "TOUR",
898
+ "BAND SIZE": "TOUR DE POITRINE",
899
+ CUP: "BONNET",
900
+ "CUP SIZE": "TAILLE DE BONNET",
901
+ "BRA REGION": "RÉGION DU SOUTIEN-GORGE",
902
+ Imperial: "Impérial",
903
+ Metric: "Métrique",
904
+ "These calibrate the AI — all required.": "Ces données calibrent l'IA — toutes obligatoires.",
905
+ Using: "Utilise",
906
+ "start fresh": "recommencer",
907
+ Close: "Fermer",
908
+ // ── Body shape questions ──
909
+ "Which best describes your chest?": "Lequel décrit le mieux votre poitrine ?",
910
+ "WHICH BEST DESCRIBES YOUR CHEST?": "LEQUEL DÉCRIT LE MIEUX VOTRE POITRINE ?",
911
+ "Which best describes your hips?": "Lequel décrit le mieux vos hanches ?",
912
+ "WHICH BEST DESCRIBES YOUR HIPS?": "LEQUEL DÉCRIT LE MIEUX VOS HANCHES ?",
913
+ "Which best describes your midsection?": "Lequel décrit le mieux votre taille ?",
914
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "LEQUEL DÉCRIT LE MIEUX VOTRE TAILLE ?",
915
+ "Which best describes your seat?": "Lequel décrit le mieux votre assise ?",
916
+ "WHICH BEST DESCRIBES YOUR SEAT?": "LEQUEL DÉCRIT LE MIEUX VOTRE ASSISE ?",
917
+ Average: "Moyenne",
918
+ Narrow: "Étroit",
919
+ Broad: "Large",
920
+ Curvy: "Sinueux",
921
+ "A slimmer, narrower chest build": "Une poitrine plus mince et étroite",
922
+ "A moderate, proportionate chest": "Une poitrine modérée et proportionnée",
923
+ "A wider, more muscular chest": "Une poitrine plus large et musclée",
924
+ "A flatter midsection with minimal protrusion": "Une taille plus plate avec peu de protubérance",
925
+ "A moderate, natural midsection shape": "Une taille modérée et naturelle",
926
+ "A fuller, more rounded midsection": "Une taille plus pleine et arrondie",
927
+ "A flatter backside with less projection": "Un arrière plus plat avec moins de projection",
928
+ "A moderate, natural backside shape": "Un arrière modéré et naturel",
929
+ "A fuller, more rounded backside": "Un arrière plus plein et arrondi"
930
+ }, M = {
931
+ "Virtual Try-On": "Virtuelle Anprobe",
932
+ "Find Your Size & See It On You": "Finden Sie Ihre Größe und probieren Sie es an",
933
+ "Get the perfect fit, then try it on virtually": "Finden Sie die perfekte Passform und probieren Sie es virtuell an",
934
+ "Get Your Size": "Ihre Größe",
935
+ "Instant fit recommendation": "Sofortige Passformempfehlung",
936
+ "Try It On": "Anprobieren",
937
+ "See how it looks on you": "Sehen Sie, wie es Ihnen steht",
938
+ "Find My Size": "Meine Größe finden",
939
+ "Takes less than a minute": "Dauert weniger als eine Minute",
940
+ "Upload a full body photo": "Laden Sie ein Ganzkörperfoto hoch",
941
+ "JPEG, PNG or WebP (max 10MB)": "JPEG, PNG oder WebP (max. 10 MB)",
942
+ "Your photo": "Ihr Foto",
943
+ "Let's find your best fit": "Finden wir Ihre beste Passform",
944
+ Centimeters: "Zentimeter",
945
+ Inches: "Zoll",
946
+ "Load saved profile...": "Gespeichertes Profil laden...",
947
+ HEIGHT: "GRÖSSE",
948
+ WEIGHT: "GEWICHT",
949
+ feet: "Fuß",
950
+ inches: "Zoll",
951
+ cm: "cm",
952
+ kg: "kg",
953
+ lbs: "Pfund",
954
+ in: "Zoll",
955
+ "How to measure": "So messen Sie",
956
+ "Hide guide": "Anleitung ausblenden",
957
+ "I know my measurements": "Ich kenne meine Maße",
958
+ "Not sure? Use height & weight instead": "Unsicher? Verwenden Sie Größe und Gewicht",
959
+ "Please fill in height and weight": "Bitte Größe und Gewicht eingeben",
960
+ "Please fill in all required fields": "Bitte alle Pflichtfelder ausfüllen",
961
+ Next: "Weiter",
962
+ "Analyzing your size...": "Ihre Größe wird analysiert...",
963
+ "RECOMMENDED SIZE": "EMPFOHLENE GRÖSSE",
964
+ "NOT RECOMMENDED": "NICHT EMPFOHLEN",
965
+ "Edit measurements": "Maße bearbeiten",
966
+ "Size guide": "Größentabelle",
967
+ "Your fit": "Ihre Passform",
968
+ "Your measure": "Ihr Maß",
969
+ "perfect fit": "perfekte Passform",
970
+ "too tight": "zu eng",
971
+ tight: "eng",
972
+ "a bit tight": "etwas eng",
973
+ "too loose": "zu weit",
974
+ loose: "weit",
975
+ "a bit loose": "etwas weit",
976
+ "See fit on your photo": "Passform auf Ihrem Foto sehen",
977
+ "Hide visual fit": "Passformanzeige ausblenden",
978
+ "Analyzing...": "Analyse...",
979
+ "Try it on": "Anprobieren",
980
+ "SIZE CHART": "GRÖSSENTABELLE",
981
+ "YOUR ESTIMATED MEASUREMENTS": "IHRE GESCHÄTZTEN MASSE",
982
+ Edit: "Bearbeiten",
983
+ Download: "Herunterladen",
984
+ "Size chart": "Größentabelle",
985
+ "Preparing your image...": "Ihr Bild wird vorbereitet...",
986
+ "Analyzing body proportions...": "Körperproportionen werden analysiert...",
987
+ "Matching garment to your photo...": "Kleidungsstück wird an Ihr Foto angepasst...",
988
+ "Generating virtual try-on...": "Virtuelle Anprobe wird erstellt...",
989
+ "Refining details...": "Details werden verfeinert...",
990
+ "Almost there...": "Fast fertig...",
991
+ "Complete!": "Fertig!",
992
+ "This usually takes 15-25 seconds": "Dies dauert normalerweise 15–25 Sekunden",
993
+ "Something went wrong": "Etwas ist schiefgelaufen",
994
+ "Try Again": "Erneut versuchen",
995
+ "SDK not configured. Please provide an API key.": "SDK nicht konfiguriert. Bitte geben Sie einen API-Schlüssel an.",
996
+ "Please upload a JPEG, PNG, or WebP image.": "Bitte laden Sie ein JPEG-, PNG- oder WebP-Bild hoch.",
997
+ "Image must be under 10MB.": "Das Bild muss kleiner als 10 MB sein.",
998
+ "Try-on generation failed": "Anprobe-Erstellung fehlgeschlagen",
999
+ "Failed to start try-on": "Anprobe konnte nicht gestartet werden",
1000
+ "No product image found. Please set the product-image attribute.": "Kein Produktbild gefunden. Bitte setzen Sie das product-image Attribut.",
1001
+ "Powered by": "Unterstützt von",
1002
+ "My Profiles": "Meine Profile",
1003
+ History: "Verlauf",
1004
+ "No saved profiles yet.": "Noch keine gespeicherten Profile.",
1005
+ "No history yet.": "Noch kein Verlauf.",
1006
+ Product: "Produkt",
1007
+ "Women's": "Damen",
1008
+ "Men's": "Herren",
1009
+ Profiles: "Profile",
1010
+ "Women's Profile": "Damenprofil",
1011
+ "Men's Profile": "Herrenprofil",
1012
+ Height: "Größe",
1013
+ Weight: "Gewicht",
1014
+ Chest: "Brust",
1015
+ Bust: "Oberweite",
1016
+ Waist: "Taille",
1017
+ Hips: "Hüfte",
1018
+ Shoulders: "Schultern",
1019
+ Sleeve: "Ärmel",
1020
+ Inseam: "Schrittlänge",
1021
+ Neck: "Hals",
1022
+ Foot: "Fuß",
1023
+ "Shoe EU": "Schuh EU",
1024
+ "Shoe US": "Schuh US",
1025
+ "Shoe UK": "Schuh UK",
1026
+ Saved: "Gespeichert",
1027
+ "Delete Profile": "Profil löschen",
1028
+ "Shoe size (US)": "Schuhgröße (US)",
1029
+ "Shoe size (UK)": "Schuhgröße (UK)",
1030
+ "Shoe size (EU)": "Schuhgröße (EU)",
1031
+ "Generating...": "Wird erstellt...",
1032
+ "Foot length": "Fußlänge",
1033
+ Size: "Größe",
1034
+ "Try on size": "Größe anprobieren",
1035
+ "e.g.": "z.B.",
1036
+ "Drop your photo here or click to upload": "Foto hier ablegen oder klicken zum Hochladen",
1037
+ "This usually takes 15-20 seconds": "Dies dauert normalerweise 15–20 Sekunden",
1038
+ "Try-on result": "Anprobe-Ergebnis",
1039
+ "Try Another": "Andere probieren",
1040
+ Back: "Zurück",
1041
+ You: "Du",
1042
+ Garment: "Kleidung",
1043
+ "Your Height": "Deine Größe",
1044
+ "Your Weight": "Dein Gewicht",
1045
+ "Drag or scroll to set your height": "Ziehen oder scrollen Sie, um Ihre Größe einzustellen",
1046
+ "Drag or scroll to set your weight": "Ziehen oder scrollen Sie, um Ihr Gewicht einzustellen",
1047
+ "Enter height and weight first": "Geben Sie zuerst Größe und Gewicht ein",
1048
+ // ── Field labels ──
1049
+ "Lens Width": "Glasbreite",
1050
+ Bridge: "Steg",
1051
+ "Arm Length": "Bügellänge",
1052
+ "Head Circumference": "Kopfumfang",
1053
+ "Face Width": "Gesichtsbreite",
1054
+ Temple: "Bügel",
1055
+ "Around widest point": "Um die breiteste Stelle",
1056
+ "Foot Length": "Fußlänge",
1057
+ Shoulder: "Schulter",
1058
+ Thigh: "Oberschenkel",
1059
+ Hip: "Hüfte",
1060
+ // ── Units ──
1061
+ Millimetre: "Millimeter",
1062
+ Centimetre: "Zentimeter",
1063
+ Millimeters: "Millimeter",
1064
+ // ── Fit descriptors ──
1065
+ Tight: "Eng",
1066
+ Loose: "Locker",
1067
+ Short: "Kurz",
1068
+ Long: "Lang",
1069
+ Perfect: "Perfekt",
1070
+ "Perfect fit": "Perfekte Passform",
1071
+ "✓ Fit": "✓ Passt",
1072
+ "too short": "zu kurz",
1073
+ "too long": "zu lang",
1074
+ "a bit short": "etwas kurz",
1075
+ "a bit long": "etwas lang",
1076
+ // ── Length pills ──
1077
+ Length: "Länge",
1078
+ "Length Adjustment": "Längenanpassung",
1079
+ Regular: "Regulär",
1080
+ Big: "Groß",
1081
+ "Big & Tall": "Groß & Lang",
1082
+ // ── Misc ──
1083
+ preview: "Vorschau",
1084
+ // ── BodyProfileView — photo upload area (left section) ──
1085
+ "Upload your photo": "Lade dein Foto hoch",
1086
+ "Upload a photo": "Foto hochladen",
1087
+ "Click or drag a full-body photo": "Klicke oder ziehe ein Ganzkörperfoto",
1088
+ "Or upload a photo for AI sizing": "Oder lade ein Foto für die KI-Größenanalyse hoch",
1089
+ Photo: "Foto",
1090
+ "How to take a good photo": "So machst du ein gutes Foto",
1091
+ "How to take the best photo": "So machst du das beste Foto",
1092
+ Do: "Tu das",
1093
+ "Don't": "Vermeide",
1094
+ "Quick Tip": "Schneller Tipp",
1095
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "Je einfacher dein Foto ist, desto genauer sind die Ergebnisse der virtuellen Anprobe.",
1096
+ "Choose a plain background (a light wall is ideal)": "Wähle einen schlichten Hintergrund (eine helle Wand ist ideal)",
1097
+ "Stand facing the camera with your full body in frame": "Stelle dich mit dem ganzen Körper im Bild zur Kamera",
1098
+ "Stand straight and still, arms relaxed by your sides": "Stehe gerade und still, Arme entspannt an den Seiten",
1099
+ "Stand with your HEELS against a wall for best accuracy": "Stelle dich mit den FERSEN an eine Wand für beste Genauigkeit",
1100
+ "Use natural or even lighting (e.g. near a window)": "Nutze natürliches oder gleichmäßiges Licht (z. B. am Fenster)",
1101
+ "Wear fitted, simple clothing (e.g. neutral colors)": "Trage eng anliegende, schlichte Kleidung (z. B. neutrale Farben)",
1102
+ "Don't wear loose, baggy, or layered clothing": "Trage keine weite, lockere oder geschichtete Kleidung",
1103
+ "Don't sit, pose, or bend your body": "Sitze nicht, posiere nicht und beuge deinen Körper nicht",
1104
+ "Don't use strong backlighting": "Vermeide starkes Gegenlicht",
1105
+ "Don't take mirror photos or selfies": "Mache keine Spiegelfotos oder Selfies",
1106
+ "Don't apply filters, effects, or edits": "Wende keine Filter, Effekte oder Bearbeitungen an",
1107
+ // ── Age gate ──
1108
+ "Are you 18 or older?": "Bist du 18 Jahre oder älter?",
1109
+ Yes: "Ja",
1110
+ No: "Nein",
1111
+ "Please confirm your age": "Bitte bestätige dein Alter",
1112
+ "Please confirm that the person in the photo is 18 or older before uploading.": "Bitte bestätige, dass die Person auf dem Foto 18 Jahre oder älter ist, bevor du es hochlädst.",
1113
+ "Under 18 — can't process this photo.": "Unter 18 — dieses Foto kann nicht verarbeitet werden.",
1114
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "Dieses Foto scheint eine minderjährige Person zu zeigen. Bitte lade ein Foto einer Person ab 18 Jahren hoch.",
1115
+ "Different photo needed": "Anderes Foto erforderlich",
1116
+ "Try another photo": "Anderes Foto versuchen",
1117
+ // ── Photo step controls ──
1118
+ Continue: "Weiter",
1119
+ "Analyze My Size": "Meine Größe analysieren",
1120
+ "Analyzing photo…": "Foto wird analysiert…",
1121
+ Details: "Details",
1122
+ "Image must be under 10MB": "Das Bild muss kleiner als 10 MB sein",
1123
+ "Please upload an image file": "Bitte lade eine Bilddatei hoch",
1124
+ "Please upload a photo": "Bitte lade ein Foto hoch",
1125
+ "Prefer not to upload a photo?": "Möchtest du kein Foto hochladen?",
1126
+ "Enter measurements manually": "Maße manuell eingeben",
1127
+ "Legal Notice": "Rechtlicher Hinweis",
1128
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "Dein Bild wird verwendet, um eine virtuelle Anprobe zu erstellen, die zeigt, wie ausgewählte Artikel aussehen und sitzen können. Bilder werden sicher verarbeitet und nach der Erstellung nicht gespeichert.",
1129
+ // ── BodyProfileView — form (right section) ──
1130
+ "Body details": "Körperdetails",
1131
+ "Your body details": "Deine Körperdetails",
1132
+ "Body Measurements": "Körpermaße",
1133
+ AGE: "ALTER",
1134
+ years: "Jahre",
1135
+ "Enter your height": "Gib deine Größe ein",
1136
+ "Enter your weight": "Gib dein Gewicht ein",
1137
+ "Enter your bra size": "Gib deine BH-Größe ein",
1138
+ "Please enter your height": "Bitte gib deine Größe ein",
1139
+ "Please enter your weight": "Bitte gib dein Gewicht ein",
1140
+ "Please enter a valid height": "Bitte gib eine gültige Größe ein",
1141
+ "Please enter a valid weight": "Bitte gib ein gültiges Gewicht ein",
1142
+ "Please enter a valid height (100-250 cm)": "Bitte gib eine gültige Größe ein (100-250 cm)",
1143
+ "Please enter a valid weight (30-300 kg)": "Bitte gib ein gültiges Gewicht ein (30-300 kg)",
1144
+ "Please select both band and cup size": "Bitte wähle Unterbrustweite und Cup-Größe",
1145
+ "Select your bra size": "Wähle deine BH-Größe",
1146
+ BAND: "UNTERBRUST",
1147
+ "BAND SIZE": "UNTERBRUSTWEITE",
1148
+ CUP: "CUP",
1149
+ "CUP SIZE": "CUP-GRÖSSE",
1150
+ "BRA REGION": "BH-REGION",
1151
+ Imperial: "Imperial",
1152
+ Metric: "Metrisch",
1153
+ "These calibrate the AI — all required.": "Diese kalibrieren die KI — alle Pflichtangaben.",
1154
+ Using: "Verwendet",
1155
+ "start fresh": "neu beginnen",
1156
+ Close: "Schließen",
1157
+ // ── Body shape questions ──
1158
+ "Which best describes your chest?": "Was beschreibt deine Brust am besten?",
1159
+ "WHICH BEST DESCRIBES YOUR CHEST?": "WAS BESCHREIBT DEINE BRUST AM BESTEN?",
1160
+ "Which best describes your hips?": "Was beschreibt deine Hüften am besten?",
1161
+ "WHICH BEST DESCRIBES YOUR HIPS?": "WAS BESCHREIBT DEINE HÜFTEN AM BESTEN?",
1162
+ "Which best describes your midsection?": "Was beschreibt deine Körpermitte am besten?",
1163
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "WAS BESCHREIBT DEINE KÖRPERMITTE AM BESTEN?",
1164
+ "Which best describes your seat?": "Was beschreibt dein Gesäß am besten?",
1165
+ "WHICH BEST DESCRIBES YOUR SEAT?": "WAS BESCHREIBT DEIN GESÄSS AM BESTEN?",
1166
+ Average: "Durchschnittlich",
1167
+ Narrow: "Schmal",
1168
+ Broad: "Breit",
1169
+ Curvy: "Kurvig",
1170
+ "A slimmer, narrower chest build": "Eine schlankere, schmalere Brustform",
1171
+ "A moderate, proportionate chest": "Eine moderate, proportionierte Brust",
1172
+ "A wider, more muscular chest": "Eine breitere, muskulösere Brust",
1173
+ "A flatter midsection with minimal protrusion": "Eine flachere Körpermitte mit minimaler Wölbung",
1174
+ "A moderate, natural midsection shape": "Eine moderate, natürliche Körpermitte",
1175
+ "A fuller, more rounded midsection": "Eine vollere, rundere Körpermitte",
1176
+ "A flatter backside with less projection": "Ein flacheres Gesäß mit weniger Wölbung",
1177
+ "A moderate, natural backside shape": "Ein moderates, natürliches Gesäß",
1178
+ "A fuller, more rounded backside": "Ein volleres, runderes Gesäß"
1179
+ }, N = {
1180
+ "Virtual Try-On": "Prova Virtuale",
1181
+ "Find Your Size & See It On You": "Trova la tua taglia e provalo",
1182
+ "Get the perfect fit, then try it on virtually": "Trova la vestibilità perfetta, poi provalo virtualmente",
1183
+ "Get Your Size": "La tua taglia",
1184
+ "Instant fit recommendation": "Raccomandazione vestibilità istantanea",
1185
+ "Try It On": "Provalo",
1186
+ "See how it looks on you": "Guarda come ti sta",
1187
+ "Find My Size": "Trova la mia taglia",
1188
+ "Takes less than a minute": "Richiede meno di un minuto",
1189
+ "Upload a full body photo": "Carica una foto a figura intera",
1190
+ "JPEG, PNG or WebP (max 10MB)": "JPEG, PNG o WebP (max 10MB)",
1191
+ "Your photo": "La tua foto",
1192
+ "Let's find your best fit": "Troviamo la tua vestibilità ideale",
1193
+ Centimeters: "Centimetri",
1194
+ Inches: "Pollici",
1195
+ "Load saved profile...": "Carica profilo salvato...",
1196
+ HEIGHT: "ALTEZZA",
1197
+ WEIGHT: "PESO",
1198
+ feet: "piedi",
1199
+ inches: "pollici",
1200
+ cm: "cm",
1201
+ kg: "kg",
1202
+ lbs: "libbre",
1203
+ in: "poll",
1204
+ "How to measure": "Come misurare",
1205
+ "Hide guide": "Nascondi guida",
1206
+ "I know my measurements": "Conosco le mie misure",
1207
+ "Not sure? Use height & weight instead": "Non sei sicuro? Usa altezza e peso",
1208
+ "Please fill in height and weight": "Inserisci altezza e peso",
1209
+ "Please fill in all required fields": "Compila tutti i campi obbligatori",
1210
+ Next: "Avanti",
1211
+ "Analyzing your size...": "Analisi della tua taglia...",
1212
+ "RECOMMENDED SIZE": "TAGLIA CONSIGLIATA",
1213
+ "NOT RECOMMENDED": "NON CONSIGLIATA",
1214
+ "Edit measurements": "Modifica misure",
1215
+ "Size guide": "Guida alle taglie",
1216
+ "Your fit": "La tua vestibilità",
1217
+ "Your measure": "La tua misura",
1218
+ "perfect fit": "vestibilità perfetta",
1219
+ "too tight": "troppo stretto",
1220
+ tight: "stretto",
1221
+ "a bit tight": "un po' stretto",
1222
+ "too loose": "troppo largo",
1223
+ loose: "largo",
1224
+ "a bit loose": "un po' largo",
1225
+ "See fit on your photo": "Vedi vestibilità sulla tua foto",
1226
+ "Hide visual fit": "Nascondi vestibilità visiva",
1227
+ "Analyzing...": "Analisi...",
1228
+ "Try it on": "Provalo",
1229
+ "SIZE CHART": "TABELLA TAGLIE",
1230
+ "YOUR ESTIMATED MEASUREMENTS": "LE TUE MISURE STIMATE",
1231
+ Edit: "Modifica",
1232
+ Download: "Scarica",
1233
+ "Size chart": "Tabella taglie",
1234
+ "Preparing your image...": "Preparazione dell'immagine...",
1235
+ "Analyzing body proportions...": "Analisi delle proporzioni corporee...",
1236
+ "Matching garment to your photo...": "Adattamento del capo alla tua foto...",
1237
+ "Generating virtual try-on...": "Generazione della prova virtuale...",
1238
+ "Refining details...": "Rifinitura dei dettagli...",
1239
+ "Almost there...": "Quasi pronto...",
1240
+ "Complete!": "Completato!",
1241
+ "This usually takes 15-25 seconds": "Di solito richiede 15-25 secondi",
1242
+ "Something went wrong": "Qualcosa è andato storto",
1243
+ "Try Again": "Riprova",
1244
+ "SDK not configured. Please provide an API key.": "SDK non configurato. Fornisci una chiave API.",
1245
+ "Please upload a JPEG, PNG, or WebP image.": "Carica un'immagine JPEG, PNG o WebP.",
1246
+ "Image must be under 10MB.": "L'immagine deve essere inferiore a 10MB.",
1247
+ "Try-on generation failed": "Generazione della prova fallita",
1248
+ "Failed to start try-on": "Impossibile avviare la prova",
1249
+ "No product image found. Please set the product-image attribute.": "Nessuna immagine prodotto trovata. Imposta l'attributo product-image.",
1250
+ "Powered by": "Powered by",
1251
+ "My Profiles": "I miei Profili",
1252
+ History: "Cronologia",
1253
+ "No saved profiles yet.": "Nessun profilo salvato.",
1254
+ "No history yet.": "Nessuna cronologia.",
1255
+ Product: "Prodotto",
1256
+ "Women's": "Donna",
1257
+ "Men's": "Uomo",
1258
+ Profiles: "Profili",
1259
+ "Women's Profile": "Profilo Donna",
1260
+ "Men's Profile": "Profilo Uomo",
1261
+ Height: "Altezza",
1262
+ Weight: "Peso",
1263
+ Chest: "Petto",
1264
+ Bust: "Busto",
1265
+ Waist: "Vita",
1266
+ Hips: "Fianchi",
1267
+ Shoulders: "Spalle",
1268
+ Sleeve: "Manica",
1269
+ Inseam: "Cavallo",
1270
+ Neck: "Collo",
1271
+ Foot: "Piede",
1272
+ "Shoe EU": "Scarpa EU",
1273
+ "Shoe US": "Scarpa US",
1274
+ "Shoe UK": "Scarpa UK",
1275
+ Saved: "Salvato",
1276
+ "Delete Profile": "Elimina Profilo",
1277
+ "Shoe size (US)": "Numero di scarpa (US)",
1278
+ "Shoe size (UK)": "Numero di scarpa (UK)",
1279
+ "Shoe size (EU)": "Numero di scarpa (EU)",
1280
+ "Generating...": "Generazione...",
1281
+ "Foot length": "Lunghezza del piede",
1282
+ Size: "Taglia",
1283
+ "Try on size": "Prova la taglia",
1284
+ "e.g.": "es.",
1285
+ "Drop your photo here or click to upload": "Trascina la foto qui o clicca per caricare",
1286
+ "This usually takes 15-20 seconds": "Di solito richiede 15-20 secondi",
1287
+ "Try-on result": "Risultato della prova",
1288
+ "Try Another": "Prova un'altra",
1289
+ Back: "Indietro",
1290
+ You: "Tu",
1291
+ Garment: "Capo",
1292
+ "Your Height": "La Tua Altezza",
1293
+ "Your Weight": "Il Tuo Peso",
1294
+ "Drag or scroll to set your height": "Trascina o scorri per impostare la tua altezza",
1295
+ "Drag or scroll to set your weight": "Trascina o scorri per impostare il tuo peso",
1296
+ "Enter height and weight first": "Inserisci prima altezza e peso",
1297
+ // ── Field labels ──
1298
+ "Lens Width": "Larghezza lente",
1299
+ Bridge: "Ponte",
1300
+ "Arm Length": "Lunghezza asta",
1301
+ "Head Circumference": "Circonferenza testa",
1302
+ "Face Width": "Larghezza viso",
1303
+ Temple: "Asta",
1304
+ "Around widest point": "Intorno al punto più largo",
1305
+ "Foot Length": "Lunghezza del piede",
1306
+ Shoulder: "Spalla",
1307
+ Thigh: "Coscia",
1308
+ Hip: "Fianco",
1309
+ // ── Units ──
1310
+ Millimetre: "Millimetro",
1311
+ Centimetre: "Centimetro",
1312
+ Millimeters: "Millimetri",
1313
+ // ── Fit descriptors ──
1314
+ Tight: "Stretto",
1315
+ Loose: "Largo",
1316
+ Short: "Corto",
1317
+ Long: "Lungo",
1318
+ Perfect: "Perfetto",
1319
+ "Perfect fit": "Vestibilità perfetta",
1320
+ "✓ Fit": "✓ Adatto",
1321
+ "too short": "troppo corto",
1322
+ "too long": "troppo lungo",
1323
+ "a bit short": "un po' corto",
1324
+ "a bit long": "un po' lungo",
1325
+ // ── Length pills ──
1326
+ Length: "Lunghezza",
1327
+ "Length Adjustment": "Regolazione lunghezza",
1328
+ Regular: "Regolare",
1329
+ Big: "Grande",
1330
+ "Big & Tall": "Grande & Alto",
1331
+ // ── Misc ──
1332
+ preview: "anteprima",
1333
+ // ── BodyProfileView — photo upload area (left section) ──
1334
+ "Upload your photo": "Carica la tua foto",
1335
+ "Upload a photo": "Carica una foto",
1336
+ "Click or drag a full-body photo": "Clicca o trascina una foto a figura intera",
1337
+ "Or upload a photo for AI sizing": "Oppure carica una foto per l'analisi AI",
1338
+ Photo: "Foto",
1339
+ "How to take a good photo": "Come scattare una buona foto",
1340
+ "How to take the best photo": "Come scattare la foto migliore",
1341
+ Do: "Da fare",
1342
+ "Don't": "Da evitare",
1343
+ "Quick Tip": "Suggerimento rapido",
1344
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "Più la foto è semplice, più accurati saranno i risultati della prova virtuale.",
1345
+ "Choose a plain background (a light wall is ideal)": "Scegli uno sfondo semplice (una parete chiara è ideale)",
1346
+ "Stand facing the camera with your full body in frame": "Mettiti di fronte alla fotocamera con tutto il corpo nell'inquadratura",
1347
+ "Stand straight and still, arms relaxed by your sides": "Stai dritto e fermo, con le braccia rilassate lungo i fianchi",
1348
+ "Stand with your HEELS against a wall for best accuracy": "Appoggia i TALLONI a un muro per la massima precisione",
1349
+ "Use natural or even lighting (e.g. near a window)": "Usa luce naturale o uniforme (es. vicino a una finestra)",
1350
+ "Wear fitted, simple clothing (e.g. neutral colors)": "Indossa abiti aderenti e semplici (es. colori neutri)",
1351
+ "Don't wear loose, baggy, or layered clothing": "Non indossare abiti larghi, ampi o a strati",
1352
+ "Don't sit, pose, or bend your body": "Non sederti, non posare e non piegare il corpo",
1353
+ "Don't use strong backlighting": "Non usare forte controluce",
1354
+ "Don't take mirror photos or selfies": "Non scattare foto allo specchio o selfie",
1355
+ "Don't apply filters, effects, or edits": "Non applicare filtri, effetti o modifiche",
1356
+ // ── Age gate ──
1357
+ "Are you 18 or older?": "Hai 18 anni o più?",
1358
+ Yes: "Sì",
1359
+ No: "No",
1360
+ "Please confirm your age": "Per favore conferma la tua età",
1361
+ "Please confirm that the person in the photo is 18 or older before uploading.": "Conferma che la persona nella foto ha 18 anni o più prima di caricarla.",
1362
+ "Under 18 — can't process this photo.": "Meno di 18 anni — impossibile elaborare questa foto.",
1363
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "Questa foto sembra ritrarre un minore. Carica la foto di una persona di 18 anni o più.",
1364
+ "Different photo needed": "È necessaria un'altra foto",
1365
+ "Try another photo": "Prova un'altra foto",
1366
+ // ── Photo step controls ──
1367
+ Continue: "Continua",
1368
+ "Analyze My Size": "Analizza la mia taglia",
1369
+ "Analyzing photo…": "Analisi della foto…",
1370
+ Details: "Dettagli",
1371
+ "Image must be under 10MB": "L'immagine deve essere inferiore a 10 MB",
1372
+ "Please upload an image file": "Carica un file immagine",
1373
+ "Please upload a photo": "Carica una foto",
1374
+ "Prefer not to upload a photo?": "Preferisci non caricare una foto?",
1375
+ "Enter measurements manually": "Inserisci le misure manualmente",
1376
+ "Legal Notice": "Avviso legale",
1377
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "La tua immagine verrà utilizzata per generare un'anteprima della prova virtuale che mostra come gli articoli selezionati possono apparire e calzare. Le immagini sono elaborate in modo sicuro e non vengono archiviate dopo la generazione.",
1378
+ // ── BodyProfileView — form (right section) ──
1379
+ "Body details": "Dettagli corporei",
1380
+ "Your body details": "I tuoi dettagli corporei",
1381
+ "Body Measurements": "Misure corporee",
1382
+ AGE: "ETÀ",
1383
+ years: "anni",
1384
+ "Enter your height": "Inserisci la tua altezza",
1385
+ "Enter your weight": "Inserisci il tuo peso",
1386
+ "Enter your bra size": "Inserisci la taglia del reggiseno",
1387
+ "Please enter your height": "Inserisci la tua altezza",
1388
+ "Please enter your weight": "Inserisci il tuo peso",
1389
+ "Please enter a valid height": "Inserisci un'altezza valida",
1390
+ "Please enter a valid weight": "Inserisci un peso valido",
1391
+ "Please enter a valid height (100-250 cm)": "Inserisci un'altezza valida (100-250 cm)",
1392
+ "Please enter a valid weight (30-300 kg)": "Inserisci un peso valido (30-300 kg)",
1393
+ "Please select both band and cup size": "Seleziona sia la circonferenza che la coppa",
1394
+ "Select your bra size": "Seleziona la taglia del reggiseno",
1395
+ BAND: "FASCIA",
1396
+ "BAND SIZE": "MISURA FASCIA",
1397
+ CUP: "COPPA",
1398
+ "CUP SIZE": "MISURA COPPA",
1399
+ "BRA REGION": "REGIONE REGGISENO",
1400
+ Imperial: "Imperiale",
1401
+ Metric: "Metrico",
1402
+ "These calibrate the AI — all required.": "Questi calibrano l'IA — tutti obbligatori.",
1403
+ Using: "In uso",
1404
+ "start fresh": "ricomincia",
1405
+ Close: "Chiudi",
1406
+ // ── Body shape questions ──
1407
+ "Which best describes your chest?": "Quale descrive meglio il tuo petto?",
1408
+ "WHICH BEST DESCRIBES YOUR CHEST?": "QUALE DESCRIVE MEGLIO IL TUO PETTO?",
1409
+ "Which best describes your hips?": "Quale descrive meglio i tuoi fianchi?",
1410
+ "WHICH BEST DESCRIBES YOUR HIPS?": "QUALE DESCRIVE MEGLIO I TUOI FIANCHI?",
1411
+ "Which best describes your midsection?": "Quale descrive meglio la tua vita?",
1412
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "QUALE DESCRIVE MEGLIO LA TUA VITA?",
1413
+ "Which best describes your seat?": "Quale descrive meglio il tuo lato B?",
1414
+ "WHICH BEST DESCRIBES YOUR SEAT?": "QUALE DESCRIVE MEGLIO IL TUO LATO B?",
1415
+ Average: "Media",
1416
+ Narrow: "Stretto",
1417
+ Broad: "Ampio",
1418
+ Curvy: "Curvilineo",
1419
+ "A slimmer, narrower chest build": "Un petto più snello e stretto",
1420
+ "A moderate, proportionate chest": "Un petto moderato e proporzionato",
1421
+ "A wider, more muscular chest": "Un petto più ampio e muscoloso",
1422
+ "A flatter midsection with minimal protrusion": "Una vita più piatta con minima protrusione",
1423
+ "A moderate, natural midsection shape": "Una vita moderata e naturale",
1424
+ "A fuller, more rounded midsection": "Una vita più piena e arrotondata",
1425
+ "A flatter backside with less projection": "Un lato B più piatto e meno proiettato",
1426
+ "A moderate, natural backside shape": "Un lato B moderato e naturale",
1427
+ "A fuller, more rounded backside": "Un lato B più pieno e arrotondato"
1428
+ }, B = {
1429
+ "Virtual Try-On": "Provador Virtual",
1430
+ "Find Your Size & See It On You": "Encontre seu tamanho e experimente",
1431
+ "Get the perfect fit, then try it on virtually": "Encontre o caimento perfeito e experimente virtualmente",
1432
+ "Get Your Size": "Seu tamanho",
1433
+ "Instant fit recommendation": "Recomendação de caimento instantânea",
1434
+ "Try It On": "Experimentar",
1435
+ "See how it looks on you": "Veja como fica em você",
1436
+ "Find My Size": "Encontrar meu tamanho",
1437
+ "Takes less than a minute": "Leva menos de um minuto",
1438
+ "Upload a full body photo": "Envie uma foto de corpo inteiro",
1439
+ "JPEG, PNG or WebP (max 10MB)": "JPEG, PNG ou WebP (máx. 10MB)",
1440
+ "Your photo": "Sua foto",
1441
+ "Let's find your best fit": "Vamos encontrar seu melhor caimento",
1442
+ Centimeters: "Centímetros",
1443
+ Inches: "Polegadas",
1444
+ "Load saved profile...": "Carregar perfil salvo...",
1445
+ HEIGHT: "ALTURA",
1446
+ WEIGHT: "PESO",
1447
+ feet: "pés",
1448
+ inches: "polegadas",
1449
+ cm: "cm",
1450
+ kg: "kg",
1451
+ lbs: "libras",
1452
+ in: "pol",
1453
+ "How to measure": "Como medir",
1454
+ "Hide guide": "Ocultar guia",
1455
+ "I know my measurements": "Sei minhas medidas",
1456
+ "Not sure? Use height & weight instead": "Não tem certeza? Use altura e peso",
1457
+ "Please fill in height and weight": "Por favor, preencha altura e peso",
1458
+ "Please fill in all required fields": "Por favor, preencha todos os campos obrigatórios",
1459
+ Next: "Próximo",
1460
+ "Analyzing your size...": "Analisando seu tamanho...",
1461
+ "RECOMMENDED SIZE": "TAMANHO RECOMENDADO",
1462
+ "NOT RECOMMENDED": "NÃO RECOMENDADO",
1463
+ "Edit measurements": "Editar medidas",
1464
+ "Size guide": "Guia de tamanhos",
1465
+ "Your fit": "Seu caimento",
1466
+ "Your measure": "Sua medida",
1467
+ "perfect fit": "caimento perfeito",
1468
+ "too tight": "muito apertado",
1469
+ tight: "apertado",
1470
+ "a bit tight": "um pouco apertado",
1471
+ "too loose": "muito folgado",
1472
+ loose: "folgado",
1473
+ "a bit loose": "um pouco folgado",
1474
+ "See fit on your photo": "Ver caimento na sua foto",
1475
+ "Hide visual fit": "Ocultar caimento visual",
1476
+ "Analyzing...": "Analisando...",
1477
+ "Try it on": "Experimentar",
1478
+ "SIZE CHART": "TABELA DE TAMANHOS",
1479
+ "YOUR ESTIMATED MEASUREMENTS": "SUAS MEDIDAS ESTIMADAS",
1480
+ Edit: "Editar",
1481
+ Download: "Baixar",
1482
+ "Size chart": "Tabela de tamanhos",
1483
+ "Preparing your image...": "Preparando sua imagem...",
1484
+ "Analyzing body proportions...": "Analisando proporções corporais...",
1485
+ "Matching garment to your photo...": "Ajustando a peça à sua foto...",
1486
+ "Generating virtual try-on...": "Gerando provador virtual...",
1487
+ "Refining details...": "Refinando detalhes...",
1488
+ "Almost there...": "Quase lá...",
1489
+ "Complete!": "Concluído!",
1490
+ "This usually takes 15-25 seconds": "Isso geralmente leva 15-25 segundos",
1491
+ "Something went wrong": "Algo deu errado",
1492
+ "Try Again": "Tentar novamente",
1493
+ "SDK not configured. Please provide an API key.": "SDK não configurado. Forneça uma chave API.",
1494
+ "Please upload a JPEG, PNG, or WebP image.": "Envie uma imagem JPEG, PNG ou WebP.",
1495
+ "Image must be under 10MB.": "A imagem deve ter menos de 10MB.",
1496
+ "Try-on generation failed": "Falha na geração da prova",
1497
+ "Failed to start try-on": "Falha ao iniciar a prova",
1498
+ "No product image found. Please set the product-image attribute.": "Imagem do produto não encontrada. Defina o atributo product-image.",
1499
+ "Powered by": "Desenvolvido por",
1500
+ "My Profiles": "Meus Perfis",
1501
+ History: "Histórico",
1502
+ "No saved profiles yet.": "Nenhum perfil salvo.",
1503
+ "No history yet.": "Sem histórico.",
1504
+ Product: "Produto",
1505
+ "Women's": "Feminino",
1506
+ "Men's": "Masculino",
1507
+ Profiles: "Perfis",
1508
+ "Women's Profile": "Perfil Feminino",
1509
+ "Men's Profile": "Perfil Masculino",
1510
+ Height: "Altura",
1511
+ Weight: "Peso",
1512
+ Chest: "Peito",
1513
+ Bust: "Busto",
1514
+ Waist: "Cintura",
1515
+ Hips: "Quadril",
1516
+ Shoulders: "Ombros",
1517
+ Sleeve: "Manga",
1518
+ Inseam: "Entrepernas",
1519
+ Neck: "Pescoço",
1520
+ Foot: "Pé",
1521
+ "Shoe EU": "Calçado EU",
1522
+ "Shoe US": "Calçado US",
1523
+ "Shoe UK": "Calçado UK",
1524
+ Saved: "Salvo",
1525
+ "Delete Profile": "Excluir Perfil",
1526
+ "Shoe size (US)": "Tamanho do calçado (US)",
1527
+ "Shoe size (UK)": "Tamanho do calçado (UK)",
1528
+ "Shoe size (EU)": "Tamanho do calçado (EU)",
1529
+ "Generating...": "Gerando...",
1530
+ "Foot length": "Comprimento do pé",
1531
+ Size: "Tamanho",
1532
+ "Try on size": "Experimentar tamanho",
1533
+ "e.g.": "ex.",
1534
+ "Drop your photo here or click to upload": "Arraste sua foto aqui ou clique para enviar",
1535
+ "This usually takes 15-20 seconds": "Isso geralmente leva 15-20 segundos",
1536
+ "Try-on result": "Resultado da prova",
1537
+ "Try Another": "Tentar outra",
1538
+ Back: "Voltar",
1539
+ You: "Você",
1540
+ Garment: "Peça",
1541
+ "Your Height": "Sua Altura",
1542
+ "Your Weight": "Seu Peso",
1543
+ "Drag or scroll to set your height": "Arraste ou role para definir sua altura",
1544
+ "Drag or scroll to set your weight": "Arraste ou role para definir seu peso",
1545
+ "Enter height and weight first": "Insira primeiro altura e peso",
1546
+ // ── Field labels ──
1547
+ "Lens Width": "Largura da lente",
1548
+ Bridge: "Ponte",
1549
+ "Arm Length": "Comprimento da haste",
1550
+ "Head Circumference": "Circunferência da cabeça",
1551
+ "Face Width": "Largura do rosto",
1552
+ Temple: "Haste",
1553
+ "Around widest point": "Em torno do ponto mais largo",
1554
+ "Foot Length": "Comprimento do pé",
1555
+ Shoulder: "Ombro",
1556
+ Thigh: "Coxa",
1557
+ Hip: "Quadril",
1558
+ // ── Units ──
1559
+ Millimetre: "Milímetro",
1560
+ Centimetre: "Centímetro",
1561
+ Millimeters: "Milímetros",
1562
+ // ── Fit descriptors ──
1563
+ Tight: "Apertado",
1564
+ Loose: "Folgado",
1565
+ Short: "Curto",
1566
+ Long: "Longo",
1567
+ Perfect: "Perfeito",
1568
+ "Perfect fit": "Caimento perfeito",
1569
+ "✓ Fit": "✓ Caimento",
1570
+ "too short": "muito curto",
1571
+ "too long": "muito longo",
1572
+ "a bit short": "um pouco curto",
1573
+ "a bit long": "um pouco longo",
1574
+ // ── Length pills ──
1575
+ Length: "Comprimento",
1576
+ "Length Adjustment": "Ajuste de comprimento",
1577
+ Regular: "Regular",
1578
+ Big: "Grande",
1579
+ "Big & Tall": "Grande & Alto",
1580
+ // ── Misc ──
1581
+ preview: "pré-visualização",
1582
+ // ── BodyProfileView — photo upload area (left section) ──
1583
+ "Upload your photo": "Envie sua foto",
1584
+ "Upload a photo": "Enviar uma foto",
1585
+ "Click or drag a full-body photo": "Clique ou arraste uma foto de corpo inteiro",
1586
+ "Or upload a photo for AI sizing": "Ou envie uma foto para análise por IA",
1587
+ Photo: "Foto",
1588
+ "How to take a good photo": "Como tirar uma boa foto",
1589
+ "How to take the best photo": "Como tirar a melhor foto",
1590
+ Do: "Faça",
1591
+ "Don't": "Não faça",
1592
+ "Quick Tip": "Dica rápida",
1593
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "Quanto mais simples for sua foto, mais precisos serão os resultados da prova virtual.",
1594
+ "Choose a plain background (a light wall is ideal)": "Escolha um fundo liso (uma parede clara é ideal)",
1595
+ "Stand facing the camera with your full body in frame": "Fique de frente para a câmera com o corpo inteiro no enquadramento",
1596
+ "Stand straight and still, arms relaxed by your sides": "Fique reto e parado, com os braços relaxados ao lado do corpo",
1597
+ "Stand with your HEELS against a wall for best accuracy": "Fique com os CALCANHARES contra a parede para maior precisão",
1598
+ "Use natural or even lighting (e.g. near a window)": "Use luz natural ou uniforme (ex.: perto de uma janela)",
1599
+ "Wear fitted, simple clothing (e.g. neutral colors)": "Use roupas justas e simples (ex.: cores neutras)",
1600
+ "Don't wear loose, baggy, or layered clothing": "Não use roupas largas, folgadas ou sobrepostas",
1601
+ "Don't sit, pose, or bend your body": "Não sente, pose ou dobre o corpo",
1602
+ "Don't use strong backlighting": "Não use contraluz forte",
1603
+ "Don't take mirror photos or selfies": "Não tire fotos de espelho ou selfies",
1604
+ "Don't apply filters, effects, or edits": "Não aplique filtros, efeitos ou edições",
1605
+ // ── Age gate ──
1606
+ "Are you 18 or older?": "Você tem 18 anos ou mais?",
1607
+ Yes: "Sim",
1608
+ No: "Não",
1609
+ "Please confirm your age": "Por favor, confirme sua idade",
1610
+ "Please confirm that the person in the photo is 18 or older before uploading.": "Confirme que a pessoa na foto tem 18 anos ou mais antes de enviar.",
1611
+ "Under 18 — can't process this photo.": "Menor de 18 — não é possível processar esta foto.",
1612
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "Esta foto parece ser de um menor. Envie uma foto de alguém com 18 anos ou mais.",
1613
+ "Different photo needed": "Outra foto é necessária",
1614
+ "Try another photo": "Tente outra foto",
1615
+ // ── Photo step controls ──
1616
+ Continue: "Continuar",
1617
+ "Analyze My Size": "Analisar meu tamanho",
1618
+ "Analyzing photo…": "Analisando foto…",
1619
+ Details: "Detalhes",
1620
+ "Image must be under 10MB": "A imagem deve ter menos de 10 MB",
1621
+ "Please upload an image file": "Envie um arquivo de imagem",
1622
+ "Please upload a photo": "Envie uma foto",
1623
+ "Prefer not to upload a photo?": "Prefere não enviar uma foto?",
1624
+ "Enter measurements manually": "Inserir medidas manualmente",
1625
+ "Legal Notice": "Aviso Legal",
1626
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "Sua imagem será usada para gerar uma prévia da prova virtual mostrando como os itens selecionados podem aparecer e caber. As imagens são processadas com segurança e não são armazenadas após a geração.",
1627
+ // ── BodyProfileView — form (right section) ──
1628
+ "Body details": "Detalhes do corpo",
1629
+ "Your body details": "Seus detalhes corporais",
1630
+ "Body Measurements": "Medidas corporais",
1631
+ AGE: "IDADE",
1632
+ years: "anos",
1633
+ "Enter your height": "Insira sua altura",
1634
+ "Enter your weight": "Insira seu peso",
1635
+ "Enter your bra size": "Insira o tamanho do sutiã",
1636
+ "Please enter your height": "Insira sua altura",
1637
+ "Please enter your weight": "Insira seu peso",
1638
+ "Please enter a valid height": "Insira uma altura válida",
1639
+ "Please enter a valid weight": "Insira um peso válido",
1640
+ "Please enter a valid height (100-250 cm)": "Insira uma altura válida (100-250 cm)",
1641
+ "Please enter a valid weight (30-300 kg)": "Insira um peso válido (30-300 kg)",
1642
+ "Please select both band and cup size": "Selecione o tamanho da faixa e do bojo",
1643
+ "Select your bra size": "Selecione o tamanho do sutiã",
1644
+ BAND: "FAIXA",
1645
+ "BAND SIZE": "TAMANHO DA FAIXA",
1646
+ CUP: "BOJO",
1647
+ "CUP SIZE": "TAMANHO DO BOJO",
1648
+ "BRA REGION": "REGIÃO DO SUTIÃ",
1649
+ Imperial: "Imperial",
1650
+ Metric: "Métrico",
1651
+ "These calibrate the AI — all required.": "Estes calibram a IA — todos obrigatórios.",
1652
+ Using: "Usando",
1653
+ "start fresh": "começar de novo",
1654
+ Close: "Fechar",
1655
+ // ── Body shape questions ──
1656
+ "Which best describes your chest?": "Qual descreve melhor seu peito?",
1657
+ "WHICH BEST DESCRIBES YOUR CHEST?": "QUAL DESCREVE MELHOR SEU PEITO?",
1658
+ "Which best describes your hips?": "Qual descreve melhor seus quadris?",
1659
+ "WHICH BEST DESCRIBES YOUR HIPS?": "QUAL DESCREVE MELHOR SEUS QUADRIS?",
1660
+ "Which best describes your midsection?": "Qual descreve melhor sua cintura?",
1661
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "QUAL DESCREVE MELHOR SUA CINTURA?",
1662
+ "Which best describes your seat?": "Qual descreve melhor seu traseiro?",
1663
+ "WHICH BEST DESCRIBES YOUR SEAT?": "QUAL DESCREVE MELHOR SEU TRASEIRO?",
1664
+ Average: "Média",
1665
+ Narrow: "Estreito",
1666
+ Broad: "Largo",
1667
+ Curvy: "Curvilíneo",
1668
+ "A slimmer, narrower chest build": "Um peito mais magro e estreito",
1669
+ "A moderate, proportionate chest": "Um peito moderado e proporcional",
1670
+ "A wider, more muscular chest": "Um peito mais largo e musculoso",
1671
+ "A flatter midsection with minimal protrusion": "Uma cintura mais plana com mínima protuberância",
1672
+ "A moderate, natural midsection shape": "Uma cintura moderada e natural",
1673
+ "A fuller, more rounded midsection": "Uma cintura mais cheia e arredondada",
1674
+ "A flatter backside with less projection": "Um traseiro mais plano com menos projeção",
1675
+ "A moderate, natural backside shape": "Um traseiro moderado e natural",
1676
+ "A fuller, more rounded backside": "Um traseiro mais cheio e arredondado"
1677
+ }, H = {
1678
+ "Virtual Try-On": "バーチャル試着",
1679
+ "Find Your Size & See It On You": "あなたのサイズを見つけて試着",
1680
+ "Get the perfect fit, then try it on virtually": "最適なフィットを見つけて、バーチャルで試着しましょう",
1681
+ "Get Your Size": "サイズを確認",
1682
+ "Instant fit recommendation": "瞬時にフィット提案",
1683
+ "Try It On": "試着する",
1684
+ "See how it looks on you": "自分に似合うか確認",
1685
+ "Find My Size": "自分のサイズを見つける",
1686
+ "Takes less than a minute": "1分もかかりません",
1687
+ "Upload a full body photo": "全身写真をアップロード",
1688
+ "JPEG, PNG or WebP (max 10MB)": "JPEG、PNG、WebP(最大10MB)",
1689
+ "Your photo": "あなたの写真",
1690
+ "Let's find your best fit": "最適なフィットを見つけましょう",
1691
+ Centimeters: "センチメートル",
1692
+ Inches: "インチ",
1693
+ "Load saved profile...": "保存済みプロファイルを読み込む...",
1694
+ HEIGHT: "身長",
1695
+ WEIGHT: "体重",
1696
+ feet: "フィート",
1697
+ inches: "インチ",
1698
+ cm: "cm",
1699
+ kg: "kg",
1700
+ lbs: "ポンド",
1701
+ in: "インチ",
1702
+ "How to measure": "測り方",
1703
+ "Hide guide": "ガイドを隠す",
1704
+ "I know my measurements": "自分の寸法を知っています",
1705
+ "Not sure? Use height & weight instead": "分からない場合は身長と体重で",
1706
+ "Please fill in height and weight": "身長と体重を入力してください",
1707
+ "Please fill in all required fields": "すべての必須項目を入力してください",
1708
+ Next: "次へ",
1709
+ "Analyzing your size...": "サイズを分析中...",
1710
+ "RECOMMENDED SIZE": "推奨サイズ",
1711
+ "NOT RECOMMENDED": "非推奨",
1712
+ "Edit measurements": "寸法を編集",
1713
+ "Size guide": "サイズガイド",
1714
+ "Your fit": "あなたのフィット",
1715
+ "Your measure": "あなたの寸法",
1716
+ "perfect fit": "ぴったり",
1717
+ "too tight": "きつすぎる",
1718
+ tight: "きつい",
1719
+ "a bit tight": "少しきつい",
1720
+ "too loose": "ゆるすぎる",
1721
+ loose: "ゆるい",
1722
+ "a bit loose": "少しゆるい",
1723
+ "See fit on your photo": "写真でフィットを確認",
1724
+ "Hide visual fit": "フィット表示を隠す",
1725
+ "Analyzing...": "分析中...",
1726
+ "Try it on": "試着する",
1727
+ "SIZE CHART": "サイズ表",
1728
+ "YOUR ESTIMATED MEASUREMENTS": "推定寸法",
1729
+ Edit: "編集",
1730
+ Download: "ダウンロード",
1731
+ "Size chart": "サイズ表",
1732
+ "Preparing your image...": "画像を準備中...",
1733
+ "Analyzing body proportions...": "体型を分析中...",
1734
+ "Matching garment to your photo...": "衣類を写真に合わせています...",
1735
+ "Generating virtual try-on...": "バーチャル試着を生成中...",
1736
+ "Refining details...": "細部を調整中...",
1737
+ "Almost there...": "もう少しです...",
1738
+ "Complete!": "完了!",
1739
+ "This usually takes 15-25 seconds": "通常15〜25秒かかります",
1740
+ "Something went wrong": "エラーが発生しました",
1741
+ "Try Again": "もう一度試す",
1742
+ "SDK not configured. Please provide an API key.": "SDKが設定されていません。APIキーを入力してください。",
1743
+ "Please upload a JPEG, PNG, or WebP image.": "JPEG、PNG、WebP画像をアップロードしてください。",
1744
+ "Image must be under 10MB.": "画像は10MB以下にしてください。",
1745
+ "Try-on generation failed": "試着の生成に失敗しました",
1746
+ "Failed to start try-on": "試着の開始に失敗しました",
1747
+ "No product image found. Please set the product-image attribute.": "商品画像が見つかりません。product-image属性を設定してください。",
1748
+ "Powered by": "Powered by",
1749
+ "My Profiles": "マイプロファイル",
1750
+ History: "履歴",
1751
+ "No saved profiles yet.": "保存済みプロファイルはありません。",
1752
+ "No history yet.": "履歴はまだありません。",
1753
+ Product: "商品",
1754
+ "Women's": "レディース",
1755
+ "Men's": "メンズ",
1756
+ Profiles: "プロファイル",
1757
+ "Women's Profile": "レディースプロファイル",
1758
+ "Men's Profile": "メンズプロファイル",
1759
+ Height: "身長",
1760
+ Weight: "体重",
1761
+ Chest: "胸囲",
1762
+ Bust: "バスト",
1763
+ Waist: "ウエスト",
1764
+ Hips: "ヒップ",
1765
+ Shoulders: "肩幅",
1766
+ Sleeve: "袖丈",
1767
+ Inseam: "股下",
1768
+ Neck: "首周り",
1769
+ Foot: "足",
1770
+ "Shoe EU": "靴 EU",
1771
+ "Shoe US": "靴 US",
1772
+ "Shoe UK": "靴 UK",
1773
+ Saved: "保存済み",
1774
+ "Delete Profile": "プロファイルを削除",
1775
+ "Shoe size (US)": "靴のサイズ(US)",
1776
+ "Shoe size (UK)": "靴のサイズ(UK)",
1777
+ "Shoe size (EU)": "靴のサイズ(EU)",
1778
+ "Generating...": "生成中...",
1779
+ "Foot length": "足の長さ",
1780
+ Size: "サイズ",
1781
+ "Try on size": "サイズを試着",
1782
+ "e.g.": "例",
1783
+ "Drop your photo here or click to upload": "ここに写真をドロップまたはクリックしてアップロード",
1784
+ "This usually takes 15-20 seconds": "通常15〜20秒かかります",
1785
+ "Try-on result": "試着結果",
1786
+ "Try Another": "別のものを試す",
1787
+ Back: "戻る",
1788
+ You: "あなた",
1789
+ Garment: "衣類",
1790
+ "Your Height": "身長",
1791
+ "Your Weight": "体重",
1792
+ "Drag or scroll to set your height": "ドラッグまたはスクロールで身長を設定",
1793
+ "Drag or scroll to set your weight": "ドラッグまたはスクロールで体重を設定",
1794
+ "Enter height and weight first": "先に身長と体重を入力してください",
1795
+ // ── Field labels ──
1796
+ "Lens Width": "レンズ幅",
1797
+ Bridge: "ブリッジ",
1798
+ "Arm Length": "テンプル長",
1799
+ "Head Circumference": "頭囲",
1800
+ "Face Width": "顔幅",
1801
+ Temple: "テンプル",
1802
+ "Around widest point": "最も広い部分の周囲",
1803
+ "Foot Length": "足長",
1804
+ Shoulder: "肩幅",
1805
+ Thigh: "太もも",
1806
+ Hip: "ヒップ",
1807
+ // ── Units ──
1808
+ Millimetre: "ミリメートル",
1809
+ Centimetre: "センチメートル",
1810
+ Millimeters: "ミリメートル",
1811
+ // ── Fit descriptors ──
1812
+ Tight: "きつい",
1813
+ Loose: "ゆるい",
1814
+ Short: "短い",
1815
+ Long: "長い",
1816
+ Perfect: "ぴったり",
1817
+ "Perfect fit": "ぴったりフィット",
1818
+ "✓ Fit": "✓ フィット",
1819
+ "too short": "短すぎる",
1820
+ "too long": "長すぎる",
1821
+ "a bit short": "少し短い",
1822
+ "a bit long": "少し長い",
1823
+ // ── Length pills ──
1824
+ Length: "丈",
1825
+ "Length Adjustment": "丈の調整",
1826
+ Regular: "レギュラー",
1827
+ Big: "ビッグ",
1828
+ "Big & Tall": "ビッグ & トール",
1829
+ // ── Misc ──
1830
+ preview: "プレビュー",
1831
+ // ── BodyProfileView — photo upload area (left section) ──
1832
+ "Upload your photo": "写真をアップロード",
1833
+ "Upload a photo": "写真をアップロード",
1834
+ "Click or drag a full-body photo": "全身写真をクリックまたはドラッグしてください",
1835
+ "Or upload a photo for AI sizing": "またはAIサイジング用の写真をアップロード",
1836
+ Photo: "写真",
1837
+ "How to take a good photo": "良い写真の撮り方",
1838
+ "How to take the best photo": "最適な写真の撮り方",
1839
+ Do: "推奨事項",
1840
+ "Don't": "避けるべき",
1841
+ "Quick Tip": "ワンポイント",
1842
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "シンプルな写真ほど、バーチャル試着の精度が高まります。",
1843
+ "Choose a plain background (a light wall is ideal)": "無地の背景を選んでください(明るい壁が理想的)",
1844
+ "Stand facing the camera with your full body in frame": "全身が写るようにカメラに正対して立ってください",
1845
+ "Stand straight and still, arms relaxed by your sides": "まっすぐ静止し、腕を自然に脇に下ろしてください",
1846
+ "Stand with your HEELS against a wall for best accuracy": "精度を高めるためにかかとを壁につけて立ってください",
1847
+ "Use natural or even lighting (e.g. near a window)": "自然光または均一な照明を使用してください(例:窓の近く)",
1848
+ "Wear fitted, simple clothing (e.g. neutral colors)": "体にフィットしたシンプルな服を着てください(例:無地の色)",
1849
+ "Don't wear loose, baggy, or layered clothing": "ゆったりした服や重ね着は避けてください",
1850
+ "Don't sit, pose, or bend your body": "座ったり、ポーズを取ったり、体を曲げたりしないでください",
1851
+ "Don't use strong backlighting": "強い逆光を使用しないでください",
1852
+ "Don't take mirror photos or selfies": "鏡越しや自撮りは避けてください",
1853
+ "Don't apply filters, effects, or edits": "フィルターやエフェクト、加工は加えないでください",
1854
+ // ── Age gate ──
1855
+ "Are you 18 or older?": "18歳以上ですか?",
1856
+ Yes: "はい",
1857
+ No: "いいえ",
1858
+ "Please confirm your age": "年齢を確認してください",
1859
+ "Please confirm that the person in the photo is 18 or older before uploading.": "アップロードする前に、写真の人物が18歳以上であることを確認してください。",
1860
+ "Under 18 — can't process this photo.": "18歳未満です — この写真は処理できません。",
1861
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "この写真は未成年者のようです。18歳以上の人物の写真をアップロードしてください。",
1862
+ "Different photo needed": "別の写真が必要です",
1863
+ "Try another photo": "別の写真をお試しください",
1864
+ // ── Photo step controls ──
1865
+ Continue: "続ける",
1866
+ "Analyze My Size": "サイズを分析",
1867
+ "Analyzing photo…": "写真を分析中…",
1868
+ Details: "詳細",
1869
+ "Image must be under 10MB": "画像は10MB以下である必要があります",
1870
+ "Please upload an image file": "画像ファイルをアップロードしてください",
1871
+ "Please upload a photo": "写真をアップロードしてください",
1872
+ "Prefer not to upload a photo?": "写真をアップロードしませんか?",
1873
+ "Enter measurements manually": "手動でサイズを入力",
1874
+ "Legal Notice": "法的通知",
1875
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "あなたの画像は、選択したアイテムの見え方とフィット感を示すバーチャル試着プレビューを生成するために使用されます。画像は安全に処理され、生成後は保存されません。",
1876
+ // ── BodyProfileView — form (right section) ──
1877
+ "Body details": "体型情報",
1878
+ "Your body details": "あなたの体型情報",
1879
+ "Body Measurements": "サイズ",
1880
+ AGE: "年齢",
1881
+ years: "歳",
1882
+ "Enter your height": "身長を入力してください",
1883
+ "Enter your weight": "体重を入力してください",
1884
+ "Enter your bra size": "ブラのサイズを入力してください",
1885
+ "Please enter your height": "身長を入力してください",
1886
+ "Please enter your weight": "体重を入力してください",
1887
+ "Please enter a valid height": "有効な身長を入力してください",
1888
+ "Please enter a valid weight": "有効な体重を入力してください",
1889
+ "Please enter a valid height (100-250 cm)": "有効な身長を入力してください(100-250 cm)",
1890
+ "Please enter a valid weight (30-300 kg)": "有効な体重を入力してください(30-300 kg)",
1891
+ "Please select both band and cup size": "アンダーとカップのサイズを選択してください",
1892
+ "Select your bra size": "ブラのサイズを選択してください",
1893
+ BAND: "アンダー",
1894
+ "BAND SIZE": "アンダーサイズ",
1895
+ CUP: "カップ",
1896
+ "CUP SIZE": "カップサイズ",
1897
+ "BRA REGION": "ブラ地域",
1898
+ Imperial: "ヤード・ポンド法",
1899
+ Metric: "メートル法",
1900
+ "These calibrate the AI — all required.": "これらはAIを較正するための必須項目です。",
1901
+ Using: "使用中",
1902
+ "start fresh": "最初からやり直す",
1903
+ Close: "閉じる",
1904
+ // ── Body shape questions ──
1905
+ "Which best describes your chest?": "胸の特徴に最も近いものは?",
1906
+ "WHICH BEST DESCRIBES YOUR CHEST?": "胸の特徴に最も近いものは?",
1907
+ "Which best describes your hips?": "ヒップの特徴に最も近いものは?",
1908
+ "WHICH BEST DESCRIBES YOUR HIPS?": "ヒップの特徴に最も近いものは?",
1909
+ "Which best describes your midsection?": "ウエストの特徴に最も近いものは?",
1910
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "ウエストの特徴に最も近いものは?",
1911
+ "Which best describes your seat?": "おしりの特徴に最も近いものは?",
1912
+ "WHICH BEST DESCRIBES YOUR SEAT?": "おしりの特徴に最も近いものは?",
1913
+ Average: "平均",
1914
+ Narrow: "細い",
1915
+ Broad: "広い",
1916
+ Curvy: "曲線的",
1917
+ "A slimmer, narrower chest build": "細くてスリムな胸",
1918
+ "A moderate, proportionate chest": "標準的でバランスの良い胸",
1919
+ "A wider, more muscular chest": "広く筋肉質な胸",
1920
+ "A flatter midsection with minimal protrusion": "出っ張りが少ない平らなウエスト",
1921
+ "A moderate, natural midsection shape": "標準的で自然なウエスト",
1922
+ "A fuller, more rounded midsection": "丸みのあるふくよかなウエスト",
1923
+ "A flatter backside with less projection": "突出の少ない平らなおしり",
1924
+ "A moderate, natural backside shape": "標準的で自然なおしり",
1925
+ "A fuller, more rounded backside": "丸みのあるふくよかなおしり"
1926
+ }, R = {
1927
+ "Virtual Try-On": "虚拟试穿",
1928
+ "Find Your Size & See It On You": "找到你的尺码并试穿",
1929
+ "Get the perfect fit, then try it on virtually": "找到最佳合身度,然后虚拟试穿",
1930
+ "Get Your Size": "获取尺码",
1931
+ "Instant fit recommendation": "即时合身推荐",
1932
+ "Try It On": "试穿",
1933
+ "See how it looks on you": "看看穿在你身上的效果",
1934
+ "Find My Size": "找到我的尺码",
1935
+ "Takes less than a minute": "不到一分钟",
1936
+ "Upload a full body photo": "上传全身照",
1937
+ "JPEG, PNG or WebP (max 10MB)": "JPEG、PNG 或 WebP(最大10MB)",
1938
+ "Your photo": "你的照片",
1939
+ "Let's find your best fit": "找到最适合你的尺码",
1940
+ Centimeters: "厘米",
1941
+ Inches: "英寸",
1942
+ "Load saved profile...": "加载已保存的档案...",
1943
+ HEIGHT: "身高",
1944
+ WEIGHT: "体重",
1945
+ feet: "英尺",
1946
+ inches: "英寸",
1947
+ cm: "厘米",
1948
+ kg: "公斤",
1949
+ lbs: "磅",
1950
+ in: "英寸",
1951
+ "How to measure": "如何测量",
1952
+ "Hide guide": "隐藏指南",
1953
+ "I know my measurements": "我知道我的尺寸",
1954
+ "Not sure? Use height & weight instead": "不确定?使用身高和体重",
1955
+ "Please fill in height and weight": "请填写身高和体重",
1956
+ "Please fill in all required fields": "请填写所有必填项",
1957
+ Next: "下一步",
1958
+ "Analyzing your size...": "正在分析你的尺码...",
1959
+ "RECOMMENDED SIZE": "推荐尺码",
1960
+ "NOT RECOMMENDED": "不推荐",
1961
+ "Edit measurements": "编辑尺寸",
1962
+ "Size guide": "尺码指南",
1963
+ "Your fit": "你的合身度",
1964
+ "Your measure": "你的尺寸",
1965
+ "perfect fit": "完美合身",
1966
+ "too tight": "太紧",
1967
+ tight: "偏紧",
1968
+ "a bit tight": "略紧",
1969
+ "too loose": "太松",
1970
+ loose: "偏松",
1971
+ "a bit loose": "略松",
1972
+ "See fit on your photo": "在照片上查看合身度",
1973
+ "Hide visual fit": "隐藏合身显示",
1974
+ "Analyzing...": "分析中...",
1975
+ "Try it on": "试穿",
1976
+ "SIZE CHART": "尺码表",
1977
+ "YOUR ESTIMATED MEASUREMENTS": "你的预估尺寸",
1978
+ Edit: "编辑",
1979
+ Download: "下载",
1980
+ "Size chart": "尺码表",
1981
+ "Preparing your image...": "正在准备图片...",
1982
+ "Analyzing body proportions...": "正在分析体型...",
1983
+ "Matching garment to your photo...": "正在将服装匹配到照片...",
1984
+ "Generating virtual try-on...": "正在生成虚拟试穿...",
1985
+ "Refining details...": "正在优化细节...",
1986
+ "Almost there...": "即将完成...",
1987
+ "Complete!": "完成!",
1988
+ "This usually takes 15-25 seconds": "通常需要15-25秒",
1989
+ "Something went wrong": "出错了",
1990
+ "Try Again": "重试",
1991
+ "SDK not configured. Please provide an API key.": "SDK未配置,请提供API密钥。",
1992
+ "Please upload a JPEG, PNG, or WebP image.": "请上传JPEG、PNG或WebP图片。",
1993
+ "Image must be under 10MB.": "图片必须小于10MB。",
1994
+ "Try-on generation failed": "试穿生成失败",
1995
+ "Failed to start try-on": "无法开始试穿",
1996
+ "No product image found. Please set the product-image attribute.": "未找到商品图片,请设置product-image属性。",
1997
+ "Powered by": "技术支持",
1998
+ "My Profiles": "我的档案",
1999
+ History: "历史记录",
2000
+ "No saved profiles yet.": "还没有保存的档案。",
2001
+ "No history yet.": "还没有历史记录。",
2002
+ Product: "商品",
2003
+ "Women's": "女装",
2004
+ "Men's": "男装",
2005
+ Profiles: "档案",
2006
+ "Women's Profile": "女性档案",
2007
+ "Men's Profile": "男性档案",
2008
+ Height: "身高",
2009
+ Weight: "体重",
2010
+ Chest: "胸围",
2011
+ Bust: "胸围",
2012
+ Waist: "腰围",
2013
+ Hips: "臀围",
2014
+ Shoulders: "肩宽",
2015
+ Sleeve: "袖长",
2016
+ Inseam: "内缝",
2017
+ Neck: "颈围",
2018
+ Foot: "脚",
2019
+ "Shoe EU": "鞋码 EU",
2020
+ "Shoe US": "鞋码 US",
2021
+ "Shoe UK": "鞋码 UK",
2022
+ Saved: "已保存",
2023
+ "Delete Profile": "删除档案",
2024
+ "Shoe size (US)": "鞋码(US)",
2025
+ "Shoe size (UK)": "鞋码(UK)",
2026
+ "Shoe size (EU)": "鞋码(EU)",
2027
+ "Generating...": "生成中...",
2028
+ "Foot length": "脚长",
2029
+ Size: "尺码",
2030
+ "Try on size": "试穿尺码",
2031
+ "e.g.": "例如",
2032
+ "Drop your photo here or click to upload": "将照片拖放到此处或点击上传",
2033
+ "This usually takes 15-20 seconds": "通常需要15-20秒",
2034
+ "Try-on result": "试穿结果",
2035
+ "Try Another": "再试一次",
2036
+ Back: "返回",
2037
+ You: "你的",
2038
+ Garment: "服装",
2039
+ "Your Height": "你的身高",
2040
+ "Your Weight": "你的体重",
2041
+ "Drag or scroll to set your height": "拖动或滚动设置身高",
2042
+ "Drag or scroll to set your weight": "拖动或滚动设置体重",
2043
+ "Enter height and weight first": "请先输入身高和体重",
2044
+ // ── Field labels ──
2045
+ "Lens Width": "镜片宽度",
2046
+ Bridge: "鼻梁",
2047
+ "Arm Length": "镜腿长度",
2048
+ "Head Circumference": "头围",
2049
+ "Face Width": "脸宽",
2050
+ Temple: "镜腿",
2051
+ "Around widest point": "围绕最宽处",
2052
+ "Foot Length": "脚长",
2053
+ Shoulder: "肩宽",
2054
+ Thigh: "大腿",
2055
+ Hip: "臀部",
2056
+ // ── Units ──
2057
+ Millimetre: "毫米",
2058
+ Centimetre: "厘米",
2059
+ Millimeters: "毫米",
2060
+ // ── Fit descriptors ──
2061
+ Tight: "紧",
2062
+ Loose: "松",
2063
+ Short: "短",
2064
+ Long: "长",
2065
+ Perfect: "完美",
2066
+ "Perfect fit": "完美合身",
2067
+ "✓ Fit": "✓ 合身",
2068
+ "too short": "太短",
2069
+ "too long": "太长",
2070
+ "a bit short": "稍短",
2071
+ "a bit long": "稍长",
2072
+ // ── Length pills ──
2073
+ Length: "长度",
2074
+ "Length Adjustment": "长度调整",
2075
+ Regular: "标准",
2076
+ Big: "大",
2077
+ "Big & Tall": "大号加长",
2078
+ // ── Misc ──
2079
+ preview: "预览",
2080
+ // ── BodyProfileView — photo upload area (left section) ──
2081
+ "Upload your photo": "上传您的照片",
2082
+ "Upload a photo": "上传照片",
2083
+ "Click or drag a full-body photo": "点击或拖入全身照",
2084
+ "Or upload a photo for AI sizing": "或上传照片以进行AI尺寸分析",
2085
+ Photo: "照片",
2086
+ "How to take a good photo": "如何拍出好照片",
2087
+ "How to take the best photo": "如何拍出最佳照片",
2088
+ Do: "建议",
2089
+ "Don't": "避免",
2090
+ "Quick Tip": "小提示",
2091
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "照片越简洁,虚拟试穿的结果越准确。",
2092
+ "Choose a plain background (a light wall is ideal)": "选择简洁背景(浅色墙面最理想)",
2093
+ "Stand facing the camera with your full body in frame": "面向相机站立,全身入镜",
2094
+ "Stand straight and still, arms relaxed by your sides": "保持站直不动,双臂自然放松",
2095
+ "Stand with your HEELS against a wall for best accuracy": "脚后跟靠墙站立以获得最佳准确度",
2096
+ "Use natural or even lighting (e.g. near a window)": "使用自然光或均匀光线(例如靠近窗户)",
2097
+ "Wear fitted, simple clothing (e.g. neutral colors)": "穿合身简洁的衣服(例如纯色)",
2098
+ "Don't wear loose, baggy, or layered clothing": "不要穿宽松或多层叠加的衣服",
2099
+ "Don't sit, pose, or bend your body": "不要坐着、摆姿势或弯腰",
2100
+ "Don't use strong backlighting": "不要使用强烈逆光",
2101
+ "Don't take mirror photos or selfies": "不要拍镜子照或自拍",
2102
+ "Don't apply filters, effects, or edits": "不要使用滤镜、特效或修图",
2103
+ // ── Age gate ──
2104
+ "Are you 18 or older?": "您年满18岁吗?",
2105
+ Yes: "是",
2106
+ No: "否",
2107
+ "Please confirm your age": "请确认您的年龄",
2108
+ "Please confirm that the person in the photo is 18 or older before uploading.": "上传前请确认照片中的人已年满18岁。",
2109
+ "Under 18 — can't process this photo.": "未满18岁 — 无法处理此照片。",
2110
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "此照片似乎是未成年人。请上传18岁或以上人士的照片。",
2111
+ "Different photo needed": "需要其他照片",
2112
+ "Try another photo": "尝试其他照片",
2113
+ // ── Photo step controls ──
2114
+ Continue: "继续",
2115
+ "Analyze My Size": "分析我的尺寸",
2116
+ "Analyzing photo…": "正在分析照片…",
2117
+ Details: "详情",
2118
+ "Image must be under 10MB": "图片必须小于10MB",
2119
+ "Please upload an image file": "请上传图片文件",
2120
+ "Please upload a photo": "请上传照片",
2121
+ "Prefer not to upload a photo?": "不想上传照片?",
2122
+ "Enter measurements manually": "手动输入尺寸",
2123
+ "Legal Notice": "法律声明",
2124
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "您的图片将用于生成虚拟试穿预览,显示所选商品的外观和合身效果。图片以安全方式处理,生成后不会保存。",
2125
+ // ── BodyProfileView — form (right section) ──
2126
+ "Body details": "身体信息",
2127
+ "Your body details": "您的身体信息",
2128
+ "Body Measurements": "身体尺寸",
2129
+ AGE: "年龄",
2130
+ years: "岁",
2131
+ "Enter your height": "输入您的身高",
2132
+ "Enter your weight": "输入您的体重",
2133
+ "Enter your bra size": "输入您的内衣尺码",
2134
+ "Please enter your height": "请输入您的身高",
2135
+ "Please enter your weight": "请输入您的体重",
2136
+ "Please enter a valid height": "请输入有效的身高",
2137
+ "Please enter a valid weight": "请输入有效的体重",
2138
+ "Please enter a valid height (100-250 cm)": "请输入有效的身高(100-250 cm)",
2139
+ "Please enter a valid weight (30-300 kg)": "请输入有效的体重(30-300 kg)",
2140
+ "Please select both band and cup size": "请选择下围和罩杯尺寸",
2141
+ "Select your bra size": "选择您的内衣尺码",
2142
+ BAND: "下围",
2143
+ "BAND SIZE": "下围尺寸",
2144
+ CUP: "罩杯",
2145
+ "CUP SIZE": "罩杯尺寸",
2146
+ "BRA REGION": "内衣地区",
2147
+ Imperial: "英制",
2148
+ Metric: "公制",
2149
+ "These calibrate the AI — all required.": "这些用于校准AI — 均为必填项。",
2150
+ Using: "使用中",
2151
+ "start fresh": "重新开始",
2152
+ Close: "关闭",
2153
+ // ── Body shape questions ──
2154
+ "Which best describes your chest?": "哪个最能描述您的胸部?",
2155
+ "WHICH BEST DESCRIBES YOUR CHEST?": "哪个最能描述您的胸部?",
2156
+ "Which best describes your hips?": "哪个最能描述您的臀部?",
2157
+ "WHICH BEST DESCRIBES YOUR HIPS?": "哪个最能描述您的臀部?",
2158
+ "Which best describes your midsection?": "哪个最能描述您的腰部?",
2159
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "哪个最能描述您的腰部?",
2160
+ "Which best describes your seat?": "哪个最能描述您的臀部?",
2161
+ "WHICH BEST DESCRIBES YOUR SEAT?": "哪个最能描述您的臀部?",
2162
+ Average: "平均",
2163
+ Narrow: "窄",
2164
+ Broad: "宽",
2165
+ Curvy: "曲线",
2166
+ "A slimmer, narrower chest build": "较瘦较窄的胸部",
2167
+ "A moderate, proportionate chest": "适中匀称的胸部",
2168
+ "A wider, more muscular chest": "较宽较结实的胸部",
2169
+ "A flatter midsection with minimal protrusion": "较平坦的腰部",
2170
+ "A moderate, natural midsection shape": "适中自然的腰部",
2171
+ "A fuller, more rounded midsection": "较丰满圆润的腰部",
2172
+ "A flatter backside with less projection": "较平坦的臀部",
2173
+ "A moderate, natural backside shape": "适中自然的臀部",
2174
+ "A fuller, more rounded backside": "较丰满圆润的臀部"
2175
+ }, k = {
2176
+ "Virtual Try-On": "가상 피팅",
2177
+ "Find Your Size & See It On You": "사이즈를 찾고 입어보세요",
2178
+ "Get the perfect fit, then try it on virtually": "완벽한 핏을 찾고 가상으로 입어보세요",
2179
+ "Get Your Size": "사이즈 확인",
2180
+ "Instant fit recommendation": "즉시 핏 추천",
2181
+ "Try It On": "입어보기",
2182
+ "See how it looks on you": "어떻게 보이는지 확인",
2183
+ "Find My Size": "내 사이즈 찾기",
2184
+ "Takes less than a minute": "1분도 걸리지 않아요",
2185
+ "Upload a full body photo": "전신 사진 업로드",
2186
+ "JPEG, PNG or WebP (max 10MB)": "JPEG, PNG 또는 WebP (최대 10MB)",
2187
+ "Your photo": "내 사진",
2188
+ "Let's find your best fit": "최적의 핏을 찾아보세요",
2189
+ Centimeters: "센티미터",
2190
+ Inches: "인치",
2191
+ "Load saved profile...": "저장된 프로필 불러오기...",
2192
+ HEIGHT: "키",
2193
+ WEIGHT: "체중",
2194
+ feet: "피트",
2195
+ inches: "인치",
2196
+ cm: "cm",
2197
+ kg: "kg",
2198
+ lbs: "파운드",
2199
+ in: "인치",
2200
+ "How to measure": "측정 방법",
2201
+ "Hide guide": "가이드 숨기기",
2202
+ "I know my measurements": "치수를 알고 있어요",
2203
+ "Not sure? Use height & weight instead": "모르겠다면 키와 체중으로",
2204
+ "Please fill in height and weight": "키와 체중을 입력해주세요",
2205
+ "Please fill in all required fields": "모든 필수 항목을 입력해주세요",
2206
+ Next: "다음",
2207
+ "Analyzing your size...": "사이즈 분석 중...",
2208
+ "RECOMMENDED SIZE": "추천 사이즈",
2209
+ "NOT RECOMMENDED": "비추천",
2210
+ "Edit measurements": "치수 수정",
2211
+ "Size guide": "사이즈 가이드",
2212
+ "Your fit": "나의 핏",
2213
+ "Your measure": "내 치수",
2214
+ "perfect fit": "완벽한 핏",
2215
+ "too tight": "너무 타이트",
2216
+ tight: "타이트",
2217
+ "a bit tight": "약간 타이트",
2218
+ "too loose": "너무 루즈",
2219
+ loose: "루즈",
2220
+ "a bit loose": "약간 루즈",
2221
+ "See fit on your photo": "사진에서 핏 확인",
2222
+ "Hide visual fit": "핏 표시 숨기기",
2223
+ "Analyzing...": "분석 중...",
2224
+ "Try it on": "입어보기",
2225
+ "SIZE CHART": "사이즈 차트",
2226
+ "YOUR ESTIMATED MEASUREMENTS": "추정 치수",
2227
+ Edit: "수정",
2228
+ Download: "다운로드",
2229
+ "Size chart": "사이즈 차트",
2230
+ "Preparing your image...": "이미지 준비 중...",
2231
+ "Analyzing body proportions...": "체형 분석 중...",
2232
+ "Matching garment to your photo...": "의류를 사진에 맞추는 중...",
2233
+ "Generating virtual try-on...": "가상 피팅 생성 중...",
2234
+ "Refining details...": "세부 조정 중...",
2235
+ "Almost there...": "거의 완료...",
2236
+ "Complete!": "완료!",
2237
+ "This usually takes 15-25 seconds": "보통 15~25초 소요됩니다",
2238
+ "Something went wrong": "오류가 발생했습니다",
2239
+ "Try Again": "다시 시도",
2240
+ "SDK not configured. Please provide an API key.": "SDK가 설정되지 않았습니다. API 키를 입력해주세요.",
2241
+ "Please upload a JPEG, PNG, or WebP image.": "JPEG, PNG 또는 WebP 이미지를 업로드해주세요.",
2242
+ "Image must be under 10MB.": "이미지는 10MB 이하여야 합니다.",
2243
+ "Try-on generation failed": "피팅 생성 실패",
2244
+ "Failed to start try-on": "피팅 시작 실패",
2245
+ "No product image found. Please set the product-image attribute.": "상품 이미지를 찾을 수 없습니다. product-image 속성을 설정해주세요.",
2246
+ "Powered by": "Powered by",
2247
+ "My Profiles": "내 프로필",
2248
+ History: "기록",
2249
+ "No saved profiles yet.": "저장된 프로필이 없습니다.",
2250
+ "No history yet.": "기록이 없습니다.",
2251
+ Product: "상품",
2252
+ "Women's": "여성",
2253
+ "Men's": "남성",
2254
+ Profiles: "프로필",
2255
+ "Women's Profile": "여성 프로필",
2256
+ "Men's Profile": "남성 프로필",
2257
+ Height: "키",
2258
+ Weight: "체중",
2259
+ Chest: "가슴둘레",
2260
+ Bust: "버스트",
2261
+ Waist: "허리",
2262
+ Hips: "엉덩이",
2263
+ Shoulders: "어깨",
2264
+ Sleeve: "소매",
2265
+ Inseam: "안쪽 솔기",
2266
+ Neck: "목둘레",
2267
+ Foot: "발",
2268
+ "Shoe EU": "신발 EU",
2269
+ "Shoe US": "신발 US",
2270
+ "Shoe UK": "신발 UK",
2271
+ Saved: "저장됨",
2272
+ "Delete Profile": "프로필 삭제",
2273
+ "Shoe size (US)": "신발 사이즈 (US)",
2274
+ "Shoe size (UK)": "신발 사이즈 (UK)",
2275
+ "Shoe size (EU)": "신발 사이즈 (EU)",
2276
+ "Generating...": "생성 중...",
2277
+ "Foot length": "발 길이",
2278
+ Size: "사이즈",
2279
+ "Try on size": "사이즈 입어보기",
2280
+ "e.g.": "예)",
2281
+ "Drop your photo here or click to upload": "사진을 여기에 놓거나 클릭하여 업로드",
2282
+ "This usually takes 15-20 seconds": "보통 15~20초 소요됩니다",
2283
+ "Try-on result": "피팅 결과",
2284
+ "Try Another": "다시 시도",
2285
+ Back: "뒤로",
2286
+ You: "내 치수",
2287
+ Garment: "의류",
2288
+ "Your Height": "키",
2289
+ "Your Weight": "체중",
2290
+ "Drag or scroll to set your height": "드래그 또는 스크롤하여 키를 설정하세요",
2291
+ "Drag or scroll to set your weight": "드래그 또는 스크롤하여 체중을 설정하세요",
2292
+ "Enter height and weight first": "먼저 키와 체중을 입력하세요",
2293
+ // ── Field labels ──
2294
+ "Lens Width": "렌즈 너비",
2295
+ Bridge: "브릿지",
2296
+ "Arm Length": "다리 길이",
2297
+ "Head Circumference": "머리 둘레",
2298
+ "Face Width": "얼굴 너비",
2299
+ Temple: "다리",
2300
+ "Around widest point": "가장 넓은 부분 주위",
2301
+ "Foot Length": "발 길이",
2302
+ Shoulder: "어깨",
2303
+ Thigh: "허벅지",
2304
+ Hip: "엉덩이",
2305
+ // ── Units ──
2306
+ Millimetre: "밀리미터",
2307
+ Centimetre: "센티미터",
2308
+ Millimeters: "밀리미터",
2309
+ // ── Fit descriptors ──
2310
+ Tight: "꽉 끼는",
2311
+ Loose: "헐렁한",
2312
+ Short: "짧은",
2313
+ Long: "긴",
2314
+ Perfect: "완벽",
2315
+ "Perfect fit": "완벽한 핏",
2316
+ "✓ Fit": "✓ 적합",
2317
+ "too short": "너무 짧음",
2318
+ "too long": "너무 김",
2319
+ "a bit short": "약간 짧음",
2320
+ "a bit long": "약간 김",
2321
+ // ── Length pills ──
2322
+ Length: "길이",
2323
+ "Length Adjustment": "길이 조절",
2324
+ Regular: "보통",
2325
+ Big: "빅",
2326
+ "Big & Tall": "빅 & 톨",
2327
+ // ── Misc ──
2328
+ preview: "미리보기",
2329
+ // ── BodyProfileView — photo upload area (left section) ──
2330
+ "Upload your photo": "사진 업로드",
2331
+ "Upload a photo": "사진 업로드",
2332
+ "Click or drag a full-body photo": "전신 사진을 클릭하거나 드래그하세요",
2333
+ "Or upload a photo for AI sizing": "또는 AI 사이징을 위한 사진을 업로드하세요",
2334
+ Photo: "사진",
2335
+ "How to take a good photo": "좋은 사진 찍는 방법",
2336
+ "How to take the best photo": "최고의 사진 찍는 방법",
2337
+ Do: "권장사항",
2338
+ "Don't": "주의사항",
2339
+ "Quick Tip": "빠른 팁",
2340
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "사진이 단순할수록 가상 피팅 결과의 정확도가 높아집니다.",
2341
+ "Choose a plain background (a light wall is ideal)": "단색 배경을 선택하세요(밝은 벽이 이상적입니다)",
2342
+ "Stand facing the camera with your full body in frame": "전신이 화면에 들어오도록 카메라를 향해 서세요",
2343
+ "Stand straight and still, arms relaxed by your sides": "팔을 자연스럽게 내리고 똑바로 서서 움직이지 마세요",
2344
+ "Stand with your HEELS against a wall for best accuracy": "정확도를 위해 발뒤꿈치를 벽에 붙이고 서세요",
2345
+ "Use natural or even lighting (e.g. near a window)": "자연광이나 균일한 조명을 사용하세요(예: 창가)",
2346
+ "Wear fitted, simple clothing (e.g. neutral colors)": "몸에 맞는 단순한 옷을 입으세요(예: 무채색)",
2347
+ "Don't wear loose, baggy, or layered clothing": "헐렁하거나 겹쳐 입은 옷은 피하세요",
2348
+ "Don't sit, pose, or bend your body": "앉거나 포즈를 취하거나 몸을 굽히지 마세요",
2349
+ "Don't use strong backlighting": "강한 역광은 사용하지 마세요",
2350
+ "Don't take mirror photos or selfies": "거울 사진이나 셀카는 찍지 마세요",
2351
+ "Don't apply filters, effects, or edits": "필터, 효과, 편집을 적용하지 마세요",
2352
+ // ── Age gate ──
2353
+ "Are you 18 or older?": "만 18세 이상이신가요?",
2354
+ Yes: "예",
2355
+ No: "아니요",
2356
+ "Please confirm your age": "나이를 확인해 주세요",
2357
+ "Please confirm that the person in the photo is 18 or older before uploading.": "업로드하기 전에 사진의 인물이 만 18세 이상임을 확인해 주세요.",
2358
+ "Under 18 — can't process this photo.": "18세 미만 — 이 사진을 처리할 수 없습니다.",
2359
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "이 사진은 미성년자로 보입니다. 만 18세 이상인 사람의 사진을 업로드해 주세요.",
2360
+ "Different photo needed": "다른 사진이 필요합니다",
2361
+ "Try another photo": "다른 사진을 시도해 보세요",
2362
+ // ── Photo step controls ──
2363
+ Continue: "계속",
2364
+ "Analyze My Size": "내 사이즈 분석",
2365
+ "Analyzing photo…": "사진 분석 중…",
2366
+ Details: "세부정보",
2367
+ "Image must be under 10MB": "이미지는 10MB 이하여야 합니다",
2368
+ "Please upload an image file": "이미지 파일을 업로드하세요",
2369
+ "Please upload a photo": "사진을 업로드하세요",
2370
+ "Prefer not to upload a photo?": "사진을 업로드하지 않으시겠습니까?",
2371
+ "Enter measurements manually": "직접 치수 입력",
2372
+ "Legal Notice": "법적 고지",
2373
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "귀하의 이미지는 선택한 항목이 어떻게 보이고 맞을지를 보여주는 가상 피팅 미리보기를 생성하는 데 사용됩니다. 이미지는 안전하게 처리되며 생성 후에는 저장되지 않습니다.",
2374
+ // ── BodyProfileView — form (right section) ──
2375
+ "Body details": "신체 정보",
2376
+ "Your body details": "당신의 신체 정보",
2377
+ "Body Measurements": "신체 치수",
2378
+ AGE: "나이",
2379
+ years: "세",
2380
+ "Enter your height": "키를 입력하세요",
2381
+ "Enter your weight": "체중을 입력하세요",
2382
+ "Enter your bra size": "브라 사이즈를 입력하세요",
2383
+ "Please enter your height": "키를 입력하세요",
2384
+ "Please enter your weight": "체중을 입력하세요",
2385
+ "Please enter a valid height": "올바른 키를 입력하세요",
2386
+ "Please enter a valid weight": "올바른 체중을 입력하세요",
2387
+ "Please enter a valid height (100-250 cm)": "올바른 키를 입력하세요(100-250 cm)",
2388
+ "Please enter a valid weight (30-300 kg)": "올바른 체중을 입력하세요(30-300 kg)",
2389
+ "Please select both band and cup size": "밴드와 컵 사이즈를 모두 선택하세요",
2390
+ "Select your bra size": "브라 사이즈를 선택하세요",
2391
+ BAND: "밴드",
2392
+ "BAND SIZE": "밴드 사이즈",
2393
+ CUP: "컵",
2394
+ "CUP SIZE": "컵 사이즈",
2395
+ "BRA REGION": "브라 지역",
2396
+ Imperial: "영국식",
2397
+ Metric: "미터법",
2398
+ "These calibrate the AI — all required.": "이 항목들은 AI를 보정합니다 — 모두 필수입니다.",
2399
+ Using: "사용 중",
2400
+ "start fresh": "새로 시작",
2401
+ Close: "닫기",
2402
+ // ── Body shape questions ──
2403
+ "Which best describes your chest?": "가슴을 가장 잘 설명하는 것은?",
2404
+ "WHICH BEST DESCRIBES YOUR CHEST?": "가슴을 가장 잘 설명하는 것은?",
2405
+ "Which best describes your hips?": "엉덩이를 가장 잘 설명하는 것은?",
2406
+ "WHICH BEST DESCRIBES YOUR HIPS?": "엉덩이를 가장 잘 설명하는 것은?",
2407
+ "Which best describes your midsection?": "허리를 가장 잘 설명하는 것은?",
2408
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "허리를 가장 잘 설명하는 것은?",
2409
+ "Which best describes your seat?": "엉덩이 모양을 가장 잘 설명하는 것은?",
2410
+ "WHICH BEST DESCRIBES YOUR SEAT?": "엉덩이 모양을 가장 잘 설명하는 것은?",
2411
+ Average: "평균",
2412
+ Narrow: "좁음",
2413
+ Broad: "넓음",
2414
+ Curvy: "곡선미",
2415
+ "A slimmer, narrower chest build": "더 가늘고 좁은 가슴",
2416
+ "A moderate, proportionate chest": "보통의 균형잡힌 가슴",
2417
+ "A wider, more muscular chest": "더 넓고 근육질의 가슴",
2418
+ "A flatter midsection with minimal protrusion": "최소한의 돌출이 있는 평평한 허리",
2419
+ "A moderate, natural midsection shape": "보통의 자연스러운 허리",
2420
+ "A fuller, more rounded midsection": "더 풍만하고 둥근 허리",
2421
+ "A flatter backside with less projection": "돌출이 적은 평평한 엉덩이",
2422
+ "A moderate, natural backside shape": "보통의 자연스러운 엉덩이",
2423
+ "A fuller, more rounded backside": "더 풍만하고 둥근 엉덩이"
2424
+ }, G = {
2425
+ "Virtual Try-On": "تجربة افتراضية",
2426
+ "Find Your Size & See It On You": "اعثر على مقاسك وجرّبه",
2427
+ "Get the perfect fit, then try it on virtually": "اعثر على المقاس المثالي ثم جرّبه افتراضياً",
2428
+ "Get Your Size": "مقاسك",
2429
+ "Instant fit recommendation": "توصية فورية بالمقاس",
2430
+ "Try It On": "جرّبه",
2431
+ "See how it looks on you": "شاهد كيف يبدو عليك",
2432
+ "Find My Size": "اعثر على مقاسي",
2433
+ "Takes less than a minute": "يستغرق أقل من دقيقة",
2434
+ "Upload a full body photo": "ارفع صورة بالطول الكامل",
2435
+ "JPEG, PNG or WebP (max 10MB)": "JPEG أو PNG أو WebP (الحد الأقصى 10 ميجابايت)",
2436
+ "Your photo": "صورتك",
2437
+ "Let's find your best fit": "لنجد أفضل مقاس لك",
2438
+ Centimeters: "سنتيمترات",
2439
+ Inches: "بوصات",
2440
+ "Load saved profile...": "تحميل ملف محفوظ...",
2441
+ HEIGHT: "الطول",
2442
+ WEIGHT: "الوزن",
2443
+ feet: "قدم",
2444
+ inches: "بوصة",
2445
+ cm: "سم",
2446
+ kg: "كغ",
2447
+ lbs: "رطل",
2448
+ in: "بوصة",
2449
+ "How to measure": "كيفية القياس",
2450
+ "Hide guide": "إخفاء الدليل",
2451
+ "I know my measurements": "أعرف قياساتي",
2452
+ "Not sure? Use height & weight instead": "غير متأكد؟ استخدم الطول والوزن",
2453
+ "Please fill in height and weight": "يرجى إدخال الطول والوزن",
2454
+ "Please fill in all required fields": "يرجى ملء جميع الحقول المطلوبة",
2455
+ Next: "التالي",
2456
+ "Analyzing your size...": "جارٍ تحليل مقاسك...",
2457
+ "RECOMMENDED SIZE": "المقاس الموصى به",
2458
+ "NOT RECOMMENDED": "غير موصى به",
2459
+ "Edit measurements": "تعديل القياسات",
2460
+ "Size guide": "دليل المقاسات",
2461
+ "Your fit": "ملاءمتك",
2462
+ "Your measure": "قياسك",
2463
+ "perfect fit": "مقاس مثالي",
2464
+ "too tight": "ضيق جداً",
2465
+ tight: "ضيق",
2466
+ "a bit tight": "ضيق قليلاً",
2467
+ "too loose": "واسع جداً",
2468
+ loose: "واسع",
2469
+ "a bit loose": "واسع قليلاً",
2470
+ "See fit on your photo": "شاهد الملاءمة على صورتك",
2471
+ "Hide visual fit": "إخفاء عرض الملاءمة",
2472
+ "Analyzing...": "جارٍ التحليل...",
2473
+ "Try it on": "جرّبه",
2474
+ "SIZE CHART": "جدول المقاسات",
2475
+ "YOUR ESTIMATED MEASUREMENTS": "قياساتك التقديرية",
2476
+ Edit: "تعديل",
2477
+ Download: "تحميل",
2478
+ "Size chart": "جدول المقاسات",
2479
+ "Preparing your image...": "جارٍ تحضير صورتك...",
2480
+ "Analyzing body proportions...": "جارٍ تحليل نسب الجسم...",
2481
+ "Matching garment to your photo...": "جارٍ مطابقة الملابس مع صورتك...",
2482
+ "Generating virtual try-on...": "جارٍ إنشاء التجربة الافتراضية...",
2483
+ "Refining details...": "جارٍ تحسين التفاصيل...",
2484
+ "Almost there...": "أوشكنا على الانتهاء...",
2485
+ "Complete!": "تم!",
2486
+ "This usually takes 15-25 seconds": "عادة ما يستغرق 15-25 ثانية",
2487
+ "Something went wrong": "حدث خطأ ما",
2488
+ "Try Again": "حاول مرة أخرى",
2489
+ "SDK not configured. Please provide an API key.": "SDK غير مُهيأ. يرجى تقديم مفتاح API.",
2490
+ "Please upload a JPEG, PNG, or WebP image.": "يرجى رفع صورة بصيغة JPEG أو PNG أو WebP.",
2491
+ "Image must be under 10MB.": "يجب أن تكون الصورة أقل من 10 ميجابايت.",
2492
+ "Try-on generation failed": "فشل إنشاء التجربة",
2493
+ "Failed to start try-on": "فشل بدء التجربة",
2494
+ "No product image found. Please set the product-image attribute.": "لم يتم العثور على صورة المنتج. يرجى تعيين خاصية product-image.",
2495
+ "Powered by": "مدعوم من",
2496
+ "My Profiles": "ملفاتي الشخصية",
2497
+ History: "السجل",
2498
+ "No saved profiles yet.": "لا توجد ملفات محفوظة بعد.",
2499
+ "No history yet.": "لا يوجد سجل بعد.",
2500
+ Product: "المنتج",
2501
+ "Women's": "نسائي",
2502
+ "Men's": "رجالي",
2503
+ Profiles: "الملفات الشخصية",
2504
+ "Women's Profile": "ملف نسائي",
2505
+ "Men's Profile": "ملف رجالي",
2506
+ Height: "الطول",
2507
+ Weight: "الوزن",
2508
+ Chest: "الصدر",
2509
+ Bust: "محيط الصدر",
2510
+ Waist: "الخصر",
2511
+ Hips: "الأرداف",
2512
+ Shoulders: "الأكتاف",
2513
+ Sleeve: "الكم",
2514
+ Inseam: "طول الساق الداخلي",
2515
+ Neck: "الرقبة",
2516
+ Foot: "القدم",
2517
+ "Shoe EU": "حذاء EU",
2518
+ "Shoe US": "حذاء US",
2519
+ "Shoe UK": "حذاء UK",
2520
+ Saved: "تم الحفظ",
2521
+ "Delete Profile": "حذف الملف الشخصي",
2522
+ "Shoe size (US)": "مقاس الحذاء (US)",
2523
+ "Shoe size (UK)": "مقاس الحذاء (UK)",
2524
+ "Shoe size (EU)": "مقاس الحذاء (EU)",
2525
+ "Generating...": "جارٍ الإنشاء...",
2526
+ "Foot length": "طول القدم",
2527
+ Size: "المقاس",
2528
+ "Try on size": "تجربة المقاس",
2529
+ "e.g.": "مثال",
2530
+ "Drop your photo here or click to upload": "اسحب صورتك هنا أو انقر للتحميل",
2531
+ "This usually takes 15-20 seconds": "عادة ما يستغرق 15-20 ثانية",
2532
+ "Try-on result": "نتيجة التجربة",
2533
+ "Try Another": "جرّب صورة أخرى",
2534
+ Back: "رجوع",
2535
+ You: "أنت",
2536
+ Garment: "الملابس",
2537
+ "Your Height": "طولك",
2538
+ "Your Weight": "وزنك",
2539
+ "Drag or scroll to set your height": "اسحب أو مرر لتعيين طولك",
2540
+ "Drag or scroll to set your weight": "اسحب أو مرر لتعيين وزنك",
2541
+ "Enter height and weight first": "أدخل الطول والوزن أولاً",
2542
+ // ── Field labels ──
2543
+ "Lens Width": "عرض العدسة",
2544
+ Bridge: "الجسر",
2545
+ "Arm Length": "طول الذراع",
2546
+ "Head Circumference": "محيط الرأس",
2547
+ "Face Width": "عرض الوجه",
2548
+ Temple: "الذراع",
2549
+ "Around widest point": "حول أعرض نقطة",
2550
+ "Foot Length": "طول القدم",
2551
+ Shoulder: "الكتف",
2552
+ Thigh: "الفخذ",
2553
+ Hip: "الورك",
2554
+ // ── Units ──
2555
+ Millimetre: "ملم",
2556
+ Centimetre: "سم",
2557
+ Millimeters: "ملم",
2558
+ // ── Fit descriptors ──
2559
+ Tight: "ضيق",
2560
+ Loose: "فضفاض",
2561
+ Short: "قصير",
2562
+ Long: "طويل",
2563
+ Perfect: "مثالي",
2564
+ "Perfect fit": "مقاس مثالي",
2565
+ "✓ Fit": "✓ مناسب",
2566
+ "too short": "قصير جداً",
2567
+ "too long": "طويل جداً",
2568
+ "a bit short": "قصير قليلاً",
2569
+ "a bit long": "طويل قليلاً",
2570
+ // ── Length pills ──
2571
+ Length: "الطول",
2572
+ "Length Adjustment": "ضبط الطول",
2573
+ Regular: "عادي",
2574
+ Big: "كبير",
2575
+ "Big & Tall": "كبير وطويل",
2576
+ // ── Misc ──
2577
+ preview: "معاينة",
2578
+ // ── BodyProfileView — photo upload area (left section) ──
2579
+ "Upload your photo": "حمّل صورتك",
2580
+ "Upload a photo": "تحميل صورة",
2581
+ "Click or drag a full-body photo": "انقر أو اسحب صورة كاملة للجسم",
2582
+ "Or upload a photo for AI sizing": "أو حمّل صورة لتحديد المقاس بالذكاء الاصطناعي",
2583
+ Photo: "صورة",
2584
+ "How to take a good photo": "كيفية التقاط صورة جيدة",
2585
+ "How to take the best photo": "كيفية التقاط أفضل صورة",
2586
+ Do: "افعل",
2587
+ "Don't": "لا تفعل",
2588
+ "Quick Tip": "نصيحة سريعة",
2589
+ "The simpler your photo is, the more accurate your virtual try-on results will be.": "كلما كانت صورتك أبسط، كانت نتائج التجربة الافتراضية أدق.",
2590
+ "Choose a plain background (a light wall is ideal)": "اختر خلفية بسيطة (الجدار الفاتح مثالي)",
2591
+ "Stand facing the camera with your full body in frame": "قف في مواجهة الكاميرا مع ظهور جسمك بالكامل",
2592
+ "Stand straight and still, arms relaxed by your sides": "قف بشكل مستقيم وثابت مع إرخاء الذراعين على الجانبين",
2593
+ "Stand with your HEELS against a wall for best accuracy": "قف وكعباك مستندان إلى الحائط للحصول على أفضل دقة",
2594
+ "Use natural or even lighting (e.g. near a window)": "استخدم إضاءة طبيعية أو متساوية (مثل بالقرب من نافذة)",
2595
+ "Wear fitted, simple clothing (e.g. neutral colors)": "ارتد ملابس ضيقة وبسيطة (مثل ألوان محايدة)",
2596
+ "Don't wear loose, baggy, or layered clothing": "لا ترتد ملابس فضفاضة أو متعددة الطبقات",
2597
+ "Don't sit, pose, or bend your body": "لا تجلس أو تتخذ وضعية أو تنحني",
2598
+ "Don't use strong backlighting": "لا تستخدم إضاءة خلفية قوية",
2599
+ "Don't take mirror photos or selfies": "لا تلتقط صورًا في المرآة أو سيلفي",
2600
+ "Don't apply filters, effects, or edits": "لا تطبق فلاتر أو تأثيرات أو تعديلات",
2601
+ // ── Age gate ──
2602
+ "Are you 18 or older?": "هل عمرك 18 سنة أو أكبر؟",
2603
+ Yes: "نعم",
2604
+ No: "لا",
2605
+ "Please confirm your age": "يرجى تأكيد عمرك",
2606
+ "Please confirm that the person in the photo is 18 or older before uploading.": "يرجى تأكيد أن الشخص في الصورة عمره 18 سنة أو أكبر قبل التحميل.",
2607
+ "Under 18 — can't process this photo.": "أقل من 18 سنة — لا يمكن معالجة هذه الصورة.",
2608
+ "This photo appears to be of a minor. Please upload a photo of someone 18 or older.": "تبدو هذه الصورة لقاصر. يرجى تحميل صورة لشخص عمره 18 سنة أو أكبر.",
2609
+ "Different photo needed": "نحتاج صورة مختلفة",
2610
+ "Try another photo": "جرّب صورة أخرى",
2611
+ // ── Photo step controls ──
2612
+ Continue: "متابعة",
2613
+ "Analyze My Size": "تحليل مقاسي",
2614
+ "Analyzing photo…": "جاري تحليل الصورة…",
2615
+ Details: "التفاصيل",
2616
+ "Image must be under 10MB": "يجب أن تكون الصورة أقل من 10 ميغابايت",
2617
+ "Please upload an image file": "يرجى تحميل ملف صورة",
2618
+ "Please upload a photo": "يرجى تحميل صورة",
2619
+ "Prefer not to upload a photo?": "تفضل عدم تحميل صورة؟",
2620
+ "Enter measurements manually": "إدخال القياسات يدويًا",
2621
+ "Legal Notice": "إشعار قانوني",
2622
+ "Your image will be used to generate a virtual try-on preview showing how selected items may look and fit. Images are processed securely and are not stored after generation.": "سيتم استخدام صورتك لإنشاء معاينة للتجربة الافتراضية تُظهر كيف يمكن أن تبدو العناصر المختارة وتناسبك. تتم معالجة الصور بأمان ولا يتم تخزينها بعد التوليد.",
2623
+ // ── BodyProfileView — form (right section) ──
2624
+ "Body details": "تفاصيل الجسم",
2625
+ "Your body details": "تفاصيل جسمك",
2626
+ "Body Measurements": "قياسات الجسم",
2627
+ AGE: "العمر",
2628
+ years: "سنة",
2629
+ "Enter your height": "أدخل طولك",
2630
+ "Enter your weight": "أدخل وزنك",
2631
+ "Enter your bra size": "أدخل مقاس حمالة الصدر",
2632
+ "Please enter your height": "يرجى إدخال طولك",
2633
+ "Please enter your weight": "يرجى إدخال وزنك",
2634
+ "Please enter a valid height": "يرجى إدخال طول صحيح",
2635
+ "Please enter a valid weight": "يرجى إدخال وزن صحيح",
2636
+ "Please enter a valid height (100-250 cm)": "يرجى إدخال طول صحيح (100-250 سم)",
2637
+ "Please enter a valid weight (30-300 kg)": "يرجى إدخال وزن صحيح (30-300 كغ)",
2638
+ "Please select both band and cup size": "يرجى اختيار مقاس الحزام والكأس",
2639
+ "Select your bra size": "اختر مقاس حمالة الصدر",
2640
+ BAND: "الحزام",
2641
+ "BAND SIZE": "مقاس الحزام",
2642
+ CUP: "الكأس",
2643
+ "CUP SIZE": "مقاس الكأس",
2644
+ "BRA REGION": "منطقة حمالة الصدر",
2645
+ Imperial: "إمبراطوري",
2646
+ Metric: "متري",
2647
+ "These calibrate the AI — all required.": "هذه تعاير الذكاء الاصطناعي — جميعها مطلوبة.",
2648
+ Using: "تستخدم",
2649
+ "start fresh": "ابدأ من جديد",
2650
+ Close: "إغلاق",
2651
+ // ── Body shape questions ──
2652
+ "Which best describes your chest?": "أيهما يصف صدرك بشكل أفضل؟",
2653
+ "WHICH BEST DESCRIBES YOUR CHEST?": "أيهما يصف صدرك بشكل أفضل؟",
2654
+ "Which best describes your hips?": "أيهما يصف وركيك بشكل أفضل؟",
2655
+ "WHICH BEST DESCRIBES YOUR HIPS?": "أيهما يصف وركيك بشكل أفضل؟",
2656
+ "Which best describes your midsection?": "أيهما يصف منطقة وسطك بشكل أفضل؟",
2657
+ "WHICH BEST DESCRIBES YOUR MIDSECTION?": "أيهما يصف منطقة وسطك بشكل أفضل؟",
2658
+ "Which best describes your seat?": "أيهما يصف مؤخرتك بشكل أفضل؟",
2659
+ "WHICH BEST DESCRIBES YOUR SEAT?": "أيهما يصف مؤخرتك بشكل أفضل؟",
2660
+ Average: "متوسط",
2661
+ Narrow: "ضيق",
2662
+ Broad: "عريض",
2663
+ Curvy: "ممشوق",
2664
+ "A slimmer, narrower chest build": "بنية صدر أنحف وأضيق",
2665
+ "A moderate, proportionate chest": "صدر معتدل ومتناسب",
2666
+ "A wider, more muscular chest": "صدر أعرض وأكثر عضلية",
2667
+ "A flatter midsection with minimal protrusion": "منطقة وسط أكثر استواءً مع بروز قليل",
2668
+ "A moderate, natural midsection shape": "منطقة وسط معتدلة وطبيعية",
2669
+ "A fuller, more rounded midsection": "منطقة وسط أكثر امتلاءً واستدارة",
2670
+ "A flatter backside with less projection": "مؤخرة أكثر استواءً مع بروز أقل",
2671
+ "A moderate, natural backside shape": "مؤخرة معتدلة وطبيعية",
2672
+ "A fuller, more rounded backside": "مؤخرة أكثر امتلاءً واستدارة"
2673
+ }, L = {
2674
+ es: D,
2675
+ fr: z,
2676
+ de: M,
2677
+ it: N,
2678
+ pt: B,
2679
+ ja: H,
2680
+ zh: R,
2681
+ ko: k,
2682
+ ar: G
2683
+ };
2684
+ for (const [t, e] of Object.entries(L))
2685
+ U(t, e);
2686
+ export {
2687
+ O as A,
2688
+ x as L,
2689
+ g as P,
2690
+ W as S,
2691
+ J as T,
2692
+ C as a,
2693
+ j as b,
2694
+ K as c,
2695
+ F as d,
2696
+ V as e,
2697
+ Y as i,
2698
+ U as r
2699
+ };
2700
+ //# sourceMappingURL=index-RlA_0mKn.js.map