@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": "允许访客访问",
4
- "allowGuestAccessDesc": "禁用时,只有服务器所有者可以登录到 Tracearr",
5
- "description": "配置谁可以访问 Tracearr",
6
- "singleOwnerNote": "注意:当访客访问被禁用时,只有服务器所有者可以登录。所有其他用户都会看到“访问被拒绝”的消息。",
7
- "title": "访问控制"
8
- },
9
- "account": {
10
- "createAccount": "创建新账户",
11
- "createYourAccount": "创建您的账户以开始",
12
- "displayName": "显示名称",
13
- "email": "电子邮件",
14
- "password": "密码",
15
- "signInToAccount": "登录到您的帐户",
16
- "useLocalAccount": "使用本地账户"
17
- },
18
- "advanced": {
19
- "connectionScenarios": "连接场景",
20
- "externalUrl": "外部 URL",
21
- "reverseProxy": "反向代理",
22
- "title": "高级设置",
23
- "trustProxy": "信任代理头"
24
- },
25
- "backup": {
26
- "actions": "动作",
27
- "backToBackups": "返回备份",
28
- "backupHistory": "备份历史",
29
- "createBackup": "创建备份",
30
- "creating": "正在创建备份……",
31
- "databaseSize": "当前数据库大小:{{size}}",
32
- "date": "日期",
33
- "dayFri": "星期五",
34
- "dayMon": "星期一",
35
- "daySat": "星期六",
36
- "daySun": "星期日",
37
- "dayThu": "星期四",
38
- "dayTue": "星期二",
39
- "dayWed": "星期三",
40
- "deleteConfirmDescription": "您确定要删除此备份吗?此操作无法撤消。",
41
- "deleteConfirmTitle": "删除备份",
42
- "description": "备份并恢复您的 Tracearr 数据",
43
- "filename": "文件名",
44
- "freeSpace": "备份目录可用空间:{{size}}",
45
- "lowDiskSpace": "磁盘空间不足 — 备份和恢复需要至少两倍的可用空间。",
46
- "noBackups": "尚未备份。请在上面创建您的第一个备份。",
47
- "restore": {
48
- "cannotRestore": "恢复需要 PostgreSQL 超级用户权限。请确保您的数据库用户拥有超级用户权限并重试。",
49
- "complete": "还原成功完成。页面将很快刷新。",
50
- "confirm": "开始还原",
51
- "confirmLabel": "我理解这将替换所有数据",
52
- "databaseSize": "数据库大小",
53
- "failed": "还原失败",
54
- "libraryItems": "媒体库数量",
55
- "pgVersionMismatch": "备份是在 PostgreSQL {{backupVersion}} 上创建的,但此服务器运行的是 PostgreSQL {{serverVersion}}。不支持从较新版本的 PostgreSQL 恢复转储。",
56
- "rules": "规则",
57
- "selectedBackup": "所选备份",
58
- "servers": "服务器",
59
- "sessions": "会话",
60
- "tables": "表",
61
- "title": "还原备份",
62
- "tsVersionMismatch": "备份是使用 TimescaleDB {{backupVersion}} 创建的,但此服务器仅支持到 TimescaleDB {{serverVersion}}。",
63
- "users": "用户",
64
- "warning": "还原将替换所有现有数据。您需要在还原完成后重新登录。"
65
- },
66
- "restoreAction": "还原",
67
- "retentionCount": "保留最近",
68
- "retentionSuffix": "计划备份",
69
- "schedule": "计划备份",
70
- "scheduleDaily": "每天",
71
- "scheduleDayOfMonth": "每月的某一日",
72
- "scheduleDayOfMonthHint": "在日数月里,备份工作在最后一天进行。",
73
- "scheduleDayOfWeek": "星期几",
74
- "scheduleDisabled": "禁用",
75
- "scheduleMonthly": "每月",
76
- "scheduleTime": "时区({{timezone}})",
77
- "scheduleType": "计划",
78
- "scheduleWeekly": "每周",
79
- "size": "尺寸",
80
- "title": "备份",
81
- "toast": {
82
- "backupCreateFailed": "创建备份失败",
83
- "backupCreated": "备份创建成功",
84
- "backupDeleteFailed": "删除备份失败",
85
- "backupDeleted": "备份已删除",
86
- "backupUploadFailed": "上传备份失败",
87
- "backupUploaded": "备份上传成功",
88
- "restoreStartFailed": "启动还原失败",
89
- "restoreStarted": "还原开始",
90
- "scheduleError": "保存备份计划失败",
91
- "scheduleSaved": "备份计划已保存"
92
- },
93
- "type": "类型",
94
- "typeManual": "手动",
95
- "typeScheduled": "已预约",
96
- "typeUploaded": "已上传",
97
- "uploadBackup": "上传备份",
98
- "uploading": "上传中……",
99
- "version": "版本"
2
+ "title": "设置",
3
+ "tabs": {
4
+ "general": "通用",
5
+ "servers": "服务器",
6
+ "notifications": "通知",
7
+ "mobile": "移动 App",
8
+ "tailscale": "Tailscale",
9
+ "import": "导入",
10
+ "advanced": "高级设置",
11
+ "jobs": "任务",
12
+ "accessControl": "访问控制",
13
+ "backup": "备份"
100
14
  },
101
15
  "general": {
102
- "accentColor": "亮度颜色",
103
- "apiDocs": "API Docs",
104
- "apiKeyDesc": "访问 Tracearr API以进行第三方集成,如Homarr、Home Assistant等。",
105
- "apiKeyReadAccess": "您的 API 密钥授予您的 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": "通用设置",
17
+ "unitSystem": "单位系统",
18
+ "metric": "公制 (km, km/h)",
19
+ "imperial": "英制(mi, mph)",
20
+ "timezone": "时区",
21
+ "primaryAuth": "主要认证方法",
22
+ "localAccount": "本地用户",
23
+ "plexAccount": "Plex账户",
24
+ "language": "语言",
25
+ "languageDescription": "选择您首选的显示语言。",
26
+ "helpTranslate": "帮助翻译 Tracearr",
27
+ "timeFormat": "时间格式",
28
+ "timeFormatDescription": "选择时间的显示方式。",
29
+ "timeFormat12h": "12小时(1:30 PM)",
30
+ "timeFormat24h": "24小时(13:30)",
109
31
  "appearance": "外观",
110
32
  "appearanceDesc": "自定义Tracearr的外观和感觉。",
33
+ "theme": "主题",
34
+ "accentColor": "亮度颜色",
35
+ "default": "(默认)",
36
+ "cyanDefault": "* 青色是默认的重音颜色",
37
+ "themeLight": "亮色的",
38
+ "themeDark": "深色",
39
+ "themeSystem": "系统",
111
40
  "application": "适用范围",
112
41
  "applicationDesc": "配置基本应用程序设置",
113
- "copyToClipboard": "复制到剪贴板",
114
- "cyanDefault": "* 青色是默认的重音颜色",
115
- "default": "(默认)",
116
- "detect": "检测",
42
+ "unitSystemDesc": "选择距离和速度的显示方式",
43
+ "sessionSync": "会话同步",
44
+ "sessionSyncDesc": "启用媒体服务器会话跟踪",
45
+ "syncInterval": "同步间隔",
46
+ "syncIntervalDesc": "Jellyfin/Emby的投票频率(5-300秒)",
47
+ "syncIntervalSuffix": "秒",
48
+ "plexSseNote": "Plex使用服务器发送事件(SSE)进行近期更新——不需要轮询。",
49
+ "jellyfinPollingNote": "Jellyfin/Emby在上面的间隔时间被打分。",
117
50
  "enhancedGeoIP": "增强的 GeoIP 查询",
118
51
  "enhancedGeoIPDesc": "使用 Plex的 GeoIP 服务更准确的位置数据。启用后,IP地址将被发送到pluse。 v 查找。本地MaxMind 数据库被用作后备。",
119
52
  "externalAccess": "外部访问",
120
53
  "externalAccessDesc": "配置外部设备 (例如移动应用) 如何连接到您的服务器",
121
54
  "externalUrl": "外部 URL",
122
- "externalUrlDesc": "外部设备应使用的 URL到达此服务器。用于二维码和移动应用程序配对。",
123
55
  "externalUrlPlaceholder": "https://tracearr.example.com",
124
- "generateApiKeyPrompt": "生成一个 API 密钥以启用外部集成。",
125
- "generateKey": "生成密钥",
126
- "helpTranslate": "帮助翻译 Tracearr",
127
- "imperial": "英制(mi, mph)",
128
- "iosHttpWarning": "iOS 需要外部连接的 HTTPS。使用 SSL 设置反向代理。",
129
- "jellyfinPollingNote": "Jellyfin/Emby在上面的间隔时间被打分。",
130
- "language": "语言",
131
- "languageDescription": "选择您首选的显示语言。",
132
- "localAccount": "本地用户",
56
+ "externalUrlDesc": "外部设备应使用的 URL到达此服务器。用于二维码和移动应用程序配对。",
57
+ "detect": "检测",
133
58
  "localhostWarning": "本地主机URL将无法用于外部设备。使用您的局域名或IP地址。",
134
- "metric": "公制 (km, km/h)",
59
+ "iosHttpWarning": "iOS 需要外部连接的 HTTPS。使用 SSL 设置反向代理。",
60
+ "apiKeyDesc": "访问 Tracearr API以进行第三方集成,如Homarr、Home Assistant等。",
61
+ "apiDocs": "API Docs",
135
62
  "noApiKeyGenerated": "未生成 API 密钥",
136
- "plexAccount": "Plex账户",
137
- "plexSseNote": "Plex使用服务器发送事件(SSE)进行近期更新——不需要轮询。",
138
- "primaryAuth": "主要认证方法",
139
- "publicApiSettings": "Public API",
140
- "publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
63
+ "copyToClipboard": "复制到剪贴板",
64
+ "apiKeyReadAccess": "您的 API 密钥授予您的 Tracearr 数据的全部读取权限。",
65
+ "generateApiKeyPrompt": "生成一个 API 密钥以启用外部集成。",
141
66
  "regenerate": "重新生成",
67
+ "generateKey": "生成密钥",
142
68
  "regenerateApiKey": "重新生成 API 密钥?",
143
69
  "regenerateApiKeyDesc": "这将使您当前的 API 密钥无效。任何使用旧密钥的集成都将停止工作。",
144
- "sessionSync": "会话同步",
145
- "sessionSyncDesc": "启用媒体服务器会话跟踪",
146
- "syncInterval": "同步间隔",
147
- "syncIntervalDesc": "Jellyfin/Emby的投票频率(5-300秒)",
148
- "syncIntervalSuffix": "秒",
149
- "theme": "主题",
150
- "themeDark": "深色",
151
- "themeLight": "亮色的",
152
- "themeSystem": "系统",
153
- "timeFormat": "时间格式",
154
- "timeFormat12h": "12小时(1:30 PM)",
155
- "timeFormat24h": "24小时(13:30)",
156
- "timeFormatDescription": "选择时间的显示方式。",
157
- "timezone": "时区",
158
- "title": "通用设置",
159
- "unitSystem": "单位系统",
160
- "unitSystemDesc": "选择距离和速度的显示方式",
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": "在 Tautulli 设置 -> Web 界面 → API 密钥。",
171
- "apiKeyPlaceholder": "您的Tautulli API 密钥",
172
- "connectToTautulli": "连接到Tautulli",
173
- "connectedFound": "Connected! Found {{users}} users and {{records}} history records.",
174
- "enrichMetadata": "含有媒体元数据(推荐)",
175
- "enrichMetadataHelp": "从您的媒体服务器获取导入会话的额外元数据。",
176
- "enriched": "丰富",
177
- "errors": "错误",
178
- "exportBackupHelp": "在 Jellystat, 前往设置 -> 备份 -> 活动备份以导出您的数据。",
179
- "exportBackupHint": "从 Jellystat 导出活动备份",
180
- "howItWorks": "导入的工作方式",
181
- "howItWorksDesc": "Tracearr 将从您的源导入所有历史监视数据。这可能需要一段时间,取决于您的库的大小。",
182
- "importComplete": "导入完成",
183
- "importFailed": "导入失败",
184
- "importHistory": "导入历史记录",
185
- "importHistoryDesc": "从外部来源导入历史观察数据",
186
- "importInProgressGeneric": "正在导入...",
187
- "importInProgressPercent": "Import in progress ({{percent}}% complete)...",
188
- "importOptions": "导入选项",
189
- "importProgress": "导入进度",
190
- "imported": "已导入",
191
- "importing": "导入中...",
192
- "includeStreamDetails": "包含详细的流数据(编解码器、比特率、分辨率)",
193
- "includeStreamDetailsHelp": "导入额外的流信息。可能会大大增加导入时间。",
194
- "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
195
- "jellystat": "从 Jellystat 导入",
196
- "noServers": "没有服务器连接",
197
- "noServersHint": "您需要至少一个连接的服务器来导入数据。",
198
- "overwriteFriendlyNames": "用Tautulli名称覆盖现有的友好名称",
199
- "overwriteFriendlyNamesHelp": "Tracearr 中的现有身份名将被Tautulli的友好名称所取代。",
200
- "page": "页面",
201
- "pleaseEnterDetails": "请输入Tautulli URL 和 API 密钥",
202
- "pleaseSelectJsonFile": "请选择一个 JSON 文件",
203
- "plex": "Plex(Tautulli)",
204
- "processed": "已处理",
205
- "recordsMayBeSkipped": "记录可以在下列情况下跳过:",
206
- "selectJellyfinServer": "选择 Jellyfin 或 Emby 服务器",
207
- "selectPlexServer": "选择Plex服务器",
208
- "selectTargetServer": "选择目标服务器",
209
- "skipDuplicate": "复制会话 — 会话已经导入。",
210
- "skipInProgress": "正在进行中的会话 — — 跳过没有参考ID的活动/不完整的会议。",
211
- "skipSyncHint": "如果许多记录被跳过了,请确保您最近已经在“设置 -> 服务器”中同步了您的服务器。",
212
- "skipUserNotFoundJellyfin": "找不到用户 — — Jellyfin/Emby用户在 Tracearr。首先同步您的服务器以添加所有用户。",
213
- "skipUserNotFoundPlex": "找不到用户 — Plex用户在 Trackearr 中不存在。首先同步您的服务器以添加所有用户。",
214
- "skipped": "已跳过",
215
- "startImport": "开始导入",
216
- "startingImport": "正在开始导入...",
217
- "step1": "1",
218
- "step2": "2",
219
- "targetServer": "Target Server",
220
- "tautulli": "从 Tautulli 导入",
221
- "tautulliUrl": "Tautulli URL",
222
- "tautulliUrlHelp": "您的Tautulli实例的 URL。",
223
- "tautulliUrlPlaceholder": "http://localhost:8181",
224
- "testing": "测试中……",
225
- "testingConnection": "测试连接...",
226
- "title": "导入数据",
227
- "updateExistingRecords": "更新现有记录的流详细信息",
228
- "updateExistingRecordsHelp": "以前导入的记录将使用流质量数据更新。",
229
- "uploadJellystatBackup": "上传 Jellystat 备份",
230
- "uploadingBackup": "正在上传备份文件...",
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": "知道了",
248
- "message": "所有用户似乎使用了相同的 IP 地址或本地网络 IP。这可能会影响到基于规则的位置或IP地址逻辑。"
249
- },
250
- "jobs": {
251
- "backfill": "回填表",
252
- "cleanup": "清理",
253
- "delayed": "延迟",
254
- "description": "管理后台任务,使您的数据保持准确和最佳化。",
255
- "errors": "错误",
256
- "jobHistory": "任务历史",
257
- "jobHistoryDesc": "最近执行维护任务",
258
- "lastJobCompleted": "上次任务成功完成",
259
- "lastJobFailed": "上次作业失败",
260
- "mayTakeAWhile": "这可能需要一些时间",
261
- "mayTakeAWhileDesc": "这个任务可能需要几分钟才能完成,取决于您的库的大小。",
262
- "normalization": "正则化",
263
- "processed": "已处理",
264
- "queued": "队列中",
265
- "runConfirm": "Run {{name}}?",
266
- "runJob": "运行作业",
267
- "running": "正在运行",
268
- "runningState": "正在运行",
269
- "startJob": "开始作业",
270
- "title": "维护作业",
271
- "unchanged": "未修改",
272
- "updated": "已更新",
273
- "waiting": "等待中"
274
- },
275
- "mobile": {
276
- "addDevice": "添加设备",
277
- "connectedDevices": "已连接的设备",
278
- "connectedDevicesDesc": "{{count}} devices paired to your server",
279
- "copyToken": "复制令牌",
280
- "deviceName": "设备名称",
281
- "deviceNamePlaceholder": "例如:iPhone 15",
282
- "devicesConnected": "{{current}} of {{max}} devices connected",
283
- "disable": "禁用",
284
- "disableMobileAccess": "禁用移动访问权限",
285
- "disableMobileAccessConfirm": "这将断开所有移动设备并撤销所有会话。您可以稍后重新启用移动访问。",
286
- "done": "完成",
287
- "downloadOnAppStore": "在 App Store 下载",
288
- "enableMobileAccess": "启用移动访问权限",
289
- "enabling": "启用...",
290
- "expiresIn": "Expires in {{time}}",
291
- "externalUrlBanner": "使用反向代理或远程访问吗?请设置您的",
292
- "externalUrlBannerLink": "外部 URL",
293
- "externalUrlBannerSuffix": "所以移动应用可以连接到您的服务器。",
294
- "externalUrlRequired": "必须在常规设置中配置外部URL才能使移动配对正常工作。",
295
- "failedToGenerateToken": "生成令牌失败",
296
- "generateToken": "生成配对令牌",
297
- "getOnGooglePlay": "在 Google Play 上获取",
298
- "getTheApp": "获取应用程序",
299
- "getTheAppDesc": "下载 iOS 或 Android 的 Tracearr 移动应用程序",
300
- "mobileAccessDisabled": "移动访问已禁用",
301
- "mobileAccessDisabledDesc": "启用移动访问权限以允许 Tracearr 移动应用程序连接到您的服务器。",
302
- "noDevices": "没有设备连接",
303
- "oneTimePairToken": "一次性配对令牌",
304
- "pairDevice": "设备配对",
305
- "pairNewDevice": "配对新设备",
306
- "pairNewDeviceDesc": "用 Tracearr 移动应用程序扫描二维码,或手动输入令牌。",
307
- "pairYourDevice": "配对您的设备",
308
- "pairYourDeviceDesc": "用 Tracearr 应用程序扫描二维码以连接此服务器。",
309
- "pendingTokens": "{{count}} pending pair tokens",
310
- "removeDevice": "移除设备",
311
- "removeDeviceConfirm": "Are you sure you want to remove {{deviceName}}? This device will need to pair again to reconnect.",
312
- "renameDevice": "重命名设备",
313
- "renameDeviceDesc": "在列表中输入识别此设备的名称。",
314
- "revokeAll": "注销所有会话",
315
- "revokeAllConfirm": "这将断开所有移动设备。他们需要重新配对才能重新连接。",
316
- "revokeAllSessions": "全部取消",
317
- "scanQrCode": "扫描二维码",
318
- "title": "移动 App",
319
- "tokenExpires": "令牌在...过期{{time}}",
320
- "tokenExpiryNote": "此令牌在5分钟后过期,只能使用一次。"
321
- },
322
- "notifications": {
323
- "agentCard": {
324
- "default": "默认设置",
325
- "editSettings": "编辑设置",
326
- "events": "事件",
327
- "notConfigured": "未完全配置。",
328
- "saved": "已保存",
329
- "sendTest": "发送测试"
330
- },
331
- "routing": {
332
- "discord": "Discord",
333
- "event": "事件",
334
- "web": "Web",
335
- "webNote": "推送通知是在移动应用程序中每台设备配置的。",
336
- "webToastNote": "在此浏览器中显示弹出通知。",
337
- "webhook": "Webhook"
338
- }
339
- },
340
- "plex": {
341
- "chooseServer": "选择要监视的Plex媒体服务器",
342
- "selectServer": "选择服务器",
343
- "signInWithPlex": "使用 Plex 登录",
344
- "signUpWithPlex": "使用Plex注册"
345
- },
346
- "serverHealth": {
347
- "multipleUnreachable": "{{count}} 服务器无法访问:{{serverNames}}",
348
- "unreachable": "{{serverName}} 无法访问"
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": "连接的服务器",
351
85
  "addServer": "添加服务器",
352
- "addServerDialogDescOther": "连接一个 Jellyfin 或 Emby 服务器。",
353
- "addServerDialogDescPlex": "从您链接的帐户中选择一个 Plex服务器。",
354
- "added": "Added {{date}}",
355
- "allFieldsRequired": "所有字段都是必需的",
86
+ "serverName": "服务器名称",
87
+ "serverUrl": "服务器URL",
88
+ "syncInterval": "同步间隔",
89
+ "testConnection": "测试连接",
90
+ "connectionSuccess": "连接成功",
91
+ "connectionFailed": "连接失败",
92
+ "noServersConnected": "未连接服务器",
93
+ "noServersConnectedHint": "点击“添加服务器”连接一个 Jellyfin 或 Emby 服务器",
94
+ "serverType": "服务器类型",
95
+ "loadingAccounts": "正在加载链接的Plex帐户...",
96
+ "noPlexAccountsLinked": "没有关联的Plex账户",
97
+ "noPlexAccountsLinkedHint": "链接上面的Plex帐户,然后返回添加服务器。",
98
+ "selectPlexAccount": "选择Plex账户",
99
+ "chooseAccount": "选择一个帐户...",
100
+ "selectAccountHelp": "选择要从哪个Plex账户中发现服务器。",
356
101
  "allServersConnected": "所有服务器已连接",
357
102
  "allServersConnectedDesc": "此帐户的所有服务器已经连接。",
358
- "apiKeyHelp": "在 API 密钥或高级设置下您的媒体服务器的仪表盘中找到。",
359
- "apiKeyHelpEmby": "在 Emby Server -> API 密钥中查找这个内容",
360
- "apiKeyHelpJellyfin": "在 Jellyfin 仪表盘查找这个看板 → API 密钥",
103
+ "serverUrlPlaceholder": "http://192.168.1/100:8096",
104
+ "serverUrlHelp": "直接链接到您的 Jellyfin 或 Emby 服务器。使用IP:端口获取最佳可靠性。",
105
+ "serverNamePlaceholder": "我的媒体服务器",
361
106
  "apiKeyPlaceholder": "输入您的 API 密钥",
362
- "checkingConnection": "Checking connection…",
363
- "chooseAccount": "选择一个帐户...",
364
- "connectServer": "连接服务器",
107
+ "apiKeyHelp": "在 API 密钥或高级设置下您的媒体服务器的仪表盘中找到。",
365
108
  "connecting": "正在连接……",
366
- "connectionFailed": "连接失败",
367
- "connectionSuccess": "连接成功",
368
- "description": "管理您已连接的 Plex、Jellyfin 和 Emby 服务器",
369
- "discoveringConnections": "正在发现连接...",
370
- "discoveringServers": "发现可用的Plex服务器...",
109
+ "connectServer": "连接服务器",
110
+ "removeServer": "删除服务器",
111
+ "removeServerConfirm": "您确定要删除此服务器吗? 所有相关会话数据将被保留,但您将无法从此服务器监视新会话。",
371
112
  "editServer": "编辑服务器",
372
113
  "editServerDesc": "更新服务器名称或连接 URL。",
373
- "loadingAccounts": "正在加载链接的Plex帐户...",
374
- "noPlexAccountsLinked": "没有关联的Plex账户",
375
- "noPlexAccountsLinkedHint": "链接上面的Plex帐户,然后返回添加服务器。",
376
- "noServersConnected": "未连接服务器",
377
- "noServersConnectedHint": "点击“添加服务器”连接一个 Jellyfin 或 Emby 服务器",
114
+ "serverColor": "服务器颜色",
115
+ "serverColorDesc": "在多服务器视图中用于视觉属性",
116
+ "updating": "更新中……",
117
+ "allFieldsRequired": "所有字段都是必需的",
118
+ "addServerDialogDescPlex": "从您链接的帐户中选择一个 Plex服务器。",
119
+ "addServerDialogDescOther": "连接一个 Jellyfin 或 Emby 服务器。",
120
+ "description": "管理您已连接的 Plex、Jellyfin 和 Emby 服务器",
121
+ "discoveringServers": "发现可用的Plex服务器...",
122
+ "discoveringConnections": "正在发现连接...",
378
123
  "plexAccount": "Plex账户",
124
+ "serverUrlHelpJellyfin": "您的 Jellyfin 服务器可以访问的 URL",
125
+ "serverUrlHelpEmby": "您的 Emby 服务器可以访问的 URL",
126
+ "apiKeyHelpJellyfin": "在 Jellyfin 仪表盘查找这个看板 → API 密钥",
127
+ "apiKeyHelpEmby": "在 Emby Server -> API 密钥中查找这个内容",
379
128
  "plexServerPlaceholder": "我的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": "或者点击下面的更新,只保存名称更改。",
131
+ "added": "Added {{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": "删除服务器",
412
- "removeServerConfirm": "您确定要删除此服务器吗? 所有相关会话数据将被保留,但您将无法从此服务器监视新会话。",
413
- "selectAccountHelp": "选择要从哪个Plex账户中发现服务器。",
414
- "selectPlexAccount": "选择Plex账户",
415
- "serverColor": "服务器颜色",
416
- "serverColorDesc": "在多服务器视图中用于视觉属性",
417
- "serverName": "服务器名称",
418
- "serverNamePlaceholder": "我的媒体服务器",
419
- "serverType": "服务器类型",
420
- "serverUrl": "服务器URL",
421
- "serverUrlHelp": "直接链接到您的 Jellyfin 或 Emby 服务器。使用IP:端口获取最佳可靠性。",
422
- "serverUrlHelpEmby": "您的 Emby 服务器可以访问的 URL",
423
- "serverUrlHelpJellyfin": "您的 Jellyfin 服务器可以访问的 URL",
424
- "serverUrlPlaceholder": "http://192.168.1/100:8096",
425
- "setupRealtime": "Set up real-time updates",
426
- "realtimeError": "Real-time error",
427
- "syncInterval": "同步间隔",
428
- "testConnection": "测试连接",
429
- "title": "连接的服务器",
430
- "updateHint": "或者点击下面的更新,只保存名称更改。",
431
- "updating": "更新中……"
432
- },
433
- "tabs": {
434
- "accessControl": "访问控制",
435
- "advanced": "高级设置",
436
- "backup": "备份",
437
- "general": "通用",
438
- "import": "导入",
439
- "jobs": "任务",
440
- "mobile": "移动 App",
441
- "notifications": "通知",
442
- "servers": "服务器",
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": "在 Tailscale 中授权",
447
- "awaitingAuth": "等待验证……",
448
- "connected": "Tailscale 已连接。您的 Tracearr 实例在 tailnet 上可用。",
449
- "description": "在您的 Tailscale 网络上安全访问 Tracearr,无需端口转发。",
450
- "disable": "禁用 Tailscale",
451
- "disableConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接。您可以在不重新授权的情况下重新启用。",
452
- "disableConfirmTitle": "禁用 Tailscale?",
453
- "disabledDescription": "启用 Tailscale 将 Tracearr 放置在您的私人 tailnet 上。无需端口转发或反向代理。",
454
- "dnsName": "DNS 名称",
455
- "enable": "启用 Tailscale",
456
- "exitNodeNone": "无",
457
- "exitNodeOffline": "(离线)",
458
- "hideLogs": "隐藏日志",
459
- "hostname": "主机名",
460
- "hostnameHint": "此设备在您的尾网中的可选自定义名称。仅限字母、数字和连字符。",
461
- "hostnameLabel": "设备主机名",
462
- "noLogs": "无可用日志输出。",
463
- "notAvailable": "未找到 Tailscale 二进制文件。此功能仅在运行官方 Docker 镜像时可用。",
464
- "resetConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接并移除设备身份。如果您再次启用它,您需要重新授权。",
465
- "resetConfirmTitle": "重置 Tailscale?",
466
- "showLogs": "显示日志",
467
- "starting": "启动 Tailscale……",
468
- "stopping": "停止 Tailscale……",
469
- "tailnetUrl": "URL",
470
- "title": "Tailscale VPN",
471
- "toast": {
472
- "disableFailed": "无法禁用 Tailscale",
473
- "disabled": "Tailscale 已被禁用。",
474
- "enableFailed": "无法启用 Tailscale",
475
- "exitNodeFailed": "无法设置出口节点",
476
- "exitNodeSet": "出口节点已更新。",
477
- "reset": "Tailscale 已被重置。",
478
- "resetFailed": "无法重置 Tailscale"
166
+ "mobile": {
167
+ "title": "移动 App",
168
+ "pairDevice": "设备配对",
169
+ "connectedDevices": "已连接的设备",
170
+ "generateToken": "生成配对令牌",
171
+ "scanQrCode": "扫描二维码",
172
+ "tokenExpires": "令牌在...过期{{time}}",
173
+ "noDevices": "没有设备连接",
174
+ "revokeAll": "注销所有会话",
175
+ "getTheApp": "获取应用程序",
176
+ "getTheAppDesc": "下载 iOS 或 Android 的 Tracearr 移动应用程序",
177
+ "getOnGooglePlay": "在 Google Play 上获取",
178
+ "downloadOnAppStore": "在 App Store 下载",
179
+ "pairYourDevice": "配对您的设备",
180
+ "pairYourDeviceDesc": "用 Tracearr 应用程序扫描二维码以连接此服务器。",
181
+ "externalUrlRequired": "必须在常规设置中配置外部URL才能使移动配对正常工作。",
182
+ "mobileAccessDisabled": "移动访问已禁用",
183
+ "mobileAccessDisabledDesc": "启用移动访问权限以允许 Tracearr 移动应用程序连接到您的服务器。",
184
+ "enableMobileAccess": "启用移动访问权限",
185
+ "enabling": "启用...",
186
+ "devicesConnected": "{{current}} of {{max}} devices connected",
187
+ "pendingTokens": "{{count}} pending pair tokens",
188
+ "addDevice": "添加设备",
189
+ "disableMobileAccess": "禁用移动访问权限",
190
+ "connectedDevicesDesc": "{{count}} devices paired to your server",
191
+ "revokeAllSessions": "全部取消",
192
+ "pairNewDevice": "配对新设备",
193
+ "pairNewDeviceDesc": "用 Tracearr 移动应用程序扫描二维码,或手动输入令牌。",
194
+ "expiresIn": "Expires in {{time}}",
195
+ "oneTimePairToken": "一次性配对令牌",
196
+ "copyToken": "复制令牌",
197
+ "tokenExpiryNote": "此令牌在5分钟后过期,只能使用一次。",
198
+ "done": "完成",
199
+ "disableMobileAccessConfirm": "这将断开所有移动设备并撤销所有会话。您可以稍后重新启用移动访问。",
200
+ "disable": "禁用",
201
+ "revokeAllConfirm": "这将断开所有移动设备。他们需要重新配对才能重新连接。",
202
+ "renameDevice": "重命名设备",
203
+ "renameDeviceDesc": "在列表中输入识别此设备的名称。",
204
+ "deviceName": "设备名称",
205
+ "deviceNamePlaceholder": "例如:iPhone 15",
206
+ "removeDevice": "移除设备",
207
+ "failedToGenerateToken": "生成令牌失败",
208
+ "removeDeviceConfirm": "Are you sure you want to remove {{deviceName}}? This device will need to pair again to reconnect.",
209
+ "externalUrlBanner": "使用反向代理或远程访问吗?请设置您的",
210
+ "externalUrlBannerLink": "外部 URL",
211
+ "externalUrlBannerSuffix": "所以移动应用可以连接到您的服务器。"
212
+ },
213
+ "tailscale": {
214
+ "title": "Tailscale VPN",
215
+ "description": "在您的 Tailscale 网络上安全访问 Tracearr,无需端口转发。",
216
+ "notAvailable": "未找到 Tailscale 二进制文件。此功能仅在运行官方 Docker 镜像时可用。",
217
+ "disabledDescription": "启用 Tailscale 将 Tracearr 放置在您的私人 tailnet 上。无需端口转发或反向代理。",
218
+ "hostnameLabel": "设备主机名",
219
+ "hostnameHint": "此设备在您的尾网中的可选自定义名称。仅限字母、数字和连字符。",
220
+ "enable": "启用 Tailscale",
221
+ "disable": "禁用 Tailscale",
222
+ "starting": "启动 Tailscale……",
223
+ "stopping": "停止 Tailscale……",
224
+ "awaitingAuth": "等待验证……",
225
+ "authorize": "在 Tailscale 中授权",
226
+ "connected": "Tailscale 已连接。您的 Tracearr 实例在 tailnet 上可用。",
227
+ "hostname": "主机名",
228
+ "dnsName": "DNS 名称",
229
+ "tailnetUrl": "URL",
230
+ "showLogs": "显示日志",
231
+ "hideLogs": "隐藏日志",
232
+ "noLogs": "无可用日志输出。",
233
+ "exitNodeNone": "无",
234
+ "exitNodeOffline": "(离线)",
235
+ "unknownError": "发生未知错误。",
236
+ "disableConfirmTitle": "禁用 Tailscale?",
237
+ "disableConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接。您可以在不重新授权的情况下重新启用。",
238
+ "resetConfirmTitle": "重置 Tailscale?",
239
+ "resetConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接并移除设备身份。如果您再次启用它,您需要重新授权。",
240
+ "toast": {
241
+ "disabled": "Tailscale 已被禁用。",
242
+ "enableFailed": "无法启用 Tailscale",
243
+ "disableFailed": "无法禁用 Tailscale",
244
+ "reset": "Tailscale 已被重置。",
245
+ "resetFailed": "无法重置 Tailscale",
246
+ "exitNodeSet": "出口节点已更新。",
247
+ "exitNodeFailed": "无法设置出口节点"
248
+ }
249
+ },
250
+ "webhooks": {
251
+ "title": "Webhook配置",
252
+ "discordWebhook": "Discord Webhook 链接",
253
+ "ntfyTopic": "Ntfy 主题",
254
+ "customWebhook": "自定义 Webhook URL",
255
+ "webhookFormat": "Webhook 格式",
256
+ "testWebhook": "测试 Webhook"
257
+ },
258
+ "jobs": {
259
+ "title": "维护作业",
260
+ "description": "管理后台任务,使您的数据保持准确和最佳化。",
261
+ "normalization": "正则化",
262
+ "backfill": "回填表",
263
+ "cleanup": "清理",
264
+ "running": "正在运行",
265
+ "queued": "队列中",
266
+ "delayed": "延迟",
267
+ "waiting": "等待中",
268
+ "runningState": "正在运行",
269
+ "runJob": "运行作业",
270
+ "processed": "已处理",
271
+ "updated": "已更新",
272
+ "unchanged": "未修改",
273
+ "errors": "错误",
274
+ "lastJobCompleted": "上次任务成功完成",
275
+ "lastJobFailed": "上次作业失败",
276
+ "jobHistory": "任务历史",
277
+ "jobHistoryDesc": "最近执行维护任务",
278
+ "runConfirm": "Run {{name}}?",
279
+ "mayTakeAWhile": "这可能需要一些时间",
280
+ "mayTakeAWhileDesc": "这个任务可能需要几分钟才能完成,取决于您的库的大小。",
281
+ "startJob": "开始作业"
282
+ },
283
+ "notifications": {
284
+ "routing": {
285
+ "event": "事件",
286
+ "web": "Web",
287
+ "discord": "Discord",
288
+ "webhook": "Webhook",
289
+ "webNote": "推送通知是在移动应用程序中每台设备配置的。",
290
+ "webToastNote": "在此浏览器中显示弹出通知。"
479
291
  },
480
- "unknownError": "发生未知错误。"
292
+ "agentCard": {
293
+ "saved": "已保存",
294
+ "default": "默认设置",
295
+ "events": "事件",
296
+ "sendTest": "发送测试",
297
+ "notConfigured": "未完全配置。",
298
+ "editSettings": "编辑设置"
299
+ }
300
+ },
301
+ "advanced": {
302
+ "title": "高级设置",
303
+ "externalUrl": "外部 URL",
304
+ "trustProxy": "信任代理头",
305
+ "reverseProxy": "反向代理",
306
+ "connectionScenarios": "连接场景"
307
+ },
308
+ "accessControl": {
309
+ "title": "访问控制",
310
+ "description": "配置谁可以访问 Tracearr",
311
+ "allowGuestAccess": "允许访客访问",
312
+ "allowGuestAccessDesc": "禁用时,只有服务器所有者可以登录到 Tracearr",
313
+ "singleOwnerNote": "注意:当访客访问被禁用时,只有服务器所有者可以登录。所有其他用户都会看到“访问被拒绝”的消息。"
314
+ },
315
+ "import": {
316
+ "title": "导入数据",
317
+ "jellystat": "从 Jellystat 导入",
318
+ "tautulli": "从 Tautulli 导入",
319
+ "importProgress": "导入进度",
320
+ "importComplete": "导入完成",
321
+ "importFailed": "导入失败",
322
+ "processed": "已处理",
323
+ "page": "页面",
324
+ "imported": "已导入",
325
+ "skipped": "已跳过",
326
+ "enriched": "丰富",
327
+ "errors": "错误",
328
+ "noServers": "没有服务器连接",
329
+ "noServersHint": "您需要至少一个连接的服务器来导入数据。",
330
+ "tautulliUrl": "Tautulli URL",
331
+ "tautulliUrlPlaceholder": "http://localhost:8181",
332
+ "tautulliUrlHelp": "您的Tautulli实例的 URL。",
333
+ "apiKeyHelp": "在 Tautulli 设置 -> Web 界面 → API 密钥。",
334
+ "testing": "测试中……",
335
+ "connectToTautulli": "连接到Tautulli",
336
+ "importHistory": "导入历史记录",
337
+ "targetServer": "Target Server",
338
+ "selectPlexServer": "选择Plex服务器",
339
+ "overwriteFriendlyNames": "用Tautulli名称覆盖现有的友好名称",
340
+ "overwriteFriendlyNamesHelp": "Tracearr 中的现有身份名将被Tautulli的友好名称所取代。",
341
+ "includeStreamDetails": "包含详细的流数据(编解码器、比特率、分辨率)",
342
+ "includeStreamDetailsHelp": "导入额外的流信息。可能会大大增加导入时间。",
343
+ "importing": "导入中...",
344
+ "startImport": "开始导入",
345
+ "howItWorks": "导入的工作方式",
346
+ "howItWorksDesc": "Tracearr 将从您的源导入所有历史监视数据。这可能需要一段时间,取决于您的库的大小。",
347
+ "recordsMayBeSkipped": "记录可以在下列情况下跳过:",
348
+ "selectTargetServer": "选择目标服务器",
349
+ "selectJellyfinServer": "选择 Jellyfin 或 Emby 服务器",
350
+ "uploadJellystatBackup": "上传 Jellystat 备份",
351
+ "exportBackupHint": "从 Jellystat 导出活动备份",
352
+ "exportBackupHelp": "在 Jellystat, 前往设置 -> 备份 -> 活动备份以导出您的数据。",
353
+ "importOptions": "导入选项",
354
+ "enrichMetadata": "含有媒体元数据(推荐)",
355
+ "enrichMetadataHelp": "从您的媒体服务器获取导入会话的额外元数据。",
356
+ "updateExistingRecords": "更新现有记录的流详细信息",
357
+ "updateExistingRecordsHelp": "以前导入的记录将使用流质量数据更新。",
358
+ "pleaseEnterDetails": "请输入Tautulli URL 和 API 密钥",
359
+ "testingConnection": "测试连接...",
360
+ "pleaseSelectJsonFile": "请选择一个 JSON 文件",
361
+ "uploadingBackup": "正在上传备份文件...",
362
+ "importHistoryDesc": "从外部来源导入历史观察数据",
363
+ "plex": "Plex(Tautulli)",
364
+ "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
365
+ "step1": "1",
366
+ "step2": "2",
367
+ "apiKeyPlaceholder": "您的Tautulli API 密钥",
368
+ "skipUserNotFoundPlex": "找不到用户 — Plex用户在 Trackearr 中不存在。首先同步您的服务器以添加所有用户。",
369
+ "skipDuplicate": "复制会话 — 会话已经导入。",
370
+ "skipInProgress": "正在进行中的会话 — — 跳过没有参考ID的活动/不完整的会议。",
371
+ "skipUserNotFoundJellyfin": "找不到用户 — — Jellyfin/Emby用户在 Tracearr。首先同步您的服务器以添加所有用户。",
372
+ "skipSyncHint": "如果许多记录被跳过了,请确保您最近已经在“设置 -> 服务器”中同步了您的服务器。",
373
+ "importInProgressPercent": "Import in progress ({{percent}}% complete)...",
374
+ "importInProgressGeneric": "正在导入...",
375
+ "startingImport": "正在开始导入...",
376
+ "connectedFound": "Connected! Found {{users}} users and {{records}} history 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": "使用 Plex 登录",
394
+ "signUpWithPlex": "使用Plex注册",
395
+ "selectServer": "选择服务器",
396
+ "chooseServer": "选择要监视的Plex媒体服务器"
397
+ },
398
+ "account": {
399
+ "createAccount": "创建新账户",
400
+ "email": "电子邮件",
401
+ "password": "密码",
402
+ "displayName": "显示名称",
403
+ "createYourAccount": "创建您的账户以开始",
404
+ "signInToAccount": "登录到您的帐户",
405
+ "useLocalAccount": "使用本地账户"
481
406
  },
482
- "title": "设置",
483
407
  "update": {
484
- "betaUpdate": "测试版升级",
485
- "newVersion": "新版本",
486
- "pullInstructions": "在拉取后,重新启动您的容器以应用更新。",
487
- "releaseNotes": "更新日志",
488
- "stableRelease": "Stable 版",
489
408
  "title": "有可用更新",
409
+ "releaseNotes": "更新日志",
490
410
  "updateCommand": "更新命令",
411
+ "pullInstructions": "在拉取后,重新启动您的容器以应用更新。",
412
+ "stableRelease": "Stable 版",
413
+ "betaUpdate": "测试版升级",
414
+ "newVersion": "新版本",
491
415
  "versionAvailable": "{{version}}可用"
492
416
  },
493
- "webhooks": {
494
- "customWebhook": "自定义 Webhook URL",
495
- "discordWebhook": "Discord Webhook 链接",
496
- "ntfyTopic": "Ntfy 主题",
497
- "testWebhook": "测试 Webhook",
498
- "title": "Webhook配置",
499
- "webhookFormat": "Webhook 格式"
417
+ "serverHealth": {
418
+ "unreachable": "{{serverName}} 无法访问",
419
+ "multipleUnreachable": "{{count}} 服务器无法访问:{{serverNames}}"
420
+ },
421
+ "ipWarning": {
422
+ "message": "所有用户似乎使用了相同的 IP 地址或本地网络 IP。这可能会影响到基于规则的位置或IP地址逻辑。",
423
+ "acknowledge": "知道了"
424
+ },
425
+ "backup": {
426
+ "title": "备份",
427
+ "backToBackups": "返回备份",
428
+ "description": "备份并恢复您的 Tracearr 数据",
429
+ "createBackup": "创建备份",
430
+ "creating": "正在创建备份……",
431
+ "uploadBackup": "上传备份",
432
+ "uploading": "上传中……",
433
+ "databaseSize": "当前数据库大小:{{size}}",
434
+ "freeSpace": "备份目录可用空间:{{size}}",
435
+ "lowDiskSpace": "磁盘空间不足 — 备份和恢复需要至少两倍的可用空间。",
436
+ "backupHistory": "备份历史",
437
+ "noBackups": "尚未备份。请在上面创建您的第一个备份。",
438
+ "filename": "文件名",
439
+ "size": "尺寸",
440
+ "date": "日期",
441
+ "type": "类型",
442
+ "version": "版本",
443
+ "actions": "动作",
444
+ "typeManual": "手动",
445
+ "typeScheduled": "已预约",
446
+ "typeUploaded": "已上传",
447
+ "restoreAction": "还原",
448
+ "deleteConfirmTitle": "删除备份",
449
+ "deleteConfirmDescription": "您确定要删除此备份吗?此操作无法撤消。",
450
+ "schedule": "计划备份",
451
+ "scheduleType": "计划",
452
+ "scheduleDisabled": "禁用",
453
+ "scheduleDaily": "每天",
454
+ "scheduleWeekly": "每周",
455
+ "scheduleMonthly": "每月",
456
+ "scheduleTime": "时区({{timezone}})",
457
+ "scheduleDayOfWeek": "星期几",
458
+ "scheduleDayOfMonth": "每月的某一日",
459
+ "scheduleDayOfMonthHint": "在日数月里,备份工作在最后一天进行。",
460
+ "retentionCount": "保留最近",
461
+ "retentionSuffix": "计划备份",
462
+ "daySun": "星期日",
463
+ "dayMon": "星期一",
464
+ "dayTue": "星期二",
465
+ "dayWed": "星期三",
466
+ "dayThu": "星期四",
467
+ "dayFri": "星期五",
468
+ "daySat": "星期六",
469
+ "restore": {
470
+ "title": "还原备份",
471
+ "selectedBackup": "所选备份",
472
+ "databaseSize": "数据库大小",
473
+ "sessions": "会话",
474
+ "users": "用户",
475
+ "servers": "服务器",
476
+ "rules": "规则",
477
+ "libraryItems": "媒体库数量",
478
+ "tables": "表",
479
+ "warning": "还原将替换所有现有数据。您需要在还原完成后重新登录。",
480
+ "confirmLabel": "我理解这将替换所有数据",
481
+ "confirm": "开始还原",
482
+ "complete": "还原成功完成。页面将很快刷新。",
483
+ "failed": "还原失败",
484
+ "cannotRestore": "恢复需要 PostgreSQL 超级用户权限。请确保您的数据库用户拥有超级用户权限并重试。",
485
+ "pgVersionMismatch": "备份是在 PostgreSQL {{backupVersion}} 上创建的,但此服务器运行的是 PostgreSQL {{serverVersion}}。不支持从较新版本的 PostgreSQL 恢复转储。",
486
+ "tsVersionMismatch": "备份是使用 TimescaleDB {{backupVersion}} 创建的,但此服务器仅支持到 TimescaleDB {{serverVersion}}。"
487
+ },
488
+ "toast": {
489
+ "backupCreated": "备份创建成功",
490
+ "backupCreateFailed": "创建备份失败",
491
+ "backupUploaded": "备份上传成功",
492
+ "backupUploadFailed": "上传备份失败",
493
+ "backupDeleted": "备份已删除",
494
+ "backupDeleteFailed": "删除备份失败",
495
+ "restoreStarted": "还原开始",
496
+ "restoreStartFailed": "启动还原失败",
497
+ "scheduleSaved": "备份计划已保存",
498
+ "scheduleError": "保存备份计划失败"
499
+ }
500
500
  }
501
501
  }