@jtakeit/kit 0.0.0-stage → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +174 -2
- package/bin/jtkit.mjs +62 -0
- package/booking.css +36 -0
- package/elements/alive.js +52 -0
- package/elements/booking.js +737 -0
- package/elements/lead.js +134 -0
- package/index.mjs +21 -0
- package/lead.css +23 -0
- package/lib/booking/render.mjs +244 -0
- package/lib/booking/words.mjs +346 -0
- package/lib/catalogue.mjs +1819 -0
- package/lib/codes.mjs +171 -0
- package/lib/kits.mjs +208 -0
- package/lib/lead/render.mjs +166 -0
- package/lib/meta.mjs +150 -0
- package/lib/money.mjs +30 -0
- package/package.json +81 -4
- package/types/alive.d.ts +2 -0
- package/types/booking.d.ts +32 -0
- package/types/elements-booking.d.ts +9 -0
- package/types/elements-lead.d.ts +6 -0
- package/types/index.d.ts +6 -0
- package/types/kits.d.ts +24 -0
- package/types/lead.d.ts +49 -0
- package/types/meta.d.ts +26 -0
- package/types/money.d.ts +2 -0
- package/types/words.d.ts +3 -0
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The booking form's words, per language, before the platform has spoken.
|
|
3
|
+
*
|
|
4
|
+
* These are a salon's. The words that depend on the kind of business —
|
|
5
|
+
* «Записатися» or «Орендувати», «Майстер» or «Авто» — are the platform's, in
|
|
6
|
+
* its availability answer (`words`), the kind's dictionary with the site's
|
|
7
|
+
* own over it; the element hears them and replaces these. A site in a
|
|
8
|
+
* language not here gets English, which the platform's answer then corrects
|
|
9
|
+
* for the words it has.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/** The languages the form carries words in. */
|
|
13
|
+
export const LOCALES = Object.freeze(['uk', 'de', 'en', 'ru', 'es', 'it', 'pt', 'fr']);
|
|
14
|
+
|
|
15
|
+
const BASE = {
|
|
16
|
+
uk: {
|
|
17
|
+
service: 'Послуга', services: 'Послуги', total: 'Разом', pickService: 'Оберіть хоча б одну послугу.', resource: 'Майстер', any: 'Будь-хто', day: 'День', time: 'Час',
|
|
18
|
+
name: "Ім'я", phone: 'Телефон', email: 'Електронна пошта', note: 'Коментар',
|
|
19
|
+
book: 'Записатися', sending: 'Записуємо…', none: 'У цей день вільного часу немає.', noParty: 'Немає вільних місць для такої компанії.',
|
|
20
|
+
pick: 'Оберіть день', confirmed: 'Ви записані.', pending: 'Запис отримано — ми підтвердимо його найближчим часом.',
|
|
21
|
+
pay: 'Оплатити', payNote: 'Час зарезервовано на 30 хвилин. Щоб закріпити його, завершіть оплату.',
|
|
22
|
+
manage: 'Скасувати або перенести запис', telegram: 'Нагадування в Telegram',
|
|
23
|
+
taken: 'Цей час щойно зайняли — оберіть інший.', failed: 'Не вдалося записатися. Спробуйте ще раз або зателефонуйте.',
|
|
24
|
+
back: 'До', length: 'Від {min} до {max} діб.', anyOf: 'Будь-яке вільне — {class}', noneOf: '{class} — немає вільних', notFor: '{who} — не для обраного', notForChosen: '{who} — не для обраного. Оберіть іншого або «{any}».', took: 'Ви берете: {what}',
|
|
25
|
+
party: 'Скільки вас', perPerson: 'за особу', addOns: 'Додатково', quantity: 'Скільки — доріжок, столів, кімнат', together: '{n} разом', hours: 'Скільки часу', hourShort: 'год', minuteShort: 'хв', challenge: 'Підтвердіть, що ви не робот, і спробуйте ще раз.', tooMany: 'У вас уже є кілька відкритих записів. Скасуйте один із них або зателефонуйте нам.',
|
|
26
|
+
from: 'від',
|
|
27
|
+
needContact: 'Вкажіть телефон або пошту, щоб ми могли з вами звʼязатися.', noScript: 'Онлайн-форма працює з увімкненим JavaScript — увімкніть його або зателефонуйте нам.',
|
|
28
|
+
},
|
|
29
|
+
de: {
|
|
30
|
+
service: 'Leistung', services: 'Leistungen', total: 'Zusammen', pickService: 'Bitte mindestens eine Leistung wählen.', resource: 'Bei', any: 'Egal wer', day: 'Tag', time: 'Uhrzeit',
|
|
31
|
+
name: 'Name', phone: 'Telefon', email: 'E-Mail', note: 'Bemerkung',
|
|
32
|
+
book: 'Termin buchen', sending: 'Wird gebucht…', none: 'An diesem Tag ist nichts frei.', noParty: 'Für so viele Personen gibt es keinen freien Platz.',
|
|
33
|
+
pick: 'Wählen Sie einen Tag', confirmed: 'Ihr Termin ist gebucht.', pending: 'Anfrage erhalten — wir bestätigen den Termin in Kürze.',
|
|
34
|
+
pay: 'Jetzt bezahlen', payNote: 'Der Termin ist 30 Minuten reserviert. Schliessen Sie die Zahlung ab, um ihn zu behalten.',
|
|
35
|
+
manage: 'Termin absagen oder verschieben', telegram: 'Erinnerungen per Telegram',
|
|
36
|
+
taken: 'Diese Zeit wurde gerade vergeben — bitte wählen Sie eine andere.', failed: 'Die Buchung hat nicht geklappt. Bitte erneut versuchen oder anrufen.',
|
|
37
|
+
back: 'Bis', length: 'Von {min} bis {max} Nächte.', anyOf: 'Beliebig frei — {class}', noneOf: '{class} — nichts verfügbar', notFor: '{who} — nicht für diese Auswahl', notForChosen: '{who} — nicht für diese Auswahl. Bitte jemand anderen oder «{any}» wählen.', took: 'Sie nehmen: {what}',
|
|
38
|
+
party: 'Wie viele Personen', perPerson: 'pro Person', addOns: 'Zusätzlich', quantity: 'Wie viele — Bahnen, Tische, Zimmer', together: '{n} zusammen', hours: 'Wie lange', hourShort: 'Std.', minuteShort: 'Min.', challenge: 'Bitte bestätigen Sie, dass Sie kein Roboter sind, und versuchen Sie es erneut.', tooMany: 'Sie haben bereits mehrere offene Termine. Sagen Sie einen ab oder rufen Sie uns an.',
|
|
39
|
+
from: 'ab',
|
|
40
|
+
needContact: 'Bitte Telefon oder E-Mail angeben, damit wir Sie erreichen können.', noScript: 'Für die Online-Buchung ist JavaScript nötig — oder rufen Sie uns an.',
|
|
41
|
+
},
|
|
42
|
+
en: {
|
|
43
|
+
service: 'Service', services: 'Services', total: 'Total', pickService: 'Pick at least one service.', resource: 'With', any: 'Anyone', day: 'Day', time: 'Time',
|
|
44
|
+
name: 'Name', phone: 'Phone', email: 'Email', note: 'Note',
|
|
45
|
+
book: 'Book', sending: 'Booking…', none: 'Nothing is free on that day.', noParty: 'There is no place for a party this large.',
|
|
46
|
+
pick: 'Choose a day', confirmed: 'You are booked.', pending: 'Received — we will confirm shortly.',
|
|
47
|
+
pay: 'Pay now', payNote: 'The time is held for 30 minutes. Complete the payment to keep it.',
|
|
48
|
+
manage: 'Cancel or move the booking', telegram: 'Reminders in Telegram',
|
|
49
|
+
taken: 'That time has just been taken — please choose another.', failed: 'That did not work. Please try again or ring us.',
|
|
50
|
+
back: 'Until', length: 'From {min} to {max} nights.', anyOf: 'Any free — {class}', noneOf: '{class} — none available', notFor: '{who} — not for this choice', notForChosen: '{who} — not for this choice. Pick another, or «{any}».', took: 'You are taking: {what}',
|
|
51
|
+
party: 'How many of you', perPerson: 'per person', addOns: 'Add-ons', quantity: 'How many — lanes, tables, rooms', together: '{n} together', hours: 'How long', hourShort: 'h', minuteShort: 'min', challenge: 'Please confirm you are not a robot and try again.', tooMany: 'You already have several open bookings. Cancel one, or ring us.',
|
|
52
|
+
from: 'from',
|
|
53
|
+
needContact: 'Leave a phone number or an email so we can reach you.', noScript: 'Booking online needs JavaScript — or ring us.',
|
|
54
|
+
},
|
|
55
|
+
ru: {
|
|
56
|
+
service: "Услуга",
|
|
57
|
+
services: "Услуги",
|
|
58
|
+
total: "Итого",
|
|
59
|
+
pickService: "Выберите хотя бы одну услугу.",
|
|
60
|
+
resource: "Мастер",
|
|
61
|
+
any: "Любой",
|
|
62
|
+
day: "День",
|
|
63
|
+
time: "Время",
|
|
64
|
+
name: "Имя",
|
|
65
|
+
phone: "Телефон",
|
|
66
|
+
email: "Электронная почта",
|
|
67
|
+
note: "Комментарий",
|
|
68
|
+
book: "Записаться",
|
|
69
|
+
sending: "Записываем…",
|
|
70
|
+
none: "В этот день свободного времени нет.",
|
|
71
|
+
noParty: "Для такой компании свободных мест нет.",
|
|
72
|
+
pick: "Выберите день",
|
|
73
|
+
confirmed: "Вы записаны.",
|
|
74
|
+
pending: "Запись получена — мы подтвердим ее в ближайшее время.",
|
|
75
|
+
pay: "Оплатить",
|
|
76
|
+
payNote: "Время зарезервировано на 30 минут. Чтобы закрепить его, завершите оплату.",
|
|
77
|
+
manage: "Отменить или перенести запись",
|
|
78
|
+
telegram: "Напоминания в Telegram",
|
|
79
|
+
taken: "Это время только что заняли — выберите другое.",
|
|
80
|
+
failed: "Не удалось записаться. Попробуйте еще раз или позвоните.",
|
|
81
|
+
back: "До",
|
|
82
|
+
length: "От {min} до {max} суток.",
|
|
83
|
+
anyOf: "Любой свободный — {class}",
|
|
84
|
+
noneOf: "{class} — свободных нет",
|
|
85
|
+
notFor: "{who} — не для выбранного",
|
|
86
|
+
notForChosen: "{who} — не для выбранного. Выберите другого или «{any}».",
|
|
87
|
+
took: "Вы берете: {what}",
|
|
88
|
+
party: "Сколько вас", perPerson: 'за человека', addOns: 'Дополнительно', quantity: 'Сколько — дорожек, столов, комнат', together: '{n} вместе',
|
|
89
|
+
hours: "На сколько времени",
|
|
90
|
+
hourShort: "ч",
|
|
91
|
+
minuteShort: "мин",
|
|
92
|
+
challenge: "Подтвердите, что вы не робот, и попробуйте еще раз.",
|
|
93
|
+
tooMany: "У вас уже есть несколько открытых записей. Отмените одну из них или позвоните нам.",
|
|
94
|
+
from: 'от',
|
|
95
|
+
needContact: "Укажите телефон или почту, чтобы мы могли с вами связаться.",
|
|
96
|
+
noScript: "Онлайн-форма работает с включенным JavaScript — включите его или позвоните нам.",
|
|
97
|
+
},
|
|
98
|
+
es: {
|
|
99
|
+
service: "Servicio",
|
|
100
|
+
services: "Servicios",
|
|
101
|
+
total: "Total",
|
|
102
|
+
pickService: "Elija al menos un servicio.",
|
|
103
|
+
resource: "Con",
|
|
104
|
+
any: "Cualquiera",
|
|
105
|
+
day: "Día",
|
|
106
|
+
time: "Hora",
|
|
107
|
+
name: "Nombre",
|
|
108
|
+
phone: "Teléfono",
|
|
109
|
+
email: "Correo electrónico",
|
|
110
|
+
note: "Comentario",
|
|
111
|
+
book: "Reservar",
|
|
112
|
+
sending: "Reservando…",
|
|
113
|
+
none: "Ese día no queda nada libre.",
|
|
114
|
+
noParty: "No hay sitio para un grupo tan grande.",
|
|
115
|
+
pick: "Elija un día",
|
|
116
|
+
confirmed: "Su reserva está hecha.",
|
|
117
|
+
pending: "Recibida: la confirmaremos en breve.",
|
|
118
|
+
pay: "Pagar ahora",
|
|
119
|
+
payNote: "La hora queda retenida 30 minutos. Complete el pago para conservarla.",
|
|
120
|
+
manage: "Cancelar o mover la reserva",
|
|
121
|
+
telegram: "Recordatorios en Telegram",
|
|
122
|
+
taken: "Esa hora acaba de ocuparse; elija otra, por favor.",
|
|
123
|
+
failed: "No ha funcionado. Inténtelo de nuevo o llámenos.",
|
|
124
|
+
back: "Hasta",
|
|
125
|
+
length: "De {min} a {max} noches.",
|
|
126
|
+
anyOf: "Cualquiera libre — {class}",
|
|
127
|
+
noneOf: "{class} — ninguno disponible",
|
|
128
|
+
notFor: "{who} — no para esta elección",
|
|
129
|
+
notForChosen: "{who} — no para esta elección. Elija otro, o «{any}».",
|
|
130
|
+
took: "Se lleva: {what}",
|
|
131
|
+
party: "Cuántos son", perPerson: 'por persona', addOns: 'Extras', quantity: 'Cuántas — pistas, mesas, habitaciones', together: '{n} juntas',
|
|
132
|
+
hours: "Cuánto tiempo",
|
|
133
|
+
hourShort: "h",
|
|
134
|
+
minuteShort: "min",
|
|
135
|
+
challenge: "Confirme que no es un robot e inténtelo de nuevo.",
|
|
136
|
+
tooMany: "Ya tiene varias reservas abiertas. Cancele una o llámenos.",
|
|
137
|
+
from: 'desde',
|
|
138
|
+
needContact: "Deje un teléfono o un correo electrónico para que podamos contactar con usted.",
|
|
139
|
+
noScript: "Para reservar en línea hace falta JavaScript — o llámenos.",
|
|
140
|
+
},
|
|
141
|
+
it: {
|
|
142
|
+
service: "Servizio",
|
|
143
|
+
services: "Servizi",
|
|
144
|
+
total: "Totale",
|
|
145
|
+
pickService: "Scelga almeno un servizio.",
|
|
146
|
+
resource: "Con",
|
|
147
|
+
any: "Chiunque",
|
|
148
|
+
day: "Giorno",
|
|
149
|
+
time: "Orario",
|
|
150
|
+
name: "Nome",
|
|
151
|
+
phone: "Telefono",
|
|
152
|
+
email: "Email",
|
|
153
|
+
note: "Nota",
|
|
154
|
+
book: "Prenota",
|
|
155
|
+
sending: "Prenotazione…",
|
|
156
|
+
none: "Niente di libero in quel giorno.",
|
|
157
|
+
noParty: "Non c'è posto per un gruppo così numeroso.",
|
|
158
|
+
pick: "Scelga un giorno",
|
|
159
|
+
confirmed: "Prenotazione effettuata.",
|
|
160
|
+
pending: "Ricevuta: confermeremo a breve.",
|
|
161
|
+
pay: "Paga ora",
|
|
162
|
+
payNote: "L'orario è tenuto per 30 minuti. Completi il pagamento per mantenerlo.",
|
|
163
|
+
manage: "Annulla o sposta la prenotazione",
|
|
164
|
+
telegram: "Promemoria su Telegram",
|
|
165
|
+
taken: "Questo orario è appena stato preso: ne scelga un altro.",
|
|
166
|
+
failed: "Non ha funzionato. Riprovi o ci chiami.",
|
|
167
|
+
back: "Fino a",
|
|
168
|
+
length: "Da {min} a {max} notti.",
|
|
169
|
+
anyOf: "Uno qualsiasi libero — {class}",
|
|
170
|
+
noneOf: "{class} — nessuno disponibile",
|
|
171
|
+
notFor: "{who} — non per questa scelta",
|
|
172
|
+
notForChosen: "{who} — non per questa scelta. Ne scelga un altro, o «{any}».",
|
|
173
|
+
took: "Sta prendendo: {what}",
|
|
174
|
+
party: "Quante persone", perPerson: 'a persona', addOns: 'Extra', quantity: 'Quante — piste, tavoli, camere', together: '{n} insieme',
|
|
175
|
+
hours: "Per quanto tempo",
|
|
176
|
+
hourShort: "h",
|
|
177
|
+
minuteShort: "min",
|
|
178
|
+
challenge: "Confermi di non essere un robot e riprovi.",
|
|
179
|
+
tooMany: "Ha già diverse prenotazioni aperte. Ne annulli una, o ci chiami.",
|
|
180
|
+
from: 'da',
|
|
181
|
+
needContact: "Lasci un numero di telefono o un'email per poterLa contattare.",
|
|
182
|
+
noScript: "Per prenotare online serve JavaScript: oppure ci chiami.",
|
|
183
|
+
},
|
|
184
|
+
pt: {
|
|
185
|
+
service: "Serviço",
|
|
186
|
+
services: "Serviços",
|
|
187
|
+
total: "Total",
|
|
188
|
+
pickService: "Escolha pelo menos um serviço.",
|
|
189
|
+
resource: "Com",
|
|
190
|
+
any: "Qualquer um",
|
|
191
|
+
day: "Dia",
|
|
192
|
+
time: "Hora",
|
|
193
|
+
name: "Nome",
|
|
194
|
+
phone: "Telefone",
|
|
195
|
+
email: "E-mail",
|
|
196
|
+
note: "Observações",
|
|
197
|
+
book: "Reservar",
|
|
198
|
+
sending: "A reservar…",
|
|
199
|
+
none: "Não há horários livres nesse dia.",
|
|
200
|
+
noParty: "Não há lugar para um grupo tão grande.",
|
|
201
|
+
pick: "Escolha um dia",
|
|
202
|
+
confirmed: "A sua reserva está feita.",
|
|
203
|
+
pending: "Pedido recebido — confirmamos em breve.",
|
|
204
|
+
pay: "Pagar agora",
|
|
205
|
+
payNote: "O horário fica reservado durante 30 minutos. Conclua o pagamento para o manter.",
|
|
206
|
+
manage: "Cancelar ou remarcar a reserva",
|
|
207
|
+
telegram: "Lembretes no Telegram",
|
|
208
|
+
taken: "Esse horário acabou de ser ocupado — escolha outro.",
|
|
209
|
+
failed: "Não foi possível reservar. Tente de novo ou ligue-nos.",
|
|
210
|
+
back: "Até",
|
|
211
|
+
length: "De {min} a {max} noites.",
|
|
212
|
+
anyOf: "Qualquer livre — {class}",
|
|
213
|
+
noneOf: "{class} — nenhum disponível",
|
|
214
|
+
notFor: "{who} — não para esta escolha",
|
|
215
|
+
notForChosen: "{who} — não para esta escolha. Escolha outro ou «{any}».",
|
|
216
|
+
took: "Leva: {what}",
|
|
217
|
+
party: "Quantos são", perPerson: 'por pessoa', addOns: 'Extras', quantity: 'Quantas — pistas, mesas, quartos', together: '{n} em conjunto',
|
|
218
|
+
hours: "Quanto tempo",
|
|
219
|
+
hourShort: "h",
|
|
220
|
+
minuteShort: "min",
|
|
221
|
+
challenge: "Confirme que não é um robô e tente de novo.",
|
|
222
|
+
tooMany: "Já tem várias reservas em aberto. Cancele uma ou ligue-nos.",
|
|
223
|
+
from: 'desde',
|
|
224
|
+
needContact: "Deixe um telefone ou um e-mail para podermos contactá-lo.",
|
|
225
|
+
noScript: "Reservar online precisa de JavaScript — ou ligue-nos.",
|
|
226
|
+
},
|
|
227
|
+
fr: {
|
|
228
|
+
service: "Prestation",
|
|
229
|
+
services: "Prestations",
|
|
230
|
+
total: "Total",
|
|
231
|
+
pickService: "Choisissez au moins une prestation.",
|
|
232
|
+
resource: "Avec",
|
|
233
|
+
any: "Sans préférence",
|
|
234
|
+
day: "Jour",
|
|
235
|
+
time: "Heure",
|
|
236
|
+
name: "Nom",
|
|
237
|
+
phone: "Téléphone",
|
|
238
|
+
email: "E-mail",
|
|
239
|
+
note: "Remarque",
|
|
240
|
+
book: "Réserver",
|
|
241
|
+
sending: "Réservation en cours…",
|
|
242
|
+
none: "Rien n’est libre ce jour-là.",
|
|
243
|
+
noParty: "Pas de place pour un groupe de cette taille.",
|
|
244
|
+
pick: "Choisissez un jour",
|
|
245
|
+
confirmed: "Votre réservation est confirmée.",
|
|
246
|
+
pending: "Demande reçue — nous confirmons sous peu.",
|
|
247
|
+
pay: "Payer maintenant",
|
|
248
|
+
payNote: "Le créneau est réservé pendant 30 minutes. Terminez le paiement pour le conserver.",
|
|
249
|
+
manage: "Annuler ou déplacer la réservation",
|
|
250
|
+
telegram: "Rappels dans Telegram",
|
|
251
|
+
taken: "Ce créneau vient d’être pris — veuillez en choisir un autre.",
|
|
252
|
+
failed: "Cela n’a pas fonctionné. Réessayez ou appelez-nous.",
|
|
253
|
+
back: "Jusqu’au",
|
|
254
|
+
length: "De {min} à {max} nuits.",
|
|
255
|
+
anyOf: "N’importe lequel de libre — {class}",
|
|
256
|
+
noneOf: "{class} — aucun disponible",
|
|
257
|
+
notFor: "{who} — pas pour ce choix",
|
|
258
|
+
notForChosen: "{who} — pas pour ce choix. Choisissez-en un autre, ou « {any} ».",
|
|
259
|
+
took: "Vous prenez : {what}",
|
|
260
|
+
party: "Combien êtes-vous", perPerson: 'par personne', addOns: 'Options', quantity: 'Combien — pistes, tables, chambres', together: '{n} ensemble',
|
|
261
|
+
hours: "Combien de temps",
|
|
262
|
+
hourShort: "h",
|
|
263
|
+
minuteShort: "min",
|
|
264
|
+
challenge: "Veuillez confirmer que vous n’êtes pas un robot et réessayer.",
|
|
265
|
+
tooMany: "Vous avez déjà plusieurs réservations en cours. Annulez-en une, ou appelez-nous.",
|
|
266
|
+
from: 'à partir de',
|
|
267
|
+
needContact: "Laissez un numéro de téléphone ou un e-mail pour que nous puissions vous joindre.",
|
|
268
|
+
noScript: "Réserver en ligne nécessite JavaScript — ou appelez-nous.",
|
|
269
|
+
},
|
|
270
|
+
};
|
|
271
|
+
|
|
272
|
+
// A letting is had for days, not at a time: «Час», «вільного часу немає» and
|
|
273
|
+
// «Час зарезервовано» are a salon's words.
|
|
274
|
+
const DAYS = {
|
|
275
|
+
uk: {
|
|
276
|
+
day: 'Від', pick: 'Оберіть дати',
|
|
277
|
+
time: 'Дні', none: 'Цього дня нічого вільного немає.',
|
|
278
|
+
payNote: 'Ці дні тримаємо за вами 30 хвилин. Щоб закріпити їх, завершіть оплату.',
|
|
279
|
+
taken: 'Ці дні щойно зайняли — оберіть інші.',
|
|
280
|
+
},
|
|
281
|
+
de: {
|
|
282
|
+
day: 'Von', pick: 'Wählen Sie die Tage',
|
|
283
|
+
time: 'Tage', none: 'Ab diesem Tag ist nichts frei.',
|
|
284
|
+
payNote: 'Die Tage sind 30 Minuten für Sie reserviert. Schliessen Sie die Zahlung ab, um sie zu behalten.',
|
|
285
|
+
taken: 'Diese Tage wurden gerade vergeben — bitte wählen Sie andere.',
|
|
286
|
+
},
|
|
287
|
+
en: {
|
|
288
|
+
day: 'From', pick: 'Choose the dates',
|
|
289
|
+
time: 'Days', none: 'Nothing is free from that day.',
|
|
290
|
+
payNote: 'The days are held for 30 minutes. Complete the payment to keep them.',
|
|
291
|
+
taken: 'Those days have just been taken — please choose others.',
|
|
292
|
+
},
|
|
293
|
+
ru: {
|
|
294
|
+
day: "С",
|
|
295
|
+
pick: "Выберите даты",
|
|
296
|
+
time: "Дни",
|
|
297
|
+
none: "С этого дня ничего свободного нет.",
|
|
298
|
+
payNote: "Эти дни держим за вами 30 минут. Чтобы закрепить их, завершите оплату.",
|
|
299
|
+
taken: "Эти дни только что заняли — выберите другие.",
|
|
300
|
+
},
|
|
301
|
+
es: {
|
|
302
|
+
day: "Desde",
|
|
303
|
+
pick: "Elija las fechas",
|
|
304
|
+
time: "Días",
|
|
305
|
+
none: "A partir de ese día no queda nada libre.",
|
|
306
|
+
payNote: "Los días quedan retenidos 30 minutos. Complete el pago para conservarlos.",
|
|
307
|
+
taken: "Esos días acaban de ocuparse; elija otros, por favor.",
|
|
308
|
+
},
|
|
309
|
+
it: {
|
|
310
|
+
day: "Dal",
|
|
311
|
+
pick: "Scelga le date",
|
|
312
|
+
time: "Giorni",
|
|
313
|
+
none: "Niente di libero da quel giorno.",
|
|
314
|
+
payNote: "I giorni sono tenuti per 30 minuti. Completi il pagamento per mantenerli.",
|
|
315
|
+
taken: "Questi giorni sono appena stati presi: ne scelga altri.",
|
|
316
|
+
},
|
|
317
|
+
pt: {
|
|
318
|
+
day: "De",
|
|
319
|
+
pick: "Escolha as datas",
|
|
320
|
+
time: "Dias",
|
|
321
|
+
none: "Não há nada livre a partir desse dia.",
|
|
322
|
+
payNote: "Os dias ficam reservados durante 30 minutos. Conclua o pagamento para os manter.",
|
|
323
|
+
taken: "Esses dias acabaram de ser ocupados — escolha outros.",
|
|
324
|
+
},
|
|
325
|
+
fr: {
|
|
326
|
+
day: "Du",
|
|
327
|
+
pick: "Choisissez les dates",
|
|
328
|
+
time: "Jours",
|
|
329
|
+
none: "Rien n’est libre à partir de ce jour.",
|
|
330
|
+
payNote: "Les jours sont réservés pendant 30 minutes. Terminez le paiement pour les conserver.",
|
|
331
|
+
taken: "Ces jours viennent d’être pris — veuillez en choisir d’autres.",
|
|
332
|
+
},
|
|
333
|
+
};
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* The form's words for a language and a scale — the salon's, or a letting
|
|
337
|
+
* business's by the day — as a fresh object the caller may write over.
|
|
338
|
+
*
|
|
339
|
+
* @param {string} locale `uk`, `de` or `en`; anything else reads as `en`
|
|
340
|
+
* @param {string} [scale] `'daily'` for a business that lets things by the day
|
|
341
|
+
* @returns {Record<string, string>}
|
|
342
|
+
*/
|
|
343
|
+
export function wordsFor(locale, scale = '') {
|
|
344
|
+
const lang = LOCALES.includes(locale) ? locale : 'en';
|
|
345
|
+
return scale === 'daily' ? { ...BASE[lang], ...DAYS[lang] } : { ...BASE[lang] };
|
|
346
|
+
}
|