@tracearr/translations 2.2.0-beta.3 → 2.2.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 (365) hide show
  1. package/dist/config.d.ts +2 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.mobile.d.ts +2 -0
  4. package/dist/config.mobile.d.ts.map +1 -1
  5. package/dist/locales/af-ZA/common.json +313 -313
  6. package/dist/locales/af-ZA/mobile.json +138 -138
  7. package/dist/locales/af-ZA/nav.json +30 -30
  8. package/dist/locales/af-ZA/notifications.json +228 -228
  9. package/dist/locales/af-ZA/pages.json +1776 -1775
  10. package/dist/locales/af-ZA/settings.json +483 -483
  11. package/dist/locales/ar-SA/common.json +289 -289
  12. package/dist/locales/ar-SA/mobile.json +96 -96
  13. package/dist/locales/ar-SA/nav.json +8 -8
  14. package/dist/locales/ar-SA/notifications.json +227 -227
  15. package/dist/locales/ar-SA/pages.json +1779 -1778
  16. package/dist/locales/ar-SA/settings.json +452 -452
  17. package/dist/locales/ca-ES/common.json +286 -286
  18. package/dist/locales/ca-ES/mobile.json +125 -125
  19. package/dist/locales/ca-ES/nav.json +8 -8
  20. package/dist/locales/ca-ES/notifications.json +228 -228
  21. package/dist/locales/ca-ES/pages.json +1775 -1774
  22. package/dist/locales/ca-ES/settings.json +471 -471
  23. package/dist/locales/cs-CZ/common.json +284 -284
  24. package/dist/locales/cs-CZ/mobile.json +99 -99
  25. package/dist/locales/cs-CZ/nav.json +8 -8
  26. package/dist/locales/cs-CZ/notifications.json +226 -226
  27. package/dist/locales/cs-CZ/pages.json +1766 -1765
  28. package/dist/locales/cs-CZ/settings.json +451 -451
  29. package/dist/locales/da-DK/common.json +284 -284
  30. package/dist/locales/da-DK/mobile.json +99 -99
  31. package/dist/locales/da-DK/nav.json +9 -9
  32. package/dist/locales/da-DK/notifications.json +226 -226
  33. package/dist/locales/da-DK/pages.json +1775 -1774
  34. package/dist/locales/da-DK/settings.json +451 -451
  35. package/dist/locales/de-DE/common.json +285 -285
  36. package/dist/locales/de-DE/mobile.json +102 -102
  37. package/dist/locales/de-DE/nav.json +10 -10
  38. package/dist/locales/de-DE/notifications.json +226 -226
  39. package/dist/locales/de-DE/pages.json +1775 -1774
  40. package/dist/locales/de-DE/settings.json +451 -451
  41. package/dist/locales/el-GR/common.json +283 -283
  42. package/dist/locales/el-GR/mobile.json +97 -97
  43. package/dist/locales/el-GR/nav.json +8 -8
  44. package/dist/locales/el-GR/notifications.json +226 -226
  45. package/dist/locales/el-GR/pages.json +1781 -1780
  46. package/dist/locales/el-GR/settings.json +451 -451
  47. package/dist/locales/en/pages.json +2 -1
  48. package/dist/locales/en-US/common.json +280 -280
  49. package/dist/locales/en-US/nav.json +20 -20
  50. package/dist/locales/en-US/notifications.json +222 -222
  51. package/dist/locales/en-US/pages.json +1553 -1552
  52. package/dist/locales/en-US/settings.json +432 -432
  53. package/dist/locales/es-ES/common.json +283 -283
  54. package/dist/locales/es-ES/mobile.json +96 -96
  55. package/dist/locales/es-ES/nav.json +8 -8
  56. package/dist/locales/es-ES/notifications.json +226 -226
  57. package/dist/locales/es-ES/pages.json +1774 -1773
  58. package/dist/locales/es-ES/settings.json +451 -451
  59. package/dist/locales/fi-FI/common.json +284 -284
  60. package/dist/locales/fi-FI/mobile.json +97 -97
  61. package/dist/locales/fi-FI/nav.json +9 -9
  62. package/dist/locales/fi-FI/notifications.json +226 -226
  63. package/dist/locales/fi-FI/pages.json +1776 -1775
  64. package/dist/locales/fi-FI/settings.json +451 -451
  65. package/dist/locales/fr-FR/common.json +284 -284
  66. package/dist/locales/fr-FR/mobile.json +10 -10
  67. package/dist/locales/fr-FR/nav.json +11 -11
  68. package/dist/locales/fr-FR/notifications.json +226 -226
  69. package/dist/locales/fr-FR/pages.json +1762 -1761
  70. package/dist/locales/fr-FR/settings.json +452 -452
  71. package/dist/locales/he-IL/common.json +313 -313
  72. package/dist/locales/he-IL/mobile.json +138 -138
  73. package/dist/locales/he-IL/nav.json +30 -30
  74. package/dist/locales/he-IL/notifications.json +228 -228
  75. package/dist/locales/he-IL/pages.json +1796 -1795
  76. package/dist/locales/he-IL/settings.json +483 -483
  77. package/dist/locales/hu-HU/common.json +298 -298
  78. package/dist/locales/hu-HU/mobile.json +138 -138
  79. package/dist/locales/hu-HU/nav.json +30 -30
  80. package/dist/locales/hu-HU/notifications.json +228 -228
  81. package/dist/locales/hu-HU/pages.json +1792 -1791
  82. package/dist/locales/hu-HU/settings.json +482 -482
  83. package/dist/locales/it-IT/common.json +284 -284
  84. package/dist/locales/it-IT/mobile.json +101 -101
  85. package/dist/locales/it-IT/nav.json +10 -10
  86. package/dist/locales/it-IT/notifications.json +227 -227
  87. package/dist/locales/it-IT/pages.json +1779 -1778
  88. package/dist/locales/it-IT/settings.json +451 -451
  89. package/dist/locales/ja-JP/common.json +283 -283
  90. package/dist/locales/ja-JP/mobile.json +98 -98
  91. package/dist/locales/ja-JP/nav.json +9 -9
  92. package/dist/locales/ja-JP/notifications.json +226 -226
  93. package/dist/locales/ja-JP/pages.json +1779 -1778
  94. package/dist/locales/ja-JP/settings.json +451 -451
  95. package/dist/locales/ko-KR/common.json +313 -313
  96. package/dist/locales/ko-KR/mobile.json +138 -138
  97. package/dist/locales/ko-KR/nav.json +30 -30
  98. package/dist/locales/ko-KR/notifications.json +228 -228
  99. package/dist/locales/ko-KR/pages.json +1796 -1795
  100. package/dist/locales/ko-KR/settings.json +483 -483
  101. package/dist/locales/nl-NL/common.json +283 -283
  102. package/dist/locales/nl-NL/mobile.json +91 -91
  103. package/dist/locales/nl-NL/nav.json +10 -10
  104. package/dist/locales/nl-NL/notifications.json +226 -226
  105. package/dist/locales/nl-NL/pages.json +1768 -1767
  106. package/dist/locales/nl-NL/settings.json +444 -444
  107. package/dist/locales/no-NO/common.json +283 -283
  108. package/dist/locales/no-NO/mobile.json +96 -96
  109. package/dist/locales/no-NO/nav.json +8 -8
  110. package/dist/locales/no-NO/notifications.json +226 -226
  111. package/dist/locales/no-NO/pages.json +1778 -1777
  112. package/dist/locales/no-NO/settings.json +451 -451
  113. package/dist/locales/pl-PL/common.json +283 -283
  114. package/dist/locales/pl-PL/mobile.json +94 -94
  115. package/dist/locales/pl-PL/nav.json +8 -8
  116. package/dist/locales/pl-PL/notifications.json +226 -226
  117. package/dist/locales/pl-PL/pages.json +1778 -1777
  118. package/dist/locales/pl-PL/settings.json +451 -451
  119. package/dist/locales/pt-BR/common.json +286 -286
  120. package/dist/locales/pt-BR/mobile.json +138 -138
  121. package/dist/locales/pt-BR/nav.json +17 -17
  122. package/dist/locales/pt-BR/notifications.json +226 -226
  123. package/dist/locales/pt-BR/pages.json +1781 -1780
  124. package/dist/locales/pt-BR/settings.json +454 -454
  125. package/dist/locales/pt-PT/common.json +289 -289
  126. package/dist/locales/pt-PT/mobile.json +97 -97
  127. package/dist/locales/pt-PT/nav.json +9 -9
  128. package/dist/locales/pt-PT/notifications.json +226 -226
  129. package/dist/locales/pt-PT/pages.json +1780 -1779
  130. package/dist/locales/pt-PT/settings.json +452 -452
  131. package/dist/locales/ro-RO/common.json +283 -283
  132. package/dist/locales/ro-RO/mobile.json +98 -98
  133. package/dist/locales/ro-RO/nav.json +9 -9
  134. package/dist/locales/ro-RO/notifications.json +226 -226
  135. package/dist/locales/ro-RO/pages.json +1779 -1778
  136. package/dist/locales/ro-RO/settings.json +451 -451
  137. package/dist/locales/ru-RU/common.json +288 -288
  138. package/dist/locales/ru-RU/mobile.json +97 -97
  139. package/dist/locales/ru-RU/nav.json +8 -8
  140. package/dist/locales/ru-RU/notifications.json +226 -226
  141. package/dist/locales/ru-RU/pages.json +1781 -1780
  142. package/dist/locales/ru-RU/settings.json +451 -451
  143. package/dist/locales/sr-SP/common.json +313 -313
  144. package/dist/locales/sr-SP/mobile.json +138 -138
  145. package/dist/locales/sr-SP/nav.json +30 -30
  146. package/dist/locales/sr-SP/notifications.json +228 -228
  147. package/dist/locales/sr-SP/pages.json +1796 -1795
  148. package/dist/locales/sr-SP/settings.json +483 -483
  149. package/dist/locales/sv-SE/common.json +284 -284
  150. package/dist/locales/sv-SE/mobile.json +100 -100
  151. package/dist/locales/sv-SE/nav.json +9 -9
  152. package/dist/locales/sv-SE/notifications.json +226 -226
  153. package/dist/locales/sv-SE/pages.json +1777 -1776
  154. package/dist/locales/sv-SE/settings.json +451 -451
  155. package/dist/locales/tr-TR/common.json +313 -313
  156. package/dist/locales/tr-TR/mobile.json +138 -138
  157. package/dist/locales/tr-TR/nav.json +30 -30
  158. package/dist/locales/tr-TR/notifications.json +228 -228
  159. package/dist/locales/tr-TR/pages.json +1792 -1791
  160. package/dist/locales/tr-TR/settings.json +483 -483
  161. package/dist/locales/uk-UA/common.json +283 -283
  162. package/dist/locales/uk-UA/mobile.json +98 -98
  163. package/dist/locales/uk-UA/nav.json +8 -8
  164. package/dist/locales/uk-UA/notifications.json +226 -226
  165. package/dist/locales/uk-UA/pages.json +1779 -1778
  166. package/dist/locales/uk-UA/settings.json +451 -451
  167. package/dist/locales/vi-VN/common.json +313 -313
  168. package/dist/locales/vi-VN/mobile.json +138 -138
  169. package/dist/locales/vi-VN/nav.json +30 -30
  170. package/dist/locales/vi-VN/notifications.json +228 -228
  171. package/dist/locales/vi-VN/pages.json +1796 -1795
  172. package/dist/locales/vi-VN/settings.json +483 -483
  173. package/dist/locales/zh-CN/common.json +283 -283
  174. package/dist/locales/zh-CN/mobile.json +95 -95
  175. package/dist/locales/zh-CN/nav.json +8 -8
  176. package/dist/locales/zh-CN/notifications.json +226 -226
  177. package/dist/locales/zh-CN/pages.json +1778 -1777
  178. package/dist/locales/zh-CN/settings.json +451 -451
  179. package/dist/locales/zh-TW/common.json +293 -293
  180. package/dist/locales/zh-TW/mobile.json +137 -137
  181. package/dist/locales/zh-TW/nav.json +30 -30
  182. package/dist/locales/zh-TW/notifications.json +228 -228
  183. package/dist/locales/zh-TW/pages.json +1798 -1797
  184. package/dist/locales/zh-TW/settings.json +482 -482
  185. package/package.json +3 -2
  186. package/src/locales/af-ZA/common.json +313 -313
  187. package/src/locales/af-ZA/mobile.json +138 -138
  188. package/src/locales/af-ZA/nav.json +30 -30
  189. package/src/locales/af-ZA/notifications.json +228 -228
  190. package/src/locales/af-ZA/pages.json +1776 -1775
  191. package/src/locales/af-ZA/settings.json +483 -483
  192. package/src/locales/ar-SA/common.json +289 -289
  193. package/src/locales/ar-SA/mobile.json +96 -96
  194. package/src/locales/ar-SA/nav.json +8 -8
  195. package/src/locales/ar-SA/notifications.json +227 -227
  196. package/src/locales/ar-SA/pages.json +1779 -1778
  197. package/src/locales/ar-SA/settings.json +452 -452
  198. package/src/locales/ca-ES/common.json +286 -286
  199. package/src/locales/ca-ES/mobile.json +125 -125
  200. package/src/locales/ca-ES/nav.json +8 -8
  201. package/src/locales/ca-ES/notifications.json +228 -228
  202. package/src/locales/ca-ES/pages.json +1775 -1774
  203. package/src/locales/ca-ES/settings.json +471 -471
  204. package/src/locales/cs-CZ/common.json +284 -284
  205. package/src/locales/cs-CZ/mobile.json +99 -99
  206. package/src/locales/cs-CZ/nav.json +8 -8
  207. package/src/locales/cs-CZ/notifications.json +226 -226
  208. package/src/locales/cs-CZ/pages.json +1766 -1765
  209. package/src/locales/cs-CZ/settings.json +451 -451
  210. package/src/locales/da-DK/common.json +284 -284
  211. package/src/locales/da-DK/mobile.json +99 -99
  212. package/src/locales/da-DK/nav.json +9 -9
  213. package/src/locales/da-DK/notifications.json +226 -226
  214. package/src/locales/da-DK/pages.json +1775 -1774
  215. package/src/locales/da-DK/settings.json +451 -451
  216. package/src/locales/de-DE/common.json +285 -285
  217. package/src/locales/de-DE/mobile.json +102 -102
  218. package/src/locales/de-DE/nav.json +10 -10
  219. package/src/locales/de-DE/notifications.json +226 -226
  220. package/src/locales/de-DE/pages.json +1775 -1774
  221. package/src/locales/de-DE/settings.json +451 -451
  222. package/src/locales/el-GR/common.json +283 -283
  223. package/src/locales/el-GR/mobile.json +97 -97
  224. package/src/locales/el-GR/nav.json +8 -8
  225. package/src/locales/el-GR/notifications.json +226 -226
  226. package/src/locales/el-GR/pages.json +1781 -1780
  227. package/src/locales/el-GR/settings.json +451 -451
  228. package/src/locales/en/pages.json +2 -1
  229. package/src/locales/en-US/common.json +280 -280
  230. package/src/locales/en-US/nav.json +20 -20
  231. package/src/locales/en-US/notifications.json +222 -222
  232. package/src/locales/en-US/pages.json +1553 -1552
  233. package/src/locales/en-US/settings.json +432 -432
  234. package/src/locales/es-ES/common.json +283 -283
  235. package/src/locales/es-ES/mobile.json +96 -96
  236. package/src/locales/es-ES/nav.json +8 -8
  237. package/src/locales/es-ES/notifications.json +226 -226
  238. package/src/locales/es-ES/pages.json +1774 -1773
  239. package/src/locales/es-ES/settings.json +451 -451
  240. package/src/locales/fi-FI/common.json +284 -284
  241. package/src/locales/fi-FI/mobile.json +97 -97
  242. package/src/locales/fi-FI/nav.json +9 -9
  243. package/src/locales/fi-FI/notifications.json +226 -226
  244. package/src/locales/fi-FI/pages.json +1776 -1775
  245. package/src/locales/fi-FI/settings.json +451 -451
  246. package/src/locales/fr-FR/common.json +284 -284
  247. package/src/locales/fr-FR/mobile.json +10 -10
  248. package/src/locales/fr-FR/nav.json +11 -11
  249. package/src/locales/fr-FR/notifications.json +226 -226
  250. package/src/locales/fr-FR/pages.json +1762 -1761
  251. package/src/locales/fr-FR/settings.json +452 -452
  252. package/src/locales/he-IL/common.json +313 -313
  253. package/src/locales/he-IL/mobile.json +138 -138
  254. package/src/locales/he-IL/nav.json +30 -30
  255. package/src/locales/he-IL/notifications.json +228 -228
  256. package/src/locales/he-IL/pages.json +1796 -1795
  257. package/src/locales/he-IL/settings.json +483 -483
  258. package/src/locales/hu-HU/common.json +298 -298
  259. package/src/locales/hu-HU/mobile.json +138 -138
  260. package/src/locales/hu-HU/nav.json +30 -30
  261. package/src/locales/hu-HU/notifications.json +228 -228
  262. package/src/locales/hu-HU/pages.json +1792 -1791
  263. package/src/locales/hu-HU/settings.json +482 -482
  264. package/src/locales/it-IT/common.json +284 -284
  265. package/src/locales/it-IT/mobile.json +101 -101
  266. package/src/locales/it-IT/nav.json +10 -10
  267. package/src/locales/it-IT/notifications.json +227 -227
  268. package/src/locales/it-IT/pages.json +1779 -1778
  269. package/src/locales/it-IT/settings.json +451 -451
  270. package/src/locales/ja-JP/common.json +283 -283
  271. package/src/locales/ja-JP/mobile.json +98 -98
  272. package/src/locales/ja-JP/nav.json +9 -9
  273. package/src/locales/ja-JP/notifications.json +226 -226
  274. package/src/locales/ja-JP/pages.json +1779 -1778
  275. package/src/locales/ja-JP/settings.json +451 -451
  276. package/src/locales/ko-KR/common.json +313 -313
  277. package/src/locales/ko-KR/mobile.json +138 -138
  278. package/src/locales/ko-KR/nav.json +30 -30
  279. package/src/locales/ko-KR/notifications.json +228 -228
  280. package/src/locales/ko-KR/pages.json +1796 -1795
  281. package/src/locales/ko-KR/settings.json +483 -483
  282. package/src/locales/nl-NL/common.json +283 -283
  283. package/src/locales/nl-NL/mobile.json +91 -91
  284. package/src/locales/nl-NL/nav.json +10 -10
  285. package/src/locales/nl-NL/notifications.json +226 -226
  286. package/src/locales/nl-NL/pages.json +1768 -1767
  287. package/src/locales/nl-NL/settings.json +444 -444
  288. package/src/locales/no-NO/common.json +283 -283
  289. package/src/locales/no-NO/mobile.json +96 -96
  290. package/src/locales/no-NO/nav.json +8 -8
  291. package/src/locales/no-NO/notifications.json +226 -226
  292. package/src/locales/no-NO/pages.json +1778 -1777
  293. package/src/locales/no-NO/settings.json +451 -451
  294. package/src/locales/pl-PL/common.json +283 -283
  295. package/src/locales/pl-PL/mobile.json +94 -94
  296. package/src/locales/pl-PL/nav.json +8 -8
  297. package/src/locales/pl-PL/notifications.json +226 -226
  298. package/src/locales/pl-PL/pages.json +1778 -1777
  299. package/src/locales/pl-PL/settings.json +451 -451
  300. package/src/locales/pt-BR/common.json +286 -286
  301. package/src/locales/pt-BR/mobile.json +138 -138
  302. package/src/locales/pt-BR/nav.json +17 -17
  303. package/src/locales/pt-BR/notifications.json +226 -226
  304. package/src/locales/pt-BR/pages.json +1781 -1780
  305. package/src/locales/pt-BR/settings.json +454 -454
  306. package/src/locales/pt-PT/common.json +289 -289
  307. package/src/locales/pt-PT/mobile.json +97 -97
  308. package/src/locales/pt-PT/nav.json +9 -9
  309. package/src/locales/pt-PT/notifications.json +226 -226
  310. package/src/locales/pt-PT/pages.json +1780 -1779
  311. package/src/locales/pt-PT/settings.json +452 -452
  312. package/src/locales/ro-RO/common.json +283 -283
  313. package/src/locales/ro-RO/mobile.json +98 -98
  314. package/src/locales/ro-RO/nav.json +9 -9
  315. package/src/locales/ro-RO/notifications.json +226 -226
  316. package/src/locales/ro-RO/pages.json +1779 -1778
  317. package/src/locales/ro-RO/settings.json +451 -451
  318. package/src/locales/ru-RU/common.json +288 -288
  319. package/src/locales/ru-RU/mobile.json +97 -97
  320. package/src/locales/ru-RU/nav.json +8 -8
  321. package/src/locales/ru-RU/notifications.json +226 -226
  322. package/src/locales/ru-RU/pages.json +1781 -1780
  323. package/src/locales/ru-RU/settings.json +451 -451
  324. package/src/locales/sr-SP/common.json +313 -313
  325. package/src/locales/sr-SP/mobile.json +138 -138
  326. package/src/locales/sr-SP/nav.json +30 -30
  327. package/src/locales/sr-SP/notifications.json +228 -228
  328. package/src/locales/sr-SP/pages.json +1796 -1795
  329. package/src/locales/sr-SP/settings.json +483 -483
  330. package/src/locales/sv-SE/common.json +284 -284
  331. package/src/locales/sv-SE/mobile.json +100 -100
  332. package/src/locales/sv-SE/nav.json +9 -9
  333. package/src/locales/sv-SE/notifications.json +226 -226
  334. package/src/locales/sv-SE/pages.json +1777 -1776
  335. package/src/locales/sv-SE/settings.json +451 -451
  336. package/src/locales/tr-TR/common.json +313 -313
  337. package/src/locales/tr-TR/mobile.json +138 -138
  338. package/src/locales/tr-TR/nav.json +30 -30
  339. package/src/locales/tr-TR/notifications.json +228 -228
  340. package/src/locales/tr-TR/pages.json +1792 -1791
  341. package/src/locales/tr-TR/settings.json +483 -483
  342. package/src/locales/uk-UA/common.json +283 -283
  343. package/src/locales/uk-UA/mobile.json +98 -98
  344. package/src/locales/uk-UA/nav.json +8 -8
  345. package/src/locales/uk-UA/notifications.json +226 -226
  346. package/src/locales/uk-UA/pages.json +1779 -1778
  347. package/src/locales/uk-UA/settings.json +451 -451
  348. package/src/locales/vi-VN/common.json +313 -313
  349. package/src/locales/vi-VN/mobile.json +138 -138
  350. package/src/locales/vi-VN/nav.json +30 -30
  351. package/src/locales/vi-VN/notifications.json +228 -228
  352. package/src/locales/vi-VN/pages.json +1796 -1795
  353. package/src/locales/vi-VN/settings.json +483 -483
  354. package/src/locales/zh-CN/common.json +283 -283
  355. package/src/locales/zh-CN/mobile.json +95 -95
  356. package/src/locales/zh-CN/nav.json +8 -8
  357. package/src/locales/zh-CN/notifications.json +226 -226
  358. package/src/locales/zh-CN/pages.json +1778 -1777
  359. package/src/locales/zh-CN/settings.json +451 -451
  360. package/src/locales/zh-TW/common.json +293 -293
  361. package/src/locales/zh-TW/mobile.json +137 -137
  362. package/src/locales/zh-TW/nav.json +30 -30
  363. package/src/locales/zh-TW/notifications.json +228 -228
  364. package/src/locales/zh-TW/pages.json +1798 -1797
  365. package/src/locales/zh-TW/settings.json +482 -482
