@tracearr/translations 2.1.0-beta.7 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/dist/config.d.ts +4 -2
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.mobile.d.ts +4 -2
  4. package/dist/config.mobile.d.ts.map +1 -1
  5. package/dist/locales/af-ZA/common.json +251 -251
  6. package/dist/locales/af-ZA/mobile.json +125 -125
  7. package/dist/locales/af-ZA/notifications.json +226 -226
  8. package/dist/locales/af-ZA/pages.json +69 -67
  9. package/dist/locales/af-ZA/settings.json +446 -446
  10. package/dist/locales/ar-SA/common.json +251 -251
  11. package/dist/locales/ar-SA/mobile.json +125 -125
  12. package/dist/locales/ar-SA/notifications.json +226 -226
  13. package/dist/locales/ar-SA/pages.json +69 -67
  14. package/dist/locales/ar-SA/settings.json +446 -446
  15. package/dist/locales/ca-ES/common.json +251 -251
  16. package/dist/locales/ca-ES/mobile.json +125 -125
  17. package/dist/locales/ca-ES/notifications.json +226 -226
  18. package/dist/locales/ca-ES/pages.json +69 -67
  19. package/dist/locales/ca-ES/settings.json +446 -446
  20. package/dist/locales/cs-CZ/common.json +251 -251
  21. package/dist/locales/cs-CZ/mobile.json +125 -125
  22. package/dist/locales/cs-CZ/notifications.json +226 -226
  23. package/dist/locales/cs-CZ/pages.json +69 -67
  24. package/dist/locales/cs-CZ/settings.json +446 -446
  25. package/dist/locales/da-DK/common.json +251 -251
  26. package/dist/locales/da-DK/mobile.json +125 -125
  27. package/dist/locales/da-DK/notifications.json +226 -226
  28. package/dist/locales/da-DK/pages.json +69 -67
  29. package/dist/locales/da-DK/settings.json +446 -446
  30. package/dist/locales/de-DE/common.json +251 -251
  31. package/dist/locales/de-DE/mobile.json +125 -125
  32. package/dist/locales/de-DE/notifications.json +226 -226
  33. package/dist/locales/de-DE/pages.json +69 -67
  34. package/dist/locales/de-DE/settings.json +446 -446
  35. package/dist/locales/el-GR/common.json +251 -251
  36. package/dist/locales/el-GR/mobile.json +125 -125
  37. package/dist/locales/el-GR/notifications.json +226 -226
  38. package/dist/locales/el-GR/pages.json +69 -67
  39. package/dist/locales/el-GR/settings.json +446 -446
  40. package/dist/locales/en/pages.json +2 -1
  41. package/dist/locales/en-US/common.json +251 -251
  42. package/dist/locales/en-US/mobile.json +125 -125
  43. package/dist/locales/en-US/notifications.json +224 -224
  44. package/dist/locales/en-US/pages.json +57 -55
  45. package/dist/locales/en-US/settings.json +446 -446
  46. package/dist/locales/es-ES/common.json +251 -251
  47. package/dist/locales/es-ES/mobile.json +125 -125
  48. package/dist/locales/es-ES/notifications.json +226 -226
  49. package/dist/locales/es-ES/pages.json +69 -67
  50. package/dist/locales/es-ES/settings.json +446 -446
  51. package/dist/locales/fi-FI/common.json +251 -251
  52. package/dist/locales/fi-FI/mobile.json +125 -125
  53. package/dist/locales/fi-FI/notifications.json +226 -226
  54. package/dist/locales/fi-FI/pages.json +69 -67
  55. package/dist/locales/fi-FI/settings.json +446 -446
  56. package/dist/locales/fr-FR/common.json +251 -251
  57. package/dist/locales/fr-FR/notifications.json +226 -226
  58. package/dist/locales/fr-FR/pages.json +69 -67
  59. package/dist/locales/fr-FR/settings.json +446 -446
  60. package/dist/locales/he-IL/common.json +251 -251
  61. package/dist/locales/he-IL/mobile.json +125 -125
  62. package/dist/locales/he-IL/notifications.json +226 -226
  63. package/dist/locales/he-IL/pages.json +69 -67
  64. package/dist/locales/he-IL/settings.json +446 -446
  65. package/dist/locales/hu-HU/common.json +251 -251
  66. package/dist/locales/hu-HU/mobile.json +125 -125
  67. package/dist/locales/hu-HU/notifications.json +226 -226
  68. package/dist/locales/hu-HU/pages.json +69 -67
  69. package/dist/locales/hu-HU/settings.json +446 -446
  70. package/dist/locales/it-IT/common.json +251 -251
  71. package/dist/locales/it-IT/mobile.json +125 -125
  72. package/dist/locales/it-IT/notifications.json +226 -226
  73. package/dist/locales/it-IT/pages.json +69 -67
  74. package/dist/locales/it-IT/settings.json +446 -446
  75. package/dist/locales/ja-JP/common.json +251 -251
  76. package/dist/locales/ja-JP/mobile.json +125 -125
  77. package/dist/locales/ja-JP/notifications.json +226 -226
  78. package/dist/locales/ja-JP/pages.json +69 -67
  79. package/dist/locales/ja-JP/settings.json +446 -446
  80. package/dist/locales/ko-KR/common.json +251 -251
  81. package/dist/locales/ko-KR/mobile.json +125 -125
  82. package/dist/locales/ko-KR/notifications.json +226 -226
  83. package/dist/locales/ko-KR/pages.json +69 -67
  84. package/dist/locales/ko-KR/settings.json +446 -446
  85. package/dist/locales/nl-NL/common.json +251 -251
  86. package/dist/locales/nl-NL/notifications.json +226 -226
  87. package/dist/locales/nl-NL/pages.json +69 -67
  88. package/dist/locales/no-NO/common.json +251 -251
  89. package/dist/locales/no-NO/mobile.json +125 -125
  90. package/dist/locales/no-NO/notifications.json +226 -226
  91. package/dist/locales/no-NO/pages.json +69 -67
  92. package/dist/locales/no-NO/settings.json +446 -446
  93. package/dist/locales/pl-PL/common.json +251 -251
  94. package/dist/locales/pl-PL/mobile.json +125 -125
  95. package/dist/locales/pl-PL/notifications.json +226 -226
  96. package/dist/locales/pl-PL/pages.json +69 -67
  97. package/dist/locales/pl-PL/settings.json +446 -446
  98. package/dist/locales/pt-BR/common.json +251 -251
  99. package/dist/locales/pt-BR/mobile.json +125 -125
  100. package/dist/locales/pt-BR/notifications.json +226 -226
  101. package/dist/locales/pt-BR/pages.json +69 -67
  102. package/dist/locales/pt-BR/settings.json +446 -446
  103. package/dist/locales/pt-PT/common.json +251 -251
  104. package/dist/locales/pt-PT/mobile.json +125 -125
  105. package/dist/locales/pt-PT/notifications.json +226 -226
  106. package/dist/locales/pt-PT/pages.json +69 -67
  107. package/dist/locales/pt-PT/settings.json +446 -446
  108. package/dist/locales/ro-RO/common.json +251 -251
  109. package/dist/locales/ro-RO/mobile.json +125 -125
  110. package/dist/locales/ro-RO/notifications.json +226 -226
  111. package/dist/locales/ro-RO/pages.json +69 -67
  112. package/dist/locales/ro-RO/settings.json +446 -446
  113. package/dist/locales/ru-RU/common.json +251 -251
  114. package/dist/locales/ru-RU/mobile.json +125 -125
  115. package/dist/locales/ru-RU/notifications.json +226 -226
  116. package/dist/locales/ru-RU/pages.json +69 -67
  117. package/dist/locales/ru-RU/settings.json +446 -446
  118. package/dist/locales/sr-SP/common.json +251 -251
  119. package/dist/locales/sr-SP/mobile.json +125 -125
  120. package/dist/locales/sr-SP/notifications.json +226 -226
  121. package/dist/locales/sr-SP/pages.json +69 -67
  122. package/dist/locales/sr-SP/settings.json +446 -446
  123. package/dist/locales/sv-SE/common.json +251 -251
  124. package/dist/locales/sv-SE/mobile.json +125 -125
  125. package/dist/locales/sv-SE/notifications.json +226 -226
  126. package/dist/locales/sv-SE/pages.json +69 -67
  127. package/dist/locales/sv-SE/settings.json +446 -446
  128. package/dist/locales/tr-TR/common.json +251 -251
  129. package/dist/locales/tr-TR/mobile.json +125 -125
  130. package/dist/locales/tr-TR/notifications.json +226 -226
  131. package/dist/locales/tr-TR/pages.json +69 -67
  132. package/dist/locales/tr-TR/settings.json +446 -446
  133. package/dist/locales/uk-UA/common.json +251 -251
  134. package/dist/locales/uk-UA/mobile.json +125 -125
  135. package/dist/locales/uk-UA/notifications.json +226 -226
  136. package/dist/locales/uk-UA/pages.json +69 -67
  137. package/dist/locales/uk-UA/settings.json +446 -446
  138. package/dist/locales/vi-VN/common.json +251 -251
  139. package/dist/locales/vi-VN/mobile.json +125 -125
  140. package/dist/locales/vi-VN/notifications.json +226 -226
  141. package/dist/locales/vi-VN/pages.json +69 -67
  142. package/dist/locales/vi-VN/settings.json +446 -446
  143. package/dist/locales/zh-CN/common.json +251 -251
  144. package/dist/locales/zh-CN/mobile.json +125 -125
  145. package/dist/locales/zh-CN/notifications.json +226 -226
  146. package/dist/locales/zh-CN/pages.json +69 -67
  147. package/dist/locales/zh-CN/settings.json +446 -446
  148. package/dist/locales/zh-TW/common.json +251 -251
  149. package/dist/locales/zh-TW/mobile.json +125 -125
  150. package/dist/locales/zh-TW/notifications.json +226 -226
  151. package/dist/locales/zh-TW/pages.json +69 -67
  152. package/dist/locales/zh-TW/settings.json +446 -446
  153. package/package.json +1 -1
  154. package/src/locales/af-ZA/common.json +251 -251
  155. package/src/locales/af-ZA/mobile.json +125 -125
  156. package/src/locales/af-ZA/notifications.json +226 -226
  157. package/src/locales/af-ZA/pages.json +69 -67
  158. package/src/locales/af-ZA/settings.json +446 -446
  159. package/src/locales/ar-SA/common.json +251 -251
  160. package/src/locales/ar-SA/mobile.json +125 -125
  161. package/src/locales/ar-SA/notifications.json +226 -226
  162. package/src/locales/ar-SA/pages.json +69 -67
  163. package/src/locales/ar-SA/settings.json +446 -446
  164. package/src/locales/ca-ES/common.json +251 -251
  165. package/src/locales/ca-ES/mobile.json +125 -125
  166. package/src/locales/ca-ES/notifications.json +226 -226
  167. package/src/locales/ca-ES/pages.json +69 -67
  168. package/src/locales/ca-ES/settings.json +446 -446
  169. package/src/locales/cs-CZ/common.json +251 -251
  170. package/src/locales/cs-CZ/mobile.json +125 -125
  171. package/src/locales/cs-CZ/notifications.json +226 -226
  172. package/src/locales/cs-CZ/pages.json +69 -67
  173. package/src/locales/cs-CZ/settings.json +446 -446
  174. package/src/locales/da-DK/common.json +251 -251
  175. package/src/locales/da-DK/mobile.json +125 -125
  176. package/src/locales/da-DK/notifications.json +226 -226
  177. package/src/locales/da-DK/pages.json +69 -67
  178. package/src/locales/da-DK/settings.json +446 -446
  179. package/src/locales/de-DE/common.json +251 -251
  180. package/src/locales/de-DE/mobile.json +125 -125
  181. package/src/locales/de-DE/notifications.json +226 -226
  182. package/src/locales/de-DE/pages.json +69 -67
  183. package/src/locales/de-DE/settings.json +446 -446
  184. package/src/locales/el-GR/common.json +251 -251
  185. package/src/locales/el-GR/mobile.json +125 -125
  186. package/src/locales/el-GR/notifications.json +226 -226
  187. package/src/locales/el-GR/pages.json +69 -67
  188. package/src/locales/el-GR/settings.json +446 -446
  189. package/src/locales/en/pages.json +2 -1
  190. package/src/locales/en-US/common.json +251 -251
  191. package/src/locales/en-US/mobile.json +125 -125
  192. package/src/locales/en-US/notifications.json +224 -224
  193. package/src/locales/en-US/pages.json +57 -55
  194. package/src/locales/en-US/settings.json +446 -446
  195. package/src/locales/es-ES/common.json +251 -251
  196. package/src/locales/es-ES/mobile.json +125 -125
  197. package/src/locales/es-ES/notifications.json +226 -226
  198. package/src/locales/es-ES/pages.json +69 -67
  199. package/src/locales/es-ES/settings.json +446 -446
  200. package/src/locales/fi-FI/common.json +251 -251
  201. package/src/locales/fi-FI/mobile.json +125 -125
  202. package/src/locales/fi-FI/notifications.json +226 -226
  203. package/src/locales/fi-FI/pages.json +69 -67
  204. package/src/locales/fi-FI/settings.json +446 -446
  205. package/src/locales/fr-FR/common.json +251 -251
  206. package/src/locales/fr-FR/notifications.json +226 -226
  207. package/src/locales/fr-FR/pages.json +69 -67
  208. package/src/locales/fr-FR/settings.json +446 -446
  209. package/src/locales/he-IL/common.json +251 -251
  210. package/src/locales/he-IL/mobile.json +125 -125
  211. package/src/locales/he-IL/notifications.json +226 -226
  212. package/src/locales/he-IL/pages.json +69 -67
  213. package/src/locales/he-IL/settings.json +446 -446
  214. package/src/locales/hu-HU/common.json +251 -251
  215. package/src/locales/hu-HU/mobile.json +125 -125
  216. package/src/locales/hu-HU/notifications.json +226 -226
  217. package/src/locales/hu-HU/pages.json +69 -67
  218. package/src/locales/hu-HU/settings.json +446 -446
  219. package/src/locales/it-IT/common.json +251 -251
  220. package/src/locales/it-IT/mobile.json +125 -125
  221. package/src/locales/it-IT/notifications.json +226 -226
  222. package/src/locales/it-IT/pages.json +69 -67
  223. package/src/locales/it-IT/settings.json +446 -446
  224. package/src/locales/ja-JP/common.json +251 -251
  225. package/src/locales/ja-JP/mobile.json +125 -125
  226. package/src/locales/ja-JP/notifications.json +226 -226
  227. package/src/locales/ja-JP/pages.json +69 -67
  228. package/src/locales/ja-JP/settings.json +446 -446
  229. package/src/locales/ko-KR/common.json +251 -251
  230. package/src/locales/ko-KR/mobile.json +125 -125
  231. package/src/locales/ko-KR/notifications.json +226 -226
  232. package/src/locales/ko-KR/pages.json +69 -67
  233. package/src/locales/ko-KR/settings.json +446 -446
  234. package/src/locales/nl-NL/common.json +251 -251
  235. package/src/locales/nl-NL/notifications.json +226 -226
  236. package/src/locales/nl-NL/pages.json +69 -67
  237. package/src/locales/no-NO/common.json +251 -251
  238. package/src/locales/no-NO/mobile.json +125 -125
  239. package/src/locales/no-NO/notifications.json +226 -226
  240. package/src/locales/no-NO/pages.json +69 -67
  241. package/src/locales/no-NO/settings.json +446 -446
  242. package/src/locales/pl-PL/common.json +251 -251
  243. package/src/locales/pl-PL/mobile.json +125 -125
  244. package/src/locales/pl-PL/notifications.json +226 -226
  245. package/src/locales/pl-PL/pages.json +69 -67
  246. package/src/locales/pl-PL/settings.json +446 -446
  247. package/src/locales/pt-BR/common.json +251 -251
  248. package/src/locales/pt-BR/mobile.json +125 -125
  249. package/src/locales/pt-BR/notifications.json +226 -226
  250. package/src/locales/pt-BR/pages.json +69 -67
  251. package/src/locales/pt-BR/settings.json +446 -446
  252. package/src/locales/pt-PT/common.json +251 -251
  253. package/src/locales/pt-PT/mobile.json +125 -125
  254. package/src/locales/pt-PT/notifications.json +226 -226
  255. package/src/locales/pt-PT/pages.json +69 -67
  256. package/src/locales/pt-PT/settings.json +446 -446
  257. package/src/locales/ro-RO/common.json +251 -251
  258. package/src/locales/ro-RO/mobile.json +125 -125
  259. package/src/locales/ro-RO/notifications.json +226 -226
  260. package/src/locales/ro-RO/pages.json +69 -67
  261. package/src/locales/ro-RO/settings.json +446 -446
  262. package/src/locales/ru-RU/common.json +251 -251
  263. package/src/locales/ru-RU/mobile.json +125 -125
  264. package/src/locales/ru-RU/notifications.json +226 -226
  265. package/src/locales/ru-RU/pages.json +69 -67
  266. package/src/locales/ru-RU/settings.json +446 -446
  267. package/src/locales/sr-SP/common.json +251 -251
  268. package/src/locales/sr-SP/mobile.json +125 -125
  269. package/src/locales/sr-SP/notifications.json +226 -226
  270. package/src/locales/sr-SP/pages.json +69 -67
  271. package/src/locales/sr-SP/settings.json +446 -446
  272. package/src/locales/sv-SE/common.json +251 -251
  273. package/src/locales/sv-SE/mobile.json +125 -125
  274. package/src/locales/sv-SE/notifications.json +226 -226
  275. package/src/locales/sv-SE/pages.json +69 -67
  276. package/src/locales/sv-SE/settings.json +446 -446
  277. package/src/locales/tr-TR/common.json +251 -251
  278. package/src/locales/tr-TR/mobile.json +125 -125
  279. package/src/locales/tr-TR/notifications.json +226 -226
  280. package/src/locales/tr-TR/pages.json +69 -67
  281. package/src/locales/tr-TR/settings.json +446 -446
  282. package/src/locales/uk-UA/common.json +251 -251
  283. package/src/locales/uk-UA/mobile.json +125 -125
  284. package/src/locales/uk-UA/notifications.json +226 -226
  285. package/src/locales/uk-UA/pages.json +69 -67
  286. package/src/locales/uk-UA/settings.json +446 -446
  287. package/src/locales/vi-VN/common.json +251 -251
  288. package/src/locales/vi-VN/mobile.json +125 -125
  289. package/src/locales/vi-VN/notifications.json +226 -226
  290. package/src/locales/vi-VN/pages.json +69 -67
  291. package/src/locales/vi-VN/settings.json +446 -446
  292. package/src/locales/zh-CN/common.json +251 -251
  293. package/src/locales/zh-CN/mobile.json +125 -125
  294. package/src/locales/zh-CN/notifications.json +226 -226
  295. package/src/locales/zh-CN/pages.json +69 -67
  296. package/src/locales/zh-CN/settings.json +446 -446
  297. package/src/locales/zh-TW/common.json +251 -251
  298. package/src/locales/zh-TW/mobile.json +125 -125
  299. package/src/locales/zh-TW/notifications.json +226 -226
  300. package/src/locales/zh-TW/pages.json +69 -67
  301. package/src/locales/zh-TW/settings.json +446 -446
