@tracearr/translations 2.2.4-beta.3 → 2.3.0-beta.2

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 (252) hide show
  1. package/README.md +1 -1
  2. package/dist/config.d.ts +1164 -64
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.mobile.d.ts +1164 -64
  5. package/dist/config.mobile.d.ts.map +1 -1
  6. package/dist/locales/af-ZA/common.json +281 -280
  7. package/dist/locales/af-ZA/notifications.json +238 -218
  8. package/dist/locales/af-ZA/pages.json +1726 -1646
  9. package/dist/locales/af-ZA/settings.json +888 -440
  10. package/dist/locales/ar-SA/common.json +281 -280
  11. package/dist/locales/ar-SA/notifications.json +242 -222
  12. package/dist/locales/ar-SA/pages.json +1684 -1604
  13. package/dist/locales/ar-SA/settings.json +889 -441
  14. package/dist/locales/ca-ES/common.json +281 -280
  15. package/dist/locales/ca-ES/notifications.json +238 -218
  16. package/dist/locales/ca-ES/pages.json +1682 -1602
  17. package/dist/locales/ca-ES/settings.json +888 -440
  18. package/dist/locales/cs-CZ/common.json +281 -280
  19. package/dist/locales/cs-CZ/notifications.json +242 -222
  20. package/dist/locales/cs-CZ/pages.json +1688 -1608
  21. package/dist/locales/cs-CZ/settings.json +889 -441
  22. package/dist/locales/da-DK/common.json +281 -280
  23. package/dist/locales/da-DK/notifications.json +242 -222
  24. package/dist/locales/da-DK/pages.json +1684 -1604
  25. package/dist/locales/da-DK/settings.json +889 -441
  26. package/dist/locales/de-DE/common.json +281 -280
  27. package/dist/locales/de-DE/notifications.json +242 -222
  28. package/dist/locales/de-DE/pages.json +1690 -1610
  29. package/dist/locales/de-DE/settings.json +889 -441
  30. package/dist/locales/el-GR/common.json +281 -280
  31. package/dist/locales/el-GR/notifications.json +242 -222
  32. package/dist/locales/el-GR/pages.json +1684 -1604
  33. package/dist/locales/el-GR/settings.json +889 -441
  34. package/dist/locales/en/notifications.json +26 -6
  35. package/dist/locales/en/pages.json +94 -12
  36. package/dist/locales/en/settings.json +474 -26
  37. package/dist/locales/en-US/common.json +281 -280
  38. package/dist/locales/en-US/notifications.json +242 -222
  39. package/dist/locales/en-US/pages.json +1774 -1694
  40. package/dist/locales/en-US/settings.json +898 -450
  41. package/dist/locales/es-ES/common.json +281 -280
  42. package/dist/locales/es-ES/notifications.json +242 -222
  43. package/dist/locales/es-ES/pages.json +1689 -1609
  44. package/dist/locales/es-ES/settings.json +889 -441
  45. package/dist/locales/fi-FI/common.json +281 -280
  46. package/dist/locales/fi-FI/notifications.json +242 -222
  47. package/dist/locales/fi-FI/pages.json +1684 -1604
  48. package/dist/locales/fi-FI/settings.json +889 -441
  49. package/dist/locales/fr-FR/notifications.json +242 -222
  50. package/dist/locales/fr-FR/pages.json +1698 -1618
  51. package/dist/locales/fr-FR/settings.json +898 -450
  52. package/dist/locales/he-IL/common.json +281 -280
  53. package/dist/locales/he-IL/notifications.json +238 -218
  54. package/dist/locales/he-IL/pages.json +1726 -1646
  55. package/dist/locales/he-IL/settings.json +888 -440
  56. package/dist/locales/hu-HU/common.json +281 -280
  57. package/dist/locales/hu-HU/notifications.json +238 -218
  58. package/dist/locales/hu-HU/pages.json +1726 -1646
  59. package/dist/locales/hu-HU/settings.json +888 -440
  60. package/dist/locales/it-IT/common.json +281 -280
  61. package/dist/locales/it-IT/notifications.json +242 -222
  62. package/dist/locales/it-IT/pages.json +1684 -1604
  63. package/dist/locales/it-IT/settings.json +889 -441
  64. package/dist/locales/ja-JP/common.json +281 -280
  65. package/dist/locales/ja-JP/notifications.json +242 -222
  66. package/dist/locales/ja-JP/pages.json +1684 -1604
  67. package/dist/locales/ja-JP/settings.json +889 -441
  68. package/dist/locales/ko-KR/common.json +281 -281
  69. package/dist/locales/ko-KR/notifications.json +242 -222
  70. package/dist/locales/ko-KR/pages.json +1746 -1666
  71. package/dist/locales/ko-KR/settings.json +898 -450
  72. package/dist/locales/nl-NL/common.json +281 -280
  73. package/dist/locales/nl-NL/notifications.json +242 -222
  74. package/dist/locales/nl-NL/pages.json +1699 -1619
  75. package/dist/locales/nl-NL/settings.json +891 -443
  76. package/dist/locales/no-NO/common.json +281 -280
  77. package/dist/locales/no-NO/notifications.json +242 -222
  78. package/dist/locales/no-NO/pages.json +1684 -1604
  79. package/dist/locales/no-NO/settings.json +889 -441
  80. package/dist/locales/pl-PL/common.json +281 -280
  81. package/dist/locales/pl-PL/notifications.json +242 -222
  82. package/dist/locales/pl-PL/pages.json +1684 -1604
  83. package/dist/locales/pl-PL/settings.json +889 -441
  84. package/dist/locales/pt-BR/common.json +281 -280
  85. package/dist/locales/pt-BR/notifications.json +242 -222
  86. package/dist/locales/pt-BR/pages.json +1725 -1645
  87. package/dist/locales/pt-BR/settings.json +889 -441
  88. package/dist/locales/pt-PT/common.json +281 -280
  89. package/dist/locales/pt-PT/notifications.json +242 -222
  90. package/dist/locales/pt-PT/pages.json +1684 -1604
  91. package/dist/locales/pt-PT/settings.json +889 -441
  92. package/dist/locales/ro-RO/common.json +281 -280
  93. package/dist/locales/ro-RO/notifications.json +242 -222
  94. package/dist/locales/ro-RO/pages.json +1684 -1604
  95. package/dist/locales/ro-RO/settings.json +889 -441
  96. package/dist/locales/ru-RU/common.json +281 -280
  97. package/dist/locales/ru-RU/notifications.json +242 -222
  98. package/dist/locales/ru-RU/pages.json +1684 -1604
  99. package/dist/locales/ru-RU/settings.json +889 -441
  100. package/dist/locales/sr-SP/common.json +281 -280
  101. package/dist/locales/sr-SP/notifications.json +238 -218
  102. package/dist/locales/sr-SP/pages.json +1726 -1646
  103. package/dist/locales/sr-SP/settings.json +888 -440
  104. package/dist/locales/sv-SE/common.json +281 -280
  105. package/dist/locales/sv-SE/notifications.json +242 -222
  106. package/dist/locales/sv-SE/pages.json +1684 -1604
  107. package/dist/locales/sv-SE/settings.json +889 -441
  108. package/dist/locales/tr-TR/common.json +281 -280
  109. package/dist/locales/tr-TR/notifications.json +238 -218
  110. package/dist/locales/tr-TR/pages.json +1726 -1646
  111. package/dist/locales/tr-TR/settings.json +888 -440
  112. package/dist/locales/uk-UA/common.json +13 -12
  113. package/dist/locales/uk-UA/nav.json +17 -23
  114. package/dist/locales/uk-UA/notifications.json +242 -222
  115. package/dist/locales/uk-UA/pages.json +121 -41
  116. package/dist/locales/uk-UA/settings.json +889 -441
  117. package/dist/locales/vi-VN/common.json +281 -280
  118. package/dist/locales/vi-VN/notifications.json +238 -218
  119. package/dist/locales/vi-VN/pages.json +1726 -1646
  120. package/dist/locales/vi-VN/settings.json +888 -440
  121. package/dist/locales/zh-CN/common.json +281 -280
  122. package/dist/locales/zh-CN/notifications.json +242 -222
  123. package/dist/locales/zh-CN/pages.json +1695 -1615
  124. package/dist/locales/zh-CN/settings.json +898 -450
  125. package/dist/locales/zh-TW/common.json +281 -280
  126. package/dist/locales/zh-TW/notifications.json +242 -222
  127. package/dist/locales/zh-TW/pages.json +1804 -1724
  128. package/dist/locales/zh-TW/settings.json +888 -440
  129. package/package.json +1 -1
  130. package/src/locales/af-ZA/common.json +281 -280
  131. package/src/locales/af-ZA/notifications.json +238 -218
  132. package/src/locales/af-ZA/pages.json +1726 -1646
  133. package/src/locales/af-ZA/settings.json +888 -440
  134. package/src/locales/ar-SA/common.json +281 -280
  135. package/src/locales/ar-SA/notifications.json +242 -222
  136. package/src/locales/ar-SA/pages.json +1684 -1604
  137. package/src/locales/ar-SA/settings.json +889 -441
  138. package/src/locales/ca-ES/common.json +281 -280
  139. package/src/locales/ca-ES/notifications.json +238 -218
  140. package/src/locales/ca-ES/pages.json +1682 -1602
  141. package/src/locales/ca-ES/settings.json +888 -440
  142. package/src/locales/cs-CZ/common.json +281 -280
  143. package/src/locales/cs-CZ/notifications.json +242 -222
  144. package/src/locales/cs-CZ/pages.json +1688 -1608
  145. package/src/locales/cs-CZ/settings.json +889 -441
  146. package/src/locales/da-DK/common.json +281 -280
  147. package/src/locales/da-DK/notifications.json +242 -222
  148. package/src/locales/da-DK/pages.json +1684 -1604
  149. package/src/locales/da-DK/settings.json +889 -441
  150. package/src/locales/de-DE/common.json +281 -280
  151. package/src/locales/de-DE/notifications.json +242 -222
  152. package/src/locales/de-DE/pages.json +1690 -1610
  153. package/src/locales/de-DE/settings.json +889 -441
  154. package/src/locales/el-GR/common.json +281 -280
  155. package/src/locales/el-GR/notifications.json +242 -222
  156. package/src/locales/el-GR/pages.json +1684 -1604
  157. package/src/locales/el-GR/settings.json +889 -441
  158. package/src/locales/en/notifications.json +26 -6
  159. package/src/locales/en/pages.json +94 -12
  160. package/src/locales/en/settings.json +474 -26
  161. package/src/locales/en-US/common.json +281 -280
  162. package/src/locales/en-US/notifications.json +242 -222
  163. package/src/locales/en-US/pages.json +1774 -1694
  164. package/src/locales/en-US/settings.json +898 -450
  165. package/src/locales/es-ES/common.json +281 -280
  166. package/src/locales/es-ES/notifications.json +242 -222
  167. package/src/locales/es-ES/pages.json +1689 -1609
  168. package/src/locales/es-ES/settings.json +889 -441
  169. package/src/locales/fi-FI/common.json +281 -280
  170. package/src/locales/fi-FI/notifications.json +242 -222
  171. package/src/locales/fi-FI/pages.json +1684 -1604
  172. package/src/locales/fi-FI/settings.json +889 -441
  173. package/src/locales/fr-FR/notifications.json +242 -222
  174. package/src/locales/fr-FR/pages.json +1698 -1618
  175. package/src/locales/fr-FR/settings.json +898 -450
  176. package/src/locales/he-IL/common.json +281 -280
  177. package/src/locales/he-IL/notifications.json +238 -218
  178. package/src/locales/he-IL/pages.json +1726 -1646
  179. package/src/locales/he-IL/settings.json +888 -440
  180. package/src/locales/hu-HU/common.json +281 -280
  181. package/src/locales/hu-HU/notifications.json +238 -218
  182. package/src/locales/hu-HU/pages.json +1726 -1646
  183. package/src/locales/hu-HU/settings.json +888 -440
  184. package/src/locales/it-IT/common.json +281 -280
  185. package/src/locales/it-IT/notifications.json +242 -222
  186. package/src/locales/it-IT/pages.json +1684 -1604
  187. package/src/locales/it-IT/settings.json +889 -441
  188. package/src/locales/ja-JP/common.json +281 -280
  189. package/src/locales/ja-JP/notifications.json +242 -222
  190. package/src/locales/ja-JP/pages.json +1684 -1604
  191. package/src/locales/ja-JP/settings.json +889 -441
  192. package/src/locales/ko-KR/common.json +281 -281
  193. package/src/locales/ko-KR/notifications.json +242 -222
  194. package/src/locales/ko-KR/pages.json +1746 -1666
  195. package/src/locales/ko-KR/settings.json +898 -450
  196. package/src/locales/nl-NL/common.json +281 -280
  197. package/src/locales/nl-NL/notifications.json +242 -222
  198. package/src/locales/nl-NL/pages.json +1699 -1619
  199. package/src/locales/nl-NL/settings.json +891 -443
  200. package/src/locales/no-NO/common.json +281 -280
  201. package/src/locales/no-NO/notifications.json +242 -222
  202. package/src/locales/no-NO/pages.json +1684 -1604
  203. package/src/locales/no-NO/settings.json +889 -441
  204. package/src/locales/pl-PL/common.json +281 -280
  205. package/src/locales/pl-PL/notifications.json +242 -222
  206. package/src/locales/pl-PL/pages.json +1684 -1604
  207. package/src/locales/pl-PL/settings.json +889 -441
  208. package/src/locales/pt-BR/common.json +281 -280
  209. package/src/locales/pt-BR/notifications.json +242 -222
  210. package/src/locales/pt-BR/pages.json +1725 -1645
  211. package/src/locales/pt-BR/settings.json +889 -441
  212. package/src/locales/pt-PT/common.json +281 -280
  213. package/src/locales/pt-PT/notifications.json +242 -222
  214. package/src/locales/pt-PT/pages.json +1684 -1604
  215. package/src/locales/pt-PT/settings.json +889 -441
  216. package/src/locales/ro-RO/common.json +281 -280
  217. package/src/locales/ro-RO/notifications.json +242 -222
  218. package/src/locales/ro-RO/pages.json +1684 -1604
  219. package/src/locales/ro-RO/settings.json +889 -441
  220. package/src/locales/ru-RU/common.json +281 -280
  221. package/src/locales/ru-RU/notifications.json +242 -222
  222. package/src/locales/ru-RU/pages.json +1684 -1604
  223. package/src/locales/ru-RU/settings.json +889 -441
  224. package/src/locales/sr-SP/common.json +281 -280
  225. package/src/locales/sr-SP/notifications.json +238 -218
  226. package/src/locales/sr-SP/pages.json +1726 -1646
  227. package/src/locales/sr-SP/settings.json +888 -440
  228. package/src/locales/sv-SE/common.json +281 -280
  229. package/src/locales/sv-SE/notifications.json +242 -222
  230. package/src/locales/sv-SE/pages.json +1684 -1604
  231. package/src/locales/sv-SE/settings.json +889 -441
  232. package/src/locales/tr-TR/common.json +281 -280
  233. package/src/locales/tr-TR/notifications.json +238 -218
  234. package/src/locales/tr-TR/pages.json +1726 -1646
  235. package/src/locales/tr-TR/settings.json +888 -440
  236. package/src/locales/uk-UA/common.json +13 -12
  237. package/src/locales/uk-UA/nav.json +17 -23
  238. package/src/locales/uk-UA/notifications.json +242 -222
  239. package/src/locales/uk-UA/pages.json +121 -41
  240. package/src/locales/uk-UA/settings.json +889 -441
  241. package/src/locales/vi-VN/common.json +281 -280
  242. package/src/locales/vi-VN/notifications.json +238 -218
  243. package/src/locales/vi-VN/pages.json +1726 -1646
  244. package/src/locales/vi-VN/settings.json +888 -440
  245. package/src/locales/zh-CN/common.json +281 -280
  246. package/src/locales/zh-CN/notifications.json +242 -222
  247. package/src/locales/zh-CN/pages.json +1695 -1615
  248. package/src/locales/zh-CN/settings.json +898 -450
  249. package/src/locales/zh-TW/common.json +281 -280
  250. package/src/locales/zh-TW/notifications.json +242 -222
  251. package/src/locales/zh-TW/pages.json +1804 -1724
  252. package/src/locales/zh-TW/settings.json +888 -440
