@eifi1/ui-kit 0.21.0 → 0.23.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.
Files changed (320) hide show
  1. package/README.md +42 -25
  2. package/dist/chart.d.ts +19 -14
  3. package/dist/components/account-chips.d.ts +10 -3
  4. package/dist/components/account-chips.js +5 -2
  5. package/dist/components/account-chips.js.map +1 -1
  6. package/dist/components/account-settings.d.ts +33 -2
  7. package/dist/components/account-settings.js +43 -21
  8. package/dist/components/account-settings.js.map +1 -1
  9. package/dist/components/amount-input.d.ts +53 -14
  10. package/dist/components/amount-input.js +17 -28
  11. package/dist/components/amount-input.js.map +1 -1
  12. package/dist/components/autocomplete.d.ts +29 -0
  13. package/dist/components/autocomplete.js +134 -104
  14. package/dist/components/autocomplete.js.map +1 -1
  15. package/dist/components/button-group.d.ts +19 -14
  16. package/dist/components/calculator.d.ts +19 -14
  17. package/dist/components/checkbox-group.d.ts +104 -0
  18. package/dist/components/checkbox-group.js +111 -0
  19. package/dist/components/checkbox-group.js.map +1 -0
  20. package/dist/components/checkbox.d.ts +19 -0
  21. package/dist/components/checkbox.js +30 -7
  22. package/dist/components/checkbox.js.map +1 -1
  23. package/dist/components/chip.d.ts +18 -0
  24. package/dist/components/chip.js +47 -10
  25. package/dist/components/chip.js.map +1 -1
  26. package/dist/components/column-mapper.d.ts +182 -0
  27. package/dist/components/column-mapper.js +375 -0
  28. package/dist/components/column-mapper.js.map +1 -0
  29. package/dist/components/combobox-core.d.ts +39 -2
  30. package/dist/components/combobox-core.js +29 -6
  31. package/dist/components/combobox-core.js.map +1 -1
  32. package/dist/components/combobox.d.ts +91 -2
  33. package/dist/components/combobox.js +454 -308
  34. package/dist/components/combobox.js.map +1 -1
  35. package/dist/components/confirm-dialog.d.ts +69 -161
  36. package/dist/components/confirm-dialog.js +7 -8
  37. package/dist/components/confirm-dialog.js.map +1 -1
  38. package/dist/components/copy-button.d.ts +16 -11
  39. package/dist/components/country-select.d.ts +167 -0
  40. package/dist/components/country-select.js +293 -0
  41. package/dist/components/country-select.js.map +1 -0
  42. package/dist/components/currency-select.d.ts +17 -1
  43. package/dist/components/currency-select.js +56 -23
  44. package/dist/components/currency-select.js.map +1 -1
  45. package/dist/components/danger-confirm.d.ts +69 -166
  46. package/dist/components/danger-confirm.js +144 -50
  47. package/dist/components/danger-confirm.js.map +1 -1
  48. package/dist/components/data-table-cells.d.ts +1 -2
  49. package/dist/components/data-table-filter-popover.d.ts +1 -2
  50. package/dist/components/data-table-filters.d.ts +1 -2
  51. package/dist/components/data-table-labels.d.ts +4 -97
  52. package/dist/components/data-table-labels.js +9 -1
  53. package/dist/components/data-table-labels.js.map +1 -1
  54. package/dist/components/data-table-pagination.d.ts +3 -1
  55. package/dist/components/data-table.d.ts +1 -2
  56. package/dist/components/data-table.js +98 -3
  57. package/dist/components/data-table.js.map +1 -1
  58. package/dist/components/date-picker.d.ts +66 -5
  59. package/dist/components/date-picker.js +378 -66
  60. package/dist/components/date-picker.js.map +1 -1
  61. package/dist/components/entity-combobox.d.ts +42 -1
  62. package/dist/components/entity-combobox.js +154 -113
  63. package/dist/components/entity-combobox.js.map +1 -1
  64. package/dist/components/facing-pair.d.ts +19 -14
  65. package/dist/components/field-parts.d.ts +224 -0
  66. package/dist/components/field-parts.js +156 -0
  67. package/dist/components/field-parts.js.map +1 -0
  68. package/dist/components/field-strip.d.ts +105 -0
  69. package/dist/components/field-strip.js +46 -0
  70. package/dist/components/field-strip.js.map +1 -0
  71. package/dist/components/file-button.d.ts +19 -14
  72. package/dist/components/file-button.js +13 -3
  73. package/dist/components/file-button.js.map +1 -1
  74. package/dist/components/file-dropzone.d.ts +41 -15
  75. package/dist/components/file-dropzone.js +57 -34
  76. package/dist/components/file-dropzone.js.map +1 -1
  77. package/dist/components/form-actions.d.ts +18 -13
  78. package/dist/components/form-actions.js +69 -5
  79. package/dist/components/form-actions.js.map +1 -1
  80. package/dist/components/iban-input.d.ts +69 -0
  81. package/dist/components/iban-input.js +125 -0
  82. package/dist/components/iban-input.js.map +1 -0
  83. package/dist/components/icon-picker.d.ts +21 -2
  84. package/dist/components/icon-picker.js +19 -4
  85. package/dist/components/icon-picker.js.map +1 -1
  86. package/dist/components/inline-edit-field.d.ts +167 -0
  87. package/dist/components/inline-edit-field.js +293 -0
  88. package/dist/components/inline-edit-field.js.map +1 -0
  89. package/dist/components/language-select.d.ts +130 -0
  90. package/dist/components/language-select.js +18 -0
  91. package/dist/components/language-select.js.map +1 -0
  92. package/dist/components/line-items.d.ts +25 -3
  93. package/dist/components/line-items.js +55 -46
  94. package/dist/components/line-items.js.map +1 -1
  95. package/dist/components/list.d.ts +25 -0
  96. package/dist/components/list.js +16 -5
  97. package/dist/components/list.js.map +1 -1
  98. package/dist/components/money-field.d.ts +32 -14
  99. package/dist/components/money-field.js.map +1 -1
  100. package/dist/components/month-picker.d.ts +52 -4
  101. package/dist/components/month-picker.js +291 -86
  102. package/dist/components/month-picker.js.map +1 -1
  103. package/dist/components/multi-entity-combobox.d.ts +26 -1
  104. package/dist/components/multi-entity-combobox.js +143 -102
  105. package/dist/components/multi-entity-combobox.js.map +1 -1
  106. package/dist/components/multi-select.d.ts +8 -1
  107. package/dist/components/multi-select.js +9 -4
  108. package/dist/components/multi-select.js.map +1 -1
  109. package/dist/components/number-field.d.ts +34 -19
  110. package/dist/components/number-field.js +6 -20
  111. package/dist/components/number-field.js.map +1 -1
  112. package/dist/components/number-input.d.ts +79 -19
  113. package/dist/components/number-input.js +90 -38
  114. package/dist/components/number-input.js.map +1 -1
  115. package/dist/components/numpad-sheet.d.ts +19 -14
  116. package/dist/components/one-time-code-input.d.ts +100 -0
  117. package/dist/components/one-time-code-input.js +137 -0
  118. package/dist/components/one-time-code-input.js.map +1 -0
  119. package/dist/components/phone-input.d.ts +69 -0
  120. package/dist/components/phone-input.js +171 -0
  121. package/dist/components/phone-input.js.map +1 -0
  122. package/dist/components/reauth-dialog.d.ts +2 -2
  123. package/dist/components/reauth-dialog.js +6 -8
  124. package/dist/components/reauth-dialog.js.map +1 -1
  125. package/dist/components/series-chart.d.ts +19 -14
  126. package/dist/components/settings-fields.d.ts +19 -14
  127. package/dist/components/share-card.d.ts +16 -11
  128. package/dist/components/sign-chip.d.ts +66 -0
  129. package/dist/components/sign-chip.js +39 -0
  130. package/dist/components/sign-chip.js.map +1 -0
  131. package/dist/components/swatch-picker.d.ts +43 -2
  132. package/dist/components/swatch-picker.js +80 -32
  133. package/dist/components/swatch-picker.js.map +1 -1
  134. package/dist/components/switch.d.ts +19 -0
  135. package/dist/components/switch.js +24 -6
  136. package/dist/components/switch.js.map +1 -1
  137. package/dist/components/text-link.d.ts +18 -13
  138. package/dist/components/tile-radio.d.ts +88 -13
  139. package/dist/components/tile-radio.js +28 -11
  140. package/dist/components/tile-radio.js.map +1 -1
  141. package/dist/components/time-input.d.ts +24 -15
  142. package/dist/components/time-input.js.map +1 -1
  143. package/dist/components/toggle-group.d.ts +47 -1
  144. package/dist/components/toggle-group.js +110 -69
  145. package/dist/components/toggle-group.js.map +1 -1
  146. package/dist/components/trigger-aria.d.ts +3 -0
  147. package/dist/components/trigger-aria.js +3 -1
  148. package/dist/components/trigger-aria.js.map +1 -1
  149. package/dist/components/ui.d.ts +16 -11
  150. package/dist/components/ui.js +284 -88
  151. package/dist/components/ui.js.map +1 -1
  152. package/dist/components/use-table-state.d.ts +1 -2
  153. package/dist/{data-table-3mi2R3so.d.ts → data-table-labels-B7OdnM0S.d.ts} +140 -3
  154. package/dist/data-table.d.ts +1 -2
  155. package/dist/data-table.js +2 -1
  156. package/dist/data-table.js.map +1 -1
  157. package/dist/feedback/feedback-attachment.d.ts +1 -1
  158. package/dist/feedback/feedback-attachment.js +348 -41
  159. package/dist/feedback/feedback-attachment.js.map +1 -1
  160. package/dist/feedback/feedback-dialog.d.ts +1 -1
  161. package/dist/feedback/feedback-dialog.js.map +1 -1
  162. package/dist/feedback/feedback-inbox.d.ts +3 -2
  163. package/dist/feedback/feedback-inbox.js.map +1 -1
  164. package/dist/feedback/feedback-thread.d.ts +68 -253
  165. package/dist/feedback/feedback-thread.js +46 -10
  166. package/dist/feedback/feedback-thread.js.map +1 -1
  167. package/dist/{kit-labels-D1J2_jyD.d.ts → feedback-BxeQVzwq.d.ts} +1206 -20
  168. package/dist/{feedback-attachment-WFiXJ8We.d.ts → feedback-attachment-fGAzZPf0.d.ts} +178 -11
  169. package/dist/feedback.d.ts +66 -2
  170. package/dist/hooks/use-file-drop.d.ts +19 -14
  171. package/dist/i18n/defaults.d.ts +19 -14
  172. package/dist/i18n/defaults.js +19 -2
  173. package/dist/i18n/defaults.js.map +1 -1
  174. package/dist/i18n/german.d.ts +19 -14
  175. package/dist/i18n/german.js +84 -5
  176. package/dist/i18n/german.js.map +1 -1
  177. package/dist/i18n/kit-labels.d.ts +15 -10
  178. package/dist/i18n/kit-labels.js +8 -2
  179. package/dist/i18n/kit-labels.js.map +1 -1
  180. package/dist/i18n/languages.d.ts +19 -14
  181. package/dist/i18n/locales/de-CH.d.ts +19 -14
  182. package/dist/i18n/locales/en.d.ts +19 -14
  183. package/dist/i18n/locales/en.js +16 -0
  184. package/dist/i18n/locales/en.js.map +1 -1
  185. package/dist/i18n/locales/es.d.ts +19 -14
  186. package/dist/i18n/locales/es.js +83 -5
  187. package/dist/i18n/locales/es.js.map +1 -1
  188. package/dist/i18n/locales/fr.d.ts +19 -14
  189. package/dist/i18n/locales/fr.js +82 -5
  190. package/dist/i18n/locales/fr.js.map +1 -1
  191. package/dist/i18n/locales/hu.d.ts +19 -14
  192. package/dist/i18n/locales/hu.js +85 -5
  193. package/dist/i18n/locales/hu.js.map +1 -1
  194. package/dist/i18n/locales/it.d.ts +19 -14
  195. package/dist/i18n/locales/it.js +84 -5
  196. package/dist/i18n/locales/it.js.map +1 -1
  197. package/dist/i18n/locales/zh.d.ts +19 -14
  198. package/dist/i18n/locales/zh.js +80 -5
  199. package/dist/i18n/locales/zh.js.map +1 -1
  200. package/dist/i18n/review.d.ts +19 -14
  201. package/dist/i18n/review.js +27 -1
  202. package/dist/i18n/review.js.map +1 -1
  203. package/dist/index.d.ts +21 -10
  204. package/dist/index.js +73 -2
  205. package/dist/index.js.map +1 -1
  206. package/dist/lib/column-mapping.d.ts +81 -0
  207. package/dist/lib/column-mapping.js +108 -0
  208. package/dist/lib/column-mapping.js.map +1 -0
  209. package/dist/lib/countries.d.ts +43 -0
  210. package/dist/lib/countries.js +39 -0
  211. package/dist/lib/countries.js.map +1 -0
  212. package/dist/lib/decimal-marks.d.ts +46 -0
  213. package/dist/lib/decimal-marks.js +40 -0
  214. package/dist/lib/decimal-marks.js.map +1 -0
  215. package/dist/lib/iban.d.ts +98 -0
  216. package/dist/lib/iban.js +154 -0
  217. package/dist/lib/iban.js.map +1 -0
  218. package/dist/lib/isin.d.ts +30 -0
  219. package/dist/lib/isin.js +36 -0
  220. package/dist/lib/isin.js.map +1 -0
  221. package/dist/lib/phone.d.ts +69 -0
  222. package/dist/lib/phone.js +121 -0
  223. package/dist/lib/phone.js.map +1 -0
  224. package/dist/lib/table-text.d.ts +109 -1
  225. package/dist/lib/table-text.js +122 -1
  226. package/dist/lib/table-text.js.map +1 -1
  227. package/dist/rhf/fields.d.ts +233 -18
  228. package/dist/rhf/fields.js +456 -3
  229. package/dist/rhf/fields.js.map +1 -1
  230. package/dist/rhf/form.d.ts +19 -14
  231. package/dist/rhf.d.ts +22 -15
  232. package/dist/rhf.js.map +1 -1
  233. package/dist/shell/app-shell.d.ts +18 -13
  234. package/dist/shell/top-bar-brand.d.ts +19 -14
  235. package/dist/shell/topbar-action-menu.d.ts +36 -3
  236. package/dist/shell/topbar-action-menu.js +74 -33
  237. package/dist/shell/topbar-action-menu.js.map +1 -1
  238. package/dist/shell.d.ts +18 -13
  239. package/dist/table-text.d.ts +1 -1
  240. package/dist/tour/tour.js +20 -24
  241. package/dist/tour/tour.js.map +1 -1
  242. package/dist/wizard/stepper-nav.d.ts +49 -16
  243. package/dist/wizard/stepper-nav.js +4 -0
  244. package/dist/wizard/stepper-nav.js.map +1 -1
  245. package/dist/wizard.d.ts +19 -14
  246. package/package.json +1 -1
  247. package/src/components/account-chips.tsx +17 -3
  248. package/src/components/account-settings.tsx +92 -26
  249. package/src/components/amount-input.tsx +68 -56
  250. package/src/components/autocomplete.tsx +198 -114
  251. package/src/components/checkbox-group.tsx +229 -0
  252. package/src/components/checkbox.tsx +72 -8
  253. package/src/components/chip.tsx +80 -10
  254. package/src/components/column-mapper.tsx +666 -0
  255. package/src/components/combobox-core.tsx +82 -9
  256. package/src/components/combobox.tsx +661 -340
  257. package/src/components/confirm-dialog.tsx +12 -8
  258. package/src/components/country-select.tsx +556 -0
  259. package/src/components/currency-select.tsx +109 -33
  260. package/src/components/danger-confirm.tsx +429 -82
  261. package/src/components/data-table-labels.ts +16 -1
  262. package/src/components/data-table.tsx +175 -6
  263. package/src/components/date-picker.tsx +595 -71
  264. package/src/components/entity-combobox.tsx +235 -124
  265. package/src/components/field-parts.tsx +403 -0
  266. package/src/components/field-strip.tsx +149 -0
  267. package/src/components/file-button.tsx +36 -3
  268. package/src/components/file-dropzone.tsx +106 -38
  269. package/src/components/form-actions.tsx +147 -6
  270. package/src/components/iban-input.tsx +231 -0
  271. package/src/components/icon-picker.tsx +47 -6
  272. package/src/components/inline-edit-field.tsx +533 -0
  273. package/src/components/language-select.tsx +78 -0
  274. package/src/components/line-items.tsx +35 -2
  275. package/src/components/list.tsx +55 -6
  276. package/src/components/money-field.tsx +13 -0
  277. package/src/components/month-picker.tsx +400 -63
  278. package/src/components/multi-entity-combobox.tsx +207 -120
  279. package/src/components/multi-select.tsx +80 -58
  280. package/src/components/number-field.tsx +28 -46
  281. package/src/components/number-input.tsx +210 -43
  282. package/src/components/one-time-code-input.tsx +288 -0
  283. package/src/components/phone-input.tsx +299 -0
  284. package/src/components/reauth-dialog.tsx +17 -18
  285. package/src/components/sign-chip.tsx +103 -0
  286. package/src/components/swatch-picker.tsx +143 -31
  287. package/src/components/switch.tsx +58 -7
  288. package/src/components/tile-radio.tsx +145 -29
  289. package/src/components/time-input.tsx +8 -1
  290. package/src/components/toggle-group.tsx +206 -73
  291. package/src/components/trigger-aria.ts +5 -0
  292. package/src/components/ui.tsx +479 -138
  293. package/src/data-table.ts +2 -1
  294. package/src/feedback/feedback-attachment.tsx +597 -46
  295. package/src/feedback/feedback-dialog.tsx +9 -3
  296. package/src/feedback/feedback-inbox.tsx +3 -2
  297. package/src/feedback/feedback-thread.tsx +113 -9
  298. package/src/i18n/defaults.ts +18 -1
  299. package/src/i18n/german.ts +89 -0
  300. package/src/i18n/kit-labels.tsx +82 -2
  301. package/src/i18n/locales/en.ts +36 -4
  302. package/src/i18n/locales/es.ts +87 -0
  303. package/src/i18n/locales/fr.ts +87 -0
  304. package/src/i18n/locales/hu.ts +83 -0
  305. package/src/i18n/locales/it.ts +88 -0
  306. package/src/i18n/locales/zh.ts +76 -0
  307. package/src/i18n/review.ts +26 -0
  308. package/src/index.ts +71 -3
  309. package/src/lib/column-mapping.ts +234 -0
  310. package/src/lib/countries.ts +91 -0
  311. package/src/lib/decimal-marks.ts +99 -0
  312. package/src/lib/iban.ts +171 -0
  313. package/src/lib/isin.ts +62 -0
  314. package/src/lib/phone.ts +211 -0
  315. package/src/lib/table-text.ts +271 -0
  316. package/src/rhf/fields.tsx +860 -9
  317. package/src/rhf.ts +3 -1
  318. package/src/shell/topbar-action-menu.tsx +134 -38
  319. package/src/tour/tour.tsx +66 -28
  320. package/src/wizard/stepper-nav.tsx +35 -1