@@ -1,504 +1,504 @@
1
1
  {
2
- "accessControl": {
3
- "allowGuestAccess": "Allow Guest Access",
4
- "allowGuestAccessDesc": "When disabled, only the server owner can log in to Tracearr",
5
- "description": "Configure who can access Tracearr",
6
- "singleOwnerNote": "Note: When guest access is disabled, only the server owner can sign in. All other users will see an \"Access Denied\" message.",
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
- "automations": "Automations",
49
- "cannotRestore": "恢复需要 PostgreSQL 超级用户权限。请确保您的数据库用户拥有超级用户权限并重试。",
50
- "complete": "还原成功完成。页面将很快刷新。",
51
- "confirm": "开始还原",
52
- "confirmLabel": "我理解这将替换所有数据",
53
- "databaseSize": "数据库大小",
54
- "failed": "还原失败",
55
- "libraryItems": "媒体库数量",
56
- "pgVersionMismatch": "备份是在 PostgreSQL {{backupVersion}} 上创建的,但此服务器运行的是 PostgreSQL {{serverVersion}}。不支持从较新版本的 PostgreSQL 恢复转储。",
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": "手機應用程式",
8
+ "tailscale": "",
9
+ "import": "匯入",
10
+ "advanced": "進階",
11
+ "jobs": "任務",
12
+ "accessControl": "存取控制",
13
+ "backup": "備份"
100
14
  },
101
15
  "general": {
102
- "accentColor": "Accent Color",
103
- "apiDocs": "API Docs",
104
- "apiKeyDesc": "Access the Tracearr API for third-party integrations like Homarr, Home Assistant, etc.",
105
- "apiKeyReadAccess": "Your API key grants full read access to your Tracearr data.",
106
- "apiRateLimit": "API Rate Limit",
107
- "apiRateLimitDesc": "Maximum public API requests per minute per key. Restart required to apply.",
108
- "apiRateLimitSuffix": "/min",
109
- "appearance": "Appearance",
110
- "appearanceDesc": "Customize the look and feel of Tracearr",
111
- "application": "Application",
112
- "applicationDesc": "Configure basic application settings",
113
- "copyToClipboard": "Copy to clipboard",
114
- "cyanDefault": "* Cyan is the default accent color",
115
- "default": "(default)",
116
- "detect": "Detect",
117
- "enhancedGeoIP": "Enhanced GeoIP Lookup",
118
- "enhancedGeoIPDesc": "Use Plex's GeoIP service for more accurate location data. When enabled, IP addresses are sent to plex.tv for lookup. Local MaxMind database is used as fallback.",
119
- "externalAccess": "External Access",
120
- "externalAccessDesc": "Configure how external devices (like mobile apps) connect to your server",
121
- "externalUrl": "外部 URL",
122
- "externalUrlDesc": "The URL that external devices should use to reach this server. Used for QR codes and mobile app pairing.",
123
- "externalUrlPlaceholder": "https://tracearr.example.com",
124
- "generateApiKeyPrompt": "Generate an API key to enable external integrations.",
125
- "generateKey": "Generate Key",
126
- "helpTranslate": "帮助翻译 Tracearr",
127
- "imperial": "英制(mi, mph)",
128
- "iosHttpWarning": "iOS requires HTTPS for external connections. Set up a reverse proxy with SSL.",
129
- "jellyfinPollingNote": "Jellyfin/Emby are polled at the interval above.",
130
- "language": "语言",
131
- "languageDescription": "选择您首选的显示语言。",
132
- "localAccount": "本地用户",
133
- "localhostWarning": "Localhost URLs won't work for external devices. Use your LAN IP or a domain name.",
134
- "metric": "公制 (km, km/h)",
135
- "noApiKeyGenerated": "No API key generated",
136
- "plexAccount": "Plex账户",
137
- "plexSseNote": "Plex uses Server-Sent Events (SSE) for near-instant updates — no polling needed.",
138
- "primaryAuth": "主要认证方法",
139
- "publicApiSettings": "Public API",
140
- "publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
141
- "regenerate": "Regenerate",
142
- "regenerateApiKey": "Regenerate API Key?",
143
- "regenerateApiKeyDesc": "This will invalidate your current API key. Any integrations using the old key will stop working.",
144
- "sessionSync": "Session Sync",
145
- "sessionSyncDesc": "Enable session tracking for your media servers",
146
- "syncInterval": "同步间隔",
147
- "syncIntervalDesc": "Polling frequency for Jellyfin/Emby (5-300 seconds)",
148
- "syncIntervalSuffix": "sec",
149
- "theme": "Theme",
150
- "themeDark": "Dark",
151
- "themeLight": "Light",
152
- "themeSystem": "System",
153
- "timeFormat": "时间格式",
154
- "timeFormat12h": "12小时(1:30 PM)",
155
- "timeFormat24h": "24小时(13:30)",
156
- "timeFormatDescription": "选择时间的显示方式。",
157
- "timezone": "时区",
158
- "title": "通用设置",
159
- "unitSystem": "单位系统",
160
- "unitSystemDesc": "Choose how distances and speeds are displayed",
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)",
31
+ "appearance": "",
32
+ "appearanceDesc": "",
33
+ "theme": "",
34
+ "accentColor": "",
35
+ "default": "",
36
+ "cyanDefault": "",
37
+ "themeLight": "",
38
+ "themeDark": "",
39
+ "themeSystem": "",
40
+ "application": "",
41
+ "applicationDesc": "",
42
+ "unitSystemDesc": "",
43
+ "sessionSync": "",
44
+ "sessionSyncDesc": "",
45
+ "syncInterval": "",
46
+ "syncIntervalDesc": "",
47
+ "syncIntervalSuffix": "",
48
+ "plexSseNote": "",
49
+ "jellyfinPollingNote": "",
50
+ "enhancedGeoIP": "",
51
+ "enhancedGeoIPDesc": "",
52
+ "externalAccess": "",
53
+ "externalAccessDesc": "",
54
+ "externalUrl": "",
55
+ "externalUrlPlaceholder": "",
56
+ "externalUrlDesc": "",
57
+ "detect": "",
58
+ "localhostWarning": "",
59
+ "iosHttpWarning": "",
60
+ "apiKeyDesc": "",
61
+ "apiDocs": "",
62
+ "noApiKeyGenerated": "",
63
+ "copyToClipboard": "",
64
+ "apiKeyReadAccess": "",
65
+ "generateApiKeyPrompt": "",
66
+ "regenerate": "",
67
+ "generateKey": "",
68
+ "regenerateApiKey": "",
69
+ "regenerateApiKeyDesc": "",
70
+ "publicApiSettings": "",
71
+ "publicApiSettingsDesc": "",
72
+ "watchedThresholdMovie": "",
73
+ "watchedThresholdMovieDesc": "",
74
+ "watchedThresholdTv": "",
75
+ "watchedThresholdTvDesc": "",
76
+ "watchedThresholdMusic": "",
77
+ "watchedThresholdMusicDesc": "",
78
+ "watchedThresholdSuffix": "",
79
+ "apiRateLimit": "",
80
+ "apiRateLimitDesc": "",
81
+ "apiRateLimitSuffix": "",
161
82
  "updateChecks": {
162
- "description": "Tracearr looks for new releases every six hours. Notifications come from whatever automation listens for the update triggers.",
163
- "plugin": "Realtime plugin",
164
- "pluginDesc": "Check for new releases of the Tracearr plugin your Jellyfin and Emby servers stream events through.",
165
- "server": "Media servers",
166
- "serverDesc": "Compare what each Plex, Jellyfin and Emby server runs with the newest release its makers publish.",
167
- "title": "Update checks"
83
+ "title": "",
84
+ "description": "",
85
+ "plugin": "",
86
+ "pluginDesc": "",
87
+ "server": "",
88
+ "serverDesc": ""
168
89
  },
169
90
  "imageCache": {
170
- "title": "Poster cache",
171
- "description": "One copy of each poster, kept on disk until the poster changes. Nothing here is evicted to make room; when the disk runs low the cache stops growing and says so.",
172
- "size": "On disk",
173
- "files": "Files",
174
- "need": "Estimated need",
175
- "needHint": "{{count}} posters × 18 KB",
176
- "free": "Free disk",
177
- "freeOf": "of {{total}}",
178
- "floor": "Keeps free",
179
- "ceiling": "Ceiling",
180
- "lastSweep": "Last sweep",
181
- "never": "not yet",
182
- "diskLimited": "Disk-limited since {{since}}: about {{shortfall}} of posters are not cached.",
183
- "loadError": "Could not load the cache status."
184
- },
185
- "watchedThresholdMovie": "Movie Watched Threshold",
186
- "watchedThresholdMovieDesc": "Percentage of a movie that must be watched before it's marked complete",
187
- "watchedThresholdMusic": "Track Watched Threshold",
188
- "watchedThresholdMusicDesc": "Percentage of a track that must be played before it's marked complete",
189
- "watchedThresholdSuffix": "%",
190
- "watchedThresholdTv": "TV Episode Watched Threshold",
191
- "watchedThresholdTvDesc": "Percentage of an episode that must be watched before it's marked complete"
192
- },
193
- "import": {
194
- "apiKeyHelp": "Found in Tautulli Settings → Web Interface → API Key.",
195
- "apiKeyPlaceholder": "Your Tautulli API key",
196
- "checkPlugin": "Check Plugin",
197
- "checkingPlugin": "Checking...",
198
- "connectToTautulli": "Connect to Tautulli",
199
- "connectedFound": "Connected! Found {{users}} users and {{records}} history records.",
200
- "duplicates": "{{count}} duplicates skipped",
201
- "enrichMetadata": "Enrich with media metadata (recommended)",
202
- "enrichMetadataHelp": "Fetches additional metadata from your media server for imported sessions.",
203
- "enriched": "丰富",
204
- "errors": "错误",
205
- "exportBackupHelp": "In Jellystat, go to Settings → Backup → Activity Backup to export your data.",
206
- "exportBackupHint": "Export an Activity Backup from Jellystat",
207
- "howItWorks": "How the import works",
208
- "howItWorksDesc": "Tracearr will import all historical watch data from your source. This may take a while depending on the size of your library.",
209
- "importComplete": "导入完成",
210
- "importFailed": "导入失败",
211
- "importFullRange": "Import full history",
212
- "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.",
213
- "importHistory": "Import History",
214
- "importHistoryDesc": "Import historical watch data from external sources",
215
- "importInProgressGeneric": "Import in progress...",
216
- "importInProgressPercent": "Import in progress ({{percent}}% complete)...",
217
- "importOptions": "Import Options",
218
- "importProgress": "导入进度",
219
- "imported": "已导入",
220
- "importing": "Importing...",
221
- "includeStreamDetails": "Include detailed stream data (codecs, bitrate, resolution)",
222
- "includeStreamDetailsHelp": "Imports additional stream information. May increase import time significantly.",
223
- "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
224
- "jellystat": "从 Jellystat 导入",
225
- "noServers": "No Servers Connected",
226
- "noServersHint": "You need at least one connected server to import data.",
227
- "overlapSkipped": "{{count}} skipped as overlap",
228
- "overwriteFriendlyNames": "Overwrite existing friendly names with Tautulli names",
229
- "overwriteFriendlyNamesHelp": "Existing identity names in Tracearr will be replaced with the friendly names from Tautulli.",
230
- "page": "页面",
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
- "pleaseEnterDetails": "Please enter Tautulli URL and API key",
234
- "pleaseSelectJsonFile": "Please select a JSON file",
235
- "plex": "Plex (Tautulli)",
236
- "pluginFound": "Plugin found: {{records}} records from {{oldestDate}} to {{newestDate}}",
237
- "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.",
238
- "processed": "已处理",
239
- "recordsMayBeSkipped": "Records may be skipped if:",
240
- "selectJellyfinServer": "Select a Jellyfin or Emby server",
241
- "selectPlexServer": "Select a Plex server",
242
- "selectTargetServer": "Select Target Server",
243
- "serverTimezone": "Server Timezone",
244
- "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.",
245
- "skipDuplicate": "Duplicate session — The session was already imported previously.",
246
- "skipDuplicatePlugin": "Duplicate record - already imported directly or arrived earlier via a Jellystat import of the same plugin data.",
247
- "skipInProgress": "In-progress session — Active/incomplete sessions without a reference ID are skipped.",
248
- "skipOverlap": "Overlapping record - the timestamp falls inside the period Tracearr already tracks for this server. Enable full-range import to include it.",
249
- "skipSyncHint": "If many records are skipped, ensure you've synced your server recently in Settings → Servers.",
250
- "skipUserNotFoundJellyfin": "User not found — The Jellyfin/Emby user doesn't exist in Tracearr. Sync your server first to add all users.",
251
- "skipUserNotFoundPlex": "User not found — The Plex user doesn't exist in Tracearr. Sync your server first to add all users.",
252
- "skipped": "已跳过",
253
- "startImport": "Start Import",
254
- "startingImport": "Starting import...",
255
- "step1": "1",
256
- "step2": "2",
257
- "targetServer": "Target Server",
258
- "tautulli": "从 Tautulli 导入",
259
- "tautulliUrl": "Tautulli URL",
260
- "tautulliUrlHelp": "The URL of your Tautulli instance.",
261
- "tautulliUrlPlaceholder": "http://localhost:8181",
262
- "testing": "测试中……",
263
- "testingConnection": "Testing connection...",
264
- "title": "导入数据",
265
- "updateExistingRecords": "Update existing records with stream details",
266
- "updateExistingRecordsHelp": "Previously imported records will be updated with stream quality data.",
267
- "uploadJellystatBackup": "Upload Jellystat Backup",
268
- "uploadingBackup": "Uploading backup file..."
269
- },
270
- "ipWarning": {
271
- "acknowledge": "知道了",
272
- "message": "所有用户似乎使用了相同的 IP 地址或本地网络 IP。这可能会影响到基于规则的位置或IP地址逻辑。"
273
- },
274
- "jobs": {
275
- "backfill": "Backfill",
276
- "cleanup": "Cleanup",
277
- "delayed": "delayed",
278
- "description": "Manage background tasks that keep your data accurate and optimized.",
279
- "errors": "错误",
280
- "jobHistory": "任务历史",
281
- "jobHistoryDesc": "Recent maintenance job executions",
282
- "lastJobCompleted": "Last job completed successfully",
283
- "lastJobFailed": "Last job failed",
284
- "mayTakeAWhile": "This may take a while",
285
- "mayTakeAWhileDesc": "This job may take several minutes to complete depending on the size of your library.",
286
- "normalization": "Normalization",
287
- "processed": "已处理",
288
- "queued": "queued",
289
- "runConfirm": "Run {{name}}?",
290
- "runJob": "Run Job",
291
- "running": "running",
292
- "runningState": "Running",
293
- "startJob": "Start Job",
294
- "title": "Maintenance Jobs",
295
- "unchanged": "unchanged",
296
- "updated": "updated",
297
- "waiting": "Waiting"
298
- },
299
- "mobile": {
300
- "addDevice": "Add Device",
301
- "connectedDevices": "已连接的设备",
302
- "connectedDevicesDesc": "{{count}} devices paired to your server",
303
- "copyToken": "Copy token",
304
- "deviceName": "Device name",
305
- "deviceNamePlaceholder": "e.g. iPhone 15",
306
- "devicesConnected": "{{current}} of {{max}} devices connected",
307
- "disable": "禁用",
308
- "disableMobileAccess": "Disable Mobile Access",
309
- "disableMobileAccessConfirm": "This will disconnect all mobile devices and revoke all sessions. You can re-enable mobile access later.",
310
- "done": "Done",
311
- "downloadOnAppStore": "Download on the App Store",
312
- "enableMobileAccess": "Enable Mobile Access",
313
- "enabling": "Enabling...",
314
- "expiresIn": "Expires in {{time}}",
315
- "externalUrlBanner": "Using a reverse proxy or accessing remotely? Set your",
316
- "externalUrlBannerLink": "外部 URL",
317
- "externalUrlBannerSuffix": "so the mobile app can connect to your server.",
318
- "externalUrlRequired": "An external URL must be configured in General Settings for mobile pairing to work.",
319
- "failedToGenerateToken": "Failed to Generate Token",
320
- "generateToken": "生成配对令牌",
321
- "getOnGooglePlay": "Get it on Google Play",
322
- "getTheApp": "Get the App",
323
- "getTheAppDesc": "Download the Tracearr mobile app for iOS or Android",
324
- "mobileAccessDisabled": "移动访问已禁用",
325
- "mobileAccessDisabledDesc": "Enable mobile access to allow the Tracearr mobile app to connect to your server.",
326
- "noDevices": "没有设备连接",
327
- "oneTimePairToken": "One-Time Pair Token",
328
- "pairDevice": "设备配对",
329
- "pairNewDevice": "Pair New Device",
330
- "pairNewDeviceDesc": "Scan the QR code with the Tracearr mobile app, or enter the token manually.",
331
- "pairYourDevice": "Pair Your Device",
332
- "pairYourDeviceDesc": "Scan the QR code with the Tracearr app to connect this server.",
333
- "pendingTokens": "{{count}} pending pair tokens",
334
- "removeDevice": "Remove Device",
335
- "removeDeviceConfirm": "Are you sure you want to remove {{deviceName}}? This device will need to pair again to reconnect.",
336
- "renameDevice": "Rename Device",
337
- "renameDeviceDesc": "Enter a name to identify this device in the list.",
338
- "revokeAll": "注销所有会话",
339
- "revokeAllConfirm": "This will disconnect all mobile devices. They will need to pair again to reconnect.",
340
- "revokeAllSessions": "Revoke All",
341
- "scanQrCode": "扫描二维码",
342
- "title": "移动 App",
343
- "tokenExpires": "令牌在...过期{{time}}",
344
- "tokenExpiryNote": "This token expires in 5 minutes and can only be used once."
345
- },
346
- "plex": {
347
- "chooseServer": "选择要监视的Plex媒体服务器",
348
- "selectServer": "选择服务器",
349
- "signInWithPlex": "使用 Plex 登录",
350
- "signUpWithPlex": "使用Plex注册"
351
- },
352
- "serverHealth": {
353
- "multipleUnreachable": "{{count}} 服务器无法访问:{{serverNames}}",
354
- "unreachable": "{{serverName}} 无法访问"
91
+ "title": "",
92
+ "description": "",
93
+ "size": "",
94
+ "files": "",
95
+ "need": "",
96
+ "needHint": "",
97
+ "free": "",
98
+ "freeOf": "",
99
+ "floor": "",
100
+ "ceiling": "",
101
+ "lastSweep": "",
102
+ "never": "",
103
+ "diskLimited": "",
104
+ "loadError": ""
105
+ }
355
106
  },