@@ -1,504 +1,952 @@
1
1
  {
2
- "title": "Réglages",
3
- "tabs": {
4
- "general": "Général",
5
- "servers": "Serveurs",
6
- "notifications": "Notifications",
7
- "mobile": "Application mobile",
8
- "tailscale": "Tailscale",
9
- "import": "Importation",
10
- "advanced": "Avancé",
11
- "jobs": "Tâches",
12
- "accessControl": "Contrôle d'accès",
13
- "backup": "Sauvegarde"
2
+ "accessControl": {
3
+ "allowGuestAccess": "Autoriser l'accès aux invités",
4
+ "allowGuestAccessDesc": "",
5
+ "description": "Configurer qui peut accéder à Tracearr",
6
+ "singleOwnerNote": "Remarque : Lorsque l'accès des invités est désactivé, seul le propriétaire du serveur peut se connecter. Tous les autres utilisateurs verront un message \"Accès refusé\".",
7
+ "title": "Contrôle d'accès"
8
+ },
9
+ "account": {
10
+ "createAccount": "Créer un compte",
11
+ "createYourAccount": "Créez votre compte pour démarrer",
12
+ "displayName": "Nom d'affichage",
13
+ "email": "E-mail",
14
+ "password": "Mot de passe",
15
+ "signInToAccount": "Connectez-vous à votre compte",
16
+ "useLocalAccount": "Utiliser un compte local à la place"
17
+ },
18
+ "advanced": {
19
+ "connectionScenarios": "Scénarios de connexion",
20
+ "externalUrl": "URL externe",
21
+ "reverseProxy": "Proxy inversé",
22
+ "title": "Réglages avancés",
23
+ "trustProxy": "En-têtes de confiance du Proxy"
24
+ },
25
+ "backup": {
26
+ "actions": "Actions",
27
+ "backToBackups": "Retour aux sauvegardes",
28
+ "backupHistory": "Historique des sauvegardes",
29
+ "createBackup": "Créer une sauvegarde",
30
+ "creating": "Création de la sauvegarde...",
31
+ "databaseSize": "Taille actuelle de la base de données : {{size}}",
32
+ "date": "Date",
33
+ "dayFri": "Vendredi",
34
+ "dayMon": "Lundi",
35
+ "daySat": "Samedi",
36
+ "daySun": "Dimanche",
37
+ "dayThu": "Jeudi",
38
+ "dayTue": "Mardi",
39
+ "dayWed": "Mercredi",
40
+ "deleteConfirmDescription": "Êtes-vous sûr de vouloir supprimer cette sauvegarde ? Cette action est irréversible.",
41
+ "deleteConfirmTitle": "Supprimer la sauvegarde",
42
+ "description": "Sauvegardez et restaurez vos données Tracearr",
43
+ "download": "",
44
+ "freeSpace": "Espace libre dans le répertoire de sauvegarde : {{size}}",
45
+ "lowDiskSpace": "Espace disque faible — les sauvegardes et restaurations nécessitent au moins deux fois la taille de la base de données en espace libre.",
46
+ "noBackups": "Aucune sauvegarde pour le moment. Créez votre première sauvegarde ci-dessus.",
47
+ "restore": {
48
+ "automations": "Automatisations",
49
+ "cannotRestore": "La restauration nécessite des privilèges de superutilisateur PostgreSQL. Veuillez vous assurer que votre utilisateur de base de données dispose de ces privilèges, puis réessayez.",
50
+ "complete": "Restauration effectuée avec succès. La page s'actualisera sous peu.",
51
+ "confirm": "Démarrer la restauration",
52
+ "confirmLabel": "Je comprends que cela remplacera toutes les données",
53
+ "databaseSize": "Taille de la base de données",
54
+ "failed": "Échec de la restauration",
55
+ "libraryItems": "Éléments de la bibliothèque",
56
+ "pgVersionMismatch": "La sauvegarde a été créée avec PostgreSQL {{backupVersion}}, mais ce serveur utilise PostgreSQL {{serverVersion}}. La restauration d'une sauvegarde issue d'une version plus récente de PostgreSQL n'est pas prise en charge.",
57
+ "selectedBackup": "Sauvegarde sélectionnée",
58
+ "servers": "Serveurs",
59
+ "sessions": "Sessions",
60
+ "tables": "Tableaux",
61
+ "title": "Restaurer la sauvegarde",
62
+ "tsVersionMismatch": "La sauvegarde a été créée avec TimescaleDB {{backupVersion}}, mais ce serveur ne prend en charge que jusqu'à TimescaleDB {{serverVersion}}.",
63
+ "users": "Utilisateurs",
64
+ "warning": "La restauration remplacera toutes les données existantes. Vous devrez vous reconnecter une fois la restauration complétée."
65
+ },
66
+ "restoreAction": "Restaurer",
67
+ "retentionCount": "Garder les dernières :",
68
+ "retentionSuffix": "sauvegardes planifiées",
69
+ "rowActions": "",
70
+ "schedule": "Sauvegardes planifiées",
71
+ "scheduleDaily": "Journalière",
72
+ "scheduleDayOfMonth": "Jour du mois",
73
+ "scheduleDayOfMonthHint": "Pour les mois comportant moins de jours, la sauvegarde est effectuée le dernier jour du mois.",
74
+ "scheduleDayOfWeek": "Jour de la semaine",
75
+ "scheduleDisabled": "Désactivé",
76
+ "scheduleHour": "",
77
+ "scheduleMinute": "",
78
+ "scheduleMonthly": "Mensuelle",
79
+ "scheduleTime": "Heure ({{timezone}})",
80
+ "scheduleType": "Planification",
81
+ "scheduleWeekly": "Hebdomadaire",
82
+ "size": "Taille",
83
+ "title": "Sauvegarde",
84
+ "toast": {
85
+ "backupCreateFailed": "Échec de création de la sauvegarde",
86
+ "backupCreated": "Sauvegarde créée avec succès",
87
+ "backupDeleteFailed": "Échec de suppression de la sauvegarde",
88
+ "backupDeleted": "Sauvegarde supprimée",
89
+ "backupUploadFailed": "Échec du téléversement de la sauvegarde",
90
+ "backupUploaded": "Sauvegarde téléversée avec succès",
91
+ "restoreStartFailed": "Échec du démarrage de la restauration",
92
+ "restoreStarted": "La restauration a démarré",
93
+ "scheduleError": "Échec de l'enregistrement de la planification de la sauvegarde",
94
+ "scheduleSaved": "Planification de la sauvegarde enregistrée"
95
+ },
96
+ "type": "Type",
97
+ "typeManual": "Manuelle",
98
+ "typeScheduled": "Planifiée",
99
+ "typeUploaded": "Téléversé",
100
+ "uploadBackup": "Téléverser une sauvegarde",
101
+ "uploading": "Téléversement...",
102
+ "version": "Version"
103
+ },
104
+ "email": {
105
+ "branding": {
106
+ "accent": "",
107
+ "accentPicker": "",
108
+ "description": "",
109
+ "footerText": "",
110
+ "footerTextHelp": "",
111
+ "logo": {
112
+ "label": "",
113
+ "none": "",
114
+ "tracearr": "",
115
+ "url": ""
116
+ },
117
+ "logoUrl": "",
118
+ "mailto": "",
119
+ "mailtoHelp": "",
120
+ "postalAddress": "",
121
+ "postalAddressHelp": "",
122
+ "save": "",
123
+ "saving": "",
124
+ "title": ""
125
+ },
126
+ "ownerOnly": "",
127
+ "suppressions": {
128
+ "add": "",
129
+ "addConfirm": "",
130
+ "addDescription": "",
131
+ "addTitle": "",
132
+ "address": "",
133
+ "empty": "",
134
+ "emptyDescription": "",
135
+ "globalNote": "",
136
+ "openSource": "",
137
+ "reason": {
138
+ "manual": "",
139
+ "unsubscribed": ""
140
+ },
141
+ "remove": "",
142
+ "removeDescription": "",
143
+ "removeTitle": "",
144
+ "title": ""
145
+ }
14
146
  },
15
147
  "general": {
16
- "title": "Réglages généraux",
17
- "unitSystem": "Système d'unité",
18
- "metric": "Métrique (km, km/h)",
19
- "imperial": "Impérial (mi, mph)",
20
- "timezone": "Fuseau horaire",
21
- "primaryAuth": "Méthode d'authentification principale",
22
- "localAccount": "Compte local",
23
- "plexAccount": "Compte Plex",
24
- "language": "Langue",
25
- "languageDescription": "Choisissez votre langue d'affichage préférée.",
26
- "helpTranslate": "Aidez-nous à traduire Tracearr",
27
- "timeFormat": "Format horaire",
28
- "timeFormatDescription": "Choisissez comment l'heure est affichée.",
29
- "timeFormat12h": "Format 12 heures (1:30 PM)",
30
- "timeFormat24h": "Format 24 heures (13:30)",
31
- "appearance": "Apparence",
32
- "appearanceDesc": "Personnaliser l'apparence de Tracearr",
33
- "theme": "Thème",
34
148
  "accentColor": "Couleur d'accentuation",
35
- "default": "(par défaut)",
36
- "cyanDefault": "* Cyan est la couleur d'accentuation par défaut",
37
- "themeLight": "Lumière",
38
- "themeDark": "Sombre",
39
- "themeSystem": "Système",
149
+ "apiDocs": "Docs API",
150
+ "apiKeyDesc": "Accédez à l'API Tracearr pour des intégrations tierces comme Homarr, Home Assistant, etc.",
151
+ "apiKeyReadAccess": "Votre clé API vous donne un accès en lecture complète à vos données Tracearr.",
152
+ "apiRateLimit": "Limite de requêtes API",
153
+ "apiRateLimitDesc": "Nombre maximal de requêtes API publiques par minute et par clé. Un redémarrage est nécessaire pour que la modification prenne effet.",
154
+ "apiRateLimitSuffix": "/min",
40
155
  "application": "Application",
41
156
  "applicationDesc": "Configurer les paramètres de base de l'application",
42
- "unitSystemDesc": "",
43
- "sessionSync": "Synchronisation de session",
44
- "sessionSyncDesc": "",
45
- "syncInterval": "Intervalle de synchronisation",
46
- "syncIntervalDesc": "",
47
- "syncIntervalSuffix": "s",
48
- "plexSseNote": "Plex utilise Server-Sent Events (SSE) pour des mises à jour quasi instantanées — aucun sondage n'est nécessaire.",
49
- "jellyfinPollingNote": "Les sondages de Jellyfin/Emby sont effectués à l'intervalle ci-dessus.",
157
+ "copyToClipboard": "Copier dans le presse-papiers",
158
+ "cyanDefault": "* Cyan est la couleur d'accentuation par défaut",
159
+ "default": "(par défaut)",
160
+ "detect": "Détecter",
50
161
  "enhancedGeoIP": "Recherche GeoIP améliorée",
51
162
  "enhancedGeoIPDesc": "Utiliser le service GeoIP de Plex pour des données de localisation plus précises. Lorsqu'il est activé, les adresses IP sont envoyées à plex. v pour la recherche. La base de données locale MaxMind est utilisée comme repli.",
52
163
  "externalAccess": "Accès externe",
53
164
  "externalAccessDesc": "Configurer comment les appareils externes (comme les applications mobiles) se connectent à votre serveur",
54
165
  "externalUrl": "URL externe",
55
- "externalUrlPlaceholder": "https://tracearr.exemple.com",
56
166
  "externalUrlDesc": "L'URL que les appareils externes doivent utiliser pour atteindre ce serveur. Utilisé pour les codes QR et l'appairage de l'application mobile.",
57
- "detect": "Détecter",
58
- "localhostWarning": "Les URL de l'hôte local ne fonctionneront pas pour les périphériques externes. Utilisez votre IP LAN ou un nom de domaine.",
167
+ "externalUrlPlaceholder": "https://tracearr.exemple.com",
168
+ "generateApiKeyPrompt": "Générer une clé API pour activer les intégrations externes.",
169
+ "generateKey": "Générer une clé",
170
+ "helpTranslate": "Aidez-nous à traduire Tracearr",
171
+ "imageCache": {
172
+ "ceiling": "Plafond",
173
+ "description": "Une copie de chaque affiche, restée sur le disque jusqu'à ce que l'affiche change. Rien ici n'est expulsé pour faire de la place ; lorsque le disque est faible, le cache cesse de croître et le dit.",
174
+ "diskLimited": "Disque limité depuis {{since}}: environ {{shortfall}} d'affiches ne sont pas mis en cache.",
175
+ "files": "Fichiers",
176
+ "floor": "Garde libre",
177
+ "free": "Disque libre",
178
+ "freeOf": "sur {{total}}",
179
+ "lastSweep": "Dernier balayage",
180
+ "loadError": "Impossible de charger le statut du cache.",
181
+ "need": "Besoin estimé",
182
+ "needHint": "Affiches {{count}} × 18 K",
183
+ "never": "pas encore",
184
+ "size": "Sur le disque",
185
+ "title": "Cache des affiches"
186
+ },
187
+ "imperial": "Impérial (mi, mph)",
59
188
  "iosHttpWarning": "iOS nécessite HTTPS pour les connexions externes. Configurez un proxy inverse avec SSL.",
60
- "apiKeyDesc": "Accédez à l'API Tracearr pour des intégrations tierces comme Homarr, Home Assistant, etc.",
61
- "apiDocs": "Docs API",
189
+ "jellyfinPollingNote": "Les sondages de Jellyfin/Emby sont effectués à l'intervalle ci-dessus.",
190
+ "language": "Langue",
191
+ "languageDescription": "Choisissez votre langue d'affichage préférée.",
192
+ "localAccount": "Compte local",
193
+ "localhostWarning": "Les URL de l'hôte local ne fonctionneront pas pour les périphériques externes. Utilisez votre IP LAN ou un nom de domaine.",
194
+ "metric": "Métrique (km, km/h)",
62
195
  "noApiKeyGenerated": "Aucune clé API générée",
63
- "copyToClipboard": "Copier dans le presse-papiers",
64
- "apiKeyReadAccess": "Votre clé API vous donne un accès en lecture complète à vos données Tracearr.",
65
- "generateApiKeyPrompt": "Générer une clé API pour activer les intégrations externes.",
196
+ "plexAccount": "Compte Plex",
197
+ "plexSseNote": "Plex utilise Server-Sent Events (SSE) pour des mises à jour quasi instantanées — aucun sondage n'est nécessaire.",
198
+ "primaryAuth": "Méthode d'authentification principale",
199
+ "publicApiSettings": "API publique",
200
+ "publicApiSettingsDesc": "Configurer les seuils de achèvement et les limites de requêtes pour l'API publique",
66
201
  "regenerate": "Régénérer",
67
- "generateKey": "Générer une clé",
68
202
  "regenerateApiKey": "Régénérer la clé API ?",
69
203
  "regenerateApiKeyDesc": "Ceci invalidera votre clé API actuelle. Toute intégration utilisant l'ancienne clé cessera de fonctionner.",
70
- "publicApiSettings": "API publique",
71
- "publicApiSettingsDesc": "Configurer les seuils de achèvement et les limites de requêtes pour l'API publique",
72
- "watchedThresholdMovie": "Seuil de visionnement du film",
73
- "watchedThresholdMovieDesc": "",
74
- "watchedThresholdTv": "Seuil d'épisode regardé",
75
- "watchedThresholdTvDesc": "",
76
- "watchedThresholdMusic": "Seuil de suivi des visionnages",
77
- "watchedThresholdMusicDesc": "",
78
- "watchedThresholdSuffix": "%",
79
- "apiRateLimit": "Limite de requêtes API",
80
- "apiRateLimitDesc": "Nombre maximal de requêtes API publiques par minute et par clé. Un redémarrage est nécessaire pour que la modification prenne effet.",
81
- "apiRateLimitSuffix": "/min",
204
+ "sessionSync": "Synchronisation de session",
205
+ "sessionSyncDesc": "",
206
+ "syncInterval": "Intervalle de synchronisation",
207
+ "syncIntervalDesc": "",
208
+ "syncIntervalSuffix": "s",
209
+ "theme": "Thème",
210
+ "themeDark": "Sombre",
211
+ "themeLight": "Lumière",
212
+ "themeSystem": "Système",
213
+ "timeFormat": "Format horaire",
214
+ "timeFormat12h": "Format 12 heures (1:30 PM)",
215
+ "timeFormat24h": "Format 24 heures (13:30)",
216
+ "timeFormatDescription": "Choisissez comment l'heure est affichée.",
217
+ "timezone": "Fuseau horaire",
218
+ "title": "Réglages généraux",
219
+ "unitSystem": "Système d'unité",
220
+ "unitSystemDesc": "",
82
221
  "updateChecks": {
83
- "title": "Vérifications des mises à jour",
84
222
  "description": "Tracearr recherche des nouvelles versions toutes les six heures. Les notifications proviennent de n'importe quelle automation qui écoute les déclencheurs de mise à jour.",
85
223
  "plugin": "Plugin en temps réel",
86
224
  "pluginDesc": "Vérifiez les nouvelles versions du plugin Tracearr de vos serveurs Jellyfin et Emby pour les événements de streaming.",
87
225
  "server": "Serveur multimédia",
88
- "serverDesc": "Comparez ce que chaque serveur Plex, Jellyfin et Emby exécute avec la dernière version publiée par ses créateurs."
226
+ "serverDesc": "Comparez ce que chaque serveur Plex, Jellyfin et Emby exécute avec la dernière version publiée par ses créateurs.",
227
+ "title": "Vérifications des mises à jour"
89
228
  },
90
- "imageCache": {
91
- "title": "Cache des affiches",
92
- "description": "Une copie de chaque affiche, restée sur le disque jusqu'à ce que l'affiche change. Rien ici n'est expulsé pour faire de la place ; lorsque le disque est faible, le cache cesse de croître et le dit.",
93
- "size": "Sur le disque",
94
- "files": "Fichiers",
95
- "need": "Besoin estimé",
96
- "needHint": "Affiches {{count}} × 18 K",
97
- "free": "Disque libre",
98
- "freeOf": "sur {{total}}",
99
- "floor": "Garde libre",
100
- "ceiling": "Plafond",
101
- "lastSweep": "Dernier balayage",
102
- "never": "pas encore",
103
- "diskLimited": "Disque limité depuis {{since}}: environ {{shortfall}} d'affiches ne sont pas mis en cache.",
104
- "loadError": "Impossible de charger le statut du cache."
105
- }
229
+ "watchedThresholdMovie": "Seuil de visionnement du film",
230
+ "watchedThresholdMovieDesc": "",
231
+ "watchedThresholdMusic": "Seuil de suivi des visionnages",
232
+ "watchedThresholdMusicDesc": "",
233
+ "watchedThresholdSuffix": "%",
234
+ "watchedThresholdTv": "Seuil d'épisode regardé",
235
+ "watchedThresholdTvDesc": ""
106
236
  },
107
- "servers": {
108
- "title": "Serveurs connectés",
109
- "addServer": "Ajouter un serveur",
110
- "serverName": "Nom du serveur",
111
- "serverUrl": "URL du serveur",
112
- "syncInterval": "Intervalle de synchronisation",
113
- "testConnection": "Tester la connexion",
114
- "connectionSuccess": "Connexion réussie",
115
- "connectionFailed": "Échec de la connexion",
116
- "noServersConnected": "Aucun serveur connecté",
117
- "noServersConnectedHint": "Cliquez sur \"Ajouter un serveur\" pour connecter un serveur Jellyfin ou Emby",
118
- "serverType": "Type de serveur",
119
- "loadingAccounts": "Chargement des comptes Plex liés...",
120
- "noPlexAccountsLinked": "Aucun compte Plex lié pour le moment",
121
- "noPlexAccountsLinkedHint": "Lier un compte Plex ci-dessus, puis revenir pour ajouter un serveur.",
122
- "selectPlexAccount": "Sélectionnez le compte Plex",
123
- "chooseAccount": "Choisissez un compte...",
124
- "selectAccountHelp": "Sélectionnez le compte Plex dont vous voulez découvrir les serveurs.",
125
- "allServersConnected": "Tous les serveurs connectés",
126
- "allServersConnectedDesc": "Tous les serveurs de ce compte sont déjà connectés.",
127
- "serverUrlPlaceholder": "http://192.168.1.100:8096",
128
- "serverUrlHelp": "URL directe vers votre serveur Jellyfin ou Emby. Utilisez IP:port pour une fiabilité optimale.",
129
- "serverNamePlaceholder": "Mon serveur multimédia",
130
- "apiKeyPlaceholder": "Entrez votre clé API",
131
- "apiKeyHelp": "Trouvé dans le tableau de bord de votre serveur multimédia sous Clés API ou Paramètres avancés.",
132
- "connecting": "Connexion en cours...",
133
- "connectServer": "Connecter le serveur",
134
- "removeServer": "Supprimer le serveur",
135
- "removeServerConfirm": "Êtes-vous sûr de vouloir supprimer ce serveur ? Toutes les données de session associées seront conservées, mais vous ne serez pas en mesure de surveiller les nouvelles sessions de ce serveur.",
136
- "editServer": "Modifier le serveur",
137
- "editServerDesc": "Mettre à jour le nom du serveur ou l'URL de connexion.",
138
- "serverColor": "Couleur du serveur",
139
- "serverColorDesc": "Utilisé pour l'attribution visuelle dans la vue multi-serveur",
140
- "updating": "Mise à jour en cours...",
141
- "allFieldsRequired": "Tous les champs sont obligatoires",
142
- "addServerDialogDescPlex": "Sélectionnez un serveur Plex à partir de votre compte lié.",
143
- "addServerDialogDescOther": "Connectez un serveur Jellyfin ou Emby.",
144
- "description": "Gérez vos serveurs Plex, Jellyfin et Emby connectés",
145
- "discoveringServers": "Recherche des serveurs Plex disponibles...",
237
+ "import": {
238
+ "apiKeyHelp": "Trouvé dans les paramètres Tautulli → Interface Web → Clé d'API.",
239
+ "apiKeyPlaceholder": "Votre clé API Tautulli",
240
+ "checkPlugin": "Vérifier le Plugin",
241
+ "checkingPlugin": "Vérification...",
242
+ "connectToTautulli": "Se connecter à Tautulli",
243
+ "connectedFound": "Connecté ! Utilisateurs {{users}} trouvés et enregistrements de l'historique {{records}}.",
244
+ "duplicates": "Les doublons {{count}} ont été ignorés",
245
+ "enrichMetadata": "Enrichir avec les métadonnées du média (recommandé)",
246
+ "enrichMetadataHelp": "Récupère des métadonnées supplémentaires depuis votre serveur multimédia pour les sessions importées.",
247
+ "enriched": "Enrichi",
248
+ "errors": "Erreurs",
249
+ "exportBackupHelp": "Dans Jellystat, allez dans Paramètres → Sauvegarde → Sauvegarde d'activités pour exporter vos données.",
250
+ "exportBackupHint": "Exporter une sauvegarde d'activité depuis Jellystat",
251
+ "howItWorks": "Comment fonctionne l'import",
252
+ "howItWorksDesc": "Tracearr importera toutes les données historiques de surveillance de votre source. Cela peut prendre un certain temps en fonction de la taille de votre bibliothèque.",
253
+ "importComplete": "Importation terminée",
254
+ "importFailed": "Échec de l'importation",
255
+ "importFullRange": "Importer l'historique complet",
256
+ "importFullRangeHelp": "Par défaut, seul l'historique plus ancien que la première session tracée de Tracearr pour ce serveur est importé, de sorte que les sessions que Tracearr déjà enregistrées ne sont jamais dupliquées. Activez cette option pour importer l'historique entier du plugin, indépendamment du chevauchement, si votre historique Tracearr a des lacunes. Les doublons exacts sont toujours ignorés.",
257
+ "importHistory": "Historique d'importation",
258
+ "importInProgressGeneric": "Importation en cours...",
259
+ "importInProgressPercent": "Importation en cours ({{percent}}% terminé)...",
260
+ "importOptions": "Options d'importation",
261
+ "importProgress": "Progression de l'import",
262
+ "imported": "Importé",
263
+ "importing": "Importation en cours...",
264
+ "includeStreamDetails": "Inclure les données détaillées du flux (codecs, débit, résolution)",
265
+ "includeStreamDetailsHelp": "Importe des informations de flux supplémentaires. Peut augmenter considérablement le temps d'importation.",
266
+ "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
267
+ "jellystat": "Importer depuis Jellystat",
268
+ "noServers": "Aucun serveur connecté",
269
+ "noServersHint": "Vous avez besoin d'au moins un serveur connecté pour importer des données.",
270
+ "overlapSkipped": "{{count}} ont été ignorés car ils se chevauchaient",
271
+ "overwriteFriendlyNames": "Remplacer les noms conviviaux existants par des noms Tautulli",
272
+ "overwriteFriendlyNamesHelp": "Les noms d'identité existants dans Tracearr seront remplacés par les noms amicaux de Tautulli.",
273
+ "page": "Page",
274
+ "playbackReporting": "Plugin de rapport de lecture",
275
+ "playbackReportingDesc": "Importer l'historique directement à partir du plugin de rapport de lecture installé sur votre serveur Jellyfin ou Emby. Aucun export de fichier nécessaire.",
276
+ "pleaseEnterDetails": "Veuillez entrer l'URL et la clé API de Tautulli",
277
+ "pleaseSelectJsonFile": "Veuillez sélectionner un fichier JSON",
278
+ "plex": "Plex (Tautulli)",
279
+ "pluginFound": "Plugin trouvé: enregistrements {{records}} de {{oldestDate}} à {{newestDate}}",
280
+ "pluginNotInstalled": "Le plugin de rapport de lecture n'est pas installé sur ce serveur, ou Tracearr ne peut pas l'atteindre. Installez-le à partir du catalogue de plugins du serveur pour commencer à enregistrer l'historique, ou utilisez l'importation de Jellystat ci-dessous.",
281
+ "processed": "Traité",
282
+ "recordsMayBeSkipped": "Les enregistrements peuvent être ignorés si :",
283
+ "selectJellyfinServer": "Sélectionnez un serveur Jellyfin ou Emby",
284
+ "selectPlexServer": "Sélectionnez un serveur Plex",
285
+ "selectTargetServer": "Sélectionnez le serveur cible",
286
+ "serverTimezone": "Fuseau horaire du serveur",
287
+ "serverTimezoneHelp": "Doit correspondre au fuseau horaire configuré sur l'hôte de votre serveur multimédia, et non au fuseau horaire de votre navigateur. Les horodatages des rapports de lecture sont stockés à l'heure du serveur local.",
288
+ "skipDuplicate": "Dupliquer la session — La session a déjà été importée précédemment.",
289
+ "skipDuplicatePlugin": "Enregistrement en double - déjà importé directement ou arrivé plus tôt via une importation Jellystat des mêmes données de plugin.",
290
+ "skipInProgress": "Session en cours — Les sessions actives/incomplètes sans identifiant de référence sont ignorées.",
291
+ "skipOverlap": "Recouvrement de l'enregistrement - l'horodatage tombe dans la période que Tracearr suit déjà pour ce serveur. Activez l'importation complète pour l'inclure.",
292
+ "skipSyncHint": "Si plusieurs enregistrements sont ignorés, assurez-vous que vous avez récemment synchronisé votre serveur dans Paramètres → Serveurs.",
293
+ "skipUserNotFoundJellyfin": "Utilisateur introuvable — L'utilisateur Jellyfin/Emby n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
294
+ "skipUserNotFoundPlex": "Utilisateur introuvable — L'utilisateur Plex n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
295
+ "skipped": "Ignoré",
296
+ "startImport": "Commencer l'importation",
297
+ "startingImport": "Démarrage de l'importation...",
298
+ "step1": "1",
299
+ "step2": "2",
300
+ "targetServer": "Serveur cible",
301
+ "tautulli": "Importer depuis Tautulli",
302
+ "tautulliUrl": "URL Tautulli",
303
+ "tautulliUrlHelp": "L'URL de votre instance Tautulli.",
304
+ "tautulliUrlPlaceholder": "http://localhost:8001",
305
+ "testing": "Test en cours...",
306
+ "testingConnection": "Test de la connexion...",
307
+ "title": "Importer des données",
308
+ "updateExistingRecords": "Mettre à jour les enregistrements existants avec les détails du flux",
309
+ "updateExistingRecordsHelp": "Les enregistrements précédemment importés seront mis à jour avec les données de qualité du flux.",
310
+ "uploadJellystatBackup": "Télécharger la sauvegarde Jellystat",
311
+ "uploadingBackup": "Téléchargement du fichier de sauvegarde..."
312
+ },
313
+ "ipWarning": {
314
+ "acknowledge": "Compris",
315
+ "message": "Tous les utilisateurs semblent utiliser la même adresse IP ou des IP locales. Cela peut affecter la logique des règles basées sur l'emplacement ou l'adresse IP."
316
+ },
317
+ "jobs": {
318
+ "backfill": "Remplissage",
319
+ "cleanup": "Nettoyage",
320
+ "delayed": "différé",
321
+ "description": "",
322
+ "errors": "erreurs",
323
+ "jobHistory": "Historique des tâches",
324
+ "jobHistoryDesc": "Exécution récente d'une tâche de maintenance",
325
+ "lastJobCompleted": "Dernière tâche terminée avec succès",
326
+ "lastJobFailed": "La dernière tâche a échoué",
327
+ "mayTakeAWhile": "Cela peut prendre un certain temps",
328
+ "mayTakeAWhileDesc": "Cette tâche peut prendre plusieurs minutes selon la taille de votre bibliothèque.",
329
+ "normalization": "Normalisation",
330
+ "processed": "traité",
331
+ "queued": "mis en file d'attente",
332
+ "runConfirm": "Exécuter {{name}}?",
333
+ "runJob": "Exécuter le Job",
334
+ "running": "en cours d'exécution",
335
+ "runningState": "En cours d'exécution",
336
+ "startJob": "Commencer la tâche",
337
+ "title": "Tâches d'entretien",
338
+ "unchanged": "inchangé",
339
+ "updated": "Mis à jour",
340
+ "waiting": "En attente"
341
+ },
342
+ "mobile": {
343
+ "addDevice": "Ajouter un appareil",
344
+ "connectedOn": "",
345
+ "copyToken": "Copier le jeton",
346
+ "deviceName": "Nom de l'appareil",
347
+ "deviceNamePlaceholder": "par exemple iPhone 15",
348
+ "devicesConnected": "{{current}} des appareils {{max}} connectés",
349
+ "disable": "Désactiver",
350
+ "disableMobileAccess": "Désactiver l'accès mobile",
351
+ "disableMobileAccessConfirm": "Ceci va déconnecter tous les appareils mobiles et révoquer toutes les sessions. Vous pourrez réactiver l'accès mobile plus tard.",
352
+ "done": "Fait",
353
+ "downloadOnAppStore": "Télécharger sur l'App Store",
354
+ "enableMobileAccess": "Activer l'accès mobile",
355
+ "enabling": "Activation...",
356
+ "expiresIn": "Expire dans {{time}}",
357
+ "externalUrlBanner": "Utiliser un proxy inversé ou accéder à distance ? Définissez votre",
358
+ "externalUrlBannerLink": "URL externe",
359
+ "externalUrlBannerSuffix": "pour que l'application mobile puisse se connecter à votre serveur.",
360
+ "externalUrlRequired": "Une URL externe doit être configurée dans les paramètres généraux pour que l'appairage mobile fonctionne.",
361
+ "failedToGenerateToken": "Impossible de générer le jeton",
362
+ "generateToken": "Générer un jeton d'appairage",
363
+ "getOnGooglePlay": "Télécharger sur Google Play",
364
+ "lastSeen": "",
365
+ "mobileAccessDisabled": "Accès mobile désactivé",
366
+ "mobileAccessDisabledDesc": "Activez l'accès mobile pour permettre à l'application mobile Tracearr de se connecter à votre serveur.",
367
+ "noDevices": "Aucun appareil connecté",
368
+ "noDevicesDesc": "",
369
+ "oneTimePairToken": "Jeton de Paire à usage unique",
370
+ "pairDevice": "Associer un appareil",
371
+ "pairNewDevice": "Associer un nouvel appareil",
372
+ "pairNewDeviceDesc": "Scannez le code QR avec l'application mobile Tracearr ou saisissez le jeton manuellement.",
373
+ "pendingTokens": "{{count}} token en attente",
374
+ "removeDevice": "Supprimer l'appareil",
375
+ "removeDeviceConfirm": "Êtes-vous sûr de vouloir supprimer {{deviceName}}? Cet appareil devra être relié à nouveau pour se reconnecter.",
376
+ "renameDevice": "Renommer l'appareil",
377
+ "renameDeviceDesc": "Entrez un nom pour identifier cet appareil dans la liste.",
378
+ "revokeAll": "Révoquer toutes les sessions",
379
+ "revokeAllConfirm": "Cela déconnectera tous les appareils mobiles. Ils devront s'appairer à nouveau pour se reconnecter.",
380
+ "revokeAllSessions": "Révoquer tout",
381
+ "scanQrCode": "Scanner le code QR",
382
+ "title": "Application mobile",
383
+ "tokenExpires": "Le jeton d'appairage expire dans {{time}}",
384
+ "tokenExpiryNote": "Ce jeton expire dans 5 minutes et ne peut être utilisé qu'une seule fois."
385
+ },
386
+ "nav": {
387
+ "descriptions": {
388
+ "api": "",
389
+ "appearance": "",
390
+ "backup": "",
391
+ "behavior": "",
392
+ "connections": "",
393
+ "destinations": "",
394
+ "email": "",
395
+ "guest": "",
396
+ "import": "",
397
+ "jobs": "",
398
+ "locale": "",
399
+ "mobile": "",
400
+ "newsletters": "",
401
+ "plexAccounts": "",
402
+ "posters": "",
403
+ "remote": ""
404
+ },
405
+ "groups": {
406
+ "access": "",
407
+ "data": "",
408
+ "general": "",
409
+ "notifications": "",
410
+ "servers": ""
411
+ },
412
+ "itemLabel": "",
413
+ "label": "",
414
+ "sections": {
415
+ "api": "",
416
+ "appearance": "",
417
+ "backup": "",
418
+ "behavior": "",
419
+ "connections": "",
420
+ "destinations": "",
421
+ "email": "",
422
+ "guest": "",
423
+ "import": "",
424
+ "jobs": "",
425
+ "locale": "",
426
+ "mobile": "",
427
+ "newsletters": "",
428
+ "plexAccounts": "",
429
+ "posters": "",
430
+ "remote": ""
431
+ },
432
+ "selectLabel": ""
433
+ },
434
+ "newsletters": {
435
+ "addEmailDestination": "",
436
+ "copyOf": "",
437
+ "counts": {
438
+ "albums_one": "",
439
+ "albums_other": "",
440
+ "movies_one": "",
441
+ "movies_other": "",
442
+ "shows_one": "",
443
+ "shows_other": "",
444
+ "watched_one": "",
445
+ "watched_other": ""
446
+ },
447
+ "deleteDescription": "",
448
+ "deleteTitle": "",
449
+ "duplicate": "",
450
+ "editor": {
451
+ "actions": {
452
+ "more": "",
453
+ "preview": "",
454
+ "send": "",
455
+ "sendHint": "",
456
+ "test": "",
457
+ "testHint": ""
458
+ },
459
+ "allLibraries": "",
460
+ "allServers": "",
461
+ "basics": "",
462
+ "clear": "",
463
+ "content": "",
464
+ "cron": "",
465
+ "cronHint": "",
466
+ "dayOfMonth": "",
467
+ "dayOfMonthHelp": "",
468
+ "dayOfWeek": "",
469
+ "days": "",
470
+ "delivery": {
471
+ "destination": "",
472
+ "destinationHelp": "",
473
+ "hostedNeedsUrl": "",
474
+ "imageMode": "",
475
+ "modeHelp": {
476
+ "hosted": "",
477
+ "inline": "",
478
+ "none": ""
479
+ },
480
+ "modePreviewHint": "",
481
+ "modes": {
482
+ "hosted": "",
483
+ "inline": "",
484
+ "none": ""
485
+ },
486
+ "noDestination": "",
487
+ "pickDestination": "",
488
+ "skipWhenEmpty": "",
489
+ "skipWhenEmptyHelp": "",
490
+ "title": ""
491
+ },
492
+ "dstNote": "",
493
+ "enabledHelp": "",
494
+ "fixFirst": "",
495
+ "headerSummary": "",
496
+ "historyNeedsSave": "",
497
+ "intro": "",
498
+ "introPlaceholder": "",
499
+ "kinds": {
500
+ "cron": "",
501
+ "daily": "",
502
+ "monthly": "",
503
+ "weekly": ""
504
+ },
505
+ "libraries": "",
506
+ "librariesHelp": "",
507
+ "librariesSelected": "",
508
+ "links": {
509
+ "tracearr": "",
510
+ "tracearrNote": ""
511
+ },
512
+ "message": "",
513
+ "name": "",
514
+ "nameHelp": "",
515
+ "newTitle": "",
516
+ "nextRun": "",
517
+ "nextRunPending": "",
518
+ "noLibraries": "",
519
+ "noServers": "",
520
+ "notFound": "",
521
+ "outro": "",
522
+ "outroPlaceholder": "",
523
+ "placeholders": {
524
+ "end_date": "",
525
+ "item_count": "",
526
+ "server_name": "",
527
+ "start_date": ""
528
+ },
529
+ "preview": {
530
+ "countsListed": {
531
+ "albums": "",
532
+ "movies": "",
533
+ "shows": ""
534
+ },
535
+ "draft": "",
536
+ "images": "",
537
+ "imagesBlocked": "",
538
+ "imagesBlockedNote": "",
539
+ "imagesOn": "",
540
+ "linksNote": "",
541
+ "recipients": "",
542
+ "subjectLabel": "",
543
+ "title": "",
544
+ "variantTab": "",
545
+ "variants": "",
546
+ "width": "",
547
+ "widths": {
548
+ "desktop": "",
549
+ "phone": ""
550
+ },
551
+ "window": "",
552
+ "windowSince": ""
553
+ },
554
+ "previewVariant_one": "",
555
+ "previewVariant_other": "",
556
+ "readiness": {
557
+ "destination": "",
558
+ "destinationError": "",
559
+ "destinationFail": "",
560
+ "destinationUnknown": "",
561
+ "dns": "",
562
+ "dnsLink": "",
563
+ "emptyVariant": "",
564
+ "externalUrl": "",
565
+ "externalUrlFail": "",
566
+ "externalUrlNotHttps": "",
567
+ "fixDestination": "",
568
+ "fixExternalUrl": "",
569
+ "fixRecipients": "",
570
+ "fromDomain": "",
571
+ "fromDomainFail": "",
572
+ "fromDomainUnknown": "",
573
+ "intro": "",
574
+ "noPublicUrl": "",
575
+ "privatePublicUrl": "",
576
+ "recipientsFail": "",
577
+ "recipientsLoadFailed": "",
578
+ "recipientsUnknown": "",
579
+ "recipients_one": "",
580
+ "recipients_other": "",
581
+ "serverSettingsLink": "",
582
+ "staleScope": "",
583
+ "title": "",
584
+ "variantsLoadFailed": ""
585
+ },
586
+ "recipients": {
587
+ "account": "",
588
+ "addAddress": "",
589
+ "addressLabel": "",
590
+ "badAddress": "",
591
+ "contactEmailFor": "",
592
+ "emptyDescription": "",
593
+ "emptyTitle": "",
594
+ "exclude": "",
595
+ "excludeAction": "",
596
+ "excludedAfterSave": "",
597
+ "excludedCount": "",
598
+ "excludedHelp": "",
599
+ "extraAddress": "",
600
+ "extraAddresses": "",
601
+ "extraAddressesHelp": "",
602
+ "groupsNote": "",
603
+ "include": "",
604
+ "includeAction": "",
605
+ "includedAfterSave": "",
606
+ "loadFailed": "",
607
+ "members": "",
608
+ "membersHelp": "",
609
+ "membersOff": "",
610
+ "membersOffSuppressed": "",
611
+ "nameLabel": "",
612
+ "namePlaceholder": "",
613
+ "noAddress": "",
614
+ "noAddressHelp": "",
615
+ "openUserPage": "",
616
+ "ownerNote": "",
617
+ "reasons": {
618
+ "banned": "",
619
+ "pending": ""
620
+ },
621
+ "removeAddress": "",
622
+ "saveEmail": "",
623
+ "saveFirst": "",
624
+ "saveFirstHelp": "",
625
+ "staleScope": "",
626
+ "suppressed": "",
627
+ "suppressedHeading": "",
628
+ "suppressedHelp": "",
629
+ "title": "",
630
+ "unknownMember": "",
631
+ "willReceive": ""
632
+ },
633
+ "removeLibrary": "",
634
+ "save": "",
635
+ "saving": "",
636
+ "schedule": "",
637
+ "scheduleKind": "",
638
+ "searchLibraries": "",
639
+ "searchServers": "",
640
+ "sections": {
641
+ "description": "",
642
+ "labels": {
643
+ "mostWatched": "",
644
+ "movies": "",
645
+ "music": "",
646
+ "seasons": "",
647
+ "shows": ""
648
+ },
649
+ "legend": "",
650
+ "mostWatched": "",
651
+ "mostWatchedHelp": "",
652
+ "movies": "",
653
+ "music": "",
654
+ "musicHelp": "",
655
+ "shows": "",
656
+ "the": "",
657
+ "units": {
658
+ "albums": "",
659
+ "mostPlayed": "",
660
+ "movies": "",
661
+ "seasonsEach": "",
662
+ "shows": ""
663
+ },
664
+ "upTo": ""
665
+ },
666
+ "send": {
667
+ "confirm": "",
668
+ "nobody": "",
669
+ "previewing": "",
670
+ "sending": "",
671
+ "summary": "",
672
+ "title": "",
673
+ "trimmed_one": "",
674
+ "trimmed_other": ""
675
+ },
676
+ "sendNeedsSave": "",
677
+ "senderName": "",
678
+ "senderNameHelp": "",
679
+ "senderNameRequiredMulti": "",
680
+ "servers": "",
681
+ "serversHelp": "",
682
+ "serversSelected": "",
683
+ "subject": "",
684
+ "subjectHelp": "",
685
+ "tabs": {
686
+ "edit": "",
687
+ "history": ""
688
+ },
689
+ "test": {
690
+ "address": "",
691
+ "description": "",
692
+ "send": "",
693
+ "title": "",
694
+ "variant": ""
695
+ },
696
+ "time": "",
697
+ "timezone": "",
698
+ "timezoneHelp": "",
699
+ "turnOnNow": "",
700
+ "unknownLibrary": "",
701
+ "unsaved": "",
702
+ "variantHeading": "",
703
+ "variantsNote": "",
704
+ "windowHelp": {
705
+ "fixed": "",
706
+ "since_last_send": ""
707
+ },
708
+ "windowKind": "",
709
+ "windowMax": "",
710
+ "windowSentence": {
711
+ "fallback": "",
712
+ "fallbackLabel": "",
713
+ "fixed": "",
714
+ "fixedAfter": "",
715
+ "fixedLabel": ""
716
+ },
717
+ "windows": {
718
+ "fixed": "",
719
+ "since_last_send": ""
720
+ }
721
+ },
722
+ "empty": "",
723
+ "emptyDescription": "",
724
+ "enabled": "",
725
+ "history": {
726
+ "attempts": "",
727
+ "empty": "",
728
+ "emptyDescription": "",
729
+ "finished": "",
730
+ "loadFailed": "",
731
+ "open": "",
732
+ "openSnapshot": "",
733
+ "openVariantSnapshot": "",
734
+ "page": "",
735
+ "pruned": "",
736
+ "recipients": "",
737
+ "recipientsEmpty": "",
738
+ "retryFailed": "",
739
+ "sendTitle": "",
740
+ "snapshotTitle": "",
741
+ "status": {
742
+ "failed": "",
743
+ "queued": "",
744
+ "sent": "",
745
+ "suppressed": "",
746
+ "unknown": ""
747
+ },
748
+ "trigger": {
749
+ "manual": "",
750
+ "schedule": "",
751
+ "test": ""
752
+ },
753
+ "unknownHelp": "",
754
+ "variant": "",
755
+ "variantEmpty": "",
756
+ "window": ""
757
+ },
758
+ "lastSend": "",
759
+ "neverSent": "",
760
+ "new": "",
761
+ "nextRun": "",
762
+ "noDestinationDescription": "",
763
+ "noDestinationHint": "",
764
+ "noDestinationTitle": "",
765
+ "noNextRun": "",
766
+ "outcome": {
767
+ "failed": "",
768
+ "partial": "",
769
+ "rendering": "",
770
+ "sending": "",
771
+ "sent": "",
772
+ "skipped_empty": ""
773
+ },
774
+ "ownerOnly": "",
775
+ "richText": {
776
+ "bold": "",
777
+ "bulletList": "",
778
+ "counter": "",
779
+ "italic": "",
780
+ "link": "",
781
+ "linkApply": "",
782
+ "linkHref": ""
783
+ },
784
+ "rowActions": "",
785
+ "schedule": {
786
+ "cron": "",
787
+ "daily": "",
788
+ "inZone": "",
789
+ "monthly": "",
790
+ "weekly": ""
791
+ },
792
+ "sendNow": ""
793
+ },
794
+ "plex": {
795
+ "chooseServer": "Choisir le serveur Plex à surveiller",
796
+ "selectServer": "Sélectionner un serveur",
797
+ "signInWithPlex": "Se connecter avec Plex",
798
+ "signUpWithPlex": "S'inscrire avec Plex"
799
+ },
800
+ "serverHealth": {
801
+ "multipleUnreachable": "{{count}} serveurs injoignables : {{serverNames}}",
802
+ "unreachable": "{{serverName}} est inaccessible"
803
+ },
804
+ "servers": {
805
+ "addServer": "Ajouter un serveur",
806
+ "addServerDialogDescOther": "Connectez un serveur Jellyfin ou Emby.",
807
+ "addServerDialogDescPlex": "Sélectionnez un serveur Plex à partir de votre compte lié.",
808
+ "added": "Ajouté {{date}}",
809
+ "allFieldsRequired": "Tous les champs sont obligatoires",
810
+ "allServersConnected": "Tous les serveurs connectés",
811
+ "allServersConnectedDesc": "Tous les serveurs de ce compte sont déjà connectés.",
812
+ "apiKeyHelp": "Trouvé dans le tableau de bord de votre serveur multimédia sous Clés API ou Paramètres avancés.",
813
+ "apiKeyHelpEmby": "Trouvez ceci dans Emby Server → Clés API",
814
+ "apiKeyHelpJellyfin": "Trouvez ceci dans le tableau de bord Jellyfin → Clés API",
815
+ "apiKeyPlaceholder": "Entrez votre clé API",
816
+ "checkingConnection": "Vérification de la connexion…",
817
+ "chooseAccount": "Choisissez un compte...",
818
+ "connectServer": "Connecter le serveur",
819
+ "connecting": "Connexion en cours...",
820
+ "connectionFailed": "Échec de la connexion",
821
+ "connectionSuccess": "Connexion réussie",
822
+ "description": "Gérez vos serveurs Plex, Jellyfin et Emby connectés",
146
823
  "discoveringConnections": "Découverte des connexions...",
824
+ "discoveringServers": "Recherche des serveurs Plex disponibles...",
825
+ "editServer": "Modifier le serveur",
826
+ "editServerDesc": "Mettre à jour le nom du serveur ou l'URL de connexion.",
827
+ "loadingAccounts": "Chargement des comptes Plex liés...",
828
+ "noPlexAccountsLinked": "Aucun compte Plex lié pour le moment",
829
+ "noPlexAccountsLinkedHint": "Lier un compte Plex ci-dessus, puis revenir pour ajouter un serveur.",
830
+ "noServersConnected": "Aucun serveur connecté",
831
+ "noServersConnectedHint": "Cliquez sur \"Ajouter un serveur\" pour connecter un serveur Jellyfin ou Emby",
147
832
  "plexAccount": "Compte Plex",
148
- "serverUrlHelpJellyfin": "L'URL où votre serveur Jellyfin est accessible",
149
- "serverUrlHelpEmby": "L'URL où votre serveur Emby est accessible",
150
- "apiKeyHelpJellyfin": "Trouvez ceci dans le tableau de bord Jellyfin → Clés API",
151
- "apiKeyHelpEmby": "Trouvez ceci dans Emby Server → Clés API",
152
833
  "plexServerPlaceholder": "Mon serveur Plex",
153
834
  "plexServerUrlPlaceholder": "http://192.168.1.100:32400",
154
- "updateHint": "Ou cliquez sur Mettre à jour ci-dessous pour enregistrer uniquement le changement de nom.",
155
- "added": "Ajouté {{date}}",
156
- "realtimeActive": "Mise à jour en temps réel active",
157
- "pollingMode": "Sondage",
158
- "setupRealtime": "Configurer les mises à jour en temps réel",
159
- "realtimeError": "Erreur en temps réel",
160
- "checkingConnection": "Vérification de la connexion…",
161
- "pluginVersion": "extension v{{version}}",
162
835
  "pluginUpdateAvailable": "Mise à jour de l'extension disponible",
836
+ "pluginVersion": "extension v{{version}}",
837
+ "pollingMode": "Sondage",
838
+ "posterSource": {
839
+ "automatic": "Automatique (plus récent)",
840
+ "description": "Quand un titre est sur plusieurs serveurs, utilisez l'affiche de ce serveur. Si elle n'en a pas, nous reprendrons la dernière copie ajoutée.",
841
+ "emptyHint": "Ajouter un serveur pour choisir une source d'affiches préférée.",
842
+ "label": "Source d'affiche préférée",
843
+ "ownerOnly": "",
844
+ "title": "Préférences de l'affiche",
845
+ "titleDesc": "Choisir quel poster du serveur est affiché lorsqu'un titre existe sur plus d'un serveur"
846
+ },
847
+ "publicUrl": "",
848
+ "publicUrlHint": "",
849
+ "realtimeActive": "Mise à jour en temps réel active",
163
850
  "realtimeDialog": {
164
- "title": "Activer les mises à jour en temps réel",
165
- "updateTitle": "Mettre à jour l'extension Tracearr SSE",
166
- "jellyfinDescription": "Installez l'extension SSE de Tracearr pour recevoir les mises à jour de session instantanément, sans attendre la prochaine actualisation.",
167
- "embyDescription": "Installez l'extension SSE de Tracearr pour recevoir les mises à jour de session instantanément, sans attendre la prochaine actualisation.",
168
- "jellyfinUpdateDescription": "Une nouvelle version de l'extension est disponible. Ouvrez votre tableau de bord Jellyfin, rendez-vous dans Extensions, Catalogue, et mettez à jour Tracearr SSE, puis redémarrez Jellyfin.",
169
- "embyUpdateDescription": "Une nouvelle version de l'extension est disponible. Téléchargez la dernière version du zip, remplacez le DLL de l'extension dans votre dossier d'extensions Emby et redémarrez Emby.",
170
- "repositoryUrl": "URL du dépôt",
171
- "copyUrl": "Copier l'URL",
172
- "jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
173
- "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
174
- "openReleases": "Ouvrir la page des versions",
175
851
  "autoDetectNote": "Redémarrez Jellyfin ou Emby après l'installation du plugin ; le redémarrage est nécessaire. Tracearr lui-même n'a pas besoin de redémarrer et récupère automatiquement le plugin.",
176
852
  "close": "Fermer",
853
+ "copyUrl": "Copier l'URL",
854
+ "embyDescription": "Installez l'extension SSE de Tracearr pour recevoir les mises à jour de session instantanément, sans attendre la prochaine actualisation.",
855
+ "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
856
+ "embyUpdateDescription": "Une nouvelle version de l'extension est disponible. Téléchargez la dernière version du zip, remplacez le DLL de l'extension dans votre dossier d'extensions Emby et redémarrez Emby.",
177
857
  "issueBlocked": "Le serveur indique que le plugin est installé et actif, mais Tracearr renvoie une erreur 404 depuis son point de terminaison. La cause la plus courante est un proxy inverse qui bloque le chemin d'accès.",
858
+ "issueMalfunctioned": "Le serveur signale que le chargement du plugin a échoué. La mise à jour du plugin ou du serveur multimédia permet généralement de résoudre ce problème.",
178
859
  "issueRestartRequired": "Le plugin est installé, mais le serveur multimédia a besoin d'un redémarrage avant de l'activer.",
179
- "issueMalfunctioned": "Le serveur signale que le chargement du plugin a échoué. La mise à jour du plugin ou du serveur multimédia permet généralement de résoudre ce problème."
180
- },
181
- "posterSource": {
182
- "title": "Préférences de l'affiche",
183
- "titleDesc": "Choisir quel poster du serveur est affiché lorsqu'un titre existe sur plus d'un serveur",
184
- "label": "Source d'affiche préférée",
185
- "description": "Quand un titre est sur plusieurs serveurs, utilisez l'affiche de ce serveur. Si elle n'en a pas, nous reprendrons la dernière copie ajoutée.",
186
- "automatic": "Automatique (plus récent)",
187
- "emptyHint": "Ajouter un serveur pour choisir une source d'affiches préférée."
860
+ "jellyfinDescription": "Installez l'extension SSE de Tracearr pour recevoir les mises à jour de session instantanément, sans attendre la prochaine actualisation.",
861
+ "jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
862
+ "jellyfinUpdateDescription": "Une nouvelle version de l'extension est disponible. Ouvrez votre tableau de bord Jellyfin, rendez-vous dans Extensions, Catalogue, et mettez à jour Tracearr SSE, puis redémarrez Jellyfin.",
863
+ "openReleases": "Ouvrir la page des versions",
864
+ "repositoryUrl": "URL du dépôt",
865
+ "title": "Activer les mises à jour en temps réel",
866
+ "updateTitle": "Mettre à jour l'extension Tracearr SSE"
188
867
  },
189
- "version": {
190
- "installed": "Version {{version}}",
191
- "upToDate": "à jour",
192
- "updateAvailable": "Version {{version}} disponible"
193
- }
194
- },
195
- "mobile": {
196
- "title": "Application mobile",
197
- "pairDevice": "Associer un appareil",
198
- "connectedDevices": "Appareils connectés",
199
- "generateToken": "Générer un jeton d'appairage",
200
- "scanQrCode": "Scanner le code QR",
201
- "tokenExpires": "Le jeton d'appairage expire dans {{time}}",
202
- "noDevices": "Aucun appareil connecté",
203
- "revokeAll": "Révoquer toutes les sessions",
204
- "getTheApp": "Téléchargez l'application",
205
- "getTheAppDesc": "Téléchargez l'application mobile Tracearr pour iOS ou Android",
206
- "getOnGooglePlay": "Télécharger sur Google Play",
207
- "downloadOnAppStore": "Télécharger sur l'App Store",
208
- "pairYourDevice": "Associer votre appareil",
209
- "pairYourDeviceDesc": "",
210
- "externalUrlRequired": "Une URL externe doit être configurée dans les paramètres généraux pour que l'appairage mobile fonctionne.",
211
- "mobileAccessDisabled": "Accès mobile désactivé",
212
- "mobileAccessDisabledDesc": "Activez l'accès mobile pour permettre à l'application mobile Tracearr de se connecter à votre serveur.",
213
- "enableMobileAccess": "Activer l'accès mobile",
214
- "enabling": "Activation...",
215
- "devicesConnected": "{{current}} des appareils {{max}} connectés",
216
- "pendingTokens": "{{count}} token en attente",
217
- "addDevice": "Ajouter un appareil",
218
- "disableMobileAccess": "Désactiver l'accès mobile",
219
- "connectedDevicesDesc": "Périphériques {{count}} appariés à votre serveur",
220
- "revokeAllSessions": "Révoquer tout",
221
- "pairNewDevice": "Associer un nouvel appareil",
222
- "pairNewDeviceDesc": "Scannez le code QR avec l'application mobile Tracearr ou saisissez le jeton manuellement.",
223
- "expiresIn": "Expire dans {{time}}",
224
- "oneTimePairToken": "Jeton de Paire à usage unique",
225
- "copyToken": "Copier le jeton",
226
- "tokenExpiryNote": "Ce jeton expire dans 5 minutes et ne peut être utilisé qu'une seule fois.",
227
- "done": "Fait",
228
- "disableMobileAccessConfirm": "Ceci va déconnecter tous les appareils mobiles et révoquer toutes les sessions. Vous pourrez réactiver l'accès mobile plus tard.",
229
- "disable": "Désactiver",
230
- "revokeAllConfirm": "Cela déconnectera tous les appareils mobiles. Ils devront s'appairer à nouveau pour se reconnecter.",
231
- "renameDevice": "Renommer l'appareil",
232
- "renameDeviceDesc": "Entrez un nom pour identifier cet appareil dans la liste.",
233
- "deviceName": "Nom de l'appareil",
234
- "deviceNamePlaceholder": "par exemple iPhone 15",
235
- "removeDevice": "Supprimer l'appareil",
236
- "failedToGenerateToken": "Impossible de générer le jeton",
237
- "removeDeviceConfirm": "Êtes-vous sûr de vouloir supprimer {{deviceName}}? Cet appareil devra être relié à nouveau pour se reconnecter.",
238
- "externalUrlBanner": "Utiliser un proxy inversé ou accéder à distance ? Définissez votre",
239
- "externalUrlBannerLink": "URL externe",
240
- "externalUrlBannerSuffix": "pour que l'application mobile puisse se connecter à votre serveur."
868
+ "realtimeError": "Erreur en temps réel",
869
+ "removeServer": "Supprimer le serveur",
870
+ "removeServerConfirm": "Êtes-vous sûr de vouloir supprimer ce serveur ? Toutes les données de session associées seront conservées, mais vous ne serez pas en mesure de surveiller les nouvelles sessions de ce serveur.",
871
+ "reorder": "",
872
+ "selectAccountHelp": "Sélectionnez le compte Plex dont vous voulez découvrir les serveurs.",
873
+ "selectPlexAccount": "Sélectionnez le compte Plex",
874
+ "serverColor": "Couleur du serveur",
875
+ "serverColorDesc": "Utilisé pour l'attribution visuelle dans la vue multi-serveur",
876
+ "serverName": "Nom du serveur",
877
+ "serverNamePlaceholder": "Mon serveur multimédia",
878
+ "serverType": "Type de serveur",
879
+ "serverUrl": "URL du serveur",
880
+ "serverUrlHelp": "URL directe vers votre serveur Jellyfin ou Emby. Utilisez IP:port pour une fiabilité optimale.",
881
+ "serverUrlHelpEmby": "L'URL où votre serveur Emby est accessible",
882
+ "serverUrlHelpJellyfin": "L'URL où votre serveur Jellyfin est accessible",
883
+ "serverUrlPlaceholder": "http://192.168.1.100:8096",
884
+ "setupRealtime": "Configurer les mises à jour en temps réel",
885
+ "syncInterval": "Intervalle de synchronisation",
886
+ "testConnection": "Tester la connexion",
887
+ "title": "Serveurs connectés",
888
+ "updateHint": "Ou cliquez sur Mettre à jour ci-dessous pour enregistrer uniquement le changement de nom.",
889
+ "updating": "Mise à jour en cours...",
890
+ "version": {
891
+ "installed": "Version {{version}}",
892
+ "upToDate": "à jour",
893
+ "updateAvailable": "Version {{version}} disponible"
894
+ }
895
+ },
896
+ "shared": {
897
+ "timezone": {
898
+ "empty": "",
899
+ "other": "",
900
+ "placeholder": "",
901
+ "search": ""
902
+ }
241
903
  },
242
904
  "tailscale": {
243
- "title": "VPN Tailscale",
244
- "description": "",
245
- "notAvailable": "Le binaire de Tailscale est introuvable. Cette fonctionnalité n'est uniquement disponible que lorsque vous utilisez l'image Docker officielle.",
246
- "disabledDescription": "Activez Tailscale pour placer Tracearr sur votre tailnet privé. Aucune redirection de port ni reverse proxy requis.",
247
- "hostnameLabel": "Nom d'hôte de l'appareil",
248
- "hostnameHint": "Nom personnalisé facultatif pour cet appareil sur votre tailnet. Lettres, chiffres et tirets uniquement.",
249
- "enable": "Activer Tailscale",
250
- "disable": "Désactiver Tailscale",
251
- "starting": "Démarrage de Tailscale...",
252
- "stopping": "Arrêt de Tailscale...",
253
- "awaitingAuth": "En attente d'autorisation...",
254
905
  "authorize": "Autoriser dans Tailscale",
906
+ "awaitingAuth": "En attente d'autorisation...",
255
907
  "connected": "Tailscale est connecté. Votre instance Tracearr est disponible sur le tailnet.",
256
- "hostname": "Nom d'hôte",
908
+ "description": "",
909
+ "disable": "Désactiver Tailscale",
910
+ "disableConfirmDescription": "Cela déconnectera Tracearr de votre tailnet. Vous pourrez le réactiver sans avoir à l'autoriser de nouveau.",
911
+ "disableConfirmTitle": "Désactiver Tailscale ?",
912
+ "disabledDescription": "Activez Tailscale pour placer Tracearr sur votre tailnet privé. Aucune redirection de port ni reverse proxy requis.",
257
913
  "dnsName": "Nom du DNS",
258
- "tailnetUrl": "URL",
259
- "showLogs": "Afficher les journaux",
260
- "hideLogs": "Masquer les journaux",
261
- "noLogs": "Aucune journalisation de sortie disponible.",
914
+ "enable": "Activer Tailscale",
262
915
  "exitNodeNone": "Aucun",
263
916
  "exitNodeOffline": "(hors ligne)",
264
- "unknownError": "Une erreur inconnue s'est produite.",
265
- "disableConfirmTitle": "Désactiver Tailscale ?",
266
- "disableConfirmDescription": "Cela déconnectera Tracearr de votre tailnet. Vous pourrez le réactiver sans avoir à l'autoriser de nouveau.",
267
- "resetConfirmTitle": "Réinitialiser Tailscale ?",
917
+ "hideLogs": "Masquer les journaux",
918
+ "hostname": "Nom d'hôte",
919
+ "hostnameHint": "Nom personnalisé facultatif pour cet appareil sur votre tailnet. Lettres, chiffres et tirets uniquement.",
920
+ "hostnameLabel": "Nom d'hôte de l'appareil",
921
+ "noLogs": "Aucune journalisation de sortie disponible.",
922
+ "notAvailable": "Le binaire de Tailscale est introuvable. Cette fonctionnalité n'est uniquement disponible que lorsque vous utilisez l'image Docker officielle.",
268
923
  "resetConfirmDescription": "Tracearr sera déconnecté de votre tailnet et l'identité de l'appareil sera supprimée. Une nouvelle autorisation sera nécessaire si vous l'activez à nouveau.",
924
+ "resetConfirmTitle": "Réinitialiser Tailscale ?",
925
+ "showLogs": "Afficher les journaux",
926
+ "starting": "Démarrage de Tailscale...",
927
+ "stopping": "Arrêt de Tailscale...",
928
+ "tailnetUrl": "URL",
929
+ "title": "VPN Tailscale",
269
930
  "toast": {
931
+ "disableFailed": "Échec de la désactivation de Tailscale",
270
932
  "disabled": "Tailscale a été désactivé.",
271
933
  "enableFailed": "Échec de l'activation de Tailscale",
272
- "disableFailed": "Échec de la désactivation de Tailscale",
273
- "reset": "Tailscale a été réinitialisé.",
274
- "resetFailed": "Échec de la réinitialisation de Tailscale",
934
+ "exitNodeFailed": "Impossible de définir l'exit node",
275
935
  "exitNodeSet": "Exit node mis à jour.",
276
- "exitNodeFailed": "Impossible de définir l'exit node"
277
- }
278
- },
279
- "jobs": {
280
- "title": "Tâches d'entretien",
281
- "description": "",
282
- "normalization": "Normalisation",
283
- "backfill": "Remplissage",
284
- "cleanup": "Nettoyage",
285
- "running": "en cours d'exécution",
286
- "queued": "mis en file d'attente",
287
- "delayed": "différé",
288
- "waiting": "En attente",
289
- "runningState": "En cours d'exécution",
290
- "runJob": "Exécuter le Job",
291
- "processed": "traité",
292
- "updated": "Mis à jour",
293
- "unchanged": "inchangé",
294
- "errors": "erreurs",
295
- "lastJobCompleted": "Dernière tâche terminée avec succès",
296
- "lastJobFailed": "La dernière tâche a échoué",
297
- "jobHistory": "Historique des tâches",
298
- "jobHistoryDesc": "Exécution récente d'une tâche de maintenance",
299
- "runConfirm": "Exécuter {{name}}?",
300
- "mayTakeAWhile": "Cela peut prendre un certain temps",
301
- "mayTakeAWhileDesc": "Cette tâche peut prendre plusieurs minutes selon la taille de votre bibliothèque.",
302
- "startJob": "Commencer la tâche"
303
- },
304
- "advanced": {
305
- "title": "Réglages avancés",
306
- "externalUrl": "URL externe",
307
- "trustProxy": "En-têtes de confiance du Proxy",
308
- "reverseProxy": "Proxy inversé",
309
- "connectionScenarios": "Scénarios de connexion"
310
- },
311
- "accessControl": {
312
- "title": "Contrôle d'accès",
313
- "description": "Configurer qui peut accéder à Tracearr",
314
- "allowGuestAccess": "Autoriser l'accès aux invités",
315
- "allowGuestAccessDesc": "",
316
- "singleOwnerNote": "Remarque : Lorsque l'accès des invités est désactivé, seul le propriétaire du serveur peut se connecter. Tous les autres utilisateurs verront un message \"Accès refusé\"."
317
- },
318
- "import": {
319
- "title": "Importer des données",
320
- "jellystat": "Importer depuis Jellystat",
321
- "tautulli": "Importer depuis Tautulli",
322
- "importProgress": "Progression de l'import",
323
- "importComplete": "Importation terminée",
324
- "importFailed": "Échec de l'importation",
325
- "processed": "Traité",
326
- "page": "Page",
327
- "imported": "Importé",
328
- "skipped": "Ignoré",
329
- "enriched": "Enrichi",
330
- "errors": "Erreurs",
331
- "noServers": "Aucun serveur connecté",
332
- "noServersHint": "Vous avez besoin d'au moins un serveur connecté pour importer des données.",
333
- "tautulliUrl": "URL Tautulli",
334
- "tautulliUrlPlaceholder": "http://localhost:8001",
335
- "tautulliUrlHelp": "L'URL de votre instance Tautulli.",
336
- "apiKeyHelp": "Trouvé dans les paramètres Tautulli → Interface Web → Clé d'API.",
337
- "testing": "Test en cours...",
338
- "connectToTautulli": "Se connecter à Tautulli",
339
- "importHistory": "Historique d'importation",
340
- "targetServer": "Serveur cible",
341
- "selectPlexServer": "Sélectionnez un serveur Plex",
342
- "overwriteFriendlyNames": "Remplacer les noms conviviaux existants par des noms Tautulli",
343
- "overwriteFriendlyNamesHelp": "Les noms d'identité existants dans Tracearr seront remplacés par les noms amicaux de Tautulli.",
344
- "includeStreamDetails": "Inclure les données détaillées du flux (codecs, débit, résolution)",
345
- "includeStreamDetailsHelp": "Importe des informations de flux supplémentaires. Peut augmenter considérablement le temps d'importation.",
346
- "importing": "Importation en cours...",
347
- "startImport": "Commencer l'importation",
348
- "howItWorks": "Comment fonctionne l'import",
349
- "howItWorksDesc": "Tracearr importera toutes les données historiques de surveillance de votre source. Cela peut prendre un certain temps en fonction de la taille de votre bibliothèque.",
350
- "recordsMayBeSkipped": "Les enregistrements peuvent être ignorés si :",
351
- "selectTargetServer": "Sélectionnez le serveur cible",
352
- "selectJellyfinServer": "Sélectionnez un serveur Jellyfin ou Emby",
353
- "uploadJellystatBackup": "Télécharger la sauvegarde Jellystat",
354
- "exportBackupHint": "Exporter une sauvegarde d'activité depuis Jellystat",
355
- "exportBackupHelp": "Dans Jellystat, allez dans Paramètres → Sauvegarde → Sauvegarde d'activités pour exporter vos données.",
356
- "importOptions": "Options d'importation",
357
- "enrichMetadata": "Enrichir avec les métadonnées du média (recommandé)",
358
- "enrichMetadataHelp": "Récupère des métadonnées supplémentaires depuis votre serveur multimédia pour les sessions importées.",
359
- "updateExistingRecords": "Mettre à jour les enregistrements existants avec les détails du flux",
360
- "updateExistingRecordsHelp": "Les enregistrements précédemment importés seront mis à jour avec les données de qualité du flux.",
361
- "pleaseEnterDetails": "Veuillez entrer l'URL et la clé API de Tautulli",
362
- "testingConnection": "Test de la connexion...",
363
- "pleaseSelectJsonFile": "Veuillez sélectionner un fichier JSON",
364
- "uploadingBackup": "Téléchargement du fichier de sauvegarde...",
365
- "importHistoryDesc": "Importer des données historiques de surveillance à partir de sources externes",
366
- "plex": "Plex (Tautulli)",
367
- "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
368
- "step1": "1",
369
- "step2": "2",
370
- "apiKeyPlaceholder": "Votre clé API Tautulli",
371
- "skipUserNotFoundPlex": "Utilisateur introuvable — L'utilisateur Plex n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
372
- "skipDuplicate": "Dupliquer la session — La session a déjà été importée précédemment.",
373
- "skipInProgress": "Session en cours — Les sessions actives/incomplètes sans identifiant de référence sont ignorées.",
374
- "skipUserNotFoundJellyfin": "Utilisateur introuvable — L'utilisateur Jellyfin/Emby n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
375
- "skipSyncHint": "Si plusieurs enregistrements sont ignorés, assurez-vous que vous avez récemment synchronisé votre serveur dans Paramètres → Serveurs.",
376
- "importInProgressPercent": "Importation en cours ({{percent}}% terminé)...",
377
- "importInProgressGeneric": "Importation en cours...",
378
- "startingImport": "Démarrage de l'importation...",
379
- "connectedFound": "Connecté ! Utilisateurs {{users}} trouvés et enregistrements de l'historique {{records}}.",
380
- "playbackReporting": "Plugin de rapport de lecture",
381
- "playbackReportingDesc": "Importer l'historique directement à partir du plugin de rapport de lecture installé sur votre serveur Jellyfin ou Emby. Aucun export de fichier nécessaire.",
382
- "checkPlugin": "Vérifier le Plugin",
383
- "checkingPlugin": "Vérification...",
384
- "pluginFound": "Plugin trouvé: enregistrements {{records}} de {{oldestDate}} à {{newestDate}}",
385
- "pluginNotInstalled": "Le plugin de rapport de lecture n'est pas installé sur ce serveur, ou Tracearr ne peut pas l'atteindre. Installez-le à partir du catalogue de plugins du serveur pour commencer à enregistrer l'historique, ou utilisez l'importation de Jellystat ci-dessous.",
386
- "serverTimezone": "Fuseau horaire du serveur",
387
- "serverTimezoneHelp": "Doit correspondre au fuseau horaire configuré sur l'hôte de votre serveur multimédia, et non au fuseau horaire de votre navigateur. Les horodatages des rapports de lecture sont stockés à l'heure du serveur local.",
388
- "importFullRange": "Importer l'historique complet",
389
- "importFullRangeHelp": "Par défaut, seul l'historique plus ancien que la première session tracée de Tracearr pour ce serveur est importé, de sorte que les sessions que Tracearr déjà enregistrées ne sont jamais dupliquées. Activez cette option pour importer l'historique entier du plugin, indépendamment du chevauchement, si votre historique Tracearr a des lacunes. Les doublons exacts sont toujours ignorés.",
390
- "overlapSkipped": "{{count}} ont été ignorés car ils se chevauchaient",
391
- "duplicates": "Les doublons {{count}} ont été ignorés",
392
- "skipOverlap": "Recouvrement de l'enregistrement - l'horodatage tombe dans la période que Tracearr suit déjà pour ce serveur. Activez l'importation complète pour l'inclure.",
393
- "skipDuplicatePlugin": "Enregistrement en double - déjà importé directement ou arrivé plus tôt via une importation Jellystat des mêmes données de plugin."
394
- },
395
- "plex": {
396
- "signInWithPlex": "Se connecter avec Plex",
397
- "signUpWithPlex": "S'inscrire avec Plex",
398
- "selectServer": "Sélectionner un serveur",
399
- "chooseServer": "Choisir le serveur Plex à surveiller"
400
- },
401
- "account": {
402
- "createAccount": "Créer un compte",
403
- "email": "E-mail",
404
- "password": "Mot de passe",
405
- "displayName": "Nom d'affichage",
406
- "createYourAccount": "Créez votre compte pour démarrer",
407
- "signInToAccount": "Connectez-vous à votre compte",
408
- "useLocalAccount": "Utiliser un compte local à la place"
936
+ "reset": "Tailscale a été réinitialisé.",
937
+ "resetFailed": "Échec de la réinitialisation de Tailscale"
938
+ },
939
+ "unknownError": "Une erreur inconnue s'est produite."
409
940
  },
941
+ "title": "Réglages",
410
942
  "update": {
411
- "title": "Mise à jour disponible",
412
- "releaseNotes": "Notes de version",
413
- "updateCommand": "Commande de mise à jour",
414
- "pullInstructions": "Après avoir réalisé le pull Docker, redémarrez cotre conteneur pour appliquer la modification.",
415
- "stableRelease": "Version stable",
416
943
  "betaUpdate": "Mise à jour bêta",
417
944
  "newVersion": "Nouvelle version",
945
+ "pullInstructions": "Après avoir réalisé le pull Docker, redémarrez cotre conteneur pour appliquer la modification.",
946
+ "releaseNotes": "Notes de version",
947
+ "stableRelease": "Version stable",
948
+ "title": "Mise à jour disponible",
949
+ "updateCommand": "Commande de mise à jour",
418
950
  "versionAvailable": "Version {{version}} disponible"
419
- },
420
- "serverHealth": {
421
- "unreachable": "{{serverName}} est inaccessible",
422
- "multipleUnreachable": "{{count}} serveurs injoignables : {{serverNames}}"
423
- },
424
- "ipWarning": {
425
- "message": "Tous les utilisateurs semblent utiliser la même adresse IP ou des IP locales. Cela peut affecter la logique des règles basées sur l'emplacement ou l'adresse IP.",
426
- "acknowledge": "Compris"
427
- },
428
- "backup": {
429
- "title": "Sauvegarde",
430
- "backToBackups": "Retour aux sauvegardes",
431
- "description": "Sauvegardez et restaurez vos données Tracearr",
432
- "createBackup": "Créer une sauvegarde",
433
- "creating": "Création de la sauvegarde...",
434
- "uploadBackup": "Téléverser une sauvegarde",
435
- "uploading": "Téléversement...",
436
- "databaseSize": "Taille actuelle de la base de données : {{size}}",
437
- "freeSpace": "Espace libre dans le répertoire de sauvegarde : {{size}}",
438
- "lowDiskSpace": "Espace disque faible — les sauvegardes et restaurations nécessitent au moins deux fois la taille de la base de données en espace libre.",
439
- "backupHistory": "Historique des sauvegardes",
440
- "noBackups": "Aucune sauvegarde pour le moment. Créez votre première sauvegarde ci-dessus.",
441
- "filename": "Nom du fichier",
442
- "size": "Taille",
443
- "date": "Date",
444
- "type": "Type",
445
- "version": "Version",
446
- "actions": "Actions",
447
- "typeManual": "Manuelle",
448
- "typeScheduled": "Planifiée",
449
- "typeUploaded": "Téléversé",
450
- "restoreAction": "Restaurer",
451
- "deleteConfirmTitle": "Supprimer la sauvegarde",
452
- "deleteConfirmDescription": "Êtes-vous sûr de vouloir supprimer cette sauvegarde ? Cette action est irréversible.",
453
- "schedule": "Sauvegardes planifiées",
454
- "scheduleType": "Planification",
455
- "scheduleDisabled": "Désactivé",
456
- "scheduleDaily": "Journalière",
457
- "scheduleWeekly": "Hebdomadaire",
458
- "scheduleMonthly": "Mensuelle",
459
- "scheduleTime": "Heure ({{timezone}})",
460
- "scheduleDayOfWeek": "Jour de la semaine",
461
- "scheduleDayOfMonth": "Jour du mois",
462
- "scheduleDayOfMonthHint": "Pour les mois comportant moins de jours, la sauvegarde est effectuée le dernier jour du mois.",
463
- "retentionCount": "Garder les dernières :",
464
- "retentionSuffix": "sauvegardes planifiées",
465
- "daySun": "Dimanche",
466
- "dayMon": "Lundi",
467
- "dayTue": "Mardi",
468
- "dayWed": "Mercredi",
469
- "dayThu": "Jeudi",
470
- "dayFri": "Vendredi",
471
- "daySat": "Samedi",
472
- "restore": {
473
- "title": "Restaurer la sauvegarde",
474
- "selectedBackup": "Sauvegarde sélectionnée",
475
- "databaseSize": "Taille de la base de données",
476
- "sessions": "Sessions",
477
- "users": "Utilisateurs",
478
- "servers": "Serveurs",
479
- "automations": "Automatisations",
480
- "libraryItems": "Éléments de la bibliothèque",
481
- "tables": "Tableaux",
482
- "warning": "La restauration remplacera toutes les données existantes. Vous devrez vous reconnecter une fois la restauration complétée.",
483
- "confirmLabel": "Je comprends que cela remplacera toutes les données",
484
- "confirm": "Démarrer la restauration",
485
- "complete": "Restauration effectuée avec succès. La page s'actualisera sous peu.",
486
- "failed": "Échec de la restauration",
487
- "cannotRestore": "La restauration nécessite des privilèges de superutilisateur PostgreSQL. Veuillez vous assurer que votre utilisateur de base de données dispose de ces privilèges, puis réessayez.",
488
- "pgVersionMismatch": "La sauvegarde a été créée avec PostgreSQL {{backupVersion}}, mais ce serveur utilise PostgreSQL {{serverVersion}}. La restauration d'une sauvegarde issue d'une version plus récente de PostgreSQL n'est pas prise en charge.",
489
- "tsVersionMismatch": "La sauvegarde a été créée avec TimescaleDB {{backupVersion}}, mais ce serveur ne prend en charge que jusqu'à TimescaleDB {{serverVersion}}."
490
- },
491
- "toast": {
492
- "backupCreated": "Sauvegarde créée avec succès",
493
- "backupCreateFailed": "Échec de création de la sauvegarde",
494
- "backupUploaded": "Sauvegarde téléversée avec succès",
495
- "backupUploadFailed": "Échec du téléversement de la sauvegarde",
496
- "backupDeleted": "Sauvegarde supprimée",
497
- "backupDeleteFailed": "Échec de suppression de la sauvegarde",
498
- "restoreStarted": "La restauration a démarré",
499
- "restoreStartFailed": "Échec du démarrage de la restauration",
500
- "scheduleSaved": "Planification de la sauvegarde enregistrée",
501
- "scheduleError": "Échec de l'enregistrement de la planification de la sauvegarde"
502
- }
503
951
  }
504
952
  }