@eifi1/ui-kit 0.30.0 → 0.31.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 (269) hide show
  1. package/README.md +42 -5
  2. package/dist/account/data-export-setting.js +3 -2
  3. package/dist/account/data-export-setting.js.map +1 -1
  4. package/dist/account/delete-account-setting.d.ts +5 -1
  5. package/dist/account/delete-account-setting.js +3 -2
  6. package/dist/account/delete-account-setting.js.map +1 -1
  7. package/dist/account/email-change-setting.js +4 -3
  8. package/dist/account/email-change-setting.js.map +1 -1
  9. package/dist/account/sessions-setting.js +3 -2
  10. package/dist/account/sessions-setting.js.map +1 -1
  11. package/dist/admin/admin-action-confirm.d.ts +5 -1
  12. package/dist/admin/admin-parts.d.ts +8 -1
  13. package/dist/admin/admin-parts.js +1 -1
  14. package/dist/admin/admin-parts.js.map +1 -1
  15. package/dist/admin/invitations-panel.d.ts +5 -1
  16. package/dist/admin/invitations-panel.js +3 -2
  17. package/dist/admin/invitations-panel.js.map +1 -1
  18. package/dist/admin/reviewer-scope-editor.d.ts +5 -1
  19. package/dist/admin/role-select.d.ts +5 -1
  20. package/dist/admin/transfer-ownership-dialog.d.ts +5 -1
  21. package/dist/admin/user-roster.d.ts +5 -1
  22. package/dist/auth/auth-errors.d.ts +24 -6
  23. package/dist/auth/auth-errors.js +7 -1
  24. package/dist/auth/auth-errors.js.map +1 -1
  25. package/dist/auth/register-form.d.ts +5 -1
  26. package/dist/auth/reset-password-form.d.ts +1 -1
  27. package/dist/auth/reset-password-form.js +2 -1
  28. package/dist/auth/reset-password-form.js.map +1 -1
  29. package/dist/auth/sign-in-form.d.ts +15 -1
  30. package/dist/auth/sign-in-form.js +12 -3
  31. package/dist/auth/sign-in-form.js.map +1 -1
  32. package/dist/auth/verify-email.d.ts +4 -0
  33. package/dist/auth/verify-email.js +3 -2
  34. package/dist/auth/verify-email.js.map +1 -1
  35. package/dist/chart.d.ts +5 -1
  36. package/dist/components/account-settings-labels.d.ts +12 -0
  37. package/dist/components/account-settings-labels.js +2 -1
  38. package/dist/components/account-settings-labels.js.map +1 -1
  39. package/dist/components/account-settings.d.ts +8 -2
  40. package/dist/components/account-settings.js +19 -11
  41. package/dist/components/account-settings.js.map +1 -1
  42. package/dist/components/amount-input.d.ts +5 -1
  43. package/dist/components/button-group.d.ts +5 -1
  44. package/dist/components/calculator.d.ts +5 -1
  45. package/dist/components/confirm-dialog.d.ts +5 -1
  46. package/dist/components/confirm-dialog.js +7 -1
  47. package/dist/components/confirm-dialog.js.map +1 -1
  48. package/dist/components/copy-button.d.ts +5 -1
  49. package/dist/components/danger-confirm.d.ts +5 -1
  50. package/dist/components/data-table.js +8 -1
  51. package/dist/components/data-table.js.map +1 -1
  52. package/dist/components/date-picker.js +9 -4
  53. package/dist/components/date-picker.js.map +1 -1
  54. package/dist/components/facing-pair.d.ts +5 -1
  55. package/dist/components/file-button.d.ts +5 -1
  56. package/dist/components/file-dropzone.d.ts +5 -1
  57. package/dist/components/form-actions.d.ts +5 -1
  58. package/dist/components/iban-input.d.ts +5 -1
  59. package/dist/components/language-select.d.ts +5 -1
  60. package/dist/components/legal-page.d.ts +5 -1
  61. package/dist/components/legal.d.ts +5 -1
  62. package/dist/components/money-field.d.ts +5 -1
  63. package/dist/components/number-field.d.ts +5 -1
  64. package/dist/components/number-input.d.ts +5 -1
  65. package/dist/components/numpad-sheet.d.ts +5 -1
  66. package/dist/components/passkeys-setting.js +2 -1
  67. package/dist/components/passkeys-setting.js.map +1 -1
  68. package/dist/components/phone-input.d.ts +5 -1
  69. package/dist/components/series-chart.d.ts +5 -1
  70. package/dist/components/settings-fields.d.ts +40 -3
  71. package/dist/components/settings-fields.js +20 -1
  72. package/dist/components/settings-fields.js.map +1 -1
  73. package/dist/components/share-card.d.ts +5 -1
  74. package/dist/components/text-link.d.ts +5 -1
  75. package/dist/components/time-input.d.ts +5 -1
  76. package/dist/components/ui.d.ts +5 -1
  77. package/dist/{delete-account-setting-CGVMckMw.d.ts → delete-account-setting-CpIhzxxZ.d.ts} +60 -23
  78. package/dist/demo/demo-banner.d.ts +51 -0
  79. package/dist/demo/demo-banner.js +97 -0
  80. package/dist/demo/demo-banner.js.map +1 -0
  81. package/dist/demo/demo-countdown.d.ts +58 -0
  82. package/dist/demo/demo-countdown.js +79 -0
  83. package/dist/demo/demo-countdown.js.map +1 -0
  84. package/dist/demo/demo-ended.d.ts +45 -0
  85. package/dist/demo/demo-ended.js +42 -0
  86. package/dist/demo/demo-ended.js.map +1 -0
  87. package/dist/demo/demo-labels.d.ts +53 -0
  88. package/dist/demo/demo-labels.js +29 -0
  89. package/dist/demo/demo-labels.js.map +1 -0
  90. package/dist/demo/demo-session.d.ts +30 -0
  91. package/dist/demo/demo-session.js +8 -0
  92. package/dist/demo/demo-session.js.map +1 -0
  93. package/dist/demo/demo-start.d.ts +54 -0
  94. package/dist/demo/demo-start.js +68 -0
  95. package/dist/demo/demo-start.js.map +1 -0
  96. package/dist/feedback/feedback-attachment.d.ts +5 -1
  97. package/dist/feedback/feedback-context.d.ts +5 -1
  98. package/dist/feedback/feedback-crash.d.ts +5 -1
  99. package/dist/feedback/feedback-dialog.d.ts +5 -1
  100. package/dist/feedback/feedback-inbox.d.ts +5 -1
  101. package/dist/feedback/feedback-inbox.js +12 -2
  102. package/dist/feedback/feedback-inbox.js.map +1 -1
  103. package/dist/feedback/feedback-labels.d.ts +5 -1
  104. package/dist/feedback/feedback-labels.js +1 -0
  105. package/dist/feedback/feedback-labels.js.map +1 -1
  106. package/dist/feedback/feedback-menu.d.ts +5 -1
  107. package/dist/feedback/feedback-record.d.ts +5 -1
  108. package/dist/feedback/feedback-record.js +2 -0
  109. package/dist/feedback/feedback-record.js.map +1 -1
  110. package/dist/feedback/feedback-row-detail.d.ts +5 -1
  111. package/dist/feedback/feedback-row-detail.js +7 -0
  112. package/dist/feedback/feedback-row-detail.js.map +1 -1
  113. package/dist/feedback/feedback-status-undo.d.ts +5 -1
  114. package/dist/feedback/feedback-submit.d.ts +5 -1
  115. package/dist/feedback/feedback-swipe.d.ts +6 -2
  116. package/dist/feedback/feedback-swipe.js.map +1 -1
  117. package/dist/feedback/feedback-table.d.ts +5 -1
  118. package/dist/feedback/feedback-thread.d.ts +5 -1
  119. package/dist/feedback.d.ts +5 -1
  120. package/dist/hooks/use-file-drop.d.ts +5 -1
  121. package/dist/i18n/defaults.d.ts +5 -1
  122. package/dist/i18n/defaults.js +6 -0
  123. package/dist/i18n/defaults.js.map +1 -1
  124. package/dist/i18n/german.d.ts +5 -1
  125. package/dist/i18n/german.js +85 -2
  126. package/dist/i18n/german.js.map +1 -1
  127. package/dist/i18n/kit-labels.d.ts +5 -1
  128. package/dist/i18n/kit-labels.js.map +1 -1
  129. package/dist/i18n/languages.d.ts +5 -1
  130. package/dist/i18n/locales/de-CH.d.ts +5 -1
  131. package/dist/i18n/locales/en.d.ts +5 -1
  132. package/dist/i18n/locales/es.d.ts +5 -1
  133. package/dist/i18n/locales/es.js +82 -2
  134. package/dist/i18n/locales/es.js.map +1 -1
  135. package/dist/i18n/locales/fr.d.ts +5 -1
  136. package/dist/i18n/locales/fr.js +83 -2
  137. package/dist/i18n/locales/fr.js.map +1 -1
  138. package/dist/i18n/locales/hu.d.ts +5 -1
  139. package/dist/i18n/locales/hu.js +83 -2
  140. package/dist/i18n/locales/hu.js.map +1 -1
  141. package/dist/i18n/locales/it.d.ts +5 -1
  142. package/dist/i18n/locales/it.js +82 -2
  143. package/dist/i18n/locales/it.js.map +1 -1
  144. package/dist/i18n/locales/zh.d.ts +5 -1
  145. package/dist/i18n/locales/zh.js +81 -2
  146. package/dist/i18n/locales/zh.js.map +1 -1
  147. package/dist/i18n/review.d.ts +5 -1
  148. package/dist/i18n/review.js +15 -1
  149. package/dist/i18n/review.js.map +1 -1
  150. package/dist/index.d.ts +25 -3
  151. package/dist/index.js +96 -0
  152. package/dist/index.js.map +1 -1
  153. package/dist/landing/access.d.ts +48 -0
  154. package/dist/landing/access.js +38 -0
  155. package/dist/landing/access.js.map +1 -0
  156. package/dist/landing/landing-actions.d.ts +140 -0
  157. package/dist/landing/landing-actions.js +39 -0
  158. package/dist/landing/landing-actions.js.map +1 -0
  159. package/dist/landing/landing-labels.d.ts +43 -0
  160. package/dist/landing/landing-labels.js +23 -0
  161. package/dist/landing/landing-labels.js.map +1 -0
  162. package/dist/landing/landing-sections.d.ts +218 -0
  163. package/dist/landing/landing-sections.js +167 -0
  164. package/dist/landing/landing-sections.js.map +1 -0
  165. package/dist/landing/page-seo.d.ts +99 -0
  166. package/dist/landing/page-seo.js +121 -0
  167. package/dist/landing/page-seo.js.map +1 -0
  168. package/dist/landing/public-header.d.ts +148 -0
  169. package/dist/landing/public-header.js +49 -0
  170. package/dist/landing/public-header.js.map +1 -0
  171. package/dist/landing/routing.d.ts +231 -0
  172. package/dist/landing/routing.js +84 -0
  173. package/dist/landing/routing.js.map +1 -0
  174. package/dist/rhf/fields.d.ts +5 -1
  175. package/dist/rhf/form.d.ts +5 -1
  176. package/dist/rhf.d.ts +5 -1
  177. package/dist/settings/settings-catalogue.d.ts +84 -0
  178. package/dist/settings/settings-catalogue.js +47 -0
  179. package/dist/settings/settings-catalogue.js.map +1 -0
  180. package/dist/settings/settings-context.d.ts +31 -0
  181. package/dist/settings/settings-context.js +11 -0
  182. package/dist/settings/settings-context.js.map +1 -0
  183. package/dist/settings/settings-heading.d.ts +50 -0
  184. package/dist/settings/settings-heading.js +27 -0
  185. package/dist/settings/settings-heading.js.map +1 -0
  186. package/dist/settings/settings-labels.d.ts +48 -0
  187. package/dist/settings/settings-labels.js +43 -0
  188. package/dist/settings/settings-labels.js.map +1 -0
  189. package/dist/settings/settings-layout.d.ts +77 -0
  190. package/dist/settings/settings-layout.js +242 -0
  191. package/dist/settings/settings-layout.js.map +1 -0
  192. package/dist/settings/settings-section.d.ts +133 -0
  193. package/dist/settings/settings-section.js +63 -0
  194. package/dist/settings/settings-section.js.map +1 -0
  195. package/dist/settings/use-account-language.d.ts +83 -0
  196. package/dist/settings/use-account-language.js +62 -0
  197. package/dist/settings/use-account-language.js.map +1 -0
  198. package/dist/settings/use-settings-focus.d.ts +34 -0
  199. package/dist/settings/use-settings-focus.js +77 -0
  200. package/dist/settings/use-settings-focus.js.map +1 -0
  201. package/dist/settings/use-settings-route.d.ts +118 -0
  202. package/dist/settings/use-settings-route.js +120 -0
  203. package/dist/settings/use-settings-route.js.map +1 -0
  204. package/dist/shell/app-shell.d.ts +11 -1
  205. package/dist/shell/app-shell.js +3 -2
  206. package/dist/shell/app-shell.js.map +1 -1
  207. package/dist/shell/top-bar-brand.d.ts +5 -1
  208. package/dist/shell.d.ts +15 -1
  209. package/dist/shell.js +56 -0
  210. package/dist/shell.js.map +1 -1
  211. package/dist/wizard/stepper-nav.d.ts +5 -1
  212. package/dist/wizard.d.ts +5 -1
  213. package/package.json +2 -1
  214. package/src/account/data-export-setting.tsx +3 -2
  215. package/src/account/delete-account-setting.tsx +3 -2
  216. package/src/account/email-change-setting.tsx +4 -7
  217. package/src/account/sessions-setting.tsx +3 -2
  218. package/src/admin/admin-parts.ts +9 -2
  219. package/src/admin/invitations-panel.tsx +11 -4
  220. package/src/auth/auth-errors.ts +36 -5
  221. package/src/auth/reset-password-form.tsx +6 -2
  222. package/src/auth/sign-in-form.tsx +34 -3
  223. package/src/auth/verify-email.tsx +14 -2
  224. package/src/components/account-settings-labels.ts +13 -0
  225. package/src/components/account-settings.tsx +33 -12
  226. package/src/components/confirm-dialog.tsx +20 -1
  227. package/src/components/data-table.tsx +8 -0
  228. package/src/components/date-picker.tsx +9 -4
  229. package/src/components/passkeys-setting.tsx +2 -1
  230. package/src/components/settings-fields.tsx +50 -1
  231. package/src/demo/demo-banner.tsx +159 -0
  232. package/src/demo/demo-countdown.ts +141 -0
  233. package/src/demo/demo-ended.tsx +89 -0
  234. package/src/demo/demo-labels.ts +78 -0
  235. package/src/demo/demo-session.ts +32 -0
  236. package/src/demo/demo-start.tsx +150 -0
  237. package/src/feedback/feedback-inbox.tsx +21 -8
  238. package/src/feedback/feedback-labels.ts +2 -1
  239. package/src/feedback/feedback-record.ts +10 -7
  240. package/src/feedback/feedback-row-detail.tsx +28 -4
  241. package/src/feedback/feedback-swipe.tsx +1 -1
  242. package/src/i18n/defaults.ts +6 -0
  243. package/src/i18n/german.ts +87 -0
  244. package/src/i18n/kit-labels.tsx +9 -0
  245. package/src/i18n/locales/es.ts +84 -0
  246. package/src/i18n/locales/fr.ts +85 -0
  247. package/src/i18n/locales/hu.ts +85 -0
  248. package/src/i18n/locales/it.ts +84 -0
  249. package/src/i18n/locales/zh.ts +82 -0
  250. package/src/i18n/review.ts +14 -0
  251. package/src/index.ts +98 -1
  252. package/src/landing/access.ts +97 -0
  253. package/src/landing/landing-actions.tsx +96 -0
  254. package/src/landing/landing-labels.ts +59 -0
  255. package/src/landing/landing-sections.tsx +337 -0
  256. package/src/landing/page-seo.ts +251 -0
  257. package/src/landing/public-header.tsx +120 -0
  258. package/src/landing/routing.tsx +226 -0
  259. package/src/settings/settings-catalogue.ts +132 -0
  260. package/src/settings/settings-context.ts +33 -0
  261. package/src/settings/settings-heading.tsx +65 -0
  262. package/src/settings/settings-labels.ts +87 -0
  263. package/src/settings/settings-layout.tsx +379 -0
  264. package/src/settings/settings-section.tsx +108 -0
  265. package/src/settings/use-account-language.ts +146 -0
  266. package/src/settings/use-settings-focus.ts +120 -0
  267. package/src/settings/use-settings-route.ts +258 -0
  268. package/src/shell/app-shell.tsx +10 -2
  269. package/src/shell.ts +51 -0