356
107
  "servers": {
357
- "addServer": "添加服务器",
358
- "addServerDialogDescOther": "Connect a Jellyfin or Emby server.",
359
- "addServerDialogDescPlex": "Select a Plex server from your linked account.",
360
- "added": "Added {{date}}",
361
- "allFieldsRequired": "All fields are required",
362
- "allServersConnected": "All Servers Connected",
363
- "allServersConnectedDesc": "All servers from this account are already connected.",
364
- "apiKeyHelp": "Found in your media server's dashboard under API Keys or Advanced settings.",
365
- "apiKeyHelpEmby": "Find this in Emby Server → API Keys",
366
- "apiKeyHelpJellyfin": "Find this in Jellyfin Dashboard → API Keys",
367
- "apiKeyPlaceholder": "Enter your API key",
368
- "checkingConnection": "Checking connection…",
369
- "chooseAccount": "Choose an account...",
370
- "connectServer": "Connect Server",
108
+ "title": "已連接的伺服器",
109
+ "addServer": "新增伺服器",
110
+ "serverName": "伺服器名稱",
111
+ "serverUrl": "伺服器網址",
112
+ "syncInterval": "同步間隔",
113
+ "testConnection": "測試連線",
114
+ "connectionSuccess": "連接成功",
115
+ "connectionFailed": "連接失敗",
116
+ "noServersConnected": "",
117
+ "noServersConnectedHint": "",
118
+ "serverType": "",
119
+ "loadingAccounts": "",
120
+ "noPlexAccountsLinked": "",
121
+ "noPlexAccountsLinkedHint": "",
122
+ "selectPlexAccount": "",
123
+ "chooseAccount": "",
124
+ "selectAccountHelp": "",
125
+ "allServersConnected": "",
126
+ "allServersConnectedDesc": "",
127
+ "serverUrlPlaceholder": "",
128
+ "serverUrlHelp": "",
129
+ "serverNamePlaceholder": "",
130
+ "apiKeyPlaceholder": "",
131
+ "apiKeyHelp": "",
371
132
  "connecting": "正在連接……",
372
- "connectionFailed": "连接失败",
373
- "connectionSuccess": "连接成功",
374
- "description": "Manage your connected Plex, Jellyfin, and Emby servers",
375
- "discoveringConnections": "Discovering connections...",
376
- "discoveringServers": "Discovering available Plex servers...",
377
- "editServer": "Edit Server",
378
- "editServerDesc": "Update the server name or connection URL.",
379
- "loadingAccounts": "Loading linked Plex accounts...",
380
- "noPlexAccountsLinked": "没有关联的Plex账户",
381
- "noPlexAccountsLinkedHint": "Link a Plex account above, then come back to add a server.",
382
- "noServersConnected": "No servers connected",
383
- "noServersConnectedHint": "Click \"Add Server\" to connect a Jellyfin or Emby server",
384
- "plexAccount": "Plex账户",
385
- "plexServerPlaceholder": "My Plex Server",
386
- "plexServerUrlPlaceholder": "http://192.168.1.100:32400",
387
- "pluginUpdateAvailable": "Plugin update available",
388
- "pluginVersion": "plugin v{{version}}",
389
- "pollingMode": "Polling",
390
- "posterSource": {
391
- "automatic": "Automatic (most recent)",
392
- "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.",
393
- "emptyHint": "Add a server to choose a preferred poster source.",
394
- "label": "Preferred Poster Source",
395
- "title": "Poster Preferences",
396
- "titleDesc": "Choose which server's poster is shown when a title exists on more than one server"
397
- },
398
- "realtimeActive": "Real-time updates active",
133
+ "connectServer": "",
134
+ "removeServer": "",
135
+ "removeServerConfirm": "",
136
+ "editServer": "",
137
+ "editServerDesc": "",
138
+ "serverColor": "",
139
+ "serverColorDesc": "",
140
+ "updating": "",
141
+ "allFieldsRequired": "",
142
+ "addServerDialogDescPlex": "",
143
+ "addServerDialogDescOther": "",
144
+ "description": "",
145
+ "discoveringServers": "",
146
+ "discoveringConnections": "",
147
+ "plexAccount": "",
148
+ "serverUrlHelpJellyfin": "",
149
+ "serverUrlHelpEmby": "",
150
+ "apiKeyHelpJellyfin": "",
151
+ "apiKeyHelpEmby": "",
152
+ "plexServerPlaceholder": "",
153
+ "plexServerUrlPlaceholder": "",
154
+ "updateHint": "",
155
+ "added": "",
156
+ "realtimeActive": "",
157
+ "pollingMode": "",
158
+ "setupRealtime": "",
159
+ "realtimeError": "",
160
+ "checkingConnection": "",
161
+ "pluginVersion": "",
162
+ "pluginUpdateAvailable": "",
399
163
  "realtimeDialog": {
400
- "autoDetectNote": "Restart Jellyfin or Emby after installing the plugin; the restart is required. Tracearr itself needs no restart and picks the plugin up automatically.",
401
- "close": "Close",
402
- "copyUrl": "Copy URL",
403
- "embyDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
404
- "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
405
- "embyUpdateDescription": "A newer plugin release is available. Download the latest release zip, replace the plugin DLL in your Emby plugins folder, and restart Emby.",
406
- "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.",
407
- "issueMalfunctioned": "The server reports the plugin failed to load. Updating the plugin or the media server usually clears this.",
408
- "issueRestartRequired": "The plugin is installed, but the media server needs a restart before it activates.",
409
- "jellyfinDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
410
- "jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
411
- "jellyfinUpdateDescription": "A newer plugin release is available. Open your Jellyfin dashboard, go to Plugins, Catalog, and update Tracearr SSE, then restart Jellyfin.",
412
- "openReleases": "Open releases page",
413
- "repositoryUrl": "Repository URL",
414
- "title": "Enable real-time updates",
415
- "updateTitle": "Update the Tracearr SSE plugin"
164
+ "title": "",
165
+ "updateTitle": "",
166
+ "jellyfinDescription": "",
167
+ "embyDescription": "",
168
+ "jellyfinUpdateDescription": "",
169
+ "embyUpdateDescription": "",
170
+ "repositoryUrl": "",
171
+ "copyUrl": "",
172
+ "jellyfinRepoUrl": "",
173
+ "embyReleasesUrl": "",
174
+ "openReleases": "",
175
+ "autoDetectNote": "",
176
+ "close": "",
177
+ "issueBlocked": "",
178
+ "issueRestartRequired": "",
179
+ "issueMalfunctioned": ""
180
+ },
181
+ "posterSource": {
182
+ "title": "",
183
+ "titleDesc": "",
184
+ "label": "",
185
+ "description": "",
186
+ "automatic": "",
187
+ "emptyHint": ""
416
188
  },
417
- "realtimeError": "Real-time error",
418
- "removeServer": "Remove Server",
419
- "removeServerConfirm": "Are you sure you want to remove this server? All associated session data will be retained, but you won't be able to monitor new sessions from this server.",
420
- "selectAccountHelp": "Select which Plex account to discover servers from.",
421
- "selectPlexAccount": "Select Plex Account",
422
- "serverColor": "Server Color",
423
- "serverColorDesc": "Used for visual attribution in multi-server view",
424
- "serverName": "服务器名称",
425
- "serverNamePlaceholder": "My Media Server",
426
- "serverType": "Server Type",
427
- "serverUrl": "服务器URL",
428
- "serverUrlHelp": "Direct URL to your Jellyfin or Emby server. Use IP:port for best reliability.",
429
- "serverUrlHelpEmby": "The URL where your Emby server is accessible",
430
- "serverUrlHelpJellyfin": "The URL where your Jellyfin server is accessible",
431
- "serverUrlPlaceholder": "http://192.168.1.100:8096",
432
- "setupRealtime": "Set up real-time updates",
433
- "syncInterval": "同步间隔",
434
- "testConnection": "测试连接",
435
- "title": "连接的服务器",
436
- "updateHint": "Or click Update below to save only the name change.",
437
- "updating": "更新中……",
438
189
  "version": {
439
- "installed": "Version {{version}}",
440
- "upToDate": "up to date",
441
- "updateAvailable": "update {{version}} available"
190
+ "installed": "",
191
+ "upToDate": "",
192
+ "updateAvailable": ""
442
193
  }
443
194
  },