@@ -25,6 +25,8 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
25
25
  attachmentScreenshot: "Captura de pantalla",
26
26
  attachmentRemoveFile: (name) => `Quitar ${name}`,
27
27
  attachmentLimit: (max) => `Máximo ${n(max)} ${max === 1 ? "adjunto" : "adjuntos"}: quite uno para añadir otro.`,
28
+ attachmentUploading: "Subiendo…",
29
+ attachmentUploadFailed: (name) => `No se ha podido subir «${name}»`,
28
30
  },
29
31
  feedbackDialog: {
30
32
  title: "Enviar comentarios",
@@ -201,6 +203,10 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
201
203
  booleanTrue: "Sí",
202
204
  booleanFalse: "No",
203
205
  booleanUnset: "Sin definir",
206
+ sortBy: "Ordenar por",
207
+ sortDefault: "Orden predeterminado",
208
+ sortAscending: "Ascendente",
209
+ sortDescending: "Descendente",
204
210
  },
205
211
  miniCalendar: {
206
212
  previousMonth: "Mes anterior",
@@ -223,6 +229,10 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
223
229
  previousMonth: "Mes anterior",
224
230
  nextMonth: "Mes siguiente",
225
231
  today: "Hoy",
232
+ yearPanel: "Elegir un año",
233
+ earlierYears: "Años anteriores",
234
+ laterYears: "Años posteriores",
235
+ thisYear: "Este año",
226
236
  },