@@ -70,6 +70,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
70
70
  // 0.27.0. "Comentarios" for feedback, as `feedbackDialog`; "corrección" for rework.
71
71
  feedbackStatus: {
72
72
  OPEN: "Abierto",
73
+ READY: "Listo para implementar",
73
74
  IN_PROGRESS: "En curso",
74
75
  IN_EVALUATION: "En evaluación",
75
76
  NEEDS_LIVE_TEST: "Probar en producción",
@@ -131,6 +132,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
131
132
  phoneActions: "Acciones de comentarios",
132
133
  },
133
134
  feedbackDetail: {
135
+ subject: "Asunto",
134
136
  body: "Descripción",
135
137
  edit: "Editar",
136
138
  editDescription: "Editar descripción",
@@ -189,6 +191,8 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
189
191
  qrAlt: "Código QR para su app de autenticación",
190
192
  secretHint: "¿No puede escanearlo? Introduzca esta clave en la app:",
191
193
  copySecret: "Copiar clave",
194
+ // 0.31.0: the card's title; the state ("Activada") stands beside it.
195
+ title: "Verificación en dos pasos",
192
196
  },
193
197
  passkeys: {
194
198
  title: "Llaves de acceso",
@@ -887,6 +891,8 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
887
891
  `${n(length)} letras y dígitos. Los guiones y los espacios no importan.`,
888
892
  recoveryCodeInvalid: "Este código de respaldo no es válido o ya se ha usado.",
889
893
  rateLimited,
894
+ // 0.31.0: the same words as `landing.requestAccess`.
895
+ requestAccess: "Solicitar acceso",
890
896
  },