@@ -1,501 +1,501 @@
1
1
  {
2
- "accessControl": {
3
- "allowGuestAccess": "Autoriser l'accès aux invités",
4
- "allowGuestAccessDesc": "Lorsque désactivé, seul le propriétaire du serveur peut se connecter à Tracearr",
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": "Email",
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
- "filename": "Nom du fichier",
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
- "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.",
49
- "complete": "Restauration effectuée avec succès. La page s'actualisera sous peu.",
50
- "confirm": "Démarrer la restauration",
51
- "confirmLabel": "Je comprends que cela remplacera toutes les données",
52
- "databaseSize": "Taille de la base de données",
53
- "failed": "Échec de la restauration",
54
- "libraryItems": "Éléments de la bibliothèque",
55
- "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.",
56
- "rules": "Règles",
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
- "schedule": "Sauvegardes planifiées",
70
- "scheduleDaily": "Journalière",
71
- "scheduleDayOfMonth": "Jour du mois",
72
- "scheduleDayOfMonthHint": "Pour les mois comportant moins de jours, la sauvegarde est effectuée le dernier jour du mois.",
73
- "scheduleDayOfWeek": "Jour de la semaine",
74
- "scheduleDisabled": "Désactivé",
75
- "scheduleMonthly": "Mensuelle",
76
- "scheduleTime": "Heure ({{timezone}})",
77
- "scheduleType": "Planification",
78
- "scheduleWeekly": "Hebdomadaire",
79
- "size": "Taille",
80
- "title": "Sauvegarde",
81
- "toast": {
82
- "backupCreateFailed": "Échec de création de la sauvegarde",
83
- "backupCreated": "Sauvegarde créée avec succès",
84
- "backupDeleteFailed": "Échec de suppression de la sauvegarde",
85
- "backupDeleted": "Sauvegarde supprimée",
86
- "backupUploadFailed": "Échec du téléversement de la sauvegarde",
87
- "backupUploaded": "Sauvegarde téléversée avec succès",
88
- "restoreStartFailed": "Échec du démarrage de la restauration",
89
- "restoreStarted": "La restauration a démarré",
90
- "scheduleError": "Échec de l'enregistrement de la planification de la sauvegarde",
91
- "scheduleSaved": "Planification de la sauvegarde enregistrée"
92
- },
93
- "type": "Type",
94
- "typeManual": "Manuelle",
95
- "typeScheduled": "Planifiée",
96
- "typeUploaded": "Téléversé",
97
- "uploadBackup": "Téléverser une sauvegarde",
98
- "uploading": "Téléversement...",
99
- "version": "Version"
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"
100
14
  },
101
15
  "general": {
102
- "accentColor": "Couleur d'accentuation",
103
- "apiDocs": "API Docs",
104
- "apiKeyDesc": "Accédez à l'API Tracearr pour des intégrations tierces comme Homarr, Home Assistant, etc.",
105
- "apiKeyReadAccess": "Votre clé API vous donne un accès en lecture complète à vos données Tracearr.",
106
- "apiRateLimit": "API Rate Limit",
107
- "apiRateLimitDesc": "Maximum public API requests per minute per key. Restart required to apply.",
108
- "apiRateLimitSuffix": "/min",
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)",
109
31
  "appearance": "Apparence",
110
32
  "appearanceDesc": "Personnaliser l'apparence de Tracearr",
33
+ "theme": "Thème",
34
+ "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",
111
40
  "application": "Application",
112
41
  "applicationDesc": "Configurer les paramètres de base de l'application",
113
- "copyToClipboard": "Copier dans le presse-papiers",
114
- "cyanDefault": "* Cyan est la couleur d'accentuation par défaut",
115
- "default": "(par défaut)",
116
- "detect": "Détecter",
42
+ "unitSystemDesc": "Choisir comment les distances et les vitesses sont affichées",
43
+ "sessionSync": "Synchronisation de session",
44
+ "sessionSyncDesc": "Activer le suivi de session pour vos serveurs multimédia",
45
+ "syncInterval": "Intervalle de synchronisation",
46
+ "syncIntervalDesc": "Fréquence de vote pour Jellyfin/Emby (5-300 secondes)",
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.",
117
50
  "enhancedGeoIP": "Recherche GeoIP améliorée",
118
51
  "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.",
119
52
  "externalAccess": "Accès externe",
120
53
  "externalAccessDesc": "Configurer comment les appareils externes (comme les applications mobiles) se connectent à votre serveur",
121
54
  "externalUrl": "URL externe",
122
- "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.",
123
55
  "externalUrlPlaceholder": "https://tracearr.example.com",
124
- "generateApiKeyPrompt": "Générer une clé API pour activer les intégrations externes.",
125
- "generateKey": "Générer une clé",
126
- "helpTranslate": "Aidez-nous à traduire Tracearr",
127
- "imperial": "Impérial (mi, mph)",
128
- "iosHttpWarning": "iOS nécessite HTTPS pour les connexions externes. Configurez un proxy inverse avec SSL.",
129
- "jellyfinPollingNote": "Les sondages de Jellyfin/Emby sont effectués à l'intervalle ci-dessus.",
130
- "language": "Langue",
131
- "languageDescription": "Choisissez votre langue d'affichage préférée.",
132
- "localAccount": "Compte local",
56
+ "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",
133
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.",
134
- "metric": "Métrique (km, km/h)",
59
+ "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": "API Docs",
135
62
  "noApiKeyGenerated": "Aucune clé API générée",
136
- "plexAccount": "Compte Plex",
137
- "plexSseNote": "Plex utilise Server-Sent Events (SSE) pour des mises à jour quasi instantanées — aucun sondage n'est nécessaire.",
138
- "primaryAuth": "Méthode d'authentification principale",
139
- "publicApiSettings": "Public API",
140
- "publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
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.",
141
66
  "regenerate": "Régénérer",
67
+ "generateKey": "Générer une clé",
142
68
  "regenerateApiKey": "Régénérer la clé API ?",
143
69
  "regenerateApiKeyDesc": "Ceci invalidera votre clé API actuelle. Toute intégration utilisant l'ancienne clé cessera de fonctionner.",
144
- "sessionSync": "Synchronisation de session",
145
- "sessionSyncDesc": "Activer le suivi de session pour vos serveurs multimédia",
146
- "syncInterval": "Intervalle de synchronisation",
147
- "syncIntervalDesc": "Fréquence de vote pour Jellyfin/Emby (5-300 secondes)",
148
- "syncIntervalSuffix": "s",
149
- "theme": "Thème",
150
- "themeDark": "Sombre",
151
- "themeLight": "Lumière",
152
- "themeSystem": "Système",
153
- "timeFormat": "Format horaire",
154
- "timeFormat12h": "Format 12 heures (1:30 PM)",
155
- "timeFormat24h": "Format 24 heures (13:30)",
156
- "timeFormatDescription": "Choisissez comment l'heure est affichée.",
157
- "timezone": "Fuseau horaire",
158
- "title": "Réglages généraux",
159
- "unitSystem": "Système d'unité",
160
- "unitSystemDesc": "Choisir comment les distances et les vitesses sont affichées",
70
+ "publicApiSettings": "Public API",
71
+ "publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
161
72
  "watchedThresholdMovie": "Movie Watched Threshold",
162
73
  "watchedThresholdMovieDesc": "Percentage of a movie that must be watched before it's marked complete",
74
+ "watchedThresholdTv": "TV Episode Watched Threshold",
75
+ "watchedThresholdTvDesc": "Percentage of an episode that must be watched before it's marked complete",
163
76
  "watchedThresholdMusic": "Track Watched Threshold",
164
77
  "watchedThresholdMusicDesc": "Percentage of a track that must be played before it's marked complete",
165
78
  "watchedThresholdSuffix": "%",
166
- "watchedThresholdTv": "TV Episode Watched Threshold",
167
- "watchedThresholdTvDesc": "Percentage of an episode that must be watched before it's marked complete"
168
- },
169
- "import": {
170
- "apiKeyHelp": "Trouvé dans les paramètres Tautulli → Interface Web → Clé d'API.",
171
- "apiKeyPlaceholder": "Votre clé API Tautulli",
172
- "connectToTautulli": "Se connecter à Tautulli",
173
- "connectedFound": "Connecté ! Utilisateurs {{users}} trouvés et enregistrements de l'historique {{records}}.",
174
- "enrichMetadata": "Enrichir avec les métadonnées du média (recommandé)",
175
- "enrichMetadataHelp": "Récupère des métadonnées supplémentaires depuis votre serveur multimédia pour les sessions importées.",
176
- "enriched": "Enrichi",
177
- "errors": "Erreurs",
178
- "exportBackupHelp": "Dans Jellystat, allez dans Paramètres → Sauvegarde → Sauvegarde d'activités pour exporter vos données.",
179
- "exportBackupHint": "Exporter une sauvegarde d'activité depuis Jellystat",
180
- "howItWorks": "Comment fonctionne l'import",
181
- "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.",
182
- "importComplete": "Importation terminée",
183
- "importFailed": "Échec de l'importation",
184
- "importHistory": "Historique d'importation",
185
- "importHistoryDesc": "Importer des données historiques de surveillance à partir de sources externes",
186
- "importInProgressGeneric": "Importation en cours...",
187
- "importInProgressPercent": "Importation en cours ({{percent}}% terminé)...",
188
- "importOptions": "Options d'importation",
189
- "importProgress": "Progression de l'import",
190
- "imported": "Importé",
191
- "importing": "Importation en cours...",
192
- "includeStreamDetails": "Inclure les données détaillées du flux (codecs, débit, résolution)",
193
- "includeStreamDetailsHelp": "Importe des informations de flux supplémentaires. Peut augmenter considérablement le temps d'importation.",
194
- "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
195
- "jellystat": "Importer depuis Jellystat",
196
- "noServers": "Aucun serveur connecté",
197
- "noServersHint": "Vous avez besoin d'au moins un serveur connecté pour importer des données.",
198
- "overwriteFriendlyNames": "Remplacer les noms conviviaux existants par des noms Tautulli",
199
- "overwriteFriendlyNamesHelp": "Les noms d'identité existants dans Tracearr seront remplacés par les noms amicaux de Tautulli.",
200
- "page": "Page",
201
- "pleaseEnterDetails": "Veuillez entrer l'URL et la clé API de Tautulli",
202
- "pleaseSelectJsonFile": "Veuillez sélectionner un fichier JSON",
203
- "plex": "Plex (Tautulli)",
204
- "processed": "Traité",
205
- "recordsMayBeSkipped": "Les enregistrements peuvent être ignorés si :",
206
- "selectJellyfinServer": "Sélectionnez un serveur Jellyfin ou Emby",
207
- "selectPlexServer": "Sélectionnez un serveur Plex",
208
- "selectTargetServer": "Sélectionnez le serveur cible",
209
- "skipDuplicate": "Dupliquer la session — La session a déjà été importée précédemment.",
210
- "skipInProgress": "Session en cours — Les sessions actives/incomplètes sans identifiant de référence sont ignorées.",
211
- "skipSyncHint": "Si plusieurs enregistrements sont ignorés, assurez-vous que vous avez récemment synchronisé votre serveur dans Paramètres → Serveurs.",
212
- "skipUserNotFoundJellyfin": "Utilisateur introuvable — L'utilisateur Jellyfin/Emby n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
213
- "skipUserNotFoundPlex": "Utilisateur introuvable — L'utilisateur Plex n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
214
- "skipped": "Ignoré",
215
- "startImport": "Commencer l'importation",
216
- "startingImport": "Démarrage de l'importation...",
217
- "step1": "1",
218
- "step2": "2",
219
- "targetServer": "Target Server",
220
- "tautulli": "Importer depuis Tautulli",
221
- "tautulliUrl": "URL Tautulli",
222
- "tautulliUrlHelp": "L'URL de votre instance Tautulli.",
223
- "tautulliUrlPlaceholder": "http://localhost:8181",
224
- "testing": "Test en cours...",
225
- "testingConnection": "Test de la connexion...",
226
- "title": "Importer des données",
227
- "updateExistingRecords": "Mettre à jour les enregistrements existants avec les détails du flux",
228
- "updateExistingRecordsHelp": "Les enregistrements précédemment importés seront mis à jour avec les données de qualité du flux.",
229
- "uploadJellystatBackup": "Télécharger la sauvegarde Jellystat",
230
- "uploadingBackup": "Téléchargement du fichier de sauvegarde...",
231
- "playbackReporting": "Playback Reporting Plugin",
232
- "playbackReportingDesc": "Import history directly from the Playback Reporting plugin installed on your Jellyfin or Emby server. No file export needed.",
233
- "checkPlugin": "Check Plugin",
234
- "checkingPlugin": "Checking...",
235
- "pluginFound": "Plugin found: {{records}} records from {{oldestDate}} to {{newestDate}}",
236
- "pluginNotInstalled": "The Playback Reporting plugin is not installed on this server, or Tracearr cannot reach it. Install it from the server's plugin catalog to start recording history, or use the Jellystat import below.",
237
- "serverTimezone": "Server Timezone",
238
- "serverTimezoneHelp": "Must match the timezone configured on your media server host, not your browser's timezone. Playback Reporting timestamps are stored in local server time.",
239
- "importFullRange": "Import full history",
240
- "importFullRangeHelp": "By default only history older than Tracearr's earliest tracked session for this server is imported, so sessions Tracearr already recorded are never duplicated. Enable this to import the plugin's entire history regardless of overlap, if your Tracearr history has gaps. Exact duplicates are still skipped.",
241
- "overlapSkipped": "{{count}} skipped as overlap",
242
- "duplicates": "{{count}} duplicates skipped",
243
- "skipOverlap": "Overlapping record - the timestamp falls inside the period Tracearr already tracks for this server. Enable full-range import to include it.",
244
- "skipDuplicatePlugin": "Duplicate record - already imported directly or arrived earlier via a Jellystat import of the same plugin data."
245
- },
246
- "ipWarning": {
247
- "acknowledge": "Compris",
248
- "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."
249
- },
250
- "jobs": {
251
- "backfill": "Remplissage",
252
- "cleanup": "Nettoyage",
253
- "delayed": "différé",
254
- "description": "Gérer les tâches de fond qui gardent vos données exactes et optimisées.",
255
- "errors": "erreurs",
256
- "jobHistory": "Historique des tâches",
257
- "jobHistoryDesc": "Exécution récente d'une tâche de maintenance",
258
- "lastJobCompleted": "Dernière tâche terminée avec succès",
259
- "lastJobFailed": "La dernière tâche a échoué",
260
- "mayTakeAWhile": "Cela peut prendre un certain temps",
261
- "mayTakeAWhileDesc": "Cette tâche peut prendre plusieurs minutes selon la taille de votre bibliothèque.",
262
- "normalization": "Normalisation",
263
- "processed": "traité",
264
- "queued": "mis en file d'attente",
265
- "runConfirm": "Exécuter {{name}}?",
266
- "runJob": "Exécuter le Job",
267
- "running": "en cours d'exécution",
268
- "runningState": "En cours d'exécution",
269
- "startJob": "Commencer la tâche",
270
- "title": "Tâches d'entretien",
271
- "unchanged": "inchangé",
272
- "updated": "Mis à jour",
273
- "waiting": "En attente"
274
- },
275
- "mobile": {
276
- "addDevice": "Ajouter un appareil",
277
- "connectedDevices": "Appareils connectés",
278
- "connectedDevicesDesc": "Périphériques {{count}} appariés à votre serveur",
279
- "copyToken": "Copier le jeton",
280
- "deviceName": "Nom de l'appareil",
281
- "deviceNamePlaceholder": "par exemple iPhone 15",
282
- "devicesConnected": "{{current}} des appareils {{max}} connectés",
283
- "disable": "Désactiver",
284
- "disableMobileAccess": "Désactiver l'accès mobile",
285
- "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.",
286
- "done": "Fait",
287
- "downloadOnAppStore": "Télécharger sur l'App Store",
288
- "enableMobileAccess": "Activer l'accès mobile",
289
- "enabling": "Activation...",
290
- "expiresIn": "Expire dans {{time}}",
291
- "externalUrlBanner": "Utiliser un proxy inversé ou accéder à distance ? Définissez votre",
292
- "externalUrlBannerLink": "URL externe",
293
- "externalUrlBannerSuffix": "pour que l'application mobile puisse se connecter à votre serveur.",
294
- "externalUrlRequired": "Une URL externe doit être configurée dans les paramètres généraux pour que l'appairage mobile fonctionne.",
295
- "failedToGenerateToken": "Impossible de générer le jeton",
296
- "generateToken": "Générer un jeton d'appairage",
297
- "getOnGooglePlay": "Télécharger sur Google Play",
298
- "getTheApp": "Téléchargez l'application",
299
- "getTheAppDesc": "Téléchargez l'application mobile Tracearr pour iOS ou Android",
300
- "mobileAccessDisabled": "Accès mobile désactivé",
301
- "mobileAccessDisabledDesc": "Activez l'accès mobile pour permettre à l'application mobile Tracearr de se connecter à votre serveur.",
302
- "noDevices": "Aucun appareil connecté",
303
- "oneTimePairToken": "Jeton de Paire à usage unique",
304
- "pairDevice": "Associer un appareil",
305
- "pairNewDevice": "Associer un nouvel appareil",
306
- "pairNewDeviceDesc": "Scannez le code QR avec l'application mobile Tracearr ou saisissez le jeton manuellement.",
307
- "pairYourDevice": "Associer votre appareil",
308
- "pairYourDeviceDesc": "Scannez le code QR avec l'application Tracearr pour connecter ce serveur.",
309
- "pendingTokens": "{{count}} token en attente",
310
- "removeDevice": "Supprimer l'appareil",
311
- "removeDeviceConfirm": "Êtes-vous sûr de vouloir supprimer {{deviceName}}? Cet appareil devra être relié à nouveau pour se reconnecter.",
312
- "renameDevice": "Renommer l'appareil",
313
- "renameDeviceDesc": "Entrez un nom pour identifier cet appareil dans la liste.",
314
- "revokeAll": "Révoquer toutes les sessions",
315
- "revokeAllConfirm": "Cela déconnectera tous les appareils mobiles. Ils devront s'appairer à nouveau pour se reconnecter.",
316
- "revokeAllSessions": "Révoquer tout",
317
- "scanQrCode": "Scanner le code QR",
318
- "title": "Application mobile",
319
- "tokenExpires": "Le jeton d'appairage expire dans {{time}}",
320
- "tokenExpiryNote": "Ce jeton expire dans 5 minutes et ne peut être utilisé qu'une seule fois."
321
- },
322
- "notifications": {
323
- "agentCard": {
324
- "default": "Par défaut",
325
- "editSettings": "Modifier les paramètres",
326
- "events": "Évènements",
327
- "notConfigured": "Non entièrement configuré.",
328
- "saved": "Enregistré",
329
- "sendTest": "Envoyer le test"
330
- },
331
- "routing": {
332
- "discord": "Discord",
333
- "event": "Evénement",
334
- "web": "Web",
335
- "webNote": "Les notifications push sont configurées par appareil dans l'application mobile.",
336
- "webToastNote": "affiche les notifications toast dans ce navigateur.",
337
- "webhook": "Webhook"
338
- }
339
- },
340
- "plex": {
341
- "chooseServer": "Choisir le serveur Plex à surveiller",
342
- "selectServer": "Sélectionner un serveur",
343
- "signInWithPlex": "Se connecter avec Plex",
344
- "signUpWithPlex": "S'inscrire avec Plex"
345
- },
346
- "serverHealth": {
347
- "multipleUnreachable": "{{count}} serveurs injoignables : {{serverNames}}",
348
- "unreachable": "{{serverName}} est inaccessible"
79
+ "apiRateLimit": "API Rate Limit",
80
+ "apiRateLimitDesc": "Maximum public API requests per minute per key. Restart required to apply.",
81
+ "apiRateLimitSuffix": "/min"
349
82
  },