227
237
  calendarHeatmap: {
228
238
  grid: "Valores diarios",
@@ -320,6 +330,10 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
320
330
  prompt: "Esta acción no se puede deshacer.",
321
331
  password: "Contraseña",
322
332
  phrase: (phrase) => `Escriba «${phrase}» para confirmar`,
333
+ acknowledge: "He leído lo que hace esta acción y deseo continuar.",
334
+ needsPhrase: (phrase) => `Escriba «${phrase}» para confirmar`,
335
+ needsAcknowledge: "Marque la casilla para confirmar",
336
+ needsPassword: "Introduzca su contraseña para confirmar",
323
337
  },
324
338
  tabs: {
325
339
  add: "Añadir pestaña",
@@ -526,6 +540,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
526
540
  form: {
527
541
  save: "Guardar",
528
542
  cancel: "Cancelar",
543
+ submitShortcut: (apple) => (apple ? "⌘ Intro" : "Ctrl+Intro"),
529
544
  },
530
545
  descriptionList: {
531
546
  empty: "—",
@@ -634,6 +649,78 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
634
649
  legal: {
635
650
  navLabel: "Información legal",
636
651
  },
652
+ characterCount: {
653
+ count: (used, max) => `${n(used)} de ${n(max)} ${plural(max, "carácter", "caracteres")}`,
654
+ remaining: (left) =>
655
+ left === 1 ? "Queda 1 carácter" : `Quedan ${n(left)} caracteres`,
656
+ limitReached: "Límite de caracteres alcanzado",
657
+ },
658
+ countrySelect: {
659
+ country: "País",
660
+ search: "Buscar país",
661
+ others: "Otros países",
662
+ },
663
+ inlineEdit: {
664
+ edit: (label) => `Editar ${label}`,
665
+ failed: "No se ha podido guardar el cambio.",
666
+ empty: "Vacío",
667
+ },
668
+ ibanInput: {
669
+ format: "Un IBAN empieza por un código de país de dos letras y dos dígitos de control.",
670
+ country: (code) => `«${code}» no es el código de país de un IBAN.`,
671
+ length: (actual, expected) =>
672
+ `Un IBAN de este país tiene ${n(expected)} caracteres; este tiene ${n(actual)}.`,
673
+ checksum: "Los dígitos de control no coinciden: probablemente hay un carácter mal escrito.",
674
+ qrRequired: "Este es un IBAN normal. Una factura QR requiere el QR-IBAN de la cuenta.",
675
+ qrNotAllowed:
676
+ "Este es un QR-IBAN, que solo recibe pagos de facturas QR. Introduzca el IBAN normal de la cuenta.",
677
+ },
678
+ phoneInput: {
679
+ countryCode: "Prefijo del país",
680
+ other: "Otro",
681
+ },
682
+ signChip: {
683
+ outflow: "Salida",
684
+ inflow: "Entrada",
685
+ direction: (current, next) => `Dirección: ${current} — cambiar a ${next}`,
686
+ },
687
+ columnMapper: {
688
+ paste: "Pegar una tabla",
689
+ pasteHint:
690
+ "Copie las filas de una hoja de cálculo y péguelas aquí, o suelte un archivo CSV o de texto.",
691
+ chooseFile: "Elegir un archivo",
692
+ readError: (name) => `No se ha podido leer «${name}»`,
693
+ headerRow: "La primera línea contiene los nombres de las columnas",
694
+ summary: (columns, rows) =>
695
+ `${n(columns)} ${plural(columns, "columna", "columnas")}, ${n(rows)} ${plural(rows, "fila", "filas")}`,
696
+ // Fragments of the summary line. "Separado por…" would have to agree with a noun the
697
+ // line does not name, so the separator is stated as a value.
698
+ separatorSemicolon: "separador: punto y coma",
699
+ separatorComma: "separador: coma",
700
+ separatorTab: "separador: tabulación",
701
+ separatorSpace: "separador: espacio",
702
+ // The examples stay as written: they show the convention, not the reader's locale.
703
+ decimalComma: "coma decimal (1,5)",
704
+ decimalPoint: "punto decimal (1.5)",
705
+ unreadCount: (count) =>
706
+ count === 1 ? "No se ha podido leer 1 línea" : `No se han podido leer ${n(count)} líneas`,
707
+ unreadLine: (line) => `No se pudo leer la línea ${line}`,
708
+ unreadMore: (count) => `…y ${n(count)} más`,
709
+ noRows: "Ninguna línea de este texto se puede leer como una fila de la tabla.",
710
+ table: "Columnas y sus funciones",
711
+ columnN: (column) => `Columna ${column}`,
712
+ roleOf: (column) => `¿Qué contiene la columna «${column}»?`,
713
+ ignore: "Ignorar",
714
+ requiredRole: (role) => `${role} (obligatorio)`,
715
+ previewOf: (shown, total) =>
716
+ shown === 1
717
+ ? `La primera de ${n(total)} filas`
718
+ : `Las primeras ${n(shown)} de ${n(total)} filas`,
719
+ // `roles` arrives joined with "o" ("Debe o Haber").
720
+ oneOf: (roles) => `${roles} (a elegir)`,
721
+ // "Falta" + infinitive: no verb to agree with however many roles follow.
722
+ missing: (roles) => `Falta asignar: ${roles}.`,
723
+ },
637
724
  translationReview: {
638
725
  statusMissing: "Falta",
639
726
  statusUnreviewed: "Sin revisar",
@@ -25,6 +25,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
25
25
  attachmentScreenshot: "Capture d’écran",
26
26
  attachmentRemoveFile: (name) => `Retirer ${name}`,
27
27
  attachmentLimit: (max) => `${n(max)} ${max === 1 ? "pièce jointe" : "pièces jointes"} au maximum — retirez-en une pour en ajouter une autre.`,
28
+ attachmentUploading: "Envoi en cours…",
29
+ attachmentUploadFailed: (name) => `«\u202f${name}\u202f» n’a pas pu être envoyé`,
28
30
  },
29
31
  feedbackDialog: {
30
32
  title: "Envoyer un retour",
@@ -208,6 +210,10 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
208
210
  booleanTrue: "Oui",
209
211
  booleanFalse: "Non",
210
212
  booleanUnset: "Non défini",
213
+ sortBy: "Trier par",
214
+ sortDefault: "Ordre par défaut",
215
+ sortAscending: "Croissant",
216
+ sortDescending: "Décroissant",
211
217
  },
212
218
  miniCalendar: {
213
219
  previousMonth: "Mois précédent",
@@ -249,6 +255,10 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
249
255
  previousMonth: "Mois précédent",
250
256
  nextMonth: "Mois suivant",
251
257
  today: "Aujourd’hui",
258
+ yearPanel: "Choisir une année",
259
+ earlierYears: "Années précédentes",
260
+ laterYears: "Années suivantes",
261
+ thisYear: "Cette année",
252
262
  },
253
263
  popover: {
254
264
  panel: "Fenêtre contextuelle",
@@ -329,6 +339,10 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
329
339
  prompt: "Cette action est irréversible.",
330
340
  password: "Mot de passe",
331
341
  phrase: (phrase) => `Saisissez «\u202f${phrase}\u202f» pour confirmer`,
342
+ acknowledge: "J’ai lu ce que fait cette action et je souhaite continuer.",
343
+ needsPhrase: (phrase) => `Saisissez «\u202f${phrase}\u202f» pour confirmer`,
344
+ needsAcknowledge: "Cochez la case pour confirmer",
345
+ needsPassword: "Saisissez votre mot de passe pour confirmer",
332
346
  },
333
347
  tabs: {
334
348
  add: "Ajouter un onglet",
@@ -543,6 +557,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
543
557
  form: {
544
558
  save: "Enregistrer",
545
559
  cancel: "Annuler",
560
+ submitShortcut: (apple) => (apple ? "⌘ Entrée" : "Ctrl+Entrée"),
546
561
  },
547
562
  descriptionList: {
548
563
  empty: "—",
@@ -651,6 +666,78 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
651
666
  legal: {
652
667
  navLabel: "Informations légales",
653
668
  },
669
+ characterCount: {
670
+ count: (used, max) => `${n(used)} sur ${n(max)} ${plural(max, "caractère", "caractères")}`,
671
+ remaining: (left) => `${n(left)} ${plural(left, "caractère restant", "caractères restants")}`,
672
+ limitReached: "Limite de caractères atteinte",
673
+ },
674
+ countrySelect: {
675
+ country: "Pays",
676
+ search: "Rechercher un pays",
677
+ others: "Autres pays",
678
+ },
679
+ inlineEdit: {
680
+ edit: (label) => `Modifier ${label}`,
681
+ failed: "La modification n’a pas pu être enregistrée.",
682
+ empty: "Vide",
683
+ },
684
+ ibanInput: {
685
+ format: "Un IBAN commence par un code pays de deux lettres et deux chiffres de contrôle.",
686
+ country: (code) => `«\u202f${code}\u202f» n’est pas le code pays d’un IBAN.`,
687
+ length: (actual, expected) =>
688
+ `Un IBAN de ce pays compte ${n(expected)} caractères — celui-ci en compte ${n(actual)}.`,
689
+ checksum: "Les chiffres de contrôle ne correspondent pas — un caractère est sans doute mal saisi.",
690
+ qrRequired: "Ceci est un IBAN ordinaire. Une QR-facture exige le QR-IBAN du compte.",
691
+ qrNotAllowed:
692
+ "Ceci est un QR-IBAN, qui ne reçoit que des paiements par QR-facture. Saisissez l’IBAN ordinaire du compte.",
693
+ },
694
+ phoneInput: {
695
+ countryCode: "Indicatif du pays",
696
+ other: "Autre",
697
+ },
698
+ signChip: {
699
+ outflow: "Sortie",
700
+ inflow: "Entrée",
701
+ direction: (current, next) => `Sens\u00a0: ${current} — passer à ${next}`,
702
+ },
703
+ columnMapper: {
704
+ paste: "Coller un tableau",
705
+ pasteHint:
706
+ "Copiez les lignes d’un tableur et collez-les ici, ou déposez un fichier CSV ou texte.",
707
+ chooseFile: "Choisir un fichier",
708
+ readError: (name) => `«\u202f${name}\u202f» n’a pas pu être lu`,
709
+ headerRow: "La première ligne contient les noms des colonnes",
710
+ summary: (columns, rows) =>
711
+ `${n(columns)} ${plural(columns, "colonne", "colonnes")}, ${n(rows)} ${plural(rows, "ligne", "lignes")}`,
712
+ // Fragments of the summary line. "Séparé par…" would have to agree with a noun the
713
+ // line does not name, so the separator is stated as a value.
714
+ separatorSemicolon: "séparateur\u00a0: point-virgule",
715
+ separatorComma: "séparateur\u00a0: virgule",
716
+ separatorTab: "séparateur\u00a0: tabulation",
717
+ separatorSpace: "séparateur\u00a0: espace",
718
+ // The examples stay as written: they show the convention, not the reader's locale.
719
+ decimalComma: "virgule décimale (1,5)",
720
+ decimalPoint: "point décimal (1.5)",
721
+ unreadCount: (count) =>
722
+ count < 2
723
+ ? `${n(count)} ligne n’a pas pu être lue`
724
+ : `${n(count)} lignes n’ont pas pu être lues`,
725
+ unreadLine: (line) => `La ligne ${line} n\u2019a pas pu être lue`,
726
+ unreadMore: (count) => `…et ${n(count)} ${plural(count, "autre", "autres")}`,
727
+ noRows: "Aucune ligne de ce texte ne se lit comme une ligne du tableau.",
728
+ table: "Colonnes et leurs rôles",
729
+ columnN: (column) => `Colonne ${column}`,
730
+ roleOf: (column) => `Que contient la colonne «\u202f${column}\u202f»\u202f?`,
731
+ ignore: "Ignorer",
732
+ requiredRole: (role) => `${role} (obligatoire)`,
733
+ previewOf: (shown, total) =>
734
+ shown < 2
735
+ ? `La première ligne sur ${n(total)}`
736
+ : `Les ${n(shown)} premières lignes sur ${n(total)}`,
737
+ // `roles` arrives joined with "ou" ("Débit ou Crédit").
738
+ oneOf: (roles) => `${roles} (au choix)`,
739
+ missing: (roles) => `Il manque encore\u00a0: ${roles}.`,
740
+ },
654
741
  translationReview: {
655
742
  statusMissing: "Manquant",
656
743
  statusUnreviewed: "Non relu",
@@ -24,6 +24,9 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
24
24
  attachmentScreenshot: "Képernyőkép",
25
25
  attachmentRemoveFile: (name) => `${name} eltávolítása`,
26
26
  attachmentLimit: (max) => `Legfeljebb ${n(max)} melléklet – egy újabbhoz távolítson el egyet.`,
27
+ attachmentUploading: "Feltöltés…",
28
+ // Opens with the quoted name, as `filePicker`'s refusals: no a/az has to agree with it.
29
+ attachmentUploadFailed: (name) => `„${name}”: a feltöltés nem sikerült`,
27
30
  },
28
31
  feedbackDialog: {
29
32
  title: "Visszajelzés küldése",
@@ -201,6 +204,10 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
201
204
  booleanTrue: "Igen",
202
205
  booleanFalse: "Nem",
203
206
  booleanUnset: "Nincs megadva",
207
+ sortBy: "Rendezés alapja",
208
+ sortDefault: "Alapértelmezett sorrend",
209
+ sortAscending: "Növekvő",
210
+ sortDescending: "Csökkenő",
204
211
  },
205
212
  miniCalendar: {
206
213
  previousMonth: "Előző hónap",
@@ -221,6 +228,10 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
221
228
  previousMonth: "Előző hónap",
222
229
  nextMonth: "Következő hónap",
223
230
  today: "Ma",
231
+ yearPanel: "Év kiválasztása",
232
+ earlierYears: "Korábbi évek",
233
+ laterYears: "Későbbi évek",
234
+ thisYear: "Ez az év",
224
235
  },
225
236
  calendarHeatmap: {
226
237
  grid: "Napi értékek",
@@ -320,6 +331,10 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
320
331
  password: "Jelszó",
321
332
  // Phrase after a colon, so no article has to agree with it.
322
333
  phrase: (phrase) => `A megerősítéshez írja be: „${phrase}”`,
334
+ acknowledge: "Elolvastam, mit eredményez ez a művelet, és folytatni szeretném.",
335
+ needsPhrase: (phrase) => `A megerősítéshez írja be: „${phrase}”`,
336
+ needsAcknowledge: "A megerősítéshez jelölje be a négyzetet",
337
+ needsPassword: "A megerősítéshez adja meg a jelszavát",
323
338
  },
324
339
  tabs: {
325
340
  add: "Lap hozzáadása",
@@ -529,6 +544,7 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
529
544
  form: {
530
545
  save: "Mentés",
531
546
  cancel: "Mégse",
547
+ submitShortcut: (apple) => (apple ? "⌘ Enter" : "Ctrl+Enter"),
532
548
  },
533
549
  descriptionList: {
534
550
  empty: "—",
@@ -640,6 +656,73 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
640
656
  legal: {
641
657
  navLabel: "Jogi információk",
642
658
  },
659
+ characterCount: {
660
+ // A noun after a numeral stays singular: "80 karakter".
661
+ count: (used, max) => `${n(used)} / ${n(max)} karakter`,
662
+ remaining: (left) => `Még ${n(left)} karakter írható`,
663
+ limitReached: "Elérte a karakterkorlátot",
664
+ },
665
+ countrySelect: {
666
+ country: "Ország",
667
+ search: "Ország keresése",
668
+ others: "További országok",
669
+ },
670
+ inlineEdit: {
671
+ edit: (label) => `${label} szerkesztése`,
672
+ failed: "A módosítást nem sikerült menteni.",
673
+ empty: "Üres",
674
+ },
675
+ ibanInput: {
676
+ format: "Az IBAN kétbetűs országkóddal és két ellenőrző számjeggyel kezdődik.",
677
+ country: (code) => `„${code}” nem IBAN-országkód.`,
678
+ length: (actual, expected) =>
679
+ `Ebben az országban az IBAN ${n(expected)} karakterből áll, ez ${n(actual)} karakterből.`,
680
+ checksum: "Az ellenőrző számjegyek nem egyeznek – valószínűleg elgépelt egy karaktert.",
681
+ qrRequired: "Ez egy normál IBAN. QR-számlához a bankszámla QR-IBAN-ja kell.",
682
+ qrNotAllowed:
683
+ "Ez egy QR-IBAN, amelyre csak QR-számlás befizetés érkezhet. Adja meg a bankszámla normál IBAN-ját.",
684
+ },
685
+ phoneInput: {
686
+ countryCode: "Országhívó szám",
687
+ other: "Egyéb",
688
+ },
689
+ signChip: {
690
+ outflow: "Kiadás",
691
+ inflow: "Bevétel",
692
+ direction: (current, next) => `Irány: ${current} – váltás erre: ${next}`,
693
+ },
694
+ columnMapper: {
695
+ paste: "Táblázat beillesztése",
696
+ pasteHint:
697
+ "Másolja ki a sorokat egy táblázatkezelőből, és illessze be ide, vagy húzzon ide egy CSV- vagy szövegfájlt.",
698
+ chooseFile: "Fájl kiválasztása",
699
+ readError: (name) => `„${name}”: a fájl nem olvasható`,
700
+ headerRow: "Az első sor az oszlopok nevét tartalmazza",
701
+ // No plural after a numeral (convention 2).
702
+ summary: (columns, rows) => `${n(columns)} oszlop, ${n(rows)} sor`,
703
+ separatorSemicolon: "pontosvesszővel elválasztva",
704
+ separatorComma: "vesszővel elválasztva",
705
+ separatorTab: "tabulátorral elválasztva",
706
+ separatorSpace: "szóközzel elválasztva",
707
+ // The examples stay as written: they show the convention, not the reader's locale.
708
+ decimalComma: "tizedesvessző (1,5)",
709
+ decimalPoint: "tizedespont (1.5)",
710
+ unreadCount: (count) => `${n(count)} sor nem olvasható`,
711
+ unreadLine: (line) => `A(z) ${line}. sor nem olvasható`,
712
+ unreadMore: (count) => `…és még ${n(count)}`,
713
+ noRows: "A szöveg egyetlen sora sem olvasható a táblázat soraként.",
714
+ table: "Oszlopok és szerepük",
715
+ columnN: (column) => `${column}. oszlop`,
716
+ // The name after a colon, so no article or case ending has to agree with it.
717
+ roleOf: (column) => `Mit tartalmaz ez az oszlop: „${column}”?`,
718
+ ignore: "Kihagyás",
719
+ requiredRole: (role) => `${role} (kötelező)`,
720
+ // "(összesen N)", as `dataTable.pageChanged`: both numerals stay bare (convention 3).
721
+ previewOf: (shown, total) => `Az első ${n(shown)} sor (összesen ${n(total)})`,
722
+ // `roles` arrives joined with "vagy" ("Tartozik vagy Követel").
723
+ oneOf: (roles) => `${roles} (valamelyik)`,
724
+ missing: (roles) => `Még hiányzik: ${roles}.`,
725
+ },
643
726
  translationReview: {
644
727
  statusMissing: "Hiányzik",
645
728
  statusUnreviewed: "Nincs ellenőrizve",
@@ -25,6 +25,8 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
25
25
  attachmentScreenshot: "Screenshot",
26
26
  attachmentRemoveFile: (name) => `Rimuovi ${name}`,
27
27
  attachmentLimit: (max) => `Massimo ${n(max)} ${max === 1 ? "allegato" : "allegati"}: ne rimuova uno per aggiungerne un altro.`,
28
+ attachmentUploading: "Caricamento…",
29
+ attachmentUploadFailed: (name) => `Impossibile caricare «${name}»`,
28
30
  },
29
31
  feedbackDialog: {
30
32
  title: "Invia feedback",
@@ -202,6 +204,10 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
202
204
  booleanTrue: "Sì",
203
205
  booleanFalse: "No",
204
206
  booleanUnset: "Non impostato",
207
+ sortBy: "Ordina per",
208
+ sortDefault: "Ordine predefinito",
209
+ sortAscending: "Crescente",
210
+ sortDescending: "Decrescente",
205
211
  },
206
212
  miniCalendar: {
207
213
  previousMonth: "Mese precedente",
@@ -224,6 +230,10 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
224
230
  previousMonth: "Mese precedente",
225
231
  nextMonth: "Mese successivo",
226
232
  today: "Oggi",
233
+ yearPanel: "Scegli un anno",
234
+ earlierYears: "Anni precedenti",
235
+ laterYears: "Anni successivi",
236
+ thisYear: "Quest’anno",
227
237
  },
228
238
  calendarHeatmap: {
229
239
  grid: "Valori giornalieri",
@@ -322,6 +332,10 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
322
332
  prompt: "Questa operazione non può essere annullata.",
323
333
  password: "Password",
324
334
  phrase: (phrase) => `Digiti «${phrase}» per confermare`,
335
+ acknowledge: "Ho letto cosa comporta questa operazione e desidero continuare.",
336
+ needsPhrase: (phrase) => `Digiti «${phrase}» per confermare`,
337
+ needsAcknowledge: "Spunti la casella per confermare",
338
+ needsPassword: "Inserisca la password per confermare",
325
339
  },
326
340
  tabs: {
327
341
  add: "Aggiungi scheda",
@@ -529,6 +543,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
529
543
  form: {
530
544
  save: "Salva",
531
545
  cancel: "Annulla",
546
+ submitShortcut: (apple) => (apple ? "⌘ Invio" : "Ctrl+Invio"),
532
547
  },
533
548
  descriptionList: {
534
549
  empty: "—",
@@ -637,6 +652,79 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
637
652
  legal: {
638
653
  navLabel: "Note legali",
639
654
  },
655
+ characterCount: {
656
+ count: (used, max) => `${n(used)} di ${n(max)} ${plural(max, "carattere", "caratteri")}`,
657
+ remaining: (left) =>
658
+ left === 1 ? "Resta 1 carattere" : `Restano ${n(left)} caratteri`,
659
+ limitReached: "Limite di caratteri raggiunto",
660
+ },
661
+ countrySelect: {
662
+ country: "Paese",
663
+ search: "Cerca paese",
664
+ others: "Altri paesi",
665
+ },
666
+ inlineEdit: {
667
+ edit: (label) => `Modifica ${label}`,
668
+ failed: "Non è stato possibile salvare la modifica.",
669
+ empty: "Vuoto",
670
+ },
671
+ ibanInput: {
672
+ format: "Un IBAN inizia con un codice paese di due lettere e due cifre di controllo.",
673
+ country: (code) => `«${code}» non è il codice paese di un IBAN.`,
674
+ length: (actual, expected) =>
675
+ `Un IBAN di questo paese ha ${n(expected)} caratteri, questo ne ha ${n(actual)}.`,
676
+ checksum: "Le cifre di controllo non corrispondono: probabilmente un carattere è stato digitato male.",
677
+ qrRequired: "Questo è un IBAN normale. Una QR-fattura richiede il QR-IBAN del conto.",
678
+ qrNotAllowed:
679
+ "Questo è un QR-IBAN, che riceve solo pagamenti con QR-fattura. Inserisca l’IBAN normale del conto.",
680
+ },
681
+ phoneInput: {
682
+ countryCode: "Prefisso internazionale",
683
+ other: "Altro",
684
+ },
685
+ signChip: {
686
+ outflow: "Uscita",
687
+ inflow: "Entrata",
688
+ // "premere per…": an instruction without a tu imperative, as the kit's Italian is formal.
689
+ direction: (current, next) => `Direzione: ${current} – premere per passare a ${next}`,
690
+ },
691
+ columnMapper: {
692
+ paste: "Incolla una tabella",
693
+ pasteHint:
694
+ "Copi le righe da un foglio di calcolo e le incolli qui, oppure trascini un file CSV o di testo.",
695
+ chooseFile: "Scegli un file",
696
+ readError: (name) => `Impossibile leggere «${name}»`,
697
+ headerRow: "La prima riga contiene i nomi delle colonne",
698
+ summary: (columns, rows) =>
699
+ `${n(columns)} ${plural(columns, "colonna", "colonne")}, ${n(rows)} ${plural(rows, "riga", "righe")}`,
700
+ // Fragments of the summary line. "Separato da…" would have to agree with a noun the
701
+ // line does not name, so the separator is stated as a value.
702
+ separatorSemicolon: "separatore: punto e virgola",
703
+ separatorComma: "separatore: virgola",
704
+ separatorTab: "separatore: tabulazione",
705
+ separatorSpace: "separatore: spazio",
706
+ // The examples stay as written: they show the convention, not the reader's locale.
707
+ decimalComma: "virgola decimale (1,5)",
708
+ decimalPoint: "punto decimale (1.5)",
709
+ unreadCount: (count) =>
710
+ count === 1 ? "Impossibile leggere 1 riga" : `Impossibile leggere ${n(count)} righe`,
711
+ unreadLine: (line) => `Impossibile leggere la riga ${line}`,
712
+ unreadMore: (count) => (count === 1 ? "…e un’altra" : `…e altre ${n(count)}`),
713
+ noRows: "Nessuna riga di questo testo si può leggere come riga della tabella.",
714
+ table: "Colonne e relativi ruoli",
715
+ columnN: (column) => `Colonna ${column}`,
716
+ roleOf: (column) => `Che cosa contiene la colonna «${column}»?`,
717
+ ignore: "Ignora",
718
+ requiredRole: (role) => `${role} (obbligatorio)`,
719
+ previewOf: (shown, total) =>
720
+ shown === 1
721
+ ? `La prima di ${n(total)} righe`
722
+ : `Le prime ${n(shown)} di ${n(total)} righe`,
723
+ // `roles` arrives joined with "o" ("Dare o Avere").
724
+ oneOf: (roles) => `${roles} (a scelta)`,
725
+ // A participle phrase: no verb to agree with however many roles follow.
726
+ missing: (roles) => `Ancora da assegnare: ${roles}.`,
727
+ },
640
728
  translationReview: {
641
729
  statusMissing: "Mancante",
642
730
  statusUnreviewed: "Non rivisto",
@@ -24,6 +24,8 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
24
24
  attachmentScreenshot: "截图",
25
25
  attachmentRemoveFile: (name) => `移除 ${name}`,
26
26
  attachmentLimit: (max) => `最多 ${n(max)} 个附件,请先移除一个再添加。`,
27
+ attachmentUploading: "正在上传…",
28
+ attachmentUploadFailed: (name) => `无法上传“${name}”`,
27
29
  },
28
30
  feedbackDialog: {
29
31
  title: "发送反馈",
@@ -199,6 +201,10 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
199
201
  booleanTrue: "是",
200
202
  booleanFalse: "否",
201
203
  booleanUnset: "未设置",
204
+ sortBy: "排序依据",
205
+ sortDefault: "默认顺序",
206
+ sortAscending: "升序",
207
+ sortDescending: "降序",
202
208
  },
203
209
  miniCalendar: {
204
210
  previousMonth: "上个月",
@@ -218,6 +224,10 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
218
224
  previousMonth: "上个月",
219
225
  nextMonth: "下个月",
220
226
  today: "今天",
227
+ yearPanel: "选择年份",
228
+ earlierYears: "更早的年份",
229
+ laterYears: "更晚的年份",
230
+ thisYear: "今年",
221
231
  },
222
232
  calendarHeatmap: {
223
233
  grid: "每日数值",
@@ -314,6 +324,10 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
314
324
  prompt: "此操作无法撤销。",
315
325
  password: "密码",
316
326
  phrase: (phrase) => `输入“${phrase}”以确认`,
327
+ acknowledge: "我已了解此操作的作用,并希望继续。",
328
+ needsPhrase: (phrase) => `输入“${phrase}”以确认`,
329
+ needsAcknowledge: "勾选复选框以确认",
330
+ needsPassword: "输入密码以确认",
317
331
  },
318
332
  tabs: {
319
333
  add: "添加标签页",
@@ -516,6 +530,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
516
530
  form: {
517
531
  save: "保存",
518
532
  cancel: "取消",
533
+ submitShortcut: (apple) => (apple ? "⌘ Enter" : "Ctrl+Enter"),
519
534
  },
520
535
  descriptionList: {
521
536
  empty: "—",
@@ -623,6 +638,67 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
623
638
  legal: {
624
639
  navLabel: "法律信息",
625
640
  },
641
+ characterCount: {
642
+ count: (used, max) => `已输入 ${n(used)}/${n(max)} 个字符`,
643
+ remaining: (left) => `还可输入 ${n(left)} 个字符`,
644
+ limitReached: "已达到字符数上限",
645
+ },
646
+ countrySelect: {
647
+ country: "国家/地区",
648
+ search: "搜索国家/地区",
649
+ others: "其他国家/地区",
650
+ },
651
+ inlineEdit: {
652
+ edit: (label) => `编辑“${label}”`,
653
+ failed: "无法保存更改。",
654
+ empty: "空",
655
+ },
656
+ ibanInput: {
657
+ format: "IBAN 以两个字母的国家代码和两位校验码开头。",
658
+ country: (code) => `“${code}”不是 IBAN 的国家代码。`,
659
+ length: (actual, expected) =>
660
+ `该国家的 IBAN 应为 ${n(expected)} 个字符,当前为 ${n(actual)} 个。`,
661
+ checksum: "校验码不匹配,可能有字符输入错误。",
662
+ qrRequired: "这是普通 IBAN。QR 账单需要该账户的 QR-IBAN。",
663
+ qrNotAllowed: "这是 QR-IBAN,只能接收 QR 账单付款。请输入该账户的普通 IBAN。",
664
+ },
665
+ phoneInput: {
666
+ countryCode: "国家/地区代码",
667
+ other: "其他",
668
+ },
669
+ signChip: {
670
+ outflow: "支出",
671
+ inflow: "收入",
672
+ direction: (current, next) => `方向:${current},切换为${next}`,
673
+ },
674
+ columnMapper: {
675
+ paste: "粘贴表格",
676
+ pasteHint: "从电子表格中复制行并粘贴到此处,或拖放 CSV 或文本文件。",
677
+ chooseFile: "选择文件",
678
+ readError: (name) => `无法读取“${name}”`,
679
+ headerRow: "第一行为列名",
680
+ summary: (columns, rows) => `${n(columns)} 列,${n(rows)} 行`,
681
+ separatorSemicolon: "以分号分隔",
682
+ separatorComma: "以逗号分隔",
683
+ separatorTab: "以制表符分隔",
684
+ separatorSpace: "以空格分隔",
685
+ // The examples stay as written: they show the convention, not the reader's locale.
686
+ decimalComma: "小数点为逗号(1,5)",
687
+ decimalPoint: "小数点为句点(1.5)",
688
+ unreadCount: (count) => `${n(count)} 行无法读取`,
689
+ unreadLine: (line) => `无法读取第 ${line} 行`,
690
+ unreadMore: (count) => `……另有 ${n(count)} 行`,
691
+ noRows: "此文本中没有任何一行能读作表格的一行。",
692
+ table: "列及其用途",
693
+ columnN: (column) => `第 ${column} 列`,
694
+ roleOf: (column) => `“${column}”列的内容是什么?`,
695
+ ignore: "忽略",
696
+ requiredRole: (role) => `${role}(必填)`,
697
+ previewOf: (shown, total) => `显示前 ${n(shown)} 行,共 ${n(total)} 行`,
698
+ // `roles` arrives joined with "或" ("借方或贷方").
699
+ oneOf: (roles) => `${roles}(任选其一)`,
700
+ missing: (roles) => `仍需指定:${roles}。`,
701
+ },
626
702
  translationReview: {
627
703
  statusMissing: "缺失",
628
704
  statusUnreviewed: "未审校",
@@ -122,6 +122,7 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
122
122
  "passwordStrength.optional": [["{{rule}}"]],
123
123
  "passwordStrength.tooLong": [[72]],
124
124
  "dangerConfirm.phrase": [["{{phrase}}"]],
125
+ "dangerConfirm.needsPhrase": [["{{phrase}}"]],
125
126
  "iconPicker.resultCount": one,
126
127
  "filePicker.rejectedType": [["{{name}}"]],
127
128
  "filePicker.rejectedTypeOnly": [["{{accept}}", "{{name}}"]],
@@ -147,6 +148,7 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
147
148
  "measuredGrid.problems": one,
148
149
  "feedbackAttachment.attachmentRemoveFile": [["{{name}}"]],
149
150
  "feedbackAttachment.attachmentLimit": one,
151
+ "feedbackAttachment.attachmentUploadFailed": [["{{name}}"]],
150
152
  "feedbackComposer.sendHint": [["{{modifier}}"]],
151
153
  "accountSettings.passkeys.renameItem": [["{{name}}"]],
152
154
  "accountSettings.passkeys.renameField": [["{{name}}"]],
@@ -157,6 +159,7 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
157
159
  "confirmDialog.typed": [["{{text}}"]],
158
160
  "floatingPanel.badge": one,
159
161
  "bulkActionBar.selected": one,
162
+ "form.submitShortcut": [[true], [false]],
160
163
  "lineItems.remove": [[3]],
161
164
  "lineItems.confirmRemove": [[3]],
162
165
  "lineItems.row": [[3]],
@@ -190,4 +193,27 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
190
193
  "translationReview.lastFlagged": [["{{name}}", "{{date}}"]],
191
194
  "translationReview.scope": [["{{areas}}"]],
192
195
  "translationReview.exportCorrections": [[0], [1], [3]],
196
+ "characterCount.count": [[12, 80]],
197
+ "characterCount.remaining": one,
198
+ "inlineEdit.edit": [["{{label}}"]],
199
+ "ibanInput.country": [["{{code}}"]],
200
+ "ibanInput.length": [[20, 21]],
201
+ "signChip.direction": [["{{current}}", "{{next}}"]],
202
+ "columnMapper.readError": [["{{name}}"]],
203
+ "columnMapper.summary": [
204
+ [1, 1],
205
+ [3, 12],
206
+ ],
207
+ "columnMapper.unreadCount": one,
208
+ "columnMapper.unreadLine": [[3]],
209
+ "columnMapper.unreadMore": one,
210
+ "columnMapper.columnN": [[3]],
211
+ "columnMapper.roleOf": [["{{column}}"]],
212
+ "columnMapper.requiredRole": [["{{role}}"]],
213
+ "columnMapper.previewOf": [
214
+ [1, 12],
215
+ [10, 250],
216
+ ],
217
+ "columnMapper.oneOf": [["{{roles}}"]],
218
+ "columnMapper.missing": [["{{roles}}"]],
193
219
  };