891
897
  register: {
892
898
  firstName: "Nombre",
@@ -969,6 +975,7 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
969
975
  resendIn: (seconds) => `Enviar de nuevo en ${n(seconds)} s`,
970
976
  resent: "Correo de confirmación enviado",
971
977
  resendError: "No se pudo enviar el correo de confirmación",
978
+ rateLimited,
972
979
  banner: "Confirme su dirección de correo electrónico.",
973
980
  dismiss: "Ahora no",
974
981
  },
@@ -1331,6 +1338,83 @@ export function uiKitLabelsEs(numberLocale = "es-ES"): UiKitLabels {
1331
1338
  ? `¿Aprobar el texto sin revisar de «${group}»?`
1332
1339
  : `¿Aprobar los ${n(count)} textos sin revisar de «${group}», incluidos los que no están en pantalla?`,
1333
1340
  },
1341
+ // 0.31.0 — docs/settings-harmonization.md §4.3 and docs/landing-demo-harmonization.md
1342
+ // §4–§5: the settings shell, the landing page's generic words and the demo. The help
1343
+ // lines name things as `accountSettings`, `sessions` and `dataExport` do. "Usted".
1344
+ // "Ajustes" (es-ES), a countable noun: "Ningún ajuste coincide…".
1345
+ settings: {
1346
+ title: "Ajustes",
1347
+ search: "Buscar en los ajustes",
1348
+ searchPlaceholder: "Buscar en los ajustes…",
1349
+ results: "Ajustes coincidentes",
1350
+ noMatches: (query) => `Ningún ajuste coincide con «${query}».`,
1351
+ // As `commandPalette.clear`.
1352
+ clearSearch: "Borrar búsqueda",
1353
+ back: "Volver a los ajustes",
1354
+ sections: "Secciones de los ajustes",
1355
+ matchCount: (count) => `${n(count)} ${plural(count, "resultado", "resultados")}`,
1356
+ groups: {
1357
+ appearance: {
1358
+ title: "Apariencia",
1359
+ help: "Idioma, tema y aspecto de la aplicación en este dispositivo.",
1360
+ },
1361
+ account: {
1362
+ title: "Cuenta",
1363
+ help: "Su perfil y su dirección de correo electrónico.",
1364
+ },
1365
+ security: {
1366
+ title: "Seguridad",
1367
+ help: "Cómo inicia sesión, y en qué dispositivos tiene la sesión abierta.",
1368
+ },
1369
+ notifications: {
1370
+ title: "Notificaciones",
1371
+ help: "Qué notificaciones recibe, cuándo y en qué dispositivos.",
1372
+ },
1373
+ data: {
1374
+ title: "Datos",
1375
+ help: "Exporte lo que es suyo o elimínelo junto con su cuenta.",
1376
+ },
1377
+ },
1378
+ },
1379
+ landing: {
1380
+ signIn: "Iniciar sesión",
1381
+ requestAccess: "Solicitar acceso",
1382
+ getStarted: "Empezar",
1383
+ tryDemo: "Probar la demo",
1384
+ openApp: "Abrir la aplicación",
1385
+ continueDemo: "Continuar la demo",
1386
+ beta: "Beta",
1387
+ // Plain text: a mail's subject and body lines, never HTML.
1388
+ accessSubject: (app) => (app ? `Acceso a ${app}` : "Solicitud de acceso"),
1389
+ accessName: "Nombre:",
1390
+ accessCompany: "Empresa:",
1391
+ accessUse: "Uso previsto:",
1392
+ },
1393
+ demo: {
1394
+ starting: "Iniciando la demo…",
1395
+ rateLimited: (minutes) =>
1396
+ minutes
1397
+ ? `Demasiadas demos desde esta red. Inténtelo de nuevo en ${n(minutes)} min.`
1398
+ : "Demasiadas demos desde esta red. Inténtelo de nuevo más tarde.",
1399
+ capacity: "La demo está completa en este momento. Inténtelo de nuevo más tarde.",
1400
+ unavailable: "La demo no está disponible en este momento.",
1401
+ failed: "No se pudo iniciar la demo. Inténtelo de nuevo.",
1402
+ // As `legal.backHome`.
1403
+ backToStart: "Volver al inicio",
1404
+ // Hours and minutes together are plural; minutes alone agree with the count.
1405
+ hoursLeft: (hours, minutes) => `Demo · quedan ${n(hours)} h ${n(minutes)} min`,
1406
+ minutesLeft: (minutes) => `Demo · ${plural(minutes, "queda", "quedan")} ${n(minutes)} min`,
1407
+ badge: "Demo",
1408
+ readOnly: "Está viendo datos de ejemplo. No es posible hacer cambios.",
1409
+ sandbox: "Su propio trabajo se elimina cuando termina la demo.",
1410
+ details: "Detalles de la demo",
1411
+ writeLocked: "No es posible en la demo.",
1412
+ endedTitle: "La demo ha terminado",
1413
+ endedReadOnly: "Los datos de ejemplo se restablecen con regularidad.",
1414
+ endedSandbox:
1415
+ "Los datos de ejemplo se restablecen con regularidad; su propio trabajo en la demo se elimina.",
1416
+ restart: "Iniciar una nueva demo",
1417
+ },
1334
1418
  };
