@feedmepos/mf-menu 0.31.71-prod → 0.31.72-remy
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{App-B5R51HHK.js → App-27TpQ9Rh.js} +1442 -2546
- package/dist/{ApplyProduct.vue_vue_type_script_setup_true_lang-Dflill79.js → ApplyProduct.vue_vue_type_script_setup_true_lang-CumuJ63E.js} +3 -3
- package/dist/{Catalog-yv_fwu1h.js → Catalog-qUXEGPwx.js} +26 -26
- package/dist/{Category-lOaUwRrB.js → Category-C9sdulfS.js} +35 -35
- package/dist/{Category-DEkZ-IWE.js → Category-DGUI1Glw.js} +22 -22
- package/dist/{CookingGuide-Db8VQK5V.js → CookingGuide-DIVESXs6.js} +113 -113
- package/dist/{CustomAttributeChip.vue_vue_type_script_setup_true_lang-DwsVvlUq.js → CustomAttributeChip.vue_vue_type_script_setup_true_lang-B48GyN96.js} +1 -1
- package/dist/{Group-CFS8D5Uf.js → Group-C8gRQIjf.js} +3 -3
- package/dist/{Group-B2EXYbcn.js → Group-CTzxLznN.js} +1 -1
- package/dist/{Group.vue_vue_type_script_setup_true_lang-BdZ9K2Ht.js → Group.vue_vue_type_script_setup_true_lang-BPCjOiTv.js} +7 -7
- package/dist/{GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-CtlyZlos.js → GroupMarkupPriceDialog.vue_vue_type_script_setup_true_lang-M7EU3tby.js} +5 -5
- package/dist/{ImportProductDialog.vue_vue_type_script_setup_true_lang-C-RPhKoA.js → ImportProductDialog.vue_vue_type_script_setup_true_lang-h09saJxj.js} +21 -22
- package/dist/{Ingredient-C3B8G0Fd.js → Ingredient-DaWcvad4.js} +23 -23
- package/dist/{InventoryBinding.vue_vue_type_script_setup_true_lang-BrhhXwp8.js → InventoryBinding.vue_vue_type_script_setup_true_lang-C9VpUX0B.js} +1052 -1052
- package/dist/{LinkProductSideSheet-DPn7KN3l.js → LinkProductSideSheet-b_gN9u5S.js} +3 -3
- package/dist/{MenuSetting-Mph9Pc9s.js → MenuSetting-B32RCTN9.js} +31 -31
- package/dist/{PrintRoute-BwboeALA.js → PrintRoute-BEXM1XO1.js} +26 -26
- package/dist/{Product-CNKnPt-z.js → Product-Dg6vmxu4.js} +1 -1
- package/dist/{Product.vue_vue_type_script_setup_true_lang-BksTc5Gm.js → Product.vue_vue_type_script_setup_true_lang-m1D4IZS3.js} +71 -71
- package/dist/{ProductInternalTools-DGkoIc6T.js → ProductInternalTools-DiG53QXf.js} +17 -17
- package/dist/{Products-CkLZYybB.js → Products-Bp4RN2tP.js} +11 -11
- package/dist/{Publish-Bzq9aREC.js → Publish-DHrjYAJO.js} +56 -57
- package/dist/{Recipe-K55Bnscl.js → Recipe-CPpiiwTj.js} +13 -13
- package/dist/{Scheduler-ChAmTqSR.js → Scheduler-BVgOUrgq.js} +16 -16
- package/dist/{ServingSequence-ywa7-8rG.js → ServingSequence-BvvQ7iAu.js} +20 -20
- package/dist/{Setting-CHUNtVho.js → Setting-C828ShhE.js} +20 -20
- package/dist/{Subcategory-0-99_i06.js → Subcategory-Bw4NC1zr.js} +19 -19
- package/dist/{Takeaway-CsJf5I8I.js → Takeaway-BP9vO3uO.js} +1 -1
- package/dist/{Takeaway-BzvxZ_dA.js → Takeaway-CZBbeNL8.js} +10 -10
- package/dist/{Takeaway.vue_vue_type_script_setup_true_lang-Bh8mjdk4.js → Takeaway.vue_vue_type_script_setup_true_lang-Bf6h1oOm.js} +20 -20
- package/dist/{Thumbnail.vue_vue_type_script_setup_true_lang-CbxgtwVa.js → Thumbnail.vue_vue_type_script_setup_true_lang-BCqjdxf-.js} +20 -20
- package/dist/{TreeEditorOpenner.vue_vue_type_script_setup_true_lang-Dh_CA5gZ.js → TreeEditorOpenner.vue_vue_type_script_setup_true_lang-CTouhy0y.js} +16 -17
- package/dist/{Unit-CbTkNhj2.js → Unit-C0XP2gQF.js} +13 -13
- package/dist/{Variant-NkbzEbF-.js → Variant-CR6fNlW6.js} +15 -15
- package/dist/{_id_-mr4_eirX.js → _id_-DPpuWlln.js} +14 -14
- package/dist/{app-DVB67WHZ.js → app-CtQEOIp5.js} +471 -468
- package/dist/{app-BzsHQwP_.js → app-xaGd6_oS.js} +1 -1
- package/dist/app.js +1 -1
- package/dist/apps/mf-menu/src/app.d.ts +1626 -0
- package/dist/apps/mf-menu/src/components/feature/ApplyProduct/ApplyProduct.vue.d.ts +72 -0
- package/dist/apps/mf-menu/src/components/feature/ApplyProduct/ApplyProductDialog.vue.d.ts +36 -0
- package/dist/apps/mf-menu/src/components/feature/ApplyProduct/index.d.ts +218 -0
- package/dist/apps/mf-menu/src/components/feature/Fields/OrderFrom.vue.d.ts +1 -1
- package/dist/apps/mf-menu/src/components/feature/GroupManager/OptionTable.vue.d.ts +52 -0
- package/dist/apps/mf-menu/src/components/feature/GroupManager/UpdateForm.vue.d.ts +36 -0
- package/dist/apps/mf-menu/src/components/feature/PriceTier/PriceTierButton.vue.d.ts +110 -0
- package/dist/apps/mf-menu/src/components/feature/PriceTier/PriceTierForm.vue.d.ts +110 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/item.d.ts +110 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/scheduler.d.ts +81 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/composable/useItemFormManagement.d.ts +55 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/form/GroupManager/OptionTable.vue.d.ts +52 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/form/GroupManager/UpdateForm.vue.d.ts +36 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/form/GroupManager/index.d.ts +144 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/item/ItemForm.vue.d.ts +165 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/menuUtils.d.ts +55 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/store/menuV2.d.ts +375 -0
- package/dist/apps/mf-menu/src/components/feature/TreeEditor/store/tree.d.ts +18 -18
- package/dist/apps/mf-menu/src/components/import/PreviewAddonContent.vue.d.ts +110 -0
- package/dist/apps/mf-menu/src/composable/linkProducts.d.ts +81 -0
- package/dist/apps/mf-menu/src/helper/itemCategories.d.ts +55 -0
- package/dist/apps/mf-menu/src/helper/menu.d.ts +430 -0
- package/dist/apps/mf-menu/src/helper/menuImport.d.ts +375 -0
- package/dist/apps/mf-menu/src/manager/menu/item.d.ts +375 -0
- package/dist/apps/mf-menu/src/stores/manager/item.d.ts +165 -0
- package/dist/apps/mf-menu/src/stores/manager/scheduler.d.ts +81 -0
- package/dist/apps/mf-menu/src/stores/menu.d.ts +375 -0
- package/dist/apps/mf-menu/src/views/Catalog/Edit/AddProductPopup/Form.vue.d.ts +110 -0
- package/dist/apps/mf-menu/src/views/Publish/UpdateCatalogDialog.vue.d.ts +220 -0
- package/dist/apps/mf-menu/src/views/Scheduler/FilterForm.vue.d.ts +52 -0
- package/dist/apps/mf-menu/src/views/Scheduler/SchedulerDialog.vue.d.ts +52 -0
- package/dist/apps/mf-menu/tsconfig.app.tsbuildinfo +1 -1
- package/dist/assets/linked-status-Ds3VKRNn.js +13 -0
- package/dist/assets/override-menu-BVPA9mG0.js +13 -0
- package/dist/assets/validate-menu-Ctwk0tSN.js +13 -0
- package/dist/{catalog-C_6TM4e_.js → catalog-B1AtGIOR.js} +1 -1
- package/dist/{catalogSetting-pTMi5i6h.js → catalogSetting-D76y7yoz.js} +1 -1
- package/dist/{category-CHNICcWp.js → category-B3MkQ7Pp.js} +5 -5
- package/dist/{currency-Dx-pn9tw.js → currency-DYj4YAoX.js} +1 -1
- package/dist/{customAttributes-DvHKcDWb.js → customAttributes-CfwqBwao.js} +1 -1
- package/dist/{index-DqIorABw.js → index-8_TFzfuI.js} +1 -1
- package/dist/{index-CA3_R55p.js → index-CAQqh5h4.js} +13 -13
- package/dist/{index-X3RliLfv.js → index-DNhoEElA.js} +26 -26
- package/dist/{index-DGtoqrTo.js → index-DUUtEjnd.js} +1 -1
- package/dist/{item-JhHKgoMj.js → item-MTfRKilm.js} +378 -378
- package/dist/iteration-DXXAmTGt.js +27 -0
- package/dist/{jszip.min-BQReTtS0.js → jszip.min-y7wFpnaP.js} +245 -245
- package/dist/{menu-Bhfx50bt.js → menu-C_m3ZEIK.js} +1 -1
- package/dist/{menu-2ymqQnFE.js → menu-DQurCWMa.js} +27902 -27334
- package/dist/{menuV2-ZaA_QLdj.js → menuV2-0FFzegP7.js} +92 -92
- package/dist/mf-menu.css +1 -1
- package/dist/packages/shared/src/components/form/SelectFilter.vue.d.ts +1 -1
- package/dist/packages/shared/src/components/info/TextChip.vue.d.ts +1 -1
- package/dist/{priceTier-IZtw6WUa.js → priceTier-DMFtjpmw.js} +1 -1
- package/dist/{scheduler-CzuGjuw5.js → scheduler-D0IlDwT3.js} +20 -20
- package/dist/{subcategory-Dt6tFvIu.js → subcategory-D32FJH5D.js} +6 -6
- package/dist/{toExcel-CUrEHCjB.js → toExcel-CsQ_y0DF.js} +2 -2
- package/dist/{unit-Ibbp0wZT.js → unit-Bthb3r-g.js} +9 -9
- package/package.json +4 -4
- package/dist/apps/mf-menu/src/components/Announcements.vue.d.ts +0 -19
- package/dist/apps/mf-menu/src/stores/announcement/announcement.d.ts +0 -11
- package/dist/assets/linked-status-Dwqdwyog.js +0 -13
- package/dist/assets/override-menu-CGexvHxV.js +0 -13
- package/dist/assets/validate-menu-C2daBpKY.js +0 -13
- package/dist/dayjs.min-BZu87fXJ.js +0 -6
- package/dist/iteration-BoeoXAHD.js +0 -23
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ref as I, computed as ie, defineComponent as ce, createElementBlock as
|
|
1
|
+
import { ref as I, computed as ie, defineComponent as ce, createElementBlock as P, openBlock as x, Fragment as be, renderList as ye, normalizeClass as ot, createElementVNode as E, createCommentVNode as he, toDisplayString as Q, pushScopeId as lt, popScopeId as rt, watch as fe, nextTick as ve, onMounted as nt, onBeforeUnmount as st, normalizeStyle as ct, renderSlot as ut, resolveComponent as dt, createBlock as pt, withCtx as mt, createVNode as gt, defineAsyncComponent as _t } from "vue";
|
|
2
2
|
import { useBreakpoints as bt } from "@feedmepos/ui-library";
|
|
3
3
|
import { Permission as ke, withPermission as y } from "@feedmepos/mf-common";
|
|
4
4
|
let F;
|
|
@@ -32,26 +32,26 @@ function Ue(e, t) {
|
|
|
32
32
|
const { toString: wt } = Object.prototype, { getPrototypeOf: ue } = Object, V = /* @__PURE__ */ ((e) => (t) => {
|
|
33
33
|
const a = wt.call(t);
|
|
34
34
|
return e[a] || (e[a] = a.slice(8, -1).toLowerCase());
|
|
35
|
-
})(/* @__PURE__ */ Object.create(null)),
|
|
35
|
+
})(/* @__PURE__ */ Object.create(null)), O = (e) => (e = e.toLowerCase(), (t) => V(t) === e), H = (e) => (t) => typeof t === e, { isArray: U } = Array, j = H("undefined");
|
|
36
36
|
function At(e) {
|
|
37
|
-
return e !== null && !
|
|
37
|
+
return e !== null && !j(e) && e.constructor !== null && !j(e.constructor) && S(e.constructor.isBuffer) && e.constructor.isBuffer(e);
|
|
38
38
|
}
|
|
39
|
-
const De =
|
|
39
|
+
const De = O("ArrayBuffer");
|
|
40
40
|
function St(e) {
|
|
41
41
|
let t;
|
|
42
42
|
return typeof ArrayBuffer < "u" && ArrayBuffer.isView ? t = ArrayBuffer.isView(e) : t = e && e.buffer && De(e.buffer), t;
|
|
43
43
|
}
|
|
44
|
-
const xt = H("string"), S = H("function"),
|
|
44
|
+
const xt = H("string"), S = H("function"), je = H("number"), J = (e) => e !== null && typeof e == "object", qt = (e) => e === !0 || e === !1, $ = (e) => {
|
|
45
45
|
if (V(e) !== "object")
|
|
46
46
|
return !1;
|
|
47
47
|
const t = ue(e);
|
|
48
48
|
return (t === null || t === Object.prototype || Object.getPrototypeOf(t) === null) && !(Symbol.toStringTag in e) && !(Symbol.iterator in e);
|
|
49
|
-
},
|
|
49
|
+
}, Ot = O("Date"), Pt = O("File"), Ct = O("Blob"), Rt = O("FileList"), Et = (e) => J(e) && S(e.pipe), Tt = (e) => {
|
|
50
50
|
let t;
|
|
51
51
|
return e && (typeof FormData == "function" && e instanceof FormData || S(e.append) && ((t = V(e)) === "formdata" || // detect form-data instance
|
|
52
52
|
t === "object" && S(e.toString) && e.toString() === "[object FormData]"));
|
|
53
|
-
}, Nt =
|
|
54
|
-
function
|
|
53
|
+
}, Nt = O("URLSearchParams"), It = (e) => e.trim ? e.trim() : e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
|
|
54
|
+
function L(e, t, { allOwnKeys: a = !1 } = {}) {
|
|
55
55
|
if (e === null || typeof e > "u")
|
|
56
56
|
return;
|
|
57
57
|
let i, o;
|
|
@@ -59,13 +59,13 @@ function j(e, t, { allOwnKeys: a = !1 } = {}) {
|
|
|
59
59
|
for (i = 0, o = e.length; i < o; i++)
|
|
60
60
|
t.call(null, e[i], i, e);
|
|
61
61
|
else {
|
|
62
|
-
const
|
|
62
|
+
const l = a ? Object.getOwnPropertyNames(e) : Object.keys(e), r = l.length;
|
|
63
63
|
let c;
|
|
64
|
-
for (i = 0; i <
|
|
65
|
-
c =
|
|
64
|
+
for (i = 0; i < r; i++)
|
|
65
|
+
c = l[i], t.call(null, e[c], c, e);
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
|
-
function
|
|
68
|
+
function Le(e, t) {
|
|
69
69
|
t = t.toLowerCase();
|
|
70
70
|
const a = Object.keys(e);
|
|
71
71
|
let i = a.length, o;
|
|
@@ -74,30 +74,30 @@ function je(e, t) {
|
|
|
74
74
|
return o;
|
|
75
75
|
return null;
|
|
76
76
|
}
|
|
77
|
-
const Be = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global, Fe = (e) => !
|
|
77
|
+
const Be = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : global, Fe = (e) => !j(e) && e !== Be;
|
|
78
78
|
function oe() {
|
|
79
79
|
const { caseless: e } = Fe(this) && this || {}, t = {}, a = (i, o) => {
|
|
80
|
-
const
|
|
81
|
-
|
|
80
|
+
const l = e && Le(t, o) || o;
|
|
81
|
+
$(t[l]) && $(i) ? t[l] = oe(t[l], i) : $(i) ? t[l] = oe({}, i) : U(i) ? t[l] = i.slice() : t[l] = i;
|
|
82
82
|
};
|
|
83
83
|
for (let i = 0, o = arguments.length; i < o; i++)
|
|
84
|
-
arguments[i] &&
|
|
84
|
+
arguments[i] && L(arguments[i], a);
|
|
85
85
|
return t;
|
|
86
86
|
}
|
|
87
|
-
const Ut = (e, t, a, { allOwnKeys: i } = {}) => (
|
|
88
|
-
a && S(o) ? e[
|
|
89
|
-
}, { allOwnKeys: i }), e), Dt = (e) => (e.charCodeAt(0) === 65279 && (e = e.slice(1)), e),
|
|
87
|
+
const Ut = (e, t, a, { allOwnKeys: i } = {}) => (L(t, (o, l) => {
|
|
88
|
+
a && S(o) ? e[l] = Ue(o, a) : e[l] = o;
|
|
89
|
+
}, { allOwnKeys: i }), e), Dt = (e) => (e.charCodeAt(0) === 65279 && (e = e.slice(1)), e), jt = (e, t, a, i) => {
|
|
90
90
|
e.prototype = Object.create(t.prototype, i), e.prototype.constructor = e, Object.defineProperty(e, "super", {
|
|
91
91
|
value: t.prototype
|
|
92
92
|
}), a && Object.assign(e.prototype, a);
|
|
93
|
-
},
|
|
94
|
-
let o,
|
|
93
|
+
}, Lt = (e, t, a, i) => {
|
|
94
|
+
let o, l, r;
|
|
95
95
|
const c = {};
|
|
96
96
|
if (t = t || {}, e == null)
|
|
97
97
|
return t;
|
|
98
98
|
do {
|
|
99
|
-
for (o = Object.getOwnPropertyNames(e),
|
|
100
|
-
|
|
99
|
+
for (o = Object.getOwnPropertyNames(e), l = o.length; l-- > 0; )
|
|
100
|
+
r = o[l], (!i || i(r, e, t)) && !c[r] && (t[r] = e[r], c[r] = !0);
|
|
101
101
|
e = a !== !1 && ue(e);
|
|
102
102
|
} while (e && (!a || a(e, t)) && e !== Object.prototype);
|
|
103
103
|
return t;
|
|
@@ -111,38 +111,38 @@ const Ut = (e, t, a, { allOwnKeys: i } = {}) => (j(t, (o, r) => {
|
|
|
111
111
|
if (U(e))
|
|
112
112
|
return e;
|
|
113
113
|
let t = e.length;
|
|
114
|
-
if (!
|
|
114
|
+
if (!je(t))
|
|
115
115
|
return null;
|
|
116
116
|
const a = new Array(t);
|
|
117
117
|
for (; t-- > 0; )
|
|
118
118
|
a[t] = e[t];
|
|
119
119
|
return a;
|
|
120
|
-
},
|
|
120
|
+
}, $t = /* @__PURE__ */ ((e) => (t) => e && t instanceof e)(typeof Uint8Array < "u" && ue(Uint8Array)), Mt = (e, t) => {
|
|
121
121
|
const a = (e && e[Symbol.iterator]).call(e);
|
|
122
122
|
let i;
|
|
123
123
|
for (; (i = a.next()) && !i.done; ) {
|
|
124
124
|
const o = i.value;
|
|
125
125
|
t.call(e, o[0], o[1]);
|
|
126
126
|
}
|
|
127
|
-
},
|
|
127
|
+
}, Gt = (e, t) => {
|
|
128
128
|
let a;
|
|
129
129
|
const i = [];
|
|
130
130
|
for (; (a = e.exec(t)) !== null; )
|
|
131
131
|
i.push(a);
|
|
132
132
|
return i;
|
|
133
|
-
},
|
|
133
|
+
}, zt = O("HTMLFormElement"), Vt = (e) => e.toLowerCase().replace(
|
|
134
134
|
/[-_\s]([a-z\d])(\w*)/g,
|
|
135
135
|
function(t, a, i) {
|
|
136
136
|
return a.toUpperCase() + i;
|
|
137
137
|
}
|
|
138
|
-
), Ae = (({ hasOwnProperty: e }) => (t, a) => e.call(t, a))(Object.prototype), Ht =
|
|
138
|
+
), Ae = (({ hasOwnProperty: e }) => (t, a) => e.call(t, a))(Object.prototype), Ht = O("RegExp"), $e = (e, t) => {
|
|
139
139
|
const a = Object.getOwnPropertyDescriptors(e), i = {};
|
|
140
|
-
|
|
141
|
-
let
|
|
142
|
-
(
|
|
140
|
+
L(a, (o, l) => {
|
|
141
|
+
let r;
|
|
142
|
+
(r = t(o, l, e)) !== !1 && (i[l] = r || o);
|
|
143
143
|
}), Object.defineProperties(e, i);
|
|
144
144
|
}, Jt = (e) => {
|
|
145
|
-
|
|
145
|
+
$e(e, (t, a) => {
|
|
146
146
|
if (S(e) && ["arguments", "caller", "callee"].indexOf(a) !== -1)
|
|
147
147
|
return !1;
|
|
148
148
|
const i = e[a];
|
|
@@ -156,19 +156,19 @@ const Ut = (e, t, a, { allOwnKeys: i } = {}) => (j(t, (o, r) => {
|
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
});
|
|
159
|
-
},
|
|
159
|
+
}, Kt = (e, t) => {
|
|
160
160
|
const a = {}, i = (o) => {
|
|
161
|
-
o.forEach((
|
|
162
|
-
a[
|
|
161
|
+
o.forEach((l) => {
|
|
162
|
+
a[l] = !0;
|
|
163
163
|
});
|
|
164
164
|
};
|
|
165
165
|
return U(e) ? i(e) : i(String(e).split(t)), a;
|
|
166
|
-
},
|
|
167
|
-
}, Yt = (e, t) => (e = +e, Number.isFinite(e) ? e : t), X = "abcdefghijklmnopqrstuvwxyz", Se = "0123456789",
|
|
166
|
+
}, Wt = () => {
|
|
167
|
+
}, Yt = (e, t) => (e = +e, Number.isFinite(e) ? e : t), X = "abcdefghijklmnopqrstuvwxyz", Se = "0123456789", Me = {
|
|
168
168
|
DIGIT: Se,
|
|
169
169
|
ALPHA: X,
|
|
170
170
|
ALPHA_DIGIT: X + X.toUpperCase() + Se
|
|
171
|
-
}, Qt = (e = 16, t =
|
|
171
|
+
}, Qt = (e = 16, t = Me.ALPHA_DIGIT) => {
|
|
172
172
|
let a = "";
|
|
173
173
|
const { length: i } = t;
|
|
174
174
|
for (; e--; )
|
|
@@ -185,64 +185,64 @@ const Zt = (e) => {
|
|
|
185
185
|
return;
|
|
186
186
|
if (!("toJSON" in i)) {
|
|
187
187
|
t[o] = i;
|
|
188
|
-
const
|
|
189
|
-
return
|
|
190
|
-
const p = a(
|
|
191
|
-
!
|
|
192
|
-
}), t[o] = void 0,
|
|
188
|
+
const l = U(i) ? [] : {};
|
|
189
|
+
return L(i, (r, c) => {
|
|
190
|
+
const p = a(r, o + 1);
|
|
191
|
+
!j(p) && (l[c] = p);
|
|
192
|
+
}), t[o] = void 0, l;
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
return i;
|
|
196
196
|
};
|
|
197
197
|
return a(e, 0);
|
|
198
|
-
}, ea =
|
|
198
|
+
}, ea = O("AsyncFunction"), ta = (e) => e && (J(e) || S(e)) && S(e.then) && S(e.catch), n = {
|
|
199
199
|
isArray: U,
|
|
200
200
|
isArrayBuffer: De,
|
|
201
201
|
isBuffer: At,
|
|
202
202
|
isFormData: Tt,
|
|
203
203
|
isArrayBufferView: St,
|
|
204
204
|
isString: xt,
|
|
205
|
-
isNumber:
|
|
206
|
-
isBoolean:
|
|
205
|
+
isNumber: je,
|
|
206
|
+
isBoolean: qt,
|
|
207
207
|
isObject: J,
|
|
208
|
-
isPlainObject:
|
|
209
|
-
isUndefined:
|
|
210
|
-
isDate:
|
|
211
|
-
isFile:
|
|
212
|
-
isBlob:
|
|
208
|
+
isPlainObject: $,
|
|
209
|
+
isUndefined: j,
|
|
210
|
+
isDate: Ot,
|
|
211
|
+
isFile: Pt,
|
|
212
|
+
isBlob: Ct,
|
|
213
213
|
isRegExp: Ht,
|
|
214
214
|
isFunction: S,
|
|
215
|
-
isStream:
|
|
215
|
+
isStream: Et,
|
|
216
216
|
isURLSearchParams: Nt,
|
|
217
|
-
isTypedArray:
|
|
218
|
-
isFileList:
|
|
219
|
-
forEach:
|
|
217
|
+
isTypedArray: $t,
|
|
218
|
+
isFileList: Rt,
|
|
219
|
+
forEach: L,
|
|
220
220
|
merge: oe,
|
|
221
221
|
extend: Ut,
|
|
222
222
|
trim: It,
|
|
223
223
|
stripBOM: Dt,
|
|
224
|
-
inherits:
|
|
225
|
-
toFlatObject:
|
|
224
|
+
inherits: jt,
|
|
225
|
+
toFlatObject: Lt,
|
|
226
226
|
kindOf: V,
|
|
227
|
-
kindOfTest:
|
|
227
|
+
kindOfTest: O,
|
|
228
228
|
endsWith: Bt,
|
|
229
229
|
toArray: Ft,
|
|
230
|
-
forEachEntry:
|
|
231
|
-
matchAll:
|
|
232
|
-
isHTMLForm:
|
|
230
|
+
forEachEntry: Mt,
|
|
231
|
+
matchAll: Gt,
|
|
232
|
+
isHTMLForm: zt,
|
|
233
233
|
hasOwnProperty: Ae,
|
|
234
234
|
hasOwnProp: Ae,
|
|
235
235
|
// an alias to avoid ESLint no-prototype-builtins detection
|
|
236
|
-
reduceDescriptors:
|
|
236
|
+
reduceDescriptors: $e,
|
|
237
237
|
freezeMethods: Jt,
|
|
238
|
-
toObjectSet:
|
|
238
|
+
toObjectSet: Kt,
|
|
239
239
|
toCamelCase: Vt,
|
|
240
|
-
noop:
|
|
240
|
+
noop: Wt,
|
|
241
241
|
toFiniteNumber: Yt,
|
|
242
|
-
findKey:
|
|
242
|
+
findKey: Le,
|
|
243
243
|
global: Be,
|
|
244
244
|
isContextDefined: Fe,
|
|
245
|
-
ALPHABET:
|
|
245
|
+
ALPHABET: Me,
|
|
246
246
|
generateString: Qt,
|
|
247
247
|
isSpecCompliantForm: Xt,
|
|
248
248
|
toJSONObject: Zt,
|
|
@@ -252,7 +252,7 @@ const Zt = (e) => {
|
|
|
252
252
|
function _(e, t, a, i, o) {
|
|
253
253
|
Error.call(this), Error.captureStackTrace ? Error.captureStackTrace(this, this.constructor) : this.stack = new Error().stack, this.message = e, this.name = "AxiosError", t && (this.code = t), a && (this.config = a), i && (this.request = i), o && (this.response = o);
|
|
254
254
|
}
|
|
255
|
-
|
|
255
|
+
n.inherits(_, Error, {
|
|
256
256
|
toJSON: function() {
|
|
257
257
|
return {
|
|
258
258
|
// Standard
|
|
@@ -267,13 +267,13 @@ l.inherits(_, Error, {
|
|
|
267
267
|
columnNumber: this.columnNumber,
|
|
268
268
|
stack: this.stack,
|
|
269
269
|
// Axios
|
|
270
|
-
config:
|
|
270
|
+
config: n.toJSONObject(this.config),
|
|
271
271
|
code: this.code,
|
|
272
272
|
status: this.response && this.response.status ? this.response.status : null
|
|
273
273
|
};
|
|
274
274
|
}
|
|
275
275
|
});
|
|
276
|
-
const
|
|
276
|
+
const Ge = _.prototype, ze = {};
|
|
277
277
|
[
|
|
278
278
|
"ERR_BAD_OPTION_VALUE",
|
|
279
279
|
"ERR_BAD_OPTION",
|
|
@@ -289,22 +289,22 @@ const ze = _.prototype, Ge = {};
|
|
|
289
289
|
"ERR_INVALID_URL"
|
|
290
290
|
// eslint-disable-next-line func-names
|
|
291
291
|
].forEach((e) => {
|
|
292
|
-
|
|
292
|
+
ze[e] = { value: e };
|
|
293
293
|
});
|
|
294
|
-
Object.defineProperties(_,
|
|
295
|
-
Object.defineProperty(
|
|
296
|
-
_.from = (e, t, a, i, o,
|
|
297
|
-
const
|
|
298
|
-
return
|
|
294
|
+
Object.defineProperties(_, ze);
|
|
295
|
+
Object.defineProperty(Ge, "isAxiosError", { value: !0 });
|
|
296
|
+
_.from = (e, t, a, i, o, l) => {
|
|
297
|
+
const r = Object.create(Ge);
|
|
298
|
+
return n.toFlatObject(e, r, function(c) {
|
|
299
299
|
return c !== Error.prototype;
|
|
300
|
-
}, (c) => c !== "isAxiosError"), _.call(
|
|
300
|
+
}, (c) => c !== "isAxiosError"), _.call(r, e.message, t, a, i, o), r.cause = e, r.name = e.name, l && Object.assign(r, l), r;
|
|
301
301
|
};
|
|
302
302
|
const aa = null;
|
|
303
|
-
function
|
|
304
|
-
return
|
|
303
|
+
function le(e) {
|
|
304
|
+
return n.isPlainObject(e) || n.isArray(e);
|
|
305
305
|
}
|
|
306
306
|
function Ve(e) {
|
|
307
|
-
return
|
|
307
|
+
return n.endsWith(e, "[]") ? e.slice(0, -2) : e;
|
|
308
308
|
}
|
|
309
309
|
function xe(e, t, a) {
|
|
310
310
|
return e ? e.concat(t).map(function(i, o) {
|
|
@@ -312,74 +312,74 @@ function xe(e, t, a) {
|
|
|
312
312
|
}).join(a ? "." : "") : t;
|
|
313
313
|
}
|
|
314
314
|
function ia(e) {
|
|
315
|
-
return
|
|
315
|
+
return n.isArray(e) && !e.some(le);
|
|
316
316
|
}
|
|
317
|
-
const oa =
|
|
317
|
+
const oa = n.toFlatObject(n, {}, null, function(e) {
|
|
318
318
|
return /^is[A-Z]/.test(e);
|
|
319
319
|
});
|
|
320
|
-
function
|
|
321
|
-
if (!
|
|
320
|
+
function K(e, t, a) {
|
|
321
|
+
if (!n.isObject(e))
|
|
322
322
|
throw new TypeError("target must be an object");
|
|
323
|
-
t = t || new FormData(), a =
|
|
323
|
+
t = t || new FormData(), a = n.toFlatObject(a, {
|
|
324
324
|
metaTokens: !0,
|
|
325
325
|
dots: !1,
|
|
326
326
|
indexes: !1
|
|
327
327
|
}, !1, function(g, u) {
|
|
328
|
-
return !
|
|
328
|
+
return !n.isUndefined(u[g]);
|
|
329
329
|
});
|
|
330
|
-
const i = a.metaTokens, o = a.visitor || d,
|
|
331
|
-
if (!
|
|
330
|
+
const i = a.metaTokens, o = a.visitor || d, l = a.dots, r = a.indexes, c = (a.Blob || typeof Blob < "u" && Blob) && n.isSpecCompliantForm(t);
|
|
331
|
+
if (!n.isFunction(o))
|
|
332
332
|
throw new TypeError("visitor must be a function");
|
|
333
333
|
function p(g) {
|
|
334
334
|
if (g === null)
|
|
335
335
|
return "";
|
|
336
|
-
if (
|
|
336
|
+
if (n.isDate(g))
|
|
337
337
|
return g.toISOString();
|
|
338
|
-
if (!c &&
|
|
338
|
+
if (!c && n.isBlob(g))
|
|
339
339
|
throw new _("Blob is not supported. Use a Buffer instead.");
|
|
340
|
-
return
|
|
340
|
+
return n.isArrayBuffer(g) || n.isTypedArray(g) ? c && typeof Blob == "function" ? new Blob([g]) : Buffer.from(g) : g;
|
|
341
341
|
}
|
|
342
342
|
function d(g, u, v) {
|
|
343
343
|
let A = g;
|
|
344
344
|
if (g && !v && typeof g == "object") {
|
|
345
|
-
if (
|
|
345
|
+
if (n.endsWith(u, "{}"))
|
|
346
346
|
u = i ? u : u.slice(0, -2), g = JSON.stringify(g);
|
|
347
|
-
else if (
|
|
347
|
+
else if (n.isArray(g) && ia(g) || (n.isFileList(g) || n.endsWith(u, "[]")) && (A = n.toArray(g)))
|
|
348
348
|
return u = Ve(u), A.forEach(function(Y, it) {
|
|
349
|
-
!(
|
|
349
|
+
!(n.isUndefined(Y) || Y === null) && t.append(
|
|
350
350
|
// eslint-disable-next-line no-nested-ternary
|
|
351
|
-
|
|
351
|
+
r === !0 ? xe([u], it, l) : r === null ? u : u + "[]",
|
|
352
352
|
p(Y)
|
|
353
353
|
);
|
|
354
354
|
}), !1;
|
|
355
355
|
}
|
|
356
|
-
return
|
|
356
|
+
return le(g) ? !0 : (t.append(xe(v, u, l), p(g)), !1);
|
|
357
357
|
}
|
|
358
358
|
const s = [], m = Object.assign(oa, {
|
|
359
359
|
defaultVisitor: d,
|
|
360
360
|
convertValue: p,
|
|
361
|
-
isVisitable:
|
|
361
|
+
isVisitable: le
|
|
362
362
|
});
|
|
363
363
|
function f(g, u) {
|
|
364
|
-
if (!
|
|
364
|
+
if (!n.isUndefined(g)) {
|
|
365
365
|
if (s.indexOf(g) !== -1)
|
|
366
366
|
throw Error("Circular reference detected in " + u.join("."));
|
|
367
|
-
s.push(g),
|
|
368
|
-
(!(
|
|
367
|
+
s.push(g), n.forEach(g, function(v, A) {
|
|
368
|
+
(!(n.isUndefined(v) || v === null) && o.call(
|
|
369
369
|
t,
|
|
370
370
|
v,
|
|
371
|
-
|
|
371
|
+
n.isString(A) ? A.trim() : A,
|
|
372
372
|
u,
|
|
373
373
|
m
|
|
374
374
|
)) === !0 && f(v, u ? u.concat(A) : [A]);
|
|
375
375
|
}), s.pop();
|
|
376
376
|
}
|
|
377
377
|
}
|
|
378
|
-
if (!
|
|
378
|
+
if (!n.isObject(e))
|
|
379
379
|
throw new TypeError("data must be an object");
|
|
380
380
|
return f(e), t;
|
|
381
381
|
}
|
|
382
|
-
function
|
|
382
|
+
function qe(e) {
|
|
383
383
|
const t = {
|
|
384
384
|
"!": "%21",
|
|
385
385
|
"'": "%27",
|
|
@@ -394,7 +394,7 @@ function Oe(e) {
|
|
|
394
394
|
});
|
|
395
395
|
}
|
|
396
396
|
function de(e, t) {
|
|
397
|
-
this._pairs = [], e &&
|
|
397
|
+
this._pairs = [], e && K(e, this, t);
|
|
398
398
|
}
|
|
399
399
|
const He = de.prototype;
|
|
400
400
|
He.append = function(e, t) {
|
|
@@ -402,27 +402,27 @@ He.append = function(e, t) {
|
|
|
402
402
|
};
|
|
403
403
|
He.toString = function(e) {
|
|
404
404
|
const t = e ? function(a) {
|
|
405
|
-
return e.call(this, a,
|
|
406
|
-
} :
|
|
405
|
+
return e.call(this, a, qe);
|
|
406
|
+
} : qe;
|
|
407
407
|
return this._pairs.map(function(a) {
|
|
408
408
|
return t(a[0]) + "=" + t(a[1]);
|
|
409
409
|
}, "").join("&");
|
|
410
410
|
};
|
|
411
|
-
function
|
|
411
|
+
function la(e) {
|
|
412
412
|
return encodeURIComponent(e).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
|
|
413
413
|
}
|
|
414
414
|
function Je(e, t, a) {
|
|
415
415
|
if (!t)
|
|
416
416
|
return e;
|
|
417
|
-
const i = a && a.encode ||
|
|
418
|
-
let
|
|
419
|
-
if (o ?
|
|
420
|
-
const
|
|
421
|
-
|
|
417
|
+
const i = a && a.encode || la, o = a && a.serialize;
|
|
418
|
+
let l;
|
|
419
|
+
if (o ? l = o(t, a) : l = n.isURLSearchParams(t) ? t.toString() : new de(t, a).toString(i), l) {
|
|
420
|
+
const r = e.indexOf("#");
|
|
421
|
+
r !== -1 && (e = e.slice(0, r)), e += (e.indexOf("?") === -1 ? "?" : "&") + l;
|
|
422
422
|
}
|
|
423
423
|
return e;
|
|
424
424
|
}
|
|
425
|
-
class
|
|
425
|
+
class Oe {
|
|
426
426
|
constructor() {
|
|
427
427
|
this.handlers = [];
|
|
428
428
|
}
|
|
@@ -471,72 +471,72 @@ class Ce {
|
|
|
471
471
|
* @returns {void}
|
|
472
472
|
*/
|
|
473
473
|
forEach(t) {
|
|
474
|
-
|
|
474
|
+
n.forEach(this.handlers, function(a) {
|
|
475
475
|
a !== null && t(a);
|
|
476
476
|
});
|
|
477
477
|
}
|
|
478
478
|
}
|
|
479
|
-
const
|
|
479
|
+
const Ke = {
|
|
480
480
|
silentJSONParsing: !0,
|
|
481
481
|
forcedJSONParsing: !0,
|
|
482
482
|
clarifyTimeoutError: !1
|
|
483
|
-
},
|
|
483
|
+
}, ra = typeof URLSearchParams < "u" ? URLSearchParams : de, na = typeof FormData < "u" ? FormData : null, sa = typeof Blob < "u" ? Blob : null, ca = {
|
|
484
484
|
isBrowser: !0,
|
|
485
485
|
classes: {
|
|
486
|
-
URLSearchParams:
|
|
487
|
-
FormData:
|
|
486
|
+
URLSearchParams: ra,
|
|
487
|
+
FormData: na,
|
|
488
488
|
Blob: sa
|
|
489
489
|
},
|
|
490
490
|
protocols: ["http", "https", "file", "blob", "url", "data"]
|
|
491
|
-
},
|
|
491
|
+
}, We = typeof window < "u" && typeof document < "u", ua = ((e) => We && ["ReactNative", "NativeScript", "NS"].indexOf(e) < 0)(typeof navigator < "u" && navigator.product), da = typeof WorkerGlobalScope < "u" && // eslint-disable-next-line no-undef
|
|
492
492
|
self instanceof WorkerGlobalScope && typeof self.importScripts == "function", pa = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
493
493
|
__proto__: null,
|
|
494
|
-
hasBrowserEnv:
|
|
494
|
+
hasBrowserEnv: We,
|
|
495
495
|
hasStandardBrowserEnv: ua,
|
|
496
496
|
hasStandardBrowserWebWorkerEnv: da
|
|
497
|
-
}, Symbol.toStringTag, { value: "Module" })),
|
|
497
|
+
}, Symbol.toStringTag, { value: "Module" })), q = {
|
|
498
498
|
...pa,
|
|
499
499
|
...ca
|
|
500
500
|
};
|
|
501
501
|
function ma(e, t) {
|
|
502
|
-
return
|
|
503
|
-
visitor: function(a, i, o,
|
|
504
|
-
return
|
|
502
|
+
return K(e, new q.classes.URLSearchParams(), Object.assign({
|
|
503
|
+
visitor: function(a, i, o, l) {
|
|
504
|
+
return q.isNode && n.isBuffer(a) ? (this.append(i, a.toString("base64")), !1) : l.defaultVisitor.apply(this, arguments);
|
|
505
505
|
}
|
|
506
506
|
}, t));
|
|
507
507
|
}
|
|
508
508
|
function ga(e) {
|
|
509
|
-
return
|
|
509
|
+
return n.matchAll(/\w+|\[(\w*)]/g, e).map((t) => t[0] === "[]" ? "" : t[1] || t[0]);
|
|
510
510
|
}
|
|
511
511
|
function _a(e) {
|
|
512
512
|
const t = {}, a = Object.keys(e);
|
|
513
513
|
let i;
|
|
514
514
|
const o = a.length;
|
|
515
|
-
let
|
|
515
|
+
let l;
|
|
516
516
|
for (i = 0; i < o; i++)
|
|
517
|
-
|
|
517
|
+
l = a[i], t[l] = e[l];
|
|
518
518
|
return t;
|
|
519
519
|
}
|
|
520
520
|
function Ye(e) {
|
|
521
|
-
function t(a, i, o,
|
|
522
|
-
let
|
|
523
|
-
if (
|
|
521
|
+
function t(a, i, o, l) {
|
|
522
|
+
let r = a[l++];
|
|
523
|
+
if (r === "__proto__")
|
|
524
524
|
return !0;
|
|
525
|
-
const c = Number.isFinite(+
|
|
526
|
-
return
|
|
525
|
+
const c = Number.isFinite(+r), p = l >= a.length;
|
|
526
|
+
return r = !r && n.isArray(o) ? o.length : r, p ? (n.hasOwnProp(o, r) ? o[r] = [o[r], i] : o[r] = i, !c) : ((!o[r] || !n.isObject(o[r])) && (o[r] = []), t(a, i, o[r], l) && n.isArray(o[r]) && (o[r] = _a(o[r])), !c);
|
|
527
527
|
}
|
|
528
|
-
if (
|
|
528
|
+
if (n.isFormData(e) && n.isFunction(e.entries)) {
|
|
529
529
|
const a = {};
|
|
530
|
-
return
|
|
530
|
+
return n.forEachEntry(e, (i, o) => {
|
|
531
531
|
t(ga(i), o, a, 0);
|
|
532
532
|
}), a;
|
|
533
533
|
}
|
|
534
534
|
return null;
|
|
535
535
|
}
|
|
536
536
|
function ba(e, t, a) {
|
|
537
|
-
if (
|
|
537
|
+
if (n.isString(e))
|
|
538
538
|
try {
|
|
539
|
-
return (t || JSON.parse)(e),
|
|
539
|
+
return (t || JSON.parse)(e), n.trim(e);
|
|
540
540
|
} catch (i) {
|
|
541
541
|
if (i.name !== "SyntaxError")
|
|
542
542
|
throw i;
|
|
@@ -544,27 +544,27 @@ function ba(e, t, a) {
|
|
|
544
544
|
return (a || JSON.stringify)(e);
|
|
545
545
|
}
|
|
546
546
|
const pe = {
|
|
547
|
-
transitional:
|
|
547
|
+
transitional: Ke,
|
|
548
548
|
adapter: ["xhr", "http"],
|
|
549
549
|
transformRequest: [function(e, t) {
|
|
550
|
-
const a = t.getContentType() || "", i = a.indexOf("application/json") > -1, o =
|
|
551
|
-
if (o &&
|
|
550
|
+
const a = t.getContentType() || "", i = a.indexOf("application/json") > -1, o = n.isObject(e);
|
|
551
|
+
if (o && n.isHTMLForm(e) && (e = new FormData(e)), n.isFormData(e))
|
|
552
552
|
return i && i ? JSON.stringify(Ye(e)) : e;
|
|
553
|
-
if (
|
|
553
|
+
if (n.isArrayBuffer(e) || n.isBuffer(e) || n.isStream(e) || n.isFile(e) || n.isBlob(e))
|
|
554
554
|
return e;
|
|
555
|
-
if (
|
|
555
|
+
if (n.isArrayBufferView(e))
|
|
556
556
|
return e.buffer;
|
|
557
|
-
if (
|
|
557
|
+
if (n.isURLSearchParams(e))
|
|
558
558
|
return t.setContentType("application/x-www-form-urlencoded;charset=utf-8", !1), e.toString();
|
|
559
|
-
let
|
|
559
|
+
let l;
|
|
560
560
|
if (o) {
|
|
561
561
|
if (a.indexOf("application/x-www-form-urlencoded") > -1)
|
|
562
562
|
return ma(e, this.formSerializer).toString();
|
|
563
|
-
if ((
|
|
564
|
-
const
|
|
565
|
-
return
|
|
566
|
-
|
|
567
|
-
|
|
563
|
+
if ((l = n.isFileList(e)) || a.indexOf("multipart/form-data") > -1) {
|
|
564
|
+
const r = this.env && this.env.FormData;
|
|
565
|
+
return K(
|
|
566
|
+
l ? { "files[]": e } : e,
|
|
567
|
+
r && new r(),
|
|
568
568
|
this.formSerializer
|
|
569
569
|
);
|
|
570
570
|
}
|
|
@@ -573,13 +573,13 @@ const pe = {
|
|
|
573
573
|
}],
|
|
574
574
|
transformResponse: [function(e) {
|
|
575
575
|
const t = this.transitional || pe.transitional, a = t && t.forcedJSONParsing, i = this.responseType === "json";
|
|
576
|
-
if (e &&
|
|
576
|
+
if (e && n.isString(e) && (a && !this.responseType || i)) {
|
|
577
577
|
const o = !(t && t.silentJSONParsing) && i;
|
|
578
578
|
try {
|
|
579
579
|
return JSON.parse(e);
|
|
580
|
-
} catch (
|
|
580
|
+
} catch (l) {
|
|
581
581
|
if (o)
|
|
582
|
-
throw
|
|
582
|
+
throw l.name === "SyntaxError" ? _.from(l, _.ERR_BAD_RESPONSE, this, null, this.response) : l;
|
|
583
583
|
}
|
|
584
584
|
}
|
|
585
585
|
return e;
|
|
@@ -594,8 +594,8 @@ const pe = {
|
|
|
594
594
|
maxContentLength: -1,
|
|
595
595
|
maxBodyLength: -1,
|
|
596
596
|
env: {
|
|
597
|
-
FormData:
|
|
598
|
-
Blob:
|
|
597
|
+
FormData: q.classes.FormData,
|
|
598
|
+
Blob: q.classes.Blob
|
|
599
599
|
},
|
|
600
600
|
validateStatus: function(e) {
|
|
601
601
|
return e >= 200 && e < 300;
|
|
@@ -607,10 +607,10 @@ const pe = {
|
|
|
607
607
|
}
|
|
608
608
|
}
|
|
609
609
|
};
|
|
610
|
-
|
|
610
|
+
n.forEach(["delete", "get", "head", "post", "put", "patch"], (e) => {
|
|
611
611
|
pe.headers[e] = {};
|
|
612
612
|
});
|
|
613
|
-
const me = pe, ya =
|
|
613
|
+
const me = pe, ya = n.toObjectSet([
|
|
614
614
|
"age",
|
|
615
615
|
"authorization",
|
|
616
616
|
"content-length",
|
|
@@ -632,15 +632,15 @@ const me = pe, ya = l.toObjectSet([
|
|
|
632
632
|
const t = {};
|
|
633
633
|
let a, i, o;
|
|
634
634
|
return e && e.split(`
|
|
635
|
-
`).forEach(function(
|
|
636
|
-
o =
|
|
635
|
+
`).forEach(function(l) {
|
|
636
|
+
o = l.indexOf(":"), a = l.substring(0, o).trim().toLowerCase(), i = l.substring(o + 1).trim(), !(!a || t[a] && ya[a]) && (a === "set-cookie" ? t[a] ? t[a].push(i) : t[a] = [i] : t[a] = t[a] ? t[a] + ", " + i : i);
|
|
637
637
|
}), t;
|
|
638
|
-
},
|
|
638
|
+
}, Pe = Symbol("internals");
|
|
639
639
|
function D(e) {
|
|
640
640
|
return e && String(e).trim().toLowerCase();
|
|
641
641
|
}
|
|
642
|
-
function
|
|
643
|
-
return e === !1 || e == null ? e :
|
|
642
|
+
function M(e) {
|
|
643
|
+
return e === !1 || e == null ? e : n.isArray(e) ? e.map(M) : String(e);
|
|
644
644
|
}
|
|
645
645
|
function fa(e) {
|
|
646
646
|
const t = /* @__PURE__ */ Object.create(null), a = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
|
|
@@ -651,12 +651,12 @@ function fa(e) {
|
|
|
651
651
|
}
|
|
652
652
|
const va = (e) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(e.trim());
|
|
653
653
|
function Z(e, t, a, i, o) {
|
|
654
|
-
if (
|
|
654
|
+
if (n.isFunction(i))
|
|
655
655
|
return i.call(this, t, a);
|
|
656
|
-
if (o && (t = a), !!
|
|
657
|
-
if (
|
|
656
|
+
if (o && (t = a), !!n.isString(t)) {
|
|
657
|
+
if (n.isString(i))
|
|
658
658
|
return t.indexOf(i) !== -1;
|
|
659
|
-
if (
|
|
659
|
+
if (n.isRegExp(i))
|
|
660
660
|
return i.test(t);
|
|
661
661
|
}
|
|
662
662
|
}
|
|
@@ -664,44 +664,44 @@ function ka(e) {
|
|
|
664
664
|
return e.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (t, a, i) => a.toUpperCase() + i);
|
|
665
665
|
}
|
|
666
666
|
function wa(e, t) {
|
|
667
|
-
const a =
|
|
667
|
+
const a = n.toCamelCase(" " + t);
|
|
668
668
|
["get", "set", "has"].forEach((i) => {
|
|
669
669
|
Object.defineProperty(e, i + a, {
|
|
670
|
-
value: function(o,
|
|
671
|
-
return this[i].call(this, t, o,
|
|
670
|
+
value: function(o, l, r) {
|
|
671
|
+
return this[i].call(this, t, o, l, r);
|
|
672
672
|
},
|
|
673
673
|
configurable: !0
|
|
674
674
|
});
|
|
675
675
|
});
|
|
676
676
|
}
|
|
677
|
-
class
|
|
677
|
+
class W {
|
|
678
678
|
constructor(t) {
|
|
679
679
|
t && this.set(t);
|
|
680
680
|
}
|
|
681
681
|
set(t, a, i) {
|
|
682
682
|
const o = this;
|
|
683
|
-
function
|
|
683
|
+
function l(c, p, d) {
|
|
684
684
|
const s = D(p);
|
|
685
685
|
if (!s)
|
|
686
686
|
throw new Error("header name must be a non-empty string");
|
|
687
|
-
const m =
|
|
688
|
-
(!m || o[m] === void 0 || d === !0 || d === void 0 && o[m] !== !1) && (o[m || p] =
|
|
687
|
+
const m = n.findKey(o, s);
|
|
688
|
+
(!m || o[m] === void 0 || d === !0 || d === void 0 && o[m] !== !1) && (o[m || p] = M(c));
|
|
689
689
|
}
|
|
690
|
-
const
|
|
691
|
-
return
|
|
690
|
+
const r = (c, p) => n.forEach(c, (d, s) => l(d, s, p));
|
|
691
|
+
return n.isPlainObject(t) || t instanceof this.constructor ? r(t, a) : n.isString(t) && (t = t.trim()) && !va(t) ? r(ha(t), a) : t != null && l(a, t, i), this;
|
|
692
692
|
}
|
|
693
693
|
get(t, a) {
|
|
694
694
|
if (t = D(t), t) {
|
|
695
|
-
const i =
|
|
695
|
+
const i = n.findKey(this, t);
|
|
696
696
|
if (i) {
|
|
697
697
|
const o = this[i];
|
|
698
698
|
if (!a)
|
|
699
699
|
return o;
|
|
700
700
|
if (a === !0)
|
|
701
701
|
return fa(o);
|
|
702
|
-
if (
|
|
702
|
+
if (n.isFunction(a))
|
|
703
703
|
return a.call(this, o, i);
|
|
704
|
-
if (
|
|
704
|
+
if (n.isRegExp(a))
|
|
705
705
|
return a.exec(o);
|
|
706
706
|
throw new TypeError("parser must be boolean|regexp|function");
|
|
707
707
|
}
|
|
@@ -709,7 +709,7 @@ class K {
|
|
|
709
709
|
}
|
|
710
710
|
has(t, a) {
|
|
711
711
|
if (t = D(t), t) {
|
|
712
|
-
const i =
|
|
712
|
+
const i = n.findKey(this, t);
|
|
713
713
|
return !!(i && this[i] !== void 0 && (!a || Z(this, this[i], i, a)));
|
|
714
714
|
}
|
|
715
715
|
return !1;
|
|
@@ -717,33 +717,33 @@ class K {
|
|
|
717
717
|
delete(t, a) {
|
|
718
718
|
const i = this;
|
|
719
719
|
let o = !1;
|
|
720
|
-
function r
|
|
721
|
-
if (
|
|
722
|
-
const c =
|
|
720
|
+
function l(r) {
|
|
721
|
+
if (r = D(r), r) {
|
|
722
|
+
const c = n.findKey(i, r);
|
|
723
723
|
c && (!a || Z(i, i[c], c, a)) && (delete i[c], o = !0);
|
|
724
724
|
}
|
|
725
725
|
}
|
|
726
|
-
return
|
|
726
|
+
return n.isArray(t) ? t.forEach(l) : l(t), o;
|
|
727
727
|
}
|
|
728
728
|
clear(t) {
|
|
729
729
|
const a = Object.keys(this);
|
|
730
730
|
let i = a.length, o = !1;
|
|
731
731
|
for (; i--; ) {
|
|
732
|
-
const
|
|
733
|
-
(!t || Z(this, this[
|
|
732
|
+
const l = a[i];
|
|
733
|
+
(!t || Z(this, this[l], l, t, !0)) && (delete this[l], o = !0);
|
|
734
734
|
}
|
|
735
735
|
return o;
|
|
736
736
|
}
|
|
737
737
|
normalize(t) {
|
|
738
738
|
const a = this, i = {};
|
|
739
|
-
return
|
|
740
|
-
const
|
|
741
|
-
if (
|
|
742
|
-
a[
|
|
739
|
+
return n.forEach(this, (o, l) => {
|
|
740
|
+
const r = n.findKey(i, l);
|
|
741
|
+
if (r) {
|
|
742
|
+
a[r] = M(o), delete a[l];
|
|
743
743
|
return;
|
|
744
744
|
}
|
|
745
|
-
const c = t ? ka(
|
|
746
|
-
c !==
|
|
745
|
+
const c = t ? ka(l) : String(l).trim();
|
|
746
|
+
c !== l && delete a[l], a[c] = M(o), i[c] = !0;
|
|
747
747
|
}), this;
|
|
748
748
|
}
|
|
749
749
|
concat(...t) {
|
|
@@ -751,8 +751,8 @@ class K {
|
|
|
751
751
|
}
|
|
752
752
|
toJSON(t) {
|
|
753
753
|
const a = /* @__PURE__ */ Object.create(null);
|
|
754
|
-
return
|
|
755
|
-
i != null && i !== !1 && (a[o] = t &&
|
|
754
|
+
return n.forEach(this, (i, o) => {
|
|
755
|
+
i != null && i !== !1 && (a[o] = t && n.isArray(i) ? i.join(", ") : i);
|
|
756
756
|
}), a;
|
|
757
757
|
}
|
|
758
758
|
[Symbol.iterator]() {
|
|
@@ -773,18 +773,18 @@ class K {
|
|
|
773
773
|
return a.forEach((o) => i.set(o)), i;
|
|
774
774
|
}
|
|
775
775
|
static accessor(t) {
|
|
776
|
-
const a = (this[
|
|
776
|
+
const a = (this[Pe] = this[Pe] = {
|
|
777
777
|
accessors: {}
|
|
778
778
|
}).accessors, i = this.prototype;
|
|
779
|
-
function o(
|
|
780
|
-
const
|
|
781
|
-
a[
|
|
779
|
+
function o(l) {
|
|
780
|
+
const r = D(l);
|
|
781
|
+
a[r] || (wa(i, l), a[r] = !0);
|
|
782
782
|
}
|
|
783
|
-
return
|
|
783
|
+
return n.isArray(t) ? t.forEach(o) : o(t), this;
|
|
784
784
|
}
|
|
785
785
|
}
|
|
786
|
-
|
|
787
|
-
|
|
786
|
+
W.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]);
|
|
787
|
+
n.reduceDescriptors(W.prototype, ({ value: e }, t) => {
|
|
788
788
|
let a = t[0].toUpperCase() + t.slice(1);
|
|
789
789
|
return {
|
|
790
790
|
get: () => e,
|
|
@@ -793,14 +793,14 @@ l.reduceDescriptors(K.prototype, ({ value: e }, t) => {
|
|
|
793
793
|
}
|
|
794
794
|
};
|
|
795
795
|
});
|
|
796
|
-
|
|
797
|
-
const
|
|
796
|
+
n.freezeMethods(W);
|
|
797
|
+
const C = W;
|
|
798
798
|
function ee(e, t) {
|
|
799
|
-
const a = this || me, i = t || a, o =
|
|
800
|
-
let
|
|
801
|
-
return
|
|
802
|
-
|
|
803
|
-
}), o.normalize(),
|
|
799
|
+
const a = this || me, i = t || a, o = C.from(i.headers);
|
|
800
|
+
let l = i.data;
|
|
801
|
+
return n.forEach(e, function(r) {
|
|
802
|
+
l = r.call(a, l, o.normalize(), t ? t.status : void 0);
|
|
803
|
+
}), o.normalize(), l;
|
|
804
804
|
}
|
|
805
805
|
function Qe(e) {
|
|
806
806
|
return !!(e && e.__CANCEL__);
|
|
@@ -808,7 +808,7 @@ function Qe(e) {
|
|
|
808
808
|
function B(e, t, a) {
|
|
809
809
|
_.call(this, e ?? "canceled", _.ERR_CANCELED, t, a), this.name = "CanceledError";
|
|
810
810
|
}
|
|
811
|
-
|
|
811
|
+
n.inherits(B, _, {
|
|
812
812
|
__CANCEL__: !0
|
|
813
813
|
});
|
|
814
814
|
function Aa(e, t, a) {
|
|
@@ -821,12 +821,12 @@ function Aa(e, t, a) {
|
|
|
821
821
|
a
|
|
822
822
|
));
|
|
823
823
|
}
|
|
824
|
-
const Sa =
|
|
824
|
+
const Sa = q.hasStandardBrowserEnv ? (
|
|
825
825
|
// Standard browser envs support document.cookie
|
|
826
826
|
{
|
|
827
|
-
write(e, t, a, i, o,
|
|
828
|
-
const
|
|
829
|
-
|
|
827
|
+
write(e, t, a, i, o, l) {
|
|
828
|
+
const r = [e + "=" + encodeURIComponent(t)];
|
|
829
|
+
n.isNumber(a) && r.push("expires=" + new Date(a).toGMTString()), n.isString(i) && r.push("path=" + i), n.isString(o) && r.push("domain=" + o), l === !0 && r.push("secure"), document.cookie = r.join("; ");
|
|
830
830
|
},
|
|
831
831
|
read(e) {
|
|
832
832
|
const t = document.cookie.match(new RegExp("(^|;\\s*)(" + e + ")=([^;]*)"));
|
|
@@ -851,21 +851,21 @@ const Sa = O.hasStandardBrowserEnv ? (
|
|
|
851
851
|
function xa(e) {
|
|
852
852
|
return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(e);
|
|
853
853
|
}
|
|
854
|
-
function
|
|
854
|
+
function qa(e, t) {
|
|
855
855
|
return t ? e.replace(/\/?\/$/, "") + "/" + t.replace(/^\/+/, "") : e;
|
|
856
856
|
}
|
|
857
857
|
function Xe(e, t) {
|
|
858
|
-
return e && !xa(t) ?
|
|
858
|
+
return e && !xa(t) ? qa(e, t) : t;
|
|
859
859
|
}
|
|
860
|
-
const
|
|
860
|
+
const Oa = q.hasStandardBrowserEnv ? (
|
|
861
861
|
// Standard browser envs have full support of the APIs needed to test
|
|
862
862
|
// whether the request URL is of the same origin as current location.
|
|
863
863
|
function() {
|
|
864
864
|
const e = /(msie|trident)/i.test(navigator.userAgent), t = document.createElement("a");
|
|
865
865
|
let a;
|
|
866
866
|
function i(o) {
|
|
867
|
-
let
|
|
868
|
-
return e && (t.setAttribute("href",
|
|
867
|
+
let l = o;
|
|
868
|
+
return e && (t.setAttribute("href", l), l = t.href), t.setAttribute("href", l), {
|
|
869
869
|
href: t.href,
|
|
870
870
|
protocol: t.protocol ? t.protocol.replace(/:$/, "") : "",
|
|
871
871
|
host: t.host,
|
|
@@ -877,8 +877,8 @@ const Ca = O.hasStandardBrowserEnv ? (
|
|
|
877
877
|
};
|
|
878
878
|
}
|
|
879
879
|
return a = i(window.location.href), function(o) {
|
|
880
|
-
const
|
|
881
|
-
return
|
|
880
|
+
const l = n.isString(o) ? i(o) : o;
|
|
881
|
+
return l.protocol === a.protocol && l.host === a.host;
|
|
882
882
|
};
|
|
883
883
|
}()
|
|
884
884
|
) : (
|
|
@@ -889,55 +889,55 @@ const Ca = O.hasStandardBrowserEnv ? (
|
|
|
889
889
|
};
|
|
890
890
|
}()
|
|
891
891
|
);
|
|
892
|
-
function
|
|
892
|
+
function Pa(e) {
|
|
893
893
|
const t = /^([-+\w]{1,25})(:?\/\/|:)/.exec(e);
|
|
894
894
|
return t && t[1] || "";
|
|
895
895
|
}
|
|
896
|
-
function
|
|
896
|
+
function Ca(e, t) {
|
|
897
897
|
e = e || 10;
|
|
898
898
|
const a = new Array(e), i = new Array(e);
|
|
899
|
-
let o = 0,
|
|
899
|
+
let o = 0, l = 0, r;
|
|
900
900
|
return t = t !== void 0 ? t : 1e3, function(c) {
|
|
901
|
-
const p = Date.now(), d = i[
|
|
902
|
-
|
|
903
|
-
let s =
|
|
901
|
+
const p = Date.now(), d = i[l];
|
|
902
|
+
r || (r = p), a[o] = c, i[o] = p;
|
|
903
|
+
let s = l, m = 0;
|
|
904
904
|
for (; s !== o; )
|
|
905
905
|
m += a[s++], s = s % e;
|
|
906
|
-
if (o = (o + 1) % e, o ===
|
|
906
|
+
if (o = (o + 1) % e, o === l && (l = (l + 1) % e), p - r < t)
|
|
907
907
|
return;
|
|
908
908
|
const f = d && p - d;
|
|
909
909
|
return f ? Math.round(m * 1e3 / f) : void 0;
|
|
910
910
|
};
|
|
911
911
|
}
|
|
912
|
-
function
|
|
912
|
+
function Ce(e, t) {
|
|
913
913
|
let a = 0;
|
|
914
|
-
const i =
|
|
914
|
+
const i = Ca(50, 250);
|
|
915
915
|
return (o) => {
|
|
916
|
-
const
|
|
917
|
-
a =
|
|
916
|
+
const l = o.loaded, r = o.lengthComputable ? o.total : void 0, c = l - a, p = i(c), d = l <= r;
|
|
917
|
+
a = l;
|
|
918
918
|
const s = {
|
|
919
|
-
loaded:
|
|
920
|
-
total:
|
|
921
|
-
progress:
|
|
919
|
+
loaded: l,
|
|
920
|
+
total: r,
|
|
921
|
+
progress: r ? l / r : void 0,
|
|
922
922
|
bytes: c,
|
|
923
923
|
rate: p || void 0,
|
|
924
|
-
estimated: p &&
|
|
924
|
+
estimated: p && r && d ? (r - l) / p : void 0,
|
|
925
925
|
event: o
|
|
926
926
|
};
|
|
927
927
|
s[t ? "download" : "upload"] = !0, e(s);
|
|
928
928
|
};
|
|
929
929
|
}
|
|
930
|
-
const
|
|
930
|
+
const Ra = typeof XMLHttpRequest < "u", Ea = Ra && function(e) {
|
|
931
931
|
return new Promise(function(t, a) {
|
|
932
932
|
let i = e.data;
|
|
933
|
-
const o =
|
|
934
|
-
let { responseType:
|
|
933
|
+
const o = C.from(e.headers).normalize();
|
|
934
|
+
let { responseType: l, withXSRFToken: r } = e, c;
|
|
935
935
|
function p() {
|
|
936
936
|
e.cancelToken && e.cancelToken.unsubscribe(c), e.signal && e.signal.removeEventListener("abort", c);
|
|
937
937
|
}
|
|
938
938
|
let d;
|
|
939
|
-
if (
|
|
940
|
-
if (
|
|
939
|
+
if (n.isFormData(i)) {
|
|
940
|
+
if (q.hasStandardBrowserEnv || q.hasStandardBrowserWebWorkerEnv)
|
|
941
941
|
o.setContentType(!1);
|
|
942
942
|
else if ((d = o.getContentType()) !== !1) {
|
|
943
943
|
const [u, ...v] = d ? d.split(";").map((A) => A.trim()).filter(Boolean) : [];
|
|
@@ -954,10 +954,10 @@ const Pa = typeof XMLHttpRequest < "u", qa = Pa && function(e) {
|
|
|
954
954
|
function f() {
|
|
955
955
|
if (!s)
|
|
956
956
|
return;
|
|
957
|
-
const u =
|
|
957
|
+
const u = C.from(
|
|
958
958
|
"getAllResponseHeaders" in s && s.getAllResponseHeaders()
|
|
959
959
|
), v = {
|
|
960
|
-
data: !
|
|
960
|
+
data: !l || l === "text" || l === "json" ? s.responseText : s.response,
|
|
961
961
|
status: s.status,
|
|
962
962
|
statusText: s.statusText,
|
|
963
963
|
headers: u,
|
|
@@ -978,34 +978,34 @@ const Pa = typeof XMLHttpRequest < "u", qa = Pa && function(e) {
|
|
|
978
978
|
a(new _("Network Error", _.ERR_NETWORK, e, s)), s = null;
|
|
979
979
|
}, s.ontimeout = function() {
|
|
980
980
|
let u = e.timeout ? "timeout of " + e.timeout + "ms exceeded" : "timeout exceeded";
|
|
981
|
-
const v = e.transitional ||
|
|
981
|
+
const v = e.transitional || Ke;
|
|
982
982
|
e.timeoutErrorMessage && (u = e.timeoutErrorMessage), a(new _(
|
|
983
983
|
u,
|
|
984
984
|
v.clarifyTimeoutError ? _.ETIMEDOUT : _.ECONNABORTED,
|
|
985
985
|
e,
|
|
986
986
|
s
|
|
987
987
|
)), s = null;
|
|
988
|
-
},
|
|
988
|
+
}, q.hasStandardBrowserEnv && (r && n.isFunction(r) && (r = r(e)), r || r !== !1 && Oa(m))) {
|
|
989
989
|
const u = e.xsrfHeaderName && e.xsrfCookieName && Sa.read(e.xsrfCookieName);
|
|
990
990
|
u && o.set(e.xsrfHeaderName, u);
|
|
991
991
|
}
|
|
992
|
-
i === void 0 && o.setContentType(null), "setRequestHeader" in s &&
|
|
992
|
+
i === void 0 && o.setContentType(null), "setRequestHeader" in s && n.forEach(o.toJSON(), function(u, v) {
|
|
993
993
|
s.setRequestHeader(v, u);
|
|
994
|
-
}),
|
|
994
|
+
}), n.isUndefined(e.withCredentials) || (s.withCredentials = !!e.withCredentials), l && l !== "json" && (s.responseType = e.responseType), typeof e.onDownloadProgress == "function" && s.addEventListener("progress", Ce(e.onDownloadProgress, !0)), typeof e.onUploadProgress == "function" && s.upload && s.upload.addEventListener("progress", Ce(e.onUploadProgress)), (e.cancelToken || e.signal) && (c = (u) => {
|
|
995
995
|
s && (a(!u || u.type ? new B(null, e, s) : u), s.abort(), s = null);
|
|
996
996
|
}, e.cancelToken && e.cancelToken.subscribe(c), e.signal && (e.signal.aborted ? c() : e.signal.addEventListener("abort", c)));
|
|
997
|
-
const g =
|
|
998
|
-
if (g &&
|
|
997
|
+
const g = Pa(m);
|
|
998
|
+
if (g && q.protocols.indexOf(g) === -1) {
|
|
999
999
|
a(new _("Unsupported protocol " + g + ":", _.ERR_BAD_REQUEST, e));
|
|
1000
1000
|
return;
|
|
1001
1001
|
}
|
|
1002
1002
|
s.send(i || null);
|
|
1003
1003
|
});
|
|
1004
|
-
},
|
|
1004
|
+
}, re = {
|
|
1005
1005
|
http: aa,
|
|
1006
|
-
xhr:
|
|
1006
|
+
xhr: Ea
|
|
1007
1007
|
};
|
|
1008
|
-
|
|
1008
|
+
n.forEach(re, (e, t) => {
|
|
1009
1009
|
if (e) {
|
|
1010
1010
|
try {
|
|
1011
1011
|
Object.defineProperty(e, "name", { value: t });
|
|
@@ -1014,43 +1014,43 @@ l.forEach(ne, (e, t) => {
|
|
|
1014
1014
|
Object.defineProperty(e, "adapterName", { value: t });
|
|
1015
1015
|
}
|
|
1016
1016
|
});
|
|
1017
|
-
const
|
|
1017
|
+
const Re = (e) => `- ${e}`, Ta = (e) => n.isFunction(e) || e === null || e === !1, Ze = {
|
|
1018
1018
|
getAdapter: (e) => {
|
|
1019
|
-
e =
|
|
1019
|
+
e = n.isArray(e) ? e : [e];
|
|
1020
1020
|
const { length: t } = e;
|
|
1021
1021
|
let a, i;
|
|
1022
1022
|
const o = {};
|
|
1023
|
-
for (let
|
|
1024
|
-
a = e[
|
|
1025
|
-
let
|
|
1026
|
-
if (i = a, !Ta(a) && (i =
|
|
1027
|
-
throw new _(`Unknown adapter '${
|
|
1023
|
+
for (let l = 0; l < t; l++) {
|
|
1024
|
+
a = e[l];
|
|
1025
|
+
let r;
|
|
1026
|
+
if (i = a, !Ta(a) && (i = re[(r = String(a)).toLowerCase()], i === void 0))
|
|
1027
|
+
throw new _(`Unknown adapter '${r}'`);
|
|
1028
1028
|
if (i)
|
|
1029
1029
|
break;
|
|
1030
|
-
o[
|
|
1030
|
+
o[r || "#" + l] = i;
|
|
1031
1031
|
}
|
|
1032
1032
|
if (!i) {
|
|
1033
|
-
const
|
|
1033
|
+
const l = Object.entries(o).map(
|
|
1034
1034
|
([c, p]) => `adapter ${c} ` + (p === !1 ? "is not supported by the environment" : "is not available in the build")
|
|
1035
1035
|
);
|
|
1036
|
-
let
|
|
1037
|
-
` +
|
|
1038
|
-
`) : " " +
|
|
1036
|
+
let r = t ? l.length > 1 ? `since :
|
|
1037
|
+
` + l.map(Re).join(`
|
|
1038
|
+
`) : " " + Re(l[0]) : "as no adapter specified";
|
|
1039
1039
|
throw new _(
|
|
1040
|
-
"There is no suitable adapter to dispatch the request " +
|
|
1040
|
+
"There is no suitable adapter to dispatch the request " + r,
|
|
1041
1041
|
"ERR_NOT_SUPPORT"
|
|
1042
1042
|
);
|
|
1043
1043
|
}
|
|
1044
1044
|
return i;
|
|
1045
1045
|
},
|
|
1046
|
-
adapters:
|
|
1046
|
+
adapters: re
|
|
1047
1047
|
};
|
|
1048
1048
|
function te(e) {
|
|
1049
1049
|
if (e.cancelToken && e.cancelToken.throwIfRequested(), e.signal && e.signal.aborted)
|
|
1050
1050
|
throw new B(null, e);
|
|
1051
1051
|
}
|
|
1052
|
-
function
|
|
1053
|
-
return te(e), e.headers =
|
|
1052
|
+
function Ee(e) {
|
|
1053
|
+
return te(e), e.headers = C.from(e.headers), e.data = ee.call(
|
|
1054
1054
|
e,
|
|
1055
1055
|
e.transformRequest
|
|
1056
1056
|
), ["post", "put", "patch"].indexOf(e.method) !== -1 && e.headers.setContentType("application/x-www-form-urlencoded", !1), Ze.getAdapter(e.adapter || me.adapter)(e).then(function(t) {
|
|
@@ -1058,36 +1058,36 @@ function qe(e) {
|
|
|
1058
1058
|
e,
|
|
1059
1059
|
e.transformResponse,
|
|
1060
1060
|
t
|
|
1061
|
-
), t.headers =
|
|
1061
|
+
), t.headers = C.from(t.headers), t;
|
|
1062
1062
|
}, function(t) {
|
|
1063
1063
|
return Qe(t) || (te(e), t && t.response && (t.response.data = ee.call(
|
|
1064
1064
|
e,
|
|
1065
1065
|
e.transformResponse,
|
|
1066
1066
|
t.response
|
|
1067
|
-
), t.response.headers =
|
|
1067
|
+
), t.response.headers = C.from(t.response.headers))), Promise.reject(t);
|
|
1068
1068
|
});
|
|
1069
1069
|
}
|
|
1070
|
-
const Te = (e) => e instanceof
|
|
1070
|
+
const Te = (e) => e instanceof C ? e.toJSON() : e;
|
|
1071
1071
|
function N(e, t) {
|
|
1072
1072
|
t = t || {};
|
|
1073
1073
|
const a = {};
|
|
1074
1074
|
function i(d, s, m) {
|
|
1075
|
-
return
|
|
1075
|
+
return n.isPlainObject(d) && n.isPlainObject(s) ? n.merge.call({ caseless: m }, d, s) : n.isPlainObject(s) ? n.merge({}, s) : n.isArray(s) ? s.slice() : s;
|
|
1076
1076
|
}
|
|
1077
1077
|
function o(d, s, m) {
|
|
1078
|
-
if (
|
|
1079
|
-
if (!
|
|
1078
|
+
if (n.isUndefined(s)) {
|
|
1079
|
+
if (!n.isUndefined(d))
|
|
1080
1080
|
return i(void 0, d, m);
|
|
1081
1081
|
} else
|
|
1082
1082
|
return i(d, s, m);
|
|
1083
1083
|
}
|
|
1084
|
-
function
|
|
1085
|
-
if (!
|
|
1084
|
+
function l(d, s) {
|
|
1085
|
+
if (!n.isUndefined(s))
|
|
1086
1086
|
return i(void 0, s);
|
|
1087
1087
|
}
|
|
1088
|
-
function
|
|
1089
|
-
if (
|
|
1090
|
-
if (!
|
|
1088
|
+
function r(d, s) {
|
|
1089
|
+
if (n.isUndefined(s)) {
|
|
1090
|
+
if (!n.isUndefined(d))
|
|
1091
1091
|
return i(void 0, d);
|
|
1092
1092
|
} else
|
|
1093
1093
|
return i(void 0, s);
|
|
@@ -1099,39 +1099,39 @@ function N(e, t) {
|
|
|
1099
1099
|
return i(void 0, d);
|
|
1100
1100
|
}
|
|
1101
1101
|
const p = {
|
|
1102
|
-
url:
|
|
1103
|
-
method:
|
|
1104
|
-
data:
|
|
1105
|
-
baseURL:
|
|
1106
|
-
transformRequest:
|
|
1107
|
-
transformResponse:
|
|
1108
|
-
paramsSerializer:
|
|
1109
|
-
timeout:
|
|
1110
|
-
timeoutMessage:
|
|
1111
|
-
withCredentials:
|
|
1112
|
-
withXSRFToken:
|
|
1113
|
-
adapter:
|
|
1114
|
-
responseType:
|
|
1115
|
-
xsrfCookieName:
|
|
1116
|
-
xsrfHeaderName:
|
|
1117
|
-
onUploadProgress:
|
|
1118
|
-
onDownloadProgress:
|
|
1119
|
-
decompress:
|
|
1120
|
-
maxContentLength:
|
|
1121
|
-
maxBodyLength:
|
|
1122
|
-
beforeRedirect:
|
|
1123
|
-
transport:
|
|
1124
|
-
httpAgent:
|
|
1125
|
-
httpsAgent:
|
|
1126
|
-
cancelToken:
|
|
1127
|
-
socketPath:
|
|
1128
|
-
responseEncoding:
|
|
1102
|
+
url: l,
|
|
1103
|
+
method: l,
|
|
1104
|
+
data: l,
|
|
1105
|
+
baseURL: r,
|
|
1106
|
+
transformRequest: r,
|
|
1107
|
+
transformResponse: r,
|
|
1108
|
+
paramsSerializer: r,
|
|
1109
|
+
timeout: r,
|
|
1110
|
+
timeoutMessage: r,
|
|
1111
|
+
withCredentials: r,
|
|
1112
|
+
withXSRFToken: r,
|
|
1113
|
+
adapter: r,
|
|
1114
|
+
responseType: r,
|
|
1115
|
+
xsrfCookieName: r,
|
|
1116
|
+
xsrfHeaderName: r,
|
|
1117
|
+
onUploadProgress: r,
|
|
1118
|
+
onDownloadProgress: r,
|
|
1119
|
+
decompress: r,
|
|
1120
|
+
maxContentLength: r,
|
|
1121
|
+
maxBodyLength: r,
|
|
1122
|
+
beforeRedirect: r,
|
|
1123
|
+
transport: r,
|
|
1124
|
+
httpAgent: r,
|
|
1125
|
+
httpsAgent: r,
|
|
1126
|
+
cancelToken: r,
|
|
1127
|
+
socketPath: r,
|
|
1128
|
+
responseEncoding: r,
|
|
1129
1129
|
validateStatus: c,
|
|
1130
1130
|
headers: (d, s) => o(Te(d), Te(s), !0)
|
|
1131
1131
|
};
|
|
1132
|
-
return
|
|
1132
|
+
return n.forEach(Object.keys(Object.assign({}, e, t)), function(d) {
|
|
1133
1133
|
const s = p[d] || o, m = s(e[d], t[d], d);
|
|
1134
|
-
|
|
1134
|
+
n.isUndefined(m) && s !== c || (a[d] = m);
|
|
1135
1135
|
}), a;
|
|
1136
1136
|
}
|
|
1137
1137
|
const et = "1.6.5", ge = {};
|
|
@@ -1142,21 +1142,21 @@ const et = "1.6.5", ge = {};
|
|
|
1142
1142
|
});
|
|
1143
1143
|
const Ne = {};
|
|
1144
1144
|
ge.transitional = function(e, t, a) {
|
|
1145
|
-
function i(o,
|
|
1146
|
-
return "[Axios v" + et + "] Transitional option '" + o + "'" +
|
|
1145
|
+
function i(o, l) {
|
|
1146
|
+
return "[Axios v" + et + "] Transitional option '" + o + "'" + l + (a ? ". " + a : "");
|
|
1147
1147
|
}
|
|
1148
|
-
return (o,
|
|
1148
|
+
return (o, l, r) => {
|
|
1149
1149
|
if (e === !1)
|
|
1150
1150
|
throw new _(
|
|
1151
|
-
i(
|
|
1151
|
+
i(l, " has been removed" + (t ? " in " + t : "")),
|
|
1152
1152
|
_.ERR_DEPRECATED
|
|
1153
1153
|
);
|
|
1154
|
-
return t && !Ne[
|
|
1154
|
+
return t && !Ne[l] && (Ne[l] = !0, console.warn(
|
|
1155
1155
|
i(
|
|
1156
|
-
|
|
1156
|
+
l,
|
|
1157
1157
|
" has been deprecated since v" + t + " and will be removed in the near future"
|
|
1158
1158
|
)
|
|
1159
|
-
)), e ? e(o,
|
|
1159
|
+
)), e ? e(o, l, r) : !0;
|
|
1160
1160
|
};
|
|
1161
1161
|
};
|
|
1162
1162
|
function Na(e, t, a) {
|
|
@@ -1165,26 +1165,26 @@ function Na(e, t, a) {
|
|
|
1165
1165
|
const i = Object.keys(e);
|
|
1166
1166
|
let o = i.length;
|
|
1167
1167
|
for (; o-- > 0; ) {
|
|
1168
|
-
const
|
|
1169
|
-
if (
|
|
1170
|
-
const c = e[
|
|
1168
|
+
const l = i[o], r = t[l];
|
|
1169
|
+
if (r) {
|
|
1170
|
+
const c = e[l], p = c === void 0 || r(c, l, e);
|
|
1171
1171
|
if (p !== !0)
|
|
1172
|
-
throw new _("option " +
|
|
1172
|
+
throw new _("option " + l + " must be " + p, _.ERR_BAD_OPTION_VALUE);
|
|
1173
1173
|
continue;
|
|
1174
1174
|
}
|
|
1175
1175
|
if (a !== !0)
|
|
1176
|
-
throw new _("Unknown option " +
|
|
1176
|
+
throw new _("Unknown option " + l, _.ERR_BAD_OPTION);
|
|
1177
1177
|
}
|
|
1178
1178
|
}
|
|
1179
|
-
const
|
|
1179
|
+
const ne = {
|
|
1180
1180
|
assertOptions: Na,
|
|
1181
1181
|
validators: ge
|
|
1182
|
-
},
|
|
1183
|
-
class
|
|
1182
|
+
}, R = ne.validators;
|
|
1183
|
+
class z {
|
|
1184
1184
|
constructor(t) {
|
|
1185
1185
|
this.defaults = t, this.interceptors = {
|
|
1186
|
-
request: new
|
|
1187
|
-
response: new
|
|
1186
|
+
request: new Oe(),
|
|
1187
|
+
response: new Oe()
|
|
1188
1188
|
};
|
|
1189
1189
|
}
|
|
1190
1190
|
/**
|
|
@@ -1197,27 +1197,27 @@ class G {
|
|
|
1197
1197
|
*/
|
|
1198
1198
|
request(t, a) {
|
|
1199
1199
|
typeof t == "string" ? (a = a || {}, a.url = t) : a = t || {}, a = N(this.defaults, a);
|
|
1200
|
-
const { transitional: i, paramsSerializer: o, headers:
|
|
1201
|
-
i !== void 0 &&
|
|
1202
|
-
silentJSONParsing:
|
|
1203
|
-
forcedJSONParsing:
|
|
1204
|
-
clarifyTimeoutError:
|
|
1205
|
-
}, !1), o != null && (
|
|
1200
|
+
const { transitional: i, paramsSerializer: o, headers: l } = a;
|
|
1201
|
+
i !== void 0 && ne.assertOptions(i, {
|
|
1202
|
+
silentJSONParsing: R.transitional(R.boolean),
|
|
1203
|
+
forcedJSONParsing: R.transitional(R.boolean),
|
|
1204
|
+
clarifyTimeoutError: R.transitional(R.boolean)
|
|
1205
|
+
}, !1), o != null && (n.isFunction(o) ? a.paramsSerializer = {
|
|
1206
1206
|
serialize: o
|
|
1207
|
-
} :
|
|
1208
|
-
encode:
|
|
1209
|
-
serialize:
|
|
1207
|
+
} : ne.assertOptions(o, {
|
|
1208
|
+
encode: R.function,
|
|
1209
|
+
serialize: R.function
|
|
1210
1210
|
}, !0)), a.method = (a.method || this.defaults.method || "get").toLowerCase();
|
|
1211
|
-
let
|
|
1212
|
-
|
|
1213
|
-
|
|
1211
|
+
let r = l && n.merge(
|
|
1212
|
+
l.common,
|
|
1213
|
+
l[a.method]
|
|
1214
1214
|
);
|
|
1215
|
-
|
|
1215
|
+
l && n.forEach(
|
|
1216
1216
|
["delete", "get", "head", "post", "put", "patch", "common"],
|
|
1217
1217
|
(u) => {
|
|
1218
|
-
delete
|
|
1218
|
+
delete l[u];
|
|
1219
1219
|
}
|
|
1220
|
-
), a.headers =
|
|
1220
|
+
), a.headers = C.concat(r, l);
|
|
1221
1221
|
const c = [];
|
|
1222
1222
|
let p = !0;
|
|
1223
1223
|
this.interceptors.request.forEach(function(u) {
|
|
@@ -1229,7 +1229,7 @@ class G {
|
|
|
1229
1229
|
});
|
|
1230
1230
|
let s, m = 0, f;
|
|
1231
1231
|
if (!p) {
|
|
1232
|
-
const u = [
|
|
1232
|
+
const u = [Ee.bind(this), void 0];
|
|
1233
1233
|
for (u.unshift.apply(u, c), u.push.apply(u, d), f = u.length, s = Promise.resolve(a); m < f; )
|
|
1234
1234
|
s = s.then(u[m++], u[m++]);
|
|
1235
1235
|
return s;
|
|
@@ -1246,7 +1246,7 @@ class G {
|
|
|
1246
1246
|
}
|
|
1247
1247
|
}
|
|
1248
1248
|
try {
|
|
1249
|
-
s =
|
|
1249
|
+
s = Ee.call(this, g);
|
|
1250
1250
|
} catch (u) {
|
|
1251
1251
|
return Promise.reject(u);
|
|
1252
1252
|
}
|
|
@@ -1260,8 +1260,8 @@ class G {
|
|
|
1260
1260
|
return Je(a, t.params, t.paramsSerializer);
|
|
1261
1261
|
}
|
|
1262
1262
|
}
|
|
1263
|
-
|
|
1264
|
-
|
|
1263
|
+
n.forEach(["delete", "get", "head", "options"], function(e) {
|
|
1264
|
+
z.prototype[e] = function(t, a) {
|
|
1265
1265
|
return this.request(N(a || {}, {
|
|
1266
1266
|
method: e,
|
|
1267
1267
|
url: t,
|
|
@@ -1269,10 +1269,10 @@ l.forEach(["delete", "get", "head", "options"], function(e) {
|
|
|
1269
1269
|
}));
|
|
1270
1270
|
};
|
|
1271
1271
|
});
|
|
1272
|
-
|
|
1272
|
+
n.forEach(["post", "put", "patch"], function(e) {
|
|
1273
1273
|
function t(a) {
|
|
1274
|
-
return function(i, o,
|
|
1275
|
-
return this.request(N(
|
|
1274
|
+
return function(i, o, l) {
|
|
1275
|
+
return this.request(N(l || {}, {
|
|
1276
1276
|
method: e,
|
|
1277
1277
|
headers: a ? {
|
|
1278
1278
|
"Content-Type": "multipart/form-data"
|
|
@@ -1282,9 +1282,9 @@ l.forEach(["post", "put", "patch"], function(e) {
|
|
|
1282
1282
|
}));
|
|
1283
1283
|
};
|
|
1284
1284
|
}
|
|
1285
|
-
|
|
1285
|
+
z.prototype[e] = t(), z.prototype[e + "Form"] = t(!0);
|
|
1286
1286
|
});
|
|
1287
|
-
const
|
|
1287
|
+
const G = z;
|
|
1288
1288
|
class _e {
|
|
1289
1289
|
constructor(t) {
|
|
1290
1290
|
if (typeof t != "function")
|
|
@@ -1297,20 +1297,20 @@ class _e {
|
|
|
1297
1297
|
this.promise.then((o) => {
|
|
1298
1298
|
if (!i._listeners)
|
|
1299
1299
|
return;
|
|
1300
|
-
let
|
|
1301
|
-
for (;
|
|
1302
|
-
i._listeners[
|
|
1300
|
+
let l = i._listeners.length;
|
|
1301
|
+
for (; l-- > 0; )
|
|
1302
|
+
i._listeners[l](o);
|
|
1303
1303
|
i._listeners = null;
|
|
1304
1304
|
}), this.promise.then = (o) => {
|
|
1305
|
-
let
|
|
1306
|
-
const
|
|
1307
|
-
i.subscribe(c),
|
|
1305
|
+
let l;
|
|
1306
|
+
const r = new Promise((c) => {
|
|
1307
|
+
i.subscribe(c), l = c;
|
|
1308
1308
|
}).then(o);
|
|
1309
|
-
return
|
|
1310
|
-
i.unsubscribe(
|
|
1311
|
-
},
|
|
1312
|
-
}, t(function(o,
|
|
1313
|
-
i.reason || (i.reason = new B(o,
|
|
1309
|
+
return r.cancel = function() {
|
|
1310
|
+
i.unsubscribe(l);
|
|
1311
|
+
}, r;
|
|
1312
|
+
}, t(function(o, l, r) {
|
|
1313
|
+
i.reason || (i.reason = new B(o, l, r), a(i.reason));
|
|
1314
1314
|
});
|
|
1315
1315
|
}
|
|
1316
1316
|
/**
|
|
@@ -1360,7 +1360,7 @@ function Ua(e) {
|
|
|
1360
1360
|
};
|
|
1361
1361
|
}
|
|
1362
1362
|
function Da(e) {
|
|
1363
|
-
return
|
|
1363
|
+
return n.isObject(e) && e.isAxiosError === !0;
|
|
1364
1364
|
}
|
|
1365
1365
|
const se = {
|
|
1366
1366
|
Continue: 100,
|
|
@@ -1430,20 +1430,20 @@ const se = {
|
|
|
1430
1430
|
Object.entries(se).forEach(([e, t]) => {
|
|
1431
1431
|
se[t] = e;
|
|
1432
1432
|
});
|
|
1433
|
-
const
|
|
1433
|
+
const ja = se;
|
|
1434
1434
|
function tt(e) {
|
|
1435
|
-
const t = new
|
|
1436
|
-
return
|
|
1435
|
+
const t = new G(e), a = Ue(G.prototype.request, t);
|
|
1436
|
+
return n.extend(a, G.prototype, t, { allOwnKeys: !0 }), n.extend(a, t, null, { allOwnKeys: !0 }), a.create = function(i) {
|
|
1437
1437
|
return tt(N(e, i));
|
|
1438
1438
|
}, a;
|
|
1439
1439
|
}
|
|
1440
1440
|
const k = tt(me);
|
|
1441
|
-
k.Axios =
|
|
1441
|
+
k.Axios = G;
|
|
1442
1442
|
k.CanceledError = B;
|
|
1443
1443
|
k.CancelToken = Ia;
|
|
1444
1444
|
k.isCancel = Qe;
|
|
1445
1445
|
k.VERSION = et;
|
|
1446
|
-
k.toFormData =
|
|
1446
|
+
k.toFormData = K;
|
|
1447
1447
|
k.AxiosError = _;
|
|
1448
1448
|
k.Cancel = k.CanceledError;
|
|
1449
1449
|
k.all = function(e) {
|
|
@@ -1452,12 +1452,12 @@ k.all = function(e) {
|
|
|
1452
1452
|
k.spread = Ua;
|
|
1453
1453
|
k.isAxiosError = Da;
|
|
1454
1454
|
k.mergeConfig = N;
|
|
1455
|
-
k.AxiosHeaders =
|
|
1456
|
-
k.formToJSON = (e) => Ye(
|
|
1455
|
+
k.AxiosHeaders = C;
|
|
1456
|
+
k.formToJSON = (e) => Ye(n.isHTMLForm(e) ? new FormData(e) : e);
|
|
1457
1457
|
k.getAdapter = Ze.getAdapter;
|
|
1458
|
-
k.HttpStatusCode =
|
|
1458
|
+
k.HttpStatusCode = ja;
|
|
1459
1459
|
k.default = k;
|
|
1460
|
-
class
|
|
1460
|
+
class La {
|
|
1461
1461
|
constructor({
|
|
1462
1462
|
context: t,
|
|
1463
1463
|
client: a,
|
|
@@ -1473,14 +1473,14 @@ class ja {
|
|
|
1473
1473
|
this.chatboxRef = t;
|
|
1474
1474
|
}
|
|
1475
1475
|
async query({ action: t, path: a, body: i, params: o }) {
|
|
1476
|
-
var
|
|
1476
|
+
var l, r;
|
|
1477
1477
|
switch (t) {
|
|
1478
1478
|
case "get":
|
|
1479
1479
|
case "delete":
|
|
1480
|
-
return (
|
|
1480
|
+
return (l = await this.client[t](a, { params: o })) == null ? void 0 : l.data;
|
|
1481
1481
|
case "post":
|
|
1482
1482
|
case "put":
|
|
1483
|
-
return (
|
|
1483
|
+
return (r = await this.client[t](a, i, { params: o })) == null ? void 0 : r.data;
|
|
1484
1484
|
}
|
|
1485
1485
|
}
|
|
1486
1486
|
async integrateChatbox(t, a, i = !1) {
|
|
@@ -1488,8 +1488,8 @@ class ja {
|
|
|
1488
1488
|
message: "",
|
|
1489
1489
|
data: null
|
|
1490
1490
|
};
|
|
1491
|
-
const
|
|
1492
|
-
return i && this.chatboxRef ? await this.chatboxRef.ask(t,
|
|
1491
|
+
const l = async () => (o = await a(), o);
|
|
1492
|
+
return i && this.chatboxRef ? await this.chatboxRef.ask(t, l) : await l(), o;
|
|
1493
1493
|
}
|
|
1494
1494
|
async getItemIngredients(t, a = !1) {
|
|
1495
1495
|
const i = {
|
|
@@ -1498,7 +1498,7 @@ class ja {
|
|
|
1498
1498
|
params: { item_name: t.name }
|
|
1499
1499
|
}, o = `Suggest ingredients for ${t.name}`;
|
|
1500
1500
|
this.log({ message: o, query: i });
|
|
1501
|
-
const
|
|
1501
|
+
const l = await this.integrateChatbox(
|
|
1502
1502
|
o,
|
|
1503
1503
|
async () => ({
|
|
1504
1504
|
message: "",
|
|
@@ -1509,7 +1509,7 @@ class ja {
|
|
|
1509
1509
|
}),
|
|
1510
1510
|
a
|
|
1511
1511
|
) || [];
|
|
1512
|
-
return this.log({ message:
|
|
1512
|
+
return this.log({ message: l == null ? void 0 : l.message, value: l == null ? void 0 : l.data }), l;
|
|
1513
1513
|
}
|
|
1514
1514
|
async getItemDescription(t, a = !1) {
|
|
1515
1515
|
const i = {
|
|
@@ -1518,20 +1518,20 @@ class ja {
|
|
|
1518
1518
|
params: { item_name: t.name }
|
|
1519
1519
|
}, o = `Suggest description for ${t.name}`;
|
|
1520
1520
|
this.log({ message: o, query: i });
|
|
1521
|
-
const
|
|
1521
|
+
const l = await this.integrateChatbox(
|
|
1522
1522
|
o,
|
|
1523
1523
|
async () => {
|
|
1524
|
-
const
|
|
1524
|
+
const r = await this.query(i);
|
|
1525
1525
|
return {
|
|
1526
|
-
message:
|
|
1526
|
+
message: r || "",
|
|
1527
1527
|
data: {
|
|
1528
|
-
value:
|
|
1528
|
+
value: r
|
|
1529
1529
|
}
|
|
1530
1530
|
};
|
|
1531
1531
|
},
|
|
1532
1532
|
a
|
|
1533
1533
|
);
|
|
1534
|
-
return this.log({ message:
|
|
1534
|
+
return this.log({ message: l == null ? void 0 : l.message, value: l == null ? void 0 : l.data }), l;
|
|
1535
1535
|
}
|
|
1536
1536
|
async getItemPricing(t, a = !1) {
|
|
1537
1537
|
const i = {
|
|
@@ -1544,13 +1544,13 @@ class ja {
|
|
|
1544
1544
|
}
|
|
1545
1545
|
}, o = `Suggest pricing for ${t.name}`;
|
|
1546
1546
|
this.log({ message: o, query: i });
|
|
1547
|
-
const
|
|
1547
|
+
const l = await this.integrateChatbox(
|
|
1548
1548
|
o,
|
|
1549
1549
|
async () => {
|
|
1550
|
-
const
|
|
1551
|
-
let c = (
|
|
1550
|
+
const r = await this.query(i);
|
|
1551
|
+
let c = (r.match(/\d+(\.\d+)?/g) || []).map((p) => parseFloat(p));
|
|
1552
1552
|
return c = [...new Set(c)], c.sort((p, d) => p - d), {
|
|
1553
|
-
message:
|
|
1553
|
+
message: r,
|
|
1554
1554
|
data: {
|
|
1555
1555
|
value: c,
|
|
1556
1556
|
action: "selection"
|
|
@@ -1559,7 +1559,7 @@ class ja {
|
|
|
1559
1559
|
},
|
|
1560
1560
|
a
|
|
1561
1561
|
);
|
|
1562
|
-
return this.log({ message:
|
|
1562
|
+
return this.log({ message: l == null ? void 0 : l.message, value: l == null ? void 0 : l.data }), l;
|
|
1563
1563
|
}
|
|
1564
1564
|
async autocompleteIngredient(t, a = !1) {
|
|
1565
1565
|
const i = {
|
|
@@ -1568,18 +1568,18 @@ class ja {
|
|
|
1568
1568
|
params: { input: t.name }
|
|
1569
1569
|
}, o = `Autocomplete ingredients for ${t.name}`;
|
|
1570
1570
|
this.log({ message: o, query: i });
|
|
1571
|
-
const
|
|
1571
|
+
const l = await this.integrateChatbox(
|
|
1572
1572
|
o,
|
|
1573
1573
|
async () => {
|
|
1574
|
-
const
|
|
1574
|
+
const r = await this.query(i);
|
|
1575
1575
|
return {
|
|
1576
|
-
message:
|
|
1577
|
-
data: { value:
|
|
1576
|
+
message: r || "",
|
|
1577
|
+
data: { value: r || "" }
|
|
1578
1578
|
};
|
|
1579
1579
|
},
|
|
1580
1580
|
a
|
|
1581
1581
|
);
|
|
1582
|
-
return this.log({ message:
|
|
1582
|
+
return this.log({ message: l == null ? void 0 : l.message, value: l == null ? void 0 : l.data }), l;
|
|
1583
1583
|
}
|
|
1584
1584
|
close(t) {
|
|
1585
1585
|
var a;
|
|
@@ -1597,7 +1597,7 @@ class Ba {
|
|
|
1597
1597
|
this.chatboxRef = t;
|
|
1598
1598
|
}
|
|
1599
1599
|
startSession(t, a) {
|
|
1600
|
-
const i = new
|
|
1600
|
+
const i = new La({
|
|
1601
1601
|
context: t,
|
|
1602
1602
|
client: this.client,
|
|
1603
1603
|
chatboxRef: this.chatboxRef || a || null,
|
|
@@ -1609,7 +1609,7 @@ class Ba {
|
|
|
1609
1609
|
this.sessions = this.sessions.filter((a) => a.id !== t);
|
|
1610
1610
|
}
|
|
1611
1611
|
}
|
|
1612
|
-
function
|
|
1612
|
+
function hi(e) {
|
|
1613
1613
|
const t = I(new Ba(e)), a = ie(() => t.value.sessions || []), i = ie(() => {
|
|
1614
1614
|
var c;
|
|
1615
1615
|
return (c = t.value.sessions) == null ? void 0 : c[t.value.sessions.length - 1];
|
|
@@ -1617,21 +1617,21 @@ function bi(e) {
|
|
|
1617
1617
|
function o(c) {
|
|
1618
1618
|
t.value.setChatboxRef(c);
|
|
1619
1619
|
}
|
|
1620
|
-
function
|
|
1620
|
+
function l(c) {
|
|
1621
1621
|
var p;
|
|
1622
1622
|
return (p = t.value.chatboxRef) == null || p.clear(), t.value.startSession(c);
|
|
1623
1623
|
}
|
|
1624
|
-
function
|
|
1624
|
+
function r(c) {
|
|
1625
1625
|
t.value.setToken(c);
|
|
1626
1626
|
}
|
|
1627
1627
|
return {
|
|
1628
1628
|
linkChatbox: o,
|
|
1629
|
-
startSession:
|
|
1629
|
+
startSession: l,
|
|
1630
1630
|
closeSession: (c) => {
|
|
1631
1631
|
var p;
|
|
1632
1632
|
return (p = i == null ? void 0 : i.value) == null ? void 0 : p.close(c);
|
|
1633
1633
|
},
|
|
1634
|
-
setToken:
|
|
1634
|
+
setToken: r,
|
|
1635
1635
|
getItemDescription: (...c) => {
|
|
1636
1636
|
var p;
|
|
1637
1637
|
return (p = i.value) == null ? void 0 : p.getItemDescription(...c);
|
|
@@ -1643,30 +1643,30 @@ function bi(e) {
|
|
|
1643
1643
|
sessions: a
|
|
1644
1644
|
};
|
|
1645
1645
|
}
|
|
1646
|
-
const at = (e) => (
|
|
1646
|
+
const at = (e) => (lt("data-v-97b727dd"), e = e(), rt(), e), Fa = {
|
|
1647
1647
|
class: "chatbox",
|
|
1648
1648
|
id: "chatbox"
|
|
1649
|
-
},
|
|
1649
|
+
}, $a = { class: "user-name" }, Ma = {
|
|
1650
1650
|
key: 0,
|
|
1651
1651
|
class: "message-bubble"
|
|
1652
|
-
},
|
|
1653
|
-
/* @__PURE__ */
|
|
1654
|
-
/* @__PURE__ */
|
|
1655
|
-
/* @__PURE__ */
|
|
1656
|
-
], -1)),
|
|
1657
|
-
|
|
1652
|
+
}, Ga = /* @__PURE__ */ at(() => /* @__PURE__ */ E("div", { class: "spinner" }, [
|
|
1653
|
+
/* @__PURE__ */ E("div", { class: "bounce1" }),
|
|
1654
|
+
/* @__PURE__ */ E("div", { class: "bounce2" }),
|
|
1655
|
+
/* @__PURE__ */ E("div", { class: "bounce3" })
|
|
1656
|
+
], -1)), za = [
|
|
1657
|
+
Ga
|
|
1658
1658
|
], Va = {
|
|
1659
1659
|
key: 1,
|
|
1660
1660
|
class: "message-bubble message"
|
|
1661
1661
|
}, Ha = {
|
|
1662
1662
|
key: 2,
|
|
1663
1663
|
class: "selection-container"
|
|
1664
|
-
}, Ja = /* @__PURE__ */ at(() => /* @__PURE__ */
|
|
1664
|
+
}, Ja = /* @__PURE__ */ at(() => /* @__PURE__ */ E("div", { class: "message select-label" }, "Suggestion:", -1)), Ka = ["id", "onClick"], Wa = /* @__PURE__ */ ce({
|
|
1665
1665
|
__name: "Chatbox",
|
|
1666
1666
|
emits: ["select"],
|
|
1667
1667
|
setup(e, { expose: t, emit: a }) {
|
|
1668
1668
|
const i = I([]), o = a;
|
|
1669
|
-
async function
|
|
1669
|
+
async function l(d, s) {
|
|
1670
1670
|
i.value.push({
|
|
1671
1671
|
isUser: !0,
|
|
1672
1672
|
message: d,
|
|
@@ -1690,7 +1690,7 @@ const at = (e) => (rt("data-v-97b727dd"), e = e(), nt(), e), Fa = {
|
|
|
1690
1690
|
}
|
|
1691
1691
|
return i.value = [...i.value], c(), g;
|
|
1692
1692
|
}
|
|
1693
|
-
function
|
|
1693
|
+
function r(d) {
|
|
1694
1694
|
o("select", d);
|
|
1695
1695
|
}
|
|
1696
1696
|
function c() {
|
|
@@ -1703,25 +1703,25 @@ const at = (e) => (rt("data-v-97b727dd"), e = e(), nt(), e), Fa = {
|
|
|
1703
1703
|
i.value = [];
|
|
1704
1704
|
}
|
|
1705
1705
|
return t({
|
|
1706
|
-
ask:
|
|
1706
|
+
ask: l,
|
|
1707
1707
|
clear: p
|
|
1708
|
-
}), (d, s) => (x(),
|
|
1709
|
-
(x(!0),
|
|
1708
|
+
}), (d, s) => (x(), P("div", Fa, [
|
|
1709
|
+
(x(!0), P(be, null, ye(i.value, (m, f) => {
|
|
1710
1710
|
var g;
|
|
1711
|
-
return x(),
|
|
1711
|
+
return x(), P("div", {
|
|
1712
1712
|
key: f,
|
|
1713
1713
|
class: ot(m.isUser ? "user-message" : "remy-message")
|
|
1714
1714
|
}, [
|
|
1715
|
-
|
|
1716
|
-
m.isLoading ? (x(),
|
|
1717
|
-
((g = m.data) == null ? void 0 : g.action) === "selection" && m.data.value.length > 0 ? (x(),
|
|
1715
|
+
E("div", $a, Q(m.isUser ? "" : "Remy"), 1),
|
|
1716
|
+
m.isLoading ? (x(), P("div", Ma, za)) : m.message ? (x(), P("div", Va, Q(m.message), 1)) : he("", !0),
|
|
1717
|
+
((g = m.data) == null ? void 0 : g.action) === "selection" && m.data.value.length > 0 ? (x(), P("div", Ha, [
|
|
1718
1718
|
Ja,
|
|
1719
|
-
(x(!0),
|
|
1719
|
+
(x(!0), P(be, null, ye(m.data.value, (u, v) => (x(), P("div", {
|
|
1720
1720
|
class: "message-bubble message selection",
|
|
1721
1721
|
key: v,
|
|
1722
1722
|
id: `remy-chatbox-selection-${v}`,
|
|
1723
|
-
onClick: () =>
|
|
1724
|
-
}, Q(u), 9,
|
|
1723
|
+
onClick: () => r(u)
|
|
1724
|
+
}, Q(u), 9, Ka))), 128))
|
|
1725
1725
|
])) : he("", !0)
|
|
1726
1726
|
], 2);
|
|
1727
1727
|
}), 128))
|
|
@@ -1732,7 +1732,7 @@ const at = (e) => (rt("data-v-97b727dd"), e = e(), nt(), e), Fa = {
|
|
|
1732
1732
|
for (const [i, o] of t)
|
|
1733
1733
|
a[i] = o;
|
|
1734
1734
|
return a;
|
|
1735
|
-
}, Qa = /* @__PURE__ */ Ya(
|
|
1735
|
+
}, Qa = /* @__PURE__ */ Ya(Wa, [["__scopeId", "data-v-97b727dd"]]), Xa = {
|
|
1736
1736
|
install(e) {
|
|
1737
1737
|
e.component("Chatbox", Qa);
|
|
1738
1738
|
}
|
|
@@ -1754,7 +1754,7 @@ function Za(e, t) {
|
|
|
1754
1754
|
await ve(), i();
|
|
1755
1755
|
}), fe(e, async (o) => {
|
|
1756
1756
|
o && (await ve(), i());
|
|
1757
|
-
}),
|
|
1757
|
+
}), nt(() => {
|
|
1758
1758
|
window.addEventListener("resize", i);
|
|
1759
1759
|
}), st(() => {
|
|
1760
1760
|
window.removeEventListener("resize", i);
|
|
@@ -1765,17 +1765,17 @@ const ei = /* @__PURE__ */ ce({
|
|
|
1765
1765
|
setup(e) {
|
|
1766
1766
|
const t = bt(), a = I(null), i = Za(a), o = ie(() => {
|
|
1767
1767
|
var c;
|
|
1768
|
-
const
|
|
1768
|
+
const r = t.isAtMost("sm") ? 56 : 0;
|
|
1769
1769
|
return {
|
|
1770
|
-
height: `calc(100dvh - ${((c = i.value) == null ? void 0 : c.top) + 24 +
|
|
1770
|
+
height: `calc(100dvh - ${((c = i.value) == null ? void 0 : c.top) + 24 + r}px)`
|
|
1771
1771
|
};
|
|
1772
1772
|
});
|
|
1773
|
-
return (
|
|
1773
|
+
return (l, r) => (x(), P("div", {
|
|
1774
1774
|
ref_key: "wrapper",
|
|
1775
1775
|
ref: a,
|
|
1776
1776
|
style: ct(o.value)
|
|
1777
1777
|
}, [
|
|
1778
|
-
ut(
|
|
1778
|
+
ut(l.$slots, "default")
|
|
1779
1779
|
], 4));
|
|
1780
1780
|
}
|
|
1781
1781
|
}), ti = { class: "flex justify-center items-center h-full w-full" }, ai = /* @__PURE__ */ ce({
|
|
@@ -1785,7 +1785,7 @@ const ei = /* @__PURE__ */ ce({
|
|
|
1785
1785
|
const i = dt("FmCircularProgress");
|
|
1786
1786
|
return x(), pt(ei, null, {
|
|
1787
1787
|
default: mt(() => [
|
|
1788
|
-
|
|
1788
|
+
E("div", ti, [
|
|
1789
1789
|
gt(i, { size: "xl" })
|
|
1790
1790
|
])
|
|
1791
1791
|
]),
|
|
@@ -1797,7 +1797,7 @@ const ei = /* @__PURE__ */ ce({
|
|
|
1797
1797
|
loader: e,
|
|
1798
1798
|
loadingComponent: ai
|
|
1799
1799
|
});
|
|
1800
|
-
function
|
|
1800
|
+
function fi() {
|
|
1801
1801
|
const e = I({}), t = (a) => {
|
|
1802
1802
|
var i;
|
|
1803
1803
|
((i = a.data) == null ? void 0 : i.type) === "publish-notifier" && (e.value = a.data.data);
|
|
@@ -1806,18 +1806,20 @@ function yi() {
|
|
|
1806
1806
|
}
|
|
1807
1807
|
const ii = /* @__PURE__ */ JSON.parse(`{"title":"Menu","common":{"actions":{"update":"Update","cancel":"Cancel","add":"Add","search":"Search","delete":"Delete","remove":"Remove","deselect_all":"Deselect all","move":"Move","edit":"Edit","download":"Download","save":"Save","confirm":"Confirm","yes":"Yes","no":"No","link":"Link","migrate":"Migrate","add_new_variant":"Add new variant","add_group":"Add group","apply_product":"Apply product","link_product":"Link product","deselect":"Deselect"},"labels":{"name":"Name","detail":"Detail","items_linked":"{count} items linked","search_placeholder":"Search {type}","symbol":"Symbol","products_linked":"{count} product(s) linked","product_linked_singular":"{count} product linked","product_linked_plural":"{count} products linked","enter_name":"Enter name here","product":"Product","selected_items":"{count} items selected","all":"All","category":"Category: {name}","group_name":"Group name","min_select":"Min. select","max_select":"Max. select","group_type":"Group type","stackable":"Stackable","stackable_sublabel":"Customer can choose same option more than once","configuration":"Configuration","variant":"Variant","product_title":"Product title","price":"Price ({symbol})","order_from":"Order from","inventory":"Inventory","search_groups":"Search groups","search_variants":"Search variants","product_count":"{count} product(s) applied","search_product":"Search product","product_image":"Product image","optional":"(optional)","products_selected":"{count} product(s) selected","items_selected":"{count} item(s) selected","catalog":"Catalog","scheduler":"Scheduler","all_time":"All time","main":"Main","unknown":"Unknown","all_day":"All Day","summary":"Summary","scheduler_title":"Scheduler: {label}","link_product_title":"Link product","products_count":"{count} product(s) selected","search":"Search","status":"Status"},"dialog":{"remove_confirmation":"Are you sure to remove {name}?","change_type":{"title":"Change addon group type","message":"Change addon group type will clear all products. Are you sure to proceed?"},"remove":{"catalog":{"title":"Remove catalog","message":"Are you sure to remove {name}?"},"category":{"title":"Remove category","message":"Are you sure to remove {name}?"},"subcategory":{"title":"Remove subcategory","message":"Are you sure to remove {name}?"},"product":{"title":"Remove products","message":"Are you sure to remove {name}?","success":"Product successfully removed."},"recipe":{"title":"Remove recipe","message":"Do you want to remove recipe {name}?"},"ingredient":{"title":"Remove ingredient","message":"Do you want to remove ingredient {name}?"},"takeaway":{"title":"Remove takeaway","message":"Do you want to remove {name}?"},"unit":{"title":"Remove unit","message":"Do you want to remove unit {name}?"},"variant":{"title":"Remove variant","message":"Do you want to remove {name}?"}}},"validation":{"required":"{field} is required","min_max":"Min. select must be less than or equal to Max. select","product_title_required":"Product title is required","min_value":"Min value is {value}","max_value":"Max value is {value}","field_required":"The {field} is required","required_field":"Required","invalid_amount":"Invalid amount","max_default_items":"Number of default item(s) can't be larger than {max}","min_exceeds_available_items":"Min. select ({min}) cannot be greater than available items ({available}) when stackable is disabled","default_items_tip":"{count} / {max} default product(s) selected, default products are auto selected when ordering."},"file":{"accepts":"Accepts .jpg, .jpeg, .png, .gif"},"empty":{"no_group":{"title":"No group found","subtitle":"Seems like you don't have groups created"},"no_variant":{"title":"No variant found","subtitle":"Seems like you don't have variants created"}}},"category":{"title":"Category","add":"Add category","detail":"Category detail","name":"Category name","empty":{"title":"Group your products into category","subtitle":"Use category to organize your products.","no_group":{"title":"No group found","subtitle":"Seems like you don't have groups created"}},"columns":{"title":"Category title","products":"Apply products"},"dialog":{"remove":{"title":"Remove category","error":"Can't delete this category"},"add":{"title":"Add Category","name":{"label":"Category name","placeholder":"Enter category name here","required":"Category name is required"}}},"products":{"title":"Product","add":"Add product","linked_count":"{count} product(s) linked","search":"Search","columns":{"name":"Product name","code":"Product code"}},"selector":{"all":"All","title":"Category: {label}"},"manager":{"dialog":{"add":{"title":"Add Category","action":"Create"},"update":{"title":"Update Category","action":"Update"}}}},"subcategory":{"title":"Subcategory","add":"Add subcategory","detail":"Subcategory detail","name":"Subcategory name","empty":{"title":"Group your products into subcategory","subtitle":"Use subcategory to organize your products."},"columns":{"title":"Subcategory title"},"dialog":{"remove":{"title":"Remove subcategory","error":"Can't delete this subcategory"},"add":{"title":"Add Subcategory","name":{"label":"Subcategory name","placeholder":"Enter subcategory name here","required":"Subcategory name is required"}}},"manager":{"dialog":{"add":{"title":"Add Subcategory","action":"Create"},"update":{"title":"Update Subcategory","action":"Update"}}}},"variant":{"title":"Variant","add":"Add variant","columns":{"name":"Variant name","options":"Option values","applied_products":"Applied products"},"mobile":{"value":"Value: {values}"},"empty":{"title":"Add variant","subtitle":"Variant configuration provides merchants with the capability to offer customizable product options.","no_variant":{"title":"No variant found","subtitle":"Seems like you don't have variants created"}},"select":{"title":"Select variant","subtitle":"Select variant to apply changes"},"form":{"title":{"add":"Add variant","edit":"Edit variant"},"detail":"Variant detail","name":{"label":"Variant name","placeholder":"Cup sizes","helper":"Name this set of options. For example, you could call this option set Cup sizes or Sugar levels.","required":"Variant name is required"},"options":{"title":"Option values","placeholder":"Options","min_required":"Required at least 1 option","name_required":"Option name is required"},"applied_product":"Applied product"}},"unit":{"title":"Unit","add":"Add unit","update":"Update unit","precision":"Precision","precision_placeholder":"Enter a number","empty":{"title":"Add your first unit","subtitle":"Units are used to specify how you want to measure your products."},"columns":{"name":"Name","symbol":"Symbol"},"measurement":{"add":"Add measurement","title":"Measurement {number}","name":"Name","symbol":"Symbol","conversion":"Conversion","preview":"1 {name} equal to {value} {unit}","preview_label":"Preview"}},"print_dept":{"title":"Print Route","add":"Add print route","update":"Edit print route","columns":{"name":"Print route name","products":"Applied product"}},"sku":{"title":"Ingredient","add":"Add ingredient","update":"Update ingredient","columns":{"code":"Code","name":"Name","unit":"Unit"},"empty":{"no_unit":"No unit found","subtitle":"Add a unit to start adding your ingredient."},"validation":{"code_used":"Code used by other ingredient"},"errors":{"select_recipe_ingredient":"Select recipe or ingredient to convert"},"convertible":{"label":"Convertible","sublabel":"Convertible from other recipe or ingredients","convert_to":"Recipes and ingredients convert to"}},"recipe":{"title":"Recipe","add":"Add recipe","update":"Update recipe","columns":{"name":"Name"},"validation":{"bind_required":"Bind at least one recipe or ingredient"},"table":{"columns":{"name":"Name","ingredients":"Ingredients"},"search":{"placeholder":"Search recipes"}},"empty":{"title":"Add your first recipe","subtitle":"Create recipes to standardize your food preparation process","action":"Add recipe"},"actions":{"add":"Add recipe"}},"serving_sequence":{"title":"Serving sequence","add":"Add sequence","update":"Update sequence","columns":{"name":"Sequence name"},"empty":{"title":"No serving sequence","subtitle":"Set up the order in which your dishes are served, ensuring a smooth and organized dining experience."}},"group":{"title":"Group","add":"Add Group","update":"Update group","form":{"tagging":{"title":"Tagging","subtitle":"Group your groups by tags to streamline reporting and management"}},"option":{"title":"Product","subtitle":"Unlinked variant's orderFrom will be set to None","link_products":"Link products","add_option":"Add option","product_title":"Title","product_title_required":"Product title is required","price":"Price ({symbol})","inventory":"Inventory","variant":"Variant","code":"Code","is_default":"Default","should_link_at_least_one_variant":"Should link at least one variant of {name}"},"types":{"normal":"Normal","product":"Product","dynamic":"Dynamic"},"select":{"title":"Select group","subtitle":"Select group to apply changes"},"empty":{"title":"No group found","subtitle":"Seems like you don't have addon groups created."},"search":{"placeholder":"Search groups"},"type":{"title":"Group: {type} type","all":"All type","normal":"Normal type","product":"Product type","dynamic":"Dynamic type"},"list":{"items_linked":"{count} items linked","products_linked":"{count} product(s) linked","columns":{"name":"Group name","products":"Products","type":"Type","applied_products":"Applied products"},"types":{"normal":"Normal","product":"Product","dynamic":"Dynamic"},"variants":"{ count } variant","more_items":"& { count } more"},"actions":{"add":"Add group","duplicate":{"title":"Duplicate group","message":"Are you sure to duplicate {name}?"},"apply_product":"Apply product","duplicate_action":"Duplicate"},"dialogs":{"delete":{"title":"Delete group","message":"Do you want to delete {name}?","unlink_warning":"The following {count} item(s) will be unlinked:"},"update":{"title":"Update group"}},"validation":{"name_duplicate":"Group name already exists"}},"migrate":{"title":"Migrate to new version","description":"Do you want to migrate to new version? Once migrate it will unable to revert to the older version.","message":"Migrate your menu to new version to enjoy more features. Content of new menu will remain the same as current.","notification":{"title":"New version of menu is out now!","description":"Migrate your current menu version to the latest to enjoy more features such as product sequential dispatch, serving sequence, scheduler and more! Your content and current setting will be preserved."},"errors":{"no_restaurant":"Required at least one restaurant to migrate","pos_version":"Upgrade POS to V{version} to use new menu: {restaurants}"}},"scheduler":{"title":"Scheduler","select":{"title":"Select scheduler","all_time":"All time"},"empty":{"title":"No scheduler found","subtitle":"Add a scheduler to schedule time for your product to display.","action":"Add scheduler"},"table":{"columns":{"name":"Scheduler name","repeat":"Repeat","period":"Period","products":"Apply product"},"products_linked":"{count} item linked","search":{"placeholder":"Search schedulers"}},"repeat":{"daily":"Daily","weekdays":"Weekdays","weekends":"Weekends","except":"Daily except {day}","range":"{start} to {end}"},"days":{"monday":"Monday","tuesday":"Tuesday","wednesday":"Wednesday","thursday":"Thursday","friday":"Friday","saturday":"Saturday","sunday":"Sunday"},"dialog":{"add":{"title":"Add scheduler","action":"Add"},"update":{"title":"Update scheduler","action":"Update"},"sections":{"detail":{"title":"Scheduler detail","name":{"label":"Scheduler name","placeholder":"Placeholder","required":"Required"}},"availability":{"title":"Availability","daily":"Daily","weekly":"Weekly"},"period":{"title":"Active period","all_day":"All day","custom":"Custom period","add":"Add period","overlap":"Time periods cannot overlap. Please adjust the periods so they don't overlap or touch."},"autolink":{"title":"Autolink product","label":"Auto link product","sublabel":"Automatically link products based on filters","all_items":"Auto link all items","filter_message":"Auto link items matching following filters.","tooltip":"You can use wildcards ('*' for any characters, '$' for any numeric characters) in filter values. For example, A*1 matches A1, AG1, AC51, but not A2, B1, C9, A$ matches A1, A11, A124 but not AQ1, AG1, AC"},"filter":{"add":"Add filter","matches":"matches","or":"or","types":{"code":"Code","category":"Category"},"placeholder":{"category":"Select category"}},"products":{"title":"Apply product","link":"Link product"}},"actions":{"cancel":"Cancel"}},"dialogs":{"remove":{"title":"Remove scheduler","message":"Are you sure to remove scheduler {name}?"}}},"revert":{"title":"Revert menu","description":"Revert {name}'s menu to the last published version. Delivery catalog will be set to Main if it's not in last published version.","labels":{"restaurant":"Restaurant","revert_to":"Revert to","default":"Default","pos_takeaway":"POS Takeaway","pickup":"Pick up","additional_catalogs":"Additional catalogs"}},"remy":{"title":"Remy","description":"Your AI assistant","actions":{"start":"Start with Remy","close":"Close Remy"},"messages":{"welcome":"Hi! I'm Remy, your AI assistant. How can I help you today?","thinking":"Thinking...","error":"Sorry, I encountered an error. Please try again."}},"picker":{"title":"Select {type}","search":"Search {type}","no_results":"No {type} found","selected":"{count} selected"},"apply_product":{"title":"Apply product","link":{"title":"Link product","subtitle":"Link products to apply changes"},"table":{"category_count":"{name} ({count})","inventory":"Inventory","value":"Value: {values}"}},"catalog":{"title":"Catalog","detail":"Catalog Detail","main":"Master product","form":{"name":"Catalog name","tax":{"title":"Tax calculation","auto":{"label":"Automatic","sublabel":"All price default to exclusive, when order through delivery company it will automatically become tax inclusive"},"manual":{"label":"Manual","sublabel":"You can specify own tax calculation for this catalog"},"inclusive":"{code} inclusive"},"link":{"title":"Link product configuration","auto_link":{"label":"Auto link item","sublabel":"Auto-link products to the main catalog for availability"},"options":{"all":"Available for all","pos_only":"Order on POS only"}},"markup":{"title":"Price markup configuration","auto":{"label":"Auto markup price","sublabel":"Auto-markup prices for catalog, groups, and schedules"},"add":"Add markup configuration","config":"Configuration {number}","percentage":"Markup percentage: {value}%","products":"{count} product(s) linked","all_items":"Apply for all items"},"restaurant_attributes_title":"Restaurant Attributes"},"validation":{"name_used":"Catalog name used","name_required":"Catalog name is required"},"edit":{"back":"Back to catalog","export":"Export","import":"Import","link_product":"Link product","apply_scheduler":"Apply scheduler","tabs":{"product":"Product","category":"Category","group":"Group","takeaway":"Takeaway","setting":"Setting"},"scheduler":{"remove":{"title":"Remove scheduler","message":"Are you sure to remove scheduler {name}?"}}},"usage":{"title":"Catalog usage","tax_calculation":"Tax calculation","products":"{count} products","restaurant":"Restaurant","usage":"Usage"},"table":{"columns":{"title":"Catalog title","tax_calculation":"Tax calculation","auto_link":"Auto link item"}},"empty":{"title":"Build your menu catalog","subtitle":"Organize your menu with a catalog. Add products, set prices, and customize for dine-in, takeout, or delivery."},"actions":{"add":"Add catalog","view_usage":"Catalog usage"},"dialogs":{"remove":{"title":"Remove catalog","message":"Are you sure to remove {name}?","error":"Catalog used by {restaurants} restaurants"}}},"currency":{"input":{"field":"field"}},"order":{"from":{"options":{"all":"Available for all","pos_only":"POS only","none":"None"}}},"inventory":{"title":"Inventory","subtitle":"Adjust ingredient and customise recipe for your product","columns":{"product_name":"Product name","ingredient":"Ingredient","recipe":"Recipe"},"status":{"sku_linked":"{count} sku linked","recipe_linked":"{count} recipe linked","not_set":"Not set"},"dialog":{"title":"{name} inventory"},"form":{"title":"Inventory","product_name":"Product name"},"binding":{"recipe":{"title":"Recipe","columns":{"name":"Recipe","amount":"Amount"}},"ingredient":{"title":"Ingredient","columns":{"name":"Ingredient","amount":"Amount","unit":"Unit"},"select_unit":"Select Unit","loop_warning":"Opps! there's a loop detected on this {type}. Please verify or remove it."},"link":{"title":"Link {type}","recipe":"recipe","ingredient":"ingredient"}}},"link_product":{"title":"Apply products","rules":{"title":"Link products rules","section_title":"Configure advanced linking by rules","order_from":"Order from","restaurant_filter":"Restaurant filter","restaurant_custom_attributes_filter":"Restaurant tagging filter","item_filter":"Product filter","item_custom_attributes_filter":"Product tagging filter","add_rule":"Add rule","hint":"Link products to restaurants based on specific tags or attributes. Product attributes are sourced from the main catalog instead of a subcatalog."}},"catalog_scheduler":{"title":"Update product from","subtitle":"Select the catalog and scheduler you wanted to update your product"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"Add markup configuration","update":"Update markup configuration"},"fields":{"percentage":{"label":"Markup percentage","placeholder":"0","required":"Markup percentage is required"}},"options":{"all":"Apply for all products","custom":"Custom products"},"products":{"link":"Link product","count":"{count} product(s) linked"}}},"import":{"dialog":{"title":"Import products","subtitle":"Please select menu or addonGroup file to upload","info":"Please don't change any header line from the original template otherwise the import will fail.","fields":{"type":"Menu type","file":{"replace":"Replace file"}},"actions":{"import":"Import"},"errors":{"select_file":"Please select a file to import"},"button":{"label":"Add files"}}},"product":{"form":{"title":{"add":"Add product","update":"Update product"},"summary":{"title":"Product summary","fields":{"code":"Product code","name":"Product name","category":"Category","order_from":"Order from","selling_price":"Selling price","tax":"Tax","inventory":"Inventory","takeaway":"Takeaway"}},"sections":{"general":{"title":"General setting","description":"Use a different general setting"},"tagging":{"title":"Tagging","subtitle":"Group your products by tags to streamline reporting and management"},"price":{"title":"Update price","description":"Use a different price setting"},"print":{"title":"Update print","description":"Use a different print setting"},"variant":{"title":"Update variant","description":"Use a different variant setting"},"group":{"title":"Update group","description":"Use a different group setting"},"inventory":{"title":"Update inventory","description":"Use a different inventory setting"},"takeaway":{"title":"Update takeaway","description":"Use a different takeaway setting"}},"detail":{"title":"Product detail","fields":{"code":{"label":"Product code","placeholder":"No code"},"name":{"label":"Product name","required":"Name is required","duplicate_warning":"This product shares the same name as {count} other items. They will be grouped as one product in reports."},"description":{"label":"Description","optional":"(optional)","placeholder":"No description"}},"category":{"label":"Categories","label_singular":"Category","required":"Category is required","placeholder":"Select categories to structure your menu","add_new":"Add new Category","add_first":"Please add a product category first","options":{"product":{"label":"Sell as product with add on","sublabel":"Product will appear as a-lar-carte"},"addon":{"label":"Sell as add-on only","sublabel":"Product will appear as add-on only"}}},"subcategory":{"label":"Subcategory","required":"Subcategory is required","add_new":"Add new subcategory"},"path":{"label":"Subcategory - menu path","placeholder":"Select subcategories to structure your menu, e.g. Coffee/Latte","helperText":"Add sub-categories to structure your menu"},"order_from":{"label":"Order from","default":"Follows main"}},"group":{"title":"Groups","subtitle":"Add group to your product to sell them as a combo set","add":"Add group","circularError":"Circular linking detected, group {groupName} is already linked to product {productName}","columns":{"title":"Group title","type":"Type"}},"price":{"title":"Price","fields":{"selling_price":{"label":"Selling price","required":"Price is required"},"tax":{"label":"Tax options not available","label_with_code":"{code} (applicable if restaurant profile {code} is set)"}},"settings":{"title":"Price setting","open_price":{"label":"Open price","sublabel":"Allow adjust price without permission"},"sell_by_unit":{"label":"Sell by unit","sublabel":"Sell products by specific units (weight, length, etc.).","per_unit":{"label":"Per","placeholder":"Enter amount","required":"Per unit is required","min":"Per unit must be greater than 0"},"unit":{"placeholder":"Enter unit","required":"Unit is required"}},"track_costing":{"label":"Track costing"},"min_price":{"label":"Has a minimum price after apply discount"}}},"print":{"title":"Printing","config":{"label":"Printing configuration","group_parent":{"label":"Group with parent","sublabel":"Print this product with its parent when serving as an Add-On"}},"kds":{"label":"KDS configuration","options":{"all":{"label":"All at once","description":"Send products to all departments simultaneously for faster preparation"},"sequential":{"label":"Sequential Dispatch","description":"Send the product to each department sequentially for step-by-step preparation"}}},"routes":{"label":"Linked routes","add":"Add route"}},"takeaway":{"title":"Takeaway","subtitle":"Select a takeaway charge to your products","columns":{"variant":"Product & Variant","product":"Product","takeaway":"Takeaway"},"options":{"follows_main":"Follows main","no_preset":"No preset takeaway","add_new":"Add new Takeaway"}},"variant":{"title":"Variants","subtitle":"Add options like size, color or types","add":"Add variant","columns":{"variant":"Variant","code":"Code","order_from":"Order from","price":"Price","min_price":"Min price"},"validation":{"max_variants":"You can only add up to {max} variants"},"placeholders":{"no_code":"No code","follow_general":"Follow general"}}},"empty":{"with_create":{"title":"Add your products","subtitle":"Start by stocking your store with products your customers will love","action":"Add product"},"no_scheduler":{"title":"No product linked","subtitle":"Add product in this catalog by linking products from main catalog."},"with_scheduler":{"title":"No product applied","subtitle":"Apply product in this scheduler by linking products from main catalog."}},"table":{"columns":{"code":"Code","name":"Product name","category":"Categories","price":"Price ({ currency })","order_from":"Order from","tagging":"Tag"},"category":{"all":"All categories","collapse":"Collapse","expand":"+ {count} more"},"tagging":{"all":"All tagging","collapse":"Collapse","expand":"+ {count} more"},"bulk_edit":{"title":"Bulk edit products","actions":{"reset_all":"Reset all","save":"Save"}},"selection":{"count":"{count} items selected","actions":{"deselect_all":"Deselect all","remove":"Remove"}},"empty":{"title":"Add your products","subtitle":"Start by stocking your store with products your customers will love","actions":{"add":"Add product","import":"Import"}},"search":{"placeholder":"Search products"},"validation":{"name_required":"Name is required","price_min":"Price must be greater or equal than 0"}}},"setting":{"catalog":{"title":"Catalog Detail","fields":{"name":{"label":"Catalog name","required":"Catalog name is required","used":"Catalog name used"}},"warnings":{"delivery":"This catalog is being use by delivery company and other order method. This may cause wrong price calculation, please review the price for each catalog usage."}},"tax":{"title":"Tax calculation","modes":{"auto":{"label":"Automatic","sublabel":"All price default to exclusive, when order through delivery company it will automatically become tax inclusive"},"manual":{"label":"Manual","sublabel":"You can specify own tax calculation for this catalog"}},"inclusive":"{code} inclusive"},"link":{"title":"Link product configuration","auto_link":{"label":"Auto link item","sublabel":"Auto-link products to the main catalog for availability"},"options":{"all":"Available for all","pos_only":"Order on POS only"}},"markup":{"title":"Price markup configuration","auto_markup":{"label":"Auto markup price","sublabel":"Auto-markup prices for catalog, groups, and schedules"},"add":"Add markup configuration","config":"Configuration {number}","percentage":"Markup percentage: {value}%","products":{"all":"Apply for all products","linked":"{count} product(s) linked"}}},"takeaway":{"actions":{"add":"Add takeaway"},"title":"Takeaway","add":"Add takeaway","update":"Update takeaway","columns":{"title":"Takeaway title","price":"Price"},"placeholders":{"title":"Enter takeaway title here"},"empty":{"title":"No takeaway found","subtitle":"Seems like you don't have takeaway created.","action":"Add takeaway"},"table":{"columns":{"name":"Takeaway name","price":"Price ({symbol})","products":"Apply products"},"items_linked":"{count} items linked","search":{"placeholder":"Search takeaways"}}},"thumbnail":{"alt":{"default":"item","with_name":"{name}"}},"cooking_guide":{"title":"Cooking guide","empty":{"title":"Add cooking guide","subtitle":"The cooking guide configuration tool enables merchants to establish standardized cooking instructions for dishes across multiple outlets.","action":"Add guide"},"table":{"columns":{"name":"Guide name","products":"Product linked","steps":"{count} step"},"search":{"placeholder":"Search guides"},"mobile":{"products_linked":"{count} products linked"}},"dialogs":{"remove":{"title":"Remove cooking guide","message":{"prefix":"Are you sure to remove cooking guide ","products_using":"There are ","products_count":" products using this cooking guide. "}}},"actions":{"add":"Add guide","remove":"Remove","cancel":"Cancel"},"dialog":{"add":{"title":"Add guide","action":"Add"},"update":{"title":"Update guide","action":"Update"},"sections":{"guide_detail":{"title":"Guide detail","name":{"label":"Guide name","placeholder":"Placeholder","required":"Required"}},"steps":{"title":"Steps","add":"Add step","empty":"No steps added yet"},"apply_product":{"title":"Apply product","link":"Link product","products_linked":"{count} product(s) linked","search":"Search"}},"actions":{"cancel":"Cancel"}},"step_dialog":{"add":{"title":"Add step","action":"Add"},"update":{"title":"Update step","action":"Update"},"sections":{"variables":{"title":"Variables","add":"Add variable","columns":{"key":"Key","value":"Value"},"placeholders":{"key":"key","value":"Default value"},"validation":{"required":"Required","lowercase":"Lower case alphabet only","duplicate":"Duplicate key"}},"instruction":{"title":"Instruction"}},"actions":{"cancel":"Cancel","back":"Back"}},"step_override_dialog":{"title":"Customize cooking step","columns":{"instructions":"Instructions","variables":"Variables","value":"Value"},"actions":{"save":"Save","cancel":"Cancel"}}},"ingredient":{"title":"Ingredient","empty":{"title":"Add your first ingredient","subtitle":"Ingredients are crucial components in food and beverages. Managing them involves sourcing quality products, ensuring storage compliance, and maintaining safety standards, as they significantly impact flavor and quality.","action":"Add ingredient"},"table":{"columns":{"code":"Code","name":"Name","unit":"Unit"},"search":{"placeholder":"Search ingredients"},"mobile":{"code":"Code: {code}","unit":"Unit: {unit}"}},"actions":{"add":"Add ingredient"}},"print_route":{"title":"Print route","empty":{"title":"No route found","subtitle":"Customize your printing destinations to ensure efficient order management by section.","action":"Add route"},"table":{"columns":{"name":"Print route name","products":"Product linked","products_count":"{count} products"},"search":{"placeholder":"Search routes"},"mobile":{"products_linked":"{count} product(s) linked"}},"dialogs":{"remove":{"title":"Remove print route","message":{"prefix":"Are you sure to remove print route? ","products_using":"There are ","products_count":" products using this print route. "}}},"actions":{"add":"Add route","remove":"Remove","cancel":"Cancel"},"department_dialog":{"add":{"title":"Add route","action":"Add"},"update":{"title":"Update route","action":"Update"},"sections":{"route_detail":{"title":"Route detail","name":{"label":"Route name","placeholder":"Placeholder","required":"Required"}},"link_product":{"title":"Link product","link":"Link product","products_linked":"{count} product(s) linked","search":"Search"}},"actions":{"cancel":"Cancel"}}},"products":{"title":"Products","actions":{"export":"Export","import":"Import","add":"Add product","link":"Link product","apply_scheduler":"Apply scheduler"}},"productInternalTools":{"title":"Product internal tools"},"publish":{"title":"Publish","table":{"columns":{"restaurant":"Restaurant","default":"Default","pos_takeaway":"POS takeaway","pickup":"Pick up","version":"Version"},"search":{"placeholder":"Search"},"status":{"latest":"Latest","outdated":"Outdated"}},"empty":{"title":"Create restaurant","subtitle":"You have not created any restaurant yet. Add a restaurant to start publishing menu","action":"Create restaurant"},"actions":{"publish":"Publish","publish_all":"Publish all","refresh":"Refresh","revert":"Revert Menu"},"labels":{"main_version":"Main version: {version}","catalog":{"main":"Main","invalid":"Invalid catalog"}},"update_catalog_dialog":{"title":"Update catalog","sections":{"default":{"label":"Default catalog","use_default":"Main"},"pos_takeaway":{"label":"POS takeaway catalog"},"pickup":{"label":"Pick up catalog"},"additional":{"title":"Additional catalog","subtitle":"Additional catalogs can be utilized by table & delivery"}},"actions":{"update":"Update","cancel":"Cancel"}}},"tax_setting":{"title":"Tax setting"},"menu_setting":{"title":"Menu setting","fields":{"low_stock":{"not_set":"Not set","must_be_integer":"Value must be an integer","title":"Product threshold for online orders","subtitle":"Disable online orders when stock falls below this limit","helper_text":"If stock reaches or drops below this number, the product will be prompted to be removed from online ordering","updated":"Menu setting updated"}},"tabs":{"menu_configuration":"Menu configuration","price_group":"Price group","link_product_rule_groups":"Link products rule groups"}},"rule_groups":{"title":"Link products rule groups","description":"Manage rule groups for linking products based on restaurant and item attributes","create_group":"Create rule group","edit_group":"Edit rule group","saved_successfully":"Rule group settings saved successfully","search_placeholder":"Search rule groups...","table":{"columns":{"name":"Name","description":"Description","rules_count":"Rules count"}},"form":{"basic_info":"Basic Information","name":"Name","name_placeholder":"Enter rule group name","description":"Description","description_placeholder":"Enter rule group description","rules":"Rules","rules_description":"Configure restaurant and item rules for this group"},"validation":{"name_required":"Name is required","at_least_one_rule_required":"At least one rule is required"},"delete_dialog":{"title":"Delete Rule Group","message":"Are you sure you want to delete '{name}'? This action cannot be undone.","success":"Rule group deleted successfully"}},"price_tier":{"price_group":"Price group","description":"Set different price groups for your products and link them to multiple catalogs","add_price_group":"Add price group","add_price_group_success":"Price group created successfully","group_title":"Group title","price_group_description":"Current catalog is linked to price group. Please manage price in main catalog.","delete_dialog":{"title":"Delete price group","message":"Are you sure to delete price group {name}?","success":"Price group deleted successfully"},"settings_table":{"columns":{"name":"Name"}},"form":{"table":{"columns":{"name":"Group title","price":"Selling price"}}},"price_tier_config":"Price group setting","link_price_tier":"Link price tiers","link_price_group":"Link price group","link_price_group_description":"Select a price group to apply it to a catalog. If no group is linked, the Base Price will be used by default.","not_linked":"Not linked","price_group_rule":"Price group rule","price_group_rule_description":"Link price group to restaurants with specific tags.","restaurant_filter":"Restaurant filter"},"tree_editor":{"title":"Menu management","actions":{"add_category":"Add new category","expand_all":"Expand all","collapse_all":"Collapse all","add_product":"Add product","delete_product":"Delete product","edit_category":"Edit category","delete_category":"Delete category","link_category_to_catalog":"Link category to catalog","link_product_to_catalog":"Link product to catalog","unlink_product_from_catalog":"Unlink product from catalog"},"labels":{"main_catalog":"Main catalog","all_time":"All time","products":"{count} product(s)","variants":"{count} variant(s)","groups":"{count} group(s)","addon":"Addon","unknown":"Unknown","please_select_a_product_to_edit":"Please select a product to edit","no_items":"No items to display"}}}`), oi = {
|
|
1808
1808
|
menu: ii
|
|
1809
|
-
}, ri = /* @__PURE__ */ JSON.parse(`{"title":"เมนู","common":{"actions":{"update":"อัปเดต","cancel":"ยกเลิก","add":"เพิ่ม","search":"ค้นหา","delete":"ลบ","remove":"ลบออก","deselect_all":"ยกเลิกการเลือกทั้งหมด","move":"ย้าย","edit":"แก้ไข","download":"ดาวน์โหลด","save":"บันทึก","confirm":"ยืนยัน","yes":"ใช่","no":"ไม่ใช่","link":"ลิงก์","migrate":"ย้ายข้อมูล","add_new_variant":"เพิ่มตัวแปรใหม่","add_group":"เพิ่มกลุ่ม","apply_product":"ใช้เมนู","link_product":"ลิงก์เมนู","deselect":"ยกเลิกการเลือก"},"labels":{"name":"ชื่อ","detail":"รายละเอียด","items_linked":"เชื่อมโยง {count} รายการ","search_placeholder":"ค้นหา {type}","symbol":"สัญลักษณ์","products_linked":"เชื่อมโยง {count} เมนู","product_linked_singular":"เชื่อมโยง {count} เมนู","product_linked_plural":"เชื่อมโยง {count} เมนู","enter_name":"ป้อนชื่อที่นี่","product":"เมนู","selected_items":"เลือก {count} รายการ","all":"ทั้งหมด","category":"หมวดหมู่: {name}","group_name":"ชื่อกลุ่ม","min_select":"เลือกขั้นต่ำ","max_select":"เลือกสูงสุด","group_type":"ประเภทกลุ่ม","stackable":"ซ้อนได้","stackable_sublabel":"ลูกค้าสามารถเลือกตัวเลือกเดียวกันได้มากกว่าหนึ่งครั้ง","configuration":"การกำหนดค่า","variant":"ตัวแปร","product_title":"ชื่อเมนู","price":"ราคา ({symbol})","order_from":"สั่งซื้อจาก","inventory":"สินค้าคงคลัง","search_groups":"ค้นหากลุ่ม","search_variants":"ค้นหาตัวแปร","product_count":"ใช้ {count} เมนู","search_product":"ค้นหาเมนู","product_image":"รูปภาพเมนู","optional":"(ทางเลือก)","products_selected":"เลือก {count} เมนู","items_selected":"เลือก {count} รายการ","catalog":"แคตตาล็อก","scheduler":"ตัวกำหนดเวลา","all_time":"ตลอดเวลา","main":"หลัก","unknown":"ไม่ทราบ","all_day":"ตลอดทั้งวัน","summary":"สรุป","scheduler_title":"ผู้จัดกำหนดการ: {label}","link_product_title":"เชื่อมโยงเมนู","products_count":"เลือกเมนู {count} รายการ","search":"ค้นหา","status":"สถานะ"},"dialog":{"remove_confirmation":"คุณแน่ใจหรือไม่ที่จะลบ {name}","change_type":{"title":"เปลี่ยนประเภทกลุ่ม Add on","message":"การเปลี่ยนประเภทกลุ่ม Add on จะล้างจากเมนูทั้งหมด คุณแน่ใจหรือไม่ที่จะดำเนินการต่อ"},"remove":{"catalog":{"title":"ลบแคตตาล็อก","message":"คุณแน่ใจหรือไม่ที่จะลบ {name}"},"category":{"title":"ลบหมวดหมู่","message":"คุณแน่ใจหรือไม่ที่จะลบ {name}"},"subcategory":{"title":"ลบหมวดหมู่ย่อย","message":"คุณแน่ใจหรือไม่ว่าจะลบ {name}?"},"product":{"title":"ลบเมนู","message":"คุณแน่ใจหรือไม่ที่จะลบ {name}","success":"ลบเมนูออกเรียบร้อยแล้ว"},"recipe":{"title":"ลบสูตร","message":"คุณต้องการลบสูตร {name} หรือไม่"},"ingredient":{"title":"ลบส่วนผสม","message":"คุณต้องการลบส่วนผสม {name} หรือไม่"},"takeaway":{"title":"ลบรายการนำกลับบ้าน","message":"คุณต้องการลบ {name} หรือไม่"},"unit":{"title":"ลบหน่วย","message":"คุณต้องการลบหน่วย {name} หรือไม่"},"variant":{"title":"ลบตัวแปร","message":"คุณต้องการลบ {name} หรือไม่"}}},"validation":{"required":"{field} จำเป็นต้องระบุ","min_max":"การเลือกขั้นต่ำต้องน้อยกว่าหรือเท่ากับค่าสูงสุด เลือก","product_title_required":"จำเป็นต้องใส่ชื่อเมนู","min_value":"ค่าต่ำสุดคือ {value}","max_value":"ค่าสูงสุดคือ {value}","field_required":"{field} จำเป็นต้องกรอก","required_field":"จำเป็น","invalid_amount":"จำนวนไม่ถูกต้อง","max_default_items":"จำนวนสินค้าเริ่มต้นไม่สามารถมากกว่า {max} ได้","min_exceeds_available_items":"เลือกขั้นต่ำ ({min}) ไม่สามารถมากกว่าสินค้าที่มีจำหน่าย ({available}) เมื่อปิดการใช้งาน stackable","default_items_tip":"เลือกเมนูเริ่มต้น {count} / {max} รายการ เมนูเริ่มต้นจะถูกเลือกโดยอัตโนมัติเมื่อสั่งซื้อ"},"file":{"accepts":"ยอมรับ .jpg, .jpeg, .png, .gif"},"empty":{"no_group":{"title":"ไม่พบกลุ่ม","subtitle":"ดูเหมือนว่าคุณยังไม่ได้สร้างกลุ่ม"},"no_variant":{"title":"ไม่พบตัวแปร","subtitle":"ดูเหมือนว่าคุณยังไม่ได้สร้างตัวแปร"}}},"category":{"title":"หมวดหมู่","add":"เพิ่มหมวดหมู่","detail":"รายละเอียดหมวดหมู่","name":"ชื่อหมวดหมู่","empty":{"title":"จำเป็นต้องเลือกหมวดหมู่สำหรับเมนู","subtitle":"ใช้หมวดหมู่เพื่อจัดระเบียบเมนูของคุณ","no_group":{"title":"ไม่พบกลุ่ม","subtitle":"ดูเหมือนว่าคุณไม่ได้สร้างกลุ่ม"}},"columns":{"title":"ชื่อหมวดหมู่","products":"ใช้เมนู"},"dialog":{"remove":{"title":"ลบหมวดหมู่","error":"ไม่สามารถลบหมวดหมู่นี้ได้"},"add":{"title":"เพิ่มหมวดหมู่","name":{"label":"ชื่อหมวดหมู่","placeholder":"ป้อนชื่อหมวดหมู่ที่นี่","required":"จำเป็นต้องระบุชื่อหมวดหมู่"}}},"products":{"title":"เมนู","add":"เพิ่มเมนู","linked_count":"เชื่อมโยง {count} เมนูที่","search":"ค้นหา","columns":{"name":"ชื่อเมนู","code":"รหัสเมนู"}},"selector":{"all":"ทั้งหมด","title":"หมวดหมู่: {label}"},"manager":{"dialog":{"add":{"title":"เพิ่มหมวดหมู่","action":"สร้าง"},"update":{"title":"อัปเดตหมวดหมู่","action":"อัปเดต"}}}},"subcategory":{"title":"หมวดหมู่ย่อย","add":"เพิ่มหมวดหมู่ย่อย","detail":"รายละเอียดหมวดหมู่ย่อย","name":"ชื่อหมวดหมู่ย่อย","empty":{"title":"จัดกลุ่มผลิตภัณฑ์ของคุณเป็นหมวดหมู่ย่อย","subtitle":"ใช้หมวดหมู่ย่อยเพื่อจัดระเบียบผลิตภัณฑ์ของคุณ"},"columns":{"title":"ชื่อหมวดหมู่ย่อย"},"dialog":{"remove":{"title":"ลบหมวดหมู่ย่อย","error":"ไม่สามารถลบหมวดหมู่ย่อยนี้ได้"},"add":{"title":"เพิ่มหมวดหมู่ย่อย","name":{"label":"ชื่อหมวดหมู่ย่อย","placeholder":"ป้อนชื่อหมวดหมู่ย่อยที่นี่","required":"จำเป็นต้องระบุชื่อหมวดหมู่ย่อย"}}},"manager":{"dialog":{"add":{"title":"เพิ่มหมวดหมู่ย่อย","action":"สร้าง"},"update":{"title":"อัปเดตหมวดหมู่ย่อย","action":"อัปเดต"}}}},"variant":{"title":"ตัวเลือก","add":"เพิ่มตัวแปร","columns":{"name":"ชื่อตัวแปร","options":"ค่าตัวเลือก","applied_products":"ผลิตภัณฑ์ที่นำไปใช้"},"mobile":{"value":"ค่า: {values}"},"empty":{"title":"เพิ่มตัวแปร","subtitle":"การกำหนดค่าตัวแปรช่วยให้ผู้ค้าสามารถเสนอตัวเลือกผลิตภัณฑ์ที่ปรับแต่งได้","no_variant":{"title":"ไม่พบตัวแปร","subtitle":"ดูเหมือนว่าคุณไม่มีตัวแปรที่สร้างขึ้น"}},"select":{"title":"เลือกตัวแปร","subtitle":"เลือกตัวแปรที่จะใช้การเปลี่ยนแปลง"},"form":{"title":{"add":"เพิ่มตัวแปร","edit":"แก้ไขตัวแปร"},"detail":"รายละเอียดตัวแปร","name":{"label":"ชื่อตัวแปร","placeholder":"ขนาดคัพ","helper":"ตั้งชื่อชุดตัวเลือกนี้ ตัวอย่างเช่น คุณสามารถเรียกชุดตัวเลือกนี้ว่าไซส์หรือระดับความหวาน","required":"ชื่อตัวแปรเป็นสิ่งจำเป็น"},"options":{"title":"ค่าตัวเลือก","placeholder":"ตัวเลือก","min_required":"จำเป็นต้องมีอย่างน้อย 1 ตัวเลือก","name_required":"จำเป็นต้องมีชื่อตัวเลือก"},"applied_product":"เมนูที่นำไปใช้"}},"unit":{"title":"หน่วย","add":"เพิ่มหน่วย","update":"อัปเดตหน่วย","precision":"ความแม่นยำ","precision_placeholder":"ป้อนตัวเลข","empty":{"title":"เพิ่มหน่วยแรกของคุณ","subtitle":"หน่วยใช้เพื่อระบุว่าคุณต้องการวัดเมนูของคุณอย่างไร"},"columns":{"name":"ชื่อ","symbol":"สัญลักษณ์"},"measurement":{"add":"เพิ่มการวัด","title":"การวัด {number}","name":"ชื่อ","symbol":"สัญลักษณ์","conversion":"การแปลง","preview":"1 {name} เท่ากับ {value} {unit}","preview_label":"ดูตัวอย่าง"}},"print_dept":{"title":"เส้นทางการพิมพ์","add":"เพิ่มเส้นทางการพิมพ์","update":"แก้ไขเส้นทางการพิมพ์","columns":{"name":"พิมพ์ชื่อเส้นทาง","products":"เมนูที่นำไปใช้"}},"sku":{"title":"ส่วนผสม","add":"เพิ่มส่วนผสม","update":"อัปเดตส่วนผสม","columns":{"code":"รหัส","name":"ชื่อ","unit":"หน่วย"},"empty":{"no_unit":"ไม่พบหน่วย","subtitle":"เพิ่มหน่วยเพื่อเริ่มเพิ่มส่วนผสมของคุณ"},"validation":{"code_used":"รหัสที่ใช้โดยส่วนผสมอื่น"},"errors":{"select_recipe_ingredient":"เลือกสูตรหรือส่วนผสมที่จะแปลง"},"convertible":{"label":"แปลงได้","sublabel":"แปลงได้จากสูตรหรือส่วนผสมอื่น","convert_to":"แปลงสูตรอาหารและส่วนผสมเป็น"}},"recipe":{"title":"สูตร","add":"เพิ่มสูตรอาหาร","update":"อัปเดตสูตรอาหาร","columns":{"name":"ชื่อ"},"validation":{"bind_required":"ผูกสูตรอาหารหรือส่วนผสมอย่างน้อยหนึ่งสูตร"},"table":{"columns":{"name":"ชื่อ","ingredients":"ส่วนผสม"},"search":{"placeholder":"ค้นหาสูตรอาหาร"}},"empty":{"title":"เพิ่มสูตรอาหารแรกของคุณ","subtitle":"สร้างสูตรอาหารเพื่อทำให้กระบวนการเตรียมอาหารของคุณเป็นมาตรฐาน","action":"เพิ่มสูตรอาหาร"},"actions":{"add":"เพิ่มสูตรอาหาร"}},"serving_sequence":{"title":"ลำดับการเสิร์ฟ","add":"เพิ่มลำดับ","update":"อัปเดตลำดับ","columns":{"name":"ชื่อลำดับ"},"empty":{"title":"ไม่มีลำดับการเสิร์ฟ","subtitle":"ตั้งค่าลำดับการเสิร์ฟอาหารของคุณ เพื่อให้แน่ใจว่าจะได้ประสบการณ์การรับประทานอาหารที่ราบรื่นและเป็นระเบียบ"}},"group":{"title":"กลุ่ม","add":"เพิ่มกลุ่ม","update":"อัปเดตกลุ่ม","form":{"tagging":{"title":"การแท็ก","subtitle":"จัดกลุ่มกลุ่มของคุณตามแท็กเพื่อปรับปรุงการรายงานและการจัดการ"}},"option":{"title":"ตัวเลือก","subtitle":"orderFrom ของตัวแปรที่ไม่ได้เชื่อมโยงจะถูกตั้งเป็น None","link_products":"เชื่อมโยงเมนู","add_option":"เพิ่มตัวเลือก","product_title":"ชื่อ","product_title_required":"จำเป็นต้องใส่ชื่อเมนู","price":"ราคา ({symbol})","inventory":"สินค้าคงคลัง","variant":"ตัวแปร","code":"รหัส","is_default":"ค่าเริ่มต้น","should_link_at_least_one_variant":"ควรเชื่อมโยงตัวแปรอย่างน้อยหนึ่งรายการของ {name}"},"types":{"normal":"ปกติ","product":"เมนู","dynamic":"ไดนามิก"},"select":{"title":"เลือกกลุ่ม","subtitle":"เลือกกลุ่มที่จะใช้การเปลี่ยนแปลง"},"empty":{"title":"ไม่พบกลุ่ม","subtitle":"ดูเหมือนว่าคุณไม่ได้สร้างกลุ่ม Add On"},"search":{"placeholder":"ค้นหากลุ่ม"},"type":{"title":"กลุ่ม: ประเภท {type}","all":"ประเภททั้งหมด","normal":"ประเภทปกติ","product":"ประเภทเมนู","dynamic":"ประเภทไดนามิก"},"list":{"items_linked":"รายการเชื่อมโยง {count} รายการ","products_linked":"เมนูเชื่อมโยง {count} รายการ","columns":{"name":"ชื่อกลุ่ม","products":"เมนู","type":"ประเภท","applied_products":"เมนูที่ใช้"},"types":{"normal":"ปกติ","product":"เมนู","dynamic":"ไดนามิก"},"variants":"{ count } ตัวแปร","more_items":"และอีก { count } รายการ"},"actions":{"add":"เพิ่มกลุ่ม","duplicate":{"title":"กลุ่มที่ซ้ำกัน","message":"คุณแน่ใจหรือไม่ที่จะทำซ้ำ {name}"},"apply_product":"ใช้เมนู","duplicate_action":"ทำซ้ำ"},"dialogs":{"delete":{"title":"ลบกลุ่ม","message":"คุณต้องการลบ {name} หรือไม่","unlink_warning":"รายการ {count} รายการต่อไปนี้จะถูกยกเลิกการเชื่อมโยง:"},"update":{"title":"อัปเดตกลุ่ม"}},"validation":{"name_duplicate":"ชื่อกลุ่มมีอยู่แล้ว"}},"migrate":{"title":"ย้ายไปยังเวอร์ชันใหม่","description":"คุณต้องการย้ายไปยังเวอร์ชันใหม่หรือไม่ เมื่อย้ายแล้วจะไม่สามารถย้อนกลับไปใช้เวอร์ชันเก่าได้","message":"ย้ายเมนูของคุณไปยังเวอร์ชันใหม่เพื่อใช้งานฟีเจอร์ต่างๆ ได้มากขึ้น เนื้อหาของเมนูใหม่จะยังคงเหมือนเดิม","notification":{"title":"เวอร์ชันใหม่ของเมนูออกแล้ว!","description":"ย้ายเวอร์ชั่นเมนูปัจจุบันของคุณไปเป็นเวอร์ชั่นล่าสุดเพื่อเพลิดเพลินกับฟีเจอร์ต่างๆ เพิ่มเติม เช่น การจัดส่งผลิตภัณฑ์ตามลำดับ ลำดับการเสิร์ฟ ตัวกำหนดเวลา และอื่นๆ อีกมากมาย เนื้อหาและการตั้งค่าปัจจุบันของคุณจะถูกเก็บรักษาไว้"},"errors":{"no_restaurant":"ต้องมีร้านอาหารอย่างน้อยหนึ่งร้านที่จะย้ายข้อมูล","pos_version":"อัปเกรด POS เป็น V{version} เพื่อใช้เมนูใหม่: {restaurants}"}},"scheduler":{"title":"ตัวจัดตารางเวลา","select":{"title":"เลือกตัวจัดตารางเวลา","all_time":"ตลอดเวลา"},"empty":{"title":"ไม่พบตัวจัดตารางเวลา","subtitle":"เพิ่มตัวจัดตารางเวลาเพื่อกำหนดเวลาให้ผลิตภัณฑ์ของคุณแสดง","action":"เพิ่มตัวจัดตารางเวลา"},"table":{"columns":{"name":"ชื่อตัวจัดตารางเวลา","repeat":"ทำซ้ำ","period":"ระยะเวลา","products":"ใช้เมนู"},"products_linked":"เชื่อมโยงรายการ {count} รายการ","search":{"placeholder":"ค้นหาตัวจัดตารางเวลา"}},"repeat":{"daily":"รายวัน","weekdays":"วันธรรมดา","weekends":"สุดสัปดาห์","except":"รายวัน ยกเว้น {day}","range":"{start} ถึง {end}"},"days":{"monday":"วันจันทร์","tuesday":"วันอังคาร","wednesday":"วันพุธ","thursday":"วันพฤหัสบดี","friday":"วันศุกร์","saturday":"วันเสาร์","sunday":"วันอาทิตย์"},"dialog":{"add":{"title":"เพิ่มตัวจัดตารางเวลา","action":"เพิ่ม"},"update":{"title":"อัปเดตตัวจัดตารางเวลา","action":"อัปเดต"},"sections":{"detail":{"title":"รายละเอียดตัวจัดตารางเวลา","name":{"label":"ชื่อตัวจัดตารางเวลา","placeholder":"ตัวแทน","required":"จำเป็น"}},"availability":{"title":"ความพร้อมใช้งาน","daily":"รายวัน","weekly":"รายสัปดาห์"},"period":{"title":"ระยะเวลาใช้งาน","all_day":"ตลอดทั้งวัน","custom":"ระยะเวลาที่กำหนดเอง","add":"เพิ่มระยะเวลา","overlap":"ระยะเวลาไม่สามารถทับซ้อนหรือติดกันได้ กรุณาปรับระยะเวลาให้มีช่วงว่างระหว่างแต่ละช่วง"},"autolink":{"title":"เชื่อมโยงเมนูโดยอัตโนมัติ","label":"เชื่อมโยงเมนูโดยอัตโนมัติ","sublabel":"เชื่อมโยงเมนูโดยอัตโนมัติตามตัวกรอง","all_items":"เชื่อมโยงรายการทั้งหมดโดยอัตโนมัติ","filter_message":"เชื่อมโยงรายการที่ตรงกับตัวกรองต่อไปนี้โดยอัตโนมัติ","tooltip":"คุณสามารถใช้ไวด์การ์ด ('*' สำหรับอักขระใดๆ และ '$' สำหรับอักขระตัวเลขใดๆ) ในค่าตัวกรอง ตัวอย่างเช่น A*1 ตรงกับ A1, AG1, AC51 แต่ไม่ตรงกับ A2, B1, C9 ส่วน A$ ตรงกับ A1, A11, A124 แต่ไม่ตรงกับ AQ1, AG1, AC"},"filter":{"add":"เพิ่มตัวกรอง","matches":"รายการที่ตรงกัน","or":"หรือ","types":{"code":"รหัส","category":"หมวดหมู่"},"placeholder":{"category":"เลือกหมวดหมู่"}},"products":{"title":"ใช้เมนู","link":"เชื่อมโยงเมนู"}},"actions":{"cancel":"ยกเลิก"}},"dialogs":{"remove":{"title":"ลบตัวกำหนดเวลา","message":"คุณแน่ใจหรือไม่ว่าต้องการลบตัวกำหนดเวลา {name}"}}},"revert":{"title":"ย้อนกลับเมนู","description":"ย้อนกลับเมนูของ {name} เป็นเวอร์ชันที่เผยแพร่ล่าสุด แคตตาล็อกการจัดส่งจะถูกตั้งค่าเป็นหน้าหลักหากไม่อยู่ในเวอร์ชันที่เผยแพร่ล่าสุด","labels":{"restaurant":"ร้านอาหาร","revert_to":"กลับสู่","default":"ค่าเริ่มต้น","pos_takeaway":"POS Takeaway","pickup":"รับสินค้า","additional_catalogs":"แคตตาล็อกเพิ่มเติม"}},"remy":{"title":"Remy","description":"ผู้ช่วย AI ของคุณ","actions":{"start":"เริ่มต้นด้วย Remy","close":"ปิด Remy"},"messages":{"welcome":"สวัสดี ฉันชื่อ Remy ผู้ช่วย AI ของคุณ ฉันจะช่วยคุณได้อย่างไรในวันนี้","thinking":"กำลังคิด...","error":"ขออภัย ฉันพบข้อผิดพลาด โปรดลองอีกครั้ง"}},"picker":{"title":"เลือก {type}","search":"ค้นหา {type}","no_results":"ไม่พบ {type}","selected":"เลือก {count} รายการ"},"apply_product":{"title":"ใช้เมนู","link":{"title":"เชื่อมโยงเมนู","subtitle":"เชื่อมโยงเมนูเพื่อใช้การเปลี่ยนแปลง"},"table":{"category_count":"{name} ({count})","inventory":"สินค้าคงคลัง","value":"ค่า: {values}"}},"catalog":{"title":"แคตตาล็อก","detail":"รายละเอียดแคตตาล็อก","main":"แคตตาล็อกหลัก","form":{"name":"ชื่อแคตตาล็อก","tax":{"title":"การคำนวณภาษี","auto":{"label":"อัตโนมัติ","sublabel":"ราคาทั้งหมดเป็นราคาปกติ เมื่อสั่งซื้อผ่านบริษัทขนส่ง ราคาจะรวมภาษีโดยอัตโนมัติ"},"manual":{"label":"คู่มือ","sublabel":"คุณสามารถระบุการคำนวณภาษีของตัวเองสำหรับแคตตาล็อกนี้ได้"},"inclusive":"รวม {code}"},"link":{"title":"เชื่อมโยงการกำหนดค่าเมนู","auto_link":{"label":"เชื่อมโยงรายการโดยอัตโนมัติ","sublabel":"เชื่อมโยงเมนูโดยอัตโนมัติไปยังแคตตาล็อกหลักเพื่อความพร้อมใช้งาน"},"options":{"all":"พร้อมใช้งานสำหรับทั้งหมด","pos_only":"สั่งซื้อบน POS เท่านั้น"}},"markup":{"title":"กำหนดค่ามาร์กอัปราคา","auto":{"label":"กำหนดราคามาร์กอัปโดยอัตโนมัติ","sublabel":"กำหนดราคามาร์กอัปโดยอัตโนมัติสำหรับแคตตาล็อก กลุ่ม และกำหนดการ"},"add":"เพิ่มการกำหนดค่ามาร์กอัป","config":"การกำหนดค่า {number}","products":"เชื่อมโยงเมนู {count} รายการ","all_items":"นำไปใช้กับรายการทั้งหมด"},"restaurant_attributes_title":"คุณสมบัติร้านอาหาร"},"validation":{"name_used":"ชื่อแคตตาล็อกที่ใช้","name_required":"จำเป็นต้องระบุชื่อแคตตาล็อก"},"edit":{"back":"กลับไปที่แคตตาล็อก","export":"ส่งออก","import":"นำเข้า","link_product":"เชื่อมโยงเมนู","apply_scheduler":"ใช้ตัวกำหนดเวลา","tabs":{"product":"เมนู","category":"หมวดหมู่","group":"กลุ่ม","takeaway":"นำกลับบ้าน","setting":"การตั้งค่า"},"scheduler":{"remove":{"title":"ลบตัวกำหนดเวลา","message":"คุณแน่ใจหรือไม่ว่าต้องการลบตัวกำหนดเวลา {name}?"}}},"usage":{"title":"การใช้งานแคตตาล็อก","tax_calculation":"การคำนวณภาษี","products":"เมนู {count} รายการ","restaurant":"ร้านอาหาร","usage":"การใช้งาน"},"table":{"columns":{"title":"ชื่อแคตตาล็อก","tax_calculation":"การคำนวณภาษี","auto_link":"การเชื่อมโยงรายการอัตโนมัติ"}},"empty":{"title":"สร้างแคตตาล็อกเมนูของคุณ","subtitle":"จัดระเบียบเมนูของคุณด้วยแคตตาล็อก เพิ่มผลิตภัณฑ์ กำหนดราคา และปรับแต่งสำหรับการรับประทานในร้าน ซื้อกลับบ้าน หรือจัดส่ง"},"actions":{"add":"เพิ่มแคตตาล็อก","view_usage":"การใช้งานแคตตาล็อก"},"dialogs":{"remove":{"title":"ลบแคตตาล็อก","message":"คุณแน่ใจหรือไม่ว่าต้องการลบ {name}","error":"แคตตาล็อกที่ใช้โดยร้านอาหาร {restaurants}"}}},"currency":{"input":{"field":"ฟิลด์"}},"order":{"from":{"options":{"all":"พร้อมใช้งานสำหรับทั้งหมด","pos_only":"POS เท่านั้น","none":"ไม่มี"}}},"inventory":{"title":"สินค้าคงคลัง","subtitle":"ปรับส่วนผสมและปรับแต่งสูตรสำหรับเมนูของคุณ","columns":{"product_name":"ชื่อเมนู","ingredient":"ส่วนผสม","recipe":"สูตร"},"status":{"sku_linked":"{count} sku เชื่อมโยง","recipe_linked":"{count} สูตรเชื่อมโยง","not_set":"ไม่ได้ตั้งค่า"},"dialog":{"title":"สินค้าคงคลัง {name}"},"form":{"title":"สินค้าคงคลัง","product_name":"ชื่อเมนู"},"binding":{"recipe":{"title":"สูตร","columns":{"name":"สูตร","amount":"จำนวน"}},"ingredient":{"title":"ส่วนผสม","columns":{"name":"ส่วนผสม","amount":"จำนวน","unit":"หน่วย"},"select_unit":"เลือกหน่วย","loop_warning":"อุ๊ย! ตรวจพบลูปใน {type} นี้ โปรดตรวจสอบหรือลบลูปนั้น"},"link":{"title":"ลิงก์ {type}","recipe":"สูตรอาหาร","ingredient":"ส่วนผสม"}}},"link_product":{"title":"ใช้เมนู","rules":{"title":"กฎการลิงก์เมนู","section_title":"ตั้งค่าการลิงก์ขั้นสูงด้วยกฎ","order_from":"ช่องทางการสั่งซื้อ","restaurant_filter":"ตัวกรองร้านอาหาร","restaurant_custom_attributes_filter":"ตัวกรองแท็กร้านอาหาร","item_filter":"ตัวกรองสินค้า","item_custom_attributes_filter":"ตัวกรองแท็กสินค้า","add_rule":"เพิ่มกฎ","hint":"ลิงก์เมนูกับร้านอาหารโดยใช้แท็กร้านอาหารและคุณลักษณะเมนูค่าเริ่มต้นจากแคตตาล็อกหลักเท่านั้น (ไม่ใช้การแทนที่ในแคตตาล็อกย่อย)"}},"catalog_scheduler":{"title":"อัปเดตเมนูจาก","subtitle":"เลือกแคตตาล็อกและตัวกำหนดเวลาที่คุณต้องการอัปเดตเมนูของคุณ"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"เพิ่มการกำหนดค่ามาร์กอัป","update":"อัปเดตการกำหนดค่ามาร์กอัป"},"fields":{"percentage":{"label":"เปอร์เซ็นต์มาร์กอัป","placeholder":"0","required":"จำเป็นต้องมีเปอร์เซ็นต์มาร์กอัป"}},"options":{"all":"ใช้กับเมนูทั้งหมด","custom":"เมนูที่กำหนดเอง"},"products":{"link":"ลิงก์เมนู","count":"ลิงก์เมนู {count} รายการ"}}},"import":{"dialog":{"title":"นำเข้าเมนู","subtitle":"อัพโหลดเอกสารที่จะนำเข้า","info":"โปรดอย่าเปลี่ยนบรรทัดส่วนหัวใดๆ จากเทมเพลตเดิม มิฉะนั้น การนำเข้าจะล้มเหลว","fields":{"type":"ประเภทเมนู","file":{"replace":"แทนที่ไฟล์"}},"actions":{"import":"นำเข้า"},"errors":{"select_file":"โปรดเลือกไฟล์ที่จะนำเข้า"},"button":{"label":"เพิ่มไฟล์"}}},"product":{"form":{"title":{"add":"เพิ่มเมนู","update":"อัปเดตเมนู"},"summary":{"title":"สรุปเมนู","fields":{"code":"รหัสเมนู","name":"ชื่อเมนู","category":"หมวดหมู่","order_from":"สั่งซื้อจาก","selling_price":"ราคาขาย","tax":"ภาษี","inventory":"สินค้าคงคลัง","takeaway":"อาหารนำกลับบ้าน"}},"sections":{"general":{"title":"การตั้งค่าทั่วไป","description":"ใช้การตั้งค่าทั่วไปอื่น"},"tagging":{"title":"การแท็ก","subtitle":"จัดกลุ่มเมนูของคุณตามแท็กเพื่อปรับปรุงการรายงานและการจัดการ"},"price":{"title":"อัปเดตราคา","description":"ใช้การตั้งค่าราคาอื่น"},"print":{"title":"อัปเดตการพิมพ์","description":"ใช้การตั้งค่าการพิมพ์อื่น"},"variant":{"title":"อัปเดตตัวแปร","description":"ใช้การตั้งค่าตัวแปรอื่น"},"group":{"title":"อัปเดตกลุ่ม","description":"ใช้การตั้งค่ากลุ่มที่แตกต่างกัน"},"inventory":{"title":"อัปเดตสินค้าคงคลัง","description":"ใช้การตั้งค่าสินค้าคงคลังอื่น"},"takeaway":{"title":"อัปเดตข้อมูลนำกลับบ้าน","description":"ใช้การตั้งค่านำกลับบ้านอื่น"}},"detail":{"title":"รายละเอียดเมนู","fields":{"code":{"label":"รหัสเมนู","placeholder":"ไม่มีรหัส"},"name":{"label":"ชื่อเมนู","required":"จำเป็นต้องระบุชื่อ","duplicate_warning":"เมนูนี้มีชื่อเดียวกันกับสินค้าอื่นอีก {count} รายการ ซึ่งจะถูกจัดกลุ่มเป็นเมนูเดียวในรายงาน"},"description":{"label":"คำอธิบาย","optional":"(ไม่บังคับ)","placeholder":"ไม่มีคำอธิบาย"}},"category":{"label":"หมวดหมู่","label_singular":"หมวดหมู่","required":"จำเป็นต้องระบุหมวดหมู่","placeholder":"เลือกหมวดหมู่เพื่อจัดโครงสร้างเมนูของคุณ","add_new":"เพิ่มหมวดหมู่ใหม่","add_first":"กรุณาเพิ่มหมวดหมู่สินค้าก่อน","options":{"product":{"label":"ขายเป็นสินค้าพร้อมส่วนเสริม","sublabel":"สินค้าจะปรากฏเป็นรายการสั่งซื้อ"},"addon":{"label":"ขายเป็นรายการเสริมเท่านั้น","sublabel":"สินค้าจะปรากฏเป็นรายการเสริมเท่านั้น"}}},"subcategory":{"label":"หมวดหมู่ย่อย","required":"จำเป็นต้องระบุหมวดหมู่ย่อย","add_new":"เพิ่มหมวดหมู่ย่อยใหม่"},"path":{"label":"หมวดหมู่ย่อย - เส้นทางเมนู","placeholder":"เลือกหมวดหมู่ย่อยเพื่อจัดโครงสร้างเมนูของคุณ เช่น กาแฟ/ลาเต้","helperText":"เพิ่มหมวดหมู่ย่อยเพื่อจัดโครงสร้างเมนูของคุณ"},"order_from":{"label":"สั่งซื้อจาก","default":"ติดตามหน้าหลัก"}},"group":{"title":"กลุ่ม","subtitle":"เพิ่มกลุ่มให้กับเมนูของคุณเพื่อขายเป็นชุดคอมโบ","add":"เพิ่มกลุ่ม","circularError":"ตรวจพบการเชื่อมโยงแบบวนซ้ำ กลุ่ม {groupName} ได้เชื่อมโยงกับเมนู {productName} แล้ว","columns":{"title":"ชื่อกลุ่ม","type":"ประเภท"}},"price":{"title":"ราคา","fields":{"selling_price":{"label":"ราคาขาย","required":"จำเป็นต้องมีราคา"},"tax":{"label":"ตัวเลือกภาษีไม่พร้อมใช้งาน","label_with_code":"{code} (ใช้ได้หากตั้งค่าโปรไฟล์ร้านอาหารเป็น {code})"}},"settings":{"title":"การกำหนดราคา","open_price":{"label":"ราคาเปิด","sublabel":"อนุญาตให้ปรับราคาได้โดยไม่ต้องขออนุญาต"},"sell_by_unit":{"label":"ขายตามหน่วย","sublabel":"ขายเมนูตามหน่วยที่กำหนด (น้ำหนัก ความยาว ฯลฯ)","per_unit":{"label":"ต่อ","placeholder":"ป้อนจำนวน","required":"ต่อหน่วยเป็นสิ่งจำเป็น","min":"ต่อหน่วยต้องมากกว่า 0"},"unit":{"placeholder":"ป้อนหน่วย","required":"จำเป็นต้องมีหน่วย"}},"track_costing":{"label":"ติดตามต้นทุน"},"min_price":{"label":"มีราคาขั้นต่ำหลังจากใช้ส่วนลด"}}},"print":{"title":"การพิมพ์","config":{"label":"การกำหนดค่าการพิมพ์","group_parent":{"label":"จัดกลุ่มกับเมนูหลัก","sublabel":"พิมพ์เมนูนี้พร้อมกับเมนูหลักเมื่อทำหน้าที่เป็น Add-On"}},"kds":{"label":"การกำหนดค่า KDS","options":{"all":{"label":"ทั้งหมดในครั้งเดียว","description":"ส่งเมนูไปยังทุกแผนกพร้อมกันเพื่อการเตรียมการที่รวดเร็วยิ่งขึ้น"},"sequential":{"label":"การจัดส่งแบบต่อเนื่อง","description":"ส่งเมนูไปยังแต่ละแผนกตามลำดับเพื่อการเตรียมการแบบทีละขั้นตอน"}}},"routes":{"label":"เส้นทางที่เชื่อมโยง","add":"เพิ่มเส้นทาง"}},"takeaway":{"title":"การนำกลับบ้าน","subtitle":"เลือกค่าธรรมเนียมการนำกลับบ้านสำหรับเมนูของคุณ","columns":{"variant":"สินค้าและตัวแปร","product":"เมนู","takeaway":"การนำกลับบ้าน"},"options":{"follows_main":"ปฏิบัติตามหลัก","no_preset":"ไม่มีการนำกลับบ้านที่ตั้งไว้ล่วงหน้า","add_new":"เพิ่มการนำกลับบ้านใหม่"}},"variant":{"title":"ตัวแปร","subtitle":"เพิ่มตัวเลือก เช่น ขนาด สี หรือประเภท","add":"เพิ่มตัวแปร","columns":{"variant":"ตัวแปร","code":"รหัส","order_from":"สั่งซื้อจาก","price":"ราคา","min_price":"ราคาต่ำสุด"},"validation":{"max_variants":"คุณสามารถเพิ่มตัวแปรได้สูงสุด {max} รายการ"},"placeholders":{"no_code":"ไม่มีรหัส","follow_general":"ปฏิบัติตามทั่วไป"}}},"empty":{"with_create":{"title":"เพิ่มเมนูของคุณ","subtitle":"เริ่มต้นด้วยการสต็อกสินค้าในร้านของคุณซึ่งลูกค้าของคุณจะชื่นชอบ","action":"เพิ่มเมนู"},"no_scheduler":{"title":"ไม่มีการเชื่อมโยงเมนู","subtitle":"เพิ่มเมนูในแค็ตตาล็อกนี้โดยการเชื่อมโยงเมนูจากแค็ตตาล็อกหลัก"},"with_scheduler":{"title":"ไม่มีการใช้เมนู","subtitle":"ใช้เมนูในตัวกำหนดเวลานี้โดยการเชื่อมโยงเมนูจากแค็ตตาล็อกหลัก"}},"table":{"columns":{"code":"รหัส","name":"ชื่อเมนู","category":"หมวดหมู่","price":"ราคา ({ currency })","order_from":"สั่งซื้อจาก","tagging":"แท็ก"},"category":{"all":"หมวดหมู่ทั้งหมด","collapse":"ยุบ","expand":"+ เพิ่มเติมอีก {count} รายการ"},"tagging":{"all":"แท็กทั้งหมด","collapse":"ยุบ","expand":"+ เพิ่มเติมอีก {count} รายการ"},"bulk_edit":{"title":"แก้ไขเมนูจำนวนมาก","actions":{"reset_all":"รีเซ็ตทั้งหมด","save":"บันทึก"}},"selection":{"count":"เลือกรายการ {count} รายการ","actions":{"deselect_all":"ยกเลิกการเลือกทั้งหมด","remove":"ลบ"}},"empty":{"title":"เพิ่มเมนูของคุณ","subtitle":"เริ่มต้นด้วยการสต็อกสินค้าในร้านของคุณที่ลูกค้าของคุณจะชื่นชอบ","actions":{"add":"เพิ่มเมนู","import":"นำเข้า"}},"search":{"placeholder":"ค้นหาเมนู"},"validation":{"name_required":"จำเป็นต้องระบุชื่อ","price_min":"ราคาต้องมากกว่าหรือเท่ากับ 0"}}},"setting":{"catalog":{"title":"รายละเอียดแคตตาล็อก","fields":{"name":{"label":"ชื่อแคตตาล็อก","required":"จำเป็นต้องระบุชื่อแคตตาล็อก","used":"ชื่อแคตตาล็อกที่ใช้"}},"warnings":{"delivery":"แคตตาล็อกนี้กำลังถูกใช้โดยบริษัทขนส่งและวิธีการสั่งซื้ออื่นๆ ซึ่งอาจทำให้คำนวณราคาผิดพลาดได้ โปรดตรวจสอบราคาสำหรับการใช้แคตตาล็อกแต่ละรายการ"}},"tax":{"title":"การคำนวณภาษี","modes":{"auto":{"label":"อัตโนมัติ","sublabel":"ราคาทั้งหมดเป็นค่าเริ่มต้นแบบไม่รวม เมื่อสั่งซื้อผ่านบริษัทขนส่ง ราคาจะกลายเป็นราคาที่รวมภาษีโดยอัตโนมัติ"},"manual":{"label":"ด้วยตนเอง","sublabel":"คุณสามารถระบุการคำนวณภาษีสำหรับแคตตาล็อกนี้ได้ด้วยตัวเอง"}},"inclusive":"{code} รวม"},"link":{"title":"เชื่อมโยงการกำหนดค่าเมนู","auto_link":{"label":"เชื่อมโยงรายการโดยอัตโนมัติ","sublabel":"เชื่อมโยงเมนูโดยอัตโนมัติไปยังแคตตาล็อกหลักเพื่อให้ทราบถึงความพร้อมใช้งาน"},"options":{"all":"พร้อมใช้งานสำหรับทั้งหมด","pos_only":"สั่งซื้อบน POS เท่านั้น"}},"markup":{"title":"กำหนดค่ามาร์กอัปราคา","auto_markup":{"label":"กำหนดราคามาร์กอัปโดยอัตโนมัติ","sublabel":"กำหนดราคามาร์กอัปโดยอัตโนมัติสำหรับแคตตาล็อก กลุ่ม และกำหนดการ"},"add":"เพิ่มการกำหนดค่ามาร์กอัป","config":"กำหนดค่า {number}","percentage":"เปอร์เซ็นต์มาร์กอัป: {value}%","products":{"all":"นำไปใช้กับผลิตภัณฑ์ทั้งหมด","linked":"{count} เมนูที่เชื่อมโยง"}}},"takeaway":{"actions":{"add":"เพิ่มการซื้อกลับบ้าน"},"title":"การซื้อกลับบ้าน","add":"เพิ่มรายการอาหารนำกลับบ้าน","update":"อัปเดตรายการอาหารนำกลับบ้าน","columns":{"title":"ชื่อรายการอาหารนำกลับบ้าน","price":"ราคา"},"placeholders":{"title":"ใส่ชื่อรายการอาหารนำกลับบ้านที่นี่"},"empty":{"title":"ไม่พบรายการอาหารนำกลับบ้าน","subtitle":"ดูเหมือนว่าคุณยังไม่ได้สร้างรายการอาหารนำกลับบ้าน","action":"เพิ่มรายการอาหารนำกลับบ้าน"},"table":{"columns":{"name":"ชื่อรายการอาหารนำกลับบ้าน","price":"ราคา ({symbol})","products":"ใช้เมนู"},"items_linked":"เชื่อมโยงรายการ {count} รายการ","search":{"placeholder":"ค้นหารายการอาหารนำกลับบ้าน"}}},"thumbnail":{"alt":{"default":"รายการ","with_name":"{name}"}},"cooking_guide":{"title":"คู่มือการทำอาหาร","empty":{"title":"เพิ่มคู่มือการทำอาหาร","subtitle":"เครื่องมือกำหนดค่าคำแนะนำการปรุงอาหารช่วยให้ผู้ค้าสามารถกำหนดคำแนะนำการปรุงอาหารที่เป็นมาตรฐานสำหรับอาหารต่าง ๆ ในหลาย ๆ ร้านค้า","action":"เพิ่มคู่มือ"},"table":{"columns":{"name":"ชื่อคู่มือ","products":"เชื่อมโยงเมนู","steps":"ขั้นตอน {count}"},"search":{"placeholder":"ค้นหาคู่มือ"},"mobile":{"products_linked":"เชื่อมโยงเมนู{count}"}},"dialogs":{"remove":{"title":"ลบคู่มือการทำอาหาร","message":{"prefix":"คุณแน่ใจหรือไม่ว่าต้องการลบคู่มือการทำอาหาร","products_using":"มี","products_count":"เมนูที่ใช้คู่มือการทำอาหารนี้"}}},"actions":{"add":"เพิ่มคู่มือ","remove":"ลบ","cancel":"ยกเลิก"},"dialog":{"add":{"title":"เพิ่มคู่มือ","action":"เพิ่ม"},"update":{"title":"อัปเดตคู่มือ","action":"อัปเดต"},"sections":{"guide_detail":{"title":"รายละเอียดคู่มือ","name":{"label":"ชื่อคู่มือ","placeholder":"ตัวแทน","required":"จำเป็น"}},"steps":{"title":"ขั้นตอน","add":"เพิ่มขั้นตอน","empty":"ยังไม่มีการเพิ่มขั้นตอน"},"apply_product":{"title":"ใช้เมนู","link":"เชื่อมโยงเมนู","products_linked":"เชื่อมโยงเมนู {count} รายการ","search":"ค้นหา"}},"actions":{"cancel":"ยกเลิก"}},"step_dialog":{"add":{"title":"เพิ่มขั้นตอน","action":"เพิ่ม"},"update":{"title":"อัปเดตขั้นตอน","action":"อัปเดต"},"sections":{"variables":{"title":"ตัวแปร","add":"เพิ่มตัวแปร","columns":{"key":"คีย์","value":"มูลค่า"},"placeholders":{"key":"คีย์","value":"ค่าเริ่มต้น"},"validation":{"required":"จำเป็น","lowercase":"ตัวอักษรพิมพ์เล็กเท่านั้น","duplicate":"คีย์ซ้ำ"}},"instruction":{"title":"คำแนะนำ"}},"actions":{"cancel":"ยกเลิก","back":"ย้อนกลับ"}},"step_override_dialog":{"title":"ปรับแต่งขั้นตอนการปรุงอาหาร","columns":{"instructions":"คำแนะนำ","variables":"ตัวแปร","value":"มูลค่า"},"actions":{"save":"บันทึก","cancel":"ยกเลิก"}}},"ingredient":{"title":"ส่วนผสม","empty":{"title":"เพิ่มส่วนผสมแรกของคุณ","subtitle":"ส่วนผสมเป็นส่วนประกอบที่สำคัญในอาหารและเครื่องดื่ม การจัดการส่วนผสมเกี่ยวข้องกับการจัดหาเมนูที่มีคุณภาพ การตรวจสอบความสอดคล้องของการจัดเก็บ และการรักษามาตรฐานความปลอดภัย เนื่องจากส่วนผสมเหล่านี้ส่งผลกระทบอย่างมากต่อรสชาติและคุณภาพ","action":"เพิ่มส่วนผสม"},"table":{"columns":{"code":"รหัส","name":"ชื่อ","unit":"หน่วย"},"search":{"placeholder":"ค้นหาส่วนผสม"},"mobile":{"code":"รหัส: {code}","unit":"หน่วย: {unit}"}},"actions":{"add":"เพิ่มส่วนผสม"}},"print_route":{"title":"พิมพ์เส้นทาง","empty":{"title":"ไม่พบเส้นทาง","subtitle":"ปรับแต่งปลายทางการพิมพ์ของคุณเพื่อให้แน่ใจว่าการจัดการคำสั่งซื้อตามส่วนมีประสิทธิภาพ","action":"เพิ่มเส้นทาง"},"table":{"columns":{"name":"พิมพ์ชื่อเส้นทาง","products":"เชื่อมโยงเมนู","products_count":"เมนู {count} รายการ"},"search":{"placeholder":"ค้นหาเส้นทาง"},"mobile":{"products_linked":"เชื่อมโยงเมนู {count} รายการ"}},"dialogs":{"remove":{"title":"ลบเส้นทางการพิมพ์","message":{"prefix":"คุณแน่ใจหรือไม่ว่าจะลบเส้นทางการพิมพ์?","products_using":"มี","products_count":"เมนูที่ใช้เส้นทางการพิมพ์นี้"}}},"actions":{"add":"เพิ่มเส้นทาง","remove":"ลบ","cancel":"ยกเลิก"},"department_dialog":{"add":{"title":"เพิ่มเส้นทาง","action":"เพิ่ม"},"update":{"title":"อัปเดตเส้นทาง","action":"อัปเดต"},"sections":{"route_detail":{"title":"รายละเอียดเส้นทาง","name":{"label":"ชื่อเส้นทาง","placeholder":"ตัวแทน","required":"จำเป็น"}},"link_product":{"title":"เชื่อมโยงเมนู","link":"เชื่อมโยงเมนู","products_linked":"เชื่อมโยงเมนู {count} รายการ","search":"ค้นหา"}},"actions":{"cancel":"ยกเลิก"}}},"products":{"title":"เมนู","actions":{"export":"ส่งออก","import":"นำเข้า","add":"เพิ่มเมนู","link":"เชื่อมโยงเมนู","apply_scheduler":"ใช้ตัวกำหนดเวลา"}},"productInternalTools":{"title":"เครื่องมือภายในผลิตภัณฑ์"},"publish":{"title":"เผยแพร่","table":{"columns":{"restaurant":"ร้านอาหาร","default":"ค่าเริ่มต้น","pos_takeaway":"POS takeaway","pickup":"รับสินค้า","version":"เวอร์ชัน"},"search":{"placeholder":"ค้นหา"},"status":{"latest":"ล่าสุด","outdated":"ล้าสมัย"}},"empty":{"title":"สร้างร้านอาหาร","subtitle":"คุณยังไม่ได้สร้างร้านอาหาร เพิ่มร้านอาหารเพื่อเริ่มเผยแพร่เมนู","action":"สร้างร้านอาหาร"},"actions":{"publish":"เผยแพร่","publish_all":"เผยแพร่ทั้งหมด","refresh":"รีเฟรช","revert":"ย้อนกลับเมนู"},"labels":{"main_version":"เวอร์ชันหลัก: {version}","catalog":{"main":"หลัก","invalid":"แคตตาล็อกไม่ถูกต้อง"}},"update_catalog_dialog":{"title":"อัปเดตแคตตาล็อก","sections":{"default":{"label":"แคตตาล็อกเริ่มต้น","use_default":"หลัก"},"pos_takeaway":{"label":"POS takeaway catalog"},"pickup":{"label":"Pick up catalog"},"additional":{"title":"แคตตาล็อกเพิ่มเติม","subtitle":"สามารถใช้แคตตาล็อกเพิ่มเติมโดยโต๊ะและการจัดส่งได้"}},"actions":{"update":"อัปเดต","cancel":"ยกเลิก"}}},"tax_setting":{"title":"การตั้งค่าภาษี"},"menu_setting":{"title":"การตั้งค่าเมนู","fields":{"low_stock":{"not_set":"ไม่ตั้งค่า","must_be_integer":"ค่าต้องเป็นจำนวนเต็ม","title":"จำนวนสินค้าสำหรับการสั่งซื้อออนไลน์","subtitle":"ปิดการสั่งซื้อออนไลน์เมื่อสินค้าลดลงเกินจำนวนนี้","helper_text":"ถ้าสินค้าลดลงเกินจำนวนนี้ สินค้าจะถูกแจ้งให้ลบออกจากการสั่งซื้อออนไลน์","updated":"การตั้งค่าเมนูอัปเดตแล้ว"}},"tabs":{"menu_configuration":"การตั้งค่าเมนู","price_group":"กลุ่มราคา","link_product_rule_groups":"กลุ่มกฎการเชื่อมโยงผลิตภัณฑ์"}},"rule_groups":{"title":"กลุ่มกฎการเชื่อมโยงผลิตภัณฑ์","description":"จัดการกลุ่มกฎสำหรับการเชื่อมโยงผลิตภัณฑ์ตามคุณลักษณะของร้านอาหารและรายการ","create_group":"สร้างกลุ่มกฎ","edit_group":"แก้ไขกลุ่มกฎ","saved_successfully":"การตั้งค่ากลุ่มกฎบันทึกเรียบร้อยแล้ว","search_placeholder":"ค้นหากลุ่มกฎ...","table":{"columns":{"name":"ชื่อ","description":"คำอธิบาย","rules_count":"จำนวนกฎ"}},"form":{"basic_info":"ข้อมูลพื้นฐาน","name":"ชื่อ","name_placeholder":"ป้อนชื่อกลุ่มกฎ","description":"คำอธิบาย","description_placeholder":"ป้อนคำอธิบายกลุ่มกฎ","rules":"กฎ","rules_description":"กำหนดค่ากฎร้านอาหารและรายการสำหรับกลุ่มนี้"},"validation":{"name_required":"ต้องระบุชื่อ","at_least_one_rule_required":"ต้องมีอย่างน้อยหนึ่งกฎ"},"delete_dialog":{"title":"ลบกลุ่มกฎ","message":"คุณแน่ใจหรือไม่ว่าต้องการลบ '{name}'? การดำเนินการนี้ไม่สามารถยกเลิกได้","success":"กลุ่มกฎลบออกเรียบร้อยแล้ว"}},"price_tier":{"price_group":"กลุ่มราคา","description":"ตั้งค่ากลุ่มราคาที่แตกต่างกันสำหรับผลิตภัณฑ์ของคุณและเชื่อมโยงไปยังหลายแคตตาล็อก","add_price_group":"เพิ่มกลุ่มราคา","add_price_group_success":"กลุ่มราคาเพิ่มขึ้นเรียบร้อย","group_title":"ชื่อกลุ่ม","price_group_description":"ปัจจุบันกลุ่มราคานี้เชื่อมโยงกับแคตตาล็อก กรุณาจัดการราคาในแคตตาล็อกหลัก","delete_dialog":{"title":"ลบกลุ่มราคา","message":"คุณแน่ใจหรือไม่ว่าจะลบกลุ่มราคา {name}?","success":"กลุ่มราคาลบออกเรียบร้อย"},"settings_table":{"columns":{"name":"ชื่อ"}},"form":{"table":{"columns":{"name":"ชื่อกลุ่ม","price":"ราคาขาย"}}},"price_tier_config":"การตั้งค่ากลุ่มราคา","link_price_tier":"เชื่อมโยงระดับราคา","link_price_group":"เชื่อมโยงกลุ่มราคา","link_price_group_description":"เลือกกลุ่มราคาเพื่อใช้งานในแคตตาล็อก หากไม่มีกลุ่มราคาเชื่อมโยง ราคาฐานจะใช้งานเป็นค่าเริ่มต้น","not_linked":"ไม่เชื่อมโยง","price_group_rule":"กลุ่มราคากฎ","price_group_rule_description":"เชื่อมโยงกลุ่มราคาไปยังร้านอาหารที่มีป้ายชื่อที่ระบุ","restaurant_filter":"ตัวกรองร้านอาหาร"},"tree_editor":{"title":"การจัดการเมนู","actions":{"add_category":"เพิ่มหมวดหมู่ใหม่","expand_all":"ขยายทั้งหมด","collapse_all":"ยุบทั้งหมด","add_product":"เพิ่มผลิตภัณฑ์","delete_product":"ลบผลิตภัณฑ์","edit_category":"แก้ไขหมวดหมู่","delete_category":"ลบหมวดหมู่","link_category_to_catalog":"เชื่อมโยงหมวดหมู่ไปยังแคตตาล็อก","link_product_to_catalog":"เชื่อมโยงผลิตภัณฑ์ไปยังแคตตาล็อก","unlink_product_from_catalog":"ยกเลิกเชื่อมโยงผลิตภัณฑ์จากแคตตาล็อก"},"labels":{"main_catalog":"แคตตาล็อกหลัก","all_time":"ทั้งหมด","products":"{count} ผลิตภัณฑ์","variants":"{count} รูปแบบ","groups":"{count} กลุ่ม","addon":"ส่วนเสริม","unknown":"ไม่ทราบ","please_select_a_product_to_edit":"กรุณาเลือกผลิตภัณฑ์เพื่อแก้ไข","no_items":"ไม่มีผลิตภัณฑ์ที่สามารถแสดง"}}}`), ni = {
|
|
1810
|
-
menu: ri
|
|
1811
|
-
}, li = /* @__PURE__ */ JSON.parse(`{"title":"菜单","common":{"actions":{"update":"更新","cancel":"取消","add":"添加","search":"搜索","delete":"删除","remove":"移除","deselect_all":"取消选择","move":"移动","edit":"编辑","download":"下载","save":"保存","confirm":"确认","yes":"是","no":"否","link":"链接","migrate":"迁移","add_new_variant":"添加新规格","add_group":"添加组","apply_product":"应用产品","link_product":"链接产品","deselect":"取消选择"},"labels":{"name":"名称","detail":"详情","items_linked":"{count} 个项目已链接","search_placeholder":"搜索 {type}","symbol":"符号","products_linked":"{count} 个产品已链接","product_linked_singular":"{count} 个产品已链接","product_linked_plural":"{count} 个产品已链接","enter_name":"输入名称","product":"产品","selected_items":"{count} 个项目已选择","all":"全部","category":"分类:{name}","group_name":"组名称","min_select":"最少选择","max_select":"最多选择","group_type":"组类型","stackable":"可堆叠","stackable_sublabel":"顾客可以多次选择相同选项","configuration":"配置","variant":"规格","product_title":"产品标题","price":"价格 ({symbol})","order_from":"下单来源","inventory":"库存","search_groups":"搜索组","search_variants":"搜索规格","product_count":"{count} 个产品已应用","search_product":"搜索产品","product_image":"产品图片","optional":"(可选)","products_selected":"{count} 个产品已选择","items_selected":"{count} 个项目已选择","catalog":"目录","scheduler":"调度器","all_time":"全天","main":"主","unknown":"未知","all_day":"全天","summary":"概览","scheduler_title":"调度器:{label}","link_product_title":"链接产品","products_count":"已选 {count} 个产品","search":"搜索","status":"状态"},"dialog":{"remove_confirmation":"确定要移除 {name} 吗?","change_type":{"title":"更改附加组类型","message":"更改附加组类型将清除所有产品。确定要继续吗?"},"remove":{"catalog":{"title":"移除目录","message":"确定要移除 {name} 吗?"},"category":{"title":"移除分类","message":"确定要移除 {name} 吗?"},"subcategory":{"title":"删除子分类","message":"确定要删除 {name} 吗?"},"product":{"title":"移除产品","message":"确定要移除 {name} 吗?","success":"产品已成功移除。"},"recipe":{"title":"移除配方","message":"确定要移除配方 {name} 吗?"},"ingredient":{"title":"移除配料","message":"确定要移除配料 {name} 吗?"},"takeaway":{"title":"移除外带","message":"确定要移除 {name} 吗?"},"unit":{"title":"移除单位","message":"确定要移除单位 {name} 吗?"},"variant":{"title":"移除规格","message":"确定要移除 {name} 吗?"}}},"validation":{"required":"{field} 为必填项","min_max":"最小选择数必须小于或等于最大选择数","product_title_required":"产品标题为必填项","min_value":"最小值为 {value}","max_value":"最大值为 {value}","field_required":"{field} 为必填项","required_field":"必填项","invalid_amount":"无效金额","max_default_items":"组中的默认产品数量不得多于 {max}","min_exceeds_available_items":"禁用可叠加时,最少选择 ({min}) 不能大于可用项目 ({available})","default_items_tip":"已选择 {count} / {max} 个默认产品,默认产品下单时将自动选中"},"file":{"accepts":"接受 .jpg、.jpeg、.png、.gif 格式"},"empty":{"no_group":{"title":"未找到组","subtitle":"您还未创建组"},"no_variant":{"title":"未找到规格","subtitle":"您还没创建任何规格"}}},"category":{"title":"分类","add":"添加分类","detail":"分类详情","name":"分类名称","empty":{"title":"将产品分组到分类中","subtitle":"使用分类来组织您的产品。","no_group":{"title":"未找到分组","subtitle":"看起来您还没有创建任何分组"}},"columns":{"title":"分类标题","products":"应用产品"},"dialog":{"remove":{"title":"移除分类","error":"无法删除此分类"},"add":{"title":"添加分类","name":{"label":"分类名称","placeholder":"在此输入分类名称","required":"分类名称为必填项"}}},"products":{"title":"产品","add":"添加产品","linked_count":"已链接 {count} 个产品","search":"搜索","columns":{"name":"产品名称","code":"代码"}},"selector":{"all":"全部","title":"分类:{label}"},"manager":{"dialog":{"add":{"title":"添加分类","action":"创建"},"update":{"title":"更新分类","action":"更新"}}}},"subcategory":{"title":"子分类","add":"添加子分类","detail":"子分类详情","name":"子分类名称","empty":{"title":"将产品分组到子分类中","subtitle":"使用子分类来组织您的产品。"},"columns":{"title":"子分类标题"},"dialog":{"remove":{"title":"删除子分类","error":"无法删除此子分类"},"add":{"title":"添加子分类","name":{"label":"子分类名称","placeholder":"在此输入子分类名称","required":"子分类名称为必填项"}}},"manager":{"dialog":{"add":{"title":"添加子分类","action":"创建"},"update":{"title":"更新子分类","action":"更新"}}}},"variant":{"title":"规格","add":"添加规格","columns":{"name":"规格名称","options":"选项值","applied_products":"已应用产品"},"mobile":{"value":"值:{values}"},"empty":{"title":"添加规格","subtitle":"规格配置为商家提供自定义产品选项的功能。","no_variant":{"title":"未找到规格","subtitle":"看起来您还没有创建规格"}},"select":{"title":"选择规格","subtitle":"选择规格以应用更改"},"form":{"title":{"add":"添加规格","edit":"编辑规格"},"detail":"规格详情","name":{"label":"规格名称","placeholder":"杯型尺寸","helper":"为这组选项命名。例如,您可以将此选项组命名为杯型尺寸或糖度。","required":"规格名称为必填项"},"options":{"title":"选项值","placeholder":"选项","min_required":"至少需要 1 个选项","name_required":"选项名称为必填项"},"applied_product":"已应用产品"}},"unit":{"title":"单位","add":"添加单位","update":"更新单位","precision":"精度","precision_placeholder":"输入一个数字","empty":{"title":"添加您的第一个单位","subtitle":"单位用于指定您希望如何测量产品。"},"columns":{"name":"名称","symbol":"符号"},"measurement":{"add":"添加测量","title":"测量 {number}","name":"名称","symbol":"符号","conversion":"转换","preview":"1 {name} 等于 {value} {unit}","preview_label":"预览"}},"print_dept":{"title":"打印路线","add":"添加打印路线","update":"编辑打印路线","columns":{"name":"打印路线名称","products":"已应用产品"}},"sku":{"title":"配料","add":"添加配料","update":"更新配料","columns":{"code":"代码","name":"名称","unit":"单位"},"empty":{"no_unit":"未找到单位","subtitle":"添加单位以开始添加配料。"},"validation":{"code_used":"代码已被其他配料使用"},"errors":{"select_recipe_ingredient":"选择配方或配料以转换"},"convertible":{"label":"可转换","sublabel":"可从其他配方或配料转换","convert_to":"配方和配料转换为"}},"recipe":{"title":"配方","add":"添加配方","update":"更新配方","columns":{"name":"名称"},"validation":{"bind_required":"绑定至少一个配方或配料"},"table":{"columns":{"name":"名称","ingredients":"配料"},"search":{"placeholder":"搜索配方"}},"empty":{"title":"添加您的第一个配方","subtitle":"创建配方以标准化您的食品制备流程","action":"添加配方"},"actions":{"add":"添加配方"}},"serving_sequence":{"title":"上菜顺序","add":"添加顺序","update":"更新顺序","columns":{"name":"顺序名称"},"empty":{"title":"没有上菜顺序","subtitle":"设置订单顺序,以确保用餐体验流畅有序。"}},"group":{"title":"组","add":"添加组","update":"更新组","form":{"tagging":{"title":"标签","subtitle":"通过标签对组进行分组,以简化报告和管理"}},"option":{"title":"产品","subtitle":"未选择的变体的 orderFrom 会被设置为 None","link_products":"链接产品","add_option":"添加选项","product_title":"名称","product_title_required":"产品标题为必填项","price":"价格 ({symbol})","inventory":"库存","variant":"规格","code":"代码","is_default":"默认","should_link_at_least_one_variant":"至少需要链接\\"{name}\\"的一个规格"},"types":{"normal":"正常","product":"产品","dynamic":"动态"},"select":{"title":"选择组","subtitle":"选择组以应用更改"},"empty":{"title":"未找到组","subtitle":"看起来您还没有添加附加组。"},"search":{"placeholder":"搜索组"},"type":{"title":"组:{type} 类型","all":"所有类型","normal":"正常类型","product":"产品类型","dynamic":"动态类型"},"list":{"items_linked":"{count} 个项目已链接","products_linked":"{count} 个产品已链接","columns":{"name":"组名称","products":"产品","type":"类型","applied_products":"已应用产品"},"types":{"normal":"正常","product":"产品","dynamic":"动态"},"variants":"{ count } 种规格","more_items":"与其他 { count } 个"},"actions":{"add":"添加组","duplicate":{"title":"复制组","message":"您确定要复制 {name} 吗?"},"apply_product":"应用产品","duplicate_action":"复制"},"dialogs":{"delete":{"title":"删除组","message":"您确定要删除 {name} 吗?","unlink_warning":"以下 {count} 个项目将被取消链接:"},"update":{"title":"更新组"}},"validation":{"name_duplicate":"组名称已存在"}},"migrate":{"title":"迁移到新版本","description":"您想迁移到新版本吗?一旦迁移,将无法恢复到旧版本。","message":"将您的菜单迁移到新版本,以享受更多功能。新菜单的内容将与当前相同。","notification":{"title":"新版本的菜单已发布!","description":"将当前菜单版本迁移到最新版本,以享受更多功能,例如产品顺序分发、上菜顺序、调度器等!您的内容和当前设置将被保留。"},"errors":{"no_restaurant":"至少需要一个餐厅才能迁移","pos_version":"升级 POS 到 V{version} 以使用新菜单:{restaurants}"}},"scheduler":{"title":"调度器","select":{"title":"选择调度器","all_time":"全天"},"empty":{"title":"未找到调度器","subtitle":"添加调度器以安排产品显示时间。","action":"添加调度器"},"table":{"columns":{"name":"调度器名称","repeat":"重复","period":" 时段","products":"应用产品"},"products_linked":"{count} 个项目已链接","search":{"placeholder":"搜索调度器"}},"repeat":{"daily":"每日","weekdays":"工作日","weekends":"周末","except":"每日除外 {day}","range":"{start} 到 {end}"},"days":{"monday":"周一","tuesday":"周二","wednesday":"周三","thursday":"周四","friday":"周五","saturday":"周六","sunday":"周日"},"dialog":{"add":{"title":"添加调度器","action":"添加"},"update":{"title":"更新调度器","action":"更新"},"sections":{"detail":{"title":"调度器详情","name":{"label":"调度器名称","placeholder":"占位符","required":"必填项"}},"availability":{"title":"可用性","daily":"每日","weekly":"每周"},"period":{"title":"启用时段","all_day":"全天","custom":"自定义时段","add":"添加时段","overlap":"时段不能重叠或相接。请调整时段设置,确保各时段之间有间隔。"},"autolink":{"title":"自动链接产品","label":"自动链接产品","sublabel":"根据过滤器自动链接产品","all_items":"自动链接所有项目","filter_message":"自动链接符合以下过滤条件的项目。","tooltip":"您可以在过滤值中使用通配符('*' 用于任何字符,'$' 用于任何数字字符)。例如,A*1 匹配 A1、AG1、AC51,但不匹配 A2、B1、C9、A$ 匹配 A1、A11、A124,但不匹配 AQ1、AG1、AC"},"filter":{"add":"添加过滤器","matches":"匹配","or":"或","types":{"code":"代码","category":"分类"},"placeholder":{"category":"选择分类"}},"products":{"title":"应用产品","link":"链接产品"}},"actions":{"cancel":"取消"}},"dialogs":{"remove":{"title":"移除调度器","message":"您确定要移除调度器 {name} 吗?"}}},"revert":{"title":"恢复菜单","description":"将 {name} 的菜单恢复到上次发布的版本。如果它不在上次发布的版本中,则将外送目录设置为主目录。","labels":{"restaurant":"餐厅","revert_to":"恢复到","default":"默认","pos_takeaway":"POS 外带","pickup":"自取","additional_catalogs":"附加目录"}},"remy":{"title":"Remy","description":"您的 AI 助手","actions":{"start":"与 Remy 开始","close":"关闭 Remy"},"messages":{"welcome":"你好!我是 Remy,您的 AI 助手。今天我能为您做什么?","thinking":"正在思考...","error":"抱歉,我遇到了错误。请再试一次。"}},"picker":{"title":"选择 {type}","search":"搜索 {type}","no_results":"未找到 {type}","selected":"{count} 已选择"},"apply_product":{"title":"应用产品","link":{"title":"链接产品","subtitle":"链接产品以应用更改"},"table":{"category_count":"{name} ({count})","inventory":"库存","value":"值:{values}"}},"catalog":{"title":"目录","detail":"目录详情","main":"主产品","form":{"name":"目录名称","tax":{"title":"税计算","auto":{"label":"自动","sublabel":"所有价格默认排除,当通过外送公司订购时将自动变为含税"},"manual":{"label":"手动","sublabel":"您可以为此目录指定自己的税计算"},"inclusive":"{code} 包含"},"link":{"title":"链接产品配置","auto_link":{"label":"自动链接项目","sublabel":"自动将产品链接至主目录以供可用性"},"options":{"all":"可供所有人使用","pos_only":"仅在 POS 上订购"}},"markup":{"title":"价格加价配置","auto":{"label":"自动加价价格","sublabel":"自动加价价格适用于目录、组和调度"},"add":"添加加价配置","config":"配置 {number}","percentage":"加价百分比:{value}%","products":"{count} 个产品已链接","all_items":"适用于所有项目"},"restaurant_attributes_title":"餐厅属性"},"validation":{"name_used":"目录名称已使用","name_required":"目录名称必填"},"edit":{"back":"返回目录","export":"导出","import":"导入","link_product":"链接产品","apply_scheduler":"应用调度器","tabs":{"product":"产品","category":"分类","group":"组","takeaway":"外带","setting":"设置"},"scheduler":{"remove":{"title":"移除调度器","message":"您确定要移除调度器 {name} 吗?"}}},"usage":{"title":"目录概览","tax_calculation":"税计算","products":"{count} 个产品","restaurant":"餐厅","usage":"使用"},"table":{"columns":{"title":"目录标题","tax_calculation":"税计算","auto_link":"自动链接项目"}},"empty":{"title":"构建您的菜单目录","subtitle":"使用目录组织菜单。添加产品、设置价格并根据用餐、外带或外送进行定制。"},"actions":{"add":"添加目录","view_usage":"目录概览"},"dialogs":{"remove":{"title":"移除目录","message":"您确定要移除 {name} 吗?","error":"目录被 {restaurants} 家餐厅使用"}}},"currency":{"input":{"field":"字段"}},"order":{"from":{"options":{"all":"可供所有人使用","pos_only":"仅在 POS 上订购","none":"无"}}},"inventory":{"title":"库存","subtitle":"调整配料并自定义产品配方","columns":{"product_name":"产品名称","ingredient":"配料","recipe":"配方"},"status":{"sku_linked":"已链接 {count} 个配料","recipe_linked":"已链接 {count} 个配方","not_set":"未设置"},"dialog":{"title":"{name} 库存"},"form":{"title":"库存","product_name":"产品名称"},"binding":{"recipe":{"title":"配方","columns":{"name":"配方","amount":"数量"}},"ingredient":{"title":"配料","columns":{"name":"配料","amount":"数量","unit":"单位"},"select_unit":"选择单位","loop_warning":"哎呀!检测到循环。请验证或删除它。"},"link":{"title":"链接 {type}","recipe":"配方","ingredient":"配料"}}},"link_product":{"title":"应用产品","rules":{"title":"链接产品规则","section_title":"按规则配置高级链接","order_from":"可点单渠道","restaurant_filter":"餐厅筛选","restaurant_custom_attributes_filter":"餐厅标签筛选","item_filter":"产品筛选","item_custom_attributes_filter":"产品标签筛选","add_rule":"添加规则","hint":"根据餐厅标签与产品的主目录默认属性将产品链接到餐厅(忽略子目录覆写)。"}},"catalog_scheduler":{"title":"更新产品来源","subtitle":"选择目录和调度器以更新产品"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"添加加价配置","update":"更新加价配置"},"fields":{"percentage":{"label":"加价百分比","placeholder":"0","required":"加价百分比必填"}},"options":{"all":"适用于所有产品","custom":"自定义产品"},"products":{"link":"链接产品","count":"{count} 个产品已链接"}}},"import":{"dialog":{"title":"导入产品","subtitle":"上传需要导入的文档","info":"请不要更改原始模板中的任何标题行,否则导入将失败。","fields":{"type":"菜单类型","file":{"replace":"替换文件"}},"actions":{"import":"导入"},"errors":{"select_file":"请选择要导入的文件"},"button":{"label":"添加文件"}}},"product":{"form":{"title":{"add":"添加产品","update":"更新产品"},"summary":{"title":"产品摘要","fields":{"code":"产品代码","name":"产品名称","category":"分类","order_from":"下单来源","selling_price":"销售价格","tax":"税","inventory":"库存","takeaway":"外带"}},"sections":{"general":{"title":"通用设置","description":"使用不同的通用设置"},"tagging":{"title":"标签","subtitle":"通过标签对产品进行分组,以简化报告和管理"},"price":{"title":"更新价格","description":"使用不同的价格设置"},"print":{"title":"更新打印","description":"使用不同的打印设置"},"variant":{"title":"更新规格","description":"使用不同的规格设置"},"group":{"title":"更新组","description":"使用不同的组设置"},"inventory":{"title":"更新库存","description":"使用不同的库存设置"},"takeaway":{"title":"更新外带","description":"使用不同的外带设置"}},"detail":{"title":"产品详情","fields":{"code":{"label":"产品代码","placeholder":"无代码"},"name":{"label":"产品名称","required":"名称必填","duplicate_warning":"此产品与 {count} 其他项目共享相同名称。它们将在报告中作为一种产品分组。"},"description":{"label":"描述","optional":"(可选)","placeholder":"无描述"}},"category":{"label":"分类","label_singular":"分类","required":"分类必填","placeholder":"选择分类以结构化您的菜单","add_new":"添加新分类","add_first":"请先添加产品分类","options":{"product":{"label":"作为产品或附加项销售","sublabel":"产品可单独销售,也可作为附加项销售"},"addon":{"label":"仅作为附加项销售","sublabel":"产品将作为附加项出现"}}},"subcategory":{"label":"子分类","required":"子分类为必填项","add_new":"添加新子分类"},"path":{"label":"子分类 - 菜单路径","placeholder":"选择子分类以结构化您的菜单,例如:咖啡/拿铁","helperText":"添加子类别以结构化您的菜单"},"order_from":{"label":"下单来源","default":"跟随主目录"}},"group":{"title":"组","subtitle":"为您的产添加组以作为套餐销售","add":"添加组","circularError":"检测到循环链接,组 {groupName} 已链接到产品 {productName}","columns":{"title":"组标题","type":"类型"}},"price":{"title":"价格","fields":{"selling_price":{"label":"销售价格","required":"价格必填"},"tax":{"label":"税选项不可用","label_with_code":"{code}(适用于餐厅配置 {code} 已设置)"}},"settings":{"title":"价格设置","open_price":{"label":"开放价格","sublabel":"允许在不获得许可的情况下调整价格"},"sell_by_unit":{"label":"按单位销售","sublabel":"按特定单位(重量、长度等)销售产品。","per_unit":{"label":"每","placeholder":"输入数量","required":"每单位必填","min":"每单位必须大于 0"},"unit":{"placeholder":"输入单位","required":"单位必填"}},"track_costing":{"label":"跟踪成本"},"min_price":{"label":"在应用折扣后有最低价格"}}},"print":{"title":"打印","config":{"label":"打印配置","group_parent":{"label":"与父级组","sublabel":"在作为附加项提供时打印此产品及其父级"}},"kds":{"label":"KDS 配置","options":{"all":{"label":"一次性发送","description":"将产品一次性发送至所有部门,以加快准备速度"},"sequential":{"label":"顺序分发","description":"将产品按顺序发送至每个部门,逐步准备"}}},"routes":{"label":"链接路线","add":"添加路线"}},"takeaway":{"title":"外带","subtitle":"选择外带费用以添加到产品中","columns":{"variant":"产品 & 规格","product":"产品","takeaway":"外带"},"options":{"follows_main":"跟随主目录","no_preset":"没有预设外带","add_new":"添加新外带"}},"variant":{"title":"规格","subtitle":"添加选项,如大小、颜色或类型","add":"添加规格","columns":{"variant":"规格","code":"代码","order_from":"下单来源","price":"价格","min_price":"最低价格"},"validation":{"max_variants":"您只能添加 {max} 个规格"},"placeholders":{"no_code":"无代码","follow_general":"跟随通用"}}},"empty":{"with_create":{"title":"添加您的产品","subtitle":"首先通过进货您的商店,为您的顾客提供他们喜爱的产品","action":"添加产品"},"no_scheduler":{"title":"没有产品链接","subtitle":"通过从主目录链接产品来添加此目录中的产品。"},"with_scheduler":{"title":"没有应用产品","subtitle":"通过从主目录链接产品来应用此调度器中的产品。"}},"table":{"columns":{"code":"代码","name":"产品名称","category":"分类","price":"价格 ({ currency })","order_from":"下单来源","tagging":"标签"},"category":{"all":"所有分类","collapse":"收起","expand":"+ {count} 个更多"},"tagging":{"all":"所有标签","collapse":"收起","expand":"+ {count} 个"},"bulk_edit":{"title":"批量编辑产品","actions":{"reset_all":"重置所有","save":"保存"}},"selection":{"count":"{count} 项已选择","actions":{"deselect_all":"取消选择所有","remove":"移除"}},"empty":{"title":"添加您的产品","subtitle":"首先通过进货您的商店,为您的顾客提供他们喜爱的产品","actions":{"add":"添加产品","import":"导入"}},"search":{"placeholder":"搜索产品"},"validation":{"name_required":"名称必填","price_min":"价格必须大于或等于 0"}}},"setting":{"catalog":{"title":"目录详情","fields":{"name":{"label":"目录名称","required":"目录名称必填","used":"目录名称已使用"}},"warnings":{"delivery":"此目录正在被外送公司和其他订单方法使用。这可能会导致价格计算错误,请审查每个目录使用的价格。"}},"tax":{"title":"税计算","modes":{"auto":{"label":"自动","sublabel":"所有价格默认排除,当通过外送公司订购时将自动变为含税"},"manual":{"label":"手动","sublabel":"您可以为此目录指定自己的税计算"}},"inclusive":"{code} 包含"},"link":{"title":"链接产品配置","auto_link":{"label":"自动链接项目","sublabel":"自动将产品链接至主目录以供可用性"},"options":{"all":"可供所有人使用","pos_only":"仅在 POS 上订购"}},"markup":{"title":"价格加价配置","auto_markup":{"label":"自动加价价格","sublabel":"自动加价价格适用于目录、组和调度"},"add":"添加加价配置","config":"配置 {number}","percentage":"加价百分比:{value}%","products":{"all":"适用于所有产品","linked":"{count} 个产品已链接"}}},"takeaway":{"actions":{"add":"添加外带"},"title":"外带","add":"添加外带","update":"更新外带","columns":{"title":"外带标题","price":"价格"},"placeholders":{"title":"在此输入外带标题"},"empty":{"title":"未找到外带","subtitle":"看起来您还没有创建外带。","action":"添加外带"},"table":{"columns":{"name":"外带名称","price":"价格 ({symbol})","products":"应用产品"},"items_linked":"{count} 项已链接","search":{"placeholder":"搜索外带"}}},"thumbnail":{"alt":{"default":"项目","with_name":"{name}"}},"cooking_guide":{"title":"烹饪指南","empty":{"title":"添加烹饪指南","subtitle":"烹饪指南配置工具使商家能够为多个分店的标准化烹饪说明。","action":"添加指南"},"table":{"columns":{"name":"指南名称","products":"已链接产品","steps":"{count} 步"},"search":{"placeholder":"搜索指南"},"mobile":{"products_linked":"{count} 个产品已链接"}},"dialogs":{"remove":{"title":"移除烹饪指南","message":{"prefix":"您确定要移除烹饪指南 ","products_using":"有 ","products_count":" 个产品使用此烹饪指南。 "}}},"actions":{"add":"添加指南","remove":"移除","cancel":"取消"},"dialog":{"add":{"title":"添加指南","action":"添加"},"update":{"title":"更新指南","action":"更新"},"sections":{"guide_detail":{"title":"指南详情","name":{"label":"指南名称","placeholder":"占位符","required":"必填项"}},"steps":{"title":"步骤","add":"添加步骤","empty":"尚未添加任何步骤"},"apply_product":{"title":"应用产品","link":"链接产品","products_linked":"{count} 个产品已链接","search":"搜索"}},"actions":{"cancel":"取消"}},"step_dialog":{"add":{"title":"添加步骤","action":"添加"},"update":{"title":"更新步骤","action":"更新"},"sections":{"variables":{"title":"变量","add":"添加变量","columns":{"key":"键","value":"值"},"placeholders":{"key":"键","value":"默认值"},"validation":{"required":"必填项","lowercase":"仅小写字母","duplicate":"重复键"}},"instruction":{"title":"指令"}},"actions":{"cancel":"取消","back":"返回"}},"step_override_dialog":{"title":"自定义烹饪步骤","columns":{"instructions":"指令","variables":"变量","value":"值"},"actions":{"save":"保存","cancel":"取消"}}},"ingredient":{"title":"配料","empty":{"title":"添加您的第一个配料","subtitle":"配料是食物和饮料的重要组成部分。管理它们涉及采购高质量产品、确保存储合规性以及维护安全标准,因为它们对风味和质量有显著影响。","action":"添加配料"},"table":{"columns":{"code":"代码","name":"名称","unit":"单位"},"search":{"placeholder":"搜索配料"},"mobile":{"code":"代码:{code}","unit":"单位:{unit}"}},"actions":{"add":"添加配料"}},"print_route":{"title":"打印路线","empty":{"title":"未找到路线","subtitle":"根据您的打印目的地进行定制,以确保高效的订单管理。","action":"添加路线"},"table":{"columns":{"name":"打印路线名称","products":"已链接产品","products_count":"{count} 个产品"},"search":{"placeholder":"搜索路线"},"mobile":{"products_linked":"{count} 个产品已链接"}},"dialogs":{"remove":{"title":"移除打印路线","message":{"prefix":"您确定要移除打印路线吗? ","products_using":"有 ","products_count":" 个产品使用此打印路线。 "}}},"actions":{"add":"添加路线","remove":"移除","cancel":"取消"},"department_dialog":{"add":{"title":"添加路线","action":"添加"},"update":{"title":"更新路线","action":"更新"},"sections":{"route_detail":{"title":"路线详情","name":{"label":"路线名称","placeholder":"占位符","required":"必填项"}},"link_product":{"title":"链接产品","link":"链接产品","products_linked":"{count} 个产品已链接","search":"搜索"}},"actions":{"cancel":"取消"}}},"products":{"title":"产品","actions":{"export":"导出","import":"导入","add":"添加产品","link":"链接产品","apply_scheduler":"应用调度器"}},"productInternalTools":{"title":"产品内部工具"},"publish":{"title":"发布","table":{"columns":{"restaurant":"餐厅","default":"默认","pos_takeaway":"POS 外带","pickup":"自取","version":"版本"},"search":{"placeholder":"搜索"},"status":{"latest":"最新","outdated":"已过时"}},"empty":{"title":"创建餐厅","subtitle":"您还没有创建任何餐厅。添加餐厅以开始发布菜单","action":"创建餐厅"},"actions":{"publish":"发布","publish_all":"发布所有","refresh":"刷新","revert":"恢复菜单"},"labels":{"main_version":"主版本:{version}","catalog":{"main":"主","invalid":"无效目录"}},"update_catalog_dialog":{"title":"更新目录","sections":{"default":{"label":"默认目录","use_default":"主"},"pos_takeaway":{"label":"POS 外带目录"},"pickup":{"label":"自取目录"},"additional":{"title":"附加目录","subtitle":"附加目录可以用于桌号和外送"}},"actions":{"update":"更新","cancel":"取消"}}},"tax_setting":{"title":"税设置"},"menu_setting":{"title":"菜单设置","fields":{"low_stock":{"not_set":"未设置","must_be_integer":"值必须为整数","title":"在线点单的产品阈值","subtitle":"当库存低于此限制时禁用在线点单","helper_text":"如果库存达到或低于此数量,产品将被提示从在线点单中移除","updated":"菜单设置已更新"}},"tabs":{"menu_configuration":"菜单配置","price_group":"价格组","link_product_rule_groups":"关联产品规则组"}},"rule_groups":{"title":"关联产品规则组","description":"管理基于餐厅和产品属性的产品关联规则组","create_group":"创建规则组","edit_group":"编辑规则组","saved_successfully":"规则组设置已成功保存","search_placeholder":"搜索规则组...","table":{"columns":{"name":"名称","description":"描述","rules_count":"规则数量"}},"form":{"basic_info":"基本信息","name":"名称","name_placeholder":"输入规则组名称","description":"描述","description_placeholder":"输入规则组描述","rules":"规则","rules_description":"为此组配置餐厅和产品规则"},"validation":{"name_required":"名称为必填项","at_least_one_rule_required":"至少需要一个规则"},"delete_dialog":{"title":"删除规则组","message":"您确定要删除'{name}'吗?此操作无法撤销。","success":"规则组删除成功"}},"price_tier":{"price_group":"价格组","description":"设置不同价格组以应用于多个目录","add_price_group":"添加价格组","add_price_group_success":"价格组创建成功","group_title":"组标题","price_group_description":"当前目录已链接到价格组。请在主目录中管理价格。","delete_dialog":{"title":"删除价格组","message":"您确定要删除价格组 {name} 吗?","success":"价格组删除成功"},"settings_table":{"columns":{"name":"名称"}},"form":{"table":{"columns":{"name":"组标题","price":"销售价格"}}},"price_tier_config":"价格组设置","link_price_tier":"链接价格层级","link_price_group":"链接价格组","link_price_group_description":"选择一个价格组以应用于目录。如果没有链接,将使用基础价格。","not_linked":"未链接","price_group_rule":"价格组规则","price_group_rule_description":"链接价格组到具有特定标签的餐厅。","restaurant_filter":"餐厅过滤器"},"tree_editor":{"title":"菜单管理","actions":{"add_category":"添加新分类","expand_all":"展开所有","collapse_all":"折叠所有","add_product":"添加产品","delete_product":"删除产品","edit_category":"编辑","delete_category":"删除分类","link_category_to_catalog":"链接分类到目录","link_product_to_catalog":"链接产品到目录","unlink_product_from_catalog":"取消链接产品"},"labels":{"main_catalog":"主目录","all_time":"所有时间","products":"产品: {count}","variants":"规格: {count}","groups":"组: {count}","addon":"附加项","unknown":"未知","please_select_a_product_to_edit":"请选择一个产品进行编辑","no_items":"没有产品可显示"}}}`), si = {
|
|
1809
|
+
}, li = /* @__PURE__ */ JSON.parse(`{"title":"メニュー","common":{"actions":{"update":"アップデート","cancel":"キャンセル","add":"追加","search":"検索","delete":"消去","remove":"取り除く","deselect_all":"すべて選択解除","move":"動く","edit":"編集","download":"ダウンロード","save":"保存","confirm":"確認する","yes":"はい","no":"いいえ","link":"リンク","migrate":"移行","add_new_variant":"新しいバリアントを追加","add_group":"グループを追加","apply_product":"製品を適用する","link_product":"リンク製品","deselect":"選択解除"},"labels":{"name":"名前","detail":"詳細","items_linked":"リンクされたアイテムが{count}個あります","search_placeholder":"{type}を検索","symbol":"シンボル","products_linked":"{count}個の商品がリンクされています","product_linked_singular":"{count}個の商品がリンクされています","product_linked_plural":"{count}個の製品がリンクされています","enter_name":"ここに名前を入力してください","product":"製品","selected_items":"{count}個のアイテムが選択されました","all":"全て","category":"カテゴリー: {name}","group_name":"グループ名","min_select":"最小選択","max_select":"最大選択","group_type":"グループタイプ","stackable":"積み重ね可能","stackable_sublabel":"顧客は同じオプションを複数回選択できます","configuration":"構成","variant":"変異体","product_title":"製品名","price":"価格({symbol})","order_from":"注文はこちら","inventory":"在庫","search_groups":"グループを検索","search_variants":"検索バリエーション","product_count":"{count}個の商品が適用されました","search_product":"製品を検索","product_image":"製品画像","optional":"(オプション)","products_selected":"{count}個の商品が選択されました","items_selected":"{count}個のアイテムが選択されました","catalog":"カタログ","scheduler":"スケジューラ","all_time":"これまで","main":"主要","unknown":"未知","all_day":"終日","summary":"概要","scheduler_title":"スケジューラ: {label}","link_product_title":"リンク製品","products_count":"{count}個の商品が選択されました","search":"検索","status":"状態"},"dialog":{"remove_confirmation":"{name} を削除してもよろしいですか?","change_type":{"title":"アドオングループの種類を変更する","message":"アドオングループの種類を変更すると、すべての製品がクリアされます。続行しますか?"},"remove":{"catalog":{"title":"カタログを削除","message":"{name} を削除してもよろしいですか?"},"category":{"title":"カテゴリを削除","message":"{name} を削除してもよろしいですか?"},"subcategory":{"title":"サブカテゴリを削除","message":"{name} を削除してもよろしいですか?"},"product":{"title":"商品を削除する","message":"{name} を削除してもよろしいですか?","success":"製品が正常に削除されました。"},"recipe":{"title":"レシピを削除","message":"レシピ {name} を削除しますか?"},"ingredient":{"title":"材料を取り除く","message":"材料{name}を削除しますか?"},"takeaway":{"title":"テイクアウトを削除","message":"{name}を削除しますか?"},"unit":{"title":"ユニットを削除","message":"ユニット {name} を削除しますか?"},"variant":{"title":"バリアントを削除","message":"{name}を削除しますか?"}}},"validation":{"required":"{field}は必須です","min_max":"最小選択は最大選択以下である必要があります","product_title_required":"製品タイトルは必須です","min_value":"最小値は{value}です","max_value":"最大値は{value}です","field_required":"{field}は必須です","required_field":"必須","invalid_amount":"無効な金額","max_default_items":"デフォルトアイテムの数は {max} より大きくできません","min_exceeds_available_items":"積み重ね不可の場合、最小選択数({min})は利用可能なアイテム数({available})を超えることはできません","default_items_tip":"{count} / {max} 個のデフォルト製品が選択されました。注文時にデフォルト製品が自動的に選択されます。"},"file":{"accepts":".jpg、.jpeg、.png、.gif に対応"},"empty":{"no_group":{"title":"グループが見つかりません","subtitle":"グループが作成されていないようです"},"no_variant":{"title":"変異体は見つかりませんでした","subtitle":"バリアントが作成されていないようです"}}},"category":{"title":"カテゴリ","add":"カテゴリを追加","detail":"カテゴリ詳細","name":"カテゴリ名","empty":{"title":"製品をカテゴリ別にグループ化する","subtitle":"カテゴリを使用して製品を整理します。","no_group":{"title":"グループが見つかりません","subtitle":"グループが作成されていないようです"}},"columns":{"title":"カテゴリタイトル","products":"製品を適用する"},"dialog":{"remove":{"title":"カテゴリを削除","error":"このカテゴリは削除できません"},"add":{"title":"カテゴリを追加","name":{"label":"カテゴリ名","placeholder":"ここにカテゴリ名を入力してください","required":"カテゴリ名は必須です"}}},"products":{"title":"製品","add":"商品を追加","linked_count":"{count} 個の商品がリンクされています","search":"検索","columns":{"name":"製品名","code":"製品コード"}},"selector":{"all":"全て","title":"カテゴリー: {label}"},"manager":{"dialog":{"add":{"title":"カテゴリを追加","action":"作成する"},"update":{"title":"更新カテゴリ","action":"アップデート"}}}},"subcategory":{"title":"サブカテゴリ","add":"サブカテゴリを追加","detail":"サブカテゴリ詳細","name":"サブカテゴリ名","empty":{"title":"製品をサブカテゴリ別にグループ化する","subtitle":"サブカテゴリを使用して製品を整理します。"},"columns":{"title":"サブカテゴリタイトル"},"dialog":{"remove":{"title":"サブカテゴリを削除","error":"このサブカテゴリは削除できません"},"add":{"title":"サブカテゴリを追加","name":{"label":"サブカテゴリ名","placeholder":"ここにサブカテゴリ名を入力してください","required":"サブカテゴリ名は必須です"}}},"manager":{"dialog":{"add":{"title":"サブカテゴリを追加","action":"作成する"},"update":{"title":"更新サブカテゴリ","action":"アップデート"}}}},"variant":{"title":"変異体","add":"バリエーションを追加","columns":{"name":"バリアント名","options":"オプション値","applied_products":"応用製品"},"mobile":{"value":"値: {values}"},"empty":{"title":"バリエーションを追加","subtitle":"バリアント構成により、販売者はカスタマイズ可能な製品オプションを提供できるようになります。","no_variant":{"title":"変異体は見つかりませんでした","subtitle":"バリアントが作成されていないようです"}},"select":{"title":"バリエーションを選択","subtitle":"変更を適用するバリアントを選択"},"form":{"title":{"add":"バリエーションを追加","edit":"バリエーションを編集"},"detail":"バリアントの詳細","name":{"label":"バリアント名","placeholder":"カップサイズ","helper":"このオプションセットに名前を付けます。例えば、「カップサイズ」や「糖度」などです。","required":"バリアント名は必須です"},"options":{"title":"オプション値","placeholder":"オプション","min_required":"少なくとも1つのオプションが必要です","name_required":"オプション名は必須です"},"applied_product":"適用製品"}},"unit":{"title":"ユニット","add":"ユニットを追加","update":"ユニットの更新","precision":"精度","precision_placeholder":"数字を入力してください","empty":{"title":"最初のユニットを追加する","subtitle":"単位は、製品の測定方法を指定するために使用されます。"},"columns":{"name":"名前","symbol":"シンボル"},"measurement":{"add":"測定値を追加","title":"測定値{数値}","name":"名前","symbol":"シンボル","conversion":"変換","preview":"1 {name} は {value} {unit} に等しい","preview_label":"プレビュー"}},"print_dept":{"title":"ルートを印刷","add":"印刷ルートを追加","update":"印刷ルートを編集","columns":{"name":"ルート名を印刷","products":"適用製品"}},"sku":{"title":"材料","add":"材料を加える","update":"材料を更新","columns":{"code":"コード","name":"名前","unit":"ユニット"},"empty":{"no_unit":"ユニットが見つかりません","subtitle":"ユニットを追加して、材料の追加を開始します。"},"validation":{"code_used":"他の成分で使用されるコード"},"errors":{"select_recipe_ingredient":"変換するレシピまたは材料を選択してください"},"convertible":{"label":"コンバーチブル","sublabel":"他のレシピや材料から変換可能","convert_to":"レシピと材料は"}},"recipe":{"title":"レシピ","add":"レシピを追加","update":"レシピを更新","columns":{"name":"名前"},"validation":{"bind_required":"少なくとも1つのレシピまたは材料をバインドする"},"table":{"columns":{"name":"名前","ingredients":"材料"},"search":{"placeholder":"レシピを検索"}},"empty":{"title":"最初のレシピを追加する","subtitle":"レシピを作成して、料理の調理プロセスを標準化します","action":"レシピを追加"},"actions":{"add":"レシピを追加"}},"serving_sequence":{"title":"提供順序","add":"シーケンスを追加","update":"更新シーケンス","columns":{"name":"シーケンス名"},"empty":{"title":"サービングシーケンスなし","subtitle":"料理の提供順序を設定し、スムーズで整然とした食事体験を実現します。"}},"group":{"title":"グループ","add":"グループを追加","update":"更新グループ","form":{"tagging":{"title":"タグ付け","subtitle":"グループをタグでグループ化して、レポートと管理を効率化します"}},"option":{"title":"製品","subtitle":"リンクされていないバリアントの注文元は「なし」に設定されます","link_products":"リンク製品","add_option":"オプションを追加","product_title":"タイトル","product_title_required":"製品タイトルは必須です","price":"価格({symbol})","inventory":"在庫","variant":"変異体","code":"コード","is_default":"デフォルト","should_link_at_least_one_variant":"{name}の少なくとも1つのバリアントをリンクする必要があります"},"types":{"normal":"普通","product":"製品","dynamic":"動的"},"select":{"title":"グループを選択","subtitle":"変更を適用するグループを選択"},"empty":{"title":"グループが見つかりません","subtitle":"アドオングループが作成されていないようです。"},"search":{"placeholder":"グループを検索"},"type":{"title":"グループ: {type} タイプ","all":"全タイプ","normal":"通常タイプ","product":"製品タイプ","dynamic":"ダイナミックタイプ"},"list":{"items_linked":"リンクされたアイテムが{count}個あります","products_linked":"{count} 個の商品がリンクされています","columns":{"name":"グループ名","products":"製品","type":"タイプ","applied_products":"応用製品"},"types":{"normal":"普通","product":"製品","dynamic":"動的"},"variants":"{ count } 個のバリアント","more_items":"& { count } 件以上"},"actions":{"add":"グループを追加","duplicate":{"title":"重複グループ","message":"{name} を複製してもよろしいですか?"},"apply_product":"製品を適用する","duplicate_action":"重複"},"dialogs":{"delete":{"title":"グループを削除","message":"{name}を削除しますか?","unlink_warning":"次の{count}個のアイテムのリンクが解除されます:"},"update":{"title":"更新グループ"}},"validation":{"name_duplicate":"グループ名は既に存在します"}},"migrate":{"title":"新しいバージョンに移行する","description":"新しいバージョンに移行しますか? 一度移行すると、古いバージョンに戻すことはできません。","message":"より多くの機能をご利用いただくには、メニューを新しいバージョンに移行してください。新しいメニューの内容は現在のものと同じままです。","notification":{"title":"新しいバージョンのメニューがリリースされました!","description":"現在のメニューバージョンを最新バージョンに移行すると、商品の順次配送、提供順序、スケジューラーなどの機能をさらにご利用いただけます。コンテンツと現在の設定は保持されます。"},"errors":{"no_restaurant":"少なくとも1つのレストランの移行が必要","pos_version":"新しいメニューを使用するには、POS を V{version} にアップグレードしてください: {restaurants}"}},"scheduler":{"title":"スケジューラ","select":{"title":"スケジューラを選択","all_time":"これまで"},"empty":{"title":"スケジューラが見つかりません","subtitle":"スケジューラを追加して、商品を表示する時間をスケジュールします。","action":"スケジューラを追加"},"table":{"columns":{"name":"スケジューラ名","repeat":"繰り返す","period":"期間","products":"製品を適用する"},"products_linked":"{count} 個のアイテムがリンクされています","search":{"placeholder":"検索スケジューラ"}},"repeat":{"daily":"毎日","weekdays":"平日","weekends":"週末","except":"{day}を除く毎日","range":"{開始}から{終了}"},"days":{"monday":"月曜日","tuesday":"火曜日","wednesday":"水曜日","thursday":"木曜日","friday":"金曜日","saturday":"土曜日","sunday":"日曜日"},"dialog":{"add":{"title":"スケジューラを追加","action":"追加"},"update":{"title":"更新スケジューラ","action":"アップデート"},"sections":{"detail":{"title":"スケジューラの詳細","name":{"label":"スケジューラ名","placeholder":"プレースホルダー","required":"必須"}},"availability":{"title":"可用性","daily":"毎日","weekly":"週刊"},"period":{"title":"活動期間","all_day":"終日","custom":"カスタム期間","add":"期間を追加","overlap":"期間を重複させることはできません。期間が重ならないように調整してください。"},"autolink":{"title":"オートリンク製品","label":"自動リンク製品","sublabel":"フィルターに基づいて商品を自動的にリンクする","all_items":"すべてのアイテムを自動リンク","filter_message":"次のフィルターに一致するアイテムを自動リンクします。","tooltip":"フィルター値にはワイルドカード(任意の文字を表す「*」、任意の数字を表す「$」)を使用できます。例えば、A*1はA1、AG1、AC51と一致しますが、A2、B1、C9とは一致しません。A$はA1、A11、A124と一致しますが、AQ1、AG1、ACとは一致しません。"},"filter":{"add":"フィルターを追加","matches":"マッチ","or":"または","types":{"code":"コード","category":"カテゴリ"},"placeholder":{"category":"カテゴリーを選択"}},"products":{"title":"製品を適用する","link":"リンク製品"}},"actions":{"cancel":"キャンセル"}},"dialogs":{"remove":{"title":"スケジューラを削除する","message":"スケジューラ {name} を削除してもよろしいですか?"}}},"revert":{"title":"元に戻すメニュー","description":"{name} のメニューを最後に公開されたバージョンに戻します。配信カタログが最後に公開されたバージョンでない場合は、メインに設定されます。","labels":{"restaurant":"レストラン","revert_to":"元に戻す","default":"デフォルト","pos_takeaway":"POSテイクアウト","pickup":"選び出す","additional_catalogs":"追加カタログ"}},"remy":{"title":"レミー","description":"あなたのAIアシスタント","actions":{"start":"レミーから始めよう","close":"レミーを閉じる"},"messages":{"welcome":"こんにちは!AIアシスタントのレミーです。本日はどのようなご用件でしょうか?","thinking":"考え...","error":"申し訳ございません。エラーが発生しました。もう一度お試しください。"}},"picker":{"title":"{type}を選択","search":"{type}を検索","no_results":"{type}が見つかりません","selected":"{count} 個選択済み"},"apply_product":{"title":"製品を適用する","link":{"title":"リンク製品","subtitle":"変更を適用するには製品をリンクしてください"},"table":{"category_count":"{名前} ({数})","inventory":"在庫","value":"値: {values}"}},"catalog":{"title":"カタログ","detail":"カタログ詳細","main":"マスター製品","form":{"name":"カタログ名","tax":{"title":"税金の計算","auto":{"label":"自動","sublabel":"すべての価格はデフォルトで税抜き価格ですが、配送会社を通じて注文すると自動的に税込み価格になります。"},"manual":{"label":"マニュアル","sublabel":"このカタログには独自の税計算を指定できます"},"inclusive":"{code}を含む"},"link":{"title":"リンク製品構成","auto_link":{"label":"自動リンクアイテム","sublabel":"在庫状況を確認するために製品をメインカタログに自動リンクします"},"options":{"all":"誰でも利用可能","pos_only":"POSのみで注文"}},"markup":{"title":"価格マークアップの設定","auto":{"label":"自動マークアップ価格","sublabel":"カタログ、グループ、スケジュールの価格を自動マークアップ"},"add":"マークアップ設定を追加する","config":"構成 {番号}","percentage":"マークアップ率: {value}%","products":"{count} 個の商品がリンクされています","all_items":"すべての商品に応募する"},"restaurant_attributes_title":"レストラン属性"},"validation":{"name_used":"使用されたカタログ名","name_required":"カタログ名は必須です"},"edit":{"back":"カタログに戻る","export":"輸出","import":"輸入","link_product":"リンク製品","apply_scheduler":"スケジューラを適用する","tabs":{"product":"製品","category":"カテゴリ","group":"グループ","takeaway":"取り除く","setting":"設定"},"scheduler":{"remove":{"title":"スケジューラを削除する","message":"スケジューラ {name} を削除してもよろしいですか?"}}},"usage":{"title":"カタログの使用状況","tax_calculation":"税金の計算","products":"{count} 個の商品","restaurant":"レストラン","usage":"使用法"},"table":{"columns":{"title":"カタログタイトル","tax_calculation":"税金の計算","auto_link":"自動リンクアイテム"}},"empty":{"title":"メニューカタログを作成する","subtitle":"カタログを使ってメニューを整理しましょう。商品を追加し、価格を設定し、店内飲食、テイクアウト、デリバリー向けにカスタマイズできます。"},"actions":{"add":"カタログを追加","view_usage":"カタログの使用状況"},"dialogs":{"remove":{"title":"カタログを削除","message":"{name} を削除してもよろしいですか?","error":"{restaurants}のレストランで使用されているカタログ"}}},"currency":{"input":{"field":"分野"}},"order":{"from":{"options":{"all":"誰でも利用可能","pos_only":"POSのみ","none":"なし"}}},"inventory":{"title":"在庫","subtitle":"製品の材料を調整し、レシピをカスタマイズします","columns":{"product_name":"製品名","ingredient":"材料","recipe":"レシピ"},"status":{"sku_linked":"{count} 個の SKU がリンクされています","recipe_linked":"{count} 件のレシピがリンクされています","not_set":"設定されていません"},"dialog":{"title":"{name} の在庫"},"form":{"title":"在庫","product_name":"製品名"},"binding":{"recipe":{"title":"レシピ","columns":{"name":"レシピ","amount":"額"}},"ingredient":{"title":"材料","columns":{"name":"材料","amount":"額","unit":"ユニット"},"select_unit":"ユニットを選択","loop_warning":"おっと!この{type}でループが検出されました。確認するか削除してください。"},"link":{"title":"リンク {type}","recipe":"レシピ","ingredient":"材料"}}},"link_product":{"title":"製品を適用する","rules":{"title":"製品リンクルール","section_title":"ルールによる高度なリンクを設定する","order_from":"注文元","restaurant_filter":"レストランフィルター","restaurant_custom_attributes_filter":"レストランタグフィルター","item_filter":"製品フィルター","item_custom_attributes_filter":"製品タグフィルター","add_rule":"ルールを追加","hint":"特定のタグまたは属性に基づいて、製品をレストランにリンクします。製品属性は、サブカタログではなくメインカタログから取得されます。"}},"catalog_scheduler":{"title":"製品の更新","subtitle":"製品を更新したいカタログとスケジューラを選択してください"},"apply_products":{"category":{"count":"{選択済み}/{合計}"}},"markup":{"dialog":{"title":{"add":"マークアップ設定を追加する","update":"マークアップ構成を更新する"},"fields":{"percentage":{"label":"マークアップ率","placeholder":"0","required":"マークアップ率が必要です"}},"options":{"all":"すべての製品に適用される","custom":"カスタム製品"},"products":{"link":"リンク製品","count":"{count} 個の商品がリンクされています"}}},"import":{"dialog":{"title":"輸入製品","subtitle":"アップロードするメニューまたはアドオングループファイルを選択してください","info":"元のテンプレートのヘッダー行を変更しないでください。変更するとインポートが失敗します。","fields":{"type":"メニューの種類","file":{"replace":"ファイルを置き換える"}},"actions":{"import":"輸入"},"errors":{"select_file":"インポートするファイルを選択してください"},"button":{"label":"ファイルを追加"}}},"product":{"form":{"title":{"add":"商品を追加","update":"製品の更新"},"summary":{"title":"製品概要","fields":{"code":"製品コード","name":"製品名","category":"カテゴリ","order_from":"注文はこちら","selling_price":"販売価格","tax":"税","inventory":"在庫","takeaway":"取り除く"}},"sections":{"general":{"title":"一般設定","description":"別の一般設定を使用する"},"tagging":{"title":"タグ付け","subtitle":"製品をタグでグループ化して、レポートと管理を効率化します"},"price":{"title":"価格を更新","description":"別の価格設定を使用する"},"print":{"title":"印刷を更新","description":"別の印刷設定を使用する"},"variant":{"title":"アップデートバリアント","description":"別のバリアント設定を使用する"},"group":{"title":"更新グループ","description":"別のグループ設定を使用する"},"inventory":{"title":"在庫を更新する","description":"別の在庫設定を使用する"},"takeaway":{"title":"最新情報","description":"別のテイクアウト設定を使用する"}},"detail":{"title":"製品詳細","fields":{"code":{"label":"製品コード","placeholder":"コードなし"},"name":{"label":"製品名","required":"名前は必須です","duplicate_warning":"この商品は{count}個の他の商品と同じ名前です。レポートでは1つの商品としてグループ化されます。"},"description":{"label":"説明","optional":"(オプション)","placeholder":"説明なし"}},"category":{"label":"カテゴリ","label_singular":"カテゴリ","required":"カテゴリーは必須です","placeholder":"メニューを構成するカテゴリを選択してください","add_new":"新しいカテゴリーを追加","add_first":"まず製品カテゴリを追加してください","options":{"product":{"label":"アドオン付き製品として販売","sublabel":"商品はアラカルトとして表示されます"},"addon":{"label":"アドオンとしてのみ販売","sublabel":"製品はアドオンとしてのみ表示されます"}}},"subcategory":{"label":"サブカテゴリ","required":"サブカテゴリは必須です","add_new":"新しいサブカテゴリを追加"},"path":{"label":"サブカテゴリ - メニューパス","placeholder":"メニューを構成するサブカテゴリを選択してください(例:コーヒー/ラテ)","helperText":"サブカテゴリを追加してメニューを構成します"},"order_from":{"label":"注文はこちら","default":"メインに続く"}},"group":{"title":"グループ","subtitle":"商品にグループを追加してコンボセットとして販売する","add":"グループを追加","circularError":"循環リンクが検出されました。グループ{groupName}は既に製品{productName}にリンクされています","columns":{"title":"グループタイトル","type":"タイプ"}},"price":{"title":"価格","fields":{"selling_price":{"label":"販売価格","required":"価格が必要です"},"tax":{"label":"税金オプションは利用できません","label_with_code":"{code}(レストラン プロフィール {code} が設定されている場合に適用されます)"}},"settings":{"title":"価格設定","open_price":{"label":"オープン価格","sublabel":"許可なく価格を調整することを許可する"},"sell_by_unit":{"label":"販売単位","sublabel":"特定の単位(重量、長さなど)ごとに商品を販売します。","per_unit":{"label":"あたり","placeholder":"金額を入力","required":"ユニットごとに必要です","min":"単位あたりは0より大きくなければなりません"},"unit":{"placeholder":"単位を入力","required":"単位は必須です"}},"track_costing":{"label":"コストを追跡する"},"min_price":{"label":"割引適用後の最低価格があります"}}},"print":{"title":"印刷","config":{"label":"印刷設定","group_parent":{"label":"親とのグループ","sublabel":"アドオンとして使用する場合は、この製品を親製品と一緒に印刷します"}},"kds":{"label":"KDS構成","options":{"all":{"label":"一気に","description":"製品を全部門に同時に送ることで準備を迅速化"},"sequential":{"label":"順次ディスパッチ","description":"段階的に準備するために、製品を各部門に順番に送ります"}}},"routes":{"label":"リンクルート","add":"ルートを追加"}},"takeaway":{"title":"取り除く","subtitle":"商品にテイクアウト料金を選択してください","columns":{"variant":"変異体","product":"製品","takeaway":"取り除く"},"options":{"follows_main":"メインに続く","no_preset":"事前に設定されたテイクアウトはありません","add_new":"新しいテイクアウトを追加"}},"variant":{"title":"変種","subtitle":"サイズ、色、種類などのオプションを追加する","add":"バリエーションを追加","columns":{"variant":"変異体","code":"コード","order_from":"注文はこちら","price":"価格","min_price":"最低価格"},"validation":{"max_variants":"追加できるバリエーションは最大 {max} 個です"},"placeholders":{"no_code":"コードなし","follow_general":"一般をフォロー"}}},"empty":{"with_create":{"title":"商品を追加する","subtitle":"まずは、お客様が喜ぶ商品をお店に揃えましょう","action":"商品を追加"},"no_scheduler":{"title":"リンクされた製品はありません","subtitle":"メインカタログから製品をリンクして、このカタログに製品を追加します。"},"with_scheduler":{"title":"製品が適用されていません","subtitle":"メインカタログから製品をリンクして、このスケジューラに製品を適用します。"}},"table":{"columns":{"code":"コード","name":"製品名","category":"カテゴリ","price":"価格({通貨})","order_from":"注文はこちら","tagging":"タグ"},"category":{"all":"すべてのカテゴリ","collapse":"折りたたむ","expand":"+ {count}件以上"},"tagging":{"all":"すべてのタグ付け","collapse":"崩壊","expand":"+ {count}件以上"},"bulk_edit":{"title":"商品を一括編集する","actions":{"reset_all":"すべてリセット","save":"保存"}},"selection":{"count":"{count} 個のアイテムが選択されました","actions":{"deselect_all":"すべて選択解除","remove":"取り除く"}},"empty":{"title":"商品を追加する","subtitle":"まずは、お客様が喜ぶ商品をお店に揃えましょう","actions":{"add":"商品を追加","import":"輸入"}},"search":{"placeholder":"製品を検索"},"validation":{"name_required":"名前は必須です","price_min":"価格は0以上である必要があります"}}},"setting":{"catalog":{"title":"カタログ詳細","fields":{"name":{"label":"カタログ名","required":"カタログ名は必須です","used":"使用されたカタログ名"}},"warnings":{"delivery":"このカタログは配送業者や他の注文方法で利用されています。そのため、価格計算に誤りが生じる可能性がありますので、各カタログの利用方法ごとに価格をご確認ください。"}},"tax":{"title":"税金の計算","modes":{"auto":{"label":"自動","sublabel":"すべての価格はデフォルトで税抜き価格ですが、配送会社を通じて注文すると自動的に税込み価格になります。"},"manual":{"label":"マニュアル","sublabel":"このカタログには独自の税計算を指定できます"}},"inclusive":"{code}を含む"},"link":{"title":"リンク製品構成","auto_link":{"label":"自動リンクアイテム","sublabel":"在庫状況を確認するために製品をメインカタログに自動リンクします"},"options":{"all":"誰でも利用可能","pos_only":"POSのみで注文"}},"markup":{"title":"価格マークアップの設定","auto_markup":{"label":"自動マークアップ価格","sublabel":"カタログ、グループ、スケジュールの価格を自動マークアップ"},"add":"マークアップ設定を追加する","config":"構成 {番号}","percentage":"マークアップ率: {value}%","products":{"all":"すべての製品に適用される","linked":"{count} 個の商品がリンクされています"}}},"takeaway":{"actions":{"add":"テイクアウトを追加"},"title":"取り除く","add":"テイクアウトを追加","update":"最新情報","columns":{"title":"テイクアウトタイトル","price":"価格"},"placeholders":{"title":"テイクアウトのタイトルをここに入力してください"},"empty":{"title":"テイクアウトは見つかりませんでした","subtitle":"テイクアウトが作成されていないようです。","action":"テイクアウトを追加"},"table":{"columns":{"name":"テイクアウト名","price":"価格({symbol})","products":"製品を適用する"},"items_linked":"リンクされたアイテムが{count}個あります","search":{"placeholder":"検索のポイント"}}},"thumbnail":{"alt":{"default":"アイテム","with_name":"{名前}"}},"cooking_guide":{"title":"料理ガイド","empty":{"title":"調理ガイドを追加","subtitle":"調理ガイド設定ツールを使用すると、小売業者は複数の店舗の料理に対して標準化された調理手順を確立できます。","action":"ガイドを追加"},"table":{"columns":{"name":"ガイド名","products":"製品リンク","steps":"{count}歩"},"search":{"placeholder":"検索ガイド"},"mobile":{"products_linked":"{count} 個の製品がリンクされています"}},"dialogs":{"remove":{"title":"調理ガイドを削除する","message":{"prefix":"料理ガイドを削除してもよろしいですか?","products_using":"がある ","products_count":"この調理ガイドを使用した製品。"}}},"actions":{"add":"ガイドを追加","remove":"取り除く","cancel":"キャンセル"},"dialog":{"add":{"title":"ガイドを追加","action":"追加"},"update":{"title":"アップデートガイド","action":"アップデート"},"sections":{"guide_detail":{"title":"ガイドの詳細","name":{"label":"ガイド名","placeholder":"プレースホルダー","required":"必須"}},"steps":{"title":"手順","add":"ステップを追加","empty":"まだステップは追加されていません"},"apply_product":{"title":"製品を適用する","link":"リンク製品","products_linked":"{count} 個の商品がリンクされています","search":"検索"}},"actions":{"cancel":"キャンセル"}},"step_dialog":{"add":{"title":"ステップを追加","action":"追加"},"update":{"title":"更新手順","action":"アップデート"},"sections":{"variables":{"title":"変数","add":"変数を追加","columns":{"key":"鍵","value":"価値"},"placeholders":{"key":"鍵","value":"デフォルト値"},"validation":{"required":"必須","lowercase":"小文字のアルファベットのみ","duplicate":"重複キー"}},"instruction":{"title":"命令"}},"actions":{"cancel":"キャンセル","back":"戻る"}},"step_override_dialog":{"title":"調理手順をカスタマイズ","columns":{"instructions":"説明書","variables":"変数","value":"価値"},"actions":{"save":"保存","cancel":"キャンセル"}}},"ingredient":{"title":"材料","empty":{"title":"最初の材料を加える","subtitle":"原材料は食品や飲料にとって重要な要素です。原材料の管理には、高品質な製品の調達、保管基準の遵守、そして安全基準の維持が不可欠です。原材料は風味と品質に大きな影響を与えるからです。","action":"材料を加える"},"table":{"columns":{"code":"コード","name":"名前","unit":"ユニット"},"search":{"placeholder":"材料を検索"},"mobile":{"code":"コード: {code}","unit":"ユニット: {unit}"}},"actions":{"add":"材料を加える"}},"print_route":{"title":"ルートを印刷","empty":{"title":"ルートが見つかりません","subtitle":"印刷先をカスタマイズして、セクションごとに効率的な注文管理を実現します。","action":"ルートを追加"},"table":{"columns":{"name":"ルート名を印刷","products":"製品リンク","products_count":"{count} 個の商品"},"search":{"placeholder":"ルートを検索"},"mobile":{"products_linked":"{count} 個の商品がリンクされています"}},"dialogs":{"remove":{"title":"印刷ルートを削除","message":{"prefix":"印刷ルートを削除してもよろしいですか?","products_using":"がある ","products_count":"この印刷ルートを使用した製品。"}}},"actions":{"add":"ルートを追加","remove":"取り除く","cancel":"キャンセル"},"department_dialog":{"add":{"title":"ルートを追加","action":"追加"},"update":{"title":"ルートを更新","action":"アップデート"},"sections":{"route_detail":{"title":"ルート詳細","name":{"label":"ルート名","placeholder":"プレースホルダー","required":"必須"}},"link_product":{"title":"リンク製品","link":"リンク製品","products_linked":"{count} 個の商品がリンクされています","search":"検索"}},"actions":{"cancel":"キャンセル"}}},"products":{"title":"製品","actions":{"export":"輸出","import":"輸入","add":"商品を追加","link":"リンク製品","apply_scheduler":"スケジューラを適用する"}},"productInternalTools":{"title":"製品内部ツール"},"publish":{"title":"公開","table":{"columns":{"restaurant":"レストラン","default":"デフォルト","pos_takeaway":"POSテイクアウト","pickup":"選び出す","version":"バージョン"},"search":{"placeholder":"検索"},"status":{"latest":"最新","outdated":"時代遅れ"}},"empty":{"title":"レストランを作成する","subtitle":"まだレストランを作成していません。レストランを追加してメニューを公開しましょう","action":"レストランを作成する"},"actions":{"publish":"公開","publish_all":"すべて公開","refresh":"更新","revert":"メニューを元に戻す"},"labels":{"main_version":"メインバージョン: {version}","catalog":{"main":"主要","invalid":"無効なカタログ"}},"update_catalog_dialog":{"title":"カタログを更新する","sections":{"default":{"label":"デフォルトカタログ","use_default":"デフォルトを使用する"},"pos_takeaway":{"label":"POSテイクアウトカタログ"},"pickup":{"label":"カタログを受け取る"},"additional":{"title":"追加カタログ","subtitle":"追加のカタログはテーブルで利用できます"}},"actions":{"update":"アップデート","cancel":"キャンセル"}}},"tax_setting":{"title":"税金設定"},"menu_setting":{"title":"メニュー設定","fields":{"low_stock":{"not_set":"設定されていません","must_be_integer":"値は整数である必要があります","title":"オンライン注文の製品しきい値","subtitle":"在庫がこの制限を下回った場合、オンライン注文を無効にする","helper_text":"在庫がこの数に達するか、それ以下になると、製品はオンライン注文から削除するように促されます","updated":"メニュー設定が更新されました"}},"tabs":{"menu_configuration":"メニュー構成","price_group":"価格グループ","link_product_rule_groups":"製品リンクルールグループ"}},"rule_groups":{"title":"製品リンクルールグループ","description":"レストランとアイテム属性に基づいて製品をリンクするためのルールグループを管理する","create_group":"ルールグループを作成","edit_group":"ルールグループを編集","saved_successfully":"ルールグループ設定が正常に保存されました","search_placeholder":"ルールグループを検索...","table":{"columns":{"name":"名前","description":"説明","rules_count":"ルール数"}},"form":{"basic_info":"基本情報","name":"名前","name_placeholder":"ルールグループ名を入力","description":"説明","description_placeholder":"ルールグループの説明を入力","rules":"ルール","rules_description":"このグループのレストランおよびアイテムルールを設定する"},"validation":{"name_required":"名前は必須です","at_least_one_rule_required":"少なくとも1つのルールが必要です"},"delete_dialog":{"title":"ルールグループを削除","message":"'{name}'を削除してもよろしいですか?この操作は元に戻せません。","success":"ルールグループが正常に削除されました"}},"price_tier":{"price_group":"価格グループ","description":"製品の異なる価格グループを設定し、複数のカタログにリンクします","add_price_group":"価格グループを追加","add_price_group_success":"価格グループが正常に作成されました","group_title":"グループタイトル","price_group_description":"現在のカタログは価格グループにリンクされています。メインカタログで価格を管理してください。","delete_dialog":{"title":"価格グループを削除","message":"価格グループ{name}を削除してもよろしいですか?","success":"価格グループが正常に削除されました"},"settings_table":{"columns":{"name":"名前"}},"form":{"table":{"columns":{"name":"グループタイトル","price":"販売価格"}}},"price_tier_config":"価格グループ設定","link_price_tier":"価格層をリンク","link_price_group":"価格グループをリンク","link_price_group_description":"価格グループを選択してカタログに適用します。グループがリンクされていない場合、デフォルトで基本価格が使用されます。","not_linked":"リンクされていません","price_group_rule":"価格グループルール","price_group_rule_description":"特定のタグを持つレストランに価格グループをリンクします。","restaurant_filter":"レストランフィルター"},"tree_editor":{"title":"メニュー管理","actions":{"add_category":"新しいカテゴリを追加","expand_all":"すべて展開","collapse_all":"すべて折りたたむ","add_product":"製品を追加","delete_product":"製品を削除","edit_category":"カテゴリを編集","delete_category":"カテゴリを削除","link_category_to_catalog":"カテゴリをカタログにリンク","link_product_to_catalog":"製品をカタログにリンク","unlink_product_from_catalog":"カタログから製品のリンクを解除"},"labels":{"main_catalog":"メインカタログ","all_time":"常時","products":"{count}個の製品","variants":"{count}個のバリアント","groups":"{count}個のグループ","addon":"アドオン","unknown":"未知","please_select_a_product_to_edit":"編集する製品を選択してください","no_items":"表示するアイテムがありません"}}}`), ri = {
|
|
1812
1810
|
menu: li
|
|
1813
|
-
}, ci = /* @__PURE__ */ JSON.parse(`{"title":"菜單","common":{"actions":{"update":"更新","cancel":"取消","add":"添加","search":"搜索","delete":"刪除","remove":"移除","deselect_all":"取消選擇","move":"移動","edit":"編輯","download":"下載","save":"保存","confirm":"確認","yes":"是","no":"否","link":"鏈接","migrate":"遷移","add_new_variant":"添加新規格","add_group":"添加組","apply_product":"應用產品","link_product":"鏈接產品","deselect":"取消選擇"},"labels":{"name":"名稱","detail":"詳情","items_linked":"{count} 個項目已鏈接","search_placeholder":"搜索 {type}","symbol":"符號","products_linked":"{count} 個產品已鏈接","product_linked_singular":"{count} 個產品已鏈接","product_linked_plural":"{count} 個產品已鏈接","enter_name":"輸入名稱","product":"產品","selected_items":"{count} 個項目已選擇","all":"全部","category":"分類:{name}","group_name":"組名稱","min_select":"最少選擇","max_select":"最多選擇","group_type":"組類型","stackable":"可堆疊","stackable_sublabel":"顧客可以多次選擇相同選項","configuration":"配置","variant":"規格","product_title":"產品標題","price":"價格 ({symbol})","order_from":"下單來源","inventory":"庫存","search_groups":"搜索組","search_variants":"搜索規格","product_count":"{count} 個產品已應用","search_product":"搜索產品","product_image":"產品圖片","optional":"(可選)","products_selected":"{count} 個產品已選擇","items_selected":"{count} 個項目已選擇","catalog":"目錄","scheduler":"調度器","all_time":"全天","main":"主","unknown":"未知","all_day":"全天","summary":"概覽","scheduler_title":"調度器:{label}","link_product_title":"鏈接產品","products_count":"已選 {count} 個產品","search":"搜索","status":"狀態"},"dialog":{"remove_confirmation":"確定要移除 {name} 嗎?","change_type":{"title":"更改附加組類型","message":"更改附加組類型將清除所有產品。確定要繼續嗎?"},"remove":{"catalog":{"title":"移除目錄","message":"確定要移除 {name} 嗎?"},"category":{"title":"移除分類","message":"確定要移除 {name} 嗎?"},"subcategory":{"title":"移除子分類","message":"確定要移除 {name} 嗎?"},"product":{"title":"移除產品","message":"確定要移除 {name} 嗎?","success":"產品已成功移除。"},"recipe":{"title":"移除配方","message":"確定要移除配方 {name} 嗎?"},"ingredient":{"title":"移除配料","message":"確定要移除配料 {name} 嗎?"},"takeaway":{"title":"移除外帶","message":"確定要移除 {name} 嗎?"},"unit":{"title":"移除單位","message":"確定要移除單位 {name} 嗎?"},"variant":{"title":"移除規格","message":"確定要移除 {name} 嗎?"}}},"validation":{"required":"{field} 為必填項","min_max":"最小選擇數必須小於或等於最大選擇數","product_title_required":"產品標題為必填項","min_value":"最小值為 {value}","max_value":"最大值為 {value}","field_required":"{field} 為必填項","required_field":"必填項","invalid_amount":"無效金額","max_default_items":"組中的默認產品數量不得多於 {max}","min_exceeds_available_items":"禁用可疊加時,最少選擇 ({min}) 不能大於可用項目 ({available})","default_items_tip":"已選擇 {count} / {max} 個默認產品,默認產品下單時將自動選中"},"file":{"accepts":"接受 .jpg、.jpeg、.png、.gif 格式"},"empty":{"no_group":{"title":"未找到組","subtitle":"您還未創建組"},"no_variant":{"title":"未找到規格","subtitle":"您還沒創建任何規格"}}},"category":{"title":"分類","add":"添加分類","detail":"分類詳情","name":"分類名稱","empty":{"title":"將產品分組到分類中","subtitle":"使用分類來組織您的產品。","no_group":{"title":"未找到分組","subtitle":"看起來您還沒有創建任何分組"}},"columns":{"title":"分類標題","products":"應用產品"},"dialog":{"remove":{"title":"移除分類","error":"無法刪除此分類"},"add":{"title":"添加分類","name":{"label":"分類名稱","placeholder":"在此輸入分類名稱","required":"分類名稱為必填項"}}},"products":{"title":"產品","add":"添加產品","linked_count":"已鏈接 {count} 個產品","search":"搜索","columns":{"name":"產品名稱","code":"代碼"}},"selector":{"all":"全部","title":"分類:{label}"},"manager":{"dialog":{"add":{"title":"添加分類","action":"創建"},"update":{"title":"更新分類","action":"更新"}}}},"subcategory":{"title":"子分類","add":"添加子分類","detail":"子分類詳情","name":"子分類名稱","empty":{"title":"將產品分組到子分類中","subtitle":"使用子分類來組織您的產品。"},"columns":{"title":"子分類標題"},"dialog":{"remove":{"title":"移除子分類","error":"無法刪除此子分類"},"add":{"title":"添加子分類","name":{"label":"子分類名稱","placeholder":"在此輸入子分類名稱","required":"子分類名稱為必填項"}}},"manager":{"dialog":{"add":{"title":"添加子分類","action":"創建"},"update":{"title":"更新子分類","action":"更新"}}}},"variant":{"title":"規格","add":"添加規格","columns":{"name":"規格名稱","options":"選項值","applied_products":"已應用產品"},"mobile":{"value":"值:{values}"},"empty":{"title":"添加規格","subtitle":"規格配置為商家提供自定義產品選項的功能。","no_variant":{"title":"未找到規格","subtitle":"看起來您還沒有創建規格"}},"select":{"title":"選擇規格","subtitle":"選擇規格以應用更改"},"form":{"title":{"add":"添加規格","edit":"編輯規格"},"detail":"規格詳情","name":{"label":"規格名稱","placeholder":"杯型尺寸","helper":"為這組選項命名。例如,您可以將此選項組命名為杯型尺寸或糖度。","required":"規格名稱為必填項"},"options":{"title":"選項值","placeholder":"選項","min_required":"至少需要 1 個選項","name_required":"選項名稱為必填項"},"applied_product":"已應用產品"}},"unit":{"title":"單位","add":"添加單位","update":"更新單位","precision":"精度","precision_placeholder":"輸入一個數字","empty":{"title":"添加您的第一個單位","subtitle":"單位用於指定您希望如何測量產品。"},"columns":{"name":"名稱","symbol":"符號"},"measurement":{"add":"添加測量","title":"測量 {number}","name":"名稱","symbol":"符號","conversion":"轉換","preview":"1 {name} 等於 {value} {unit}","preview_label":"預覽"}},"print_dept":{"title":"打印路線","add":"添加打印路線","update":"編輯打印路線","columns":{"name":"打印路線名稱","products":"已應用產品"}},"sku":{"title":"配料","add":"添加配料","update":"更新配料","columns":{"code":"代碼","name":"名稱","unit":"單位"},"empty":{"no_unit":"未找到單位","subtitle":"添加單位以開始添加配料。"},"validation":{"code_used":"代碼已被其他配料使用"},"errors":{"select_recipe_ingredient":"選擇配方或配料以轉換"},"convertible":{"label":"可轉換","sublabel":"可從其他配方或配料轉換","convert_to":"配方和配料轉換為"}},"recipe":{"title":"配方","add":"添加配方","update":"更新配方","columns":{"name":"名稱"},"validation":{"bind_required":"綁定至少一個配方或配料"},"table":{"columns":{"name":"名稱","ingredients":"配料"},"search":{"placeholder":"搜索配方"}},"empty":{"title":"添加您的第一個配方","subtitle":"創建配方以標準化您的食品製備流程","action":"添加配方"},"actions":{"add":"添加配方"}},"serving_sequence":{"title":"上菜順序","add":"添加順序","update":"更新順序","columns":{"name":"順序名稱"},"empty":{"title":"沒有上菜順序","subtitle":"設置訂單順序,以確保用餐體驗流暢有序。"}},"group":{"title":"組","add":"添加組","update":"更新組","form":{"tagging":{"title":"標籤","subtitle":"通過標籤對組進行分組,以簡化報告和管理"}},"option":{"title":"產品","subtitle":"未選擇的變體的 orderFrom 會被設置為 None","link_products":"鏈接產品","add_option":"添加選項","product_title":"名稱","product_title_required":"產品標題為必填項","price":"價格 ({symbol})","inventory":"庫存","variant":"規格","code":"代碼","is_default":"默認","should_link_at_least_one_variant":"至少需要鏈接\\"{name}\\"的一個規格"},"types":{"normal":"正常","product":"產品","dynamic":"動態"},"select":{"title":"選擇組","subtitle":"選擇組以應用更改"},"empty":{"title":"未找到組","subtitle":"看起來您還沒有添加附加組。"},"search":{"placeholder":"搜索組"},"type":{"title":"組:{type} 類型","all":"所有類型","normal":"正常類型","product":"產品類型","dynamic":"動態類型"},"list":{"items_linked":"{count} 個項目已鏈接","products_linked":"{count} 個產品已鏈接","columns":{"name":"組名稱","products":"產品","type":"類型","applied_products":"已應用產品"},"types":{"normal":"正常","product":"產品","dynamic":"動態"},"variants":"{ count } 種規格","more_items":"與其他 { count } 個"},"actions":{"add":"添加組","duplicate":{"title":"複製組","message":"您確定要複製 {name} 嗎?"},"apply_product":"應用產品","duplicate_action":"複製"},"dialogs":{"delete":{"title":"刪除組","message":"您確定要刪除 {name} 嗎?","unlink_warning":"以下 {count} 個項目將被取消連結:"},"update":{"title":"更新組"}},"validation":{"name_duplicate":"組名稱已存在"}},"migrate":{"title":"遷移到新版本","description":"您想遷移到新版本嗎?一旦遷移,將無法恢復到舊版本。","message":"將您的菜單遷移到新版本,以享受更多功能。新菜單的內容將與當前相同。","notification":{"title":"新版本的菜單已發佈!","description":"將當前菜單版本遷移到最新版本,以享受更多功能,例如產品順序分發、上菜順序、調度器等!您的內容和當前設置將被保留。"},"errors":{"no_restaurant":"至少需要一個餐廳才能遷移","pos_version":"升級 POS 到 V{version} 以使用新菜單:{restaurants}"}},"scheduler":{"title":"調度器","select":{"title":"選擇調度器","all_time":"全天"},"empty":{"title":"未找到調度器","subtitle":"添加調度器以安排產品顯示時間。","action":"添加調度器"},"table":{"columns":{"name":"調度器名稱","repeat":"重複","period":" 時段","products":"應用產品"},"products_linked":"{count} 個項目已鏈接","search":{"placeholder":"搜索調度器"}},"repeat":{"daily":"每日","weekdays":"工作日","weekends":"週末","except":"每日除外 {day}","range":"{start} 到 {end}"},"days":{"monday":"週一","tuesday":"週二","wednesday":"週三","thursday":"週四","friday":"週五","saturday":"週六","sunday":"週日"},"dialog":{"add":{"title":"添加調度器","action":"添加"},"update":{"title":"更新調度器","action":"更新"},"sections":{"detail":{"title":"調度器詳情","name":{"label":"調度器名稱","placeholder":"佔位符","required":"必填項"}},"availability":{"title":"可用性","daily":"每日","weekly":"每週"},"period":{"title":"啓用時段","all_day":"全天","custom":"自定義時段","add":"添加時段","overlap":"時段不能重疊或相接。請調整時段設置,確保各時段之間有間隔。"},"autolink":{"title":"自動鏈接產品","label":"自動鏈接產品","sublabel":"根據過濾器自動鏈接產品","all_items":"自動鏈接所有項目","filter_message":"自動鏈接符合以下過濾條件的項目。","tooltip":"您可以在過濾值中使用通配符('*' 用於任何字符,'$' 用於任何數字字符)。例如,A*1 匹配 A1、AG1、AC51,但不匹配 A2、B1、C9、A$ 匹配 A1、A11、A124,但不匹配 AQ1、AG1、AC"},"filter":{"add":"添加過濾器","matches":"匹配","or":"或","types":{"code":"代碼","category":"分類"},"placeholder":{"category":"選擇分類"}},"products":{"title":"應用產品","link":"鏈接產品"}},"actions":{"cancel":"取消"}},"dialogs":{"remove":{"title":"移除調度器","message":"您確定要移除調度器 {name} 嗎?"}}},"revert":{"title":"恢復菜單","description":"將 {name} 的菜單恢復到上次發佈的版本。如果它不在上次發佈的版本中,則將外送目錄設置為主目錄。","labels":{"restaurant":"餐廳","revert_to":"恢復到","default":"默認","pos_takeaway":"POS 外帶","pickup":"自取","additional_catalogs":"附加目錄"}},"remy":{"title":"Remy","description":"您的 AI 助手","actions":{"start":"與 Remy 開始","close":"關閉 Remy"},"messages":{"welcome":"你好!我是 Remy,您的 AI 助手。今天我能為您做什麼?","thinking":"正在思考...","error":"抱歉,我遇到了錯誤。請再試一次。"}},"picker":{"title":"選擇 {type}","search":"搜索 {type}","no_results":"未找到 {type}","selected":"{count} 已選擇"},"apply_product":{"title":"應用產品","link":{"title":"鏈接產品","subtitle":"鏈接產品以應用更改"},"table":{"category_count":"{name} ({count})","inventory":"庫存","value":"值:{values}"}},"catalog":{"title":"目錄","detail":"目錄詳情","main":"主產品","form":{"name":"目錄名稱","tax":{"title":"税計算","auto":{"label":"自動","sublabel":"所有價格默認排除,當通過外送公司訂購時將自動變為含税"},"manual":{"label":"手動","sublabel":"您可以為此目錄指定自己的税計算"},"inclusive":"{code} 包含"},"link":{"title":"鏈接產品配置","auto_link":{"label":"自動鏈接項目","sublabel":"自動將產品鏈接至主目錄以供可用性"},"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購"}},"markup":{"title":"價格加價配置","auto":{"label":"自動加價價格","sublabel":"自動加價價格適用於目錄、組和調度"},"add":"添加加價配置","config":"配置 {number}","percentage":"加價百分比:{value}%","products":"{count} 個產品已鏈接","all_items":"適用於所有項目"},"restaurant_attributes_title":"餐廳屬性"},"validation":{"name_used":"目錄名稱已使用","name_required":"目錄名稱必填"},"edit":{"back":"返回目錄","export":"導出","import":"導入","link_product":"鏈接產品","apply_scheduler":"應用調度器","tabs":{"product":"產品","category":"分類","group":"組","takeaway":"外帶","setting":"設置"},"scheduler":{"remove":{"title":"移除調度器","message":"您確定要移除調度器 {name} 嗎?"}}},"usage":{"title":"目錄概覽","tax_calculation":"税計算","products":"{count} 個產品","restaurant":"餐廳","usage":"使用"},"table":{"columns":{"title":"目錄標題","tax_calculation":"税計算","auto_link":"自動鏈接項目"}},"empty":{"title":"構建您的菜單目錄","subtitle":"使用目錄組織菜單。添加產品、設置價格並根據用餐、外帶或外送進行定製。"},"actions":{"add":"添加目錄","view_usage":"目錄概覽"},"dialogs":{"remove":{"title":"移除目錄","message":"您確定要移除 {name} 嗎?","error":"目錄被 {restaurants} 家餐廳使用"}}},"currency":{"input":{"field":"字段"}},"order":{"from":{"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購","none":"無"}}},"inventory":{"title":"庫存","subtitle":"調整配料並自定義產品配方","columns":{"product_name":"產品名稱","ingredient":"配料","recipe":"配方"},"status":{"sku_linked":"已鏈接 {count} 個配料","recipe_linked":"已鏈接 {count} 個配方","not_set":"未設置"},"dialog":{"title":"{name} 庫存"},"form":{"title":"庫存","product_name":"產品名稱"},"binding":{"recipe":{"title":"配方","columns":{"name":"配方","amount":"數量"}},"ingredient":{"title":"配料","columns":{"name":"配料","amount":"數量","unit":"單位"},"select_unit":"選擇單位","loop_warning":"哎呀!檢測到循環。請驗證或刪除它。"},"link":{"title":"鏈接 {type}","recipe":"配方","ingredient":"配料"}}},"link_product":{"title":"應用產品","rules":{"title":"鏈接產品規則","section_title":"按規則配置高級鏈接","order_from":"可點單渠道","restaurant_filter":"餐廳篩選","restaurant_custom_attributes_filter":"餐廳標籤篩選","item_filter":"產品篩選","item_custom_attributes_filter":"產品標籤篩選","add_rule":"添加規則","hint":"根據餐廳標籤與產品主目錄的默認屬性將產品鏈接到餐廳(忽略子目錄覆寫)。"}},"catalog_scheduler":{"title":"更新產品來源","subtitle":"選擇目錄和調度器以更新產品"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"添加加價配置","update":"更新加價配置"},"fields":{"percentage":{"label":"加價百分比","placeholder":"0","required":"加價百分比必填"}},"options":{"all":"適用於所有產品","custom":"自定義產品"},"products":{"link":"鏈接產品","count":"{count} 個產品已鏈接"}}},"import":{"dialog":{"title":"導入產品","subtitle":"上傳需要導入的文檔","info":"請不要更改原始模板中的任何標題行,否則導入將失敗。","fields":{"type":"菜單類型","file":{"replace":"替換文件"}},"actions":{"import":"導入"},"errors":{"select_file":"請選擇要導入的文件"},"button":{"label":"添加文件"}}},"product":{"form":{"title":{"add":"添加產品","update":"更新產品"},"summary":{"title":"產品摘要","fields":{"code":"產品代碼","name":"產品名稱","category":"分類","order_from":"下單來源","selling_price":"銷售價格","tax":"税","inventory":"庫存","takeaway":"外帶"}},"sections":{"general":{"title":"通用設置","description":"使用不同的通用設置"},"tagging":{"title":"標籤","subtitle":"通過標籤對產品進行分組,以簡化報告和管理"},"price":{"title":"更新價格","description":"使用不同的價格設置"},"print":{"title":"更新打印","description":"使用不同的打印設置"},"variant":{"title":"更新規格","description":"使用不同的規格設置"},"group":{"title":"更新組","description":"使用不同的組設置"},"inventory":{"title":"更新庫存","description":"使用不同的庫存設置"},"takeaway":{"title":"更新外帶","description":"使用不同的外帶設置"}},"detail":{"title":"產品詳情","fields":{"code":{"label":"產品代碼","placeholder":"無代碼"},"name":{"label":"產品名稱","required":"名稱必填","duplicate_warning":"此產品與 {count} 其他項目共享相同名稱。它們將在報告中作為一種產品分組。"},"description":{"label":"描述","optional":"(可選)","placeholder":"無描述"}},"category":{"label":"分類","label_singular":"分類","required":"分類必填","placeholder":"選擇分類以結構化您的菜單","add_new":"添加新分類","add_first":"請先添加產品分類","options":{"product":{"label":"作為產品或附加項銷售","sublabel":"產品可單獨銷售,也可作為附加項銷售"},"addon":{"label":"僅作為附加項銷售","sublabel":"產品將作為附加項出現"}}},"subcategory":{"label":"子分類","required":"子分類為必填項","add_new":"添加新子分類"},"path":{"label":"子分類 - 菜單路徑","placeholder":"選擇子分類以建立您的菜單結構,例如:咖啡/拿鐵","helperText":"添加子類別以結構化您的菜單"},"order_from":{"label":"下單來源","default":"跟隨主目錄"}},"group":{"title":"組","subtitle":"為您的產添加組以作為套餐銷售","add":"添加組","circularError":"檢測到循環鏈接,組 {groupName} 已鏈接到產品 {productName}","columns":{"title":"組標題","type":"類型"}},"price":{"title":"價格","fields":{"selling_price":{"label":"銷售價格","required":"價格必填"},"tax":{"label":"税選項不可用","label_with_code":"{code}(適用於餐廳配置 {code} 已設置)"}},"settings":{"title":"價格設置","open_price":{"label":"開放價格","sublabel":"允許在不獲得許可的情況下調整價格"},"sell_by_unit":{"label":"按單位銷售","sublabel":"按特定單位(重量、長度等)銷售產品。","per_unit":{"label":"每","placeholder":"輸入數量","required":"每單位必填","min":"每單位必須大於 0"},"unit":{"placeholder":"輸入單位","required":"單位必填"}},"track_costing":{"label":"跟蹤成本"},"min_price":{"label":"在應用折扣後有最低價格"}}},"print":{"title":"打印","config":{"label":"打印配置","group_parent":{"label":"與父級組","sublabel":"在作為附加項提供時打印此產品及其父級"}},"kds":{"label":"KDS 配置","options":{"all":{"label":"一次性發送","description":"將產品一次性發送至所有部門,以加快準備速度"},"sequential":{"label":"順序分發","description":"將產品按順序發送至每個部門,逐步準備"}}},"routes":{"label":"鏈接路線","add":"添加路線"}},"takeaway":{"title":"外帶","subtitle":"選擇外帶費用以添加到產品中","columns":{"variant":"產品 & 規格","product":"產品","takeaway":"外帶"},"options":{"follows_main":"跟隨主目錄","no_preset":"沒有預設外帶","add_new":"添加新外帶"}},"variant":{"title":"規格","subtitle":"添加選項,如大小、顏色或類型","add":"添加規格","columns":{"variant":"規格","code":"代碼","order_from":"下單來源","price":"價格","min_price":"最低價格"},"validation":{"max_variants":"您只能添加 {max} 個規格"},"placeholders":{"no_code":"無代碼","follow_general":"跟隨通用"}}},"empty":{"with_create":{"title":"添加您的產品","subtitle":"首先通過進貨您的商店,為您的顧客提供他們喜愛的產品","action":"添加產品"},"no_scheduler":{"title":"沒有產品鏈接","subtitle":"通過從主目錄鏈接產品來添加此目錄中的產品。"},"with_scheduler":{"title":"沒有應用產品","subtitle":"通過從主目錄鏈接產品來應用此調度器中的產品。"}},"table":{"columns":{"code":"代碼","name":"產品名稱","category":"分類","price":"價格 ({ currency })","order_from":"下單來源","tagging":"標籤"},"category":{"all":"全部分類","collapse":"收起","expand":"+ 還有 {count} 個"},"tagging":{"all":"全部標籤","collapse":"收起","expand":"+ {count} 個"},"bulk_edit":{"title":"批量編輯產品","actions":{"reset_all":"重置所有","save":"保存"}},"selection":{"count":"{count} 項已選擇","actions":{"deselect_all":"取消選擇所有","remove":"移除"}},"empty":{"title":"添加您的產品","subtitle":"首先通過進貨您的商店,為您的顧客提供他們喜愛的產品","actions":{"add":"添加產品","import":"導入"}},"search":{"placeholder":"搜索產品"},"validation":{"name_required":"名稱必填","price_min":"價格必須大於或等於 0"}}},"setting":{"catalog":{"title":"目錄詳情","fields":{"name":{"label":"目錄名稱","required":"目錄名稱必填","used":"目錄名稱已使用"}},"warnings":{"delivery":"此目錄正在被外送公司和其他訂單方法使用。這可能會導致價格計算錯誤,請審查每個目錄使用的價格。"}},"tax":{"title":"税計算","modes":{"auto":{"label":"自動","sublabel":"所有價格默認排除,當通過外送公司訂購時將自動變為含税"},"manual":{"label":"手動","sublabel":"您可以為此目錄指定自己的税計算"}},"inclusive":"{code} 包含"},"link":{"title":"鏈接產品配置","auto_link":{"label":"自動鏈接項目","sublabel":"自動將產品鏈接至主目錄以供可用性"},"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購"}},"markup":{"title":"價格加價配置","auto_markup":{"label":"自動加價價格","sublabel":"自動加價價格適用於目錄、組和調度"},"add":"添加加價配置","config":"配置 {number}","percentage":"加價百分比:{value}%","products":{"all":"適用於所有產品","linked":"{count} 個產品已鏈接"}}},"takeaway":{"actions":{"add":"添加外帶"},"title":"外帶","add":"添加外帶","update":"更新外帶","columns":{"title":"外帶標題","price":"價格"},"placeholders":{"title":"在此輸入外帶標題"},"empty":{"title":"未找到外帶","subtitle":"看起來您還沒有創建外帶。","action":"添加外帶"},"table":{"columns":{"name":"外帶名稱","price":"價格 ({symbol})","products":"應用產品"},"items_linked":"{count} 項已鏈接","search":{"placeholder":"搜索外帶"}}},"thumbnail":{"alt":{"default":"項目","with_name":"{name}"}},"cooking_guide":{"title":"烹飪指南","empty":{"title":"添加烹飪指南","subtitle":"烹飪指南配置工具使商家能夠為多個分店的標準化烹飪説明。","action":"添加指南"},"table":{"columns":{"name":"指南名稱","products":"已鏈接產品","steps":"{count} 步"},"search":{"placeholder":"搜索指南"},"mobile":{"products_linked":"{count} 個產品已鏈接"}},"dialogs":{"remove":{"title":"移除烹飪指南","message":{"prefix":"您確定要移除烹飪指南 ","products_using":"有 ","products_count":" 個產品使用此烹飪指南。 "}}},"actions":{"add":"添加指南","remove":"移除","cancel":"取消"},"dialog":{"add":{"title":"添加指南","action":"添加"},"update":{"title":"更新指南","action":"更新"},"sections":{"guide_detail":{"title":"指南詳情","name":{"label":"指南名稱","placeholder":"佔位符","required":"必填項"}},"steps":{"title":"步驟","add":"添加步驟","empty":"尚未添加任何步驟"},"apply_product":{"title":"應用產品","link":"鏈接產品","products_linked":"{count} 個產品已鏈接","search":"搜索"}},"actions":{"cancel":"取消"}},"step_dialog":{"add":{"title":"添加步驟","action":"添加"},"update":{"title":"更新步驟","action":"更新"},"sections":{"variables":{"title":"變量","add":"添加變量","columns":{"key":"鍵","value":"值"},"placeholders":{"key":"鍵","value":"默認值"},"validation":{"required":"必填項","lowercase":"僅小寫字母","duplicate":"重複鍵"}},"instruction":{"title":"指令"}},"actions":{"cancel":"取消","back":"返回"}},"step_override_dialog":{"title":"自定義烹飪步驟","columns":{"instructions":"指令","variables":"變量","value":"值"},"actions":{"save":"保存","cancel":"取消"}}},"ingredient":{"title":"配料","empty":{"title":"添加您的第一個配料","subtitle":"配料是食物和飲料的重要組成部分。管理它們涉及採購高質量產品、確保存儲合規性以及維護安全標準,因為它們對風味和質量有顯著影響。","action":"添加配料"},"table":{"columns":{"code":"代碼","name":"名稱","unit":"單位"},"search":{"placeholder":"搜索配料"},"mobile":{"code":"代碼:{code}","unit":"單位:{unit}"}},"actions":{"add":"添加配料"}},"print_route":{"title":"打印路線","empty":{"title":"未找到路線","subtitle":"根據您的打印目的地進行定製,以確保高效的訂單管理。","action":"添加路線"},"table":{"columns":{"name":"打印路線名稱","products":"已鏈接產品","products_count":"{count} 個產品"},"search":{"placeholder":"搜索路線"},"mobile":{"products_linked":"{count} 個產品已鏈接"}},"dialogs":{"remove":{"title":"移除打印路線","message":{"prefix":"您確定要移除打印路線嗎? ","products_using":"有 ","products_count":" 個產品使用此打印路線。 "}}},"actions":{"add":"添加路線","remove":"移除","cancel":"取消"},"department_dialog":{"add":{"title":"添加路線","action":"添加"},"update":{"title":"更新路線","action":"更新"},"sections":{"route_detail":{"title":"路線詳情","name":{"label":"路線名稱","placeholder":"佔位符","required":"必填項"}},"link_product":{"title":"鏈接產品","link":"鏈接產品","products_linked":"{count} 個產品已鏈接","search":"搜索"}},"actions":{"cancel":"取消"}}},"products":{"title":"產品","actions":{"export":"導出","import":"導入","add":"添加產品","link":"鏈接產品","apply_scheduler":"應用調度器"}},"productInternalTools":{"title":"產品內部工具"},"publish":{"title":"發佈","table":{"columns":{"restaurant":"餐廳","default":"默認","pos_takeaway":"POS 外帶","pickup":"自取","version":"版本"},"search":{"placeholder":"搜索"},"status":{"latest":"最新","outdated":"已過時"}},"empty":{"title":"創建餐廳","subtitle":"您還沒有創建任何餐廳。添加餐廳以開始發佈菜單","action":"創建餐廳"},"actions":{"publish":"發佈","publish_all":"發佈所有","refresh":"刷新","revert":"恢復菜單"},"labels":{"main_version":"主版本:{version}","catalog":{"main":"主","invalid":"無效目錄"}},"update_catalog_dialog":{"title":"更新目錄","sections":{"default":{"label":"默認目錄","use_default":"主"},"pos_takeaway":{"label":"POS 外帶目錄"},"pickup":{"label":"自取目錄"},"additional":{"title":"附加目錄","subtitle":"附加目錄可以用於桌號和外送"}},"actions":{"update":"更新","cancel":"取消"}}},"tax_setting":{"title":"税設置"},"menu_setting":{"title":"菜單設置","fields":{"low_stock":{"not_set":"未設置","must_be_integer":"值必須為整數","title":"在線點單的產品閾值","subtitle":"當庫存低於此限制時禁用在線點單","helper_text":"如果庫存達到或低於此數量,產品將被提示從在線點單中移除","updated":"菜單設置已更新"}},"tabs":{"menu_configuration":"菜單配置","price_group":"價格組","link_product_rule_groups":"關聯產品規則組"}},"rule_groups":{"title":"關聯產品規則組","description":"管理基於餐廳和產品屬性的產品關聯規則組","create_group":"創建規則組","edit_group":"編輯規則組","saved_successfully":"規則組設置已成功保存","search_placeholder":"搜索規則組...","table":{"columns":{"name":"名稱","description":"描述","rules_count":"規則數量"}},"form":{"basic_info":"基本信息","name":"名稱","name_placeholder":"輸入規則組名稱","description":"描述","description_placeholder":"輸入規則組描述","rules":"規則","rules_description":"為此組配置餐廳和產品規則"},"validation":{"name_required":"名稱為必填項","at_least_one_rule_required":"至少需要一個規則"},"delete_dialog":{"title":"刪除規則組","message":"您確定要刪除'{name}'嗎?此操作無法撤銷。","success":"規則組刪除成功"}},"price_tier":{"price_group":"價格組","description":"設置不同價格組以應用於多個目錄","add_price_group":"添加價格組","add_price_group_success":"價格組創建成功","group_title":"組標題","price_group_description":"當前目錄已鏈接到價格組。請在主目錄中管理價格。","delete_dialog":{"title":"刪除價格組","message":"您確定要刪除價格組 {name} 嗎?","success":"價格組刪除成功"},"settings_table":{"columns":{"name":"名稱"}},"form":{"table":{"columns":{"name":"組標題","price":"銷售價格"}}},"price_tier_config":"價格組設置","link_price_tier":"鏈接價格層級","link_price_group":"鏈接價格組","link_price_group_description":"選擇一個價格組以應用於目錄。如果沒有鏈接,將使用基礎價格。","not_linked":"未鏈接","price_group_rule":"價格組規則","price_group_rule_description":"鏈接價格組到具有特定標籤的餐廳。","restaurant_filter":"餐廳過濾器"},"tree_editor":{"title":"菜單管理","actions":{"add_category":"添加新分類","expand_all":"展開所有","collapse_all":"摺疊所有","add_product":"添加產品","delete_product":"刪除產品","edit_category":"編輯","delete_category":"刪除分類","link_category_to_catalog":"鏈接分類到目錄","link_product_to_catalog":"鏈接產品到目錄","unlink_product_from_catalog":"取消鏈接產品"},"labels":{"main_catalog":"主目錄","all_time":"所有時間","products":"產品: {count}","variants":"規格: {count}","groups":"組: {count}","addon":"附加項","unknown":"未知","please_select_a_product_to_edit":"請選擇一個產品進行編輯","no_items":"沒有產品可顯示"}}}`), ui = {
|
|
1811
|
+
}, ni = /* @__PURE__ */ JSON.parse(`{"title":"เมนู","common":{"actions":{"update":"อัปเดต","cancel":"ยกเลิก","add":"เพิ่ม","search":"ค้นหา","delete":"ลบ","remove":"ลบออก","deselect_all":"ยกเลิกการเลือกทั้งหมด","move":"ย้าย","edit":"แก้ไข","download":"ดาวน์โหลด","save":"บันทึก","confirm":"ยืนยัน","yes":"ใช่","no":"ไม่ใช่","link":"ลิงก์","migrate":"ย้ายข้อมูล","add_new_variant":"เพิ่มตัวแปรใหม่","add_group":"เพิ่มกลุ่ม","apply_product":"ใช้เมนู","link_product":"ลิงก์เมนู","deselect":"ยกเลิกการเลือก"},"labels":{"name":"ชื่อ","detail":"รายละเอียด","items_linked":"เชื่อมโยง {count} รายการ","search_placeholder":"ค้นหา {type}","symbol":"สัญลักษณ์","products_linked":"เชื่อมโยง {count} เมนู","product_linked_singular":"เชื่อมโยง {count} เมนู","product_linked_plural":"เชื่อมโยง {count} เมนู","enter_name":"ป้อนชื่อที่นี่","product":"เมนู","selected_items":"เลือก {count} รายการ","all":"ทั้งหมด","category":"หมวดหมู่: {name}","group_name":"ชื่อกลุ่ม","min_select":"เลือกขั้นต่ำ","max_select":"เลือกสูงสุด","group_type":"ประเภทกลุ่ม","stackable":"ซ้อนได้","stackable_sublabel":"ลูกค้าสามารถเลือกตัวเลือกเดียวกันได้มากกว่าหนึ่งครั้ง","configuration":"การกำหนดค่า","variant":"ตัวแปร","product_title":"ชื่อเมนู","price":"ราคา ({symbol})","order_from":"สั่งซื้อจาก","inventory":"สินค้าคงคลัง","search_groups":"ค้นหากลุ่ม","search_variants":"ค้นหาตัวแปร","product_count":"ใช้ {count} เมนู","search_product":"ค้นหาเมนู","product_image":"รูปภาพเมนู","optional":"(ทางเลือก)","products_selected":"เลือก {count} เมนู","items_selected":"เลือก {count} รายการ","catalog":"แคตตาล็อก","scheduler":"ตัวกำหนดเวลา","all_time":"ตลอดเวลา","main":"หลัก","unknown":"ไม่ทราบ","all_day":"ตลอดทั้งวัน","summary":"สรุป","scheduler_title":"ผู้จัดกำหนดการ: {label}","link_product_title":"เชื่อมโยงเมนู","products_count":"เลือกเมนู {count} รายการ","search":"ค้นหา","status":"สถานะ"},"dialog":{"remove_confirmation":"คุณแน่ใจหรือไม่ที่จะลบ {name}","change_type":{"title":"เปลี่ยนประเภทกลุ่ม Add on","message":"การเปลี่ยนประเภทกลุ่ม Add on จะล้างจากเมนูทั้งหมด คุณแน่ใจหรือไม่ที่จะดำเนินการต่อ"},"remove":{"catalog":{"title":"ลบแคตตาล็อก","message":"คุณแน่ใจหรือไม่ที่จะลบ {name}"},"category":{"title":"ลบหมวดหมู่","message":"คุณแน่ใจหรือไม่ที่จะลบ {name}"},"subcategory":{"title":"ลบหมวดหมู่ย่อย","message":"คุณแน่ใจหรือไม่ว่าจะลบ {name}?"},"product":{"title":"ลบเมนู","message":"คุณแน่ใจหรือไม่ที่จะลบ {name}","success":"ลบเมนูออกเรียบร้อยแล้ว"},"recipe":{"title":"ลบสูตร","message":"คุณต้องการลบสูตร {name} หรือไม่"},"ingredient":{"title":"ลบส่วนผสม","message":"คุณต้องการลบส่วนผสม {name} หรือไม่"},"takeaway":{"title":"ลบรายการนำกลับบ้าน","message":"คุณต้องการลบ {name} หรือไม่"},"unit":{"title":"ลบหน่วย","message":"คุณต้องการลบหน่วย {name} หรือไม่"},"variant":{"title":"ลบตัวแปร","message":"คุณต้องการลบ {name} หรือไม่"}}},"validation":{"required":"{field} จำเป็นต้องระบุ","min_max":"การเลือกขั้นต่ำต้องน้อยกว่าหรือเท่ากับค่าสูงสุด เลือก","product_title_required":"จำเป็นต้องใส่ชื่อเมนู","min_value":"ค่าต่ำสุดคือ {value}","max_value":"ค่าสูงสุดคือ {value}","field_required":"{field} จำเป็นต้องกรอก","required_field":"จำเป็น","invalid_amount":"จำนวนไม่ถูกต้อง","max_default_items":"จำนวนสินค้าเริ่มต้นไม่สามารถมากกว่า {max} ได้","min_exceeds_available_items":"เลือกขั้นต่ำ ({min}) ไม่สามารถมากกว่าสินค้าที่มีจำหน่าย ({available}) เมื่อปิดการใช้งาน stackable","default_items_tip":"เลือกเมนูเริ่มต้น {count} / {max} รายการ เมนูเริ่มต้นจะถูกเลือกโดยอัตโนมัติเมื่อสั่งซื้อ"},"file":{"accepts":"ยอมรับ .jpg, .jpeg, .png, .gif"},"empty":{"no_group":{"title":"ไม่พบกลุ่ม","subtitle":"ดูเหมือนว่าคุณยังไม่ได้สร้างกลุ่ม"},"no_variant":{"title":"ไม่พบตัวแปร","subtitle":"ดูเหมือนว่าคุณยังไม่ได้สร้างตัวแปร"}}},"category":{"title":"หมวดหมู่","add":"เพิ่มหมวดหมู่","detail":"รายละเอียดหมวดหมู่","name":"ชื่อหมวดหมู่","empty":{"title":"จำเป็นต้องเลือกหมวดหมู่สำหรับเมนู","subtitle":"ใช้หมวดหมู่เพื่อจัดระเบียบเมนูของคุณ","no_group":{"title":"ไม่พบกลุ่ม","subtitle":"ดูเหมือนว่าคุณไม่ได้สร้างกลุ่ม"}},"columns":{"title":"ชื่อหมวดหมู่","products":"ใช้เมนู"},"dialog":{"remove":{"title":"ลบหมวดหมู่","error":"ไม่สามารถลบหมวดหมู่นี้ได้"},"add":{"title":"เพิ่มหมวดหมู่","name":{"label":"ชื่อหมวดหมู่","placeholder":"ป้อนชื่อหมวดหมู่ที่นี่","required":"จำเป็นต้องระบุชื่อหมวดหมู่"}}},"products":{"title":"เมนู","add":"เพิ่มเมนู","linked_count":"เชื่อมโยง {count} เมนูที่","search":"ค้นหา","columns":{"name":"ชื่อเมนู","code":"รหัสเมนู"}},"selector":{"all":"ทั้งหมด","title":"หมวดหมู่: {label}"},"manager":{"dialog":{"add":{"title":"เพิ่มหมวดหมู่","action":"สร้าง"},"update":{"title":"อัปเดตหมวดหมู่","action":"อัปเดต"}}}},"subcategory":{"title":"หมวดหมู่ย่อย","add":"เพิ่มหมวดหมู่ย่อย","detail":"รายละเอียดหมวดหมู่ย่อย","name":"ชื่อหมวดหมู่ย่อย","empty":{"title":"จัดกลุ่มผลิตภัณฑ์ของคุณเป็นหมวดหมู่ย่อย","subtitle":"ใช้หมวดหมู่ย่อยเพื่อจัดระเบียบผลิตภัณฑ์ของคุณ"},"columns":{"title":"ชื่อหมวดหมู่ย่อย"},"dialog":{"remove":{"title":"ลบหมวดหมู่ย่อย","error":"ไม่สามารถลบหมวดหมู่ย่อยนี้ได้"},"add":{"title":"เพิ่มหมวดหมู่ย่อย","name":{"label":"ชื่อหมวดหมู่ย่อย","placeholder":"ป้อนชื่อหมวดหมู่ย่อยที่นี่","required":"จำเป็นต้องระบุชื่อหมวดหมู่ย่อย"}}},"manager":{"dialog":{"add":{"title":"เพิ่มหมวดหมู่ย่อย","action":"สร้าง"},"update":{"title":"อัปเดตหมวดหมู่ย่อย","action":"อัปเดต"}}}},"variant":{"title":"ตัวเลือก","add":"เพิ่มตัวแปร","columns":{"name":"ชื่อตัวแปร","options":"ค่าตัวเลือก","applied_products":"ผลิตภัณฑ์ที่นำไปใช้"},"mobile":{"value":"ค่า: {values}"},"empty":{"title":"เพิ่มตัวแปร","subtitle":"การกำหนดค่าตัวแปรช่วยให้ผู้ค้าสามารถเสนอตัวเลือกผลิตภัณฑ์ที่ปรับแต่งได้","no_variant":{"title":"ไม่พบตัวแปร","subtitle":"ดูเหมือนว่าคุณไม่มีตัวแปรที่สร้างขึ้น"}},"select":{"title":"เลือกตัวแปร","subtitle":"เลือกตัวแปรที่จะใช้การเปลี่ยนแปลง"},"form":{"title":{"add":"เพิ่มตัวแปร","edit":"แก้ไขตัวแปร"},"detail":"รายละเอียดตัวแปร","name":{"label":"ชื่อตัวแปร","placeholder":"ขนาดคัพ","helper":"ตั้งชื่อชุดตัวเลือกนี้ ตัวอย่างเช่น คุณสามารถเรียกชุดตัวเลือกนี้ว่าไซส์หรือระดับความหวาน","required":"ชื่อตัวแปรเป็นสิ่งจำเป็น"},"options":{"title":"ค่าตัวเลือก","placeholder":"ตัวเลือก","min_required":"จำเป็นต้องมีอย่างน้อย 1 ตัวเลือก","name_required":"จำเป็นต้องมีชื่อตัวเลือก"},"applied_product":"เมนูที่นำไปใช้"}},"unit":{"title":"หน่วย","add":"เพิ่มหน่วย","update":"อัปเดตหน่วย","precision":"ความแม่นยำ","precision_placeholder":"ป้อนตัวเลข","empty":{"title":"เพิ่มหน่วยแรกของคุณ","subtitle":"หน่วยใช้เพื่อระบุว่าคุณต้องการวัดเมนูของคุณอย่างไร"},"columns":{"name":"ชื่อ","symbol":"สัญลักษณ์"},"measurement":{"add":"เพิ่มการวัด","title":"การวัด {number}","name":"ชื่อ","symbol":"สัญลักษณ์","conversion":"การแปลง","preview":"1 {name} เท่ากับ {value} {unit}","preview_label":"ดูตัวอย่าง"}},"print_dept":{"title":"เส้นทางการพิมพ์","add":"เพิ่มเส้นทางการพิมพ์","update":"แก้ไขเส้นทางการพิมพ์","columns":{"name":"พิมพ์ชื่อเส้นทาง","products":"เมนูที่นำไปใช้"}},"sku":{"title":"ส่วนผสม","add":"เพิ่มส่วนผสม","update":"อัปเดตส่วนผสม","columns":{"code":"รหัส","name":"ชื่อ","unit":"หน่วย"},"empty":{"no_unit":"ไม่พบหน่วย","subtitle":"เพิ่มหน่วยเพื่อเริ่มเพิ่มส่วนผสมของคุณ"},"validation":{"code_used":"รหัสที่ใช้โดยส่วนผสมอื่น"},"errors":{"select_recipe_ingredient":"เลือกสูตรหรือส่วนผสมที่จะแปลง"},"convertible":{"label":"แปลงได้","sublabel":"แปลงได้จากสูตรหรือส่วนผสมอื่น","convert_to":"แปลงสูตรอาหารและส่วนผสมเป็น"}},"recipe":{"title":"สูตร","add":"เพิ่มสูตรอาหาร","update":"อัปเดตสูตรอาหาร","columns":{"name":"ชื่อ"},"validation":{"bind_required":"ผูกสูตรอาหารหรือส่วนผสมอย่างน้อยหนึ่งสูตร"},"table":{"columns":{"name":"ชื่อ","ingredients":"ส่วนผสม"},"search":{"placeholder":"ค้นหาสูตรอาหาร"}},"empty":{"title":"เพิ่มสูตรอาหารแรกของคุณ","subtitle":"สร้างสูตรอาหารเพื่อทำให้กระบวนการเตรียมอาหารของคุณเป็นมาตรฐาน","action":"เพิ่มสูตรอาหาร"},"actions":{"add":"เพิ่มสูตรอาหาร"}},"serving_sequence":{"title":"ลำดับการเสิร์ฟ","add":"เพิ่มลำดับ","update":"อัปเดตลำดับ","columns":{"name":"ชื่อลำดับ"},"empty":{"title":"ไม่มีลำดับการเสิร์ฟ","subtitle":"ตั้งค่าลำดับการเสิร์ฟอาหารของคุณ เพื่อให้แน่ใจว่าจะได้ประสบการณ์การรับประทานอาหารที่ราบรื่นและเป็นระเบียบ"}},"group":{"title":"กลุ่ม","add":"เพิ่มกลุ่ม","update":"อัปเดตกลุ่ม","form":{"tagging":{"title":"การแท็ก","subtitle":"จัดกลุ่มกลุ่มของคุณตามแท็กเพื่อปรับปรุงการรายงานและการจัดการ"}},"option":{"title":"ตัวเลือก","subtitle":"orderFrom ของตัวแปรที่ไม่ได้เชื่อมโยงจะถูกตั้งเป็น None","link_products":"เชื่อมโยงเมนู","add_option":"เพิ่มตัวเลือก","product_title":"ชื่อ","product_title_required":"จำเป็นต้องใส่ชื่อเมนู","price":"ราคา ({symbol})","inventory":"สินค้าคงคลัง","variant":"ตัวแปร","code":"รหัส","is_default":"ค่าเริ่มต้น","should_link_at_least_one_variant":"ควรเชื่อมโยงตัวแปรอย่างน้อยหนึ่งรายการของ {name}"},"types":{"normal":"ปกติ","product":"เมนู","dynamic":"ไดนามิก"},"select":{"title":"เลือกกลุ่ม","subtitle":"เลือกกลุ่มที่จะใช้การเปลี่ยนแปลง"},"empty":{"title":"ไม่พบกลุ่ม","subtitle":"ดูเหมือนว่าคุณไม่ได้สร้างกลุ่ม Add On"},"search":{"placeholder":"ค้นหากลุ่ม"},"type":{"title":"กลุ่ม: ประเภท {type}","all":"ประเภททั้งหมด","normal":"ประเภทปกติ","product":"ประเภทเมนู","dynamic":"ประเภทไดนามิก"},"list":{"items_linked":"รายการเชื่อมโยง {count} รายการ","products_linked":"เมนูเชื่อมโยง {count} รายการ","columns":{"name":"ชื่อกลุ่ม","products":"เมนู","type":"ประเภท","applied_products":"เมนูที่ใช้"},"types":{"normal":"ปกติ","product":"เมนู","dynamic":"ไดนามิก"},"variants":"{ count } ตัวแปร","more_items":"และอีก { count } รายการ"},"actions":{"add":"เพิ่มกลุ่ม","duplicate":{"title":"กลุ่มที่ซ้ำกัน","message":"คุณแน่ใจหรือไม่ที่จะทำซ้ำ {name}"},"apply_product":"ใช้เมนู","duplicate_action":"ทำซ้ำ"},"dialogs":{"delete":{"title":"ลบกลุ่ม","message":"คุณต้องการลบ {name} หรือไม่","unlink_warning":"รายการ {count} รายการต่อไปนี้จะถูกยกเลิกการเชื่อมโยง:"},"update":{"title":"อัปเดตกลุ่ม"}},"validation":{"name_duplicate":"ชื่อกลุ่มมีอยู่แล้ว"}},"migrate":{"title":"ย้ายไปยังเวอร์ชันใหม่","description":"คุณต้องการย้ายไปยังเวอร์ชันใหม่หรือไม่ เมื่อย้ายแล้วจะไม่สามารถย้อนกลับไปใช้เวอร์ชันเก่าได้","message":"ย้ายเมนูของคุณไปยังเวอร์ชันใหม่เพื่อใช้งานฟีเจอร์ต่างๆ ได้มากขึ้น เนื้อหาของเมนูใหม่จะยังคงเหมือนเดิม","notification":{"title":"เวอร์ชันใหม่ของเมนูออกแล้ว!","description":"ย้ายเวอร์ชั่นเมนูปัจจุบันของคุณไปเป็นเวอร์ชั่นล่าสุดเพื่อเพลิดเพลินกับฟีเจอร์ต่างๆ เพิ่มเติม เช่น การจัดส่งผลิตภัณฑ์ตามลำดับ ลำดับการเสิร์ฟ ตัวกำหนดเวลา และอื่นๆ อีกมากมาย เนื้อหาและการตั้งค่าปัจจุบันของคุณจะถูกเก็บรักษาไว้"},"errors":{"no_restaurant":"ต้องมีร้านอาหารอย่างน้อยหนึ่งร้านที่จะย้ายข้อมูล","pos_version":"อัปเกรด POS เป็น V{version} เพื่อใช้เมนูใหม่: {restaurants}"}},"scheduler":{"title":"ตัวจัดตารางเวลา","select":{"title":"เลือกตัวจัดตารางเวลา","all_time":"ตลอดเวลา"},"empty":{"title":"ไม่พบตัวจัดตารางเวลา","subtitle":"เพิ่มตัวจัดตารางเวลาเพื่อกำหนดเวลาให้ผลิตภัณฑ์ของคุณแสดง","action":"เพิ่มตัวจัดตารางเวลา"},"table":{"columns":{"name":"ชื่อตัวจัดตารางเวลา","repeat":"ทำซ้ำ","period":"ระยะเวลา","products":"ใช้เมนู"},"products_linked":"เชื่อมโยงรายการ {count} รายการ","search":{"placeholder":"ค้นหาตัวจัดตารางเวลา"}},"repeat":{"daily":"รายวัน","weekdays":"วันธรรมดา","weekends":"สุดสัปดาห์","except":"รายวัน ยกเว้น {day}","range":"{start} ถึง {end}"},"days":{"monday":"วันจันทร์","tuesday":"วันอังคาร","wednesday":"วันพุธ","thursday":"วันพฤหัสบดี","friday":"วันศุกร์","saturday":"วันเสาร์","sunday":"วันอาทิตย์"},"dialog":{"add":{"title":"เพิ่มตัวจัดตารางเวลา","action":"เพิ่ม"},"update":{"title":"อัปเดตตัวจัดตารางเวลา","action":"อัปเดต"},"sections":{"detail":{"title":"รายละเอียดตัวจัดตารางเวลา","name":{"label":"ชื่อตัวจัดตารางเวลา","placeholder":"ตัวแทน","required":"จำเป็น"}},"availability":{"title":"ความพร้อมใช้งาน","daily":"รายวัน","weekly":"รายสัปดาห์"},"period":{"title":"ระยะเวลาใช้งาน","all_day":"ตลอดทั้งวัน","custom":"ระยะเวลาที่กำหนดเอง","add":"เพิ่มระยะเวลา","overlap":"ระยะเวลาไม่สามารถทับซ้อนหรือติดกันได้ กรุณาปรับระยะเวลาให้มีช่วงว่างระหว่างแต่ละช่วง"},"autolink":{"title":"เชื่อมโยงเมนูโดยอัตโนมัติ","label":"เชื่อมโยงเมนูโดยอัตโนมัติ","sublabel":"เชื่อมโยงเมนูโดยอัตโนมัติตามตัวกรอง","all_items":"เชื่อมโยงรายการทั้งหมดโดยอัตโนมัติ","filter_message":"เชื่อมโยงรายการที่ตรงกับตัวกรองต่อไปนี้โดยอัตโนมัติ","tooltip":"คุณสามารถใช้ไวด์การ์ด ('*' สำหรับอักขระใดๆ และ '$' สำหรับอักขระตัวเลขใดๆ) ในค่าตัวกรอง ตัวอย่างเช่น A*1 ตรงกับ A1, AG1, AC51 แต่ไม่ตรงกับ A2, B1, C9 ส่วน A$ ตรงกับ A1, A11, A124 แต่ไม่ตรงกับ AQ1, AG1, AC"},"filter":{"add":"เพิ่มตัวกรอง","matches":"รายการที่ตรงกัน","or":"หรือ","types":{"code":"รหัส","category":"หมวดหมู่"},"placeholder":{"category":"เลือกหมวดหมู่"}},"products":{"title":"ใช้เมนู","link":"เชื่อมโยงเมนู"}},"actions":{"cancel":"ยกเลิก"}},"dialogs":{"remove":{"title":"ลบตัวกำหนดเวลา","message":"คุณแน่ใจหรือไม่ว่าต้องการลบตัวกำหนดเวลา {name}"}}},"revert":{"title":"ย้อนกลับเมนู","description":"ย้อนกลับเมนูของ {name} เป็นเวอร์ชันที่เผยแพร่ล่าสุด แคตตาล็อกการจัดส่งจะถูกตั้งค่าเป็นหน้าหลักหากไม่อยู่ในเวอร์ชันที่เผยแพร่ล่าสุด","labels":{"restaurant":"ร้านอาหาร","revert_to":"กลับสู่","default":"ค่าเริ่มต้น","pos_takeaway":"POS Takeaway","pickup":"รับสินค้า","additional_catalogs":"แคตตาล็อกเพิ่มเติม"}},"remy":{"title":"Remy","description":"ผู้ช่วย AI ของคุณ","actions":{"start":"เริ่มต้นด้วย Remy","close":"ปิด Remy"},"messages":{"welcome":"สวัสดี ฉันชื่อ Remy ผู้ช่วย AI ของคุณ ฉันจะช่วยคุณได้อย่างไรในวันนี้","thinking":"กำลังคิด...","error":"ขออภัย ฉันพบข้อผิดพลาด โปรดลองอีกครั้ง"}},"picker":{"title":"เลือก {type}","search":"ค้นหา {type}","no_results":"ไม่พบ {type}","selected":"เลือก {count} รายการ"},"apply_product":{"title":"ใช้เมนู","link":{"title":"เชื่อมโยงเมนู","subtitle":"เชื่อมโยงเมนูเพื่อใช้การเปลี่ยนแปลง"},"table":{"category_count":"{name} ({count})","inventory":"สินค้าคงคลัง","value":"ค่า: {values}"}},"catalog":{"title":"แคตตาล็อก","detail":"รายละเอียดแคตตาล็อก","main":"แคตตาล็อกหลัก","form":{"name":"ชื่อแคตตาล็อก","tax":{"title":"การคำนวณภาษี","auto":{"label":"อัตโนมัติ","sublabel":"ราคาทั้งหมดเป็นราคาปกติ เมื่อสั่งซื้อผ่านบริษัทขนส่ง ราคาจะรวมภาษีโดยอัตโนมัติ"},"manual":{"label":"คู่มือ","sublabel":"คุณสามารถระบุการคำนวณภาษีของตัวเองสำหรับแคตตาล็อกนี้ได้"},"inclusive":"รวม {code}"},"link":{"title":"เชื่อมโยงการกำหนดค่าเมนู","auto_link":{"label":"เชื่อมโยงรายการโดยอัตโนมัติ","sublabel":"เชื่อมโยงเมนูโดยอัตโนมัติไปยังแคตตาล็อกหลักเพื่อความพร้อมใช้งาน"},"options":{"all":"พร้อมใช้งานสำหรับทั้งหมด","pos_only":"สั่งซื้อบน POS เท่านั้น"}},"markup":{"title":"กำหนดค่ามาร์กอัปราคา","auto":{"label":"กำหนดราคามาร์กอัปโดยอัตโนมัติ","sublabel":"กำหนดราคามาร์กอัปโดยอัตโนมัติสำหรับแคตตาล็อก กลุ่ม และกำหนดการ"},"add":"เพิ่มการกำหนดค่ามาร์กอัป","config":"การกำหนดค่า {number}","products":"เชื่อมโยงเมนู {count} รายการ","all_items":"นำไปใช้กับรายการทั้งหมด"},"restaurant_attributes_title":"คุณสมบัติร้านอาหาร"},"validation":{"name_used":"ชื่อแคตตาล็อกที่ใช้","name_required":"จำเป็นต้องระบุชื่อแคตตาล็อก"},"edit":{"back":"กลับไปที่แคตตาล็อก","export":"ส่งออก","import":"นำเข้า","link_product":"เชื่อมโยงเมนู","apply_scheduler":"ใช้ตัวกำหนดเวลา","tabs":{"product":"เมนู","category":"หมวดหมู่","group":"กลุ่ม","takeaway":"นำกลับบ้าน","setting":"การตั้งค่า"},"scheduler":{"remove":{"title":"ลบตัวกำหนดเวลา","message":"คุณแน่ใจหรือไม่ว่าต้องการลบตัวกำหนดเวลา {name}?"}}},"usage":{"title":"การใช้งานแคตตาล็อก","tax_calculation":"การคำนวณภาษี","products":"เมนู {count} รายการ","restaurant":"ร้านอาหาร","usage":"การใช้งาน"},"table":{"columns":{"title":"ชื่อแคตตาล็อก","tax_calculation":"การคำนวณภาษี","auto_link":"การเชื่อมโยงรายการอัตโนมัติ"}},"empty":{"title":"สร้างแคตตาล็อกเมนูของคุณ","subtitle":"จัดระเบียบเมนูของคุณด้วยแคตตาล็อก เพิ่มผลิตภัณฑ์ กำหนดราคา และปรับแต่งสำหรับการรับประทานในร้าน ซื้อกลับบ้าน หรือจัดส่ง"},"actions":{"add":"เพิ่มแคตตาล็อก","view_usage":"การใช้งานแคตตาล็อก"},"dialogs":{"remove":{"title":"ลบแคตตาล็อก","message":"คุณแน่ใจหรือไม่ว่าต้องการลบ {name}","error":"แคตตาล็อกที่ใช้โดยร้านอาหาร {restaurants}"}}},"currency":{"input":{"field":"ฟิลด์"}},"order":{"from":{"options":{"all":"พร้อมใช้งานสำหรับทั้งหมด","pos_only":"POS เท่านั้น","none":"ไม่มี"}}},"inventory":{"title":"สินค้าคงคลัง","subtitle":"ปรับส่วนผสมและปรับแต่งสูตรสำหรับเมนูของคุณ","columns":{"product_name":"ชื่อเมนู","ingredient":"ส่วนผสม","recipe":"สูตร"},"status":{"sku_linked":"{count} sku เชื่อมโยง","recipe_linked":"{count} สูตรเชื่อมโยง","not_set":"ไม่ได้ตั้งค่า"},"dialog":{"title":"สินค้าคงคลัง {name}"},"form":{"title":"สินค้าคงคลัง","product_name":"ชื่อเมนู"},"binding":{"recipe":{"title":"สูตร","columns":{"name":"สูตร","amount":"จำนวน"}},"ingredient":{"title":"ส่วนผสม","columns":{"name":"ส่วนผสม","amount":"จำนวน","unit":"หน่วย"},"select_unit":"เลือกหน่วย","loop_warning":"อุ๊ย! ตรวจพบลูปใน {type} นี้ โปรดตรวจสอบหรือลบลูปนั้น"},"link":{"title":"ลิงก์ {type}","recipe":"สูตรอาหาร","ingredient":"ส่วนผสม"}}},"link_product":{"title":"ใช้เมนู","rules":{"title":"กฎการลิงก์เมนู","section_title":"ตั้งค่าการลิงก์ขั้นสูงด้วยกฎ","order_from":"ช่องทางการสั่งซื้อ","restaurant_filter":"ตัวกรองร้านอาหาร","restaurant_custom_attributes_filter":"ตัวกรองแท็กร้านอาหาร","item_filter":"ตัวกรองสินค้า","item_custom_attributes_filter":"ตัวกรองแท็กสินค้า","add_rule":"เพิ่มกฎ","hint":"ลิงก์เมนูกับร้านอาหารโดยใช้แท็กร้านอาหารและคุณลักษณะเมนูค่าเริ่มต้นจากแคตตาล็อกหลักเท่านั้น (ไม่ใช้การแทนที่ในแคตตาล็อกย่อย)"}},"catalog_scheduler":{"title":"อัปเดตเมนูจาก","subtitle":"เลือกแคตตาล็อกและตัวกำหนดเวลาที่คุณต้องการอัปเดตเมนูของคุณ"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"เพิ่มการกำหนดค่ามาร์กอัป","update":"อัปเดตการกำหนดค่ามาร์กอัป"},"fields":{"percentage":{"label":"เปอร์เซ็นต์มาร์กอัป","placeholder":"0","required":"จำเป็นต้องมีเปอร์เซ็นต์มาร์กอัป"}},"options":{"all":"ใช้กับเมนูทั้งหมด","custom":"เมนูที่กำหนดเอง"},"products":{"link":"ลิงก์เมนู","count":"ลิงก์เมนู {count} รายการ"}}},"import":{"dialog":{"title":"นำเข้าเมนู","subtitle":"อัพโหลดเอกสารที่จะนำเข้า","info":"โปรดอย่าเปลี่ยนบรรทัดส่วนหัวใดๆ จากเทมเพลตเดิม มิฉะนั้น การนำเข้าจะล้มเหลว","fields":{"type":"ประเภทเมนู","file":{"replace":"แทนที่ไฟล์"}},"actions":{"import":"นำเข้า"},"errors":{"select_file":"โปรดเลือกไฟล์ที่จะนำเข้า"},"button":{"label":"เพิ่มไฟล์"}}},"product":{"form":{"title":{"add":"เพิ่มเมนู","update":"อัปเดตเมนู"},"summary":{"title":"สรุปเมนู","fields":{"code":"รหัสเมนู","name":"ชื่อเมนู","category":"หมวดหมู่","order_from":"สั่งซื้อจาก","selling_price":"ราคาขาย","tax":"ภาษี","inventory":"สินค้าคงคลัง","takeaway":"อาหารนำกลับบ้าน"}},"sections":{"general":{"title":"การตั้งค่าทั่วไป","description":"ใช้การตั้งค่าทั่วไปอื่น"},"tagging":{"title":"การแท็ก","subtitle":"จัดกลุ่มเมนูของคุณตามแท็กเพื่อปรับปรุงการรายงานและการจัดการ"},"price":{"title":"อัปเดตราคา","description":"ใช้การตั้งค่าราคาอื่น"},"print":{"title":"อัปเดตการพิมพ์","description":"ใช้การตั้งค่าการพิมพ์อื่น"},"variant":{"title":"อัปเดตตัวแปร","description":"ใช้การตั้งค่าตัวแปรอื่น"},"group":{"title":"อัปเดตกลุ่ม","description":"ใช้การตั้งค่ากลุ่มที่แตกต่างกัน"},"inventory":{"title":"อัปเดตสินค้าคงคลัง","description":"ใช้การตั้งค่าสินค้าคงคลังอื่น"},"takeaway":{"title":"อัปเดตข้อมูลนำกลับบ้าน","description":"ใช้การตั้งค่านำกลับบ้านอื่น"}},"detail":{"title":"รายละเอียดเมนู","fields":{"code":{"label":"รหัสเมนู","placeholder":"ไม่มีรหัส"},"name":{"label":"ชื่อเมนู","required":"จำเป็นต้องระบุชื่อ","duplicate_warning":"เมนูนี้มีชื่อเดียวกันกับสินค้าอื่นอีก {count} รายการ ซึ่งจะถูกจัดกลุ่มเป็นเมนูเดียวในรายงาน"},"description":{"label":"คำอธิบาย","optional":"(ไม่บังคับ)","placeholder":"ไม่มีคำอธิบาย"}},"category":{"label":"หมวดหมู่","label_singular":"หมวดหมู่","required":"จำเป็นต้องระบุหมวดหมู่","placeholder":"เลือกหมวดหมู่เพื่อจัดโครงสร้างเมนูของคุณ","add_new":"เพิ่มหมวดหมู่ใหม่","add_first":"กรุณาเพิ่มหมวดหมู่สินค้าก่อน","options":{"product":{"label":"ขายเป็นสินค้าพร้อมส่วนเสริม","sublabel":"สินค้าจะปรากฏเป็นรายการสั่งซื้อ"},"addon":{"label":"ขายเป็นรายการเสริมเท่านั้น","sublabel":"สินค้าจะปรากฏเป็นรายการเสริมเท่านั้น"}}},"subcategory":{"label":"หมวดหมู่ย่อย","required":"จำเป็นต้องระบุหมวดหมู่ย่อย","add_new":"เพิ่มหมวดหมู่ย่อยใหม่"},"path":{"label":"หมวดหมู่ย่อย - เส้นทางเมนู","placeholder":"เลือกหมวดหมู่ย่อยเพื่อจัดโครงสร้างเมนูของคุณ เช่น กาแฟ/ลาเต้","helperText":"เพิ่มหมวดหมู่ย่อยเพื่อจัดโครงสร้างเมนูของคุณ"},"order_from":{"label":"สั่งซื้อจาก","default":"ติดตามหน้าหลัก"}},"group":{"title":"กลุ่ม","subtitle":"เพิ่มกลุ่มให้กับเมนูของคุณเพื่อขายเป็นชุดคอมโบ","add":"เพิ่มกลุ่ม","circularError":"ตรวจพบการเชื่อมโยงแบบวนซ้ำ กลุ่ม {groupName} ได้เชื่อมโยงกับเมนู {productName} แล้ว","columns":{"title":"ชื่อกลุ่ม","type":"ประเภท"}},"price":{"title":"ราคา","fields":{"selling_price":{"label":"ราคาขาย","required":"จำเป็นต้องมีราคา"},"tax":{"label":"ตัวเลือกภาษีไม่พร้อมใช้งาน","label_with_code":"{code} (ใช้ได้หากตั้งค่าโปรไฟล์ร้านอาหารเป็น {code})"}},"settings":{"title":"การกำหนดราคา","open_price":{"label":"ราคาเปิด","sublabel":"อนุญาตให้ปรับราคาได้โดยไม่ต้องขออนุญาต"},"sell_by_unit":{"label":"ขายตามหน่วย","sublabel":"ขายเมนูตามหน่วยที่กำหนด (น้ำหนัก ความยาว ฯลฯ)","per_unit":{"label":"ต่อ","placeholder":"ป้อนจำนวน","required":"ต่อหน่วยเป็นสิ่งจำเป็น","min":"ต่อหน่วยต้องมากกว่า 0"},"unit":{"placeholder":"ป้อนหน่วย","required":"จำเป็นต้องมีหน่วย"}},"track_costing":{"label":"ติดตามต้นทุน"},"min_price":{"label":"มีราคาขั้นต่ำหลังจากใช้ส่วนลด"}}},"print":{"title":"การพิมพ์","config":{"label":"การกำหนดค่าการพิมพ์","group_parent":{"label":"จัดกลุ่มกับเมนูหลัก","sublabel":"พิมพ์เมนูนี้พร้อมกับเมนูหลักเมื่อทำหน้าที่เป็น Add-On"}},"kds":{"label":"การกำหนดค่า KDS","options":{"all":{"label":"ทั้งหมดในครั้งเดียว","description":"ส่งเมนูไปยังทุกแผนกพร้อมกันเพื่อการเตรียมการที่รวดเร็วยิ่งขึ้น"},"sequential":{"label":"การจัดส่งแบบต่อเนื่อง","description":"ส่งเมนูไปยังแต่ละแผนกตามลำดับเพื่อการเตรียมการแบบทีละขั้นตอน"}}},"routes":{"label":"เส้นทางที่เชื่อมโยง","add":"เพิ่มเส้นทาง"}},"takeaway":{"title":"การนำกลับบ้าน","subtitle":"เลือกค่าธรรมเนียมการนำกลับบ้านสำหรับเมนูของคุณ","columns":{"variant":"สินค้าและตัวแปร","product":"เมนู","takeaway":"การนำกลับบ้าน"},"options":{"follows_main":"ปฏิบัติตามหลัก","no_preset":"ไม่มีการนำกลับบ้านที่ตั้งไว้ล่วงหน้า","add_new":"เพิ่มการนำกลับบ้านใหม่"}},"variant":{"title":"ตัวแปร","subtitle":"เพิ่มตัวเลือก เช่น ขนาด สี หรือประเภท","add":"เพิ่มตัวแปร","columns":{"variant":"ตัวแปร","code":"รหัส","order_from":"สั่งซื้อจาก","price":"ราคา","min_price":"ราคาต่ำสุด"},"validation":{"max_variants":"คุณสามารถเพิ่มตัวแปรได้สูงสุด {max} รายการ"},"placeholders":{"no_code":"ไม่มีรหัส","follow_general":"ปฏิบัติตามทั่วไป"}}},"empty":{"with_create":{"title":"เพิ่มเมนูของคุณ","subtitle":"เริ่มต้นด้วยการสต็อกสินค้าในร้านของคุณซึ่งลูกค้าของคุณจะชื่นชอบ","action":"เพิ่มเมนู"},"no_scheduler":{"title":"ไม่มีการเชื่อมโยงเมนู","subtitle":"เพิ่มเมนูในแค็ตตาล็อกนี้โดยการเชื่อมโยงเมนูจากแค็ตตาล็อกหลัก"},"with_scheduler":{"title":"ไม่มีการใช้เมนู","subtitle":"ใช้เมนูในตัวกำหนดเวลานี้โดยการเชื่อมโยงเมนูจากแค็ตตาล็อกหลัก"}},"table":{"columns":{"code":"รหัส","name":"ชื่อเมนู","category":"หมวดหมู่","price":"ราคา ({ currency })","order_from":"สั่งซื้อจาก","tagging":"แท็ก"},"category":{"all":"หมวดหมู่ทั้งหมด","collapse":"ยุบ","expand":"+ เพิ่มเติมอีก {count} รายการ"},"tagging":{"all":"แท็กทั้งหมด","collapse":"ยุบ","expand":"+ เพิ่มเติมอีก {count} รายการ"},"bulk_edit":{"title":"แก้ไขเมนูจำนวนมาก","actions":{"reset_all":"รีเซ็ตทั้งหมด","save":"บันทึก"}},"selection":{"count":"เลือกรายการ {count} รายการ","actions":{"deselect_all":"ยกเลิกการเลือกทั้งหมด","remove":"ลบ"}},"empty":{"title":"เพิ่มเมนูของคุณ","subtitle":"เริ่มต้นด้วยการสต็อกสินค้าในร้านของคุณที่ลูกค้าของคุณจะชื่นชอบ","actions":{"add":"เพิ่มเมนู","import":"นำเข้า"}},"search":{"placeholder":"ค้นหาเมนู"},"validation":{"name_required":"จำเป็นต้องระบุชื่อ","price_min":"ราคาต้องมากกว่าหรือเท่ากับ 0"}}},"setting":{"catalog":{"title":"รายละเอียดแคตตาล็อก","fields":{"name":{"label":"ชื่อแคตตาล็อก","required":"จำเป็นต้องระบุชื่อแคตตาล็อก","used":"ชื่อแคตตาล็อกที่ใช้"}},"warnings":{"delivery":"แคตตาล็อกนี้กำลังถูกใช้โดยบริษัทขนส่งและวิธีการสั่งซื้ออื่นๆ ซึ่งอาจทำให้คำนวณราคาผิดพลาดได้ โปรดตรวจสอบราคาสำหรับการใช้แคตตาล็อกแต่ละรายการ"}},"tax":{"title":"การคำนวณภาษี","modes":{"auto":{"label":"อัตโนมัติ","sublabel":"ราคาทั้งหมดเป็นค่าเริ่มต้นแบบไม่รวม เมื่อสั่งซื้อผ่านบริษัทขนส่ง ราคาจะกลายเป็นราคาที่รวมภาษีโดยอัตโนมัติ"},"manual":{"label":"ด้วยตนเอง","sublabel":"คุณสามารถระบุการคำนวณภาษีสำหรับแคตตาล็อกนี้ได้ด้วยตัวเอง"}},"inclusive":"{code} รวม"},"link":{"title":"เชื่อมโยงการกำหนดค่าเมนู","auto_link":{"label":"เชื่อมโยงรายการโดยอัตโนมัติ","sublabel":"เชื่อมโยงเมนูโดยอัตโนมัติไปยังแคตตาล็อกหลักเพื่อให้ทราบถึงความพร้อมใช้งาน"},"options":{"all":"พร้อมใช้งานสำหรับทั้งหมด","pos_only":"สั่งซื้อบน POS เท่านั้น"}},"markup":{"title":"กำหนดค่ามาร์กอัปราคา","auto_markup":{"label":"กำหนดราคามาร์กอัปโดยอัตโนมัติ","sublabel":"กำหนดราคามาร์กอัปโดยอัตโนมัติสำหรับแคตตาล็อก กลุ่ม และกำหนดการ"},"add":"เพิ่มการกำหนดค่ามาร์กอัป","config":"กำหนดค่า {number}","percentage":"เปอร์เซ็นต์มาร์กอัป: {value}%","products":{"all":"นำไปใช้กับผลิตภัณฑ์ทั้งหมด","linked":"{count} เมนูที่เชื่อมโยง"}}},"takeaway":{"actions":{"add":"เพิ่มการซื้อกลับบ้าน"},"title":"การซื้อกลับบ้าน","add":"เพิ่มรายการอาหารนำกลับบ้าน","update":"อัปเดตรายการอาหารนำกลับบ้าน","columns":{"title":"ชื่อรายการอาหารนำกลับบ้าน","price":"ราคา"},"placeholders":{"title":"ใส่ชื่อรายการอาหารนำกลับบ้านที่นี่"},"empty":{"title":"ไม่พบรายการอาหารนำกลับบ้าน","subtitle":"ดูเหมือนว่าคุณยังไม่ได้สร้างรายการอาหารนำกลับบ้าน","action":"เพิ่มรายการอาหารนำกลับบ้าน"},"table":{"columns":{"name":"ชื่อรายการอาหารนำกลับบ้าน","price":"ราคา ({symbol})","products":"ใช้เมนู"},"items_linked":"เชื่อมโยงรายการ {count} รายการ","search":{"placeholder":"ค้นหารายการอาหารนำกลับบ้าน"}}},"thumbnail":{"alt":{"default":"รายการ","with_name":"{name}"}},"cooking_guide":{"title":"คู่มือการทำอาหาร","empty":{"title":"เพิ่มคู่มือการทำอาหาร","subtitle":"เครื่องมือกำหนดค่าคำแนะนำการปรุงอาหารช่วยให้ผู้ค้าสามารถกำหนดคำแนะนำการปรุงอาหารที่เป็นมาตรฐานสำหรับอาหารต่าง ๆ ในหลาย ๆ ร้านค้า","action":"เพิ่มคู่มือ"},"table":{"columns":{"name":"ชื่อคู่มือ","products":"เชื่อมโยงเมนู","steps":"ขั้นตอน {count}"},"search":{"placeholder":"ค้นหาคู่มือ"},"mobile":{"products_linked":"เชื่อมโยงเมนู{count}"}},"dialogs":{"remove":{"title":"ลบคู่มือการทำอาหาร","message":{"prefix":"คุณแน่ใจหรือไม่ว่าต้องการลบคู่มือการทำอาหาร","products_using":"มี","products_count":"เมนูที่ใช้คู่มือการทำอาหารนี้"}}},"actions":{"add":"เพิ่มคู่มือ","remove":"ลบ","cancel":"ยกเลิก"},"dialog":{"add":{"title":"เพิ่มคู่มือ","action":"เพิ่ม"},"update":{"title":"อัปเดตคู่มือ","action":"อัปเดต"},"sections":{"guide_detail":{"title":"รายละเอียดคู่มือ","name":{"label":"ชื่อคู่มือ","placeholder":"ตัวแทน","required":"จำเป็น"}},"steps":{"title":"ขั้นตอน","add":"เพิ่มขั้นตอน","empty":"ยังไม่มีการเพิ่มขั้นตอน"},"apply_product":{"title":"ใช้เมนู","link":"เชื่อมโยงเมนู","products_linked":"เชื่อมโยงเมนู {count} รายการ","search":"ค้นหา"}},"actions":{"cancel":"ยกเลิก"}},"step_dialog":{"add":{"title":"เพิ่มขั้นตอน","action":"เพิ่ม"},"update":{"title":"อัปเดตขั้นตอน","action":"อัปเดต"},"sections":{"variables":{"title":"ตัวแปร","add":"เพิ่มตัวแปร","columns":{"key":"คีย์","value":"มูลค่า"},"placeholders":{"key":"คีย์","value":"ค่าเริ่มต้น"},"validation":{"required":"จำเป็น","lowercase":"ตัวอักษรพิมพ์เล็กเท่านั้น","duplicate":"คีย์ซ้ำ"}},"instruction":{"title":"คำแนะนำ"}},"actions":{"cancel":"ยกเลิก","back":"ย้อนกลับ"}},"step_override_dialog":{"title":"ปรับแต่งขั้นตอนการปรุงอาหาร","columns":{"instructions":"คำแนะนำ","variables":"ตัวแปร","value":"มูลค่า"},"actions":{"save":"บันทึก","cancel":"ยกเลิก"}}},"ingredient":{"title":"ส่วนผสม","empty":{"title":"เพิ่มส่วนผสมแรกของคุณ","subtitle":"ส่วนผสมเป็นส่วนประกอบที่สำคัญในอาหารและเครื่องดื่ม การจัดการส่วนผสมเกี่ยวข้องกับการจัดหาเมนูที่มีคุณภาพ การตรวจสอบความสอดคล้องของการจัดเก็บ และการรักษามาตรฐานความปลอดภัย เนื่องจากส่วนผสมเหล่านี้ส่งผลกระทบอย่างมากต่อรสชาติและคุณภาพ","action":"เพิ่มส่วนผสม"},"table":{"columns":{"code":"รหัส","name":"ชื่อ","unit":"หน่วย"},"search":{"placeholder":"ค้นหาส่วนผสม"},"mobile":{"code":"รหัส: {code}","unit":"หน่วย: {unit}"}},"actions":{"add":"เพิ่มส่วนผสม"}},"print_route":{"title":"พิมพ์เส้นทาง","empty":{"title":"ไม่พบเส้นทาง","subtitle":"ปรับแต่งปลายทางการพิมพ์ของคุณเพื่อให้แน่ใจว่าการจัดการคำสั่งซื้อตามส่วนมีประสิทธิภาพ","action":"เพิ่มเส้นทาง"},"table":{"columns":{"name":"พิมพ์ชื่อเส้นทาง","products":"เชื่อมโยงเมนู","products_count":"เมนู {count} รายการ"},"search":{"placeholder":"ค้นหาเส้นทาง"},"mobile":{"products_linked":"เชื่อมโยงเมนู {count} รายการ"}},"dialogs":{"remove":{"title":"ลบเส้นทางการพิมพ์","message":{"prefix":"คุณแน่ใจหรือไม่ว่าจะลบเส้นทางการพิมพ์?","products_using":"มี","products_count":"เมนูที่ใช้เส้นทางการพิมพ์นี้"}}},"actions":{"add":"เพิ่มเส้นทาง","remove":"ลบ","cancel":"ยกเลิก"},"department_dialog":{"add":{"title":"เพิ่มเส้นทาง","action":"เพิ่ม"},"update":{"title":"อัปเดตเส้นทาง","action":"อัปเดต"},"sections":{"route_detail":{"title":"รายละเอียดเส้นทาง","name":{"label":"ชื่อเส้นทาง","placeholder":"ตัวแทน","required":"จำเป็น"}},"link_product":{"title":"เชื่อมโยงเมนู","link":"เชื่อมโยงเมนู","products_linked":"เชื่อมโยงเมนู {count} รายการ","search":"ค้นหา"}},"actions":{"cancel":"ยกเลิก"}}},"products":{"title":"เมนู","actions":{"export":"ส่งออก","import":"นำเข้า","add":"เพิ่มเมนู","link":"เชื่อมโยงเมนู","apply_scheduler":"ใช้ตัวกำหนดเวลา"}},"productInternalTools":{"title":"เครื่องมือภายในผลิตภัณฑ์"},"publish":{"title":"เผยแพร่","table":{"columns":{"restaurant":"ร้านอาหาร","default":"ค่าเริ่มต้น","pos_takeaway":"POS takeaway","pickup":"รับสินค้า","version":"เวอร์ชัน"},"search":{"placeholder":"ค้นหา"},"status":{"latest":"ล่าสุด","outdated":"ล้าสมัย"}},"empty":{"title":"สร้างร้านอาหาร","subtitle":"คุณยังไม่ได้สร้างร้านอาหาร เพิ่มร้านอาหารเพื่อเริ่มเผยแพร่เมนู","action":"สร้างร้านอาหาร"},"actions":{"publish":"เผยแพร่","publish_all":"เผยแพร่ทั้งหมด","refresh":"รีเฟรช","revert":"ย้อนกลับเมนู"},"labels":{"main_version":"เวอร์ชันหลัก: {version}","catalog":{"main":"หลัก","invalid":"แคตตาล็อกไม่ถูกต้อง"}},"update_catalog_dialog":{"title":"อัปเดตแคตตาล็อก","sections":{"default":{"label":"แคตตาล็อกเริ่มต้น","use_default":"หลัก"},"pos_takeaway":{"label":"POS takeaway catalog"},"pickup":{"label":"Pick up catalog"},"additional":{"title":"แคตตาล็อกเพิ่มเติม","subtitle":"สามารถใช้แคตตาล็อกเพิ่มเติมโดยโต๊ะและการจัดส่งได้"}},"actions":{"update":"อัปเดต","cancel":"ยกเลิก"}}},"tax_setting":{"title":"การตั้งค่าภาษี"},"menu_setting":{"title":"การตั้งค่าเมนู","fields":{"low_stock":{"not_set":"ไม่ตั้งค่า","must_be_integer":"ค่าต้องเป็นจำนวนเต็ม","title":"จำนวนสินค้าสำหรับการสั่งซื้อออนไลน์","subtitle":"ปิดการสั่งซื้อออนไลน์เมื่อสินค้าลดลงเกินจำนวนนี้","helper_text":"ถ้าสินค้าลดลงเกินจำนวนนี้ สินค้าจะถูกแจ้งให้ลบออกจากการสั่งซื้อออนไลน์","updated":"การตั้งค่าเมนูอัปเดตแล้ว"}},"tabs":{"menu_configuration":"การตั้งค่าเมนู","price_group":"กลุ่มราคา","link_product_rule_groups":"กลุ่มกฎการเชื่อมโยงผลิตภัณฑ์"}},"rule_groups":{"title":"กลุ่มกฎการเชื่อมโยงผลิตภัณฑ์","description":"จัดการกลุ่มกฎสำหรับการเชื่อมโยงผลิตภัณฑ์ตามคุณลักษณะของร้านอาหารและรายการ","create_group":"สร้างกลุ่มกฎ","edit_group":"แก้ไขกลุ่มกฎ","saved_successfully":"การตั้งค่ากลุ่มกฎบันทึกเรียบร้อยแล้ว","search_placeholder":"ค้นหากลุ่มกฎ...","table":{"columns":{"name":"ชื่อ","description":"คำอธิบาย","rules_count":"จำนวนกฎ"}},"form":{"basic_info":"ข้อมูลพื้นฐาน","name":"ชื่อ","name_placeholder":"ป้อนชื่อกลุ่มกฎ","description":"คำอธิบาย","description_placeholder":"ป้อนคำอธิบายกลุ่มกฎ","rules":"กฎ","rules_description":"กำหนดค่ากฎร้านอาหารและรายการสำหรับกลุ่มนี้"},"validation":{"name_required":"ต้องระบุชื่อ","at_least_one_rule_required":"ต้องมีอย่างน้อยหนึ่งกฎ"},"delete_dialog":{"title":"ลบกลุ่มกฎ","message":"คุณแน่ใจหรือไม่ว่าต้องการลบ '{name}'? การดำเนินการนี้ไม่สามารถยกเลิกได้","success":"กลุ่มกฎลบออกเรียบร้อยแล้ว"}},"price_tier":{"price_group":"กลุ่มราคา","description":"ตั้งค่ากลุ่มราคาที่แตกต่างกันสำหรับผลิตภัณฑ์ของคุณและเชื่อมโยงไปยังหลายแคตตาล็อก","add_price_group":"เพิ่มกลุ่มราคา","add_price_group_success":"กลุ่มราคาเพิ่มขึ้นเรียบร้อย","group_title":"ชื่อกลุ่ม","price_group_description":"ปัจจุบันกลุ่มราคานี้เชื่อมโยงกับแคตตาล็อก กรุณาจัดการราคาในแคตตาล็อกหลัก","delete_dialog":{"title":"ลบกลุ่มราคา","message":"คุณแน่ใจหรือไม่ว่าจะลบกลุ่มราคา {name}?","success":"กลุ่มราคาลบออกเรียบร้อย"},"settings_table":{"columns":{"name":"ชื่อ"}},"form":{"table":{"columns":{"name":"ชื่อกลุ่ม","price":"ราคาขาย"}}},"price_tier_config":"การตั้งค่ากลุ่มราคา","link_price_tier":"เชื่อมโยงระดับราคา","link_price_group":"เชื่อมโยงกลุ่มราคา","link_price_group_description":"เลือกกลุ่มราคาเพื่อใช้งานในแคตตาล็อก หากไม่มีกลุ่มราคาเชื่อมโยง ราคาฐานจะใช้งานเป็นค่าเริ่มต้น","not_linked":"ไม่เชื่อมโยง","price_group_rule":"กลุ่มราคากฎ","price_group_rule_description":"เชื่อมโยงกลุ่มราคาไปยังร้านอาหารที่มีป้ายชื่อที่ระบุ","restaurant_filter":"ตัวกรองร้านอาหาร"},"tree_editor":{"title":"การจัดการเมนู","actions":{"add_category":"เพิ่มหมวดหมู่ใหม่","expand_all":"ขยายทั้งหมด","collapse_all":"ยุบทั้งหมด","add_product":"เพิ่มผลิตภัณฑ์","delete_product":"ลบผลิตภัณฑ์","edit_category":"แก้ไขหมวดหมู่","delete_category":"ลบหมวดหมู่","link_category_to_catalog":"เชื่อมโยงหมวดหมู่ไปยังแคตตาล็อก","link_product_to_catalog":"เชื่อมโยงผลิตภัณฑ์ไปยังแคตตาล็อก","unlink_product_from_catalog":"ยกเลิกเชื่อมโยงผลิตภัณฑ์จากแคตตาล็อก"},"labels":{"main_catalog":"แคตตาล็อกหลัก","all_time":"ทั้งหมด","products":"{count} ผลิตภัณฑ์","variants":"{count} รูปแบบ","groups":"{count} กลุ่ม","addon":"ส่วนเสริม","unknown":"ไม่ทราบ","please_select_a_product_to_edit":"กรุณาเลือกผลิตภัณฑ์เพื่อแก้ไข","no_items":"ไม่มีผลิตภัณฑ์ที่สามารถแสดง"}}}`), si = {
|
|
1812
|
+
menu: ni
|
|
1813
|
+
}, ci = /* @__PURE__ */ JSON.parse(`{"title":"菜单","common":{"actions":{"update":"更新","cancel":"取消","add":"添加","search":"搜索","delete":"删除","remove":"移除","deselect_all":"取消选择","move":"移动","edit":"编辑","download":"下载","save":"保存","confirm":"确认","yes":"是","no":"否","link":"链接","migrate":"迁移","add_new_variant":"添加新规格","add_group":"添加组","apply_product":"应用产品","link_product":"链接产品","deselect":"取消选择"},"labels":{"name":"名称","detail":"详情","items_linked":"{count} 个项目已链接","search_placeholder":"搜索 {type}","symbol":"符号","products_linked":"{count} 个产品已链接","product_linked_singular":"{count} 个产品已链接","product_linked_plural":"{count} 个产品已链接","enter_name":"输入名称","product":"产品","selected_items":"{count} 个项目已选择","all":"全部","category":"分类:{name}","group_name":"组名称","min_select":"最少选择","max_select":"最多选择","group_type":"组类型","stackable":"可堆叠","stackable_sublabel":"顾客可以多次选择相同选项","configuration":"配置","variant":"规格","product_title":"产品标题","price":"价格 ({symbol})","order_from":"下单来源","inventory":"库存","search_groups":"搜索组","search_variants":"搜索规格","product_count":"{count} 个产品已应用","search_product":"搜索产品","product_image":"产品图片","optional":"(可选)","products_selected":"{count} 个产品已选择","items_selected":"{count} 个项目已选择","catalog":"目录","scheduler":"调度器","all_time":"全天","main":"主","unknown":"未知","all_day":"全天","summary":"概览","scheduler_title":"调度器:{label}","link_product_title":"链接产品","products_count":"已选 {count} 个产品","search":"搜索","status":"状态"},"dialog":{"remove_confirmation":"确定要移除 {name} 吗?","change_type":{"title":"更改附加组类型","message":"更改附加组类型将清除所有产品。确定要继续吗?"},"remove":{"catalog":{"title":"移除目录","message":"确定要移除 {name} 吗?"},"category":{"title":"移除分类","message":"确定要移除 {name} 吗?"},"subcategory":{"title":"删除子分类","message":"确定要删除 {name} 吗?"},"product":{"title":"移除产品","message":"确定要移除 {name} 吗?","success":"产品已成功移除。"},"recipe":{"title":"移除配方","message":"确定要移除配方 {name} 吗?"},"ingredient":{"title":"移除配料","message":"确定要移除配料 {name} 吗?"},"takeaway":{"title":"移除外带","message":"确定要移除 {name} 吗?"},"unit":{"title":"移除单位","message":"确定要移除单位 {name} 吗?"},"variant":{"title":"移除规格","message":"确定要移除 {name} 吗?"}}},"validation":{"required":"{field} 为必填项","min_max":"最小选择数必须小于或等于最大选择数","product_title_required":"产品标题为必填项","min_value":"最小值为 {value}","max_value":"最大值为 {value}","field_required":"{field} 为必填项","required_field":"必填项","invalid_amount":"无效金额","max_default_items":"组中的默认产品数量不得多于 {max}","min_exceeds_available_items":"禁用可叠加时,最少选择 ({min}) 不能大于可用项目 ({available})","default_items_tip":"已选择 {count} / {max} 个默认产品,默认产品下单时将自动选中"},"file":{"accepts":"接受 .jpg、.jpeg、.png、.gif 格式"},"empty":{"no_group":{"title":"未找到组","subtitle":"您还未创建组"},"no_variant":{"title":"未找到规格","subtitle":"您还没创建任何规格"}}},"category":{"title":"分类","add":"添加分类","detail":"分类详情","name":"分类名称","empty":{"title":"将产品分组到分类中","subtitle":"使用分类来组织您的产品。","no_group":{"title":"未找到分组","subtitle":"看起来您还没有创建任何分组"}},"columns":{"title":"分类标题","products":"应用产品"},"dialog":{"remove":{"title":"移除分类","error":"无法删除此分类"},"add":{"title":"添加分类","name":{"label":"分类名称","placeholder":"在此输入分类名称","required":"分类名称为必填项"}}},"products":{"title":"产品","add":"添加产品","linked_count":"已链接 {count} 个产品","search":"搜索","columns":{"name":"产品名称","code":"代码"}},"selector":{"all":"全部","title":"分类:{label}"},"manager":{"dialog":{"add":{"title":"添加分类","action":"创建"},"update":{"title":"更新分类","action":"更新"}}}},"subcategory":{"title":"子分类","add":"添加子分类","detail":"子分类详情","name":"子分类名称","empty":{"title":"将产品分组到子分类中","subtitle":"使用子分类来组织您的产品。"},"columns":{"title":"子分类标题"},"dialog":{"remove":{"title":"删除子分类","error":"无法删除此子分类"},"add":{"title":"添加子分类","name":{"label":"子分类名称","placeholder":"在此输入子分类名称","required":"子分类名称为必填项"}}},"manager":{"dialog":{"add":{"title":"添加子分类","action":"创建"},"update":{"title":"更新子分类","action":"更新"}}}},"variant":{"title":"规格","add":"添加规格","columns":{"name":"规格名称","options":"选项值","applied_products":"已应用产品"},"mobile":{"value":"值:{values}"},"empty":{"title":"添加规格","subtitle":"规格配置为商家提供自定义产品选项的功能。","no_variant":{"title":"未找到规格","subtitle":"看起来您还没有创建规格"}},"select":{"title":"选择规格","subtitle":"选择规格以应用更改"},"form":{"title":{"add":"添加规格","edit":"编辑规格"},"detail":"规格详情","name":{"label":"规格名称","placeholder":"杯型尺寸","helper":"为这组选项命名。例如,您可以将此选项组命名为杯型尺寸或糖度。","required":"规格名称为必填项"},"options":{"title":"选项值","placeholder":"选项","min_required":"至少需要 1 个选项","name_required":"选项名称为必填项"},"applied_product":"已应用产品"}},"unit":{"title":"单位","add":"添加单位","update":"更新单位","precision":"精度","precision_placeholder":"输入一个数字","empty":{"title":"添加您的第一个单位","subtitle":"单位用于指定您希望如何测量产品。"},"columns":{"name":"名称","symbol":"符号"},"measurement":{"add":"添加测量","title":"测量 {number}","name":"名称","symbol":"符号","conversion":"转换","preview":"1 {name} 等于 {value} {unit}","preview_label":"预览"}},"print_dept":{"title":"打印路线","add":"添加打印路线","update":"编辑打印路线","columns":{"name":"打印路线名称","products":"已应用产品"}},"sku":{"title":"配料","add":"添加配料","update":"更新配料","columns":{"code":"代码","name":"名称","unit":"单位"},"empty":{"no_unit":"未找到单位","subtitle":"添加单位以开始添加配料。"},"validation":{"code_used":"代码已被其他配料使用"},"errors":{"select_recipe_ingredient":"选择配方或配料以转换"},"convertible":{"label":"可转换","sublabel":"可从其他配方或配料转换","convert_to":"配方和配料转换为"}},"recipe":{"title":"配方","add":"添加配方","update":"更新配方","columns":{"name":"名称"},"validation":{"bind_required":"绑定至少一个配方或配料"},"table":{"columns":{"name":"名称","ingredients":"配料"},"search":{"placeholder":"搜索配方"}},"empty":{"title":"添加您的第一个配方","subtitle":"创建配方以标准化您的食品制备流程","action":"添加配方"},"actions":{"add":"添加配方"}},"serving_sequence":{"title":"上菜顺序","add":"添加顺序","update":"更新顺序","columns":{"name":"顺序名称"},"empty":{"title":"没有上菜顺序","subtitle":"设置订单顺序,以确保用餐体验流畅有序。"}},"group":{"title":"组","add":"添加组","update":"更新组","form":{"tagging":{"title":"标签","subtitle":"通过标签对组进行分组,以简化报告和管理"}},"option":{"title":"产品","subtitle":"未选择的变体的 orderFrom 会被设置为 None","link_products":"链接产品","add_option":"添加选项","product_title":"名称","product_title_required":"产品标题为必填项","price":"价格 ({symbol})","inventory":"库存","variant":"规格","code":"代码","is_default":"默认","should_link_at_least_one_variant":"至少需要链接\\"{name}\\"的一个规格"},"types":{"normal":"正常","product":"产品","dynamic":"动态"},"select":{"title":"选择组","subtitle":"选择组以应用更改"},"empty":{"title":"未找到组","subtitle":"看起来您还没有添加附加组。"},"search":{"placeholder":"搜索组"},"type":{"title":"组:{type} 类型","all":"所有类型","normal":"正常类型","product":"产品类型","dynamic":"动态类型"},"list":{"items_linked":"{count} 个项目已链接","products_linked":"{count} 个产品已链接","columns":{"name":"组名称","products":"产品","type":"类型","applied_products":"已应用产品"},"types":{"normal":"正常","product":"产品","dynamic":"动态"},"variants":"{ count } 种规格","more_items":"与其他 { count } 个"},"actions":{"add":"添加组","duplicate":{"title":"复制组","message":"您确定要复制 {name} 吗?"},"apply_product":"应用产品","duplicate_action":"复制"},"dialogs":{"delete":{"title":"删除组","message":"您确定要删除 {name} 吗?","unlink_warning":"以下 {count} 个项目将被取消链接:"},"update":{"title":"更新组"}},"validation":{"name_duplicate":"组名称已存在"}},"migrate":{"title":"迁移到新版本","description":"您想迁移到新版本吗?一旦迁移,将无法恢复到旧版本。","message":"将您的菜单迁移到新版本,以享受更多功能。新菜单的内容将与当前相同。","notification":{"title":"新版本的菜单已发布!","description":"将当前菜单版本迁移到最新版本,以享受更多功能,例如产品顺序分发、上菜顺序、调度器等!您的内容和当前设置将被保留。"},"errors":{"no_restaurant":"至少需要一个餐厅才能迁移","pos_version":"升级 POS 到 V{version} 以使用新菜单:{restaurants}"}},"scheduler":{"title":"调度器","select":{"title":"选择调度器","all_time":"全天"},"empty":{"title":"未找到调度器","subtitle":"添加调度器以安排产品显示时间。","action":"添加调度器"},"table":{"columns":{"name":"调度器名称","repeat":"重复","period":" 时段","products":"应用产品"},"products_linked":"{count} 个项目已链接","search":{"placeholder":"搜索调度器"}},"repeat":{"daily":"每日","weekdays":"工作日","weekends":"周末","except":"每日除外 {day}","range":"{start} 到 {end}"},"days":{"monday":"周一","tuesday":"周二","wednesday":"周三","thursday":"周四","friday":"周五","saturday":"周六","sunday":"周日"},"dialog":{"add":{"title":"添加调度器","action":"添加"},"update":{"title":"更新调度器","action":"更新"},"sections":{"detail":{"title":"调度器详情","name":{"label":"调度器名称","placeholder":"占位符","required":"必填项"}},"availability":{"title":"可用性","daily":"每日","weekly":"每周"},"period":{"title":"启用时段","all_day":"全天","custom":"自定义时段","add":"添加时段","overlap":"时段不能重叠或相接。请调整时段设置,确保各时段之间有间隔。"},"autolink":{"title":"自动链接产品","label":"自动链接产品","sublabel":"根据过滤器自动链接产品","all_items":"自动链接所有项目","filter_message":"自动链接符合以下过滤条件的项目。","tooltip":"您可以在过滤值中使用通配符('*' 用于任何字符,'$' 用于任何数字字符)。例如,A*1 匹配 A1、AG1、AC51,但不匹配 A2、B1、C9、A$ 匹配 A1、A11、A124,但不匹配 AQ1、AG1、AC"},"filter":{"add":"添加过滤器","matches":"匹配","or":"或","types":{"code":"代码","category":"分类"},"placeholder":{"category":"选择分类"}},"products":{"title":"应用产品","link":"链接产品"}},"actions":{"cancel":"取消"}},"dialogs":{"remove":{"title":"移除调度器","message":"您确定要移除调度器 {name} 吗?"}}},"revert":{"title":"恢复菜单","description":"将 {name} 的菜单恢复到上次发布的版本。如果它不在上次发布的版本中,则将外送目录设置为主目录。","labels":{"restaurant":"餐厅","revert_to":"恢复到","default":"默认","pos_takeaway":"POS 外带","pickup":"自取","additional_catalogs":"附加目录"}},"remy":{"title":"Remy","description":"您的 AI 助手","actions":{"start":"与 Remy 开始","close":"关闭 Remy"},"messages":{"welcome":"你好!我是 Remy,您的 AI 助手。今天我能为您做什么?","thinking":"正在思考...","error":"抱歉,我遇到了错误。请再试一次。"}},"picker":{"title":"选择 {type}","search":"搜索 {type}","no_results":"未找到 {type}","selected":"{count} 已选择"},"apply_product":{"title":"应用产品","link":{"title":"链接产品","subtitle":"链接产品以应用更改"},"table":{"category_count":"{name} ({count})","inventory":"库存","value":"值:{values}"}},"catalog":{"title":"目录","detail":"目录详情","main":"主产品","form":{"name":"目录名称","tax":{"title":"税计算","auto":{"label":"自动","sublabel":"所有价格默认排除,当通过外送公司订购时将自动变为含税"},"manual":{"label":"手动","sublabel":"您可以为此目录指定自己的税计算"},"inclusive":"{code} 包含"},"link":{"title":"链接产品配置","auto_link":{"label":"自动链接项目","sublabel":"自动将产品链接至主目录以供可用性"},"options":{"all":"可供所有人使用","pos_only":"仅在 POS 上订购"}},"markup":{"title":"价格加价配置","auto":{"label":"自动加价价格","sublabel":"自动加价价格适用于目录、组和调度"},"add":"添加加价配置","config":"配置 {number}","percentage":"加价百分比:{value}%","products":"{count} 个产品已链接","all_items":"适用于所有项目"},"restaurant_attributes_title":"餐厅属性"},"validation":{"name_used":"目录名称已使用","name_required":"目录名称必填"},"edit":{"back":"返回目录","export":"导出","import":"导入","link_product":"链接产品","apply_scheduler":"应用调度器","tabs":{"product":"产品","category":"分类","group":"组","takeaway":"外带","setting":"设置"},"scheduler":{"remove":{"title":"移除调度器","message":"您确定要移除调度器 {name} 吗?"}}},"usage":{"title":"目录概览","tax_calculation":"税计算","products":"{count} 个产品","restaurant":"餐厅","usage":"使用"},"table":{"columns":{"title":"目录标题","tax_calculation":"税计算","auto_link":"自动链接项目"}},"empty":{"title":"构建您的菜单目录","subtitle":"使用目录组织菜单。添加产品、设置价格并根据用餐、外带或外送进行定制。"},"actions":{"add":"添加目录","view_usage":"目录概览"},"dialogs":{"remove":{"title":"移除目录","message":"您确定要移除 {name} 吗?","error":"目录被 {restaurants} 家餐厅使用"}}},"currency":{"input":{"field":"字段"}},"order":{"from":{"options":{"all":"可供所有人使用","pos_only":"仅在 POS 上订购","none":"无"}}},"inventory":{"title":"库存","subtitle":"调整配料并自定义产品配方","columns":{"product_name":"产品名称","ingredient":"配料","recipe":"配方"},"status":{"sku_linked":"已链接 {count} 个配料","recipe_linked":"已链接 {count} 个配方","not_set":"未设置"},"dialog":{"title":"{name} 库存"},"form":{"title":"库存","product_name":"产品名称"},"binding":{"recipe":{"title":"配方","columns":{"name":"配方","amount":"数量"}},"ingredient":{"title":"配料","columns":{"name":"配料","amount":"数量","unit":"单位"},"select_unit":"选择单位","loop_warning":"哎呀!检测到循环。请验证或删除它。"},"link":{"title":"链接 {type}","recipe":"配方","ingredient":"配料"}}},"link_product":{"title":"应用产品","rules":{"title":"链接产品规则","section_title":"按规则配置高级链接","order_from":"可点单渠道","restaurant_filter":"餐厅筛选","restaurant_custom_attributes_filter":"餐厅标签筛选","item_filter":"产品筛选","item_custom_attributes_filter":"产品标签筛选","add_rule":"添加规则","hint":"根据餐厅标签与产品的主目录默认属性将产品链接到餐厅(忽略子目录覆写)。"}},"catalog_scheduler":{"title":"更新产品来源","subtitle":"选择目录和调度器以更新产品"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"添加加价配置","update":"更新加价配置"},"fields":{"percentage":{"label":"加价百分比","placeholder":"0","required":"加价百分比必填"}},"options":{"all":"适用于所有产品","custom":"自定义产品"},"products":{"link":"链接产品","count":"{count} 个产品已链接"}}},"import":{"dialog":{"title":"导入产品","subtitle":"上传需要导入的文档","info":"请不要更改原始模板中的任何标题行,否则导入将失败。","fields":{"type":"菜单类型","file":{"replace":"替换文件"}},"actions":{"import":"导入"},"errors":{"select_file":"请选择要导入的文件"},"button":{"label":"添加文件"}}},"product":{"form":{"title":{"add":"添加产品","update":"更新产品"},"summary":{"title":"产品摘要","fields":{"code":"产品代码","name":"产品名称","category":"分类","order_from":"下单来源","selling_price":"销售价格","tax":"税","inventory":"库存","takeaway":"外带"}},"sections":{"general":{"title":"通用设置","description":"使用不同的通用设置"},"tagging":{"title":"标签","subtitle":"通过标签对产品进行分组,以简化报告和管理"},"price":{"title":"更新价格","description":"使用不同的价格设置"},"print":{"title":"更新打印","description":"使用不同的打印设置"},"variant":{"title":"更新规格","description":"使用不同的规格设置"},"group":{"title":"更新组","description":"使用不同的组设置"},"inventory":{"title":"更新库存","description":"使用不同的库存设置"},"takeaway":{"title":"更新外带","description":"使用不同的外带设置"}},"detail":{"title":"产品详情","fields":{"code":{"label":"产品代码","placeholder":"无代码"},"name":{"label":"产品名称","required":"名称必填","duplicate_warning":"此产品与 {count} 其他项目共享相同名称。它们将在报告中作为一种产品分组。"},"description":{"label":"描述","optional":"(可选)","placeholder":"无描述"}},"category":{"label":"分类","label_singular":"分类","required":"分类必填","placeholder":"选择分类以结构化您的菜单","add_new":"添加新分类","add_first":"请先添加产品分类","options":{"product":{"label":"作为产品或附加项销售","sublabel":"产品可单独销售,也可作为附加项销售"},"addon":{"label":"仅作为附加项销售","sublabel":"产品将作为附加项出现"}}},"subcategory":{"label":"子分类","required":"子分类为必填项","add_new":"添加新子分类"},"path":{"label":"子分类 - 菜单路径","placeholder":"选择子分类以结构化您的菜单,例如:咖啡/拿铁","helperText":"添加子类别以结构化您的菜单"},"order_from":{"label":"下单来源","default":"跟随主目录"}},"group":{"title":"组","subtitle":"为您的产添加组以作为套餐销售","add":"添加组","circularError":"检测到循环链接,组 {groupName} 已链接到产品 {productName}","columns":{"title":"组标题","type":"类型"}},"price":{"title":"价格","fields":{"selling_price":{"label":"销售价格","required":"价格必填"},"tax":{"label":"税选项不可用","label_with_code":"{code}(适用于餐厅配置 {code} 已设置)"}},"settings":{"title":"价格设置","open_price":{"label":"开放价格","sublabel":"允许在不获得许可的情况下调整价格"},"sell_by_unit":{"label":"按单位销售","sublabel":"按特定单位(重量、长度等)销售产品。","per_unit":{"label":"每","placeholder":"输入数量","required":"每单位必填","min":"每单位必须大于 0"},"unit":{"placeholder":"输入单位","required":"单位必填"}},"track_costing":{"label":"跟踪成本"},"min_price":{"label":"在应用折扣后有最低价格"}}},"print":{"title":"打印","config":{"label":"打印配置","group_parent":{"label":"与父级组","sublabel":"在作为附加项提供时打印此产品及其父级"}},"kds":{"label":"KDS 配置","options":{"all":{"label":"一次性发送","description":"将产品一次性发送至所有部门,以加快准备速度"},"sequential":{"label":"顺序分发","description":"将产品按顺序发送至每个部门,逐步准备"}}},"routes":{"label":"链接路线","add":"添加路线"}},"takeaway":{"title":"外带","subtitle":"选择外带费用以添加到产品中","columns":{"variant":"产品 & 规格","product":"产品","takeaway":"外带"},"options":{"follows_main":"跟随主目录","no_preset":"没有预设外带","add_new":"添加新外带"}},"variant":{"title":"规格","subtitle":"添加选项,如大小、颜色或类型","add":"添加规格","columns":{"variant":"规格","code":"代码","order_from":"下单来源","price":"价格","min_price":"最低价格"},"validation":{"max_variants":"您只能添加 {max} 个规格"},"placeholders":{"no_code":"无代码","follow_general":"跟随通用"}}},"empty":{"with_create":{"title":"添加您的产品","subtitle":"首先通过进货您的商店,为您的顾客提供他们喜爱的产品","action":"添加产品"},"no_scheduler":{"title":"没有产品链接","subtitle":"通过从主目录链接产品来添加此目录中的产品。"},"with_scheduler":{"title":"没有应用产品","subtitle":"通过从主目录链接产品来应用此调度器中的产品。"}},"table":{"columns":{"code":"代码","name":"产品名称","category":"分类","price":"价格 ({ currency })","order_from":"下单来源","tagging":"标签"},"category":{"all":"所有分类","collapse":"收起","expand":"+ {count} 个更多"},"tagging":{"all":"所有标签","collapse":"收起","expand":"+ {count} 个"},"bulk_edit":{"title":"批量编辑产品","actions":{"reset_all":"重置所有","save":"保存"}},"selection":{"count":"{count} 项已选择","actions":{"deselect_all":"取消选择所有","remove":"移除"}},"empty":{"title":"添加您的产品","subtitle":"首先通过进货您的商店,为您的顾客提供他们喜爱的产品","actions":{"add":"添加产品","import":"导入"}},"search":{"placeholder":"搜索产品"},"validation":{"name_required":"名称必填","price_min":"价格必须大于或等于 0"}}},"setting":{"catalog":{"title":"目录详情","fields":{"name":{"label":"目录名称","required":"目录名称必填","used":"目录名称已使用"}},"warnings":{"delivery":"此目录正在被外送公司和其他订单方法使用。这可能会导致价格计算错误,请审查每个目录使用的价格。"}},"tax":{"title":"税计算","modes":{"auto":{"label":"自动","sublabel":"所有价格默认排除,当通过外送公司订购时将自动变为含税"},"manual":{"label":"手动","sublabel":"您可以为此目录指定自己的税计算"}},"inclusive":"{code} 包含"},"link":{"title":"链接产品配置","auto_link":{"label":"自动链接项目","sublabel":"自动将产品链接至主目录以供可用性"},"options":{"all":"可供所有人使用","pos_only":"仅在 POS 上订购"}},"markup":{"title":"价格加价配置","auto_markup":{"label":"自动加价价格","sublabel":"自动加价价格适用于目录、组和调度"},"add":"添加加价配置","config":"配置 {number}","percentage":"加价百分比:{value}%","products":{"all":"适用于所有产品","linked":"{count} 个产品已链接"}}},"takeaway":{"actions":{"add":"添加外带"},"title":"外带","add":"添加外带","update":"更新外带","columns":{"title":"外带标题","price":"价格"},"placeholders":{"title":"在此输入外带标题"},"empty":{"title":"未找到外带","subtitle":"看起来您还没有创建外带。","action":"添加外带"},"table":{"columns":{"name":"外带名称","price":"价格 ({symbol})","products":"应用产品"},"items_linked":"{count} 项已链接","search":{"placeholder":"搜索外带"}}},"thumbnail":{"alt":{"default":"项目","with_name":"{name}"}},"cooking_guide":{"title":"烹饪指南","empty":{"title":"添加烹饪指南","subtitle":"烹饪指南配置工具使商家能够为多个分店的标准化烹饪说明。","action":"添加指南"},"table":{"columns":{"name":"指南名称","products":"已链接产品","steps":"{count} 步"},"search":{"placeholder":"搜索指南"},"mobile":{"products_linked":"{count} 个产品已链接"}},"dialogs":{"remove":{"title":"移除烹饪指南","message":{"prefix":"您确定要移除烹饪指南 ","products_using":"有 ","products_count":" 个产品使用此烹饪指南。 "}}},"actions":{"add":"添加指南","remove":"移除","cancel":"取消"},"dialog":{"add":{"title":"添加指南","action":"添加"},"update":{"title":"更新指南","action":"更新"},"sections":{"guide_detail":{"title":"指南详情","name":{"label":"指南名称","placeholder":"占位符","required":"必填项"}},"steps":{"title":"步骤","add":"添加步骤","empty":"尚未添加任何步骤"},"apply_product":{"title":"应用产品","link":"链接产品","products_linked":"{count} 个产品已链接","search":"搜索"}},"actions":{"cancel":"取消"}},"step_dialog":{"add":{"title":"添加步骤","action":"添加"},"update":{"title":"更新步骤","action":"更新"},"sections":{"variables":{"title":"变量","add":"添加变量","columns":{"key":"键","value":"值"},"placeholders":{"key":"键","value":"默认值"},"validation":{"required":"必填项","lowercase":"仅小写字母","duplicate":"重复键"}},"instruction":{"title":"指令"}},"actions":{"cancel":"取消","back":"返回"}},"step_override_dialog":{"title":"自定义烹饪步骤","columns":{"instructions":"指令","variables":"变量","value":"值"},"actions":{"save":"保存","cancel":"取消"}}},"ingredient":{"title":"配料","empty":{"title":"添加您的第一个配料","subtitle":"配料是食物和饮料的重要组成部分。管理它们涉及采购高质量产品、确保存储合规性以及维护安全标准,因为它们对风味和质量有显著影响。","action":"添加配料"},"table":{"columns":{"code":"代码","name":"名称","unit":"单位"},"search":{"placeholder":"搜索配料"},"mobile":{"code":"代码:{code}","unit":"单位:{unit}"}},"actions":{"add":"添加配料"}},"print_route":{"title":"打印路线","empty":{"title":"未找到路线","subtitle":"根据您的打印目的地进行定制,以确保高效的订单管理。","action":"添加路线"},"table":{"columns":{"name":"打印路线名称","products":"已链接产品","products_count":"{count} 个产品"},"search":{"placeholder":"搜索路线"},"mobile":{"products_linked":"{count} 个产品已链接"}},"dialogs":{"remove":{"title":"移除打印路线","message":{"prefix":"您确定要移除打印路线吗? ","products_using":"有 ","products_count":" 个产品使用此打印路线。 "}}},"actions":{"add":"添加路线","remove":"移除","cancel":"取消"},"department_dialog":{"add":{"title":"添加路线","action":"添加"},"update":{"title":"更新路线","action":"更新"},"sections":{"route_detail":{"title":"路线详情","name":{"label":"路线名称","placeholder":"占位符","required":"必填项"}},"link_product":{"title":"链接产品","link":"链接产品","products_linked":"{count} 个产品已链接","search":"搜索"}},"actions":{"cancel":"取消"}}},"products":{"title":"产品","actions":{"export":"导出","import":"导入","add":"添加产品","link":"链接产品","apply_scheduler":"应用调度器"}},"productInternalTools":{"title":"产品内部工具"},"publish":{"title":"发布","table":{"columns":{"restaurant":"餐厅","default":"默认","pos_takeaway":"POS 外带","pickup":"自取","version":"版本"},"search":{"placeholder":"搜索"},"status":{"latest":"最新","outdated":"已过时"}},"empty":{"title":"创建餐厅","subtitle":"您还没有创建任何餐厅。添加餐厅以开始发布菜单","action":"创建餐厅"},"actions":{"publish":"发布","publish_all":"发布所有","refresh":"刷新","revert":"恢复菜单"},"labels":{"main_version":"主版本:{version}","catalog":{"main":"主","invalid":"无效目录"}},"update_catalog_dialog":{"title":"更新目录","sections":{"default":{"label":"默认目录","use_default":"主"},"pos_takeaway":{"label":"POS 外带目录"},"pickup":{"label":"自取目录"},"additional":{"title":"附加目录","subtitle":"附加目录可以用于桌号和外送"}},"actions":{"update":"更新","cancel":"取消"}}},"tax_setting":{"title":"税设置"},"menu_setting":{"title":"菜单设置","fields":{"low_stock":{"not_set":"未设置","must_be_integer":"值必须为整数","title":"在线点单的产品阈值","subtitle":"当库存低于此限制时禁用在线点单","helper_text":"如果库存达到或低于此数量,产品将被提示从在线点单中移除","updated":"菜单设置已更新"}},"tabs":{"menu_configuration":"菜单配置","price_group":"价格组","link_product_rule_groups":"关联产品规则组"}},"rule_groups":{"title":"关联产品规则组","description":"管理基于餐厅和产品属性的产品关联规则组","create_group":"创建规则组","edit_group":"编辑规则组","saved_successfully":"规则组设置已成功保存","search_placeholder":"搜索规则组...","table":{"columns":{"name":"名称","description":"描述","rules_count":"规则数量"}},"form":{"basic_info":"基本信息","name":"名称","name_placeholder":"输入规则组名称","description":"描述","description_placeholder":"输入规则组描述","rules":"规则","rules_description":"为此组配置餐厅和产品规则"},"validation":{"name_required":"名称为必填项","at_least_one_rule_required":"至少需要一个规则"},"delete_dialog":{"title":"删除规则组","message":"您确定要删除'{name}'吗?此操作无法撤销。","success":"规则组删除成功"}},"price_tier":{"price_group":"价格组","description":"设置不同价格组以应用于多个目录","add_price_group":"添加价格组","add_price_group_success":"价格组创建成功","group_title":"组标题","price_group_description":"当前目录已链接到价格组。请在主目录中管理价格。","delete_dialog":{"title":"删除价格组","message":"您确定要删除价格组 {name} 吗?","success":"价格组删除成功"},"settings_table":{"columns":{"name":"名称"}},"form":{"table":{"columns":{"name":"组标题","price":"销售价格"}}},"price_tier_config":"价格组设置","link_price_tier":"链接价格层级","link_price_group":"链接价格组","link_price_group_description":"选择一个价格组以应用于目录。如果没有链接,将使用基础价格。","not_linked":"未链接","price_group_rule":"价格组规则","price_group_rule_description":"链接价格组到具有特定标签的餐厅。","restaurant_filter":"餐厅过滤器"},"tree_editor":{"title":"菜单管理","actions":{"add_category":"添加新分类","expand_all":"展开所有","collapse_all":"折叠所有","add_product":"添加产品","delete_product":"删除产品","edit_category":"编辑","delete_category":"删除分类","link_category_to_catalog":"链接分类到目录","link_product_to_catalog":"链接产品到目录","unlink_product_from_catalog":"取消链接产品"},"labels":{"main_catalog":"主目录","all_time":"所有时间","products":"产品: {count}","variants":"规格: {count}","groups":"组: {count}","addon":"附加项","unknown":"未知","please_select_a_product_to_edit":"请选择一个产品进行编辑","no_items":"没有产品可显示"}}}`), ui = {
|
|
1814
1814
|
menu: ci
|
|
1815
|
+
}, di = /* @__PURE__ */ JSON.parse(`{"title":"菜單","common":{"actions":{"update":"更新","cancel":"取消","add":"添加","search":"搜索","delete":"刪除","remove":"移除","deselect_all":"取消選擇","move":"移動","edit":"編輯","download":"下載","save":"保存","confirm":"確認","yes":"是","no":"否","link":"鏈接","migrate":"遷移","add_new_variant":"添加新規格","add_group":"添加組","apply_product":"應用產品","link_product":"鏈接產品","deselect":"取消選擇"},"labels":{"name":"名稱","detail":"詳情","items_linked":"{count} 個項目已鏈接","search_placeholder":"搜索 {type}","symbol":"符號","products_linked":"{count} 個產品已鏈接","product_linked_singular":"{count} 個產品已鏈接","product_linked_plural":"{count} 個產品已鏈接","enter_name":"輸入名稱","product":"產品","selected_items":"{count} 個項目已選擇","all":"全部","category":"分類:{name}","group_name":"組名稱","min_select":"最少選擇","max_select":"最多選擇","group_type":"組類型","stackable":"可堆疊","stackable_sublabel":"顧客可以多次選擇相同選項","configuration":"配置","variant":"規格","product_title":"產品標題","price":"價格 ({symbol})","order_from":"下單來源","inventory":"庫存","search_groups":"搜索組","search_variants":"搜索規格","product_count":"{count} 個產品已應用","search_product":"搜索產品","product_image":"產品圖片","optional":"(可選)","products_selected":"{count} 個產品已選擇","items_selected":"{count} 個項目已選擇","catalog":"目錄","scheduler":"調度器","all_time":"全天","main":"主","unknown":"未知","all_day":"全天","summary":"概覽","scheduler_title":"調度器:{label}","link_product_title":"鏈接產品","products_count":"已選 {count} 個產品","search":"搜索","status":"狀態"},"dialog":{"remove_confirmation":"確定要移除 {name} 嗎?","change_type":{"title":"更改附加組類型","message":"更改附加組類型將清除所有產品。確定要繼續嗎?"},"remove":{"catalog":{"title":"移除目錄","message":"確定要移除 {name} 嗎?"},"category":{"title":"移除分類","message":"確定要移除 {name} 嗎?"},"subcategory":{"title":"移除子分類","message":"確定要移除 {name} 嗎?"},"product":{"title":"移除產品","message":"確定要移除 {name} 嗎?","success":"產品已成功移除。"},"recipe":{"title":"移除配方","message":"確定要移除配方 {name} 嗎?"},"ingredient":{"title":"移除配料","message":"確定要移除配料 {name} 嗎?"},"takeaway":{"title":"移除外帶","message":"確定要移除 {name} 嗎?"},"unit":{"title":"移除單位","message":"確定要移除單位 {name} 嗎?"},"variant":{"title":"移除規格","message":"確定要移除 {name} 嗎?"}}},"validation":{"required":"{field} 為必填項","min_max":"最小選擇數必須小於或等於最大選擇數","product_title_required":"產品標題為必填項","min_value":"最小值為 {value}","max_value":"最大值為 {value}","field_required":"{field} 為必填項","required_field":"必填項","invalid_amount":"無效金額","max_default_items":"組中的默認產品數量不得多於 {max}","min_exceeds_available_items":"禁用可疊加時,最少選擇 ({min}) 不能大於可用項目 ({available})","default_items_tip":"已選擇 {count} / {max} 個默認產品,默認產品下單時將自動選中"},"file":{"accepts":"接受 .jpg、.jpeg、.png、.gif 格式"},"empty":{"no_group":{"title":"未找到組","subtitle":"您還未創建組"},"no_variant":{"title":"未找到規格","subtitle":"您還沒創建任何規格"}}},"category":{"title":"分類","add":"添加分類","detail":"分類詳情","name":"分類名稱","empty":{"title":"將產品分組到分類中","subtitle":"使用分類來組織您的產品。","no_group":{"title":"未找到分組","subtitle":"看起來您還沒有創建任何分組"}},"columns":{"title":"分類標題","products":"應用產品"},"dialog":{"remove":{"title":"移除分類","error":"無法刪除此分類"},"add":{"title":"添加分類","name":{"label":"分類名稱","placeholder":"在此輸入分類名稱","required":"分類名稱為必填項"}}},"products":{"title":"產品","add":"添加產品","linked_count":"已鏈接 {count} 個產品","search":"搜索","columns":{"name":"產品名稱","code":"代碼"}},"selector":{"all":"全部","title":"分類:{label}"},"manager":{"dialog":{"add":{"title":"添加分類","action":"創建"},"update":{"title":"更新分類","action":"更新"}}}},"subcategory":{"title":"子分類","add":"添加子分類","detail":"子分類詳情","name":"子分類名稱","empty":{"title":"將產品分組到子分類中","subtitle":"使用子分類來組織您的產品。"},"columns":{"title":"子分類標題"},"dialog":{"remove":{"title":"移除子分類","error":"無法刪除此子分類"},"add":{"title":"添加子分類","name":{"label":"子分類名稱","placeholder":"在此輸入子分類名稱","required":"子分類名稱為必填項"}}},"manager":{"dialog":{"add":{"title":"添加子分類","action":"創建"},"update":{"title":"更新子分類","action":"更新"}}}},"variant":{"title":"規格","add":"添加規格","columns":{"name":"規格名稱","options":"選項值","applied_products":"已應用產品"},"mobile":{"value":"值:{values}"},"empty":{"title":"添加規格","subtitle":"規格配置為商家提供自定義產品選項的功能。","no_variant":{"title":"未找到規格","subtitle":"看起來您還沒有創建規格"}},"select":{"title":"選擇規格","subtitle":"選擇規格以應用更改"},"form":{"title":{"add":"添加規格","edit":"編輯規格"},"detail":"規格詳情","name":{"label":"規格名稱","placeholder":"杯型尺寸","helper":"為這組選項命名。例如,您可以將此選項組命名為杯型尺寸或糖度。","required":"規格名稱為必填項"},"options":{"title":"選項值","placeholder":"選項","min_required":"至少需要 1 個選項","name_required":"選項名稱為必填項"},"applied_product":"已應用產品"}},"unit":{"title":"單位","add":"添加單位","update":"更新單位","precision":"精度","precision_placeholder":"輸入一個數字","empty":{"title":"添加您的第一個單位","subtitle":"單位用於指定您希望如何測量產品。"},"columns":{"name":"名稱","symbol":"符號"},"measurement":{"add":"添加測量","title":"測量 {number}","name":"名稱","symbol":"符號","conversion":"轉換","preview":"1 {name} 等於 {value} {unit}","preview_label":"預覽"}},"print_dept":{"title":"打印路線","add":"添加打印路線","update":"編輯打印路線","columns":{"name":"打印路線名稱","products":"已應用產品"}},"sku":{"title":"配料","add":"添加配料","update":"更新配料","columns":{"code":"代碼","name":"名稱","unit":"單位"},"empty":{"no_unit":"未找到單位","subtitle":"添加單位以開始添加配料。"},"validation":{"code_used":"代碼已被其他配料使用"},"errors":{"select_recipe_ingredient":"選擇配方或配料以轉換"},"convertible":{"label":"可轉換","sublabel":"可從其他配方或配料轉換","convert_to":"配方和配料轉換為"}},"recipe":{"title":"配方","add":"添加配方","update":"更新配方","columns":{"name":"名稱"},"validation":{"bind_required":"綁定至少一個配方或配料"},"table":{"columns":{"name":"名稱","ingredients":"配料"},"search":{"placeholder":"搜索配方"}},"empty":{"title":"添加您的第一個配方","subtitle":"創建配方以標準化您的食品製備流程","action":"添加配方"},"actions":{"add":"添加配方"}},"serving_sequence":{"title":"上菜順序","add":"添加順序","update":"更新順序","columns":{"name":"順序名稱"},"empty":{"title":"沒有上菜順序","subtitle":"設置訂單順序,以確保用餐體驗流暢有序。"}},"group":{"title":"組","add":"添加組","update":"更新組","form":{"tagging":{"title":"標籤","subtitle":"通過標籤對組進行分組,以簡化報告和管理"}},"option":{"title":"產品","subtitle":"未選擇的變體的 orderFrom 會被設置為 None","link_products":"鏈接產品","add_option":"添加選項","product_title":"名稱","product_title_required":"產品標題為必填項","price":"價格 ({symbol})","inventory":"庫存","variant":"規格","code":"代碼","is_default":"默認","should_link_at_least_one_variant":"至少需要鏈接\\"{name}\\"的一個規格"},"types":{"normal":"正常","product":"產品","dynamic":"動態"},"select":{"title":"選擇組","subtitle":"選擇組以應用更改"},"empty":{"title":"未找到組","subtitle":"看起來您還沒有添加附加組。"},"search":{"placeholder":"搜索組"},"type":{"title":"組:{type} 類型","all":"所有類型","normal":"正常類型","product":"產品類型","dynamic":"動態類型"},"list":{"items_linked":"{count} 個項目已鏈接","products_linked":"{count} 個產品已鏈接","columns":{"name":"組名稱","products":"產品","type":"類型","applied_products":"已應用產品"},"types":{"normal":"正常","product":"產品","dynamic":"動態"},"variants":"{ count } 種規格","more_items":"與其他 { count } 個"},"actions":{"add":"添加組","duplicate":{"title":"複製組","message":"您確定要複製 {name} 嗎?"},"apply_product":"應用產品","duplicate_action":"複製"},"dialogs":{"delete":{"title":"刪除組","message":"您確定要刪除 {name} 嗎?","unlink_warning":"以下 {count} 個項目將被取消連結:"},"update":{"title":"更新組"}},"validation":{"name_duplicate":"組名稱已存在"}},"migrate":{"title":"遷移到新版本","description":"您想遷移到新版本嗎?一旦遷移,將無法恢復到舊版本。","message":"將您的菜單遷移到新版本,以享受更多功能。新菜單的內容將與當前相同。","notification":{"title":"新版本的菜單已發佈!","description":"將當前菜單版本遷移到最新版本,以享受更多功能,例如產品順序分發、上菜順序、調度器等!您的內容和當前設置將被保留。"},"errors":{"no_restaurant":"至少需要一個餐廳才能遷移","pos_version":"升級 POS 到 V{version} 以使用新菜單:{restaurants}"}},"scheduler":{"title":"調度器","select":{"title":"選擇調度器","all_time":"全天"},"empty":{"title":"未找到調度器","subtitle":"添加調度器以安排產品顯示時間。","action":"添加調度器"},"table":{"columns":{"name":"調度器名稱","repeat":"重複","period":" 時段","products":"應用產品"},"products_linked":"{count} 個項目已鏈接","search":{"placeholder":"搜索調度器"}},"repeat":{"daily":"每日","weekdays":"工作日","weekends":"週末","except":"每日除外 {day}","range":"{start} 到 {end}"},"days":{"monday":"週一","tuesday":"週二","wednesday":"週三","thursday":"週四","friday":"週五","saturday":"週六","sunday":"週日"},"dialog":{"add":{"title":"添加調度器","action":"添加"},"update":{"title":"更新調度器","action":"更新"},"sections":{"detail":{"title":"調度器詳情","name":{"label":"調度器名稱","placeholder":"佔位符","required":"必填項"}},"availability":{"title":"可用性","daily":"每日","weekly":"每週"},"period":{"title":"啓用時段","all_day":"全天","custom":"自定義時段","add":"添加時段","overlap":"時段不能重疊或相接。請調整時段設置,確保各時段之間有間隔。"},"autolink":{"title":"自動鏈接產品","label":"自動鏈接產品","sublabel":"根據過濾器自動鏈接產品","all_items":"自動鏈接所有項目","filter_message":"自動鏈接符合以下過濾條件的項目。","tooltip":"您可以在過濾值中使用通配符('*' 用於任何字符,'$' 用於任何數字字符)。例如,A*1 匹配 A1、AG1、AC51,但不匹配 A2、B1、C9、A$ 匹配 A1、A11、A124,但不匹配 AQ1、AG1、AC"},"filter":{"add":"添加過濾器","matches":"匹配","or":"或","types":{"code":"代碼","category":"分類"},"placeholder":{"category":"選擇分類"}},"products":{"title":"應用產品","link":"鏈接產品"}},"actions":{"cancel":"取消"}},"dialogs":{"remove":{"title":"移除調度器","message":"您確定要移除調度器 {name} 嗎?"}}},"revert":{"title":"恢復菜單","description":"將 {name} 的菜單恢復到上次發佈的版本。如果它不在上次發佈的版本中,則將外送目錄設置為主目錄。","labels":{"restaurant":"餐廳","revert_to":"恢復到","default":"默認","pos_takeaway":"POS 外帶","pickup":"自取","additional_catalogs":"附加目錄"}},"remy":{"title":"Remy","description":"您的 AI 助手","actions":{"start":"與 Remy 開始","close":"關閉 Remy"},"messages":{"welcome":"你好!我是 Remy,您的 AI 助手。今天我能為您做什麼?","thinking":"正在思考...","error":"抱歉,我遇到了錯誤。請再試一次。"}},"picker":{"title":"選擇 {type}","search":"搜索 {type}","no_results":"未找到 {type}","selected":"{count} 已選擇"},"apply_product":{"title":"應用產品","link":{"title":"鏈接產品","subtitle":"鏈接產品以應用更改"},"table":{"category_count":"{name} ({count})","inventory":"庫存","value":"值:{values}"}},"catalog":{"title":"目錄","detail":"目錄詳情","main":"主產品","form":{"name":"目錄名稱","tax":{"title":"税計算","auto":{"label":"自動","sublabel":"所有價格默認排除,當通過外送公司訂購時將自動變為含税"},"manual":{"label":"手動","sublabel":"您可以為此目錄指定自己的税計算"},"inclusive":"{code} 包含"},"link":{"title":"鏈接產品配置","auto_link":{"label":"自動鏈接項目","sublabel":"自動將產品鏈接至主目錄以供可用性"},"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購"}},"markup":{"title":"價格加價配置","auto":{"label":"自動加價價格","sublabel":"自動加價價格適用於目錄、組和調度"},"add":"添加加價配置","config":"配置 {number}","percentage":"加價百分比:{value}%","products":"{count} 個產品已鏈接","all_items":"適用於所有項目"},"restaurant_attributes_title":"餐廳屬性"},"validation":{"name_used":"目錄名稱已使用","name_required":"目錄名稱必填"},"edit":{"back":"返回目錄","export":"導出","import":"導入","link_product":"鏈接產品","apply_scheduler":"應用調度器","tabs":{"product":"產品","category":"分類","group":"組","takeaway":"外帶","setting":"設置"},"scheduler":{"remove":{"title":"移除調度器","message":"您確定要移除調度器 {name} 嗎?"}}},"usage":{"title":"目錄概覽","tax_calculation":"税計算","products":"{count} 個產品","restaurant":"餐廳","usage":"使用"},"table":{"columns":{"title":"目錄標題","tax_calculation":"税計算","auto_link":"自動鏈接項目"}},"empty":{"title":"構建您的菜單目錄","subtitle":"使用目錄組織菜單。添加產品、設置價格並根據用餐、外帶或外送進行定製。"},"actions":{"add":"添加目錄","view_usage":"目錄概覽"},"dialogs":{"remove":{"title":"移除目錄","message":"您確定要移除 {name} 嗎?","error":"目錄被 {restaurants} 家餐廳使用"}}},"currency":{"input":{"field":"字段"}},"order":{"from":{"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購","none":"無"}}},"inventory":{"title":"庫存","subtitle":"調整配料並自定義產品配方","columns":{"product_name":"產品名稱","ingredient":"配料","recipe":"配方"},"status":{"sku_linked":"已鏈接 {count} 個配料","recipe_linked":"已鏈接 {count} 個配方","not_set":"未設置"},"dialog":{"title":"{name} 庫存"},"form":{"title":"庫存","product_name":"產品名稱"},"binding":{"recipe":{"title":"配方","columns":{"name":"配方","amount":"數量"}},"ingredient":{"title":"配料","columns":{"name":"配料","amount":"數量","unit":"單位"},"select_unit":"選擇單位","loop_warning":"哎呀!檢測到循環。請驗證或刪除它。"},"link":{"title":"鏈接 {type}","recipe":"配方","ingredient":"配料"}}},"link_product":{"title":"應用產品","rules":{"title":"鏈接產品規則","section_title":"按規則配置高級鏈接","order_from":"可點單渠道","restaurant_filter":"餐廳篩選","restaurant_custom_attributes_filter":"餐廳標籤篩選","item_filter":"產品篩選","item_custom_attributes_filter":"產品標籤篩選","add_rule":"添加規則","hint":"根據餐廳標籤與產品主目錄的默認屬性將產品鏈接到餐廳(忽略子目錄覆寫)。"}},"catalog_scheduler":{"title":"更新產品來源","subtitle":"選擇目錄和調度器以更新產品"},"apply_products":{"category":{"count":"{selected}/{total}"}},"markup":{"dialog":{"title":{"add":"添加加價配置","update":"更新加價配置"},"fields":{"percentage":{"label":"加價百分比","placeholder":"0","required":"加價百分比必填"}},"options":{"all":"適用於所有產品","custom":"自定義產品"},"products":{"link":"鏈接產品","count":"{count} 個產品已鏈接"}}},"import":{"dialog":{"title":"導入產品","subtitle":"上傳需要導入的文檔","info":"請不要更改原始模板中的任何標題行,否則導入將失敗。","fields":{"type":"菜單類型","file":{"replace":"替換文件"}},"actions":{"import":"導入"},"errors":{"select_file":"請選擇要導入的文件"},"button":{"label":"添加文件"}}},"product":{"form":{"title":{"add":"添加產品","update":"更新產品"},"summary":{"title":"產品摘要","fields":{"code":"產品代碼","name":"產品名稱","category":"分類","order_from":"下單來源","selling_price":"銷售價格","tax":"税","inventory":"庫存","takeaway":"外帶"}},"sections":{"general":{"title":"通用設置","description":"使用不同的通用設置"},"tagging":{"title":"標籤","subtitle":"通過標籤對產品進行分組,以簡化報告和管理"},"price":{"title":"更新價格","description":"使用不同的價格設置"},"print":{"title":"更新打印","description":"使用不同的打印設置"},"variant":{"title":"更新規格","description":"使用不同的規格設置"},"group":{"title":"更新組","description":"使用不同的組設置"},"inventory":{"title":"更新庫存","description":"使用不同的庫存設置"},"takeaway":{"title":"更新外帶","description":"使用不同的外帶設置"}},"detail":{"title":"產品詳情","fields":{"code":{"label":"產品代碼","placeholder":"無代碼"},"name":{"label":"產品名稱","required":"名稱必填","duplicate_warning":"此產品與 {count} 其他項目共享相同名稱。它們將在報告中作為一種產品分組。"},"description":{"label":"描述","optional":"(可選)","placeholder":"無描述"}},"category":{"label":"分類","label_singular":"分類","required":"分類必填","placeholder":"選擇分類以結構化您的菜單","add_new":"添加新分類","add_first":"請先添加產品分類","options":{"product":{"label":"作為產品或附加項銷售","sublabel":"產品可單獨銷售,也可作為附加項銷售"},"addon":{"label":"僅作為附加項銷售","sublabel":"產品將作為附加項出現"}}},"subcategory":{"label":"子分類","required":"子分類為必填項","add_new":"添加新子分類"},"path":{"label":"子分類 - 菜單路徑","placeholder":"選擇子分類以建立您的菜單結構,例如:咖啡/拿鐵","helperText":"添加子類別以結構化您的菜單"},"order_from":{"label":"下單來源","default":"跟隨主目錄"}},"group":{"title":"組","subtitle":"為您的產添加組以作為套餐銷售","add":"添加組","circularError":"檢測到循環鏈接,組 {groupName} 已鏈接到產品 {productName}","columns":{"title":"組標題","type":"類型"}},"price":{"title":"價格","fields":{"selling_price":{"label":"銷售價格","required":"價格必填"},"tax":{"label":"税選項不可用","label_with_code":"{code}(適用於餐廳配置 {code} 已設置)"}},"settings":{"title":"價格設置","open_price":{"label":"開放價格","sublabel":"允許在不獲得許可的情況下調整價格"},"sell_by_unit":{"label":"按單位銷售","sublabel":"按特定單位(重量、長度等)銷售產品。","per_unit":{"label":"每","placeholder":"輸入數量","required":"每單位必填","min":"每單位必須大於 0"},"unit":{"placeholder":"輸入單位","required":"單位必填"}},"track_costing":{"label":"跟蹤成本"},"min_price":{"label":"在應用折扣後有最低價格"}}},"print":{"title":"打印","config":{"label":"打印配置","group_parent":{"label":"與父級組","sublabel":"在作為附加項提供時打印此產品及其父級"}},"kds":{"label":"KDS 配置","options":{"all":{"label":"一次性發送","description":"將產品一次性發送至所有部門,以加快準備速度"},"sequential":{"label":"順序分發","description":"將產品按順序發送至每個部門,逐步準備"}}},"routes":{"label":"鏈接路線","add":"添加路線"}},"takeaway":{"title":"外帶","subtitle":"選擇外帶費用以添加到產品中","columns":{"variant":"產品 & 規格","product":"產品","takeaway":"外帶"},"options":{"follows_main":"跟隨主目錄","no_preset":"沒有預設外帶","add_new":"添加新外帶"}},"variant":{"title":"規格","subtitle":"添加選項,如大小、顏色或類型","add":"添加規格","columns":{"variant":"規格","code":"代碼","order_from":"下單來源","price":"價格","min_price":"最低價格"},"validation":{"max_variants":"您只能添加 {max} 個規格"},"placeholders":{"no_code":"無代碼","follow_general":"跟隨通用"}}},"empty":{"with_create":{"title":"添加您的產品","subtitle":"首先通過進貨您的商店,為您的顧客提供他們喜愛的產品","action":"添加產品"},"no_scheduler":{"title":"沒有產品鏈接","subtitle":"通過從主目錄鏈接產品來添加此目錄中的產品。"},"with_scheduler":{"title":"沒有應用產品","subtitle":"通過從主目錄鏈接產品來應用此調度器中的產品。"}},"table":{"columns":{"code":"代碼","name":"產品名稱","category":"分類","price":"價格 ({ currency })","order_from":"下單來源","tagging":"標籤"},"category":{"all":"全部分類","collapse":"收起","expand":"+ 還有 {count} 個"},"tagging":{"all":"全部標籤","collapse":"收起","expand":"+ {count} 個"},"bulk_edit":{"title":"批量編輯產品","actions":{"reset_all":"重置所有","save":"保存"}},"selection":{"count":"{count} 項已選擇","actions":{"deselect_all":"取消選擇所有","remove":"移除"}},"empty":{"title":"添加您的產品","subtitle":"首先通過進貨您的商店,為您的顧客提供他們喜愛的產品","actions":{"add":"添加產品","import":"導入"}},"search":{"placeholder":"搜索產品"},"validation":{"name_required":"名稱必填","price_min":"價格必須大於或等於 0"}}},"setting":{"catalog":{"title":"目錄詳情","fields":{"name":{"label":"目錄名稱","required":"目錄名稱必填","used":"目錄名稱已使用"}},"warnings":{"delivery":"此目錄正在被外送公司和其他訂單方法使用。這可能會導致價格計算錯誤,請審查每個目錄使用的價格。"}},"tax":{"title":"税計算","modes":{"auto":{"label":"自動","sublabel":"所有價格默認排除,當通過外送公司訂購時將自動變為含税"},"manual":{"label":"手動","sublabel":"您可以為此目錄指定自己的税計算"}},"inclusive":"{code} 包含"},"link":{"title":"鏈接產品配置","auto_link":{"label":"自動鏈接項目","sublabel":"自動將產品鏈接至主目錄以供可用性"},"options":{"all":"可供所有人使用","pos_only":"僅在 POS 上訂購"}},"markup":{"title":"價格加價配置","auto_markup":{"label":"自動加價價格","sublabel":"自動加價價格適用於目錄、組和調度"},"add":"添加加價配置","config":"配置 {number}","percentage":"加價百分比:{value}%","products":{"all":"適用於所有產品","linked":"{count} 個產品已鏈接"}}},"takeaway":{"actions":{"add":"添加外帶"},"title":"外帶","add":"添加外帶","update":"更新外帶","columns":{"title":"外帶標題","price":"價格"},"placeholders":{"title":"在此輸入外帶標題"},"empty":{"title":"未找到外帶","subtitle":"看起來您還沒有創建外帶。","action":"添加外帶"},"table":{"columns":{"name":"外帶名稱","price":"價格 ({symbol})","products":"應用產品"},"items_linked":"{count} 項已鏈接","search":{"placeholder":"搜索外帶"}}},"thumbnail":{"alt":{"default":"項目","with_name":"{name}"}},"cooking_guide":{"title":"烹飪指南","empty":{"title":"添加烹飪指南","subtitle":"烹飪指南配置工具使商家能夠為多個分店的標準化烹飪説明。","action":"添加指南"},"table":{"columns":{"name":"指南名稱","products":"已鏈接產品","steps":"{count} 步"},"search":{"placeholder":"搜索指南"},"mobile":{"products_linked":"{count} 個產品已鏈接"}},"dialogs":{"remove":{"title":"移除烹飪指南","message":{"prefix":"您確定要移除烹飪指南 ","products_using":"有 ","products_count":" 個產品使用此烹飪指南。 "}}},"actions":{"add":"添加指南","remove":"移除","cancel":"取消"},"dialog":{"add":{"title":"添加指南","action":"添加"},"update":{"title":"更新指南","action":"更新"},"sections":{"guide_detail":{"title":"指南詳情","name":{"label":"指南名稱","placeholder":"佔位符","required":"必填項"}},"steps":{"title":"步驟","add":"添加步驟","empty":"尚未添加任何步驟"},"apply_product":{"title":"應用產品","link":"鏈接產品","products_linked":"{count} 個產品已鏈接","search":"搜索"}},"actions":{"cancel":"取消"}},"step_dialog":{"add":{"title":"添加步驟","action":"添加"},"update":{"title":"更新步驟","action":"更新"},"sections":{"variables":{"title":"變量","add":"添加變量","columns":{"key":"鍵","value":"值"},"placeholders":{"key":"鍵","value":"默認值"},"validation":{"required":"必填項","lowercase":"僅小寫字母","duplicate":"重複鍵"}},"instruction":{"title":"指令"}},"actions":{"cancel":"取消","back":"返回"}},"step_override_dialog":{"title":"自定義烹飪步驟","columns":{"instructions":"指令","variables":"變量","value":"值"},"actions":{"save":"保存","cancel":"取消"}}},"ingredient":{"title":"配料","empty":{"title":"添加您的第一個配料","subtitle":"配料是食物和飲料的重要組成部分。管理它們涉及採購高質量產品、確保存儲合規性以及維護安全標準,因為它們對風味和質量有顯著影響。","action":"添加配料"},"table":{"columns":{"code":"代碼","name":"名稱","unit":"單位"},"search":{"placeholder":"搜索配料"},"mobile":{"code":"代碼:{code}","unit":"單位:{unit}"}},"actions":{"add":"添加配料"}},"print_route":{"title":"打印路線","empty":{"title":"未找到路線","subtitle":"根據您的打印目的地進行定製,以確保高效的訂單管理。","action":"添加路線"},"table":{"columns":{"name":"打印路線名稱","products":"已鏈接產品","products_count":"{count} 個產品"},"search":{"placeholder":"搜索路線"},"mobile":{"products_linked":"{count} 個產品已鏈接"}},"dialogs":{"remove":{"title":"移除打印路線","message":{"prefix":"您確定要移除打印路線嗎? ","products_using":"有 ","products_count":" 個產品使用此打印路線。 "}}},"actions":{"add":"添加路線","remove":"移除","cancel":"取消"},"department_dialog":{"add":{"title":"添加路線","action":"添加"},"update":{"title":"更新路線","action":"更新"},"sections":{"route_detail":{"title":"路線詳情","name":{"label":"路線名稱","placeholder":"佔位符","required":"必填項"}},"link_product":{"title":"鏈接產品","link":"鏈接產品","products_linked":"{count} 個產品已鏈接","search":"搜索"}},"actions":{"cancel":"取消"}}},"products":{"title":"產品","actions":{"export":"導出","import":"導入","add":"添加產品","link":"鏈接產品","apply_scheduler":"應用調度器"}},"productInternalTools":{"title":"產品內部工具"},"publish":{"title":"發佈","table":{"columns":{"restaurant":"餐廳","default":"默認","pos_takeaway":"POS 外帶","pickup":"自取","version":"版本"},"search":{"placeholder":"搜索"},"status":{"latest":"最新","outdated":"已過時"}},"empty":{"title":"創建餐廳","subtitle":"您還沒有創建任何餐廳。添加餐廳以開始發佈菜單","action":"創建餐廳"},"actions":{"publish":"發佈","publish_all":"發佈所有","refresh":"刷新","revert":"恢復菜單"},"labels":{"main_version":"主版本:{version}","catalog":{"main":"主","invalid":"無效目錄"}},"update_catalog_dialog":{"title":"更新目錄","sections":{"default":{"label":"默認目錄","use_default":"主"},"pos_takeaway":{"label":"POS 外帶目錄"},"pickup":{"label":"自取目錄"},"additional":{"title":"附加目錄","subtitle":"附加目錄可以用於桌號和外送"}},"actions":{"update":"更新","cancel":"取消"}}},"tax_setting":{"title":"税設置"},"menu_setting":{"title":"菜單設置","fields":{"low_stock":{"not_set":"未設置","must_be_integer":"值必須為整數","title":"在線點單的產品閾值","subtitle":"當庫存低於此限制時禁用在線點單","helper_text":"如果庫存達到或低於此數量,產品將被提示從在線點單中移除","updated":"菜單設置已更新"}},"tabs":{"menu_configuration":"菜單配置","price_group":"價格組","link_product_rule_groups":"關聯產品規則組"}},"rule_groups":{"title":"關聯產品規則組","description":"管理基於餐廳和產品屬性的產品關聯規則組","create_group":"創建規則組","edit_group":"編輯規則組","saved_successfully":"規則組設置已成功保存","search_placeholder":"搜索規則組...","table":{"columns":{"name":"名稱","description":"描述","rules_count":"規則數量"}},"form":{"basic_info":"基本信息","name":"名稱","name_placeholder":"輸入規則組名稱","description":"描述","description_placeholder":"輸入規則組描述","rules":"規則","rules_description":"為此組配置餐廳和產品規則"},"validation":{"name_required":"名稱為必填項","at_least_one_rule_required":"至少需要一個規則"},"delete_dialog":{"title":"刪除規則組","message":"您確定要刪除'{name}'嗎?此操作無法撤銷。","success":"規則組刪除成功"}},"price_tier":{"price_group":"價格組","description":"設置不同價格組以應用於多個目錄","add_price_group":"添加價格組","add_price_group_success":"價格組創建成功","group_title":"組標題","price_group_description":"當前目錄已鏈接到價格組。請在主目錄中管理價格。","delete_dialog":{"title":"刪除價格組","message":"您確定要刪除價格組 {name} 嗎?","success":"價格組刪除成功"},"settings_table":{"columns":{"name":"名稱"}},"form":{"table":{"columns":{"name":"組標題","price":"銷售價格"}}},"price_tier_config":"價格組設置","link_price_tier":"鏈接價格層級","link_price_group":"鏈接價格組","link_price_group_description":"選擇一個價格組以應用於目錄。如果沒有鏈接,將使用基礎價格。","not_linked":"未鏈接","price_group_rule":"價格組規則","price_group_rule_description":"鏈接價格組到具有特定標籤的餐廳。","restaurant_filter":"餐廳過濾器"},"tree_editor":{"title":"菜單管理","actions":{"add_category":"添加新分類","expand_all":"展開所有","collapse_all":"摺疊所有","add_product":"添加產品","delete_product":"刪除產品","edit_category":"編輯","delete_category":"刪除分類","link_category_to_catalog":"鏈接分類到目錄","link_product_to_catalog":"鏈接產品到目錄","unlink_product_from_catalog":"取消鏈接產品"},"labels":{"main_catalog":"主目錄","all_time":"所有時間","products":"產品: {count}","variants":"規格: {count}","groups":"組: {count}","addon":"附加項","unknown":"未知","please_select_a_product_to_edit":"請選擇一個產品進行編輯","no_items":"沒有產品可顯示"}}}`), pi = {
|
|
1816
|
+
menu: di
|
|
1815
1817
|
}, T = I(!1);
|
|
1816
1818
|
window.addEventListener("message", (e) => {
|
|
1817
1819
|
var t;
|
|
1818
1820
|
((t = e.data) == null ? void 0 : t.type) === "menu-version-notifier" && (T.value = e.data.data.isV4);
|
|
1819
1821
|
});
|
|
1820
|
-
var
|
|
1822
|
+
var mi = /* @__PURE__ */ ((e) => (e.OVERVIEW = "$menu-overview", e.CATALOG = "$menu-catalog", e.EDIT_CATALOG = "$menu-catalog-edit", e.EDIT_CATALOG_PRODUCT = "$menu-catalog-edit-product", e.EDIT_CATALOG_CATEGORY = "$menu-catalog-edit-category", e.EDIT_CATALOG_GROUP = "$menu-catalog-edit-group", e.EDIT_CATALOG_TAKEAWAY = "$menu-catalog-edit-takeaway", e.EDIT_CATALOG_SETTING = "$menu-catalog-edit-setting", e.SCHEDULER = "$menu-scheduler", e.VARIANT = "$menu-variant", e.COOKING_GUIDE = "$menu-cooking-guide", e.PRINT_ROUTE = "$menu-print-route", e.PUBLISH = "$menu-publish", e))(mi || {});
|
|
1821
1823
|
const h = {
|
|
1822
1824
|
validationManifest: {
|
|
1823
1825
|
requiredCaslPermissions: [
|
|
@@ -1831,7 +1833,7 @@ const h = {
|
|
|
1831
1833
|
{
|
|
1832
1834
|
path: "/product",
|
|
1833
1835
|
name: "$menu-products",
|
|
1834
|
-
component: y(b(() => import("./Products-
|
|
1836
|
+
component: y(b(() => import("./Products-Bp4RN2tP.js"))),
|
|
1835
1837
|
meta: {
|
|
1836
1838
|
...h,
|
|
1837
1839
|
isNavItem: !0,
|
|
@@ -1842,7 +1844,7 @@ const h = {
|
|
|
1842
1844
|
path: "/product-internal-tools",
|
|
1843
1845
|
name: "$menu-product-internal-tools",
|
|
1844
1846
|
component: y(
|
|
1845
|
-
b(() => import("./ProductInternalTools-
|
|
1847
|
+
b(() => import("./ProductInternalTools-DiG53QXf.js"))
|
|
1846
1848
|
),
|
|
1847
1849
|
meta: {
|
|
1848
1850
|
i18nId: "menu.productInternalTools.title",
|
|
@@ -1855,7 +1857,7 @@ const h = {
|
|
|
1855
1857
|
{
|
|
1856
1858
|
path: "/category",
|
|
1857
1859
|
name: "$menu-category",
|
|
1858
|
-
component: y(b(() => import("./Category-
|
|
1860
|
+
component: y(b(() => import("./Category-C9sdulfS.js"))),
|
|
1859
1861
|
meta: {
|
|
1860
1862
|
...h,
|
|
1861
1863
|
isNavItem: !0,
|
|
@@ -1865,7 +1867,7 @@ const h = {
|
|
|
1865
1867
|
{
|
|
1866
1868
|
path: "/subcategory",
|
|
1867
1869
|
name: "$menu-subcategory",
|
|
1868
|
-
component: y(b(() => import("./Subcategory-
|
|
1870
|
+
component: y(b(() => import("./Subcategory-Bw4NC1zr.js"))),
|
|
1869
1871
|
meta: {
|
|
1870
1872
|
...h,
|
|
1871
1873
|
isNavItem: () => T.value,
|
|
@@ -1875,7 +1877,7 @@ const h = {
|
|
|
1875
1877
|
{
|
|
1876
1878
|
path: "/group",
|
|
1877
1879
|
name: "$menu-group",
|
|
1878
|
-
component: y(b(() => import("./Group-
|
|
1880
|
+
component: y(b(() => import("./Group-C8gRQIjf.js"))),
|
|
1879
1881
|
meta: {
|
|
1880
1882
|
...h,
|
|
1881
1883
|
isNavItem: !0,
|
|
@@ -1885,7 +1887,7 @@ const h = {
|
|
|
1885
1887
|
{
|
|
1886
1888
|
path: "/takeaway",
|
|
1887
1889
|
name: "$menu-takeaway",
|
|
1888
|
-
component: y(b(() => import("./Takeaway-
|
|
1890
|
+
component: y(b(() => import("./Takeaway-CZBbeNL8.js"))),
|
|
1889
1891
|
meta: {
|
|
1890
1892
|
...h,
|
|
1891
1893
|
isNavItem: !0,
|
|
@@ -1895,7 +1897,7 @@ const h = {
|
|
|
1895
1897
|
{
|
|
1896
1898
|
path: "/scheduler",
|
|
1897
1899
|
name: "$menu-scheduler",
|
|
1898
|
-
component: y(b(() => import("./Scheduler-
|
|
1900
|
+
component: y(b(() => import("./Scheduler-BVgOUrgq.js"))),
|
|
1899
1901
|
meta: {
|
|
1900
1902
|
...h,
|
|
1901
1903
|
isNavItem: !0,
|
|
@@ -1905,7 +1907,7 @@ const h = {
|
|
|
1905
1907
|
{
|
|
1906
1908
|
path: "/variant",
|
|
1907
1909
|
name: "$menu-variant",
|
|
1908
|
-
component: y(b(() => import("./Variant-
|
|
1910
|
+
component: y(b(() => import("./Variant-CR6fNlW6.js"))),
|
|
1909
1911
|
meta: {
|
|
1910
1912
|
...h,
|
|
1911
1913
|
isNavItem: !0,
|
|
@@ -1915,7 +1917,7 @@ const h = {
|
|
|
1915
1917
|
{
|
|
1916
1918
|
path: "/recipe",
|
|
1917
1919
|
name: "$menu-recipe",
|
|
1918
|
-
component: y(b(() => import("./Recipe-
|
|
1920
|
+
component: y(b(() => import("./Recipe-CPpiiwTj.js"))),
|
|
1919
1921
|
meta: {
|
|
1920
1922
|
...h,
|
|
1921
1923
|
isNavItem: () => !T.value,
|
|
@@ -1925,7 +1927,7 @@ const h = {
|
|
|
1925
1927
|
{
|
|
1926
1928
|
path: "/ingredient",
|
|
1927
1929
|
name: "$menu-ingredient",
|
|
1928
|
-
component: y(b(() => import("./Ingredient-
|
|
1930
|
+
component: y(b(() => import("./Ingredient-DaWcvad4.js"))),
|
|
1929
1931
|
meta: {
|
|
1930
1932
|
...h,
|
|
1931
1933
|
isNavItem: () => !T.value,
|
|
@@ -1935,7 +1937,7 @@ const h = {
|
|
|
1935
1937
|
{
|
|
1936
1938
|
path: "/unit",
|
|
1937
1939
|
name: "$menu-unit",
|
|
1938
|
-
component: y(b(() => import("./Unit-
|
|
1940
|
+
component: y(b(() => import("./Unit-C0XP2gQF.js"))),
|
|
1939
1941
|
meta: {
|
|
1940
1942
|
...h,
|
|
1941
1943
|
isNavItem: () => !T.value,
|
|
@@ -1945,7 +1947,7 @@ const h = {
|
|
|
1945
1947
|
{
|
|
1946
1948
|
path: "/cooking-guide",
|
|
1947
1949
|
name: "$menu-cooking-guide",
|
|
1948
|
-
component: y(b(() => import("./CookingGuide-
|
|
1950
|
+
component: y(b(() => import("./CookingGuide-DIVESXs6.js"))),
|
|
1949
1951
|
meta: {
|
|
1950
1952
|
...h,
|
|
1951
1953
|
isNavItem: !0,
|
|
@@ -1955,7 +1957,7 @@ const h = {
|
|
|
1955
1957
|
{
|
|
1956
1958
|
path: "/print-route",
|
|
1957
1959
|
name: "$menu-print-route",
|
|
1958
|
-
component: y(b(() => import("./PrintRoute-
|
|
1960
|
+
component: y(b(() => import("./PrintRoute-BEXM1XO1.js"))),
|
|
1959
1961
|
meta: {
|
|
1960
1962
|
...h,
|
|
1961
1963
|
isNavItem: !0,
|
|
@@ -1966,7 +1968,7 @@ const h = {
|
|
|
1966
1968
|
path: "/serving-sequence",
|
|
1967
1969
|
name: "$menu-serving-sequence",
|
|
1968
1970
|
component: y(
|
|
1969
|
-
b(() => import("./ServingSequence-
|
|
1971
|
+
b(() => import("./ServingSequence-BvvQ7iAu.js"))
|
|
1970
1972
|
),
|
|
1971
1973
|
meta: {
|
|
1972
1974
|
...h,
|
|
@@ -1977,7 +1979,7 @@ const h = {
|
|
|
1977
1979
|
{
|
|
1978
1980
|
path: "/publish",
|
|
1979
1981
|
name: "$menu-publish",
|
|
1980
|
-
component: y(b(() => import("./Publish-
|
|
1982
|
+
component: y(b(() => import("./Publish-DHrjYAJO.js"))),
|
|
1981
1983
|
meta: {
|
|
1982
1984
|
...h,
|
|
1983
1985
|
isNavItem: !0,
|
|
@@ -1991,7 +1993,7 @@ const h = {
|
|
|
1991
1993
|
{
|
|
1992
1994
|
path: "/setting",
|
|
1993
1995
|
name: "$menu-menu-setting",
|
|
1994
|
-
component: y(b(() => import("./MenuSetting-
|
|
1996
|
+
component: y(b(() => import("./MenuSetting-B32RCTN9.js"))),
|
|
1995
1997
|
meta: {
|
|
1996
1998
|
...h,
|
|
1997
1999
|
isNavItem: !0,
|
|
@@ -2006,7 +2008,7 @@ const h = {
|
|
|
2006
2008
|
{
|
|
2007
2009
|
path: "/catalog",
|
|
2008
2010
|
name: "$menu-catalog",
|
|
2009
|
-
component: y(b(() => import("./Catalog-
|
|
2011
|
+
component: y(b(() => import("./Catalog-qUXEGPwx.js"))),
|
|
2010
2012
|
meta: {
|
|
2011
2013
|
...h,
|
|
2012
2014
|
isNavItem: !0,
|
|
@@ -2015,7 +2017,7 @@ const h = {
|
|
|
2015
2017
|
},
|
|
2016
2018
|
{
|
|
2017
2019
|
path: "/catalog/edit/:id",
|
|
2018
|
-
component: y(b(() => import("./_id_-
|
|
2020
|
+
component: y(b(() => import("./_id_-DPpuWlln.js"))),
|
|
2019
2021
|
name: "$menu-catalog-edit",
|
|
2020
2022
|
meta: {
|
|
2021
2023
|
...h
|
|
@@ -2030,31 +2032,31 @@ const h = {
|
|
|
2030
2032
|
},
|
|
2031
2033
|
{
|
|
2032
2034
|
path: "/catalog/edit/:id/product",
|
|
2033
|
-
component: y(b(() => import("./Product-
|
|
2035
|
+
component: y(b(() => import("./Product-Dg6vmxu4.js"))),
|
|
2034
2036
|
name: "$menu-catalog-edit-product",
|
|
2035
2037
|
meta: { ...h }
|
|
2036
2038
|
},
|
|
2037
2039
|
{
|
|
2038
2040
|
path: "/catalog/edit/:id/category",
|
|
2039
|
-
component: y(b(() => import("./Category-
|
|
2041
|
+
component: y(b(() => import("./Category-DGUI1Glw.js"))),
|
|
2040
2042
|
name: "$menu-catalog-edit-category",
|
|
2041
2043
|
meta: { ...h }
|
|
2042
2044
|
},
|
|
2043
2045
|
{
|
|
2044
2046
|
path: "/catalog/edit/:id/group",
|
|
2045
|
-
component: y(b(() => import("./Group-
|
|
2047
|
+
component: y(b(() => import("./Group-CTzxLznN.js"))),
|
|
2046
2048
|
name: "$menu-catalog-edit-group",
|
|
2047
2049
|
meta: { ...h }
|
|
2048
2050
|
},
|
|
2049
2051
|
{
|
|
2050
2052
|
path: "/catalog/edit/:id/takeaway",
|
|
2051
|
-
component: y(b(() => import("./Takeaway-
|
|
2053
|
+
component: y(b(() => import("./Takeaway-BP9vO3uO.js"))),
|
|
2052
2054
|
name: "$menu-catalog-edit-takeaway",
|
|
2053
2055
|
meta: { ...h }
|
|
2054
2056
|
},
|
|
2055
2057
|
{
|
|
2056
2058
|
path: "/catalog/edit/:id/setting",
|
|
2057
|
-
component: y(b(() => import("./Setting-
|
|
2059
|
+
component: y(b(() => import("./Setting-C828ShhE.js"))),
|
|
2058
2060
|
name: "$menu-catalog-edit-setting",
|
|
2059
2061
|
meta: { ...h }
|
|
2060
2062
|
}
|
|
@@ -2068,31 +2070,32 @@ ae.push({
|
|
|
2068
2070
|
name: ((Ie = ae[0].children) == null ? void 0 : Ie[0].name) || ae[0].name
|
|
2069
2071
|
}
|
|
2070
2072
|
});
|
|
2071
|
-
y(b(() => import("./Catalog-
|
|
2073
|
+
y(b(() => import("./Catalog-qUXEGPwx.js"))), {
|
|
2072
2074
|
...h
|
|
2073
|
-
}, y(b(() => import("./_id_-
|
|
2074
|
-
const
|
|
2075
|
-
window.postMessage({ type:
|
|
2076
|
-
},
|
|
2077
|
-
function
|
|
2075
|
+
}, y(b(() => import("./_id_-DPpuWlln.js"))), { ...h }, y(b(() => import("./Product-Dg6vmxu4.js"))), { ...h }, y(b(() => import("./Category-DGUI1Glw.js"))), { ...h }, y(b(() => import("./Group-CTzxLznN.js"))), { ...h }, y(b(() => import("./Takeaway-BP9vO3uO.js"))), { ...h }, y(b(() => import("./Setting-C828ShhE.js"))), { ...h };
|
|
2076
|
+
const gi = "treeEditorOpen", vi = () => {
|
|
2077
|
+
window.postMessage({ type: gi }, "*");
|
|
2078
|
+
}, ki = b(() => import("./App-27TpQ9Rh.js"));
|
|
2079
|
+
function wi(e, t) {
|
|
2078
2080
|
e.use(Xa);
|
|
2079
2081
|
}
|
|
2080
|
-
const
|
|
2082
|
+
const Ai = {
|
|
2081
2083
|
"en-US": oi,
|
|
2082
|
-
"zh-CN":
|
|
2083
|
-
"th-TH":
|
|
2084
|
-
"zh-Hant":
|
|
2084
|
+
"zh-CN": ui,
|
|
2085
|
+
"th-TH": si,
|
|
2086
|
+
"zh-Hant": pi,
|
|
2087
|
+
"ja-JP": ri
|
|
2085
2088
|
};
|
|
2086
2089
|
export {
|
|
2087
|
-
|
|
2088
|
-
|
|
2089
|
-
|
|
2090
|
-
|
|
2090
|
+
ki as F,
|
|
2091
|
+
hi as I,
|
|
2092
|
+
mi as R,
|
|
2093
|
+
gi as T,
|
|
2091
2094
|
ei as _,
|
|
2092
2095
|
Za as a,
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
+
wi as b,
|
|
2097
|
+
Ai as i,
|
|
2098
|
+
vi as o,
|
|
2096
2099
|
ae as r,
|
|
2097
|
-
|
|
2100
|
+
fi as u
|
|
2098
2101
|
};
|