@vamos-ui/react 0.3.0 → 0.4.1

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.
Files changed (274) hide show
  1. package/README.md +4 -0
  2. package/dist/blocks/block-heading.js +1 -1
  3. package/dist/blocks/block-image.js +1 -1
  4. package/dist/blocks/block-link.js +2 -2
  5. package/dist/blocks/index.d.ts +5 -5
  6. package/dist/blocks/index.js +5 -5
  7. package/dist/blocks/labels.d.ts +8 -0
  8. package/dist/blocks/labels.js +60 -0
  9. package/dist/blocks/section-header.js +1 -1
  10. package/dist/blocks/section.js +2 -2
  11. package/dist/blocks/site/_kit-1.js +1 -1
  12. package/dist/blocks/site/announcement-bar.js +1 -1
  13. package/dist/blocks/site/article-layout.d.ts +1 -0
  14. package/dist/blocks/site/article-layout.js +2 -1
  15. package/dist/blocks/site/blog-list.d.ts +1 -0
  16. package/dist/blocks/site/blog-list.js +3 -2
  17. package/dist/blocks/site/contact-dock.js +3 -1
  18. package/dist/blocks/site/contact-form.js +1 -1
  19. package/dist/blocks/site/cta.d.ts +2 -2
  20. package/dist/blocks/site/cta.js +6 -4
  21. package/dist/blocks/site/feature-grid.d.ts +1 -0
  22. package/dist/blocks/site/feature-grid.js +5 -4
  23. package/dist/blocks/site/feature-tabs.js +1 -1
  24. package/dist/blocks/site/footer.d.ts +11 -2
  25. package/dist/blocks/site/footer.js +36 -11
  26. package/dist/blocks/site/gallery-section.d.ts +6 -1
  27. package/dist/blocks/site/gallery-section.js +5 -4
  28. package/dist/blocks/site/hero.d.ts +3 -2
  29. package/dist/blocks/site/hero.js +7 -5
  30. package/dist/blocks/site/logo-strip.d.ts +1 -0
  31. package/dist/blocks/site/logo-strip.js +1 -1
  32. package/dist/blocks/site/map-hours.d.ts +2 -2
  33. package/dist/blocks/site/map-hours.js +4 -2
  34. package/dist/blocks/site/media-text.d.ts +4 -1
  35. package/dist/blocks/site/media-text.js +4 -3
  36. package/dist/blocks/site/menu-list.d.ts +7 -3
  37. package/dist/blocks/site/menu-list.js +34 -7
  38. package/dist/blocks/site/navbar.d.ts +1 -0
  39. package/dist/blocks/site/navbar.js +6 -5
  40. package/dist/blocks/site/not-found.js +2 -1
  41. package/dist/blocks/site/page-intro.d.ts +1 -0
  42. package/dist/blocks/site/page-intro.js +2 -1
  43. package/dist/blocks/site/process.d.ts +1 -0
  44. package/dist/blocks/site/process.js +2 -1
  45. package/dist/blocks/site/registry-1.d.ts +1 -1
  46. package/dist/blocks/site/registry-2.d.ts +5 -0
  47. package/dist/blocks/site/registry-2.js +5 -3
  48. package/dist/blocks/site/rich-text-section.js +2 -1
  49. package/dist/blocks/site/shared/heading-lines.d.ts +9 -0
  50. package/dist/blocks/site/shared/heading-lines.js +32 -0
  51. package/dist/blocks/site/shared/image-sizes.d.ts +25 -0
  52. package/dist/blocks/site/shared/image-sizes.js +37 -0
  53. package/dist/blocks/site/shared/island-keys.d.ts +1 -1
  54. package/dist/blocks/site/shared/island-keys.js +1 -1
  55. package/dist/blocks/site/shared/labels-2.d.ts +17 -1
  56. package/dist/blocks/site/shared/labels-2.js +832 -6
  57. package/dist/blocks/site/shared/open-now.d.ts +1 -1
  58. package/dist/blocks/site/shared/open-now.js +1 -1
  59. package/dist/blocks/site/shared/opening-hours.d.ts +18 -2
  60. package/dist/blocks/site/shared/opening-hours.js +36 -7
  61. package/dist/blocks/site/shared/tap.d.ts +9 -0
  62. package/dist/blocks/site/shared/tap.js +16 -0
  63. package/dist/blocks/site/site-shell.js +3 -3
  64. package/dist/blocks/site/team.d.ts +1 -1
  65. package/dist/blocks/site/team.js +4 -3
  66. package/dist/blocks/site/testimonials.d.ts +2 -2
  67. package/dist/blocks/site/testimonials.js +3 -3
  68. package/dist/business/approval-flow.js +2 -2
  69. package/dist/business/import-wizard.js +1 -1
  70. package/dist/business/line-items.js +1 -1
  71. package/dist/business/multi-step-form.js +2 -2
  72. package/dist/business/permission-matrix.js +1 -1
  73. package/dist/business/setup-checklist.js +2 -2
  74. package/dist/business/signer-status.js +1 -1
  75. package/dist/charts/bar-chart.js +1 -1
  76. package/dist/charts/bar-list.js +1 -1
  77. package/dist/charts/chart-shell.d.ts +9 -2
  78. package/dist/charts/chart-shell.js +11 -5
  79. package/dist/charts/chart.js +1 -1
  80. package/dist/charts/combo-chart.js +5 -7
  81. package/dist/charts/donut-chart.js +1 -1
  82. package/dist/charts/funnel.js +1 -1
  83. package/dist/charts/gauge.js +2 -2
  84. package/dist/charts/utils.d.ts +10 -0
  85. package/dist/charts/utils.js +46 -0
  86. package/dist/components/accordion.d.ts +1 -1
  87. package/dist/components/accordion.js +8 -8
  88. package/dist/components/activity-timeline.js +11 -11
  89. package/dist/components/address-field.js +3 -3
  90. package/dist/components/alert-dialog.d.ts +1 -1
  91. package/dist/components/alert-dialog.js +8 -8
  92. package/dist/components/alert.js +2 -2
  93. package/dist/components/app-shell.js +3 -3
  94. package/dist/components/aspect-ratio.d.ts +26 -0
  95. package/dist/components/aspect-ratio.js +42 -0
  96. package/dist/components/attachment-list.js +2 -2
  97. package/dist/components/audit-log.js +1 -1
  98. package/dist/components/avatar.d.ts +1 -1
  99. package/dist/components/avatar.js +8 -8
  100. package/dist/components/backup-codes.js +1 -1
  101. package/dist/components/badge.js +3 -3
  102. package/dist/components/breadcrumb.js +10 -9
  103. package/dist/components/button-group.js +4 -4
  104. package/dist/components/button.js +4 -4
  105. package/dist/components/calendar.js +5 -5
  106. package/dist/components/card.js +8 -8
  107. package/dist/components/carousel.d.ts +12 -3
  108. package/dist/components/carousel.js +17 -14
  109. package/dist/components/checkbox.d.ts +1 -1
  110. package/dist/components/checkbox.js +6 -6
  111. package/dist/components/collapsible.d.ts +36 -0
  112. package/dist/components/collapsible.js +37 -0
  113. package/dist/components/color-picker.js +3 -3
  114. package/dist/components/combobox.js +1 -1
  115. package/dist/components/command.js +9 -9
  116. package/dist/components/comment-thread.js +3 -3
  117. package/dist/components/context-menu.d.ts +1 -1
  118. package/dist/components/context-menu.js +9 -9
  119. package/dist/components/currency-input.js +1 -1
  120. package/dist/components/date-picker.js +2 -2
  121. package/dist/components/date-range-picker.js +1 -1
  122. package/dist/components/description-list.js +2 -2
  123. package/dist/components/dialog.d.ts +1 -1
  124. package/dist/components/dialog.js +9 -9
  125. package/dist/components/dropdown-menu.d.ts +1 -1
  126. package/dist/components/dropdown-menu.js +9 -9
  127. package/dist/components/editor-layout.js +9 -9
  128. package/dist/components/empty-state.js +2 -2
  129. package/dist/components/entity-card.js +1 -1
  130. package/dist/components/file-upload.js +5 -5
  131. package/dist/components/formatted-input.js +3 -3
  132. package/dist/components/hierarchy-chart.js +1 -1
  133. package/dist/components/hover-card.d.ts +1 -1
  134. package/dist/components/hover-card.js +3 -3
  135. package/dist/components/iban-input.js +1 -1
  136. package/dist/components/id-input.js +3 -3
  137. package/dist/components/image.d.ts +18 -2
  138. package/dist/components/image.js +16 -9
  139. package/dist/components/input-otp.js +6 -6
  140. package/dist/components/input.d.ts +1 -1
  141. package/dist/components/input.js +6 -6
  142. package/dist/components/item.js +4 -4
  143. package/dist/components/kbd.js +3 -3
  144. package/dist/components/list-layout.js +9 -9
  145. package/dist/components/menubar.d.ts +96 -0
  146. package/dist/components/menubar.js +123 -0
  147. package/dist/components/native-select.js +1 -1
  148. package/dist/components/navigation-menu.d.ts +1 -1
  149. package/dist/components/navigation-menu.js +12 -11
  150. package/dist/components/notification-center.js +4 -4
  151. package/dist/components/page-header.js +3 -3
  152. package/dist/components/pagination.js +9 -9
  153. package/dist/components/phone-input.js +1 -1
  154. package/dist/components/pin-map.js +1 -1
  155. package/dist/components/placeholder-art.d.ts +51 -0
  156. package/dist/components/placeholder-art.js +82 -0
  157. package/dist/components/popover.d.ts +1 -1
  158. package/dist/components/popover.js +7 -7
  159. package/dist/components/progress.js +3 -3
  160. package/dist/components/qr-code.js +1 -1
  161. package/dist/components/radio-group.d.ts +1 -1
  162. package/dist/components/radio-group.js +4 -4
  163. package/dist/components/record-detail-layout.js +10 -10
  164. package/dist/components/record-picker.js +2 -2
  165. package/dist/components/resizable.js +2 -2
  166. package/dist/components/scroll-area.d.ts +1 -1
  167. package/dist/components/scroll-area.js +4 -4
  168. package/dist/components/select.d.ts +1 -1
  169. package/dist/components/select.js +10 -10
  170. package/dist/components/separator.d.ts +1 -1
  171. package/dist/components/separator.js +3 -3
  172. package/dist/components/settings-layout.js +6 -6
  173. package/dist/components/sheet.js +3 -3
  174. package/dist/components/sidebar.js +12 -11
  175. package/dist/components/signature-pad.js +1 -1
  176. package/dist/components/skeleton.js +5 -5
  177. package/dist/components/sla-timer.js +2 -2
  178. package/dist/components/slider.d.ts +1 -1
  179. package/dist/components/slider.js +2 -2
  180. package/dist/components/slug-input.js +1 -1
  181. package/dist/components/sparkline.js +1 -1
  182. package/dist/components/spinner.js +2 -2
  183. package/dist/components/stat.js +5 -5
  184. package/dist/components/status-picker.js +2 -2
  185. package/dist/components/stepper.js +1 -1
  186. package/dist/components/switch.d.ts +1 -1
  187. package/dist/components/switch.js +3 -3
  188. package/dist/components/table.js +10 -10
  189. package/dist/components/tabs.d.ts +1 -1
  190. package/dist/components/tabs.js +11 -11
  191. package/dist/components/tag-input.js +1 -1
  192. package/dist/components/task-list.js +1 -1
  193. package/dist/components/time-picker.js +3 -3
  194. package/dist/components/toggle.d.ts +2 -1
  195. package/dist/components/toggle.js +7 -6
  196. package/dist/components/tooltip.d.ts +1 -1
  197. package/dist/components/tooltip.js +5 -4
  198. package/dist/components/top-bar.js +4 -4
  199. package/dist/components/tour.js +1 -1
  200. package/dist/components/tree-select.js +2 -2
  201. package/dist/components/tree-view.js +3 -3
  202. package/dist/components/typography.js +11 -11
  203. package/dist/components/user-picker.js +2 -2
  204. package/dist/components/version-history.js +3 -3
  205. package/dist/data-table/data-table.js +1 -1
  206. package/dist/data-table/filter-bar.js +2 -2
  207. package/dist/data-table/index.d.ts +15 -8
  208. package/dist/data-table/index.js +9 -8
  209. package/dist/data-table/saved-views.js +1 -1
  210. package/dist/editor/block-editor.js +1 -1
  211. package/dist/editor/context.js +1 -1
  212. package/dist/editor/menus.js +1 -1
  213. package/dist/fonts/font-picker.js +3 -3
  214. package/dist/fonts/pairing-picker.js +1 -1
  215. package/dist/fonts/provider.js +1 -1
  216. package/dist/index.d.ts +188 -90
  217. package/dist/index.js +94 -90
  218. package/dist/lib/data-islands.js +1 -1
  219. package/dist/lib/field-context.js +1 -1
  220. package/dist/lib/floating-arrow.js +1 -1
  221. package/dist/lib/islands.js +1 -1
  222. package/dist/lib/layer.js +3 -3
  223. package/dist/lib/locale.js +2 -2
  224. package/dist/lib/menu.js +2 -2
  225. package/dist/lib/provider.js +4 -4
  226. package/dist/lib/theme-scope.js +4 -3
  227. package/dist/lib/value-format.js +1 -1
  228. package/dist/lib/variants.js +2 -2
  229. package/dist/locales/ar.d.ts +2087 -0
  230. package/dist/locales/ar.js +2088 -0
  231. package/dist/locales/de.d.ts +2087 -0
  232. package/dist/locales/de.js +2088 -0
  233. package/dist/locales/en.d.ts +1 -0
  234. package/dist/locales/en.js +1 -0
  235. package/dist/locales/es.d.ts +2087 -0
  236. package/dist/locales/es.js +2087 -0
  237. package/dist/locales/fr.d.ts +2087 -0
  238. package/dist/locales/fr.js +2088 -0
  239. package/dist/locales/tr.d.ts +1 -0
  240. package/dist/locales/tr.js +1 -0
  241. package/dist/media/focal-point.js +1 -1
  242. package/dist/media/gallery.js +1 -1
  243. package/dist/media/image-cropper.js +1 -1
  244. package/dist/media/image-field.js +2 -2
  245. package/dist/media/lightbox.js +4 -3
  246. package/dist/media/link-preview.js +3 -3
  247. package/dist/media/media-library.js +4 -4
  248. package/dist/media/media-picker.js +1 -1
  249. package/dist/media/media-provider.js +1 -1
  250. package/dist/media/video-player.js +4 -4
  251. package/dist/motion/count-up.js +1 -1
  252. package/dist/motion/motion-scope.js +2 -2
  253. package/dist/motion/page-transition.js +1 -1
  254. package/dist/motion/parallax.js +2 -2
  255. package/dist/motion/pointer.js +3 -3
  256. package/dist/motion/reveal.js +3 -3
  257. package/dist/motion/skeleton-swap.js +1 -1
  258. package/dist/motion/text-reveal.d.ts +3 -1
  259. package/dist/motion/text-reveal.js +6 -4
  260. package/dist/motion/ticker.js +1 -1
  261. package/dist/node_modules/.vite/vitest/da39a3ee5e6b4b0d3255bfef95601890afd80709/results.json +1 -0
  262. package/dist/render/block-renderer.js +1 -1
  263. package/dist/scheduler/gantt.js +2 -2
  264. package/dist/scheduler/resource-calendar.js +2 -2
  265. package/dist/scheduler/scheduler.js +3 -3
  266. package/dist/scheduler/time-tracker.js +4 -4
  267. package/dist/sortable/kanban.js +2 -2
  268. package/dist/sortable/sortable-list.js +2 -2
  269. package/dist/sortable/sortable.js +4 -4
  270. package/dist/styles/blocks.css +18 -9
  271. package/dist/styles/editors.css +2 -1
  272. package/dist/styles/media.css +31 -5
  273. package/dist/styles.css +39 -9
  274. package/package.json +1 -1