1335
1419
  }
1336
1420
 
@@ -70,6 +70,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
70
70
  // 0.27.0. "Retour" for feedback, as `feedbackDialog`; "reprise" for rework.
71
71
  feedbackStatus: {
72
72
  OPEN: "Ouvert",
73
+ READY: "Prêt à implémenter",
73
74
  IN_PROGRESS: "En cours",
74
75
  IN_EVALUATION: "En évaluation",
75
76
  NEEDS_LIVE_TEST: "À tester en production",
@@ -129,6 +130,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
129
130
  phoneActions: "Actions sur les retours",
130
131
  },
131
132
  feedbackDetail: {
133
+ subject: "Objet",
132
134
  body: "Description",
133
135
  edit: "Modifier",
134
136
  editDescription: "Modifier la description",
@@ -189,6 +191,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
189
191
  qrAlt: "Code QR pour votre application d’authentification",
190
192
  secretHint: "Impossible de le scanner\u202f? Saisissez plutôt cette clé dans l’application\u00a0:",
191
193
  copySecret: "Copier la clé",
194
+ // 0.31.0: the card's title; the state ("Activée") stands beside it.
195
+ title: "Authentification à deux facteurs",
192
196
  },
193
197
  passkeys: {
194
198
  title: "Clés d’accès",
@@ -909,6 +913,8 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
909
913
  `${n(length)} lettres et chiffres. Les tirets et les espaces ne comptent pas.`,
910
914
  recoveryCodeInvalid: "Ce code de secours n’est pas valable ou a déjà été utilisé.",
911
915
  rateLimited,
916
+ // 0.31.0: the same words as `landing.requestAccess`.
917
+ requestAccess: "Demander l’accès",
912
918
  },
913
919
  register: {
914
920
  firstName: "Prénom",
@@ -991,6 +997,7 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
991
997
  resendIn: (seconds) => `Envoyer à nouveau dans ${n(seconds)}\u00a0s`,
992
998
  resent: "E-mail de confirmation envoyé",
993
999
  resendError: "Impossible d’envoyer l’e-mail de confirmation",
1000
+ rateLimited,
994
1001
  banner: "Veuillez confirmer votre adresse e-mail.",
995
1002
  dismiss: "Pas maintenant",
996
1003
  },
@@ -1358,6 +1365,84 @@ export function uiKitLabelsFr(numberLocale = "fr-FR"): UiKitLabels {
1358
1365
  ? `Approuver le texte non relu de «\u202f${group}\u202f»\u202f?`
1359
1366
  : `Approuver les ${n(count)} textes non relus de «\u202f${group}\u202f», y compris ceux qui ne sont pas à l’écran\u202f?`,
1360
1367
  },
