@eifi1/ui-kit 0.26.0 → 0.27.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 (162) hide show
  1. package/README.md +15 -4
  2. package/dist/chart.d.ts +13 -9
  3. package/dist/components/account-chips.d.ts +1 -1
  4. package/dist/components/amount-input.d.ts +13 -9
  5. package/dist/components/button-group.d.ts +13 -9
  6. package/dist/components/calculator.d.ts +13 -9
  7. package/dist/components/confirm-dialog.d.ts +13 -9
  8. package/dist/components/copy-button.d.ts +10 -6
  9. package/dist/components/danger-confirm.d.ts +13 -9
  10. package/dist/components/data-table-cells.d.ts +1 -1
  11. package/dist/components/data-table-filter-popover.d.ts +1 -1
  12. package/dist/components/data-table-filters.d.ts +1 -1
  13. package/dist/components/data-table-labels.d.ts +1 -1
  14. package/dist/components/data-table-pagination.d.ts +1 -1
  15. package/dist/components/data-table.d.ts +1 -1
  16. package/dist/components/data-table.js.map +1 -1
  17. package/dist/components/facing-pair.d.ts +13 -9
  18. package/dist/components/file-button.d.ts +13 -9
  19. package/dist/components/file-dropzone.d.ts +13 -9
  20. package/dist/components/form-actions.d.ts +13 -9
  21. package/dist/components/iban-input.d.ts +13 -9
  22. package/dist/components/language-select.d.ts +13 -9
  23. package/dist/components/legal.d.ts +5 -2
  24. package/dist/components/legal.js +4 -10
  25. package/dist/components/legal.js.map +1 -1
  26. package/dist/components/money-field.d.ts +13 -9
  27. package/dist/components/number-field.d.ts +13 -9
  28. package/dist/components/number-input.d.ts +13 -9
  29. package/dist/components/numpad-sheet.d.ts +13 -9
  30. package/dist/components/phone-input.d.ts +13 -9
  31. package/dist/components/series-chart.d.ts +13 -9
  32. package/dist/components/settings-fields.d.ts +13 -9
  33. package/dist/components/share-card.d.ts +13 -9
  34. package/dist/components/text-link.d.ts +13 -9
  35. package/dist/components/time-input.d.ts +13 -9
  36. package/dist/components/ui.d.ts +10 -6
  37. package/dist/components/use-table-state.d.ts +1 -1
  38. package/dist/{data-table-labels-Cdn1QS2k.d.ts → data-table-labels-DUELeXpa.d.ts} +5 -0
  39. package/dist/data-table.d.ts +1 -1
  40. package/dist/feedback/feedback-attachment.d.ts +13 -9
  41. package/dist/feedback/feedback-attachment.js +3 -3
  42. package/dist/feedback/feedback-attachment.js.map +1 -1
  43. package/dist/feedback/feedback-capture.d.ts +71 -0
  44. package/dist/feedback/feedback-capture.js +194 -0
  45. package/dist/feedback/feedback-capture.js.map +1 -0
  46. package/dist/feedback/feedback-context.d.ts +71 -0
  47. package/dist/feedback/feedback-context.js +96 -0
  48. package/dist/feedback/feedback-context.js.map +1 -0
  49. package/dist/feedback/feedback-crash.d.ts +276 -0
  50. package/dist/feedback/feedback-crash.js +225 -0
  51. package/dist/feedback/feedback-crash.js.map +1 -0
  52. package/dist/feedback/feedback-dialog.d.ts +13 -9
  53. package/dist/feedback/feedback-dialog.js +5 -3
  54. package/dist/feedback/feedback-dialog.js.map +1 -1
  55. package/dist/feedback/feedback-inbox.d.ts +13 -9
  56. package/dist/feedback/feedback-inbox.js +89 -49
  57. package/dist/feedback/feedback-inbox.js.map +1 -1
  58. package/dist/feedback/feedback-labels.d.ts +71 -0
  59. package/dist/feedback/feedback-labels.js +48 -0
  60. package/dist/feedback/feedback-labels.js.map +1 -0
  61. package/dist/feedback/feedback-menu.d.ts +71 -0
  62. package/dist/feedback/feedback-menu.js +61 -0
  63. package/dist/feedback/feedback-menu.js.map +1 -0
  64. package/dist/feedback/feedback-record.d.ts +71 -0
  65. package/dist/feedback/feedback-record.js +104 -0
  66. package/dist/feedback/feedback-record.js.map +1 -0
  67. package/dist/feedback/feedback-row-detail.d.ts +71 -0
  68. package/dist/feedback/feedback-row-detail.js +437 -0
  69. package/dist/feedback/feedback-row-detail.js.map +1 -0
  70. package/dist/feedback/feedback-status-undo.d.ts +71 -0
  71. package/dist/feedback/feedback-status-undo.js +40 -0
  72. package/dist/feedback/feedback-status-undo.js.map +1 -0
  73. package/dist/feedback/feedback-submit.d.ts +182 -0
  74. package/dist/feedback/feedback-submit.js +101 -0
  75. package/dist/feedback/feedback-submit.js.map +1 -0
  76. package/dist/feedback/feedback-swipe.d.ts +152 -0
  77. package/dist/feedback/feedback-swipe.js +73 -0
  78. package/dist/feedback/feedback-swipe.js.map +1 -0
  79. package/dist/feedback/feedback-table.d.ts +71 -0
  80. package/dist/feedback/feedback-table.js +357 -0
  81. package/dist/feedback/feedback-table.js.map +1 -0
  82. package/dist/feedback/feedback-thread.d.ts +13 -9
  83. package/dist/feedback.d.ts +17 -9
  84. package/dist/feedback.js +11 -0
  85. package/dist/feedback.js.map +1 -1
  86. package/dist/hooks/use-file-drop.d.ts +13 -9
  87. package/dist/i18n/defaults.d.ts +13 -9
  88. package/dist/i18n/defaults.js +16 -0
  89. package/dist/i18n/defaults.js.map +1 -1
  90. package/dist/i18n/german.d.ts +13 -9
  91. package/dist/i18n/german.js +91 -5
  92. package/dist/i18n/german.js.map +1 -1
  93. package/dist/i18n/kit-labels.d.ts +7 -3
  94. package/dist/i18n/kit-labels.js.map +1 -1
  95. package/dist/i18n/languages.d.ts +13 -9
  96. package/dist/i18n/locales/de-CH.d.ts +13 -9
  97. package/dist/i18n/locales/en.d.ts +13 -9
  98. package/dist/i18n/locales/en.js +10 -1
  99. package/dist/i18n/locales/en.js.map +1 -1
  100. package/dist/i18n/locales/es.d.ts +13 -9
  101. package/dist/i18n/locales/es.js +89 -5
  102. package/dist/i18n/locales/es.js.map +1 -1
  103. package/dist/i18n/locales/fr.d.ts +13 -9
  104. package/dist/i18n/locales/fr.js +89 -5
  105. package/dist/i18n/locales/fr.js.map +1 -1
  106. package/dist/i18n/locales/hu.d.ts +13 -9
  107. package/dist/i18n/locales/hu.js +90 -5
  108. package/dist/i18n/locales/hu.js.map +1 -1
  109. package/dist/i18n/locales/it.d.ts +13 -9
  110. package/dist/i18n/locales/it.js +89 -5
  111. package/dist/i18n/locales/it.js.map +1 -1
  112. package/dist/i18n/locales/zh.d.ts +13 -9
  113. package/dist/i18n/locales/zh.js +89 -5
  114. package/dist/i18n/locales/zh.js.map +1 -1
  115. package/dist/i18n/review.d.ts +16 -11
  116. package/dist/i18n/review.js +11 -0
  117. package/dist/i18n/review.js.map +1 -1
  118. package/dist/i18n/swiss.js +3 -1
  119. package/dist/i18n/swiss.js.map +1 -1
  120. package/dist/index.d.ts +6 -2
  121. package/dist/index.js +11 -0
  122. package/dist/index.js.map +1 -1
  123. package/dist/{feedback-BXKH-ToU.d.ts → kit-labels-DQg82eHB.d.ts} +1275 -25
  124. package/dist/rhf/fields.d.ts +13 -9
  125. package/dist/rhf/form.d.ts +13 -9
  126. package/dist/rhf.d.ts +13 -9
  127. package/dist/shell/app-shell.d.ts +13 -9
  128. package/dist/shell/top-bar-brand.d.ts +13 -9
  129. package/dist/shell.d.ts +11 -11
  130. package/dist/wizard/stepper-nav.d.ts +13 -9
  131. package/dist/wizard.d.ts +13 -9
  132. package/package.json +6 -1
  133. package/src/components/data-table.tsx +5 -0
  134. package/src/components/legal.tsx +8 -7
  135. package/src/feedback/feedback-attachment.tsx +19 -3
  136. package/src/feedback/feedback-capture.ts +285 -0
  137. package/src/feedback/feedback-context.tsx +217 -0
  138. package/src/feedback/feedback-crash.ts +547 -0
  139. package/src/feedback/feedback-dialog.tsx +29 -6
  140. package/src/feedback/feedback-inbox.tsx +131 -27
  141. package/src/feedback/feedback-labels.ts +127 -0
  142. package/src/feedback/feedback-menu.tsx +132 -0
  143. package/src/feedback/feedback-record.ts +345 -0
  144. package/src/feedback/feedback-row-detail.tsx +825 -0
  145. package/src/feedback/feedback-status-undo.ts +111 -0
  146. package/src/feedback/feedback-submit.tsx +224 -0
  147. package/src/feedback/feedback-swipe.tsx +170 -0
  148. package/src/feedback/feedback-table.tsx +757 -0
  149. package/src/feedback.ts +13 -0
  150. package/src/i18n/defaults.ts +16 -0
  151. package/src/i18n/german.ts +98 -5
  152. package/src/i18n/kit-labels.tsx +20 -0
  153. package/src/i18n/locales/en.ts +15 -1
  154. package/src/i18n/locales/es.ts +96 -5
  155. package/src/i18n/locales/fr.ts +95 -5
  156. package/src/i18n/locales/hu.ts +94 -5
  157. package/src/i18n/locales/it.ts +97 -5
  158. package/src/i18n/locales/zh.ts +90 -5
  159. package/src/i18n/review.ts +14 -2
  160. package/src/i18n/swiss.ts +5 -1
  161. package/src/index.ts +13 -0
  162. package/tokens.css +4 -0
@@ -1,9 +1,6 @@
1
- import { cB as UiKitLabels } from '../../feedback-BXKH-ToU.js';
1
+ import { d_ as UiKitLabels } from '../../kit-labels-DQg82eHB.js';
2
2
  import 'react';
3
- import '../../components/tooltip.js';
4
- import '../../hooks/use-anchored-rect.js';
5
- import '../../lib/clipping.js';
6
- import '../../data-table-labels-Cdn1QS2k.js';
3
+ import '../../data-table-labels-DUELeXpa.js';
7
4
  import '../../components/data-table-sort.js';
8
5
  import '../../components/swipeable-row.js';
9
6
  import '../../components/mini-calendar.js';
@@ -12,6 +9,9 @@ import '../../components/popover.js';
12
9
  import '../../components/chip.js';
13
10
  import 'lucide-react';
14
11
  import '../../components/field-sync.js';
12
+ import '../../components/tooltip.js';
13
+ import '../../hooks/use-anchored-rect.js';
14
+ import '../../lib/clipping.js';
15
15
  import '../../wizard/types.js';
16
16
  import '../../tour/tour.js';
17
17
  import '../../search/command-palette.js';
@@ -32,19 +32,23 @@ import '../../components/dialog-frame.js';
32
32
  import '../../components/modal.js';
33
33
  import '../../hooks/use-search-param-state.js';
34
34
  import '../../components/measured-grid.js';
35
- import '../../components/account-settings-labels.js';
35
+ import '../../components/user-avatar.js';
36
+ import '../../components/status-dot.js';
37
+ import '../../components/progress-bar.js';
38
+ import '../../components/signed-amount.js';
39
+ import '../../shell/topbar-action-menu.js';
40
+ import '../../components/menu-item.js';
36
41
  import '../../components/floating-panel.js';
42
+ import '../../hooks/use-authed-src.js';
43
+ import '../../components/account-settings-labels.js';
37
44
  import '../../components/bulk-action-bar.js';
38
45
  import '../../components/list.js';
39
- import '../../components/signed-amount.js';
40
46
  import '../../components/breadcrumbs.js';
41
47
  import '../../components/toast.js';
42
48
  import '../../components/description-list.js';
43
49
  import '../../components/line-items.js';
44
- import '../../components/progress-bar.js';
45
50
  import '../../components/error-boundary.js';
46
51
  import '../../components/authed-image.js';
47
- import '../../hooks/use-authed-src.js';
48
52
  import '../../components/image-grid.js';
49
53
  import '../../components/lightbox.js';
50
54
  import '../../components/write-lock.js';