350
83
  "servers": {
84
+ "title": "Serveurs connectés",
351
85
  "addServer": "Ajouter un serveur",
352
- "addServerDialogDescOther": "Connectez un serveur Jellyfin ou Emby.",
353
- "addServerDialogDescPlex": "Sélectionnez un serveur Plex à partir de votre compte lié.",
354
- "added": "Ajouté {{date}}",
355
- "allFieldsRequired": "Tous les champs sont obligatoires",
86
+ "serverName": "Nom du serveur",
87
+ "serverUrl": "URL du serveur",
88
+ "syncInterval": "Intervalle de synchronisation",
89
+ "testConnection": "Tester la connexion",
90
+ "connectionSuccess": "Connexion réussie",
91
+ "connectionFailed": "Échec de la connexion",
92
+ "noServersConnected": "Aucun serveur connecté",
93
+ "noServersConnectedHint": "Cliquez sur \"Ajouter un serveur\" pour connecter un serveur Jellyfin ou Emby",
94
+ "serverType": "Type de serveur",
95
+ "loadingAccounts": "Chargement des comptes Plex liés...",
96
+ "noPlexAccountsLinked": "Aucun compte Plex lié pour le moment",
97
+ "noPlexAccountsLinkedHint": "Lier un compte Plex ci-dessus, puis revenir pour ajouter un serveur.",
98
+ "selectPlexAccount": "Sélectionnez le compte Plex",
99
+ "chooseAccount": "Choisissez un compte...",
100
+ "selectAccountHelp": "Sélectionnez le compte Plex dont vous voulez découvrir les serveurs.",
356
101
  "allServersConnected": "Tous les serveurs connectés",
357
102
  "allServersConnectedDesc": "Tous les serveurs de ce compte sont déjà connectés.",
358
- "apiKeyHelp": "Trouvé dans le tableau de bord de votre serveur multimédia sous Clés API ou Paramètres avancés.",
359
- "apiKeyHelpEmby": "Trouvez ceci dans Emby Server → Clés API",
360
- "apiKeyHelpJellyfin": "Trouvez ceci dans le tableau de bord Jellyfin → Clés API",
103
+ "serverUrlPlaceholder": "http://192.168.1.100:8096",
104
+ "serverUrlHelp": "URL directe vers votre serveur Jellyfin ou Emby. Utilisez IP:port pour une fiabilité optimale.",
105
+ "serverNamePlaceholder": "Mon serveur multimédia",
361
106
  "apiKeyPlaceholder": "Entrez votre clé API",
362
- "checkingConnection": "Checking connection…",
363
- "chooseAccount": "Choisissez un compte...",
364
- "connectServer": "Connecter le serveur",
107
+ "apiKeyHelp": "Trouvé dans le tableau de bord de votre serveur multimédia sous Clés API ou Paramètres avancés.",
365
108
  "connecting": "Connexion en cours...",
366
- "connectionFailed": "Échec de la connexion",
367
- "connectionSuccess": "Connexion réussie",
368
- "description": "Gérez vos serveurs Plex, Jellyfin et Emby connectés",
369
- "discoveringConnections": "Découverte des connexions...",
370
- "discoveringServers": "Recherche des serveurs Plex disponibles...",
109
+ "connectServer": "Connecter le serveur",
110
+ "removeServer": "Supprimer le serveur",
111
+ "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.",
371
112
  "editServer": "Modifier le serveur",
372
113
  "editServerDesc": "Mettre à jour le nom du serveur ou l'URL de connexion.",
373
- "loadingAccounts": "Chargement des comptes Plex liés...",
374
- "noPlexAccountsLinked": "Aucun compte Plex lié pour le moment",
375
- "noPlexAccountsLinkedHint": "Lier un compte Plex ci-dessus, puis revenir pour ajouter un serveur.",
376
- "noServersConnected": "Aucun serveur connecté",
377
- "noServersConnectedHint": "Cliquez sur \"Ajouter un serveur\" pour connecter un serveur Jellyfin ou Emby",
114
+ "serverColor": "Couleur du serveur",
115
+ "serverColorDesc": "Utilisé pour l'attribution visuelle dans la vue multi-serveur",
116
+ "updating": "Mise à jour en cours...",
117
+ "allFieldsRequired": "Tous les champs sont obligatoires",
118
+ "addServerDialogDescPlex": "Sélectionnez un serveur Plex à partir de votre compte lié.",
119
+ "addServerDialogDescOther": "Connectez un serveur Jellyfin ou Emby.",
120
+ "description": "Gérez vos serveurs Plex, Jellyfin et Emby connectés",
121
+ "discoveringServers": "Recherche des serveurs Plex disponibles...",
122
+ "discoveringConnections": "Découverte des connexions...",
378
123
  "plexAccount": "Compte Plex",
124
+ "serverUrlHelpJellyfin": "L'URL où votre serveur Jellyfin est accessible",
125
+ "serverUrlHelpEmby": "L'URL où votre serveur Emby est accessible",
126
+ "apiKeyHelpJellyfin": "Trouvez ceci dans le tableau de bord Jellyfin → Clés API",
127
+ "apiKeyHelpEmby": "Trouvez ceci dans Emby Server → Clés API",
379
128
  "plexServerPlaceholder": "Mon serveur Plex",
380
129
  "plexServerUrlPlaceholder": "http://192.168.1.100:32400",
381
- "pluginUpdateAvailable": "Plugin update available",
382
- "pluginVersion": "plugin v{{version}}",
383
- "pollingMode": "Polling",
384
- "posterSource": {
385
- "automatic": "Automatic (most recent)",
386
- "description": "When a title is on more than one server, use this server's poster. If it doesn't have one, we'll fall back to the most recently added copy.",
387
- "emptyHint": "Add a server to choose a preferred poster source.",
388
- "label": "Preferred Poster Source",
389
- "title": "Poster Preferences",
390
- "titleDesc": "Choose which server's poster is shown when a title exists on more than one server"
391
- },
130
+ "updateHint": "Ou cliquez sur Mettre à jour ci-dessous pour enregistrer uniquement le changement de nom.",
131
+ "added": "Ajouté {{date}}",
392
132
  "realtimeActive": "Real-time updates active",
133
+ "pollingMode": "Polling",
134
+ "setupRealtime": "Set up real-time updates",
135
+ "realtimeError": "Real-time error",
136
+ "checkingConnection": "Checking connection…",
137
+ "pluginVersion": "plugin v{{version}}",
138
+ "pluginUpdateAvailable": "Plugin update available",
393
139
  "realtimeDialog": {
394
- "autoDetectNote": "Restart Jellyfin or Emby after installing the plugin; the restart is required. Tracearr itself needs no restart and picks the plugin up automatically.",
395
- "close": "Close",
396
- "copyUrl": "Copy URL",
140
+ "title": "Enable real-time updates",
141
+ "updateTitle": "Update the Tracearr SSE plugin",
142
+ "jellyfinDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
397
143
  "embyDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
398
- "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
144
+ "jellyfinUpdateDescription": "A newer plugin release is available. Open your Jellyfin dashboard, go to Plugins, Catalog, and update Tracearr SSE, then restart Jellyfin.",
399
145
  "embyUpdateDescription": "A newer plugin release is available. Download the latest release zip, replace the plugin DLL in your Emby plugins folder, and restart Emby.",
400
- "jellyfinDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
146
+ "repositoryUrl": "Repository URL",
147
+ "copyUrl": "Copy URL",
401
148
  "jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
402
- "jellyfinUpdateDescription": "A newer plugin release is available. Open your Jellyfin dashboard, go to Plugins, Catalog, and update Tracearr SSE, then restart Jellyfin.",
149
+ "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
403
150
  "openReleases": "Open releases page",
404
- "repositoryUrl": "Repository URL",
405
- "title": "Enable real-time updates",
406
- "updateTitle": "Update the Tracearr SSE plugin",
151
+ "autoDetectNote": "Restart Jellyfin or Emby after installing the plugin; the restart is required. Tracearr itself needs no restart and picks the plugin up automatically.",
152
+ "close": "Close",
407
153
  "issueBlocked": "The server reports the plugin as installed and active, but Tracearr gets a 404 from its endpoint. A reverse proxy blocking the path is the usual cause.",
408
154
  "issueRestartRequired": "The plugin is installed, but the media server needs a restart before it activates.",
409
155
  "issueMalfunctioned": "The server reports the plugin failed to load. Updating the plugin or the media server usually clears this."
410
156
  },
411
- "removeServer": "Supprimer le serveur",
412
- "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.",
413
- "selectAccountHelp": "Sélectionnez le compte Plex dont vous voulez découvrir les serveurs.",
414
- "selectPlexAccount": "Sélectionnez le compte Plex",
415
- "serverColor": "Couleur du serveur",
416
- "serverColorDesc": "Utilisé pour l'attribution visuelle dans la vue multi-serveur",
417
- "serverName": "Nom du serveur",
418
- "serverNamePlaceholder": "Mon serveur multimédia",
419
- "serverType": "Type de serveur",
420
- "serverUrl": "URL du serveur",
421
- "serverUrlHelp": "URL directe vers votre serveur Jellyfin ou Emby. Utilisez IP:port pour une fiabilité optimale.",
422
- "serverUrlHelpEmby": "L'URL où votre serveur Emby est accessible",
423
- "serverUrlHelpJellyfin": "L'URL où votre serveur Jellyfin est accessible",
424
- "serverUrlPlaceholder": "http://192.168.1.100:8096",
425
- "setupRealtime": "Set up real-time updates",
426
- "realtimeError": "Real-time error",
427
- "syncInterval": "Intervalle de synchronisation",
428
- "testConnection": "Tester la connexion",
429
- "title": "Serveurs connectés",
430
- "updateHint": "Ou cliquez sur Mettre à jour ci-dessous pour enregistrer uniquement le changement de nom.",
431
- "updating": "Mise à jour en cours..."
432
- },
433
- "tabs": {
434
- "accessControl": "Contrôle d'accès",
435
- "advanced": "Avancé",
436
- "backup": "Sauvegarde",
437
- "general": "Général",
438
- "import": "Importation",
439
- "jobs": "Tâches",
440
- "mobile": "Application mobile",
441
- "notifications": "Notifications",
442
- "servers": "Serveurs",
443
- "tailscale": "Tailscale"
157
+ "posterSource": {
158
+ "title": "Poster Preferences",
159
+ "titleDesc": "Choose which server's poster is shown when a title exists on more than one server",
160
+ "label": "Preferred Poster Source",
161
+ "description": "When a title is on more than one server, use this server's poster. If it doesn't have one, we'll fall back to the most recently added copy.",
162
+ "automatic": "Automatic (most recent)",
163
+ "emptyHint": "Add a server to choose a preferred poster source."
164
+ }
444
165
  },