1368
+ // 0.31.0 — docs/settings-harmonization.md §4.3 and docs/landing-demo-harmonization.md
1369
+ // §4–§5: the settings shell, the landing page's generic words and the demo. The help
1370
+ // lines name things as `accountSettings`, `sessions` and `dataExport` do, and no
1371
+ // sentence about the reader needs a gender ("informé·e").
1372
+ settings: {
1373
+ title: "Paramètres",
1374
+ search: "Rechercher dans les paramètres",
1375
+ searchPlaceholder: "Rechercher dans les paramètres…",
1376
+ results: "Paramètres correspondants",
1377
+ noMatches: (query) => `Aucun paramètre ne correspond à «\u202f${query}\u202f».`,
1378
+ // As `commandPalette.clear`.
1379
+ clearSearch: "Effacer la recherche",
1380
+ back: "Retour aux paramètres",
1381
+ sections: "Sections des paramètres",
1382
+ matchCount: (count) => `${n(count)} ${plural(count, "résultat", "résultats")}`,
1383
+ groups: {
1384
+ appearance: {
1385
+ title: "Apparence",
1386
+ help: "Langue, thème et apparence de l’application sur cet appareil.",
1387
+ },
1388
+ account: {
1389
+ title: "Compte",
1390
+ help: "Votre profil et votre adresse e-mail.",
1391
+ },
1392
+ security: {
1393
+ title: "Sécurité",
1394
+ help: "Votre connexion, et les appareils où elle est ouverte.",
1395
+ },
1396
+ notifications: {
1397
+ title: "Notifications",
1398
+ help: "Quelles notifications vous recevez, quand et sur quels appareils.",
1399
+ },
1400
+ data: {
1401
+ title: "Données",
1402
+ help: "Exportez ce qui vous appartient, ou supprimez-le avec votre compte.",
1403
+ },
1404
+ },
1405
+ },
1406
+ landing: {
1407
+ signIn: "Se connecter",
1408
+ requestAccess: "Demander l’accès",
1409
+ getStarted: "Commencer",
1410
+ tryDemo: "Essayer la démo",
1411
+ openApp: "Ouvrir l’application",
1412
+ continueDemo: "Continuer la démo",
1413
+ // As `legal.notice` ("Bêta fermée").
1414
+ beta: "Bêta",
1415
+ // Plain text: a mail's subject and body lines, never HTML. The no-break space
1416
+ // before the colon, as everywhere in this catalogue.
1417
+ accessSubject: (app) => (app ? `Accès à ${app}` : "Demande d’accès"),
1418
+ accessName: "Nom\u00a0:",
1419
+ accessCompany: "Entreprise\u00a0:",
1420
+ accessUse: "Utilisation prévue\u00a0:",
1421
+ },
1422
+ demo: {
1423
+ starting: "Démarrage de la démo…",
1424
+ rateLimited: (minutes) =>
1425
+ minutes
1426
+ ? `Trop de démos depuis ce réseau. Réessayez dans ${n(minutes)}\u00a0min.`
1427
+ : "Trop de démos depuis ce réseau. Réessayez plus tard.",
1428
+ capacity: "La démo est complète pour le moment. Réessayez plus tard.",
1429
+ unavailable: "La démo n’est pas disponible pour le moment.",
1430
+ failed: "La démo n’a pas pu être lancée. Veuillez réessayer.",
1431
+ // As `legal.backHome`.
1432
+ backToStart: "Retour à l’accueil",
1433
+ hoursLeft: (hours, minutes) => `Démo · il reste ${n(hours)}\u00a0h ${n(minutes)}\u00a0min`,
1434
+ minutesLeft: (minutes) => `Démo · il reste ${n(minutes)}\u00a0min`,
1435
+ badge: "Démo",
1436
+ readOnly: "Vous consultez des données d’exemple. Aucune modification n’est possible.",
1437
+ sandbox: "Ce que vous créez vous-même est supprimé à la fin de la démo.",
1438
+ details: "Détails de la démo",
1439
+ writeLocked: "Impossible dans la démo.",
1440
+ endedTitle: "La démo est terminée",
1441
+ endedReadOnly: "Les données d’exemple sont réinitialisées régulièrement.",
1442
+ endedSandbox:
1443
+ "Les données d’exemple sont réinitialisées régulièrement\u202f; ce que vous avez créé dans la démo est supprimé.",
1444
+ restart: "Lancer une nouvelle démo",
1445
+ },
1361
1446
  };
1362
1447
  }
1363
1448
 
@@ -71,6 +71,7 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
71
71
  // A noun after a number stays singular in Hungarian, so the counts need no plural.
72
72
  feedbackStatus: {
73
73
  OPEN: "Nyitott",
74
+ READY: "Megvalósításra kész",
74
75
  IN_PROGRESS: "Folyamatban",
75
76
  IN_EVALUATION: "Értékelés alatt",
76
77
  NEEDS_LIVE_TEST: "Élesben tesztelendő",
@@ -129,6 +130,7 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
129
130
  phoneActions: "Visszajelzés-műveletek",
130
131
  },
131
132
  feedbackDetail: {
133
+ subject: "Tárgy",
132
134
  body: "Leírás",
133
135
  edit: "Szerkesztés",
134
136
  editDescription: "Leírás szerkesztése",
@@ -187,6 +189,8 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
187
189
  qrAlt: "QR-kód a hitelesítő alkalmazáshoz",
188
190
  secretHint: "Nem sikerül beolvasni? Adja meg inkább ezt a kulcsot az alkalmazásban:",
189
191
  copySecret: "Kulcs másolása",
192
+ // 0.31.0: the card's title; the state ("Bekapcsolva") stands beside it.
193
+ title: "Kétlépcsős azonosítás",
190
194
  },
191
195
  passkeys: {
192
196
  title: "Hozzáférési kulcsok",
@@ -897,6 +901,8 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
897
901
  `${n(length)} betű és számjegy. A kötőjelek és a szóközök nem számítanak.`,
898
902
  recoveryCodeInvalid: "Ez a tartalékkód érvénytelen, vagy már felhasználták.",
899
903
  rateLimited,
904
+ // 0.31.0: the same words as `landing.requestAccess`.
905
+ requestAccess: "Hozzáférés kérése",
900
906
  },
