@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": "Settings",
2
+ "title": "설정",
3
3
  "tabs": {
4
- "general": "General",
5
- "servers": "Servers",
6
- "notifications": "Notifications",
7
- "mobile": "Mobile App",
8
- "tailscale": "Tailscale",
9
- "import": "Import",
10
- "advanced": "Advanced",
11
- "jobs": "Jobs",
12
- "accessControl": "Access Control",
13
- "backup": "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": "General Settings",
17
- "unitSystem": "Unit System",
18
- "metric": "Metric (km, km/h)",
19
- "imperial": "Imperial (mi, mph)",
20
- "timezone": "Timezone",
21
- "primaryAuth": "Primary Authentication Method",
22
- "localAccount": "Local Account",
23
- "plexAccount": "Plex Account",
24
- "language": "Language",
25
- "languageDescription": "Choose your preferred display language.",
26
- "helpTranslate": "Help translate Tracearr",
27
- "timeFormat": "Time Format",
28
- "timeFormatDescription": "Choose how times are displayed.",
29
- "timeFormat12h": "12-hour (1:30 PM)",
30
- "timeFormat24h": "24-hour (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": "Sync Interval",
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": "External 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)",
30
+ "timeFormat24h": "24시간제(13:30)",
31
+ "appearance": "화면 표시",
32
+ "appearanceDesc": "Tracearr의 화면 스타일을 맞춤 설정하세요",
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": "Jellyfin/Emby 폴링 주기(5-300초)",
47
+ "syncIntervalSuffix": "초",
48
+ "plexSseNote": "Plex는 거의 즉시 업데이트되는 Server-Sent Events(SSE)를 사용하므로 폴링이 필요 없습니다.",
49
+ "jellyfinPollingNote": "Jellyfin/Emby는 위 간격으로 폴링됩니다.",
50
+ "enhancedGeoIP": "향상된 GeoIP 조회",
51
+ "enhancedGeoIPDesc": "더 정확한 위치 데이터를 위해 Plex의 GeoIP 서비스를 사용합니다. 활성화하면 조회를 위해 IP 주소가 plex.tv로 전송됩니다. 로컬 MaxMind 데이터베이스는 대체 수단으로 사용됩니다.",
52
+ "externalAccess": "외부 접근",
53
+ "externalAccessDesc": "(모바일 앱 같은) 외부 기기가 서버에 연결하는 방식을 구성하세요",
54
+ "externalUrl": "외부 URL",
55
+ "externalUrlPlaceholder": "",
56
+ "externalUrlDesc": "외부 기기가 이 서버에 접속할 때 사용할 URL입니다. QR 코드와 모바일 앱 페어링에 사용됩니다.",
57
+ "detect": "감지",
58
+ "localhostWarning": "Localhost URL은 외부 기기에서 작동하지 않습니다. LAN IP나 도메인 이름을 사용하세요.",
59
+ "iosHttpWarning": "iOS는 외부 연결에 HTTPS가 필요합니다. SSL이 적용된 리버스 프록시를 설정하세요.",
60
+ "apiKeyDesc": "Homarr, Home Assistant 등 외부 연동에서 Tracearr API에 접근할 수 있습니다.",
61
+ "apiDocs": "API 문서",
62
+ "noApiKeyGenerated": "생성된 API 키가 없습니다",
63
+ "copyToClipboard": "클립보드에 복사",
64
+ "apiKeyReadAccess": "API 키는 Tracearr 데이터에 대한 전체 읽기 권한을 부여합니다.",
65
+ "generateApiKeyPrompt": "외부 연동을 사용하려면 API 키를 생성하세요.",
66
+ "regenerate": "다시 생성",
67
+ "generateKey": "키 생성",
68
+ "regenerateApiKey": "API 키를 다시 생성할까요?",
69
+ "regenerateApiKeyDesc": "현재 API 키가 무효화됩니다. 이전 키를 사용하는 모든 연동은 더 이상 작동하지 않습니다.",
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": "Connected Servers",
85
- "addServer": "Add Server",
86
- "serverName": "Server Name",
87
- "serverUrl": "Server URL",
88
- "syncInterval": "Sync Interval",
89
- "testConnection": "Test Connection",
90
- "connectionSuccess": "Connection successful",
91
- "connectionFailed": "Connection failed",
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": "No Plex Accounts Linked",
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
- "connecting": "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": "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 Account",
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",
108
+ "title": "연결된 서버",
109
+ "addServer": "서버 추가",
110
+ "serverName": "서버 이름",
111
+ "serverUrl": "서버 URL",
112
+ "syncInterval": "동기화 간격",
113
+ "testConnection": "연결 테스트",
114
+ "connectionSuccess": "연결되었습니다",
115
+ "connectionFailed": "연결에 실패했습니다",
116
+ "noServersConnected": "연결된 서버가 없습니다",
117
+ "noServersConnectedHint": "Jellyfin 또는 Emby 서버를 연결하려면 \"서버 추가\"를 클릭하세요",
118
+ "serverType": "서버 유형",
119
+ "loadingAccounts": "연결된 Plex 계정을 불러오는 중...",
120
+ "noPlexAccountsLinked": "연결된 Plex 계정이 없습니다",
121
+ "noPlexAccountsLinkedHint": "위에서 Plex 계정을 연결한 뒤 다시 돌아와 서버를 추가하세요.",
122
+ "selectPlexAccount": "Plex 계정 선택",
123
+ "chooseAccount": "계정 선택...",
124
+ "selectAccountHelp": "서버를 검색할 Plex 계정을 선택하세요.",
125
+ "allServersConnected": "모든 서버가 연결됨",
126
+ "allServersConnectedDesc": "이 계정의 모든 서버가 이미 연결되어 있습니다.",
127
+ "serverUrlPlaceholder": "",
128
+ "serverUrlHelp": "Jellyfin 또는 Emby 서버에 직접 연결되는 URL입니다. 안정성을 위해 IP:포트를 사용하는 것이 좋습니다.",
129
+ "serverNamePlaceholder": "내 미디어 서버",
130
+ "apiKeyPlaceholder": "API 키 입력",
131
+ "apiKeyHelp": "미디어 서버 대시보드의 API 키 또는 고급 설정에서 찾을 수 있습니다.",
132
+ "connecting": "연결 중...",
133
+ "connectServer": "서버 연결",
134
+ "removeServer": "서버 제거",
135
+ "removeServerConfirm": "이 서버를 제거할까요? 연결된 세션 데이터는 유지되지만, 이 서버의 새 세션은 더 이상 모니터링할 수 없습니다.",
136
+ "editServer": "서버 수정",
137
+ "editServerDesc": "서버 이름 또는 연결 URL을 업데이트하세요.",
138
+ "serverColor": "서버 색상",
139
+ "serverColorDesc": "여러 서버 보기에서 서버를 구분하는 데 사용됩니다",
140
+ "updating": "업데이트 중...",
141
+ "allFieldsRequired": "모든 항목을 입력해야 합니다",
142
+ "addServerDialogDescPlex": "연결된 계정에서 Plex 서버를 선택하세요.",
143
+ "addServerDialogDescOther": "Jellyfin 또는 Emby 서버를 연결하세요.",
144
+ "description": "연결된 Plex, Jellyfin, Emby 서버를 관리하세요",
145
+ "discoveringServers": "사용 가능한 Plex 서버를 검색하는 중...",
146
+ "discoveringConnections": "연결을 검색하는 중...",
147
+ "plexAccount": "Plex 계정",
148
+ "serverUrlHelpJellyfin": "Jellyfin 서버에 접근할 수 있는 URL입니다",
149
+ "serverUrlHelpEmby": "Emby 서버에 접근할 수 있는 URL입니다",
150
+ "apiKeyHelpJellyfin": "Jellyfin 대시보드 > API 키에서 찾을 수 있습니다",
151
+ "apiKeyHelpEmby": "Emby 서버 > API 키에서 찾을 수 있습니다",
152
+ "plexServerPlaceholder": "내 Plex 서버",
153
+ "plexServerUrlPlaceholder": "",
154
+ "updateHint": "또는 아래 업데이트를 클릭해 이름 변경만 저장하세요.",
155
+ "added": "{{date}} 추가됨",
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": "다음 폴링을 기다리지 않고 즉시 세션 업데이트를 받으려면 Tracearr SSE 플러그인을 설치하세요.",
167
+ "embyDescription": "다음 폴링을 기다리지 않고 즉시 세션 업데이트를 받으려면 Tracearr SSE 플러그인을 설치하세요.",
168
+ "jellyfinUpdateDescription": "",
169
+ "embyUpdateDescription": "",
170
+ "repositoryUrl": "저장소 URL",
171
+ "copyUrl": "URL 복사",
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": "Mobile App",
168
- "pairDevice": "Pair Device",
169
- "connectedDevices": "Connected Devices",
170
- "generateToken": "Generate Pair Token",
171
- "scanQrCode": "Scan QR Code",
172
- "tokenExpires": "Token expires in {{time}}",
173
- "noDevices": "No devices connected",
174
- "revokeAll": "Revoke All Sessions",
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": "Mobile Access Disabled",
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": "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": "External 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": "iOS 또는 Android용 Tracearr 모바일 앱을 다운로드하세요",
206
+ "getOnGooglePlay": "Google Play에서 받기",
207
+ "downloadOnAppStore": "App Store에서 다운로드",
208
+ "pairYourDevice": "기기 페어링",
209
+ "pairYourDeviceDesc": "Tracearr 앱으로 QR 코드를 스캔해 이 서버에 연결하세요.",
210
+ "externalUrlRequired": "모바일 페어링을 사용하려면 일반 설정에서 외부 URL을 구성해야 합니다.",
211
+ "mobileAccessDisabled": "모바일 접근이 비활성화됨",
212
+ "mobileAccessDisabledDesc": "Tracearr 모바일 앱이 서버에 연결할 수 있도록 모바일 접근을 활성화하세요.",
213
+ "enableMobileAccess": "모바일 접근 활성화",
214
+ "enabling": "활성화 중...",
215
+ "devicesConnected": "{{max}}대 중 {{current}}대 기기 연결됨",
216
+ "pendingTokens": "대기 중인 페어링 토큰 {{count}}개",
217
+ "addDevice": "기기 추가",
218
+ "disableMobileAccess": "모바일 접근 비활성화",
219
+ "connectedDevicesDesc": "서버에 페어링된 기기 {{count}}대",
220
+ "revokeAllSessions": "모두 취소",
221
+ "pairNewDevice": "새 기기 페어링",
222
+ "pairNewDeviceDesc": "Tracearr 모바일 앱으로 QR 코드를 스캔하거나 토큰을 직접 입력하세요.",
223
+ "expiresIn": "만료까지 {{time}}",
224
+ "oneTimePairToken": "일회용 페어링 토큰",
225
+ "copyToken": "토큰 복사",
226
+ "tokenExpiryNote": "이 토큰은 5분 후 만료되며 한 번만 사용할 수 있습니다.",
227
+ "done": "완료",
228
+ "disableMobileAccessConfirm": "모든 모바일 기기의 연결이 끊기고 모든 세션이 취소됩니다. 나중에 모바일 접근을 다시 활성화할 수 있습니다.",
229
+ "disable": "비활성화",
230
+ "revokeAllConfirm": "모든 모바일 기기의 연결이 끊깁니다. 다시 연결하려면 기기를 다시 페어링해야 합니다.",
231
+ "renameDevice": "기기 이름 변경",
232
+ "renameDeviceDesc": "목록에서 이 기기를 식별할 이름을 입력하세요.",
233
+ "deviceName": "기기 이름",
234
+ "deviceNamePlaceholder": "예: iPhone 15",
235
+ "removeDevice": "기기 제거",
236
+ "failedToGenerateToken": "토큰 생성 실패",
237
+ "removeDeviceConfirm": "{{deviceName}}을/를 제거할까요? 다시 연결하려면 이 기기를 다시 페어링해야 합니다.",
238
+ "externalUrlBanner": "리버스 프록시를 사용하거나 원격으로 접속하나요? 모바일 앱이 서버에 연결할 수 있도록",
239
+ "externalUrlBannerLink": "외부 URL",
240
+ "externalUrlBannerSuffix": "을/를 설정하세요."
212
241
  },