445
- "tailscale": {
446
- "authorize": "Autoriser dans Tailscale",
447
- "awaitingAuth": "En attente d'autorisation...",
448
- "connected": "Tailscale est connecté. Votre instance Tracearr est disponible sur le tailnet.",
449
- "description": "Accédez à Tracearr en toute sécurité sur votre réseau Tailscale, sans redirection de port.",
450
- "disable": "Désactiver Tailscale",
451
- "disableConfirmDescription": "Cela déconnectera Tracearr de votre tailnet. Vous pourrez le réactiver sans avoir à l'autoriser de nouveau.",
452
- "disableConfirmTitle": "Désactiver Tailscale ?",
453
- "disabledDescription": "Activez Tailscale pour placer Tracearr sur votre tailnet privé. Aucune redirection de port ni reverse proxy requis.",
454
- "dnsName": "Nom du DNS",
455
- "enable": "Activer Tailscale",
456
- "exitNodeNone": "Aucun",
457
- "exitNodeOffline": "(hors ligne)",
458
- "hideLogs": "Masquer les journaux",
459
- "hostname": "Nom d'hôte",
460
- "hostnameHint": "Nom personnalisé facultatif pour cet appareil sur votre tailnet. Lettres, chiffres et tirets uniquement.",
461
- "hostnameLabel": "Nom d'hôte de l'appareil",
462
- "noLogs": "Aucune journalisation de sortie disponible.",
463
- "notAvailable": "Le binaire de Tailscale est introuvable. Cette fonctionnalité n'est uniquement disponible que lorsque vous utilisez l'image Docker officielle.",
464
- "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.",
465
- "resetConfirmTitle": "Réinitialiser Tailscale ?",
466
- "showLogs": "Afficher les journaux",
467
- "starting": "Démarrage de Tailscale...",
468
- "stopping": "Arrêt de Tailscale...",
469
- "tailnetUrl": "URL",
470
- "title": "VPN Tailscale",
471
- "toast": {
472
- "disableFailed": "Échec de la désactivation de Tailscale",
473
- "disabled": "Tailscale a été désactivé.",
474
- "enableFailed": "Échec de l'activation de Tailscale",
475
- "exitNodeFailed": "Impossible de définir l'exit node",
476
- "exitNodeSet": "Exit node mis à jour.",
477
- "reset": "Tailscale a été réinitialisé.",
478
- "resetFailed": "Échec de la réinitialisation de Tailscale"
166
+ "mobile": {
167
+ "title": "Application mobile",
168
+ "pairDevice": "Associer un appareil",
169
+ "connectedDevices": "Appareils connectés",
170
+ "generateToken": "Générer un jeton d'appairage",
171
+ "scanQrCode": "Scanner le code QR",
172
+ "tokenExpires": "Le jeton d'appairage expire dans {{time}}",
173
+ "noDevices": "Aucun appareil connecté",
174
+ "revokeAll": "Révoquer toutes les sessions",
175
+ "getTheApp": "Téléchargez l'application",
176
+ "getTheAppDesc": "Téléchargez l'application mobile Tracearr pour iOS ou Android",
177
+ "getOnGooglePlay": "Télécharger sur Google Play",
178
+ "downloadOnAppStore": "Télécharger sur l'App Store",
179
+ "pairYourDevice": "Associer votre appareil",
180
+ "pairYourDeviceDesc": "Scannez le code QR avec l'application Tracearr pour connecter ce serveur.",
181
+ "externalUrlRequired": "Une URL externe doit être configurée dans les paramètres généraux pour que l'appairage mobile fonctionne.",
182
+ "mobileAccessDisabled": "Accès mobile désactivé",
183
+ "mobileAccessDisabledDesc": "Activez l'accès mobile pour permettre à l'application mobile Tracearr de se connecter à votre serveur.",
184
+ "enableMobileAccess": "Activer l'accès mobile",
185
+ "enabling": "Activation...",
186
+ "devicesConnected": "{{current}} des appareils {{max}} connectés",
187
+ "pendingTokens": "{{count}} token en attente",
188
+ "addDevice": "Ajouter un appareil",
189
+ "disableMobileAccess": "Désactiver l'accès mobile",
190
+ "connectedDevicesDesc": "Périphériques {{count}} appariés à votre serveur",
191
+ "revokeAllSessions": "Révoquer tout",
192
+ "pairNewDevice": "Associer un nouvel appareil",
193
+ "pairNewDeviceDesc": "Scannez le code QR avec l'application mobile Tracearr ou saisissez le jeton manuellement.",
194
+ "expiresIn": "Expire dans {{time}}",
195
+ "oneTimePairToken": "Jeton de Paire à usage unique",
196
+ "copyToken": "Copier le jeton",
197
+ "tokenExpiryNote": "Ce jeton expire dans 5 minutes et ne peut être utilisé qu'une seule fois.",
198
+ "done": "Fait",
199
+ "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.",
200
+ "disable": "Désactiver",
201
+ "revokeAllConfirm": "Cela déconnectera tous les appareils mobiles. Ils devront s'appairer à nouveau pour se reconnecter.",
202
+ "renameDevice": "Renommer l'appareil",
203
+ "renameDeviceDesc": "Entrez un nom pour identifier cet appareil dans la liste.",
204
+ "deviceName": "Nom de l'appareil",
205
+ "deviceNamePlaceholder": "par exemple iPhone 15",
206
+ "removeDevice": "Supprimer l'appareil",
207
+ "failedToGenerateToken": "Impossible de générer le jeton",
208
+ "removeDeviceConfirm": "Êtes-vous sûr de vouloir supprimer {{deviceName}}? Cet appareil devra être relié à nouveau pour se reconnecter.",
209
+ "externalUrlBanner": "Utiliser un proxy inversé ou accéder à distance ? Définissez votre",
210
+ "externalUrlBannerLink": "URL externe",
211
+ "externalUrlBannerSuffix": "pour que l'application mobile puisse se connecter à votre serveur."
212
+ },
213
+ "tailscale": {
214
+ "title": "VPN Tailscale",
215
+ "description": "Accédez à Tracearr en toute sécurité sur votre réseau Tailscale, sans redirection de port.",
216
+ "notAvailable": "Le binaire de Tailscale est introuvable. Cette fonctionnalité n'est uniquement disponible que lorsque vous utilisez l'image Docker officielle.",
217
+ "disabledDescription": "Activez Tailscale pour placer Tracearr sur votre tailnet privé. Aucune redirection de port ni reverse proxy requis.",
218
+ "hostnameLabel": "Nom d'hôte de l'appareil",
219
+ "hostnameHint": "Nom personnalisé facultatif pour cet appareil sur votre tailnet. Lettres, chiffres et tirets uniquement.",
220
+ "enable": "Activer Tailscale",
221
+ "disable": "Désactiver Tailscale",
222
+ "starting": "Démarrage de Tailscale...",
223
+ "stopping": "Arrêt de Tailscale...",
224
+ "awaitingAuth": "En attente d'autorisation...",
225
+ "authorize": "Autoriser dans Tailscale",
226
+ "connected": "Tailscale est connecté. Votre instance Tracearr est disponible sur le tailnet.",
227
+ "hostname": "Nom d'hôte",
228
+ "dnsName": "Nom du DNS",
229
+ "tailnetUrl": "URL",
230
+ "showLogs": "Afficher les journaux",
231
+ "hideLogs": "Masquer les journaux",
232
+ "noLogs": "Aucune journalisation de sortie disponible.",
233
+ "exitNodeNone": "Aucun",
234
+ "exitNodeOffline": "(hors ligne)",
235
+ "unknownError": "Une erreur inconnue s'est produite.",
236
+ "disableConfirmTitle": "Désactiver Tailscale ?",
237
+ "disableConfirmDescription": "Cela déconnectera Tracearr de votre tailnet. Vous pourrez le réactiver sans avoir à l'autoriser de nouveau.",
238
+ "resetConfirmTitle": "Réinitialiser Tailscale ?",
239
+ "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.",
240
+ "toast": {
241
+ "disabled": "Tailscale a été désactivé.",
242
+ "enableFailed": "Échec de l'activation de Tailscale",
243
+ "disableFailed": "Échec de la désactivation de Tailscale",
244
+ "reset": "Tailscale a été réinitialisé.",
245
+ "resetFailed": "Échec de la réinitialisation de Tailscale",
246
+ "exitNodeSet": "Exit node mis à jour.",
247
+ "exitNodeFailed": "Impossible de définir l'exit node"
248
+ }
249
+ },
250
+ "webhooks": {
251
+ "title": "Configuration du webhook",
252
+ "discordWebhook": "URL du webhook Discord",
253
+ "ntfyTopic": "Sujet Ntfy",
254
+ "customWebhook": "URL personnalisée du webhook",
255
+ "webhookFormat": "Format du webhook",
256
+ "testWebhook": "Tester le webhook"
257
+ },
258
+ "jobs": {
259
+ "title": "Tâches d'entretien",
260
+ "description": "Gérer les tâches de fond qui gardent vos données exactes et optimisées.",
261
+ "normalization": "Normalisation",
262
+ "backfill": "Remplissage",
263
+ "cleanup": "Nettoyage",
264
+ "running": "en cours d'exécution",
265
+ "queued": "mis en file d'attente",
266
+ "delayed": "différé",
267
+ "waiting": "En attente",
268
+ "runningState": "En cours d'exécution",
269
+ "runJob": "Exécuter le Job",
270
+ "processed": "traité",
271
+ "updated": "Mis à jour",
272
+ "unchanged": "inchangé",
273
+ "errors": "erreurs",
274
+ "lastJobCompleted": "Dernière tâche terminée avec succès",
275
+ "lastJobFailed": "La dernière tâche a échoué",
276
+ "jobHistory": "Historique des tâches",
277
+ "jobHistoryDesc": "Exécution récente d'une tâche de maintenance",
278
+ "runConfirm": "Exécuter {{name}}?",
279
+ "mayTakeAWhile": "Cela peut prendre un certain temps",
280
+ "mayTakeAWhileDesc": "Cette tâche peut prendre plusieurs minutes selon la taille de votre bibliothèque.",
281
+ "startJob": "Commencer la tâche"
282
+ },
283
+ "notifications": {
284
+ "routing": {
285
+ "event": "Evénement",
286
+ "web": "Web",
287
+ "discord": "Discord",
288
+ "webhook": "Webhook",
289
+ "webNote": "Les notifications push sont configurées par appareil dans l'application mobile.",
290
+ "webToastNote": "affiche les notifications toast dans ce navigateur."
479
291
  },
480
- "unknownError": "Une erreur inconnue s'est produite."
292
+ "agentCard": {
293
+ "saved": "Enregistré",
294
+ "default": "Par défaut",
295
+ "events": "Évènements",
296
+ "sendTest": "Envoyer le test",
297
+ "notConfigured": "Non entièrement configuré.",
298
+ "editSettings": "Modifier les paramètres"
299
+ }
300
+ },
301
+ "advanced": {
302
+ "title": "Réglages avancés",
303
+ "externalUrl": "URL externe",
304
+ "trustProxy": "En-têtes de confiance du Proxy",
305
+ "reverseProxy": "Proxy inversé",
306
+ "connectionScenarios": "Scénarios de connexion"
307
+ },
308
+ "accessControl": {
309
+ "title": "Contrôle d'accès",
310
+ "description": "Configurer qui peut accéder à Tracearr",
311
+ "allowGuestAccess": "Autoriser l'accès aux invités",
312
+ "allowGuestAccessDesc": "Lorsque désactivé, seul le propriétaire du serveur peut se connecter à Tracearr",
313
+ "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é\"."
314
+ },
315
+ "import": {
316
+ "title": "Importer des données",
317
+ "jellystat": "Importer depuis Jellystat",
318
+ "tautulli": "Importer depuis Tautulli",
319
+ "importProgress": "Progression de l'import",
320
+ "importComplete": "Importation terminée",
321
+ "importFailed": "Échec de l'importation",
322
+ "processed": "Traité",
323
+ "page": "Page",
324
+ "imported": "Importé",
325
+ "skipped": "Ignoré",
326
+ "enriched": "Enrichi",
327
+ "errors": "Erreurs",
328
+ "noServers": "Aucun serveur connecté",
329
+ "noServersHint": "Vous avez besoin d'au moins un serveur connecté pour importer des données.",
330
+ "tautulliUrl": "URL Tautulli",
331
+ "tautulliUrlPlaceholder": "http://localhost:8181",
332
+ "tautulliUrlHelp": "L'URL de votre instance Tautulli.",
333
+ "apiKeyHelp": "Trouvé dans les paramètres Tautulli → Interface Web → Clé d'API.",
334
+ "testing": "Test en cours...",
335
+ "connectToTautulli": "Se connecter à Tautulli",
336
+ "importHistory": "Historique d'importation",
337
+ "targetServer": "Target Server",
338
+ "selectPlexServer": "Sélectionnez un serveur Plex",
339
+ "overwriteFriendlyNames": "Remplacer les noms conviviaux existants par des noms Tautulli",
340
+ "overwriteFriendlyNamesHelp": "Les noms d'identité existants dans Tracearr seront remplacés par les noms amicaux de Tautulli.",
341
+ "includeStreamDetails": "Inclure les données détaillées du flux (codecs, débit, résolution)",
342
+ "includeStreamDetailsHelp": "Importe des informations de flux supplémentaires. Peut augmenter considérablement le temps d'importation.",
343
+ "importing": "Importation en cours...",
344
+ "startImport": "Commencer l'importation",
345
+ "howItWorks": "Comment fonctionne l'import",
346
+ "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.",
347
+ "recordsMayBeSkipped": "Les enregistrements peuvent être ignorés si :",
348
+ "selectTargetServer": "Sélectionnez le serveur cible",
349
+ "selectJellyfinServer": "Sélectionnez un serveur Jellyfin ou Emby",
350
+ "uploadJellystatBackup": "Télécharger la sauvegarde Jellystat",
351
+ "exportBackupHint": "Exporter une sauvegarde d'activité depuis Jellystat",
352
+ "exportBackupHelp": "Dans Jellystat, allez dans Paramètres → Sauvegarde → Sauvegarde d'activités pour exporter vos données.",
353
+ "importOptions": "Options d'importation",
354
+ "enrichMetadata": "Enrichir avec les métadonnées du média (recommandé)",
355
+ "enrichMetadataHelp": "Récupère des métadonnées supplémentaires depuis votre serveur multimédia pour les sessions importées.",
356
+ "updateExistingRecords": "Mettre à jour les enregistrements existants avec les détails du flux",
357
+ "updateExistingRecordsHelp": "Les enregistrements précédemment importés seront mis à jour avec les données de qualité du flux.",
358
+ "pleaseEnterDetails": "Veuillez entrer l'URL et la clé API de Tautulli",
359
+ "testingConnection": "Test de la connexion...",
360
+ "pleaseSelectJsonFile": "Veuillez sélectionner un fichier JSON",
361
+ "uploadingBackup": "Téléchargement du fichier de sauvegarde...",
362
+ "importHistoryDesc": "Importer des données historiques de surveillance à partir de sources externes",
363
+ "plex": "Plex (Tautulli)",
364
+ "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
365
+ "step1": "1",
366
+ "step2": "2",
367
+ "apiKeyPlaceholder": "Votre clé API Tautulli",
368
+ "skipUserNotFoundPlex": "Utilisateur introuvable — L'utilisateur Plex n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
369
+ "skipDuplicate": "Dupliquer la session — La session a déjà été importée précédemment.",
370
+ "skipInProgress": "Session en cours — Les sessions actives/incomplètes sans identifiant de référence sont ignorées.",
371
+ "skipUserNotFoundJellyfin": "Utilisateur introuvable — L'utilisateur Jellyfin/Emby n'existe pas dans Tracearr. Synchronisez d'abord votre serveur pour ajouter tous les utilisateurs.",
372
+ "skipSyncHint": "Si plusieurs enregistrements sont ignorés, assurez-vous que vous avez récemment synchronisé votre serveur dans Paramètres → Serveurs.",
373
+ "importInProgressPercent": "Importation en cours ({{percent}}% terminé)...",
374
+ "importInProgressGeneric": "Importation en cours...",
375
+ "startingImport": "Démarrage de l'importation...",
376
+ "connectedFound": "Connecté ! Utilisateurs {{users}} trouvés et enregistrements de l'historique {{records}}.",
377
+ "playbackReporting": "Playback Reporting Plugin",
378
+ "playbackReportingDesc": "Import history directly from the Playback Reporting plugin installed on your Jellyfin or Emby server. No file export needed.",
379
+ "checkPlugin": "Check Plugin",
380
+ "checkingPlugin": "Checking...",
381
+ "pluginFound": "Plugin found: {{records}} records from {{oldestDate}} to {{newestDate}}",
382
+ "pluginNotInstalled": "The Playback Reporting plugin is not installed on this server, or Tracearr cannot reach it. Install it from the server's plugin catalog to start recording history, or use the Jellystat import below.",
383
+ "serverTimezone": "Server Timezone",
384
+ "serverTimezoneHelp": "Must match the timezone configured on your media server host, not your browser's timezone. Playback Reporting timestamps are stored in local server time.",
385
+ "importFullRange": "Import full history",
386
+ "importFullRangeHelp": "By default only history older than Tracearr's earliest tracked session for this server is imported, so sessions Tracearr already recorded are never duplicated. Enable this to import the plugin's entire history regardless of overlap, if your Tracearr history has gaps. Exact duplicates are still skipped.",
387
+ "overlapSkipped": "{{count}} skipped as overlap",
388
+ "duplicates": "{{count}} duplicates skipped",
389
+ "skipOverlap": "Overlapping record - the timestamp falls inside the period Tracearr already tracks for this server. Enable full-range import to include it.",
390
+ "skipDuplicatePlugin": "Duplicate record - already imported directly or arrived earlier via a Jellystat import of the same plugin data."
391
+ },
392
+ "plex": {
393
+ "signInWithPlex": "Se connecter avec Plex",
394
+ "signUpWithPlex": "S'inscrire avec Plex",
395
+ "selectServer": "Sélectionner un serveur",
396
+ "chooseServer": "Choisir le serveur Plex à surveiller"
397
+ },
398
+ "account": {
399
+ "createAccount": "Créer un compte",
400
+ "email": "Email",
401
+ "password": "Mot de passe",
402
+ "displayName": "Nom d'affichage",
403
+ "createYourAccount": "Créez votre compte pour démarrer",
404
+ "signInToAccount": "Connectez-vous à votre compte",
405
+ "useLocalAccount": "Utiliser un compte local à la place"
481
406
  },
482
- "title": "Réglages",
483
407
  "update": {
484
- "betaUpdate": "Mise à jour bêta",
485
- "newVersion": "Nouvelle version",
486
- "pullInstructions": "Après avoir réalisé le pull Docker, redémarrez cotre conteneur pour appliquer la modification.",
487
- "releaseNotes": "Notes de version",
488
- "stableRelease": "Version stable",
489
408
  "title": "Mise à jour disponible",
409
+ "releaseNotes": "Notes de version",
490
410
  "updateCommand": "Commande de mise à jour",
411
+ "pullInstructions": "Après avoir réalisé le pull Docker, redémarrez cotre conteneur pour appliquer la modification.",
412
+ "stableRelease": "Version stable",
413
+ "betaUpdate": "Mise à jour bêta",
414
+ "newVersion": "Nouvelle version",
491
415
  "versionAvailable": "Version {{version}} disponible"
492
416
  },
493
- "webhooks": {
494
- "customWebhook": "URL personnalisée du webhook",
495
- "discordWebhook": "URL du webhook Discord",
496
- "ntfyTopic": "Sujet Ntfy",
497
- "testWebhook": "Tester le webhook",
498
- "title": "Configuration du webhook",
499
- "webhookFormat": "Format du webhook"
417
+ "serverHealth": {
418
+ "unreachable": "{{serverName}} est inaccessible",
419
+ "multipleUnreachable": "{{count}} serveurs injoignables : {{serverNames}}"
420
+ },
421
+ "ipWarning": {
422
+ "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.",
423
+ "acknowledge": "Compris"
424
+ },
425
+ "backup": {
426
+ "title": "Sauvegarde",
427
+ "backToBackups": "Retour aux sauvegardes",
428
+ "description": "Sauvegardez et restaurez vos données Tracearr",
429
+ "createBackup": "Créer une sauvegarde",
430
+ "creating": "Création de la sauvegarde...",
431
+ "uploadBackup": "Téléverser une sauvegarde",
432
+ "uploading": "Téléversement...",
433
+ "databaseSize": "Taille actuelle de la base de données : {{size}}",
434
+ "freeSpace": "Espace libre dans le répertoire de sauvegarde : {{size}}",
435
+ "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.",
436
+ "backupHistory": "Historique des sauvegardes",
437
+ "noBackups": "Aucune sauvegarde pour le moment. Créez votre première sauvegarde ci-dessus.",
438
+ "filename": "Nom du fichier",
439
+ "size": "Taille",
440
+ "date": "Date",
441
+ "type": "Type",
442
+ "version": "Version",
443
+ "actions": "Actions",
444
+ "typeManual": "Manuelle",
445
+ "typeScheduled": "Planifiée",
446
+ "typeUploaded": "Téléversé",
447
+ "restoreAction": "Restaurer",
448
+ "deleteConfirmTitle": "Supprimer la sauvegarde",
449
+ "deleteConfirmDescription": "Êtes-vous sûr de vouloir supprimer cette sauvegarde ? Cette action est irréversible.",
450
+ "schedule": "Sauvegardes planifiées",
451
+ "scheduleType": "Planification",
452
+ "scheduleDisabled": "Désactivé",
453
+ "scheduleDaily": "Journalière",
454
+ "scheduleWeekly": "Hebdomadaire",
455
+ "scheduleMonthly": "Mensuelle",
456
+ "scheduleTime": "Heure ({{timezone}})",
457
+ "scheduleDayOfWeek": "Jour de la semaine",
458
+ "scheduleDayOfMonth": "Jour du mois",
459
+ "scheduleDayOfMonthHint": "Pour les mois comportant moins de jours, la sauvegarde est effectuée le dernier jour du mois.",
460
+ "retentionCount": "Garder les dernières :",
461
+ "retentionSuffix": "sauvegardes planifiées",
462
+ "daySun": "Dimanche",
463
+ "dayMon": "Lundi",
464
+ "dayTue": "Mardi",
465
+ "dayWed": "Mercredi",
466
+ "dayThu": "Jeudi",
467
+ "dayFri": "Vendredi",
468
+ "daySat": "Samedi",
469
+ "restore": {
470
+ "title": "Restaurer la sauvegarde",
471
+ "selectedBackup": "Sauvegarde sélectionnée",
472
+ "databaseSize": "Taille de la base de données",
473
+ "sessions": "Sessions",
474
+ "users": "Utilisateurs",
475
+ "servers": "Serveurs",
476
+ "rules": "Règles",
477
+ "libraryItems": "Éléments de la bibliothèque",
478
+ "tables": "Tableaux",
479
+ "warning": "La restauration remplacera toutes les données existantes. Vous devrez vous reconnecter une fois la restauration complétée.",
480
+ "confirmLabel": "Je comprends que cela remplacera toutes les données",
481
+ "confirm": "Démarrer la restauration",
482
+ "complete": "Restauration effectuée avec succès. La page s'actualisera sous peu.",
483
+ "failed": "Échec de la restauration",
484
+ "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.",
485
+ "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.",
486
+ "tsVersionMismatch": "La sauvegarde a été créée avec TimescaleDB {{backupVersion}}, mais ce serveur ne prend en charge que jusqu'à TimescaleDB {{serverVersion}}."
487
+ },
488
+ "toast": {
489
+ "backupCreated": "Sauvegarde créée avec succès",
490
+ "backupCreateFailed": "Échec de création de la sauvegarde",
491
+ "backupUploaded": "Sauvegarde téléversée avec succès",
492
+ "backupUploadFailed": "Échec du téléversement de la sauvegarde",
493
+ "backupDeleted": "Sauvegarde supprimée",
494
+ "backupDeleteFailed": "Échec de suppression de la sauvegarde",
495
+ "restoreStarted": "La restauration a démarré",
496
+ "restoreStartFailed": "Échec du démarrage de la restauration",
497
+ "scheduleSaved": "Planification de la sauvegarde enregistrée",
498
+ "scheduleError": "Échec de l'enregistrement de la planification de la sauvegarde"
499
+ }
500
500
  }
501
501
  }