901
907
  register: {
902
908
  firstName: "Keresztnév",
@@ -980,6 +986,7 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
980
986
  resendIn: (seconds) => `Újraküldés ${n(seconds)} mp múlva`,
981
987
  resent: "Megerősítő e-mail elküldve",
982
988
  resendError: "Nem sikerült elküldeni a megerősítő e-mailt",
989
+ rateLimited,
983
990
  banner: "Kérjük, erősítse meg az e-mail-címét.",
984
991
  dismiss: "Most nem",
985
992
  },
@@ -1332,6 +1339,84 @@ export function uiKitLabelsHu(numberLocale = "hu-HU"): UiKitLabels {
1332
1339
  ? `„${group}”: jóváhagyja az ellenőrizetlen szöveget?`
1333
1340
  : `„${group}”: jóváhagyja mind a(z) ${n(count)} ellenőrizetlen szöveget, a képernyőn nem láthatókat is?`,
1334
1341
  },
1342
+ // 0.31.0 — docs/settings-harmonization.md §4.3 and docs/landing-demo-harmonization.md
1343
+ // §4–§5: the settings shell, the landing page's generic words and the demo. The help
1344
+ // lines name things as `accountSettings`, `sessions` and `dataExport` do. "Ön"; the
1345
+ // buttons are nouns, as "Fiók létrehozása"; the numeral stays bare before its noun
1346
+ // ("3 találat", "50 perc"); every value the app passes in stands after a colon.
1347
+ settings: {
1348
+ title: "Beállítások",
1349
+ search: "Keresés a beállításokban",
1350
+ searchPlaceholder: "Keresés a beállításokban…",
1351
+ results: "Megfelelő beállítások",
1352
+ noMatches: (query) => `Nincs a keresésnek megfelelő beállítás: „${query}”.`,
1353
+ // As `commandPalette.clear`.
1354
+ clearSearch: "Keresés törlése",
1355
+ back: "Vissza a beállításokhoz",
1356
+ sections: "Beállításcsoportok",
1357
+ matchCount: (count) => `${n(count)} találat`,
1358
+ groups: {
1359
+ appearance: {
1360
+ title: "Megjelenés",
1361
+ help: "Nyelv, téma és az alkalmazás megjelenése ezen az eszközön.",
1362
+ },
1363
+ account: {
1364
+ title: "Fiók",
1365
+ help: "Az Ön profilja és e-mail-címe.",
1366
+ },
1367
+ security: {
1368
+ title: "Biztonság",
1369
+ help: "Hogyan jelentkezik be, és hol van bejelentkezve.",
1370
+ },
1371
+ notifications: {
1372
+ title: "Értesítések",
1373
+ help: "Miről, mikor és mely eszközökön kap értesítést.",
1374
+ },
1375
+ data: {
1376
+ title: "Adatok",
1377
+ help: "Exportálja a saját adatait, vagy törölje őket a fiókjával együtt.",
1378
+ },
1379
+ },
1380
+ },
1381
+ landing: {
1382
+ signIn: "Bejelentkezés",
1383
+ requestAccess: "Hozzáférés kérése",
1384
+ getStarted: "Kezdés",
1385
+ tryDemo: "Demó kipróbálása",
1386
+ openApp: "Alkalmazás megnyitása",
1387
+ continueDemo: "Demó folytatása",
1388
+ beta: "Béta",
1389
+ // Plain text: a mail's subject and body lines, never HTML. The app's name after a
1390
+ // colon, so it needs no case ending ("Hozzáférés a Kastlanhoz").
1391
+ accessSubject: (app) => (app ? `Hozzáférési kérelem: ${app}` : "Hozzáférési kérelem"),
1392
+ accessName: "Név:",
1393
+ accessCompany: "Cég:",
1394
+ accessUse: "Mire használná:",
1395
+ },
1396
+ demo: {
1397
+ starting: "A demó indítása…",
1398
+ rateLimited: (minutes) =>
1399
+ minutes
1400
+ ? `Túl sok demó indult erről a hálózatról. Próbálja újra ${n(minutes)} perc múlva.`
1401
+ : "Túl sok demó indult erről a hálózatról. Próbálja újra később.",
1402
+ capacity: "A demó jelenleg megtelt. Kérjük, próbálja újra később.",
1403
+ unavailable: "A demó jelenleg nem érhető el.",
1404
+ failed: "A demót nem sikerült elindítani. Kérjük, próbálja újra.",
1405
+ // As `legal.backHome`.
1406
+ backToStart: "Vissza a kezdőlapra",
1407
+ hoursLeft: (hours, minutes) => `Demó · még ${n(hours)} óra ${n(minutes)} perc`,
1408
+ minutesLeft: (minutes) => `Demó · még ${n(minutes)} perc`,
1409
+ badge: "Demó",
1410
+ readOnly: "Mintaadatokat lát. Módosításra nincs lehetőség.",
1411
+ sandbox: "Amit Ön hoz létre, az a demó végén törlődik.",
1412
+ details: "A demó részletei",
1413
+ writeLocked: "A demóban ez nem lehetséges.",
1414
+ endedTitle: "A demó véget ért",
1415
+ endedReadOnly: "A mintaadatokat rendszeresen visszaállítjuk.",
1416
+ endedSandbox:
1417
+ "A mintaadatokat rendszeresen visszaállítjuk, a demóban létrehozott saját munkáját pedig töröljük.",
1418
+ restart: "Új demó indítása",
1419
+ },
1335
1420
  };
1336
1421
  }
1337
1422
 
@@ -70,6 +70,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
70
70
  // 0.27.0. "Feedback" stays, as `feedbackDialog`; "rielaborazione" for rework.
71
71
  feedbackStatus: {
72
72
  OPEN: "Aperto",
73
+ READY: "Pronto da implementare",
73
74
  IN_PROGRESS: "In corso",
74
75
  IN_EVALUATION: "In valutazione",
75
76
  NEEDS_LIVE_TEST: "Da testare in produzione",
@@ -131,6 +132,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
131
132
  phoneActions: "Azioni sul feedback",
132
133
  },
133
134
  feedbackDetail: {
135
+ subject: "Oggetto",
134
136
  body: "Descrizione",
135
137
  edit: "Modifica",
136
138
  editDescription: "Modifica descrizione",
@@ -191,6 +193,8 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
191
193
  qrAlt: "Codice QR per la Sua app di autenticazione",
192
194
  secretHint: "Non riesce a scansionarlo? Inserisca invece questa chiave nell’app:",
193
195
  copySecret: "Copia chiave",
196
+ // 0.31.0: the card's title; the state ("Attiva") stands beside it.
197
+ title: "Autenticazione a due fattori",
194
198
  },