@@ -6,14 +6,14 @@ function uiKitLabelsFr(numberLocale = "fr-FR") {
6
6
  const plural = (count, one, many) => count < 2 ? one : many;
7
7
  return {
8
8
  feedbackAttachment: {
9
- attachmentAdd: "Joindre une image",
9
+ attachmentAdd: "Ajouter une pi\xE8ce jointe",
10
10
  attachmentCapture: "Capturer l\u2019\xE9cran",
11
- attachmentPaste: "\u2026ou collez une capture d\u2019\xE9cran depuis le presse-papiers.",
11
+ attachmentPaste: "\u2026ou collez une capture d\u2019\xE9cran directement depuis le presse-papiers, pour ne montrer qu\u2019un d\xE9tail plut\xF4t que toute la page.",
12
12
  attachmentRemove: "Retirer la pi\xE8ce jointe",
13
13
  attachmentList: "Pi\xE8ces jointes",
14
14
  attachmentScreenshot: "Capture d\u2019\xE9cran",
15
15
  attachmentRemoveFile: (name) => `Retirer ${name}`,
16
- attachmentLimit: (max) => `${n(max)} ${max === 1 ? "pi\xE8ce jointe" : "pi\xE8ces jointes"} au maximum \u2014 retirez-en une pour en ajouter une autre.`,
16
+ attachmentLimit: (max) => max === 1 ? `${n(max)} pi\xE8ce jointe au maximum \u2014 retirez-la pour en ajouter une autre.` : `${n(max)} pi\xE8ces jointes au maximum \u2014 retirez-en une pour en ajouter une autre.`,
17
17
  attachmentUploading: "Envoi en cours\u2026",
18
18
  attachmentUploadFailed: (name) => `\xAB\u202F${name}\u202F\xBB n\u2019a pas pu \xEAtre envoy\xE9`
19
19
  },
@@ -23,8 +23,8 @@ function uiKitLabelsFr(numberLocale = "fr-FR") {
23
23
  subject: "Objet",
24
24
  body: "Que s\u2019est-il pass\xE9\u202F?",
25
25
  bodyOptional: "Que s\u2019est-il pass\xE9\u202F? (facultatif)",
26
- attachment: "Capture d\u2019\xE9cran",
27
- submitHint: "Ctrl/\u2318 + Entr\xE9e pour envoyer",
26
+ attachment: "Pi\xE8ce jointe",
27
+ submitHint: (apple) => apple ? "\u2318 Entr\xE9e pour envoyer" : "Ctrl+Entr\xE9e pour envoyer",
28
28
  cancel: "Annuler",
29
29
  save: "Envoyer"
30
30
  },
@@ -43,6 +43,90 @@ function uiKitLabelsFr(numberLocale = "fr-FR") {
43
43
  sendHint: (modifier) => `${modifier} + Entr\xE9e pour envoyer`,
44
44
  sendHintEnter: "Entr\xE9e pour envoyer, Maj + Entr\xE9e pour aller \xE0 la ligne"
45
45
  },
46
+ // 0.27.0. "Retour" for feedback, as `feedbackDialog`; "reprise" for rework.
47
+ feedbackStatus: {
48
+ OPEN: "Ouvert",
49
+ IN_PROGRESS: "En cours",
50
+ IN_EVALUATION: "En \xE9valuation",
51
+ NEEDS_LIVE_TEST: "\xC0 tester en production",
52
+ POSTPONED: "Report\xE9",
53
+ DONE: "Termin\xE9",
54
+ WONT_DO: "Ne sera pas trait\xE9"
55
+ },
56
+ feedbackCategory: {
57
+ CRASH: "Plantage",
58
+ BUG: "Bug",
59
+ IDEA: "Id\xE9e",
60
+ QUESTION: "Question",
61
+ OTHER: "Autre"
62
+ },
63
+ feedbackToast: {
64
+ submitted: "Merci pour votre retour\u202F!",
65
+ submitFailed: "Impossible d\u2019envoyer le retour",
66
+ attachmentUnsupported: "Seuls les images, les PDF et les fichiers texte sont accept\xE9s",
67
+ attachmentTooLarge: "Le fichier d\xE9passe 10\xA0Mo",
68
+ attachmentTooMany: (count) => `Il n\u2019y a de place que pour ${n(count)} ${plural(count, "pi\xE8ce jointe", "pi\xE8ces jointes")} \u2014 les autres ont \xE9t\xE9 \xE9cart\xE9es.`,
69
+ captureFailed: "Impossible de capturer l\u2019\xE9cran",
70
+ updateFailed: "La modification n\u2019a pas pu \xEAtre enregistr\xE9e.",
71
+ statusChanged: (status, title) => `Pass\xE9 \xE0 \xAB\u202F${status}\u202F\xBB\xA0: ${title}`,
72
+ statusUndo: "Annuler",
73
+ statusRestored: (status, title) => `Revenu \xE0 \xAB\u202F${status}\u202F\xBB\xA0: ${title}`
74
+ },
75
+ feedbackMenu: {
76
+ trigger: "Envoyer un retour",
77
+ myFeedback: "Mes retours",
78
+ viewFeedback: "Voir les retours"
79
+ },
80
+ feedbackContext: {
81
+ user: "Utilisateur",
82
+ attachUrl: "Joindre l\u2019URL de la page actuelle"
83
+ },
84
+ feedbackPage: {
85
+ title: "Retours",
86
+ myTitle: "Mes retours",
87
+ columnId: "#",
88
+ columnDate: "Date",
89
+ columnCategory: "Cat\xE9gorie",
90
+ columnSubject: "Objet",
91
+ columnUser: "Utilisateur",
92
+ columnEmail: "E-mail",
93
+ columnUrl: "URL",
94
+ columnStatus: "Statut",
95
+ columnResolved: "R\xE9solu le",
96
+ openPage: "Ouvrir la page",
97
+ empty: "Aucun",
98
+ deletedUser: "<utilisateur supprim\xE9>",
99
+ // An id, not a count: printed as it is, like the "#" column.
100
+ userFallback: (id) => `utilisateur #${id}`,
101
+ environment: (environment) => String(environment ?? "").toUpperCase(),
102
+ reworkChip: (count) => count === 1 ? "Reprise" : `Reprise \xD7${n(count)}`,
103
+ awaitingFilter: "Seulement ce qui vous attend",
104
+ phoneActions: "Actions sur les retours"
105
+ },
106
+ feedbackDetail: {
107
+ body: "Description",
108
+ edit: "Modifier",
109
+ editDescription: "Modifier la description",
110
+ save: "Enregistrer",
111
+ cancel: "Annuler",
112
+ url: "URL",
113
+ copyUrl: "Copier l\u2019URL",
114
+ attachment: "Pi\xE8ce jointe",
115
+ download: (name) => `T\xE9l\xE9charger ${name}`,
116
+ downloadFailed: "La pi\xE8ce jointe n\u2019a pas pu \xEAtre t\xE9l\xE9charg\xE9e.",
117
+ outcome: "R\xE9sultat",
118
+ resolvedAt: (date) => `R\xE9solu le ${date}`,
119
+ outcomeAdd: "Ajouter un r\xE9sultat",
120
+ outcomeUpdate: "Mettre \xE0 jour",
121
+ outcomePlaceholder: "Ce qui a \xE9t\xE9 fait ou d\xE9cid\xE9, ou pourquoi ce point ne sera pas trait\xE9.",
122
+ rework: "Reprise",
123
+ openPage: "Ouvrir la page",
124
+ reworkTitle: "Renvoyer pour reprise",
125
+ reworkSend: "Demander la reprise",
126
+ reworkPlaceholder: "Que faut-il encore affiner\u202F? Nouvelles contraintes ou changement de cap \xE9ventuels.",
127
+ reworkUploadFailed: "Le fichier n\u2019a pas pu \xEAtre envoy\xE9. La demande de reprise n\u2019a pas \xE9t\xE9 transmise.",
128
+ status: "Statut"
129
+ },
46
130
  accountSettings: {
47
131
  profile: {
48
132
  title: "Profil",
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/i18n/locales/fr.ts"],"sourcesContent":["import { formatFileSize } from \"../kit-labels\";\nimport type { UiKitLabels } from \"../kit-labels\";\n\n/**\n * The kit's words in French: every namespace of {@link UiKitLabels}, for\n * `<UiKitProvider labels={UI_KIT_LABELS_FR}>`.\n *\n * Self-contained on purpose — nothing but the kit's own `formatFileSize` — so it works\n * as a starting point to copy and adjust. Counts and sizes are formatted with\n * `fr-FR` digits; {@link uiKitLabelsFr} takes another number locale\n * (e.g. `\"de-CH\"` for 1’234) without touching the words.\n */\nexport function uiKitLabelsFr(numberLocale = \"fr-FR\"): UiKitLabels {\n const num = new Intl.NumberFormat(numberLocale);\n const n = (value: number) => num.format(value);\n const plural = (count: number, one: string, many: string) => (count < 2 ? one : many);\n\n return {\n feedbackAttachment: {\n attachmentAdd: \"Joindre une image\",\n attachmentCapture: \"Capturer l’écran\",\n attachmentPaste: \"…ou collez une capture d’écran depuis le presse-papiers.\",\n attachmentRemove: \"Retirer la pièce jointe\",\n attachmentList: \"Pièces jointes\",\n attachmentScreenshot: \"Capture d’écran\",\n attachmentRemoveFile: (name) => `Retirer ${name}`,\n attachmentLimit: (max) => `${n(max)} ${max === 1 ? \"pièce jointe\" : \"pièces jointes\"} au maximum — retirez-en une pour en ajouter une autre.`,\n attachmentUploading: \"Envoi en cours…\",\n attachmentUploadFailed: (name) => `«\\u202f${name}\\u202f» n’a pas pu être envoyé`,\n },\n feedbackDialog: {\n title: \"Envoyer un retour\",\n category: \"Catégorie\",\n subject: \"Objet\",\n body: \"Que s’est-il passé\\u202f?\",\n bodyOptional: \"Que s’est-il passé\\u202f? (facultatif)\",\n attachment: \"Capture d’écran\",\n submitHint: \"Ctrl/⌘ + Entrée pour envoyer\",\n cancel: \"Annuler\",\n save: \"Envoyer\",\n },\n feedbackThread: {\n thread: \"Commentaires\",\n empty: \"Aucun commentaire pour l’instant\",\n loading: \"Chargement des commentaires…\",\n you: \"Vous\",\n staff: \"Équipe\",\n attachments: \"Pièces jointes\",\n },\n feedbackComposer: {\n field: \"Écrire un commentaire\",\n placeholder: \"Écrire un commentaire…\",\n send: \"Envoyer\",\n sendHint: (modifier) => `${modifier} + Entrée pour envoyer`,\n sendHintEnter: \"Entrée pour envoyer, Maj + Entrée pour aller à la ligne\",\n },\n accountSettings: {\n profile: {\n title: \"Profil\",\n email: \"E-mail\",\n role: \"Rôle\",\n memberSince: \"Membre depuis\",\n displayName: \"Nom affiché\",\n save: \"Enregistrer\",\n },\n password: {\n title: \"Changer le mot de passe\",\n current: \"Mot de passe actuel\",\n next: \"Nouveau mot de passe\",\n confirm: \"Confirmer le nouveau mot de passe\",\n submit: \"Changer le mot de passe\",\n tooShort: \"Le nouveau mot de passe est trop court.\",\n mismatch: \"Les mots de passe ne correspondent pas.\",\n },\n twoFactor: {\n status: \"Authentification à deux facteurs\",\n enabledText: \"Activée\",\n disabledText: \"Désactivée\",\n enable: \"Configurer l’authentification à deux facteurs\",\n scanHint:\n \"Scannez ce code avec votre application d’authentification, puis saisissez le code affiché.\",\n codeLabel: \"Code de vérification\",\n verify: \"Vérifier et activer\",\n disableSection: \"Désactiver l’authentification à deux facteurs\",\n password: \"Mot de passe actuel\",\n disable: \"Désactiver\",\n qrAlt: \"Code QR pour votre application d’authentification\",\n secretHint: \"Impossible de le scanner\\u202f? Saisissez plutôt cette clé dans l’application\\u00a0:\",\n copySecret: \"Copier la clé\",\n },\n passkeys: {\n title: \"Clés d’accès\",\n description:\n \"Connectez-vous avec votre empreinte, votre visage ou le code PIN de l’appareil plutôt qu’avec un mot de passe.\",\n descriptionAlongside:\n \"Connectez-vous avec votre empreinte, votre visage ou le code PIN de l’appareil. Votre mot de passe reste valable.\",\n empty: \"Aucune clé d’accès pour l’instant\",\n loading: \"Chargement des clés d’accès…\",\n list: \"Vos clés d’accès\",\n nameLabel: \"Nom (facultatif)\",\n namePlaceholder: \"p. ex. Portable, Téléphone\",\n add: \"Ajouter une clé d’accès\",\n adding: \"En attente de l’appareil…\",\n rename: \"Renommer\",\n renameItem: (name) => `Renommer ${name}`,\n renameField: (name) => `Nouveau nom pour ${name}`,\n save: \"Enregistrer\",\n cancel: \"Annuler\",\n delete: \"Supprimer\",\n deleteItem: (name) => `Supprimer ${name}`,\n deleteConfirm: (name) =>\n `Supprimer «\\u202f${name}\\u202f»\\u202f? Elle ne permettra plus de se connecter.`,\n confirmDelete: \"Supprimer la clé d’accès\",\n created: (date) => `Ajoutée le ${date}`,\n lastUsed: (date) => `Dernière utilisation le ${date}`,\n neverUsed: \"Jamais utilisée\",\n },\n },\n measuredGrid: {\n view: \"Vue du tableau\",\n cellsView: \"Cellules\",\n textView: \"Texte\",\n addRow: \"Ajouter une ligne\",\n removeRow: (row) => `Supprimer la ligne ${row}`,\n clear: \"Vider le tableau\",\n pasteHint: \"Collez un bloc copié d\\u2019un tableur dans n\\u2019importe quelle cellule\",\n cell: (column, row) => `${column}, ligne ${row}`,\n rowNumber: \"Ligne\",\n rowActions: \"Actions de ligne\",\n keyboardHint:\n \"Les flèches passent d\\u2019une cellule à l\\u2019autre. Tapez pour remplacer une cellule, F2 pour la modifier, Échap pour annuler la modification. Entrée descend et ajoute une ligne à la fin.\",\n lineError: (line) => `La ligne ${line} n\\u2019a pas pu être lue`,\n points: (count) => (count < 2 ? `${count} point` : `${count} points`),\n problems: (count) =>\n count < 2\n ? `${count} cellule n\\u2019est pas un nombre`\n : `${count} cellules ne sont pas des nombres`,\n },\n pageContents: { title: \"Sur cette page\" },\n common: {\n dismiss: \"Fermer\",\n close: \"Fermer\",\n clear: \"Effacer\",\n search: \"Rechercher\",\n done: \"Terminé\",\n cancel: \"Annuler\",\n save: \"Enregistrer\",\n back: \"Retour\",\n next: \"Suivant\",\n remove: \"Supprimer\",\n loading: \"Chargement…\",\n noResults: \"Aucun résultat\",\n // No-break space before the colon, per French typography.\n fieldValue: (field, value) => `${field}\\u00a0: ${value}`,\n opensInNewTab: \"s’ouvre dans un nouvel onglet\",\n },\n dataTable: {\n columns: \"Colonnes\",\n selectAllRows: \"Sélectionner toutes les lignes\",\n sortHint: \"Cliquer pour trier · Maj+clic pour ajouter un tri\",\n filter: \"Filtrer\",\n close: \"Fermer\",\n selectRow: \"Sélectionner la ligne\",\n autoSize: \"Ajuster la largeur des colonnes\",\n loading: \"Chargement…\",\n filters: \"Filtres\",\n clearAll: \"Tout effacer\",\n done: \"Terminé\",\n pageSize: \"Lignes par page\",\n pageSizeAll: \"Toutes\",\n prevPage: \"Page précédente\",\n nextPage: \"Page suivante\",\n clearFilter: \"Effacer le filtre\",\n filterPlaceholder: \"Filtrer…\",\n selectFilter: \"Sélectionner\",\n selectAll: \"Tout\",\n selectNone: \"Aucun\",\n dateFrom: \"Du\",\n dateTo: \"Au\",\n numberMin: \"Min.\",\n numberMax: \"Max.\",\n numberAbs: \"Valeur absolue\",\n presets: {\n today: \"Aujourd’hui\",\n yesterday: \"Hier\",\n this_week: \"Cette semaine\",\n last_week: \"Semaine dernière\",\n last_7_days: \"7 derniers jours\",\n last_30_days: \"30 derniers jours\",\n this_month: \"Ce mois-ci\",\n last_month: \"Mois dernier\",\n last_3_months: \"3 derniers mois\",\n ytd: \"Depuis le début de l’année\",\n last_year: \"Année dernière\",\n },\n table: \"Tableau de données\",\n filterResults: (shown, total) =>\n `${n(shown)} ${plural(shown, \"ligne\", \"lignes\")} sur ${n(total)}`,\n sortedAscending: (column) => `Trié par ${column}, ordre croissant`,\n sortedDescending: (column) => `Trié par ${column}, ordre décroissant`,\n sortCleared: (column) => `Tri retiré sur ${column}`,\n pageChanged: (page, totalPages) => `Page ${n(page)} sur ${n(totalPages)}`,\n pageRange: (from, to, total) => `${n(from)}–${n(to)} / ${n(total)}`,\n rowCount: (total) => n(total),\n columnsCount: (visible, total) => `Colonnes (${n(visible)}/${n(total)})`,\n empty: \"Aucune entrée\",\n actions: \"Actions\",\n edit: \"Modifier\",\n delete: \"Supprimer\",\n booleanTrue: \"Oui\",\n booleanFalse: \"Non\",\n booleanUnset: \"Non défini\",\n sortBy: \"Trier par\",\n sortDefault: \"Ordre par défaut\",\n sortAscending: \"Croissant\",\n sortDescending: \"Décroissant\",\n },\n miniCalendar: {\n previousMonth: \"Mois précédent\",\n nextMonth: \"Mois suivant\",\n // Already formatted in the provider's locale (\"lundi 14 septembre 2026\").\n day: (date) => date,\n chooseStart: \"Choisissez une date de début\",\n chooseEnd: \"Choisissez une date de fin\",\n // \"Date\" is feminine and the formatted day is not a noun French can agree with,\n // so the date is set after a label rather than made the subject.\n startSelected: (date) => `Date de début\\u00a0: ${date}. Choisissez une date de fin.`,\n rangeSelected: (from, to) =>\n `Période du ${from} au ${to} sélectionnée. Choisissez une date de début pour recommencer.`,\n },\n calendarHeatmap: {\n grid: \"Valeurs quotidiennes\",\n day: (date, value) => `${date} : ${value}`,\n less: \"Moins\",\n more: \"Plus\",\n truncated: (count) =>\n `Affichage des jours les plus récents ; ${n(count)} ${count === 1 ? \"jour antérieur n’est pas affiché\" : \"jours antérieurs ne sont pas affichés\"}.`,\n },\n datePicker: {\n apply: \"Appliquer\",\n cancel: \"Annuler\",\n presets: \"Plages rapides\",\n panel: \"Choisir une date\",\n rangePanel: \"Choisir une période\",\n clear: \"Effacer\",\n previousDay: \"Jour précédent\",\n nextDay: \"Jour suivant\",\n today: \"Aujourd’hui\",\n },\n monthPicker: {\n previousYear: \"Année précédente\",\n nextYear: \"Année suivante\",\n panel: \"Choisir un mois\",\n month: (monthYear) => monthYear,\n previousMonth: \"Mois précédent\",\n nextMonth: \"Mois suivant\",\n today: \"Aujourd’hui\",\n yearPanel: \"Choisir une année\",\n earlierYears: \"Années précédentes\",\n laterYears: \"Années suivantes\",\n thisYear: \"Cette année\",\n },\n popover: {\n panel: \"Fenêtre contextuelle\",\n },\n combobox: {\n search: \"Rechercher\",\n noResults: \"Aucun résultat\",\n clear: \"Effacer\",\n loading: \"Chargement…\",\n create: (query) => `Créer «\\u202f${query}\\u202f»`,\n selectedCount: (count) => `${n(count)} ${plural(count, \"sélectionné\", \"sélectionnés\")}`,\n loadError: \"Impossible de charger les résultats\",\n resultCount: (count) => `${n(count)} ${plural(count, \"résultat\", \"résultats\")}`,\n minChars: (count) =>\n `Saisissez au moins ${n(count)} ${plural(count, \"caractère\", \"caractères\")}`,\n },\n multiSelect: {\n search: \"Rechercher\",\n selectAll: \"Tout sélectionner\",\n clear: \"Effacer\",\n all: \"Tous\",\n // The bare count, as in English: the trigger has always shown just the number.\n selectedCount: (count) => n(count),\n },\n calculator: {\n open: \"Ouvrir la calculatrice\",\n panel: \"Calculatrice\",\n calculation: \"Calcul\",\n backspace: \"Retour arrière\",\n clear: \"Effacer\",\n equals: \"Égal\",\n done: \"Terminé\",\n plus: \"Plus\",\n minus: \"Moins\",\n times: \"Multiplié par\",\n divide: \"Divisé par\",\n decimal: \"Séparateur décimal\",\n },\n currency: {\n currency: \"Devise\",\n search: \"Rechercher une devise\",\n },\n chipInput: {\n // The quoted value is a citation; the participle agrees with the implied\n // \"élément\" whatever the chip says.\n added: (value) => `«\\u202f${value}\\u202f» ajouté`,\n removed: (value) => `«\\u202f${value}\\u202f» supprimé`,\n remove: \"Supprimer\",\n atLimit: (max) => `Limite de ${n(max)} ${plural(max, \"élément\", \"éléments\")} atteinte`,\n duplicate: (value) => `«\\u202f${value}\\u202f» figure déjà dans la liste`,\n },\n swatchPicker: {\n none: \"Aucune couleur\",\n mixed: \"Mixte\\u00a0: les éléments sélectionnés ont des couleurs différentes\",\n },\n iconPicker: {\n none: \"Aucune icône\",\n mixed: \"Mixte\\u00a0: les éléments sélectionnés ont des icônes différentes\",\n search: \"Rechercher des icônes\",\n noResults: \"Aucune icône ne correspond\",\n resultCount: (count) => `${n(count)} ${plural(count, \"icône\", \"icônes\")}`,\n },\n fieldSync: {\n synced: \"Enregistré\",\n edited: \"Modifications non enregistrées\",\n pending: \"Enregistrement…\",\n error: \"Échec de l’enregistrement\",\n retry: \"Réessayer\",\n },\n passwordReveal: {\n show: \"Afficher le mot de passe\",\n hide: \"Masquer le mot de passe\",\n },\n dangerConfirm: {\n arm: \"Supprimer…\",\n confirm: \"Supprimer\",\n cancel: \"Annuler\",\n prompt: \"Cette action est irréversible.\",\n password: \"Mot de passe\",\n phrase: (phrase) => `Saisissez «\\u202f${phrase}\\u202f» pour confirmer`,\n acknowledge: \"J’ai lu ce que fait cette action et je souhaite continuer.\",\n needsPhrase: (phrase) => `Saisissez «\\u202f${phrase}\\u202f» pour confirmer`,\n needsAcknowledge: \"Cochez la case pour confirmer\",\n needsPassword: \"Saisissez votre mot de passe pour confirmer\",\n },\n tabs: {\n add: \"Ajouter un onglet\",\n remove: (tab) => `Supprimer ${tab}`,\n },\n appShell: {\n collapse: \"Réduire la barre latérale\",\n expand: \"Développer la barre latérale\",\n toggleGroup: (groupLabel) => `${groupLabel}\\u00a0: pages`,\n },\n topBar: {\n theme: \"Changer de thème\",\n palette: \"Préréglage d’apparence\",\n language: \"Langue\",\n switchRole: \"Changer de rôle\",\n role: (value) => `Rôle\\u00a0: ${value}`,\n },\n pickerSheet: {\n close: \"Fermer\",\n },\n dialogFrame: {\n close: \"Fermer\",\n },\n bulkActionBar: {\n selected: (count) => `${n(count)} ${count === 1 ? \"sélectionné\" : \"sélectionnés\"}`,\n clear: \"Effacer la sélection\",\n cleared: \"Sélection effacée\",\n },\n swipeableRow: {\n actions: \"Actions de la ligne\",\n },\n file: {\n // The kit's own `Intl` unit formatting, pinned to this locale (\"3,4 Mo\").\n size: (bytes) => formatFileSize(bytes, numberLocale),\n },\n filePicker: {\n dropzone: \"Envoi de fichier\",\n browse: \"Parcourir\",\n empty: \"Déposez un fichier ici\",\n emptyMultiple: \"Déposez des fichiers ici\",\n hint: (accept) => (accept ? `Acceptés\\u00a0: ${accept}` : \"Tout type de fichier\"),\n busy: \"Envoi en cours…\",\n rejectedPick: (count) =>\n count < 2\n ? \"Le fichier n\\u2019a pas été ajouté\"\n : `Aucun des ${count} fichiers n\\u2019a été ajouté`,\n rejectedType: (name) => `Le type du fichier «\\u202f${name}\\u202f» n’est pas pris en charge`,\n rejectedTypeOnly: (accept) => `Uniquement des fichiers ${accept}`,\n rejectedSize: (name, maxSize) => `«\\u202f${name}\\u202f» dépasse ${maxSize}`,\n rejectedCount: (name, maxFiles) =>\n `«\\u202f${name}\\u202f» n’a pas été ajouté\\u00a0: ${n(maxFiles)} ${plural(maxFiles, \"fichier\", \"fichiers\")} au maximum`,\n rejectedInvalid: (name) => `«\\u202f${name}\\u202f» ne peut pas être utilisé ici`,\n rejectedMany: (count) =>\n count < 2\n ? `${n(count)} fichier n’a pas été ajouté`\n : `${n(count)} fichiers n’ont pas été ajoutés`,\n // The name branch is for exactly one file, as in English; 0 falls to the count.\n selected: (count, firstName) =>\n count === 1\n ? `«\\u202f${firstName}\\u202f» sélectionné`\n : `${n(count)} ${plural(count, \"fichier sélectionné\", \"fichiers sélectionnés\")}`,\n remove: (name) => `Supprimer «\\u202f${name}\\u202f»`,\n clearAll: \"Supprimer tous les fichiers\",\n removed: (name) => `«\\u202f${name}\\u202f» supprimé`,\n cleared: \"Tous les fichiers ont été supprimés\",\n },\n wizard: {\n done: \"Terminé\",\n cancel: \"Annuler\",\n back: \"Retour\",\n next: \"Suivant\",\n skip: \"Passer\",\n finish: \"Terminer\",\n submitting: \"Création…\",\n steps: \"Étapes\",\n step: (current, total) => `Étape ${n(current)} sur ${n(total)}`,\n cancelTitle: \"Abandonner ce formulaire\\u202f?\",\n confirmCancel: \"Vos saisies seront perdues.\",\n cancelConfirmLabel: \"Abandonner\",\n cancelDismissLabel: \"Continuer la saisie\",\n reviewTitle: \"Vérification\",\n edit: \"Modifier\",\n missingRequired: \"Veuillez remplir tous les champs obligatoires.\",\n genericError: \"Une erreur est survenue\",\n },\n tour: {\n next: \"Suivant\",\n back: \"Retour\",\n skip: \"Passer\",\n done: \"Terminé\",\n awaitClickHint: \"Cliquez sur l’élément mis en évidence pour continuer\",\n step: (current, total) => `${n(current)} / ${n(total)}`,\n },\n commandPalette: {\n clear: \"Effacer la recherche\",\n submit: \"Rechercher\",\n close: \"Fermer\",\n placeholder: \"Rechercher…\",\n empty: \"Aucun résultat\",\n loading: \"Recherche…\",\n dialog: \"Recherche\",\n error: \"La recherche a échoué. Réessayez.\",\n },\n globalSearch: {\n trigger: \"Rechercher\",\n placeholder: \"Rechercher ou aller à…\",\n shortcut: (keys) => `Rechercher (${keys})`,\n suggestions: \"Essayez\",\n results: \"Résultats\",\n },\n sparkline: {\n // \"En hausse de 12 à 40\" would read as \"up BY 12\", hence the colon.\n rising: (first, last) => `En hausse\\u00a0: de ${first} à ${last}`,\n falling: (first, last) => `En baisse\\u00a0: de ${first} à ${last}`,\n flat: (value) => `Stable à ${value}`,\n single: (value) => `Une seule valeur\\u00a0: ${value}`,\n noData: \"Aucune donnée\",\n named: (name, summary) => `${name}\\u00a0: ${summary}`,\n },\n statTile: {\n increase: (amount) => `En hausse de ${amount}`,\n decrease: (amount) => `En baisse de ${amount}`,\n unchanged: \"Sans changement\",\n better: (change) => `${change} (favorable)`,\n worse: (change) => `${change} (défavorable)`,\n noValue: \"Aucune donnée\",\n loading: \"Chargement…\",\n },\n signaturePad: {\n label: \"Signature\",\n instructions: \"Signez dans le cadre avec une souris, votre doigt ou un stylet.\",\n typedFallbackHint: \"Si vous ne pouvez pas dessiner, saisissez plutôt votre nom.\",\n empty: \"Aucun tracé pour l’instant\",\n signed: \"Signature tracée\",\n undo: \"Annuler le dernier trait\",\n clear: \"Effacer\",\n save: \"Enregistrer la signature\",\n useTyped: \"Saisir le nom à la place\",\n useDrawn: \"Dessiner à la place\",\n typedName: \"Nom complet\",\n cleared: \"Signature effacée\",\n undone: \"Dernier trait supprimé\",\n viewEmpty: \"Non signé\",\n viewDrawn: \"Signature manuscrite\",\n viewTyped: (name) => `Signé avec le nom saisi ${name}`,\n },\n passwordStrength: {\n // Agrees with \"mot de passe\" (masculine).\n tooShort: \"Trop court\",\n weak: \"Faible\",\n fair: \"Moyen\",\n good: \"Bon\",\n strong: \"Fort\",\n announcement: (level) => `Robustesse du mot de passe\\u00a0: ${level}`,\n // Unformatted, as in the English default.\n ruleLength: (minLength) =>\n `Au moins ${minLength} ${plural(minLength, \"caractère\", \"caractères\")}`,\n ruleCase: \"Majuscules et minuscules\",\n ruleDigit: \"Un chiffre\",\n ruleSymbol: \"Un caractère spécial\",\n optional: (rule) => `${rule} (facultatif)`,\n met: \"Respecté\\u00a0:\",\n notMet: \"Non respecté\\u00a0:\",\n tooLong: (maxBytes) =>\n `Au plus ${maxBytes} ${plural(maxBytes, \"caractère\", \"caractères\")} (les lettres accentuées et les emoji comptent pour plus d’un).`,\n },\n seriesChart: {\n resetZoom: \"Réinitialiser le zoom\",\n zoomHint:\n \"Faites glisser pour zoomer\\u00a0: une sélection à peu près carrée zoome sur les deux axes, une sélection longue et étroite sur son seul axe. Double-cliquez pour réinitialiser.\",\n empty: \"Aucune donnée\",\n legend: \"Séries\",\n points: \"Valeurs du graphique\",\n },\n pieChart: {\n slices: \"Secteurs du graphique\",\n slice: (label, value, percent) => `${label}\\u00a0: ${value} (${percent})`,\n total: \"Total\",\n empty: \"Aucune donnée\",\n legend: \"Catégories\",\n },\n confirmDialog: {\n confirm: \"Confirmer\",\n cancel: \"Annuler\",\n typed: (text) => `Saisissez «\\u202f${text}\\u202f» pour confirmer`,\n },\n floatingPanel: {\n close: \"Fermer\",\n badge: (count) => `${n(count)} ${plural(count, \"nouveau\", \"nouveaux\")}`,\n },\n copyButton: {\n copy: \"Copier\",\n copied: \"Copié\",\n failed: \"Échec de la copie\",\n copiedAnnouncement: \"Copié dans le presse-papiers\",\n failedAnnouncement: \"Impossible de copier dans le presse-papiers\",\n },\n list: {\n unread: \"Non lu\",\n opensInNewTab: \"s’ouvre dans un nouvel onglet\",\n },\n breadcrumbs: {\n label: \"Fil d’Ariane\",\n showAll: \"Afficher le chemin complet\",\n },\n toast: {\n close: \"Fermer la notification\",\n notifications: \"Notifications\",\n undo: \"Annuler\",\n redo: \"Rétablir\",\n },\n form: {\n save: \"Enregistrer\",\n cancel: \"Annuler\",\n submitShortcut: (apple) => (apple ? \"⌘ Entrée\" : \"Ctrl+Entrée\"),\n },\n descriptionList: {\n empty: \"—\",\n },\n lineItems: {\n add: \"Ajouter une ligne\",\n remove: (row) => `Supprimer la ligne ${row}`,\n confirmRemove: (row) => `Supprimer la ligne ${row}\\u202f? Appuyez de nouveau pour confirmer`,\n row: (row) => `Ligne ${row}`,\n cell: (column, row) => `${column}, ligne ${row}`,\n totals: \"Total\",\n },\n progressBar: {\n unlimited: \"Illimité\",\n overLimit: (amount) => `${amount} au-delà de la limite`,\n },\n signedAmount: {\n positive: (amount) => `plus ${amount}`,\n negative: (amount) => `moins ${amount}`,\n },\n errorBoundary: {\n title: \"Une erreur s’est produite\",\n message: \"Cette partie de la page n’a pas pu s’afficher. Réessayez ou rechargez la page.\",\n retry: \"Réessayer\",\n details: \"Détails de l’erreur\",\n reload: \"Recharger\",\n updateTitle: \"Une nouvelle version est disponible\",\n updateMessage: \"Une partie de l’application a changé depuis le chargement de cette page. Rechargez-la pour obtenir la nouvelle version.\",\n offlineTitle: \"Vous êtes hors ligne\",\n offlineMessage: \"Cette page n’a pas pu être chargée sans connexion. Reconnectez-vous, puis rechargez la page.\",\n copyReport: \"Copier le rapport d’erreur\",\n reported: \"L’erreur a été signalée automatiquement.\",\n reportedAs: (reference) => `Signalée sous la référence ${reference}`,\n },\n authedImage: {\n loading: \"Chargement de l’image…\",\n loadError: \"Impossible de charger l’image\",\n failedImage: (alt) => `${alt} : impossible de charger l’image`,\n },\n imageGrid: {\n list: \"Images\",\n item: (index, count) => `Image ${n(index)} sur ${n(count)}`,\n actions: (name) => `Actions pour ${name}`,\n },\n lightbox: {\n dialog: \"Visionneuse d’images\",\n close: \"Fermer\",\n previous: \"Image précédente\",\n next: \"Image suivante\",\n counter: (index, count) => `${n(index)} / ${n(count)}`,\n position: (index, count) => `Image ${n(index)} sur ${n(count)}`,\n download: \"Télécharger\",\n zoom: \"Agrandir\",\n noPreview: \"Aucun aperçu disponible pour ce fichier\",\n openInNewTab: \"Ouvrir dans un nouvel onglet\",\n },\n writeLock: {\n reason: \"Vous pouvez consulter ceci, mais pas le modifier.\",\n },\n accountState: {\n // Agreeing with \"compte\" (masculine): the chip is the state of an account.\n active: \"Actif\",\n inactive: \"Inactif\",\n invited: \"Invité\",\n registered: \"Inscrit\",\n unverified: \"Non vérifié\",\n passwordChange: \"Doit changer de mot de passe\",\n },\n shareCard: {\n dialogTitle: \"Partager\",\n close: \"Fermer\",\n email: \"Adresse e-mail\",\n emailOptional: \"Adresse e-mail (facultatif)\",\n // example.com is reserved for examples (RFC 2606); a localised domain is real.\n emailPlaceholder: \"nom@example.com\",\n invalidEmail: \"Saisissez une adresse e-mail complète.\",\n role: \"Rôle\",\n roleOf: (name) => `Rôle de ${name}`,\n add: \"Partager\",\n whoHasAccess: \"Qui a accès\",\n nobodyYet: \"Personne d’autre n’y a encore accès.\",\n pending: \"En attente\",\n openInvite: \"Lien d’invitation ouvert\",\n copyLink: \"Copier le lien\",\n team: \"Équipe\",\n teamHint: (name) => `Tous les membres de ${name} y auront accès.`,\n remove: \"Retirer l’accès\",\n removeConfirm: (name) => `Retirer l’accès de ${name}\\u202f?`,\n revokePending: \"Révoquer l’invitation\",\n revokePendingConfirm: (name) => `Révoquer l’invitation de ${name}\\u202f?`,\n failed: \"Cela n’a pas fonctionné. Veuillez réessayer.\",\n loading: \"Chargement…\",\n },\n reauthDialog: {\n title: \"Confirmez votre identité\",\n description: \"Saisissez votre mot de passe actuel pour continuer.\",\n password: \"Mot de passe actuel\",\n submit: \"Continuer\",\n cancel: \"Annuler\",\n },\n serverWake: {\n slow: \"Chargement en cours — cela prend plus de temps que d’habitude.\",\n waking: (appName) =>\n `Le serveur se met en veille quand personne n’utilise ${appName ?? \"l’application\"}, donc la première requête après une pause doit le redémarrer. Cela peut prendre un moment — rien n’est perdu, la page se remplira d’elle-même.`,\n },\n legal: {\n navLabel: \"Informations légales\",\n },\n characterCount: {\n count: (used, max) => `${n(used)} sur ${n(max)} ${plural(max, \"caractère\", \"caractères\")}`,\n remaining: (left) => `${n(left)} ${plural(left, \"caractère restant\", \"caractères restants\")}`,\n limitReached: \"Limite de caractères atteinte\",\n },\n countrySelect: {\n country: \"Pays\",\n search: \"Rechercher un pays\",\n others: \"Autres pays\",\n },\n inlineEdit: {\n edit: (label) => `Modifier ${label}`,\n failed: \"La modification n’a pas pu être enregistrée.\",\n empty: \"Vide\",\n },\n ibanInput: {\n format: \"Un IBAN commence par un code pays de deux lettres et deux chiffres de contrôle.\",\n country: (code) => `«\\u202f${code}\\u202f» n’est pas le code pays d’un IBAN.`,\n length: (actual, expected) =>\n `Un IBAN de ce pays compte ${n(expected)} caractères — celui-ci en compte ${n(actual)}.`,\n checksum: \"Les chiffres de contrôle ne correspondent pas — un caractère est sans doute mal saisi.\",\n qrRequired: \"Ceci est un IBAN ordinaire. Une QR-facture exige le QR-IBAN du compte.\",\n qrNotAllowed:\n \"Ceci est un QR-IBAN, qui ne reçoit que des paiements par QR-facture. Saisissez l’IBAN ordinaire du compte.\",\n },\n phoneInput: {\n countryCode: \"Indicatif du pays\",\n other: \"Autre\",\n },\n signChip: {\n outflow: \"Sortie\",\n inflow: \"Entrée\",\n direction: (current, next) => `Sens\\u00a0: ${current} — passer à ${next}`,\n },\n columnMapper: {\n paste: \"Coller un tableau\",\n pasteHint:\n \"Copiez les lignes d’un tableur et collez-les ici, ou déposez un fichier CSV ou texte.\",\n chooseFile: \"Choisir un fichier\",\n readError: (name) => `«\\u202f${name}\\u202f» n’a pas pu être lu`,\n headerRow: \"La première ligne contient les noms des colonnes\",\n summary: (columns, rows) =>\n `${n(columns)} ${plural(columns, \"colonne\", \"colonnes\")}, ${n(rows)} ${plural(rows, \"ligne\", \"lignes\")}`,\n // Fragments of the summary line. \"Séparé par…\" would have to agree with a noun the\n // line does not name, so the separator is stated as a value.\n separatorSemicolon: \"séparateur\\u00a0: point-virgule\",\n separatorComma: \"séparateur\\u00a0: virgule\",\n separatorTab: \"séparateur\\u00a0: tabulation\",\n separatorSpace: \"séparateur\\u00a0: espace\",\n // The examples stay as written: they show the convention, not the reader's locale.\n decimalComma: \"virgule décimale (1,5)\",\n decimalPoint: \"point décimal (1.5)\",\n unreadCount: (count) =>\n count < 2\n ? `${n(count)} ligne n’a pas pu être lue`\n : `${n(count)} lignes n’ont pas pu être lues`,\n unreadLine: (line) => `La ligne ${line} n\\u2019a pas pu être lue`,\n unreadMore: (count) => `…et ${n(count)} ${plural(count, \"autre\", \"autres\")}`,\n noRows: \"Aucune ligne de ce texte ne se lit comme une ligne du tableau.\",\n table: \"Colonnes et leurs rôles\",\n columnN: (column) => `Colonne ${column}`,\n roleOf: (column) => `Que contient la colonne «\\u202f${column}\\u202f»\\u202f?`,\n ignore: \"Ignorer\",\n requiredRole: (role) => `${role} (obligatoire)`,\n requiredRoleShort: (role) => `${role} *`,\n previewOf: (shown, total) =>\n shown < 2\n ? `La première ligne sur ${n(total)}`\n : `Les ${n(shown)} premières lignes sur ${n(total)}`,\n // `roles` arrives joined with \"ou\" (\"Débit ou Crédit\").\n oneOf: (roles) => `${roles} (au choix)`,\n missing: (roles) => `Il manque encore\\u00a0: ${roles}.`,\n },\n translationReview: {\n statusMissing: \"Manquant\",\n statusUnreviewed: \"Non relu\",\n statusChanged: \"Modifié depuis la relecture\",\n statusNeedsChange: \"À modifier\",\n statusApproved: \"Approuvé\",\n statusFilter: \"Statut\",\n all: \"Tous\",\n filterCount: (label, count) => `${label} · ${n(count)}`,\n source: \"Textes\",\n allSources: \"Tous les textes\",\n namespace: \"Domaine\",\n allNamespaces: \"Tous les domaines\",\n search: \"Rechercher dans les clés et les textes\",\n placeholdersOnly: (count) => `Seulement les problèmes d’espaces réservés (${n(count)})`,\n placeholderChip: \"Espaces réservés\",\n key: \"Clé\",\n statusColumn: \"Statut\",\n empty: \"Aucun texte ne correspond à ces filtres.\",\n missingText: \"Manquant dans cette langue\",\n progress: (approved, total) => `${n(approved)} sur ${n(total)} ${plural(approved, \"approuvé\", \"approuvés\")}`,\n localeProgress: (approved, total) => `${n(approved)}/${n(total)}`,\n locales: \"Langues\",\n approve: \"Approuver\",\n flag: \"À modifier\",\n suggest: \"Proposer une traduction\",\n reset: \"Marquer comme non relu\",\n cancel: \"Annuler\",\n approveSelected: \"Approuver la sélection\",\n resetSelected: \"Marquer la sélection comme non relue\",\n selectShown: \"Sélectionner tout ce qui est affiché\",\n changedSince: \"Ce texte a été modifié après la relecture. Veuillez le relire.\",\n reviewedWording: \"Formulation lors de la relecture\",\n reviewedReference: \"Référence lors de la relecture\",\n placeholderMismatch: (reference, text) =>\n `Les espaces réservés diffèrent de la référence — référence\\u00a0: ${reference}\\u202f; ce texte\\u00a0: ${text}. L’application y insère des valeurs, ils doivent donc rester exactement tels quels.`,\n lastApproved: (name, date) => `Approuvé par ${name} le ${date}`,\n lastFlagged: (name, date) => `Signalé à modifier par ${name} le ${date}`,\n erasedReviewer: \"un compte supprimé\",\n suggestion: \"Meilleure formulation\",\n translation: \"Traduction\",\n note: \"Remarque (facultatif)\",\n notePlaceholder: \"Ce qui ne va pas, ou ce qu’il faut garder en tête\",\n readOnly: \"Vous pouvez consulter cette langue, mais pas la relire.\",\n scope: (areas) => `Votre relecture se limite à\\u00a0: ${areas}.`,\n exportCorrections: (count) => `Exporter les corrections (${n(count)})`,\n failed: \"Cela n’a pas fonctionné. Veuillez réessayer.\",\n approvedToast: (count) => (count < 2 ? \"Texte approuvé\" : `${n(count)} textes approuvés`),\n clearedToast: (count) => (count < 2 ? \"Texte marqué comme non relu\" : `${n(count)} textes marqués comme non relus`),\n groupCount: (unreviewed, total) =>\n `${n(unreviewed)} non ${plural(unreviewed, \"relu\", \"relus\")} / ${n(total)}`,\n approveGroup: (count) => `Approuver les non relus (${n(count)})`,\n confirmGroup: (count, group) =>\n count < 2\n ? `Approuver le texte non relu de «\\u202f${group}\\u202f»\\u202f?`\n : `Approuver les ${n(count)} textes non relus de «\\u202f${group}\\u202f», y compris ceux qui ne sont pas à l’écran\\u202f?`,\n },\n };\n}\n\nexport const UI_KIT_LABELS_FR: UiKitLabels = uiKitLabelsFr();\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/i18n/locales/fr.ts"],"sourcesContent":["import { formatFileSize } from \"../kit-labels\";\nimport type { UiKitLabels } from \"../kit-labels\";\n\n/**\n * The kit's words in French: every namespace of {@link UiKitLabels}, for\n * `<UiKitProvider labels={UI_KIT_LABELS_FR}>`.\n *\n * Self-contained on purpose — nothing but the kit's own `formatFileSize` — so it works\n * as a starting point to copy and adjust. Counts and sizes are formatted with\n * `fr-FR` digits; {@link uiKitLabelsFr} takes another number locale\n * (e.g. `\"de-CH\"` for 1’234) without touching the words.\n */\nexport function uiKitLabelsFr(numberLocale = \"fr-FR\"): UiKitLabels {\n const num = new Intl.NumberFormat(numberLocale);\n const n = (value: number) => num.format(value);\n const plural = (count: number, one: string, many: string) => (count < 2 ? one : many);\n\n return {\n feedbackAttachment: {\n attachmentAdd: \"Ajouter une pièce jointe\",\n attachmentCapture: \"Capturer l’écran\",\n attachmentPaste:\n \"…ou collez une capture d’écran directement depuis le presse-papiers, pour ne montrer qu’un détail plutôt que toute la page.\",\n attachmentRemove: \"Retirer la pièce jointe\",\n attachmentList: \"Pièces jointes\",\n attachmentScreenshot: \"Capture d’écran\",\n attachmentRemoveFile: (name) => `Retirer ${name}`,\n attachmentLimit: (max) =>\n max === 1\n ? `${n(max)} pièce jointe au maximum — retirez-la pour en ajouter une autre.`\n : `${n(max)} pièces jointes au maximum — retirez-en une pour en ajouter une autre.`,\n attachmentUploading: \"Envoi en cours…\",\n attachmentUploadFailed: (name) => `«\\u202f${name}\\u202f» n’a pas pu être envoyé`,\n },\n feedbackDialog: {\n title: \"Envoyer un retour\",\n category: \"Catégorie\",\n subject: \"Objet\",\n body: \"Que s’est-il passé\\u202f?\",\n bodyOptional: \"Que s’est-il passé\\u202f? (facultatif)\",\n attachment: \"Pièce jointe\",\n submitHint: (apple) => (apple ? \"⌘ Entrée pour envoyer\" : \"Ctrl+Entrée pour envoyer\"),\n cancel: \"Annuler\",\n save: \"Envoyer\",\n },\n feedbackThread: {\n thread: \"Commentaires\",\n empty: \"Aucun commentaire pour l’instant\",\n loading: \"Chargement des commentaires…\",\n you: \"Vous\",\n staff: \"Équipe\",\n attachments: \"Pièces jointes\",\n },\n feedbackComposer: {\n field: \"Écrire un commentaire\",\n placeholder: \"Écrire un commentaire…\",\n send: \"Envoyer\",\n sendHint: (modifier) => `${modifier} + Entrée pour envoyer`,\n sendHintEnter: \"Entrée pour envoyer, Maj + Entrée pour aller à la ligne\",\n },\n // 0.27.0. \"Retour\" for feedback, as `feedbackDialog`; \"reprise\" for rework.\n feedbackStatus: {\n OPEN: \"Ouvert\",\n IN_PROGRESS: \"En cours\",\n IN_EVALUATION: \"En évaluation\",\n NEEDS_LIVE_TEST: \"À tester en production\",\n POSTPONED: \"Reporté\",\n DONE: \"Terminé\",\n WONT_DO: \"Ne sera pas traité\",\n },\n feedbackCategory: {\n CRASH: \"Plantage\",\n BUG: \"Bug\",\n IDEA: \"Idée\",\n QUESTION: \"Question\",\n OTHER: \"Autre\",\n },\n feedbackToast: {\n submitted: \"Merci pour votre retour\\u202f!\",\n submitFailed: \"Impossible d’envoyer le retour\",\n attachmentUnsupported: \"Seuls les images, les PDF et les fichiers texte sont acceptés\",\n attachmentTooLarge: \"Le fichier dépasse 10\\u00a0Mo\",\n attachmentTooMany: (count) =>\n `Il n’y a de place que pour ${n(count)} ${plural(count, \"pièce jointe\", \"pièces jointes\")} — les autres ont été écartées.`,\n captureFailed: \"Impossible de capturer l’écran\",\n updateFailed: \"La modification n’a pas pu être enregistrée.\",\n statusChanged: (status, title) => `Passé à «\\u202f${status}\\u202f»\\u00a0: ${title}`,\n statusUndo: \"Annuler\",\n statusRestored: (status, title) => `Revenu à «\\u202f${status}\\u202f»\\u00a0: ${title}`,\n },\n feedbackMenu: {\n trigger: \"Envoyer un retour\",\n myFeedback: \"Mes retours\",\n viewFeedback: \"Voir les retours\",\n },\n feedbackContext: {\n user: \"Utilisateur\",\n attachUrl: \"Joindre l’URL de la page actuelle\",\n },\n feedbackPage: {\n title: \"Retours\",\n myTitle: \"Mes retours\",\n columnId: \"#\",\n columnDate: \"Date\",\n columnCategory: \"Catégorie\",\n columnSubject: \"Objet\",\n columnUser: \"Utilisateur\",\n columnEmail: \"E-mail\",\n columnUrl: \"URL\",\n columnStatus: \"Statut\",\n columnResolved: \"Résolu le\",\n openPage: \"Ouvrir la page\",\n empty: \"Aucun\",\n deletedUser: \"<utilisateur supprimé>\",\n // An id, not a count: printed as it is, like the \"#\" column.\n userFallback: (id) => `utilisateur #${id}`,\n environment: (environment) => String(environment ?? \"\").toUpperCase(),\n reworkChip: (count) => (count === 1 ? \"Reprise\" : `Reprise ×${n(count)}`),\n awaitingFilter: \"Seulement ce qui vous attend\",\n phoneActions: \"Actions sur les retours\",\n },\n feedbackDetail: {\n body: \"Description\",\n edit: \"Modifier\",\n editDescription: \"Modifier la description\",\n save: \"Enregistrer\",\n cancel: \"Annuler\",\n url: \"URL\",\n copyUrl: \"Copier l’URL\",\n attachment: \"Pièce jointe\",\n download: (name) => `Télécharger ${name}`,\n downloadFailed: \"La pièce jointe n’a pas pu être téléchargée.\",\n outcome: \"Résultat\",\n resolvedAt: (date) => `Résolu le ${date}`,\n outcomeAdd: \"Ajouter un résultat\",\n outcomeUpdate: \"Mettre à jour\",\n outcomePlaceholder: \"Ce qui a été fait ou décidé, ou pourquoi ce point ne sera pas traité.\",\n rework: \"Reprise\",\n openPage: \"Ouvrir la page\",\n reworkTitle: \"Renvoyer pour reprise\",\n reworkSend: \"Demander la reprise\",\n reworkPlaceholder:\n \"Que faut-il encore affiner\\u202f? Nouvelles contraintes ou changement de cap éventuels.\",\n reworkUploadFailed: \"Le fichier n’a pas pu être envoyé. La demande de reprise n’a pas été transmise.\",\n status: \"Statut\",\n },\n accountSettings: {\n profile: {\n title: \"Profil\",\n email: \"E-mail\",\n role: \"Rôle\",\n memberSince: \"Membre depuis\",\n displayName: \"Nom affiché\",\n save: \"Enregistrer\",\n },\n password: {\n title: \"Changer le mot de passe\",\n current: \"Mot de passe actuel\",\n next: \"Nouveau mot de passe\",\n confirm: \"Confirmer le nouveau mot de passe\",\n submit: \"Changer le mot de passe\",\n tooShort: \"Le nouveau mot de passe est trop court.\",\n mismatch: \"Les mots de passe ne correspondent pas.\",\n },\n twoFactor: {\n status: \"Authentification à deux facteurs\",\n enabledText: \"Activée\",\n disabledText: \"Désactivée\",\n enable: \"Configurer l’authentification à deux facteurs\",\n scanHint:\n \"Scannez ce code avec votre application d’authentification, puis saisissez le code affiché.\",\n codeLabel: \"Code de vérification\",\n verify: \"Vérifier et activer\",\n disableSection: \"Désactiver l’authentification à deux facteurs\",\n password: \"Mot de passe actuel\",\n disable: \"Désactiver\",\n qrAlt: \"Code QR pour votre application d’authentification\",\n secretHint: \"Impossible de le scanner\\u202f? Saisissez plutôt cette clé dans l’application\\u00a0:\",\n copySecret: \"Copier la clé\",\n },\n passkeys: {\n title: \"Clés d’accès\",\n description:\n \"Connectez-vous avec votre empreinte, votre visage ou le code PIN de l’appareil plutôt qu’avec un mot de passe.\",\n descriptionAlongside:\n \"Connectez-vous avec votre empreinte, votre visage ou le code PIN de l’appareil. Votre mot de passe reste valable.\",\n empty: \"Aucune clé d’accès pour l’instant\",\n loading: \"Chargement des clés d’accès…\",\n list: \"Vos clés d’accès\",\n nameLabel: \"Nom (facultatif)\",\n namePlaceholder: \"p. ex. Portable, Téléphone\",\n add: \"Ajouter une clé d’accès\",\n adding: \"En attente de l’appareil…\",\n rename: \"Renommer\",\n renameItem: (name) => `Renommer ${name}`,\n renameField: (name) => `Nouveau nom pour ${name}`,\n save: \"Enregistrer\",\n cancel: \"Annuler\",\n delete: \"Supprimer\",\n deleteItem: (name) => `Supprimer ${name}`,\n deleteConfirm: (name) =>\n `Supprimer «\\u202f${name}\\u202f»\\u202f? Elle ne permettra plus de se connecter.`,\n confirmDelete: \"Supprimer la clé d’accès\",\n created: (date) => `Ajoutée le ${date}`,\n lastUsed: (date) => `Dernière utilisation le ${date}`,\n neverUsed: \"Jamais utilisée\",\n },\n },\n measuredGrid: {\n view: \"Vue du tableau\",\n cellsView: \"Cellules\",\n textView: \"Texte\",\n addRow: \"Ajouter une ligne\",\n removeRow: (row) => `Supprimer la ligne ${row}`,\n clear: \"Vider le tableau\",\n pasteHint: \"Collez un bloc copié d\\u2019un tableur dans n\\u2019importe quelle cellule\",\n cell: (column, row) => `${column}, ligne ${row}`,\n rowNumber: \"Ligne\",\n rowActions: \"Actions de ligne\",\n keyboardHint:\n \"Les flèches passent d\\u2019une cellule à l\\u2019autre. Tapez pour remplacer une cellule, F2 pour la modifier, Échap pour annuler la modification. Entrée descend et ajoute une ligne à la fin.\",\n lineError: (line) => `La ligne ${line} n\\u2019a pas pu être lue`,\n points: (count) => (count < 2 ? `${count} point` : `${count} points`),\n problems: (count) =>\n count < 2\n ? `${count} cellule n\\u2019est pas un nombre`\n : `${count} cellules ne sont pas des nombres`,\n },\n pageContents: { title: \"Sur cette page\" },\n common: {\n dismiss: \"Fermer\",\n close: \"Fermer\",\n clear: \"Effacer\",\n search: \"Rechercher\",\n done: \"Terminé\",\n cancel: \"Annuler\",\n save: \"Enregistrer\",\n back: \"Retour\",\n next: \"Suivant\",\n remove: \"Supprimer\",\n loading: \"Chargement…\",\n noResults: \"Aucun résultat\",\n // No-break space before the colon, per French typography.\n fieldValue: (field, value) => `${field}\\u00a0: ${value}`,\n opensInNewTab: \"s’ouvre dans un nouvel onglet\",\n },\n dataTable: {\n columns: \"Colonnes\",\n selectAllRows: \"Sélectionner toutes les lignes\",\n sortHint: \"Cliquer pour trier · Maj+clic pour ajouter un tri\",\n filter: \"Filtrer\",\n close: \"Fermer\",\n selectRow: \"Sélectionner la ligne\",\n autoSize: \"Ajuster la largeur des colonnes\",\n loading: \"Chargement…\",\n filters: \"Filtres\",\n clearAll: \"Tout effacer\",\n done: \"Terminé\",\n pageSize: \"Lignes par page\",\n pageSizeAll: \"Toutes\",\n prevPage: \"Page précédente\",\n nextPage: \"Page suivante\",\n clearFilter: \"Effacer le filtre\",\n filterPlaceholder: \"Filtrer…\",\n selectFilter: \"Sélectionner\",\n selectAll: \"Tout\",\n selectNone: \"Aucun\",\n dateFrom: \"Du\",\n dateTo: \"Au\",\n numberMin: \"Min.\",\n numberMax: \"Max.\",\n numberAbs: \"Valeur absolue\",\n presets: {\n today: \"Aujourd’hui\",\n yesterday: \"Hier\",\n this_week: \"Cette semaine\",\n last_week: \"Semaine dernière\",\n last_7_days: \"7 derniers jours\",\n last_30_days: \"30 derniers jours\",\n this_month: \"Ce mois-ci\",\n last_month: \"Mois dernier\",\n last_3_months: \"3 derniers mois\",\n ytd: \"Depuis le début de l’année\",\n last_year: \"Année dernière\",\n },\n table: \"Tableau de données\",\n filterResults: (shown, total) =>\n `${n(shown)} ${plural(shown, \"ligne\", \"lignes\")} sur ${n(total)}`,\n sortedAscending: (column) => `Trié par ${column}, ordre croissant`,\n sortedDescending: (column) => `Trié par ${column}, ordre décroissant`,\n sortCleared: (column) => `Tri retiré sur ${column}`,\n pageChanged: (page, totalPages) => `Page ${n(page)} sur ${n(totalPages)}`,\n pageRange: (from, to, total) => `${n(from)}–${n(to)} / ${n(total)}`,\n rowCount: (total) => n(total),\n columnsCount: (visible, total) => `Colonnes (${n(visible)}/${n(total)})`,\n empty: \"Aucune entrée\",\n actions: \"Actions\",\n edit: \"Modifier\",\n delete: \"Supprimer\",\n booleanTrue: \"Oui\",\n booleanFalse: \"Non\",\n booleanUnset: \"Non défini\",\n sortBy: \"Trier par\",\n sortDefault: \"Ordre par défaut\",\n sortAscending: \"Croissant\",\n sortDescending: \"Décroissant\",\n },\n miniCalendar: {\n previousMonth: \"Mois précédent\",\n nextMonth: \"Mois suivant\",\n // Already formatted in the provider's locale (\"lundi 14 septembre 2026\").\n day: (date) => date,\n chooseStart: \"Choisissez une date de début\",\n chooseEnd: \"Choisissez une date de fin\",\n // \"Date\" is feminine and the formatted day is not a noun French can agree with,\n // so the date is set after a label rather than made the subject.\n startSelected: (date) => `Date de début\\u00a0: ${date}. Choisissez une date de fin.`,\n rangeSelected: (from, to) =>\n `Période du ${from} au ${to} sélectionnée. Choisissez une date de début pour recommencer.`,\n },\n calendarHeatmap: {\n grid: \"Valeurs quotidiennes\",\n day: (date, value) => `${date} : ${value}`,\n less: \"Moins\",\n more: \"Plus\",\n truncated: (count) =>\n `Affichage des jours les plus récents ; ${n(count)} ${count === 1 ? \"jour antérieur n’est pas affiché\" : \"jours antérieurs ne sont pas affichés\"}.`,\n },\n datePicker: {\n apply: \"Appliquer\",\n cancel: \"Annuler\",\n presets: \"Plages rapides\",\n panel: \"Choisir une date\",\n rangePanel: \"Choisir une période\",\n clear: \"Effacer\",\n previousDay: \"Jour précédent\",\n nextDay: \"Jour suivant\",\n today: \"Aujourd’hui\",\n },\n monthPicker: {\n previousYear: \"Année précédente\",\n nextYear: \"Année suivante\",\n panel: \"Choisir un mois\",\n month: (monthYear) => monthYear,\n previousMonth: \"Mois précédent\",\n nextMonth: \"Mois suivant\",\n today: \"Aujourd’hui\",\n yearPanel: \"Choisir une année\",\n earlierYears: \"Années précédentes\",\n laterYears: \"Années suivantes\",\n thisYear: \"Cette année\",\n },\n popover: {\n panel: \"Fenêtre contextuelle\",\n },\n combobox: {\n search: \"Rechercher\",\n noResults: \"Aucun résultat\",\n clear: \"Effacer\",\n loading: \"Chargement…\",\n create: (query) => `Créer «\\u202f${query}\\u202f»`,\n selectedCount: (count) => `${n(count)} ${plural(count, \"sélectionné\", \"sélectionnés\")}`,\n loadError: \"Impossible de charger les résultats\",\n resultCount: (count) => `${n(count)} ${plural(count, \"résultat\", \"résultats\")}`,\n minChars: (count) =>\n `Saisissez au moins ${n(count)} ${plural(count, \"caractère\", \"caractères\")}`,\n },\n multiSelect: {\n search: \"Rechercher\",\n selectAll: \"Tout sélectionner\",\n clear: \"Effacer\",\n all: \"Tous\",\n // The bare count, as in English: the trigger has always shown just the number.\n selectedCount: (count) => n(count),\n },\n calculator: {\n open: \"Ouvrir la calculatrice\",\n panel: \"Calculatrice\",\n calculation: \"Calcul\",\n backspace: \"Retour arrière\",\n clear: \"Effacer\",\n equals: \"Égal\",\n done: \"Terminé\",\n plus: \"Plus\",\n minus: \"Moins\",\n times: \"Multiplié par\",\n divide: \"Divisé par\",\n decimal: \"Séparateur décimal\",\n },\n currency: {\n currency: \"Devise\",\n search: \"Rechercher une devise\",\n },\n chipInput: {\n // The quoted value is a citation; the participle agrees with the implied\n // \"élément\" whatever the chip says.\n added: (value) => `«\\u202f${value}\\u202f» ajouté`,\n removed: (value) => `«\\u202f${value}\\u202f» supprimé`,\n remove: \"Supprimer\",\n atLimit: (max) => `Limite de ${n(max)} ${plural(max, \"élément\", \"éléments\")} atteinte`,\n duplicate: (value) => `«\\u202f${value}\\u202f» figure déjà dans la liste`,\n },\n swatchPicker: {\n none: \"Aucune couleur\",\n mixed: \"Mixte\\u00a0: les éléments sélectionnés ont des couleurs différentes\",\n },\n iconPicker: {\n none: \"Aucune icône\",\n mixed: \"Mixte\\u00a0: les éléments sélectionnés ont des icônes différentes\",\n search: \"Rechercher des icônes\",\n noResults: \"Aucune icône ne correspond\",\n resultCount: (count) => `${n(count)} ${plural(count, \"icône\", \"icônes\")}`,\n },\n fieldSync: {\n synced: \"Enregistré\",\n edited: \"Modifications non enregistrées\",\n pending: \"Enregistrement…\",\n error: \"Échec de l’enregistrement\",\n retry: \"Réessayer\",\n },\n passwordReveal: {\n show: \"Afficher le mot de passe\",\n hide: \"Masquer le mot de passe\",\n },\n dangerConfirm: {\n arm: \"Supprimer…\",\n confirm: \"Supprimer\",\n cancel: \"Annuler\",\n prompt: \"Cette action est irréversible.\",\n password: \"Mot de passe\",\n phrase: (phrase) => `Saisissez «\\u202f${phrase}\\u202f» pour confirmer`,\n acknowledge: \"J’ai lu ce que fait cette action et je souhaite continuer.\",\n needsPhrase: (phrase) => `Saisissez «\\u202f${phrase}\\u202f» pour confirmer`,\n needsAcknowledge: \"Cochez la case pour confirmer\",\n needsPassword: \"Saisissez votre mot de passe pour confirmer\",\n },\n tabs: {\n add: \"Ajouter un onglet\",\n remove: (tab) => `Supprimer ${tab}`,\n },\n appShell: {\n collapse: \"Réduire la barre latérale\",\n expand: \"Développer la barre latérale\",\n toggleGroup: (groupLabel) => `${groupLabel}\\u00a0: pages`,\n },\n topBar: {\n theme: \"Changer de thème\",\n palette: \"Préréglage d’apparence\",\n language: \"Langue\",\n switchRole: \"Changer de rôle\",\n role: (value) => `Rôle\\u00a0: ${value}`,\n },\n pickerSheet: {\n close: \"Fermer\",\n },\n dialogFrame: {\n close: \"Fermer\",\n },\n bulkActionBar: {\n selected: (count) => `${n(count)} ${count === 1 ? \"sélectionné\" : \"sélectionnés\"}`,\n clear: \"Effacer la sélection\",\n cleared: \"Sélection effacée\",\n },\n swipeableRow: {\n actions: \"Actions de la ligne\",\n },\n file: {\n // The kit's own `Intl` unit formatting, pinned to this locale (\"3,4 Mo\").\n size: (bytes) => formatFileSize(bytes, numberLocale),\n },\n filePicker: {\n dropzone: \"Envoi de fichier\",\n browse: \"Parcourir\",\n empty: \"Déposez un fichier ici\",\n emptyMultiple: \"Déposez des fichiers ici\",\n hint: (accept) => (accept ? `Acceptés\\u00a0: ${accept}` : \"Tout type de fichier\"),\n busy: \"Envoi en cours…\",\n rejectedPick: (count) =>\n count < 2\n ? \"Le fichier n\\u2019a pas été ajouté\"\n : `Aucun des ${count} fichiers n\\u2019a été ajouté`,\n rejectedType: (name) => `Le type du fichier «\\u202f${name}\\u202f» n’est pas pris en charge`,\n rejectedTypeOnly: (accept) => `Uniquement des fichiers ${accept}`,\n rejectedSize: (name, maxSize) => `«\\u202f${name}\\u202f» dépasse ${maxSize}`,\n rejectedCount: (name, maxFiles) =>\n `«\\u202f${name}\\u202f» n’a pas été ajouté\\u00a0: ${n(maxFiles)} ${plural(maxFiles, \"fichier\", \"fichiers\")} au maximum`,\n rejectedInvalid: (name) => `«\\u202f${name}\\u202f» ne peut pas être utilisé ici`,\n rejectedMany: (count) =>\n count < 2\n ? `${n(count)} fichier n’a pas été ajouté`\n : `${n(count)} fichiers n’ont pas été ajoutés`,\n // The name branch is for exactly one file, as in English; 0 falls to the count.\n selected: (count, firstName) =>\n count === 1\n ? `«\\u202f${firstName}\\u202f» sélectionné`\n : `${n(count)} ${plural(count, \"fichier sélectionné\", \"fichiers sélectionnés\")}`,\n remove: (name) => `Supprimer «\\u202f${name}\\u202f»`,\n clearAll: \"Supprimer tous les fichiers\",\n removed: (name) => `«\\u202f${name}\\u202f» supprimé`,\n cleared: \"Tous les fichiers ont été supprimés\",\n },\n wizard: {\n done: \"Terminé\",\n cancel: \"Annuler\",\n back: \"Retour\",\n next: \"Suivant\",\n skip: \"Passer\",\n finish: \"Terminer\",\n submitting: \"Création…\",\n steps: \"Étapes\",\n step: (current, total) => `Étape ${n(current)} sur ${n(total)}`,\n cancelTitle: \"Abandonner ce formulaire\\u202f?\",\n confirmCancel: \"Vos saisies seront perdues.\",\n cancelConfirmLabel: \"Abandonner\",\n cancelDismissLabel: \"Continuer la saisie\",\n reviewTitle: \"Vérification\",\n edit: \"Modifier\",\n missingRequired: \"Veuillez remplir tous les champs obligatoires.\",\n genericError: \"Une erreur est survenue\",\n },\n tour: {\n next: \"Suivant\",\n back: \"Retour\",\n skip: \"Passer\",\n done: \"Terminé\",\n awaitClickHint: \"Cliquez sur l’élément mis en évidence pour continuer\",\n step: (current, total) => `${n(current)} / ${n(total)}`,\n },\n commandPalette: {\n clear: \"Effacer la recherche\",\n submit: \"Rechercher\",\n close: \"Fermer\",\n placeholder: \"Rechercher…\",\n empty: \"Aucun résultat\",\n loading: \"Recherche…\",\n dialog: \"Recherche\",\n error: \"La recherche a échoué. Réessayez.\",\n },\n globalSearch: {\n trigger: \"Rechercher\",\n placeholder: \"Rechercher ou aller à…\",\n shortcut: (keys) => `Rechercher (${keys})`,\n suggestions: \"Essayez\",\n results: \"Résultats\",\n },\n sparkline: {\n // \"En hausse de 12 à 40\" would read as \"up BY 12\", hence the colon.\n rising: (first, last) => `En hausse\\u00a0: de ${first} à ${last}`,\n falling: (first, last) => `En baisse\\u00a0: de ${first} à ${last}`,\n flat: (value) => `Stable à ${value}`,\n single: (value) => `Une seule valeur\\u00a0: ${value}`,\n noData: \"Aucune donnée\",\n named: (name, summary) => `${name}\\u00a0: ${summary}`,\n },\n statTile: {\n increase: (amount) => `En hausse de ${amount}`,\n decrease: (amount) => `En baisse de ${amount}`,\n unchanged: \"Sans changement\",\n better: (change) => `${change} (favorable)`,\n worse: (change) => `${change} (défavorable)`,\n noValue: \"Aucune donnée\",\n loading: \"Chargement…\",\n },\n signaturePad: {\n label: \"Signature\",\n instructions: \"Signez dans le cadre avec une souris, votre doigt ou un stylet.\",\n typedFallbackHint: \"Si vous ne pouvez pas dessiner, saisissez plutôt votre nom.\",\n empty: \"Aucun tracé pour l’instant\",\n signed: \"Signature tracée\",\n undo: \"Annuler le dernier trait\",\n clear: \"Effacer\",\n save: \"Enregistrer la signature\",\n useTyped: \"Saisir le nom à la place\",\n useDrawn: \"Dessiner à la place\",\n typedName: \"Nom complet\",\n cleared: \"Signature effacée\",\n undone: \"Dernier trait supprimé\",\n viewEmpty: \"Non signé\",\n viewDrawn: \"Signature manuscrite\",\n viewTyped: (name) => `Signé avec le nom saisi ${name}`,\n },\n passwordStrength: {\n // Agrees with \"mot de passe\" (masculine).\n tooShort: \"Trop court\",\n weak: \"Faible\",\n fair: \"Moyen\",\n good: \"Bon\",\n strong: \"Fort\",\n announcement: (level) => `Robustesse du mot de passe\\u00a0: ${level}`,\n // Unformatted, as in the English default.\n ruleLength: (minLength) =>\n `Au moins ${minLength} ${plural(minLength, \"caractère\", \"caractères\")}`,\n ruleCase: \"Majuscules et minuscules\",\n ruleDigit: \"Un chiffre\",\n ruleSymbol: \"Un caractère spécial\",\n optional: (rule) => `${rule} (facultatif)`,\n met: \"Respecté\\u00a0:\",\n notMet: \"Non respecté\\u00a0:\",\n tooLong: (maxBytes) =>\n `Au plus ${maxBytes} ${plural(maxBytes, \"caractère\", \"caractères\")} (les lettres accentuées et les emoji comptent pour plus d’un).`,\n },\n seriesChart: {\n resetZoom: \"Réinitialiser le zoom\",\n zoomHint:\n \"Faites glisser pour zoomer\\u00a0: une sélection à peu près carrée zoome sur les deux axes, une sélection longue et étroite sur son seul axe. Double-cliquez pour réinitialiser.\",\n empty: \"Aucune donnée\",\n legend: \"Séries\",\n points: \"Valeurs du graphique\",\n },\n pieChart: {\n slices: \"Secteurs du graphique\",\n slice: (label, value, percent) => `${label}\\u00a0: ${value} (${percent})`,\n total: \"Total\",\n empty: \"Aucune donnée\",\n legend: \"Catégories\",\n },\n confirmDialog: {\n confirm: \"Confirmer\",\n cancel: \"Annuler\",\n typed: (text) => `Saisissez «\\u202f${text}\\u202f» pour confirmer`,\n },\n floatingPanel: {\n close: \"Fermer\",\n badge: (count) => `${n(count)} ${plural(count, \"nouveau\", \"nouveaux\")}`,\n },\n copyButton: {\n copy: \"Copier\",\n copied: \"Copié\",\n failed: \"Échec de la copie\",\n copiedAnnouncement: \"Copié dans le presse-papiers\",\n failedAnnouncement: \"Impossible de copier dans le presse-papiers\",\n },\n list: {\n unread: \"Non lu\",\n opensInNewTab: \"s’ouvre dans un nouvel onglet\",\n },\n breadcrumbs: {\n label: \"Fil d’Ariane\",\n showAll: \"Afficher le chemin complet\",\n },\n toast: {\n close: \"Fermer la notification\",\n notifications: \"Notifications\",\n undo: \"Annuler\",\n redo: \"Rétablir\",\n },\n form: {\n save: \"Enregistrer\",\n cancel: \"Annuler\",\n submitShortcut: (apple) => (apple ? \"⌘ Entrée\" : \"Ctrl+Entrée\"),\n },\n descriptionList: {\n empty: \"—\",\n },\n lineItems: {\n add: \"Ajouter une ligne\",\n remove: (row) => `Supprimer la ligne ${row}`,\n confirmRemove: (row) => `Supprimer la ligne ${row}\\u202f? Appuyez de nouveau pour confirmer`,\n row: (row) => `Ligne ${row}`,\n cell: (column, row) => `${column}, ligne ${row}`,\n totals: \"Total\",\n },\n progressBar: {\n unlimited: \"Illimité\",\n overLimit: (amount) => `${amount} au-delà de la limite`,\n },\n signedAmount: {\n positive: (amount) => `plus ${amount}`,\n negative: (amount) => `moins ${amount}`,\n },\n errorBoundary: {\n title: \"Une erreur s’est produite\",\n message: \"Cette partie de la page n’a pas pu s’afficher. Réessayez ou rechargez la page.\",\n retry: \"Réessayer\",\n details: \"Détails de l’erreur\",\n reload: \"Recharger\",\n updateTitle: \"Une nouvelle version est disponible\",\n updateMessage: \"Une partie de l’application a changé depuis le chargement de cette page. Rechargez-la pour obtenir la nouvelle version.\",\n offlineTitle: \"Vous êtes hors ligne\",\n offlineMessage: \"Cette page n’a pas pu être chargée sans connexion. Reconnectez-vous, puis rechargez la page.\",\n copyReport: \"Copier le rapport d’erreur\",\n reported: \"L’erreur a été signalée automatiquement.\",\n reportedAs: (reference) => `Signalée sous la référence ${reference}`,\n },\n authedImage: {\n loading: \"Chargement de l’image…\",\n loadError: \"Impossible de charger l’image\",\n failedImage: (alt) => `${alt} : impossible de charger l’image`,\n },\n imageGrid: {\n list: \"Images\",\n item: (index, count) => `Image ${n(index)} sur ${n(count)}`,\n actions: (name) => `Actions pour ${name}`,\n },\n lightbox: {\n dialog: \"Visionneuse d’images\",\n close: \"Fermer\",\n previous: \"Image précédente\",\n next: \"Image suivante\",\n counter: (index, count) => `${n(index)} / ${n(count)}`,\n position: (index, count) => `Image ${n(index)} sur ${n(count)}`,\n download: \"Télécharger\",\n zoom: \"Agrandir\",\n noPreview: \"Aucun aperçu disponible pour ce fichier\",\n openInNewTab: \"Ouvrir dans un nouvel onglet\",\n },\n writeLock: {\n reason: \"Vous pouvez consulter ceci, mais pas le modifier.\",\n },\n accountState: {\n // Agreeing with \"compte\" (masculine): the chip is the state of an account.\n active: \"Actif\",\n inactive: \"Inactif\",\n invited: \"Invité\",\n registered: \"Inscrit\",\n unverified: \"Non vérifié\",\n passwordChange: \"Doit changer de mot de passe\",\n },\n shareCard: {\n dialogTitle: \"Partager\",\n close: \"Fermer\",\n email: \"Adresse e-mail\",\n emailOptional: \"Adresse e-mail (facultatif)\",\n // example.com is reserved for examples (RFC 2606); a localised domain is real.\n emailPlaceholder: \"nom@example.com\",\n invalidEmail: \"Saisissez une adresse e-mail complète.\",\n role: \"Rôle\",\n roleOf: (name) => `Rôle de ${name}`,\n add: \"Partager\",\n whoHasAccess: \"Qui a accès\",\n nobodyYet: \"Personne d’autre n’y a encore accès.\",\n pending: \"En attente\",\n openInvite: \"Lien d’invitation ouvert\",\n copyLink: \"Copier le lien\",\n team: \"Équipe\",\n teamHint: (name) => `Tous les membres de ${name} y auront accès.`,\n remove: \"Retirer l’accès\",\n removeConfirm: (name) => `Retirer l’accès de ${name}\\u202f?`,\n revokePending: \"Révoquer l’invitation\",\n revokePendingConfirm: (name) => `Révoquer l’invitation de ${name}\\u202f?`,\n failed: \"Cela n’a pas fonctionné. Veuillez réessayer.\",\n loading: \"Chargement…\",\n },\n reauthDialog: {\n title: \"Confirmez votre identité\",\n description: \"Saisissez votre mot de passe actuel pour continuer.\",\n password: \"Mot de passe actuel\",\n submit: \"Continuer\",\n cancel: \"Annuler\",\n },\n serverWake: {\n slow: \"Chargement en cours — cela prend plus de temps que d’habitude.\",\n waking: (appName) =>\n `Le serveur se met en veille quand personne n’utilise ${appName ?? \"l’application\"}, donc la première requête après une pause doit le redémarrer. Cela peut prendre un moment — rien n’est perdu, la page se remplira d’elle-même.`,\n },\n legal: {\n navLabel: \"Informations légales\",\n },\n characterCount: {\n count: (used, max) => `${n(used)} sur ${n(max)} ${plural(max, \"caractère\", \"caractères\")}`,\n remaining: (left) => `${n(left)} ${plural(left, \"caractère restant\", \"caractères restants\")}`,\n limitReached: \"Limite de caractères atteinte\",\n },\n countrySelect: {\n country: \"Pays\",\n search: \"Rechercher un pays\",\n others: \"Autres pays\",\n },\n inlineEdit: {\n edit: (label) => `Modifier ${label}`,\n failed: \"La modification n’a pas pu être enregistrée.\",\n empty: \"Vide\",\n },\n ibanInput: {\n format: \"Un IBAN commence par un code pays de deux lettres et deux chiffres de contrôle.\",\n country: (code) => `«\\u202f${code}\\u202f» n’est pas le code pays d’un IBAN.`,\n length: (actual, expected) =>\n `Un IBAN de ce pays compte ${n(expected)} caractères — celui-ci en compte ${n(actual)}.`,\n checksum: \"Les chiffres de contrôle ne correspondent pas — un caractère est sans doute mal saisi.\",\n qrRequired: \"Ceci est un IBAN ordinaire. Une QR-facture exige le QR-IBAN du compte.\",\n qrNotAllowed:\n \"Ceci est un QR-IBAN, qui ne reçoit que des paiements par QR-facture. Saisissez l’IBAN ordinaire du compte.\",\n },\n phoneInput: {\n countryCode: \"Indicatif du pays\",\n other: \"Autre\",\n },\n signChip: {\n outflow: \"Sortie\",\n inflow: \"Entrée\",\n direction: (current, next) => `Sens\\u00a0: ${current} — passer à ${next}`,\n },\n columnMapper: {\n paste: \"Coller un tableau\",\n pasteHint:\n \"Copiez les lignes d’un tableur et collez-les ici, ou déposez un fichier CSV ou texte.\",\n chooseFile: \"Choisir un fichier\",\n readError: (name) => `«\\u202f${name}\\u202f» n’a pas pu être lu`,\n headerRow: \"La première ligne contient les noms des colonnes\",\n summary: (columns, rows) =>\n `${n(columns)} ${plural(columns, \"colonne\", \"colonnes\")}, ${n(rows)} ${plural(rows, \"ligne\", \"lignes\")}`,\n // Fragments of the summary line. \"Séparé par…\" would have to agree with a noun the\n // line does not name, so the separator is stated as a value.\n separatorSemicolon: \"séparateur\\u00a0: point-virgule\",\n separatorComma: \"séparateur\\u00a0: virgule\",\n separatorTab: \"séparateur\\u00a0: tabulation\",\n separatorSpace: \"séparateur\\u00a0: espace\",\n // The examples stay as written: they show the convention, not the reader's locale.\n decimalComma: \"virgule décimale (1,5)\",\n decimalPoint: \"point décimal (1.5)\",\n unreadCount: (count) =>\n count < 2\n ? `${n(count)} ligne n’a pas pu être lue`\n : `${n(count)} lignes n’ont pas pu être lues`,\n unreadLine: (line) => `La ligne ${line} n\\u2019a pas pu être lue`,\n unreadMore: (count) => `…et ${n(count)} ${plural(count, \"autre\", \"autres\")}`,\n noRows: \"Aucune ligne de ce texte ne se lit comme une ligne du tableau.\",\n table: \"Colonnes et leurs rôles\",\n columnN: (column) => `Colonne ${column}`,\n roleOf: (column) => `Que contient la colonne «\\u202f${column}\\u202f»\\u202f?`,\n ignore: \"Ignorer\",\n requiredRole: (role) => `${role} (obligatoire)`,\n requiredRoleShort: (role) => `${role} *`,\n previewOf: (shown, total) =>\n shown < 2\n ? `La première ligne sur ${n(total)}`\n : `Les ${n(shown)} premières lignes sur ${n(total)}`,\n // `roles` arrives joined with \"ou\" (\"Débit ou Crédit\").\n oneOf: (roles) => `${roles} (au choix)`,\n missing: (roles) => `Il manque encore\\u00a0: ${roles}.`,\n },\n translationReview: {\n statusMissing: \"Manquant\",\n statusUnreviewed: \"Non relu\",\n statusChanged: \"Modifié depuis la relecture\",\n statusNeedsChange: \"À modifier\",\n statusApproved: \"Approuvé\",\n statusFilter: \"Statut\",\n all: \"Tous\",\n filterCount: (label, count) => `${label} · ${n(count)}`,\n source: \"Textes\",\n allSources: \"Tous les textes\",\n namespace: \"Domaine\",\n allNamespaces: \"Tous les domaines\",\n search: \"Rechercher dans les clés et les textes\",\n placeholdersOnly: (count) => `Seulement les problèmes d’espaces réservés (${n(count)})`,\n placeholderChip: \"Espaces réservés\",\n key: \"Clé\",\n statusColumn: \"Statut\",\n empty: \"Aucun texte ne correspond à ces filtres.\",\n missingText: \"Manquant dans cette langue\",\n progress: (approved, total) => `${n(approved)} sur ${n(total)} ${plural(approved, \"approuvé\", \"approuvés\")}`,\n localeProgress: (approved, total) => `${n(approved)}/${n(total)}`,\n locales: \"Langues\",\n approve: \"Approuver\",\n flag: \"À modifier\",\n suggest: \"Proposer une traduction\",\n reset: \"Marquer comme non relu\",\n cancel: \"Annuler\",\n approveSelected: \"Approuver la sélection\",\n resetSelected: \"Marquer la sélection comme non relue\",\n selectShown: \"Sélectionner tout ce qui est affiché\",\n changedSince: \"Ce texte a été modifié après la relecture. Veuillez le relire.\",\n reviewedWording: \"Formulation lors de la relecture\",\n reviewedReference: \"Référence lors de la relecture\",\n placeholderMismatch: (reference, text) =>\n `Les espaces réservés diffèrent de la référence — référence\\u00a0: ${reference}\\u202f; ce texte\\u00a0: ${text}. L’application y insère des valeurs, ils doivent donc rester exactement tels quels.`,\n lastApproved: (name, date) => `Approuvé par ${name} le ${date}`,\n lastFlagged: (name, date) => `Signalé à modifier par ${name} le ${date}`,\n erasedReviewer: \"un compte supprimé\",\n suggestion: \"Meilleure formulation\",\n translation: \"Traduction\",\n note: \"Remarque (facultatif)\",\n notePlaceholder: \"Ce qui ne va pas, ou ce qu’il faut garder en tête\",\n readOnly: \"Vous pouvez consulter cette langue, mais pas la relire.\",\n scope: (areas) => `Votre relecture se limite à\\u00a0: ${areas}.`,\n exportCorrections: (count) => `Exporter les corrections (${n(count)})`,\n failed: \"Cela n’a pas fonctionné. Veuillez réessayer.\",\n approvedToast: (count) => (count < 2 ? \"Texte approuvé\" : `${n(count)} textes approuvés`),\n clearedToast: (count) => (count < 2 ? \"Texte marqué comme non relu\" : `${n(count)} textes marqués comme non relus`),\n groupCount: (unreviewed, total) =>\n `${n(unreviewed)} non ${plural(unreviewed, \"relu\", \"relus\")} / ${n(total)}`,\n approveGroup: (count) => `Approuver les non relus (${n(count)})`,\n confirmGroup: (count, group) =>\n count < 2\n ? `Approuver le texte non relu de «\\u202f${group}\\u202f»\\u202f?`\n : `Approuver les ${n(count)} textes non relus de «\\u202f${group}\\u202f», y compris ceux qui ne sont pas à l’écran\\u202f?`,\n },\n };\n}\n\nexport const UI_KIT_LABELS_FR: UiKitLabels = uiKitLabelsFr();\n"],"mappings":"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","names":[]}
@@ -1,9 +1,6 @@
1
- import { cB as UiKitLabels } from '../../feedback-BXKH-ToU.js';
1
+ import { d_ as UiKitLabels } from '../../kit-labels-DQg82eHB.js';
2
2
  import 'react';
3
- import '../../components/tooltip.js';
4
- import '../../hooks/use-anchored-rect.js';
5
- import '../../lib/clipping.js';
6
- import '../../data-table-labels-Cdn1QS2k.js';
3
+ import '../../data-table-labels-DUELeXpa.js';
7
4
  import '../../components/data-table-sort.js';
8
5
  import '../../components/swipeable-row.js';
9
6
  import '../../components/mini-calendar.js';
@@ -12,6 +9,9 @@ import '../../components/popover.js';
12
9
  import '../../components/chip.js';
13
10
  import 'lucide-react';
14
11
  import '../../components/field-sync.js';
12
+ import '../../components/tooltip.js';
13
+ import '../../hooks/use-anchored-rect.js';
14
+ import '../../lib/clipping.js';
15
15
  import '../../wizard/types.js';
16
16
  import '../../tour/tour.js';
17
17
  import '../../search/command-palette.js';
@@ -32,19 +32,23 @@ import '../../components/dialog-frame.js';
32
32
  import '../../components/modal.js';
33
33
  import '../../hooks/use-search-param-state.js';
34
34
  import '../../components/measured-grid.js';
35
- import '../../components/account-settings-labels.js';
35
+ import '../../components/user-avatar.js';
36
+ import '../../components/status-dot.js';
37
+ import '../../components/progress-bar.js';
38
+ import '../../components/signed-amount.js';
39
+ import '../../shell/topbar-action-menu.js';
40
+ import '../../components/menu-item.js';
36
41
  import '../../components/floating-panel.js';
42
+ import '../../hooks/use-authed-src.js';
43
+ import '../../components/account-settings-labels.js';
37
44
  import '../../components/bulk-action-bar.js';
38
45
  import '../../components/list.js';
39
- import '../../components/signed-amount.js';
40
46
  import '../../components/breadcrumbs.js';
41
47
  import '../../components/toast.js';
42
48
  import '../../components/description-list.js';
43
49
  import '../../components/line-items.js';
44
- import '../../components/progress-bar.js';
45
50
  import '../../components/error-boundary.js';
46
51
  import '../../components/authed-image.js';
47
- import '../../hooks/use-authed-src.js';
48
52
  import '../../components/image-grid.js';
49
53
  import '../../components/lightbox.js';
50
54
  import '../../components/write-lock.js';
@@ -5,14 +5,14 @@ function uiKitLabelsHu(numberLocale = "hu-HU") {
5
5
  const n = (value) => num.format(value);
6
6
  return {
7
7
  feedbackAttachment: {
8
- attachmentAdd: "K\xE9p csatol\xE1sa",
8
+ attachmentAdd: "Mell\xE9klet hozz\xE1ad\xE1sa",
9
9
  attachmentCapture: "K\xE9perny\u0151k\xE9p k\xE9sz\xEDt\xE9se",
10
- attachmentPaste: "\u2026vagy illesszen be egy k\xE9perny\u0151k\xE9pet a v\xE1g\xF3lapr\xF3l.",
10
+ attachmentPaste: "\u2026vagy illesszen be egy k\xE9perny\u0151k\xE9pet k\xF6zvetlen\xFCl a v\xE1g\xF3lapr\xF3l \u2013 \xEDgy el\xE9g egy r\xE9szletet megmutatnia az eg\xE9sz oldal helyett.",
11
11
  attachmentRemove: "Mell\xE9klet elt\xE1vol\xEDt\xE1sa",
12
12
  attachmentList: "Mell\xE9kletek",
13
13
  attachmentScreenshot: "K\xE9perny\u0151k\xE9p",
14
14
  attachmentRemoveFile: (name) => `${name} elt\xE1vol\xEDt\xE1sa`,
15
- attachmentLimit: (max) => `Legfeljebb ${n(max)} mell\xE9klet \u2013 egy \xFAjabbhoz t\xE1vol\xEDtson el egyet.`,
15
+ attachmentLimit: (max) => max === 1 ? `Legfeljebb ${n(max)} mell\xE9klet \u2013 egy \xFAjabbhoz t\xE1vol\xEDtsa el.` : `Legfeljebb ${n(max)} mell\xE9klet \u2013 egy \xFAjabbhoz t\xE1vol\xEDtson el egyet.`,
16
16
  attachmentUploading: "Felt\xF6lt\xE9s\u2026",
17
17
  // Opens with the quoted name, as `filePicker`'s refusals: no a/az has to agree with it.
18
18
  attachmentUploadFailed: (name) => `\u201E${name}\u201D: a felt\xF6lt\xE9s nem siker\xFClt`
@@ -23,8 +23,8 @@ function uiKitLabelsHu(numberLocale = "hu-HU") {
23
23
  subject: "T\xE1rgy",
24
24
  body: "Mi t\xF6rt\xE9nt?",
25
25
  bodyOptional: "Mi t\xF6rt\xE9nt? (nem k\xF6telez\u0151)",
26
- attachment: "K\xE9perny\u0151k\xE9p",
27
- submitHint: "Ctrl/\u2318 + Enter a k\xFCld\xE9shez",
26
+ attachment: "Mell\xE9klet",
27
+ submitHint: (apple) => apple ? "\u2318 Enter a k\xFCld\xE9shez" : "Ctrl+Enter a k\xFCld\xE9shez",
28
28
  cancel: "M\xE9gse",
29
29
  save: "K\xFCld\xE9s"
30
30
  },
@@ -43,6 +43,91 @@ function uiKitLabelsHu(numberLocale = "hu-HU") {
43
43
  sendHint: (modifier) => `${modifier} + Enter a k\xFCld\xE9shez`,
44
44
  sendHintEnter: "Enter: k\xFCld\xE9s, Shift + Enter: \xFAj sor"
45
45
  },
46
+ // 0.27.0. "Visszajelzés" for feedback, as `feedbackDialog`; "átdolgozás" for rework.
47
+ // A noun after a number stays singular in Hungarian, so the counts need no plural.
48
+ feedbackStatus: {
49
+ OPEN: "Nyitott",
50
+ IN_PROGRESS: "Folyamatban",
51
+ IN_EVALUATION: "\xC9rt\xE9kel\xE9s alatt",
52
+ NEEDS_LIVE_TEST: "\xC9lesben tesztelend\u0151",
53
+ POSTPONED: "Elhalasztva",
54
+ DONE: "K\xE9sz",
55
+ WONT_DO: "Nem val\xF3sul meg"
56
+ },
57
+ feedbackCategory: {
58
+ CRASH: "\xD6sszeoml\xE1s",
59
+ BUG: "Hiba",
60
+ IDEA: "\xD6tlet",
61
+ QUESTION: "K\xE9rd\xE9s",
62
+ OTHER: "Egy\xE9b"
63
+ },
64
+ feedbackToast: {
65
+ submitted: "K\xF6sz\xF6nj\xFCk a visszajelz\xE9s\xE9t!",
66
+ submitFailed: "A visszajelz\xE9st nem siker\xFClt elk\xFCldeni",
67
+ attachmentUnsupported: "Csak k\xE9pek, PDF- \xE9s sz\xF6veges f\xE1jlok enged\xE9lyezettek",
68
+ attachmentTooLarge: "A f\xE1jl nagyobb 10 MB-n\xE1l",
69
+ attachmentTooMany: (count) => `Csak ${n(count)} mell\xE9klet f\xE9r el \u2013 a t\xF6bbi kimaradt.`,
70
+ captureFailed: "Nem siker\xFClt k\xE9perny\u0151k\xE9pet k\xE9sz\xEDteni",
71
+ updateFailed: "A m\xF3dos\xEDt\xE1st nem siker\xFClt menteni.",
72
+ statusChanged: (status, title) => `\u201E${status}\u201D \xE1llapotra \xE1ll\xEDtva: ${title}`,
73
+ statusUndo: "Visszavon\xE1s",
74
+ statusRestored: (status, title) => `Vissza \u201E${status}\u201D \xE1llapotra: ${title}`
75
+ },
76
+ feedbackMenu: {
77
+ trigger: "Visszajelz\xE9s k\xFCld\xE9se",
78
+ myFeedback: "Visszajelz\xE9seim",
79
+ viewFeedback: "Visszajelz\xE9sek megtekint\xE9se"
80
+ },
81
+ feedbackContext: {
82
+ user: "Felhaszn\xE1l\xF3",
83
+ attachUrl: "Az aktu\xE1lis oldal URL-j\xE9nek csatol\xE1sa"
84
+ },
85
+ feedbackPage: {
86
+ title: "Visszajelz\xE9sek",
87
+ myTitle: "Visszajelz\xE9seim",
88
+ columnId: "#",
89
+ columnDate: "D\xE1tum",
90
+ columnCategory: "Kateg\xF3ria",
91
+ columnSubject: "T\xE1rgy",
92
+ columnUser: "Felhaszn\xE1l\xF3",
93
+ columnEmail: "E-mail",
94
+ columnUrl: "URL",
95
+ columnStatus: "\xC1llapot",
96
+ columnResolved: "Lez\xE1rva",
97
+ openPage: "Oldal megnyit\xE1sa",
98
+ empty: "Nincs",
99
+ deletedUser: "<t\xF6r\xF6lt felhaszn\xE1l\xF3>",
100
+ // An id, not a count: printed as it is, like the "#" column.
101
+ userFallback: (id) => `felhaszn\xE1l\xF3 #${id}`,
102
+ environment: (environment) => String(environment ?? "").toUpperCase(),
103
+ reworkChip: (count) => count === 1 ? "\xC1tdolgoz\xE1s" : `\xC1tdolgoz\xE1s \xD7${n(count)}`,
104
+ awaitingFilter: "Csak ami \xD6nre v\xE1r",
105
+ phoneActions: "Visszajelz\xE9s-m\u0171veletek"
106
+ },
107
+ feedbackDetail: {
108
+ body: "Le\xEDr\xE1s",
109
+ edit: "Szerkeszt\xE9s",
110
+ editDescription: "Le\xEDr\xE1s szerkeszt\xE9se",
111
+ save: "Ment\xE9s",
112
+ cancel: "M\xE9gse",
113
+ url: "URL",
114
+ copyUrl: "URL m\xE1sol\xE1sa",
115
+ attachment: "Mell\xE9klet",
116
+ download: (name) => `${name} let\xF6lt\xE9se`,
117
+ downloadFailed: "A mell\xE9kletet nem siker\xFClt let\xF6lteni.",
118
+ outcome: "Eredm\xE9ny",
119
+ resolvedAt: (date) => `Lez\xE1rva: ${date}`,
120
+ outcomeAdd: "Eredm\xE9ny hozz\xE1ad\xE1sa",
121
+ outcomeUpdate: "Friss\xEDt\xE9s",
122
+ outcomePlaceholder: "Mi k\xE9sz\xFClt el, mi a d\xF6nt\xE9s, vagy mi\xE9rt nem val\xF3sul meg.",
123
+ rework: "\xC1tdolgoz\xE1s",
124
+ openPage: "Oldal megnyit\xE1sa",
125
+ reworkTitle: "Visszak\xFCld\xE9s \xE1tdolgoz\xE1sra",
126
+ reworkSend: "\xC1tdolgoz\xE1s k\xE9r\xE9se",
127
+ reworkPlaceholder: "Min kell m\xE9g finom\xEDtani? \xDAj felt\xE9telek vagy ir\xE1nyv\xE1lt\xE1s.",
128
+ reworkUploadFailed: "A f\xE1jlt nem siker\xFClt felt\xF6lteni. Az \xE1tdolgoz\xE1si k\xE9r\xE9s nem ment el.",
129
+ status: "\xC1llapot"
130
+ },
46
131
  accountSettings: {
47
132
  profile: {
48
133
  title: "Profil",