444
- "tabs": {
445
- "accessControl": "访问控制",
446
- "advanced": "高级设置",
447
- "backup": "备份",
448
- "general": "通用",
449
- "import": "导入",
450
- "jobs": "任务",
451
- "mobile": "移动 App",
452
- "notifications": "通知",
453
- "servers": "服务器",
454
- "tailscale": "Tailscale"
195
+ "mobile": {
196
+ "title": "手機應用程式",
197
+ "pairDevice": "配對裝置",
198
+ "connectedDevices": "已連接的裝置",
199
+ "generateToken": "產生配對憑證",
200
+ "scanQrCode": "掃描 QR 碼",
201
+ "tokenExpires": "憑證於 {{time}} 過期",
202
+ "noDevices": "未連接至任何裝置",
203
+ "revokeAll": "撤銷所有會話",
204
+ "getTheApp": "",
205
+ "getTheAppDesc": "",
206
+ "getOnGooglePlay": "",
207
+ "downloadOnAppStore": "",
208
+ "pairYourDevice": "",
209
+ "pairYourDeviceDesc": "",
210
+ "externalUrlRequired": "",
211
+ "mobileAccessDisabled": "",
212
+ "mobileAccessDisabledDesc": "",
213
+ "enableMobileAccess": "",
214
+ "enabling": "",
215
+ "devicesConnected": "",
216
+ "pendingTokens": "",
217
+ "addDevice": "",
218
+ "disableMobileAccess": "",
219
+ "connectedDevicesDesc": "",
220
+ "revokeAllSessions": "",
221
+ "pairNewDevice": "",
222
+ "pairNewDeviceDesc": "",
223
+ "expiresIn": "",
224
+ "oneTimePairToken": "",
225
+ "copyToken": "",
226
+ "tokenExpiryNote": "",
227
+ "done": "",
228
+ "disableMobileAccessConfirm": "",
229
+ "disable": "",
230
+ "revokeAllConfirm": "",
231
+ "renameDevice": "",
232
+ "renameDeviceDesc": "",
233
+ "deviceName": "",
234
+ "deviceNamePlaceholder": "",
235
+ "removeDevice": "",
236
+ "failedToGenerateToken": "",
237
+ "removeDeviceConfirm": "",
238
+ "externalUrlBanner": "",
239
+ "externalUrlBannerLink": "",
240
+ "externalUrlBannerSuffix": ""
455
241
  },
456
242
  "tailscale": {
457
- "authorize": "在 Tailscale 中授权",
458
- "awaitingAuth": "等待验证……",
459
- "connected": "Tailscale 已连接。您的 Tracearr 实例在 tailnet 上可用。",
460
- "description": "在您的 Tailscale 网络上安全访问 Tracearr,无需端口转发。",
461
- "disable": "禁用 Tailscale",
462
- "disableConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接。您可以在不重新授权的情况下重新启用。",
463
- "disableConfirmTitle": "禁用 Tailscale?",
464
- "disabledDescription": "启用 Tailscale 将 Tracearr 放置在您的私人 tailnet 上。无需端口转发或反向代理。",
465
- "dnsName": "DNS 名称",
466
- "enable": "启用 Tailscale",
467
- "exitNodeNone": "无",
468
- "exitNodeOffline": "(离线)",
469
- "hideLogs": "隐藏日志",
470
- "hostname": "主机名",
471
- "hostnameHint": "此设备在您的尾网中的可选自定义名称。仅限字母、数字和连字符。",
472
- "hostnameLabel": "设备主机名",
473
- "noLogs": "无可用日志输出。",
474
- "notAvailable": "未找到 Tailscale 二进制文件。此功能仅在运行官方 Docker 镜像时可用。",
475
- "resetConfirmDescription": "这将使 Tracearr 与您的 tailnet 断开连接并移除设备身份。如果您再次启用它,您需要重新授权。",
476
- "resetConfirmTitle": "重置 Tailscale?",
477
- "showLogs": "显示日志",
478
- "starting": "启动 Tailscale……",
479
- "stopping": "停止 Tailscale……",
243
+ "title": "",
244
+ "description": "在你的 Tailscale 網路上安全訪問 Tracearr,無須端口轉發。",
245
+ "notAvailable": "未找到 Tailscale 二進位檔案。此功能只在運行官方 Docker 鏡像的時候可用。",
246
+ "disabledDescription": "啟用 Tailscale 以將 Tracearr 放在你的私人 tailnet 上。無須端口轉發或反向代理。",
247
+ "hostnameLabel": "裝置主機名稱",
248
+ "hostnameHint": "此設備在你的 tailnet 中的可選自定義名稱。僅限字母、數字和連字號。",
249
+ "enable": "啟用 Tailscale",
250
+ "disable": "停用 Tailscale",
251
+ "starting": "正在啟動 Tailscale……",
252
+ "stopping": "正在停止 Tailscale……",
253
+ "awaitingAuth": "正在等待認證……",
254
+ "authorize": "在 Tailscale 中認證",
255
+ "connected": "Tailscale 已連接。你的 Tracearr 已在 tailnet 上可用。",
256
+ "hostname": "主機名稱",
257
+ "dnsName": "DNS 名稱",
480
258
  "tailnetUrl": "網址",
481
- "title": "Tailscale VPN",
259
+ "showLogs": "顯示日誌",
260
+ "hideLogs": "隱藏日誌",
261
+ "noLogs": "沒有可用的日誌輸出。",
262
+ "exitNodeNone": "沒有",
263
+ "exitNodeOffline": "(離線)",
264
+ "unknownError": "發生了未知錯誤。",
265
+ "disableConfirmTitle": "停用 Tailscale?",
266
+ "disableConfirmDescription": "這將使 Tracearr 與你的 tailnet 中斷連接。你可以在不重新認證的情況下重新啟用。",
267
+ "resetConfirmTitle": "重置 Tailscale?",
268
+ "resetConfirmDescription": "這將使 Tracearr 與你的 tailnet 中斷連接並移除裝置認證。如果你再次啟用它,你將需要重新認證。",
482
269
  "toast": {
483
- "disableFailed": "无法禁用 Tailscale",
484
- "disabled": "Tailscale 已被禁用。",
485
- "enableFailed": "无法启用 Tailscale",
486
- "exitNodeFailed": "无法设置出口节点",
487
- "exitNodeSet": "出口节点已更新。",
488
- "reset": "Tailscale 已被重置。",
489
- "resetFailed": "无法重置 Tailscale"
490
- },
491
- "unknownError": "发生未知错误。"
270
+ "disabled": "Tailscale 已被停用。",
271
+ "enableFailed": "無法啟用 Tailscale",
272
+ "disableFailed": "無法停用 Tailscale",
273
+ "reset": "Tailscale 已被重置",
274
+ "resetFailed": "無法重置 Tailscale",
275
+ "exitNodeSet": "出口節點已更新。",
276
+ "exitNodeFailed": "無法設置出口節點"
277
+ }
278
+ },
279
+ "jobs": {
280
+ "title": "",
281
+ "description": "",
282
+ "normalization": "",
283
+ "backfill": "",
284
+ "cleanup": "",
285
+ "running": "",
286
+ "queued": "",
287
+ "delayed": "",
288
+ "waiting": "",
289
+ "runningState": "",
290
+ "runJob": "",
291
+ "processed": "",
292
+ "updated": "",
293
+ "unchanged": "",
294
+ "errors": "",
295
+ "lastJobCompleted": "",
296
+ "lastJobFailed": "",
297
+ "jobHistory": "",
298
+ "jobHistoryDesc": "",
299
+ "runConfirm": "",
300
+ "mayTakeAWhile": "",
301
+ "mayTakeAWhileDesc": "",
302
+ "startJob": ""
303
+ },
304
+ "advanced": {
305
+ "title": "進階設定",
306
+ "externalUrl": "外部網址",
307
+ "trustProxy": "信任代理標頭",
308
+ "reverseProxy": "",
309
+ "connectionScenarios": "連線情境"
310
+ },
311
+ "accessControl": {
312
+ "title": "",
313
+ "description": "",
314
+ "allowGuestAccess": "",
315
+ "allowGuestAccessDesc": "",
316
+ "singleOwnerNote": ""
317
+ },
318
+ "import": {
319
+ "title": "匯入資料",
320
+ "jellystat": "從 Jellyfin 匯入",
321
+ "tautulli": "從 Tautulli 匯入",
322
+ "importProgress": "匯入進度",
323
+ "importComplete": "匯入完成",
324
+ "importFailed": "匯入失敗",
325
+ "processed": "已處理",
326
+ "page": "頁",
327
+ "imported": "已匯入",
328
+ "skipped": "已略過",
329
+ "enriched": "豐富",
330
+ "errors": "錯誤",
331
+ "noServers": "",
332
+ "noServersHint": "",
333
+ "tautulliUrl": "",
334
+ "tautulliUrlPlaceholder": "",
335
+ "tautulliUrlHelp": "",
336
+ "apiKeyHelp": "",
337
+ "testing": "",
338
+ "connectToTautulli": "",
339
+ "importHistory": "",
340
+ "targetServer": "",
341
+ "selectPlexServer": "",
342
+ "overwriteFriendlyNames": "",
343
+ "overwriteFriendlyNamesHelp": "",
344
+ "includeStreamDetails": "",
345
+ "includeStreamDetailsHelp": "",
346
+ "importing": "",
347
+ "startImport": "",
348
+ "howItWorks": "",
349
+ "howItWorksDesc": "",
350
+ "recordsMayBeSkipped": "",
351
+ "selectTargetServer": "",
352
+ "selectJellyfinServer": "",
353
+ "uploadJellystatBackup": "",
354
+ "exportBackupHint": "",
355
+ "exportBackupHelp": "",
356
+ "importOptions": "",
357
+ "enrichMetadata": "",
358
+ "enrichMetadataHelp": "",
359
+ "updateExistingRecords": "",
360
+ "updateExistingRecordsHelp": "",
361
+ "pleaseEnterDetails": "",
362
+ "testingConnection": "",
363
+ "pleaseSelectJsonFile": "",
364
+ "uploadingBackup": "",
365
+ "importHistoryDesc": "",
366
+ "plex": "",
367
+ "jellyfinEmby": "",
368
+ "step1": "",
369
+ "step2": "",
370
+ "apiKeyPlaceholder": "",
371
+ "skipUserNotFoundPlex": "",
372
+ "skipDuplicate": "",
373
+ "skipInProgress": "",
374
+ "skipUserNotFoundJellyfin": "",
375
+ "skipSyncHint": "",
376
+ "importInProgressPercent": "",
377
+ "importInProgressGeneric": "",
378
+ "startingImport": "",
379
+ "connectedFound": "",
380
+ "playbackReporting": "",
381
+ "playbackReportingDesc": "",
382
+ "checkPlugin": "",
383
+ "checkingPlugin": "",
384
+ "pluginFound": "",
385
+ "pluginNotInstalled": "",
386
+ "serverTimezone": "",
387
+ "serverTimezoneHelp": "",
388
+ "importFullRange": "",
389
+ "importFullRangeHelp": "",
390
+ "overlapSkipped": "",
391
+ "duplicates": "",
392
+ "skipOverlap": "",
393
+ "skipDuplicatePlugin": ""
394
+ },
395
+ "plex": {
396
+ "signInWithPlex": "使用 Plex 登入",
397
+ "signUpWithPlex": "使用 Plex 註冊",
398
+ "selectServer": "選擇伺服器",
399
+ "chooseServer": "請選擇要監控的 Plex 伺服器"
400
+ },
401
+ "account": {
402
+ "createAccount": "建立新帳號",
403
+ "email": "電子信箱",
404
+ "password": "密碼",
405
+ "displayName": "顯示名稱",
406
+ "createYourAccount": "建立你的帳號即可開始使用",
407
+ "signInToAccount": "登入你的帳號",
408
+ "useLocalAccount": "改用本地帳號"
492
409
  },