195
199
  passkeys: {
196
200
  title: "Passkey",
@@ -895,6 +899,8 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
895
899
  recoveryCodeHint: (length) => `${n(length)} lettere e cifre. Trattini e spazi non contano.`,
896
900
  recoveryCodeInvalid: "Questo codice di riserva non è valido o è già stato usato.",
897
901
  rateLimited,
902
+ // 0.31.0: the same words as `landing.requestAccess`.
903
+ requestAccess: "Richiedi l’accesso",
898
904
  },
899
905
  register: {
900
906
  firstName: "Nome",
@@ -976,6 +982,7 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
976
982
  resendIn: (seconds) => `Invia di nuovo tra ${n(seconds)} s`,
977
983
  resent: "Email di conferma inviata",
978
984
  resendError: "Impossibile inviare l’email di conferma",
985
+ rateLimited,
979
986
  banner: "Confermi il Suo indirizzo email.",
980
987
  dismiss: "Non ora",
981
988
  },
@@ -1342,6 +1349,83 @@ export function uiKitLabelsIt(numberLocale = "it-IT"): UiKitLabels {
1342
1349
  ? `Approvare il testo non rivisto in «${group}»?`
1343
1350
  : `Approvare tutti i ${n(count)} testi non rivisti in «${group}», compresi quelli non visibili sullo schermo?`,
1344
1351
  },
1352
+ // 0.31.0 — docs/settings-harmonization.md §4.3 and docs/landing-demo-harmonization.md
1353
+ // §4–§5: the settings shell, the landing page's generic words and the demo. The help
1354
+ // lines name things as `accountSettings`, `sessions` and `dataExport` do. "Lei", and
1355
+ // no sentence about the reader needs a gender ("avvisato/a").
1356
+ settings: {
1357
+ title: "Impostazioni",
1358
+ search: "Cerca nelle impostazioni",
1359
+ searchPlaceholder: "Cerca nelle impostazioni…",
1360
+ results: "Impostazioni corrispondenti",
1361
+ noMatches: (query) => `Nessuna impostazione corrisponde a «${query}».`,
1362
+ // As `commandPalette.clear`.
1363
+ clearSearch: "Cancella ricerca",
1364
+ back: "Torna alle impostazioni",
1365
+ sections: "Sezioni delle impostazioni",
1366
+ matchCount: (count) => `${n(count)} ${plural(count, "risultato", "risultati")}`,
1367
+ groups: {
1368
+ appearance: {
1369
+ title: "Aspetto",
1370
+ help: "Lingua, tema e aspetto dell’app su questo dispositivo.",
1371
+ },
1372
+ account: {
1373
+ title: "Account",
1374
+ help: "Il Suo profilo e il Suo indirizzo email.",
1375
+ },
1376
+ security: {
1377
+ title: "Sicurezza",
1378
+ help: "Come accede, e su quali dispositivi la sessione è aperta.",
1379
+ },
1380
+ notifications: {
1381
+ title: "Notifiche",
1382
+ help: "Quali notifiche riceve, quando e su quali dispositivi.",
1383
+ },
1384
+ data: {
1385
+ title: "Dati",
1386
+ help: "Esporti i Suoi dati o li elimini insieme al Suo account.",
1387
+ },
1388
+ },
1389
+ },
1390
+ landing: {
1391
+ signIn: "Accedi",
1392
+ requestAccess: "Richiedi l’accesso",
1393
+ getStarted: "Inizia",
1394
+ tryDemo: "Prova la demo",
1395
+ openApp: "Apri l’app",
1396
+ continueDemo: "Continua la demo",
1397
+ beta: "Beta",
1398
+ // Plain text: a mail's subject and body lines, never HTML.
1399
+ accessSubject: (app) => (app ? `Accesso a ${app}` : "Richiesta di accesso"),
1400
+ accessName: "Nome:",
1401
+ accessCompany: "Azienda:",
1402
+ accessUse: "Uso previsto:",
1403
+ },
1404
+ demo: {
1405
+ starting: "Avvio della demo…",
1406
+ rateLimited: (minutes) =>
1407
+ minutes
1408
+ ? `Troppe demo da questa rete. Riprovi tra ${n(minutes)} min.`
1409
+ : "Troppe demo da questa rete. Riprovi più tardi.",
1410
+ capacity: "La demo è al completo in questo momento. Riprovi più tardi.",
1411
+ unavailable: "La demo non è disponibile in questo momento.",
1412
+ failed: "Impossibile avviare la demo. Riprovi.",
1413
+ // As `legal.backHome`.
1414
+ backToStart: "Torna alla pagina iniziale",
1415
+ // "ancora" rather than "mancano", which would have to agree with the count.
1416
+ hoursLeft: (hours, minutes) => `Demo · ancora ${n(hours)} h ${n(minutes)} min`,
1417
+ minutesLeft: (minutes) => `Demo · ancora ${n(minutes)} min`,
1418
+ badge: "Demo",
1419
+ readOnly: "Sta guardando dati di esempio. Non è possibile apportare modifiche.",
1420
+ sandbox: "Quello che crea viene eliminato al termine della demo.",
1421
+ details: "Dettagli della demo",
1422
+ writeLocked: "Non è possibile nella demo.",
1423
+ endedTitle: "La demo è terminata",
1424
+ endedReadOnly: "I dati di esempio vengono reimpostati regolarmente.",
1425
+ endedSandbox:
1426
+ "I dati di esempio vengono reimpostati regolarmente; quello che ha creato nella demo viene eliminato.",
1427
+ restart: "Avvia una nuova demo",
1428
+ },
1345
1429
  };
1346
1430
  }
1347
1431
 
@@ -64,6 +64,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
64
64
  // 0.27.0. 反馈 for feedback, as `feedbackDialog`; 返工 for rework.
65
65
  feedbackStatus: {
66
66
  OPEN: "待处理",
67
+ READY: "待实现",
67
68
  IN_PROGRESS: "处理中",
68
69
  IN_EVALUATION: "评估中",
69
70
  NEEDS_LIVE_TEST: "待线上测试",
@@ -122,6 +123,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
122
123
  phoneActions: "反馈操作",
123
124
  },
124
125
  feedbackDetail: {
126
+ subject: "主题",
125
127
  body: "描述",
126
128
  edit: "编辑",
127
129
  editDescription: "编辑描述",
@@ -180,6 +182,8 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
180
182
  qrAlt: "身份验证器应用的二维码",
181
183
  secretHint: "无法扫描?请改为在应用中输入此密钥:",
182
184
  copySecret: "复制密钥",
185
+ // 0.31.0: the card's title; the state ("已开启") stands beside it.
186
+ title: "双重验证",
183
187
  },