213
242
  "tailscale": {
214
- "title": "Tailscale VPN",
215
- "description": "Access Tracearr securely on your Tailscale network without port forwarding.",
216
- "notAvailable": "Tailscale binary not found. This feature is only available when running the official Docker image.",
217
- "disabledDescription": "Enable Tailscale to put Tracearr on your private tailnet. No port forwarding or reverse proxy required.",
218
- "hostnameLabel": "Device Hostname",
219
- "hostnameHint": "Optional custom name for this device on your tailnet. Letters, numbers, and hyphens only.",
220
- "enable": "Enable Tailscale",
221
- "disable": "Disable Tailscale",
222
- "starting": "Starting Tailscale...",
223
- "stopping": "Stopping Tailscale...",
224
- "awaitingAuth": "Waiting for authorization...",
225
- "authorize": "Authorize in Tailscale",
226
- "connected": "Tailscale is connected. Your Tracearr instance is available on the tailnet.",
227
- "hostname": "Hostname",
228
- "dnsName": "DNS Name",
229
- "tailnetUrl": "URL",
230
- "showLogs": "Show Logs",
231
- "hideLogs": "Hide Logs",
232
- "noLogs": "No log output available.",
233
- "exitNodeNone": "None",
234
- "exitNodeOffline": "(offline)",
235
- "unknownError": "An unknown error occurred.",
236
- "disableConfirmTitle": "Disable Tailscale?",
237
- "disableConfirmDescription": "This will disconnect Tracearr from your tailnet. You can re-enable without re-authorizing.",
238
- "resetConfirmTitle": "Reset Tailscale?",
239
- "resetConfirmDescription": "This will disconnect Tracearr from your tailnet and remove the device identity. You will need to re-authorize if you enable it again.",
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 이름",
258
+ "tailnetUrl": "",
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에서 연결 해제되고 기기 Id가 제거됩니다. 다시 활성화하려면 다시 승인해야 합니다.",
240
269
  "toast": {
241
- "disabled": "Tailscale has been disabled.",
242
- "enableFailed": "Failed to enable Tailscale",
243
- "disableFailed": "Failed to disable Tailscale",
244
- "reset": "Tailscale has been reset.",
245
- "resetFailed": "Failed to reset Tailscale",
246
- "exitNodeSet": "Exit node updated.",
247
- "exitNodeFailed": "Failed to set exit node"
270
+ "disabled": "Tailscale이 비활성화되었습니다.",
271
+ "enableFailed": "Tailscale을 활성화하지 못했습니다",
272
+ "disableFailed": "Tailscale을 비활성화하지 못했습니다",
273
+ "reset": "Tailscale이 초기화되었습니다.",
274
+ "resetFailed": "Tailscale을 초기화하지 못했습니다",
275
+ "exitNodeSet": "Exit node가 업데이트되었습니다.",
276
+ "exitNodeFailed": "Exit node를 설정하지 못했습니다"
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": "processed",
263
- "updated": "updated",
264
- "unchanged": "unchanged",
265
- "errors": "errors",
266
- "lastJobCompleted": "Last job completed successfully",
267
- "lastJobFailed": "Last job failed",
268
- "jobHistory": "Job History",
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": "{{name}}을(를) 실행할까요?",
300
+ "mayTakeAWhile": "시간이 걸릴 수 있습니다",
301
+ "mayTakeAWhileDesc": "라이브러리 크기에 따라 이 작업을 완료하는 데 몇 분이 걸릴 수 있습니다.",
302
+ "startJob": "작업 시작"
274
303
  },
275
304
  "advanced": {
276
- "title": "Advanced Settings",
277
- "externalUrl": "External URL",
278
- "trustProxy": "Trust Proxy Headers",
279
- "reverseProxy": "Reverse Proxy",
280
- "connectionScenarios": "Connection Scenarios"
305
+ "title": "고급 설정",
306
+ "externalUrl": "외부 URL",
307
+ "trustProxy": "프록시 헤더 신뢰",
308
+ "reverseProxy": "리버스 프록시",
309
+ "connectionScenarios": "연결 시나리오"
281
310
  },
282
311
  "accessControl": {
283
- "title": "Access Control",
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": "Tracearr에 접근할 수 있는 사용자를 구성하세요",
314
+ "allowGuestAccess": "게스트 접근 허용",
315
+ "allowGuestAccessDesc": "비활성화하면 서버 소유자만 Tracearr에 로그인할 수 있습니다",
316
+ "singleOwnerNote": "참고: 게스트 접근이 비활성화되면 서버 소유자만 로그인할 수 있습니다. 다른 모든 사용자는 \"접근 거부\" 메시지를 보게 됩니다."
288
317
  },
289
318
  "import": {
290
- "title": "Import Data",
291
- "jellystat": "Import from Jellystat",
292
- "tautulli": "Import from Tautulli",
293
- "importProgress": "Import Progress",
294
- "importComplete": "Import Complete",
295
- "importFailed": "Import Failed",
296
- "processed": "Processed",
297
- "page": "Page",
298
- "imported": "Imported",
299
- "skipped": "Skipped",
300
- "enriched": "Enriched",
301
- "errors": "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": "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": "Jellystat에서 가져오기",
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": "Tautulli 인스턴스의 URL입니다.",
336
+ "apiKeyHelp": "Tautulli 설정 > Web Interface > API Key에서 찾을 수 있습니다.",
337
+ "testing": "테스트 중...",
338
+ "connectToTautulli": "Tautulli에 연결",
339
+ "importHistory": "가져오기 기록",
340
+ "targetServer": "대상 서버",
341
+ "selectPlexServer": "Plex 서버 선택",
342
+ "overwriteFriendlyNames": "기존 표시 이름을 Tautulli 이름으로 덮어쓰기",
343
+ "overwriteFriendlyNamesHelp": "Tracearr의 기존 식별 이름이 Tautulli의 표시 이름으로 바뀝니다.",
344
+ "includeStreamDetails": "자세한 스트림 데이터 포함(코덱, 비트레이트, 해상도)",
345
+ "includeStreamDetailsHelp": "추가 스트림 정보를 가져옵니다. 가져오기 시간이 크게 늘어날 수 있습니다.",
346
+ "importing": "가져오는 중...",
347
+ "startImport": "가져오기 시작",
348
+ "howItWorks": "가져오기 방식",
349
+ "howItWorksDesc": "Tracearr가 소스의 모든 과거 시청 데이터를 가져옵니다. 라이브러리 크기에 따라 시간이 걸릴 수 있습니다.",
350
+ "recordsMayBeSkipped": "다음 경우 기록을 건너뛸 수 있습니다:",
351
+ "selectTargetServer": "대상 서버 선택",
352
+ "selectJellyfinServer": "Jellyfin 또는 Emby 서버 선택",
353
+ "uploadJellystatBackup": "Jellystat 백업 업로드",
354
+ "exportBackupHint": "Jellystat에서 활동 백업을 내보내세요",
355
+ "exportBackupHelp": "Jellystat에서 설정 > 백업 > 활동 백업으로 이동해 데이터를 내보내세요.",
356
+ "importOptions": "가져오기 옵션",
357
+ "enrichMetadata": "미디어 메타데이터로 보강(권장)",
358
+ "enrichMetadataHelp": "가져온 세션에 대해 미디어 서버에서 추가 메타데이터를 가져옵니다.",
359
+ "updateExistingRecords": "기존 기록에 스트림 상세 정보 업데이트",
360
+ "updateExistingRecordsHelp": "이전에 가져온 기록에 스트림 품질 데이터를 업데이트합니다.",
361
+ "pleaseEnterDetails": "Tautulli URL과 API 키를 입력하세요",
362
+ "testingConnection": "연결 테스트 중...",
363
+ "pleaseSelectJsonFile": "JSON 파일을 선택하세요",
364
+ "uploadingBackup": "백업 파일을 업로드하는 중...",
365
+ "importHistoryDesc": "외부 소스에서 과거 시청 데이터를 가져옵니다",
366
+ "plex": "Plex(Tautulli)",
367
+ "jellyfinEmby": "Jellyfin/Emby(Jellystat)",
368
+ "step1": "",
369
+ "step2": "",
370
+ "apiKeyPlaceholder": "Tautulli API 키",
371
+ "skipUserNotFoundPlex": "사용자를 찾을 수 없음 - Plex 사용자가 Tracearr에 없습니다. 먼저 서버를 동기화해 모든 사용자를 추가하세요.",
372
+ "skipDuplicate": "중복 세션 - 이 세션은 이전에 이미 가져왔습니다.",
373
+ "skipInProgress": "진행 중인 세션 - 참조 ID가 없는 활성/미완료 세션은 건너뜁니다.",
374
+ "skipUserNotFoundJellyfin": "사용자를 찾을 수 없음 - Jellyfin/Emby 사용자가 Tracearr에 없습니다. 먼저 서버를 동기화해 모든 사용자를 추가하세요.",
375
+ "skipSyncHint": "건너뛴 기록이 많다면 설정 > 서버에서 최근에 서버를 동기화했는지 확인하세요.",
376
+ "importInProgressPercent": "가져오는 중({{percent}}% 완료)...",
377
+ "importInProgressGeneric": "가져오는 중...",
378
+ "startingImport": "가져오기를 시작하는 중...",
379
+ "connectedFound": "연결되었습니다! 사용자 {{users}}명과 기록 {{records}}개를 찾았습니다.",
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": "Sign in with Plex",
368
- "signUpWithPlex": "Sign up with Plex",
369
- "selectServer": "Select Server",
370
- "chooseServer": "Choose which Plex Media Server to monitor"
396
+ "signInWithPlex": "Plex로 로그인",
397
+ "signUpWithPlex": "Plex로 가입",
398
+ "selectServer": "서버 선택",
399
+ "chooseServer": "모니터링할 Plex Media Server를 선택하세요"
371
400
  },
372
401
  "account": {
373
- "createAccount": "Create Account",
374
- "email": "Email",
375
- "password": "Password",
376
- "displayName": "Display Name",
377
- "createYourAccount": "Create your account to get started",
378
- "signInToAccount": "Sign in to your account",
379
- "useLocalAccount": "Use local account instead"
402
+ "createAccount": "계정 만들기",
403
+ "email": "이메일",
404
+ "password": "비밀번호",
405
+ "displayName": "표시 이름",
406
+ "createYourAccount": "시작하려면 계정을 만드세요",
407
+ "signInToAccount": "계정에 로그인하세요",
408
+ "useLocalAccount": "로컬 계정 대신 사용"
380
409
  },
381
410
  "update": {
382
- "title": "Update Available",
383
- "releaseNotes": "Release Notes",
384
- "updateCommand": "Update Command",
385
- "pullInstructions": "After pulling, restart your container to apply the update.",
386
- "stableRelease": "Stable Release",
387
- "betaUpdate": "Beta Update",
388
- "newVersion": "New Version",
389
- "versionAvailable": "{{version}} available"
411
+ "title": "업데이트 사용 가능",
412
+ "releaseNotes": "릴리스 노트",
413
+ "updateCommand": "업데이트 명령",
414
+ "pullInstructions": "pull 후 업데이트를 적용하려면 컨테이너를 다시 시작하세요.",
415
+ "stableRelease": "안정 릴리스",
416
+ "betaUpdate": "베타 업데이트",
417
+ "newVersion": "새 버전",
418
+ "versionAvailable": "{{version}} 사용 가능"
390
419
  },
391
420
  "serverHealth": {
392
- "unreachable": "{{serverName}} is unreachable",
393
- "multipleUnreachable": "{{count}} servers unreachable: {{serverNames}}"
421
+ "unreachable": "{{serverName}}에 연결할 수 없습니다",
422
+ "multipleUnreachable": "{{count}}개 서버에 연결할 수 없습니다: {{serverNames}}"
394
423
  },
395
424
  "ipWarning": {
396
- "message": "All users appear to be using the same IP address or local network IPs. This may affect rule-based logic for location or IP addresses.",
397
- "acknowledge": "Got it"
425
+ "message": "모든 사용자가 같은 IP 주소나 로컬 네트워크 IP를 사용하는 것으로 보입니다. 위치 또는 IP 주소 기반 규칙 로직에 영향을 줄 수 있습니다.",
426
+ "acknowledge": "알겠습니다"
398
427
  },
399
428
  "backup": {
400
- "title": "Backup",
401
- "backToBackups": "Back to Backups",
402
- "description": "Backup and restore your Tracearr data",
403
- "createBackup": "Create Backup",
404
- "creating": "Creating backup...",
405
- "uploadBackup": "Upload Backup",
406
- "uploading": "Uploading...",
407
- "databaseSize": "Current database size: {{size}}",
408
- "freeSpace": "Backup directory free space: {{size}}",
409
- "lowDiskSpace": "Low disk space — backups and restores require at least twice the database size in free space.",
410
- "backupHistory": "Backup History",
411
- "noBackups": "No backups yet. Create your first backup above.",
412
- "filename": "Filename",
413
- "size": "Size",
414
- "date": "Date",
415
- "type": "Type",
416
- "version": "Version",
417
- "actions": "Actions",
418
- "typeManual": "Manual",
419
- "typeScheduled": "Scheduled",
420
- "typeUploaded": "Uploaded",
421
- "restoreAction": "Restore",
422
- "deleteConfirmTitle": "Delete Backup",
423
- "deleteConfirmDescription": "Are you sure you want to delete this backup? This cannot be undone.",
424
- "schedule": "Scheduled Backups",
425
- "scheduleType": "Schedule",
426
- "scheduleDisabled": "Disabled",
427
- "scheduleDaily": "Daily",
428
- "scheduleWeekly": "Weekly",
429
- "scheduleMonthly": "Monthly",
430
- "scheduleTime": "Time ({{timezone}})",
431
- "scheduleDayOfWeek": "Day of Week",
432
- "scheduleDayOfMonth": "Day of Month",
433
- "scheduleDayOfMonthHint": "On months with fewer days, the backup runs on the last day.",
434
- "retentionCount": "Keep Last",
435
- "retentionSuffix": "scheduled backups",
436
- "daySun": "Sunday",
437
- "dayMon": "Monday",
438
- "dayTue": "Tuesday",
439
- "dayWed": "Wednesday",
440
- "dayThu": "Thursday",
441
- "dayFri": "Friday",
442
- "daySat": "Saturday",
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": "Restore Backup",
445
- "selectedBackup": "Selected Backup",
446
- "databaseSize": "Database Size",
447
- "sessions": "Sessions",
448
- "users": "Users",
449
- "servers": "Servers",
450
- "rules": "Rules",
451
- "libraryItems": "Library Items",
452
- "tables": "Tables",
453
- "warning": "Restoring will replace all existing data. You will need to re-login after the restore completes.",
454
- "confirmLabel": "I understand this will replace all data",
455
- "confirm": "Start Restore",
456
- "complete": "Restore completed successfully. The page will refresh shortly.",
457
- "failed": "Restore failed",
458
- "cannotRestore": "Restore requires PostgreSQL superuser privileges. Please ensure your database user has superuser privileges and try again.",
459
- "pgVersionMismatch": "Backup was created on PostgreSQL {{backupVersion}} but this server runs PostgreSQL {{serverVersion}}. Restoring a dump from a newer PostgreSQL version is not supported.",
460
- "tsVersionMismatch": "Backup was created with TimescaleDB {{backupVersion}} but this server only supports up to 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": "Backup created successfully",
464
- "backupCreateFailed": "Failed to create backup",
465
- "backupUploaded": "Backup uploaded successfully",
466
- "backupUploadFailed": "Failed to upload backup",
467
- "backupDeleted": "Backup deleted",
468
- "backupDeleteFailed": "Failed to delete backup",
469
- "restoreStarted": "Restore started",
470
- "restoreStartFailed": "Failed to start restore",
471
- "scheduleSaved": "Backup schedule saved",
472
- "scheduleError": "Failed to save backup schedule"
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
  }