@tracearr/translations 2.2.0-beta.2 → 2.2.0-beta.4

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