493
- "title": "设置",
494
410
  "update": {
495
- "betaUpdate": "测试版升级",
496
- "newVersion": "新版本",
497
- "pullInstructions": "在拉取后,重新启动您的容器以应用更新。",
498
- "releaseNotes": "更新日志",
499
- "stableRelease": "Stable 版",
500
- "title": "有可用更新",
501
- "updateCommand": "更新命令",
502
- "versionAvailable": "{{version}}可用"
411
+ "title": "有可用的更新",
412
+ "releaseNotes": "更新日誌",
413
+ "updateCommand": "更新指令",
414
+ "pullInstructions": "下載完成後,請重新啟動你的容器以套用更新。",
415
+ "stableRelease": "穩定版本",
416
+ "betaUpdate": "測試版更新",
417
+ "newVersion": "",
418
+ "versionAvailable": "{{version}} 已可更新"
419
+ },
420
+ "serverHealth": {
421
+ "unreachable": "{{serverName}} 無法連接",
422
+ "multipleUnreachable": "{{count}} 個伺服器無法連接:{{serverNames}}"
423
+ },
424
+ "ipWarning": {
425
+ "message": "所有使用者似乎都在使用相同的 IP 地址或本地網路 IP 地址。這可能會影響基於規則的位置或 IP 地址邏輯。",
426
+ "acknowledge": "明白了"
427
+ },
428
+ "backup": {
429
+ "title": "備份",
430
+ "backToBackups": "返回備份",
431
+ "description": "備份並還原您的 Tracearr 數據",
432
+ "createBackup": "建立備份",
433
+ "creating": "正在建立備份……",
434
+ "uploadBackup": "上傳備份",
435
+ "uploading": "上傳中……",
436
+ "databaseSize": "目前資料庫大小:{{size}}",
437
+ "freeSpace": "備份目錄可用空間:{{size}}",
438
+ "lowDiskSpace": "硬碟空間不足— 備份和還原需要至少兩倍的可用空間。",
439
+ "backupHistory": "備份記錄",
440
+ "noBackups": "尚未備份。請在上面建立您的第一個備份。",
441
+ "filename": "檔案名稱",
442
+ "size": "大小",
443
+ "date": "",
444
+ "type": "類型",
445
+ "version": "",
446
+ "actions": "操作",
447
+ "typeManual": "手動",
448
+ "typeScheduled": "已排程",
449
+ "typeUploaded": "已上傳",
450
+ "restoreAction": "還原",
451
+ "deleteConfirmTitle": "刪除備份",
452
+ "deleteConfirmDescription": "您確定要刪除此備份嗎?此操作無法撤銷。",
453
+ "schedule": "排程備份",
454
+ "scheduleType": "排程",
455
+ "scheduleDisabled": "已停用",
456
+ "scheduleDaily": "每日",
457
+ "scheduleWeekly": "每週",
458
+ "scheduleMonthly": "",
459
+ "scheduleTime": "時區({{timezone}})",
460
+ "scheduleDayOfWeek": "每週的某一日",
461
+ "scheduleDayOfMonth": "",
462
+ "scheduleDayOfMonthHint": "對於天數較少的月份,備份將在當月的最後一天執行。",
463
+ "retentionCount": "",
464
+ "retentionSuffix": "排程備份",
465
+ "daySun": "",
466
+ "dayMon": "",
467
+ "dayTue": "",
468
+ "dayWed": "",
469
+ "dayThu": "",
470
+ "dayFri": "",
471
+ "daySat": "",
472
+ "restore": {
473
+ "title": "還原備份",
474
+ "selectedBackup": "所選備份",
475
+ "databaseSize": "資料庫大小",
476
+ "sessions": "會話",
477
+ "users": "使用者",
478
+ "servers": "伺服器",
479
+ "automations": "",
480
+ "libraryItems": "媒體庫項目",
481
+ "tables": "表格",
482
+ "warning": "還原將取代所有現有資料。您需要在還原完成後重新登入。",
483
+ "confirmLabel": "我明白這將取代所有資料。",
484
+ "confirm": "開始還原",
485
+ "complete": "還原成功完成。頁面將很快刷新。",
486
+ "failed": "還原失敗",
487
+ "cannotRestore": "還原需要 PostgreSQL 管理員權限。請確保您的資料庫使用者擁有管理員權限並重試。",
488
+ "pgVersionMismatch": "備份是用 PostgreSQL {{backupVersion}} 建立的,但此伺服器使用的是 PostgreSQL {{serverVersion}}。不支援從更高版本的 PostgreSQL 還原備份。",
489
+ "tsVersionMismatch": "備份是使用 TimescaleDB {{backupVersion}} 建立的,但此伺服器僅支援到 TimescaleDB {{serverVersion}}。"
490
+ },
491
+ "toast": {
492
+ "backupCreated": "建立備份成功",
493
+ "backupCreateFailed": "建立備份失敗",
494
+ "backupUploaded": "備份上傳成功",
495
+ "backupUploadFailed": "上傳備份失敗",
496
+ "backupDeleted": "備份已刪除",
497
+ "backupDeleteFailed": "刪除備份失敗",
498
+ "restoreStarted": "還原開始",
499
+ "restoreStartFailed": "無法開始還原",
500
+ "scheduleSaved": "備份排程已儲存",
501
+ "scheduleError": "無法保存備份排程"
502
+ }
503
503
  }
504
504
  }