184
188
  passkeys: {
185
189
  title: "通行密钥",
@@ -866,6 +870,8 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
866
870
  recoveryCodeHint: (length) => `共 ${n(length)} 位字母和数字,连字符和空格不影响。`,
867
871
  recoveryCodeInvalid: "此备用码无效或已被使用。",
868
872
  rateLimited,
873
+ // 0.31.0: the same words as `landing.requestAccess`.
874
+ requestAccess: "申请访问权限",
869
875
  },
870
876
  register: {
871
877
  firstName: "名字",
@@ -943,6 +949,7 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
943
949
  resendIn: (seconds) => `${n(seconds)} 秒后可重新发送`,
944
950
  resent: "确认邮件已发送",
945
951
  resendError: "无法发送确认邮件",
952
+ rateLimited,
946
953
  banner: "请确认您的电子邮箱地址。",
947
954
  dismiss: "暂不",
948
955
  },
@@ -1276,6 +1283,81 @@ export function uiKitLabelsZh(numberLocale = "zh-CN"): UiKitLabels {
1276
1283
  ? `通过“${group}”中的未审校文本?`
1277
1284
  : `通过“${group}”中全部 ${n(count)} 条未审校文本(包括未显示在屏幕上的)?`,
1278
1285
  },
1286
+ // 0.31.0 — docs/settings-harmonization.md §4.3 and docs/landing-demo-harmonization.md
1287
+ // §4–§5: the settings shell, the landing page's generic words and the demo. The help
1288
+ // lines name things as `accountSettings`, `sessions` and `dataExport` do; "访问权限"
1289
+ // as `shareCard`. A space either side of a numeral or a Latin name.
1290
+ settings: {
1291
+ title: "设置",
1292
+ search: "搜索设置",
1293
+ searchPlaceholder: "搜索设置…",
1294
+ results: "匹配的设置",
1295
+ noMatches: (query) => `没有与“${query}”匹配的设置。`,
1296
+ // As `commandPalette.clear`.
1297
+ clearSearch: "清除搜索",
1298
+ back: "返回设置",
1299
+ sections: "设置分类",
1300
+ matchCount: (count) => `${n(count)} 个匹配项`,
1301
+ groups: {
1302
+ appearance: {
1303
+ title: "外观",
1304
+ help: "语言、主题,以及应用在此设备上的外观。",
1305
+ },
1306
+ account: {
1307
+ title: "账户",
1308
+ help: "您的个人资料和电子邮箱地址。",
1309
+ },
1310
+ security: {
1311
+ title: "安全",
1312
+ help: "您的登录方式,以及已在哪些设备上登录。",
1313
+ },
1314
+ notifications: {
1315
+ title: "通知",
1316
+ help: "您会收到哪些通知、何时收到,以及在哪些设备上收到。",
1317
+ },
1318
+ data: {
1319
+ title: "数据",
1320
+ help: "导出属于您的数据,或将其连同账户一并删除。",
1321
+ },
1322
+ },
1323
+ },
1324
+ landing: {
1325
+ signIn: "登录",
1326
+ requestAccess: "申请访问权限",
1327
+ getStarted: "开始使用",
1328
+ tryDemo: "体验演示",
1329
+ openApp: "打开应用",
1330
+ continueDemo: "继续演示",
1331
+ beta: "测试版",
1332
+ // Plain text: a mail's subject and body lines, never HTML. Full-width colons.
1333
+ accessSubject: (app) => (app ? `申请访问 ${app}` : "访问权限申请"),
1334
+ accessName: "姓名:",
1335
+ accessCompany: "公司:",
1336
+ accessUse: "用途:",
1337
+ },
1338
+ demo: {
1339
+ starting: "正在启动演示…",
1340
+ rateLimited: (minutes) =>
1341
+ minutes
1342
+ ? `来自此网络的演示过多,请 ${n(minutes)} 分钟后重试。`
1343
+ : "来自此网络的演示过多,请稍后重试。",
1344
+ capacity: "演示名额已满,请稍后重试。",
1345
+ unavailable: "演示暂不可用。",
1346
+ failed: "无法启动演示,请重试。",
1347
+ // As `legal.backHome`.
1348
+ backToStart: "返回首页",
1349
+ hoursLeft: (hours, minutes) => `演示 · 剩余 ${n(hours)} 小时 ${n(minutes)} 分钟`,
1350
+ minutesLeft: (minutes) => `演示 · 剩余 ${n(minutes)} 分钟`,
1351
+ badge: "演示",
1352
+ readOnly: "您正在查看示例数据,无法进行修改。",
1353
+ sandbox: "您自己创建的内容将在演示结束时删除。",
1354
+ details: "演示详情",
1355
+ writeLocked: "演示中无法执行此操作。",
1356
+ endedTitle: "演示已结束",
1357
+ endedReadOnly: "示例数据会定期重置。",
1358
+ endedSandbox: "示例数据会定期重置;您在演示中创建的内容会被删除。",
1359
+ restart: "开始新的演示",
1360
+ },
1279
1361
  };
1280
1362
  }
1281
1363
 
@@ -309,6 +309,7 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
309
309
  "register.rateLimited": [[], [30], [300]],
310
310
  "forgotPassword.rateLimited": [[], [30], [300]],
311
311
  "resetPassword.rateLimited": [[], [30], [300]],
312
+ "verifyEmail.rateLimited": [[], [30], [300]],
312
313
  "emailChange.emailTagUse": [["{{address}}"]],
313
314
  "emailChange.pending": [["{{newEmail}}"]],
314
315
  "emailChange.pendingHint": [["{{currentEmail}}"]],
@@ -338,4 +339,17 @@ export const KIT_LABEL_SAMPLES: Readonly<Record<string, readonly (readonly unkno
338
339
  "invitations.linkReady": [["{{email}}"]],
339
340
  "invitations.notSent": [["{{email}}"]],
340
341
  "accountState.deletionOn": [["{{date}}"]],
342
+ // 0.31.0: the settings shell, the landing page and the demo
343
+ // (docs/settings-harmonization.md, docs/landing-demo-harmonization.md). An optional
344
+ // argument both given and left out: the subject without an app name, the refusal
345
+ // without a `Retry-After`.
346
+ "settings.noMatches": [["{{query}}"]],
347
+ "settings.matchCount": one,
348
+ "landing.accessSubject": [["{{app}}"], [undefined]],
349
+ "demo.rateLimited": [[], [1], [3]],
350
+ "demo.hoursLeft": [
351
+ [1, 1],
352
+ [3, 12],
353
+ ],
354
+ "demo.minutesLeft": one,
341
355
  };