@@ -95,13 +95,17 @@ export const site2Labels = {
95
95
  email: "Email",
96
96
  hours: "Hours",
97
97
  // Map & hours
98
- openNow: "Open now",
99
- closesAt: "closes at {time}",
98
+ // Status line "head · tail" (OpenNow). Each part says it once: "Open · until 1 AM".
99
+ openNow: "Open",
100
+ openUntil: "until {time}",
100
101
  closingSoon: "Closing soon",
102
+ closingSoonUntil: "open until {time}",
103
+ openAllDay: "24 hours",
101
104
  closed: "Closed",
102
105
  closedToday: "Closed today",
103
106
  opensAt: "opens {day} at {time}",
104
107
  opensTodayAt: "opens at {time}",
108
+ opensTomorrowAt: "opens tomorrow at {time}",
105
109
  open24h: "Open 24 hours",
106
110
  openingHours: "Opening hours",
107
111
  openingHoursOf: "Opening hours, {name}",
@@ -130,6 +134,11 @@ export const site2Labels = {
130
134
  tagSpicy: "Spicy",
131
135
  tagNew: "New",
132
136
  tagChefPick: "Chef’s pick",
137
+ tagDairyFree: "Dairy-free",
138
+ tagNutFree: "Nut-free",
139
+ tagHalal: "Halal",
140
+ tagToShare: "To share",
141
+ tagSeasonal: "Seasonal",
133
142
  allergen_gluten: "Gluten",
134
143
  allergen_crustaceans: "Crustaceans",
135
144
  allergen_eggs: "Eggs",
@@ -295,13 +304,17 @@ export const site2LabelsTr = {
295
304
  phone: "Telefon",
296
305
  email: "E-posta",
297
306
  hours: "Çalışma saatleri",
298
- openNow: "Şu an açık",
299
- closesAt: "{time}’de kapanıyor",
307
+ // {timeTo} = "01:00’e", {timeAt} = "12:00’de" — the suffix follows the spoken time.
308
+ openNow: "Açık",
309
+ openUntil: "{timeTo} kadar",
300
310
  closingSoon: "Birazdan kapanıyor",
311
+ closingSoonUntil: "{timeTo} kadar açık",
312
+ openAllDay: "24 saat",
301
313
  closed: "Kapalı",
302
314
  closedToday: "Bugün kapalı",
303
- opensAt: "{day} {time}’de açılıyor",
304
- opensTodayAt: "{time}’de açılıyor",
315
+ opensAt: "{day} {timeAt} açılıyor",
316
+ opensTodayAt: "bugün {timeAt} açılıyor",
317
+ opensTomorrowAt: "yarın {timeAt} açılıyor",
305
318
  open24h: "24 saat açık",
306
319
  openingHours: "Çalışma saatleri",
307
320
  openingHoursOf: "Çalışma saatleri, {name}",
@@ -329,6 +342,11 @@ export const site2LabelsTr = {
329
342
  tagSpicy: "Acılı",
330
343
  tagNew: "Yeni",
331
344
  tagChefPick: "Şefin seçimi",
345
+ tagDairyFree: "Sütsüz",
346
+ tagNutFree: "Kuruyemişsiz",
347
+ tagHalal: "Helal",
348
+ tagToShare: "Paylaşımlık",
349
+ tagSeasonal: "Mevsimlik",
332
350
  allergen_gluten: "Gluten",
333
351
  allergen_crustaceans: "Kabuklular",
334
352
  allergen_eggs: "Yumurta",
@@ -403,6 +421,814 @@ export const site2LabelsTr = {
403
421
  popularPages: "Sık ziyaret edilenler",
404
422
  stillStuck: "Hâlâ bulamadınız mı? {phone} numarasını arayın.",
405
423
  };
424
+ /** German dictionary. Legal-flavoured texts are neutral templates — review with counsel. */
425
+ export const site2LabelsDe = {
426
+ billingPeriod: "Abrechnungszeitraum",
427
+ monthly: "Monatlich",
428
+ yearly: "Jährlich",
429
+ perMonth: "/Monat",
430
+ perYear: "/Jahr",
431
+ oneOff: "einmalig",
432
+ priceFrom: "ab",
433
+ priceFree: "Kostenlos",
434
+ included: "Inklusive",
435
+ notIncluded: "Nicht enthalten",
436
+ yes: "Ja",
437
+ no: "Nein",
438
+ comparePlans: "Tarife vergleichen",
439
+ showPlan: "Tarif anzeigen",
440
+ feature: "Funktion",
441
+ quoteOpen: "„",
442
+ quoteClose: "“",
443
+ ratingOutOf: "{rating} von 5",
444
+ ratingSummary: "{rating} auf {source}",
445
+ ratingSummaryDirect: "Mit {rating} von 5 bewertet",
446
+ reviewCount: "{count, plural, one {# Bewertung} other {# Bewertungen}}",
447
+ readAllReviews: "Alle Bewertungen lesen",
448
+ previous: "Zurück",
449
+ next: "Weiter",
450
+ slideCounter: "{index} / {total}",
451
+ slideLabel: "{index} von {total}",
452
+ carousel: "Karussell",
453
+ slide: "Folie",
454
+ profileOf: "{name} auf {network}",
455
+ minRead: "{count} Min. Lesezeit",
456
+ noPosts: "Noch keine Beiträge",
457
+ noPostsHint: "Neue Artikel erscheinen zuerst hier. Schauen Sie bald wieder vorbei.",
458
+ categories: "Kategorien",
459
+ allPosts: "Alle Beiträge",
460
+ pagination: "Seitennavigation",
461
+ previousPage: "Vorherige Seite",
462
+ nextPage: "Nächste Seite",
463
+ pageOf: "Seite {page} von {total}",
464
+ by: "Von {name}",
465
+ onThisPage: "Auf dieser Seite",
466
+ breadcrumb: "Brotkrumennavigation",
467
+ tags: "Schlagwörter",
468
+ share: "Teilen",
469
+ copyLink: "Link kopieren",
470
+ linkCopied: "Link kopiert",
471
+ shareOn: "Auf {network} teilen",
472
+ shareByEmail: "Per E-Mail teilen",
473
+ updated: "Aktualisiert am {date}",
474
+ published: "Veröffentlicht am {date}",
475
+ preview: "Vorschau",
476
+ previewNotice: "Entwurfsvorschau – für Besucher nicht sichtbar.",
477
+ writtenBy: "Geschrieben von",
478
+ relatedPosts: "Weiterlesen",
479
+ fieldName: "Vor- und Nachname",
480
+ fieldEmail: "E-Mail",
481
+ fieldPhone: "Telefon",
482
+ fieldCompany: "Unternehmen",
483
+ fieldSubject: "Betreff",
484
+ fieldBudget: "Budget",
485
+ fieldMessage: "Nachricht",
486
+ fieldDate: "Wunschtermin",
487
+ choose: "Bitte wählen…",
488
+ send: "Nachricht senden",
489
+ sending: "Wird gesendet…",
490
+ sent: "Danke – Ihre Nachricht ist angekommen. Wir antworten in der Regel innerhalb eines Werktags.",
491
+ required: "Pflichtfeld",
492
+ optional: "(optional)",
493
+ errorRequired: "Bitte füllen Sie {field} aus.",
494
+ errorEmail: "Geben Sie eine E-Mail-Adresse wie name@firma.de ein.",
495
+ errorPhone: "Geben Sie eine Telefonnummer mit Ländervorwahl ein, z. B. +49 30 000000.",
496
+ errorTooLong: "{field} darf höchstens {max} Zeichen lang sein.",
497
+ errorSummary: "{count, plural, one {Korrigieren Sie # Feld, um das Formular zu senden:} other {Korrigieren Sie # Felder, um das Formular zu senden:}}",
498
+ errorServer: "Ihre Nachricht konnte nicht gesendet werden.",
499
+ errorServerCall: "Bitte versuchen Sie es erneut oder rufen Sie uns unter {phone} an.",
500
+ privacyRead: "Ich habe die {link} gelesen.",
501
+ privacyLink: "Datenschutzerklärung",
502
+ privacyRequired: "Bitte bestätigen Sie, dass Sie die Datenschutzerklärung gelesen haben.",
503
+ marketingConsent: "Ich möchte gelegentlich Neuigkeiten und Angebote erhalten. Abmelden ist jederzeit möglich.",
504
+ honeypot: "Dieses Feld bitte leer lassen",
505
+ contactDetails: "Kontaktdaten",
506
+ address: "Adresse",
507
+ phone: "Telefon",
508
+ email: "E-Mail",
509
+ hours: "Öffnungszeiten",
510
+ openNow: "Geöffnet",
511
+ openUntil: "bis {time}",
512
+ closingSoon: "Schließt bald",
513
+ closingSoonUntil: "geöffnet bis {time}",
514
+ openAllDay: "24 Stunden",
515
+ closed: "Geschlossen",
516
+ closedToday: "Heute geschlossen",
517
+ opensAt: "öffnet am {day} um {time}",
518
+ opensTodayAt: "öffnet um {time}",
519
+ opensTomorrowAt: "öffnet morgen um {time}",
520
+ open24h: "Rund um die Uhr geöffnet",
521
+ openingHours: "Öffnungszeiten",
522
+ openingHoursOf: "Öffnungszeiten, {name}",
523
+ today: "Heute",
524
+ closedDay: "Geschlossen",
525
+ loadMap: "Karte laden",
526
+ mapOf: "Karte von {name}",
527
+ mapNotice: "Die Karte wird von {provider} geladen, dabei können Cookies gesetzt werden.",
528
+ rememberChoice: "Karten immer laden",
529
+ directions: "Route",
530
+ directionsVia: "Route in {provider}",
531
+ branches: "Standorte",
532
+ chooseBranch: "Standort wählen",
533
+ call: "Anrufen",
534
+ callNumber: "{phone} anrufen",
535
+ menuCategories: "Speisekarte",
536
+ unavailable: "Heute nicht verfügbar",
537
+ marketPrice: "Tagespreis",
538
+ allergens: "Allergene",
539
+ book: "Buchen",
540
+ bookService: "{service} buchen",
541
+ tagVegetarian: "Vegetarisch",
542
+ tagVegan: "Vegan",
543
+ tagGlutenFree: "Glutenfrei",
544
+ tagSpicy: "Scharf",
545
+ tagNew: "Neu",
546
+ tagChefPick: "Empfehlung des Küchenchefs",
547
+ tagDairyFree: "Laktosefrei",
548
+ tagNutFree: "Ohne Nüsse",
549
+ tagHalal: "Halal",
550
+ tagToShare: "Zum Teilen",
551
+ tagSeasonal: "Saisonal",
552
+ allergen_gluten: "Gluten",
553
+ allergen_crustaceans: "Krebstiere",
554
+ allergen_eggs: "Eier",
555
+ allergen_fish: "Fisch",
556
+ allergen_peanuts: "Erdnüsse",
557
+ allergen_soybeans: "Soja",
558
+ allergen_milk: "Milch",
559
+ allergen_nuts: "Schalenfrüchte",
560
+ allergen_celery: "Sellerie",
561
+ allergen_mustard: "Senf",
562
+ allergen_sesame: "Sesam",
563
+ allergen_sulphites: "Sulfite",
564
+ allergen_lupin: "Lupinen",
565
+ allergen_molluscs: "Weichtiere",
566
+ openImage: "Bild {index} von {total} öffnen",
567
+ imageCounter: "{index} / {total}",
568
+ galleryImages: "{count, plural, one {# Foto} other {# Fotos}}",
569
+ cookies: "Cookies",
570
+ cookieConsent: "Cookie-Einwilligung",
571
+ acceptAll: "Alle akzeptieren",
572
+ rejectAll: "Alle ablehnen",
573
+ preferences: "Einstellungen",
574
+ savePreferences: "Auswahl speichern",
575
+ cookiePreferences: "Cookie-Einstellungen",
576
+ cookiePreferencesLead: "Wählen Sie, welche Cookies wir verwenden dürfen. Notwendige Cookies halten die Website funktionsfähig und lassen sich nicht abschalten.",
577
+ cookiePolicy: "Cookie-Richtlinie",
578
+ catNecessary: "Notwendig",
579
+ catNecessaryHint: "Sicherheit, Lastverteilung und das Speichern dieser Auswahl.",
580
+ catFunctional: "Funktional",
581
+ catFunctionalHint: "Karten, Videoplayer und Chat, die sich Ihre Einstellungen merken.",
582
+ catAnalytics: "Statistik",
583
+ catAnalyticsHint: "Anonyme Besuchsstatistiken, mit denen wir unsere Seiten verbessern.",
584
+ catMarketing: "Marketing",
585
+ catMarketingHint: "Werbemessung und personalisierte Werbung auf anderen Websites.",
586
+ alwaysOn: "Immer aktiv",
587
+ cookieText: "Wir verwenden notwendige Cookies, damit diese Website funktioniert. Mit Ihrer Erlaubnis nutzen wir zusätzlich Statistik- und Marketing-Cookies. Sie können Ihre Wahl jederzeit unter Cookie-Einstellungen ändern.",
588
+ cookieSettings: "Cookie-Einstellungen",
589
+ loadContent: "{provider} laden",
590
+ contentNotice: "Dieser Inhalt wird von {provider} bereitgestellt, dabei können Cookies gesetzt werden.",
591
+ messageUs: "Schreiben Sie uns",
592
+ messageUsOn: "Schreiben Sie uns auf {network}",
593
+ contactActions: "Schnellkontakt",
594
+ directionsShort: "Route",
595
+ booking: "Buchen",
596
+ emailShort: "E-Mail",
597
+ offHours: "Wir haben gerade geschlossen – hinterlassen Sie eine Nachricht, wir melden uns am Morgen.",
598
+ footer: "Fußzeile",
599
+ footerNav: "Fußzeile",
600
+ social: "Soziale Medien",
601
+ legal: "Rechtliches",
602
+ copyright: "© {year} {name}",
603
+ madeBy: "Website von {name}",
604
+ newsletter: "Newsletter",
605
+ newsletterHint: "Eine E-Mail im Monat. Kein Spam.",
606
+ emailAddress: "E-Mail-Adresse",
607
+ subscribe: "Abonnieren",
608
+ subscribed: "Danke – bitte bestätigen Sie die Anmeldung in Ihrem Postfach.",
609
+ notFoundCode: "Fehler 404",
610
+ notFoundTitle: "Diese Seite ist umgezogen – oder hat nie *existiert*.",
611
+ notFoundText: "Der Link ist vielleicht veraltet oder falsch geschrieben. Probieren Sie die Seiten unten oder durchsuchen Sie die Website.",
612
+ serverErrorCode: "Fehler 500",
613
+ serverErrorTitle: "Bei uns ist etwas *schiefgelaufen*.",
614
+ serverErrorText: "Die Seite konnte nicht geladen werden. Meist ist das nur vorübergehend – versuchen Sie es gleich noch einmal.",
615
+ maintenanceCode: "Wartung",
616
+ maintenanceTitle: "Wir sind gleich *wieder* da.",
617
+ maintenanceText: "Wir aktualisieren gerade die Website. Telefonische Buchungen funktionieren wie gewohnt.",
618
+ backHome: "Zur Startseite",
619
+ tryAgain: "Erneut versuchen",
620
+ search: "Suchen",
621
+ searchSite: "Website durchsuchen",
622
+ searchPlaceholder: "Wonach haben Sie gesucht?",
623
+ popularPages: "Beliebte Seiten",
624
+ stillStuck: "Immer noch nicht gefunden? Rufen Sie {phone} an.",
625
+ };
626
+ /** French dictionary. Legal-flavoured texts are neutral templates — review with counsel. */
627
+ export const site2LabelsFr = {
628
+ billingPeriod: "Période de facturation",
629
+ monthly: "Mensuel",
630
+ yearly: "Annuel",
631
+ perMonth: "/mois",
632
+ perYear: "/an",
633
+ oneOff: "paiement unique",
634
+ priceFrom: "à partir de",
635
+ priceFree: "Gratuit",
636
+ included: "Inclus",
637
+ notIncluded: "Non inclus",
638
+ yes: "Oui",
639
+ no: "Non",
640
+ comparePlans: "Comparer les offres",
641
+ showPlan: "Voir l’offre",
642
+ feature: "Fonctionnalité",
643
+ quoteOpen: "« ",
644
+ quoteClose: " »",
645
+ ratingOutOf: "{rating} sur 5",
646
+ ratingSummary: "{rating} sur {source}",
647
+ ratingSummaryDirect: "Noté {rating} sur 5",
648
+ reviewCount: "{count, plural, one {# avis} other {# avis}}",
649
+ readAllReviews: "Lire tous les avis",
650
+ previous: "Précédent",
651
+ next: "Suivant",
652
+ slideCounter: "{index} / {total}",
653
+ slideLabel: "{index} sur {total}",
654
+ carousel: "carrousel",
655
+ slide: "diapositive",
656
+ profileOf: "{name} sur {network}",
657
+ minRead: "{count} min de lecture",
658
+ noPosts: "Aucun article pour le moment",
659
+ noPostsHint: "Les nouveaux articles paraissent ici en premier. Revenez bientôt.",
660
+ categories: "Catégories",
661
+ allPosts: "Tous les articles",
662
+ pagination: "Pagination",
663
+ previousPage: "Page précédente",
664
+ nextPage: "Page suivante",
665
+ pageOf: "Page {page} sur {total}",
666
+ by: "Par {name}",
667
+ onThisPage: "Sur cette page",
668
+ breadcrumb: "Fil d’Ariane",
669
+ tags: "Mots-clés",
670
+ share: "Partager",
671
+ copyLink: "Copier le lien",
672
+ linkCopied: "Lien copié",
673
+ shareOn: "Partager sur {network}",
674
+ shareByEmail: "Partager par e-mail",
675
+ updated: "Mis à jour le {date}",
676
+ published: "Publié le {date}",
677
+ preview: "Aperçu",
678
+ previewNotice: "Aperçu du brouillon — invisible pour les visiteurs.",
679
+ writtenBy: "Écrit par",
680
+ relatedPosts: "À lire aussi",
681
+ fieldName: "Nom complet",
682
+ fieldEmail: "E-mail",
683
+ fieldPhone: "Téléphone",
684
+ fieldCompany: "Entreprise",
685
+ fieldSubject: "Objet",
686
+ fieldBudget: "Budget",
687
+ fieldMessage: "Message",
688
+ fieldDate: "Date souhaitée",
689
+ choose: "Choisir…",
690
+ send: "Envoyer le message",
691
+ sending: "Envoi en cours…",
692
+ sent: "Merci, votre message nous est bien parvenu. Nous répondons généralement sous un jour ouvré.",
693
+ required: "Obligatoire",
694
+ optional: "(facultatif)",
695
+ errorRequired: "Veuillez renseigner le champ {field}.",
696
+ errorEmail: "Saisissez une adresse e-mail du type nom@entreprise.fr.",
697
+ errorPhone: "Saisissez un numéro avec l’indicatif du pays, par ex. +33 1 00 00 00 00.",
698
+ errorTooLong: "{field} ne doit pas dépasser {max} caractères.",
699
+ errorSummary: "{count, plural, one {Corrigez # champ pour envoyer le formulaire :} other {Corrigez # champs pour envoyer le formulaire :}}",
700
+ errorServer: "Nous n’avons pas pu envoyer votre message.",
701
+ errorServerCall: "Veuillez réessayer ou nous appeler au {phone}.",
702
+ privacyRead: "J’ai lu la {link}.",
703
+ privacyLink: "politique de confidentialité",
704
+ privacyRequired: "Veuillez confirmer avoir lu la politique de confidentialité.",
705
+ marketingConsent: "Je souhaite recevoir de temps en temps des nouvelles et des offres. Je peux me désabonner à tout moment.",
706
+ honeypot: "Laissez ce champ vide",
707
+ contactDetails: "Coordonnées",
708
+ address: "Adresse",
709
+ phone: "Téléphone",
710
+ email: "E-mail",
711
+ hours: "Horaires",
712
+ openNow: "Ouvert",
713
+ openUntil: "jusqu’à {time}",
714
+ closingSoon: "Ferme bientôt",
715
+ closingSoonUntil: "ouvert jusqu’à {time}",
716
+ openAllDay: "24 h/24",
717
+ closed: "Fermé",
718
+ closedToday: "Fermé aujourd’hui",
719
+ opensAt: "ouvre {day} à {time}",
720
+ opensTodayAt: "ouvre à {time}",
721
+ opensTomorrowAt: "ouvre demain à {time}",
722
+ open24h: "Ouvert 24 h/24",
723
+ openingHours: "Horaires d’ouverture",
724
+ openingHoursOf: "Horaires d’ouverture, {name}",
725
+ today: "Aujourd’hui",
726
+ closedDay: "Fermé",
727
+ loadMap: "Charger la carte",
728
+ mapOf: "Carte de {name}",
729
+ mapNotice: "La carte est chargée depuis {provider}, qui peut déposer des cookies.",
730
+ rememberChoice: "Toujours charger les cartes",
731
+ directions: "Itinéraire",
732
+ directionsVia: "Itinéraire dans {provider}",
733
+ branches: "Adresses",
734
+ chooseBranch: "Choisir une adresse",
735
+ call: "Appeler",
736
+ callNumber: "Appeler le {phone}",
737
+ menuCategories: "Sections du menu",
738
+ unavailable: "Pas aujourd’hui",
739
+ marketPrice: "Prix du marché",
740
+ allergens: "Allergènes",
741
+ book: "Réserver",
742
+ bookService: "Réserver : {service}",
743
+ tagVegetarian: "Végétarien",
744
+ tagVegan: "Végan",
745
+ tagGlutenFree: "Sans gluten",
746
+ tagSpicy: "Épicé",
747
+ tagNew: "Nouveau",
748
+ tagChefPick: "Suggestion du chef",
749
+ tagDairyFree: "Sans lactose",
750
+ tagNutFree: "Sans fruits à coque",
751
+ tagHalal: "Halal",
752
+ tagToShare: "À partager",
753
+ tagSeasonal: "De saison",
754
+ allergen_gluten: "Gluten",
755
+ allergen_crustaceans: "Crustacés",
756
+ allergen_eggs: "Œufs",
757
+ allergen_fish: "Poisson",
758
+ allergen_peanuts: "Arachides",
759
+ allergen_soybeans: "Soja",
760
+ allergen_milk: "Lait",
761
+ allergen_nuts: "Fruits à coque",
762
+ allergen_celery: "Céleri",
763
+ allergen_mustard: "Moutarde",
764
+ allergen_sesame: "Sésame",
765
+ allergen_sulphites: "Sulfites",
766
+ allergen_lupin: "Lupin",
767
+ allergen_molluscs: "Mollusques",
768
+ openImage: "Ouvrir l’image {index} sur {total}",
769
+ imageCounter: "{index} / {total}",
770
+ galleryImages: "{count, plural, one {# photo} other {# photos}}",
771
+ cookies: "Cookies",
772
+ cookieConsent: "Consentement aux cookies",
773
+ acceptAll: "Tout accepter",
774
+ rejectAll: "Tout refuser",
775
+ preferences: "Personnaliser",
776
+ savePreferences: "Enregistrer mes choix",
777
+ cookiePreferences: "Préférences de cookies",
778
+ cookiePreferencesLead: "Choisissez les cookies que nous pouvons utiliser. Les cookies nécessaires assurent le fonctionnement du site et ne peuvent pas être désactivés.",
779
+ cookiePolicy: "Politique relative aux cookies",
780
+ catNecessary: "Nécessaires",
781
+ catNecessaryHint: "Sécurité, répartition de charge et mémorisation de ce choix.",
782
+ catFunctional: "Fonctionnels",
783
+ catFunctionalHint: "Cartes, lecteurs vidéo et chat qui retiennent vos réglages.",
784
+ catAnalytics: "Mesure d’audience",
785
+ catAnalyticsHint: "Statistiques de visite anonymes qui nous aident à améliorer nos pages.",
786
+ catMarketing: "Marketing",
787
+ catMarketingHint: "Mesure publicitaire et publicités personnalisées sur d’autres sites.",
788
+ alwaysOn: "Toujours actifs",
789
+ cookieText: "Nous utilisons des cookies nécessaires au fonctionnement du site. Avec votre accord, nous utiliserions aussi des cookies de mesure d’audience et de marketing. Vous pouvez modifier ce choix à tout moment dans Paramètres des cookies.",
790
+ cookieSettings: "Paramètres des cookies",
791
+ loadContent: "Charger {provider}",
792
+ contentNotice: "Ce contenu est hébergé par {provider}, qui peut déposer des cookies.",
793
+ messageUs: "Écrivez-nous",
794
+ messageUsOn: "Écrivez-nous sur {network}",
795
+ contactActions: "Contact rapide",
796
+ directionsShort: "Itinéraire",
797
+ booking: "Réserver",
798
+ emailShort: "E-mail",
799
+ offHours: "Nous sommes fermés pour le moment : laissez-nous un message, nous vous répondrons dès demain matin.",
800
+ footer: "Pied de page",
801
+ footerNav: "Pied de page",
802
+ social: "Réseaux sociaux",
803
+ legal: "Mentions légales",
804
+ copyright: "© {year} {name}",
805
+ madeBy: "Site réalisé par {name}",
806
+ newsletter: "Newsletter",
807
+ newsletterHint: "Un e-mail par mois. Pas de spam.",
808
+ emailAddress: "Adresse e-mail",
809
+ subscribe: "S’abonner",
810
+ subscribed: "Merci ! Confirmez votre inscription depuis votre boîte de réception.",
811
+ notFoundCode: "Erreur 404",
812
+ notFoundTitle: "Cette page a déménagé, ou n’a jamais *existé*.",
813
+ notFoundText: "Le lien est peut-être ancien ou mal saisi. Essayez les pages ci-dessous ou lancez une recherche.",
814
+ serverErrorCode: "Erreur 500",
815
+ serverErrorTitle: "Un *problème* est survenu de notre côté.",
816
+ serverErrorText: "La page ne s’est pas chargée. C’est généralement passager : réessayez dans un instant.",
817
+ maintenanceCode: "Maintenance",
818
+ maintenanceTitle: "Nous *revenons* très vite.",
819
+ maintenanceText: "Nous mettons le site à jour. Les réservations par téléphone restent possibles.",
820
+ backHome: "Retour à l’accueil",
821
+ tryAgain: "Réessayer",
822
+ search: "Rechercher",
823
+ searchSite: "Rechercher sur le site",
824
+ searchPlaceholder: "Que cherchiez-vous ?",
825
+ popularPages: "Pages populaires",
826
+ stillStuck: "Toujours bloqué ? Appelez le {phone}.",
827
+ };
828
+ /** Spanish dictionary. Legal-flavoured texts are neutral templates — review with counsel. */
829
+ export const site2LabelsEs = {
830
+ billingPeriod: "Periodo de facturación",
831
+ monthly: "Mensual",
832
+ yearly: "Anual",
833
+ perMonth: "/mes",
834
+ perYear: "/año",
835
+ oneOff: "pago único",
836
+ priceFrom: "desde",
837
+ priceFree: "Gratis",
838
+ included: "Incluido",
839
+ notIncluded: "No incluido",
840
+ yes: "Sí",
841
+ no: "No",
842
+ comparePlans: "Comparar planes",
843
+ showPlan: "Ver plan",
844
+ feature: "Característica",
845
+ quoteOpen: "“",
846
+ quoteClose: "”",
847
+ ratingOutOf: "{rating} de 5",
848
+ ratingSummary: "{rating} en {source}",
849
+ ratingSummaryDirect: "Valoración de {rating} sobre 5",
850
+ reviewCount: "{count, plural, one {# reseña} other {# reseñas}}",
851
+ readAllReviews: "Leer todas las reseñas",
852
+ previous: "Anterior",
853
+ next: "Siguiente",
854
+ slideCounter: "{index} / {total}",
855
+ slideLabel: "{index} de {total}",
856
+ carousel: "carrusel",
857
+ slide: "diapositiva",
858
+ profileOf: "{name} en {network}",
859
+ minRead: "{count} min de lectura",
860
+ noPosts: "Todavía no hay publicaciones",
861
+ noPostsHint: "Los artículos nuevos aparecen aquí primero. Vuelve pronto.",
862
+ categories: "Categorías",
863
+ allPosts: "Todas las publicaciones",
864
+ pagination: "Paginación",
865
+ previousPage: "Página anterior",
866
+ nextPage: "Página siguiente",
867
+ pageOf: "Página {page} de {total}",
868
+ by: "Por {name}",
869
+ onThisPage: "En esta página",
870
+ breadcrumb: "Ruta de navegación",
871
+ tags: "Etiquetas",
872
+ share: "Compartir",
873
+ copyLink: "Copiar enlace",
874
+ linkCopied: "Enlace copiado",
875
+ shareOn: "Compartir en {network}",
876
+ shareByEmail: "Compartir por correo",
877
+ updated: "Actualizado el {date}",
878
+ published: "Publicado el {date}",
879
+ preview: "Vista previa",
880
+ previewNotice: "Vista previa del borrador: los visitantes no la ven.",
881
+ writtenBy: "Escrito por",
882
+ relatedPosts: "También te puede interesar",
883
+ fieldName: "Nombre y apellidos",
884
+ fieldEmail: "Correo electrónico",
885
+ fieldPhone: "Teléfono",
886
+ fieldCompany: "Empresa",
887
+ fieldSubject: "Asunto",
888
+ fieldBudget: "Presupuesto",
889
+ fieldMessage: "Mensaje",
890
+ fieldDate: "Fecha preferida",
891
+ choose: "Elige…",
892
+ send: "Enviar mensaje",
893
+ sending: "Enviando…",
894
+ sent: "Gracias, hemos recibido tu mensaje. Solemos responder en un día laborable.",
895
+ required: "Obligatorio",
896
+ optional: "(opcional)",
897
+ errorRequired: "Rellena el campo {field}.",
898
+ errorEmail: "Introduce un correo como nombre@empresa.com.",
899
+ errorPhone: "Introduce un teléfono con prefijo internacional, p. ej. +34 910 00 00 00.",
900
+ errorTooLong: "{field} no puede superar los {max} caracteres.",
901
+ errorSummary: "{count, plural, one {Corrige # campo para enviar el formulario:} other {Corrige # campos para enviar el formulario:}}",
902
+ errorServer: "No hemos podido enviar tu mensaje.",
903
+ errorServerCall: "Inténtalo de nuevo o llámanos al {phone}.",
904
+ privacyRead: "He leído la {link}.",
905
+ privacyLink: "política de privacidad",
906
+ privacyRequired: "Confirma que has leído la política de privacidad.",
907
+ marketingConsent: "Quiero recibir novedades y ofertas de vez en cuando. Puedo darme de baja cuando quiera.",
908
+ honeypot: "Deja este campo vacío",
909
+ contactDetails: "Datos de contacto",
910
+ address: "Dirección",
911
+ phone: "Teléfono",
912
+ email: "Correo electrónico",
913
+ hours: "Horario",
914
+ openNow: "Abierto",
915
+ openUntil: "hasta las {time}",
916
+ closingSoon: "Cierra pronto",
917
+ closingSoonUntil: "abierto hasta las {time}",
918
+ openAllDay: "24 horas",
919
+ closed: "Cerrado",
920
+ closedToday: "Hoy cerrado",
921
+ opensAt: "abre el {day} a las {time}",
922
+ opensTodayAt: "abre a las {time}",
923
+ opensTomorrowAt: "abre mañana a las {time}",
924
+ open24h: "Abierto 24 horas",
925
+ openingHours: "Horario de apertura",
926
+ openingHoursOf: "Horario de apertura, {name}",
927
+ today: "Hoy",
928
+ closedDay: "Cerrado",
929
+ loadMap: "Cargar mapa",
930
+ mapOf: "Mapa de {name}",
931
+ mapNotice: "El mapa se carga desde {provider}, que puede instalar cookies.",
932
+ rememberChoice: "Cargar siempre los mapas",
933
+ directions: "Cómo llegar",
934
+ directionsVia: "Cómo llegar en {provider}",
935
+ branches: "Ubicaciones",
936
+ chooseBranch: "Elige una ubicación",
937
+ call: "Llamar",
938
+ callNumber: "Llamar al {phone}",
939
+ menuCategories: "Secciones de la carta",
940
+ unavailable: "Hoy no disponible",
941
+ marketPrice: "Precio según mercado",
942
+ allergens: "Alérgenos",
943
+ book: "Reservar",
944
+ bookService: "Reservar {service}",
945
+ tagVegetarian: "Vegetariano",
946
+ tagVegan: "Vegano",
947
+ tagGlutenFree: "Sin gluten",
948
+ tagSpicy: "Picante",
949
+ tagNew: "Nuevo",
950
+ tagChefPick: "Recomendación del chef",
951
+ tagDairyFree: "Sin lácteos",
952
+ tagNutFree: "Sin frutos secos",
953
+ tagHalal: "Halal",
954
+ tagToShare: "Para compartir",
955
+ tagSeasonal: "De temporada",
956
+ allergen_gluten: "Gluten",
957
+ allergen_crustaceans: "Crustáceos",
958
+ allergen_eggs: "Huevos",
959
+ allergen_fish: "Pescado",
960
+ allergen_peanuts: "Cacahuetes",
961
+ allergen_soybeans: "Soja",
962
+ allergen_milk: "Leche",
963
+ allergen_nuts: "Frutos de cáscara",
964
+ allergen_celery: "Apio",
965
+ allergen_mustard: "Mostaza",
966
+ allergen_sesame: "Sésamo",
967
+ allergen_sulphites: "Sulfitos",
968
+ allergen_lupin: "Altramuces",
969
+ allergen_molluscs: "Moluscos",
970
+ openImage: "Abrir imagen {index} de {total}",
971
+ imageCounter: "{index} / {total}",
972
+ galleryImages: "{count, plural, one {# foto} other {# fotos}}",
973
+ cookies: "Cookies",
974
+ cookieConsent: "Consentimiento de cookies",
975
+ acceptAll: "Aceptar todas",
976
+ rejectAll: "Rechazar todas",
977
+ preferences: "Preferencias",
978
+ savePreferences: "Guardar selección",
979
+ cookiePreferences: "Preferencias de cookies",
980
+ cookiePreferencesLead: "Elige qué cookies podemos usar. Las cookies necesarias mantienen el sitio en funcionamiento y no se pueden desactivar.",
981
+ cookiePolicy: "Política de cookies",
982
+ catNecessary: "Necesarias",
983
+ catNecessaryHint: "Seguridad, balanceo de carga y recordar esta elección.",
984
+ catFunctional: "Funcionales",
985
+ catFunctionalHint: "Mapas, reproductores de vídeo y chat que recuerdan tus ajustes.",
986
+ catAnalytics: "Analíticas",
987
+ catAnalyticsHint: "Estadísticas anónimas de visitas que nos ayudan a mejorar las páginas.",
988
+ catMarketing: "Marketing",
989
+ catMarketingHint: "Medición publicitaria y anuncios personalizados en otros sitios.",
990
+ alwaysOn: "Siempre activas",
991
+ cookieText: "Usamos cookies necesarias para que este sitio funcione. Con tu permiso, también usaríamos cookies analíticas y de marketing. Puedes cambiarlo cuando quieras en Configuración de cookies.",
992
+ cookieSettings: "Configuración de cookies",
993
+ loadContent: "Cargar {provider}",
994
+ contentNotice: "Este contenido está alojado en {provider}, que puede instalar cookies.",
995
+ messageUs: "Escríbenos",
996
+ messageUsOn: "Escríbenos por {network}",
997
+ contactActions: "Contacto rápido",
998
+ directionsShort: "Cómo llegar",
999
+ booking: "Reservar",
1000
+ emailShort: "Correo",
1001
+ offHours: "Ahora estamos cerrados: déjanos un mensaje y te responderemos por la mañana.",
1002
+ footer: "Pie de página",
1003
+ footerNav: "Pie de página",
1004
+ social: "Redes sociales",
1005
+ legal: "Aviso legal",
1006
+ copyright: "© {year} {name}",
1007
+ madeBy: "Web de {name}",
1008
+ newsletter: "Boletín",
1009
+ newsletterHint: "Un correo al mes. Sin spam.",
1010
+ emailAddress: "Correo electrónico",
1011
+ subscribe: "Suscribirme",
1012
+ subscribed: "¡Gracias! Revisa tu bandeja de entrada para confirmar.",
1013
+ notFoundCode: "Error 404",
1014
+ notFoundTitle: "Esta página se ha movido o nunca ha *existido*.",
1015
+ notFoundText: "Puede que el enlace sea antiguo o esté mal escrito. Prueba con las páginas de abajo o busca en el sitio.",
1016
+ serverErrorCode: "Error 500",
1017
+ serverErrorTitle: "Algo ha *fallado* por nuestra parte.",
1018
+ serverErrorText: "La página no se ha cargado. Suele ser algo temporal: vuelve a intentarlo en un momento.",
1019
+ maintenanceCode: "Mantenimiento",
1020
+ maintenanceTitle: "*Volvemos* enseguida.",
1021
+ maintenanceText: "Estamos actualizando el sitio. Las reservas por teléfono funcionan con normalidad.",
1022
+ backHome: "Volver al inicio",
1023
+ tryAgain: "Reintentar",
1024
+ search: "Buscar",
1025
+ searchSite: "Buscar en el sitio",
1026
+ searchPlaceholder: "¿Qué estabas buscando?",
1027
+ popularPages: "Páginas más visitadas",
1028
+ stillStuck: "¿Sigues sin encontrarlo? Llama al {phone}.",
1029
+ };
1030
+ /** Arabic dictionary (Modern Standard Arabic). Legal-flavoured texts are neutral templates — review with counsel. */
1031
+ export const site2LabelsAr = {
1032
+ billingPeriod: "فترة الفوترة",
1033
+ monthly: "شهريًا",
1034
+ yearly: "سنويًا",
1035
+ perMonth: "/شهر",
1036
+ perYear: "/سنة",
1037
+ oneOff: "دفعة واحدة",
1038
+ priceFrom: "ابتداءً من",
1039
+ priceFree: "مجاني",
1040
+ included: "مشمول",
1041
+ notIncluded: "غير مشمول",
1042
+ yes: "نعم",
1043
+ no: "لا",
1044
+ comparePlans: "قارن بين الباقات",
1045
+ showPlan: "عرض الباقة",
1046
+ feature: "الميزة",
1047
+ quoteOpen: "«",
1048
+ quoteClose: "»",
1049
+ ratingOutOf: "{rating} من 5",
1050
+ ratingSummary: "{rating} على {source}",
1051
+ ratingSummaryDirect: "التقييم {rating} من 5",
1052
+ reviewCount: "{count, plural, zero {لا توجد مراجعات} one {مراجعة واحدة} two {مراجعتان} few {# مراجعات} many {# مراجعة} other {# مراجعة}}",
1053
+ readAllReviews: "اقرأ جميع المراجعات",
1054
+ previous: "السابق",
1055
+ next: "التالي",
1056
+ slideCounter: "{index} / {total}",
1057
+ slideLabel: "{index} من {total}",
1058
+ carousel: "عرض دوّار",
1059
+ slide: "شريحة",
1060
+ profileOf: "{name} على {network}",
1061
+ minRead: "قراءة في {count} دقيقة",
1062
+ noPosts: "لا توجد مقالات بعد",
1063
+ noPostsHint: "تُنشر المقالات الجديدة هنا أولًا. عُد قريبًا.",
1064
+ categories: "التصنيفات",
1065
+ allPosts: "جميع المقالات",
1066
+ pagination: "التنقل بين الصفحات",
1067
+ previousPage: "الصفحة السابقة",
1068
+ nextPage: "الصفحة التالية",
1069
+ pageOf: "الصفحة {page} من {total}",
1070
+ by: "بقلم {name}",
1071
+ onThisPage: "في هذه الصفحة",
1072
+ breadcrumb: "مسار التنقل",
1073
+ tags: "الوسوم",
1074
+ share: "مشاركة",
1075
+ copyLink: "نسخ الرابط",
1076
+ linkCopied: "تم نسخ الرابط",
1077
+ shareOn: "شارك على {network}",
1078
+ shareByEmail: "شارك عبر البريد الإلكتروني",
1079
+ updated: "حُدّث في {date}",
1080
+ published: "نُشر في {date}",
1081
+ preview: "معاينة",
1082
+ previewNotice: "معاينة المسودة — غير مرئية للزوار.",
1083
+ writtenBy: "بقلم",
1084
+ relatedPosts: "اقرأ أيضًا",
1085
+ fieldName: "الاسم الكامل",
1086
+ fieldEmail: "البريد الإلكتروني",
1087
+ fieldPhone: "الهاتف",
1088
+ fieldCompany: "الشركة",
1089
+ fieldSubject: "الموضوع",
1090
+ fieldBudget: "الميزانية",
1091
+ fieldMessage: "الرسالة",
1092
+ fieldDate: "التاريخ المفضّل",
1093
+ choose: "اختر…",
1094
+ send: "إرسال الرسالة",
1095
+ sending: "جارٍ الإرسال…",
1096
+ sent: "شكرًا، وصلتنا رسالتك. نرد عادةً خلال يوم عمل واحد.",
1097
+ required: "مطلوب",
1098
+ optional: "(اختياري)",
1099
+ errorRequired: "يُرجى تعبئة {field}.",
1100
+ errorEmail: "أدخل بريدًا إلكترونيًا مثل name@company.com.",
1101
+ errorPhone: "أدخل رقم هاتف مع رمز الدولة، مثل ‎+971 4 000 0000.",
1102
+ errorTooLong: "يجب ألا يتجاوز {field} {max} حرفًا.",
1103
+ errorSummary: "{count, plural, zero {لا توجد حقول لتصحيحها:} one {صحّح حقلًا واحدًا لإرسال النموذج:} two {صحّح حقلين لإرسال النموذج:} few {صحّح # حقول لإرسال النموذج:} many {صحّح # حقلًا لإرسال النموذج:} other {صحّح # حقل لإرسال النموذج:}}",
1104
+ errorServer: "تعذّر إرسال رسالتك.",
1105
+ errorServerCall: "يُرجى المحاولة مجددًا، أو الاتصال بنا على {phone}.",
1106
+ privacyRead: "لقد قرأت {link}.",
1107
+ privacyLink: "إشعار الخصوصية",
1108
+ privacyRequired: "يُرجى تأكيد أنك قرأت إشعار الخصوصية.",
1109
+ marketingConsent: "أرغب في تلقي الأخبار والعروض من حين لآخر، ويمكنني إلغاء الاشتراك في أي وقت.",
1110
+ honeypot: "اترك هذا الحقل فارغًا",
1111
+ contactDetails: "بيانات التواصل",
1112
+ address: "العنوان",
1113
+ phone: "الهاتف",
1114
+ email: "البريد الإلكتروني",
1115
+ hours: "ساعات العمل",
1116
+ openNow: "مفتوح",
1117
+ openUntil: "حتى {time}",
1118
+ closingSoon: "يُغلق قريبًا",
1119
+ closingSoonUntil: "مفتوح حتى {time}",
1120
+ openAllDay: "24 ساعة",
1121
+ closed: "مغلق",
1122
+ closedToday: "مغلق اليوم",
1123
+ opensAt: "يفتح {day} الساعة {time}",
1124
+ opensTodayAt: "يفتح الساعة {time}",
1125
+ opensTomorrowAt: "يفتح غدًا الساعة {time}",
1126
+ open24h: "مفتوح على مدار 24 ساعة",
1127
+ openingHours: "ساعات العمل",
1128
+ openingHoursOf: "ساعات العمل، {name}",
1129
+ today: "اليوم",
1130
+ closedDay: "مغلق",
1131
+ loadMap: "تحميل الخريطة",
1132
+ mapOf: "خريطة {name}",
1133
+ mapNotice: "تُحمَّل الخريطة من {provider}، وقد يضع ملفات تعريف الارتباط.",
1134
+ rememberChoice: "حمّل الخرائط دائمًا",
1135
+ directions: "الاتجاهات",
1136
+ directionsVia: "الاتجاهات في {provider}",
1137
+ branches: "الفروع",
1138
+ chooseBranch: "اختر فرعًا",
1139
+ call: "اتصال",
1140
+ callNumber: "اتصل على {phone}",
1141
+ menuCategories: "أقسام القائمة",
1142
+ unavailable: "غير متوفر اليوم",
1143
+ marketPrice: "حسب سعر السوق",
1144
+ allergens: "مسببات الحساسية",
1145
+ book: "احجز",
1146
+ bookService: "احجز {service}",
1147
+ tagVegetarian: "نباتي",
1148
+ tagVegan: "نباتي صرف",
1149
+ tagGlutenFree: "خالٍ من الغلوتين",
1150
+ tagSpicy: "حار",
1151
+ tagNew: "جديد",
1152
+ tagChefPick: "اختيار الشيف",
1153
+ tagDairyFree: "خالٍ من الألبان",
1154
+ tagNutFree: "خالٍ من المكسرات",
1155
+ tagHalal: "حلال",
1156
+ tagToShare: "للمشاركة",
1157
+ tagSeasonal: "موسمي",
1158
+ allergen_gluten: "الغلوتين",
1159
+ allergen_crustaceans: "القشريات",
1160
+ allergen_eggs: "البيض",
1161
+ allergen_fish: "السمك",
1162
+ allergen_peanuts: "الفول السوداني",
1163
+ allergen_soybeans: "الصويا",
1164
+ allergen_milk: "الحليب",
1165
+ allergen_nuts: "المكسرات",
1166
+ allergen_celery: "الكرفس",
1167
+ allergen_mustard: "الخردل",
1168
+ allergen_sesame: "السمسم",
1169
+ allergen_sulphites: "الكبريتيت",
1170
+ allergen_lupin: "الترمس",
1171
+ allergen_molluscs: "الرخويات",
1172
+ openImage: "افتح الصورة {index} من {total}",
1173
+ imageCounter: "{index} / {total}",
1174
+ galleryImages: "{count, plural, zero {لا توجد صور} one {صورة واحدة} two {صورتان} few {# صور} many {# صورة} other {# صورة}}",
1175
+ cookies: "ملفات تعريف الارتباط",
1176
+ cookieConsent: "الموافقة على ملفات تعريف الارتباط",
1177
+ acceptAll: "قبول الكل",
1178
+ rejectAll: "رفض الكل",
1179
+ preferences: "التفضيلات",
1180
+ savePreferences: "حفظ الاختيارات",
1181
+ cookiePreferences: "تفضيلات ملفات تعريف الارتباط",
1182
+ cookiePreferencesLead: "اختر ملفات تعريف الارتباط التي نستخدمها. الملفات الضرورية تُبقي الموقع يعمل ولا يمكن إيقافها.",
1183
+ cookiePolicy: "سياسة ملفات تعريف الارتباط",
1184
+ catNecessary: "ضرورية",
1185
+ catNecessaryHint: "الأمان وتوزيع الحمل وتذكّر هذا الاختيار.",
1186
+ catFunctional: "وظيفية",
1187
+ catFunctionalHint: "الخرائط ومشغلات الفيديو والدردشة التي تتذكر إعداداتك.",
1188
+ catAnalytics: "تحليلية",
1189
+ catAnalyticsHint: "إحصاءات زيارات مجهولة الهوية تساعدنا على تحسين الصفحات.",
1190
+ catMarketing: "تسويقية",
1191
+ catMarketingHint: "قياس الإعلانات والإعلانات المخصّصة على مواقع أخرى.",
1192
+ alwaysOn: "مفعّلة دائمًا",
1193
+ cookieText: "نستخدم ملفات تعريف الارتباط الضرورية لتشغيل هذا الموقع، وبإذنك نستخدم أيضًا ملفات التحليلات والتسويق. يمكنك تغيير ذلك في أي وقت من إعدادات ملفات تعريف الارتباط.",
1194
+ cookieSettings: "إعدادات ملفات تعريف الارتباط",
1195
+ loadContent: "تحميل {provider}",
1196
+ contentNotice: "هذا المحتوى مستضاف لدى {provider}، وقد يضع ملفات تعريف الارتباط.",
1197
+ messageUs: "راسلنا",
1198
+ messageUsOn: "راسلنا على {network}",
1199
+ contactActions: "تواصل سريع",
1200
+ directionsShort: "الاتجاهات",
1201
+ booking: "احجز",
1202
+ emailShort: "البريد",
1203
+ offHours: "نحن مغلقون الآن — اترك رسالة وسنرد عليك صباحًا.",
1204
+ footer: "تذييل الصفحة",
1205
+ footerNav: "تذييل الصفحة",
1206
+ social: "وسائل التواصل الاجتماعي",
1207
+ legal: "معلومات قانونية",
1208
+ copyright: "© {year} {name}",
1209
+ madeBy: "تصميم الموقع: {name}",
1210
+ newsletter: "النشرة البريدية",
1211
+ newsletterHint: "رسالة واحدة شهريًا. بلا رسائل مزعجة.",
1212
+ emailAddress: "البريد الإلكتروني",
1213
+ subscribe: "اشترك",
1214
+ subscribed: "شكرًا، تحقق من بريدك الوارد لتأكيد الاشتراك.",
1215
+ notFoundCode: "خطأ 404",
1216
+ notFoundTitle: "نُقلت هذه الصفحة، أو لم تكن *موجودة* أصلًا.",
1217
+ notFoundText: "ربما يكون الرابط قديمًا أو مكتوبًا بشكل خاطئ. جرّب الصفحات أدناه أو ابحث في الموقع.",
1218
+ serverErrorCode: "خطأ 500",
1219
+ serverErrorTitle: "حدث *خطأ* من جهتنا.",
1220
+ serverErrorText: "لم يتم تحميل الصفحة. غالبًا ما يكون الأمر مؤقتًا — حاول مجددًا بعد لحظات.",
1221
+ maintenanceCode: "صيانة",
1222
+ maintenanceTitle: "*سنعود* قريبًا.",
1223
+ maintenanceText: "نعمل على تحديث الموقع. الحجز عبر الهاتف متاح كالمعتاد.",
1224
+ backHome: "العودة إلى الرئيسية",
1225
+ tryAgain: "حاول مجددًا",
1226
+ search: "بحث",
1227
+ searchSite: "ابحث في الموقع",
1228
+ searchPlaceholder: "عمّ كنت تبحث؟",
1229
+ popularPages: "الصفحات الأكثر زيارة",
1230
+ stillStuck: "لم تجد ما تبحث عنه؟ اتصل على {phone}.",
1231
+ };
406
1232
  /** Label lookup for server components: `labels` prop → English. */
407
1233
  export function site2Text(labels, locale = "en-US") {
408
1234
  const merged = { ...blockLabels, ...site2Labels };