@tracearr/translations 2.3.0-beta.5 → 2.3.0-beta.7

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 (321) hide show
  1. package/dist/config.d.ts +54 -0
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.mobile.d.ts +54 -0
  4. package/dist/config.mobile.d.ts.map +1 -1
  5. package/dist/locales/af-ZA/common.json +282 -282
  6. package/dist/locales/af-ZA/nav.json +21 -21
  7. package/dist/locales/af-ZA/notifications.json +243 -243
  8. package/dist/locales/af-ZA/pages.json +1766 -1766
  9. package/dist/locales/af-ZA/settings.json +907 -880
  10. package/dist/locales/ar-SA/common.json +282 -282
  11. package/dist/locales/ar-SA/nav.json +21 -21
  12. package/dist/locales/ar-SA/notifications.json +246 -246
  13. package/dist/locales/ar-SA/pages.json +1776 -1776
  14. package/dist/locales/ar-SA/settings.json +911 -884
  15. package/dist/locales/ca-ES/common.json +282 -282
  16. package/dist/locales/ca-ES/nav.json +21 -21
  17. package/dist/locales/ca-ES/notifications.json +243 -243
  18. package/dist/locales/ca-ES/pages.json +1770 -1770
  19. package/dist/locales/ca-ES/settings.json +909 -882
  20. package/dist/locales/cs-CZ/common.json +282 -282
  21. package/dist/locales/cs-CZ/mobile.json +1 -1
  22. package/dist/locales/cs-CZ/nav.json +21 -21
  23. package/dist/locales/cs-CZ/notifications.json +246 -246
  24. package/dist/locales/cs-CZ/pages.json +1783 -1783
  25. package/dist/locales/cs-CZ/settings.json +911 -884
  26. package/dist/locales/da-DK/common.json +282 -282
  27. package/dist/locales/da-DK/mobile.json +1 -1
  28. package/dist/locales/da-DK/nav.json +21 -21
  29. package/dist/locales/da-DK/notifications.json +246 -246
  30. package/dist/locales/da-DK/pages.json +1776 -1776
  31. package/dist/locales/da-DK/settings.json +911 -884
  32. package/dist/locales/de-DE/common.json +282 -282
  33. package/dist/locales/de-DE/mobile.json +1 -1
  34. package/dist/locales/de-DE/nav.json +21 -21
  35. package/dist/locales/de-DE/notifications.json +246 -246
  36. package/dist/locales/de-DE/pages.json +1785 -1785
  37. package/dist/locales/de-DE/settings.json +909 -882
  38. package/dist/locales/el-GR/common.json +282 -282
  39. package/dist/locales/el-GR/nav.json +21 -21
  40. package/dist/locales/el-GR/notifications.json +246 -246
  41. package/dist/locales/el-GR/pages.json +1776 -1776
  42. package/dist/locales/el-GR/settings.json +911 -884
  43. package/dist/locales/en/settings.json +29 -2
  44. package/dist/locales/es-ES/common.json +282 -282
  45. package/dist/locales/es-ES/nav.json +21 -21
  46. package/dist/locales/es-ES/notifications.json +246 -246
  47. package/dist/locales/es-ES/pages.json +1781 -1781
  48. package/dist/locales/es-ES/settings.json +919 -892
  49. package/dist/locales/fi-FI/common.json +282 -282
  50. package/dist/locales/fi-FI/nav.json +21 -21
  51. package/dist/locales/fi-FI/notifications.json +246 -246
  52. package/dist/locales/fi-FI/pages.json +1775 -1775
  53. package/dist/locales/fi-FI/settings.json +919 -892
  54. package/dist/locales/fr-FR/common.json +283 -283
  55. package/dist/locales/fr-FR/mobile.json +8 -8
  56. package/dist/locales/fr-FR/nav.json +23 -23
  57. package/dist/locales/fr-FR/notifications.json +246 -246
  58. package/dist/locales/fr-FR/pages.json +1904 -1904
  59. package/dist/locales/fr-FR/settings.json +907 -880
  60. package/dist/locales/he-IL/common.json +282 -282
  61. package/dist/locales/he-IL/nav.json +21 -21
  62. package/dist/locales/he-IL/notifications.json +243 -243
  63. package/dist/locales/he-IL/pages.json +1766 -1766
  64. package/dist/locales/he-IL/settings.json +907 -880
  65. package/dist/locales/hu-HU/common.json +282 -282
  66. package/dist/locales/hu-HU/nav.json +21 -21
  67. package/dist/locales/hu-HU/notifications.json +243 -243
  68. package/dist/locales/hu-HU/pages.json +1766 -1766
  69. package/dist/locales/hu-HU/settings.json +907 -880
  70. package/dist/locales/it-IT/common.json +282 -282
  71. package/dist/locales/it-IT/nav.json +21 -21
  72. package/dist/locales/it-IT/notifications.json +246 -246
  73. package/dist/locales/it-IT/pages.json +1777 -1777
  74. package/dist/locales/it-IT/settings.json +910 -883
  75. package/dist/locales/ja-JP/common.json +282 -282
  76. package/dist/locales/ja-JP/nav.json +21 -21
  77. package/dist/locales/ja-JP/notifications.json +246 -246
  78. package/dist/locales/ja-JP/pages.json +1776 -1776
  79. package/dist/locales/ja-JP/settings.json +911 -884
  80. package/dist/locales/ko-KR/common.json +283 -283
  81. package/dist/locales/ko-KR/mobile.json +6 -6
  82. package/dist/locales/ko-KR/nav.json +21 -21
  83. package/dist/locales/ko-KR/notifications.json +246 -246
  84. package/dist/locales/ko-KR/pages.json +1834 -1834
  85. package/dist/locales/ko-KR/settings.json +927 -900
  86. package/dist/locales/nl-NL/common.json +282 -282
  87. package/dist/locales/nl-NL/nav.json +21 -21
  88. package/dist/locales/nl-NL/notifications.json +246 -246
  89. package/dist/locales/nl-NL/pages.json +1809 -1809
  90. package/dist/locales/nl-NL/settings.json +912 -885
  91. package/dist/locales/no-NO/common.json +282 -282
  92. package/dist/locales/no-NO/nav.json +21 -21
  93. package/dist/locales/no-NO/notifications.json +246 -246
  94. package/dist/locales/no-NO/pages.json +1777 -1777
  95. package/dist/locales/no-NO/settings.json +911 -884
  96. package/dist/locales/pl-PL/common.json +282 -282
  97. package/dist/locales/pl-PL/nav.json +21 -21
  98. package/dist/locales/pl-PL/notifications.json +246 -246
  99. package/dist/locales/pl-PL/pages.json +1777 -1777
  100. package/dist/locales/pl-PL/settings.json +911 -884
  101. package/dist/locales/pt-BR/common.json +282 -282
  102. package/dist/locales/pt-BR/nav.json +21 -21
  103. package/dist/locales/pt-BR/notifications.json +246 -246
  104. package/dist/locales/pt-BR/pages.json +1777 -1777
  105. package/dist/locales/pt-BR/settings.json +919 -892
  106. package/dist/locales/pt-PT/common.json +282 -282
  107. package/dist/locales/pt-PT/nav.json +21 -21
  108. package/dist/locales/pt-PT/notifications.json +246 -246
  109. package/dist/locales/pt-PT/pages.json +1777 -1777
  110. package/dist/locales/pt-PT/settings.json +919 -892
  111. package/dist/locales/ro-RO/common.json +282 -282
  112. package/dist/locales/ro-RO/nav.json +21 -21
  113. package/dist/locales/ro-RO/notifications.json +246 -246
  114. package/dist/locales/ro-RO/pages.json +1777 -1777
  115. package/dist/locales/ro-RO/settings.json +911 -884
  116. package/dist/locales/ru-RU/common.json +282 -282
  117. package/dist/locales/ru-RU/nav.json +21 -21
  118. package/dist/locales/ru-RU/notifications.json +246 -246
  119. package/dist/locales/ru-RU/pages.json +1776 -1776
  120. package/dist/locales/ru-RU/settings.json +911 -884
  121. package/dist/locales/sr-SP/common.json +282 -282
  122. package/dist/locales/sr-SP/nav.json +21 -21
  123. package/dist/locales/sr-SP/notifications.json +243 -243
  124. package/dist/locales/sr-SP/pages.json +1766 -1766
  125. package/dist/locales/sr-SP/settings.json +907 -880
  126. package/dist/locales/sv-SE/common.json +282 -282
  127. package/dist/locales/sv-SE/nav.json +21 -21
  128. package/dist/locales/sv-SE/notifications.json +246 -246
  129. package/dist/locales/sv-SE/pages.json +1778 -1778
  130. package/dist/locales/sv-SE/settings.json +911 -884
  131. package/dist/locales/tr-TR/common.json +282 -282
  132. package/dist/locales/tr-TR/nav.json +21 -21
  133. package/dist/locales/tr-TR/notifications.json +243 -243
  134. package/dist/locales/tr-TR/pages.json +1766 -1766
  135. package/dist/locales/tr-TR/settings.json +907 -880
  136. package/dist/locales/uk-UA/common.json +282 -282
  137. package/dist/locales/uk-UA/nav.json +21 -21
  138. package/dist/locales/uk-UA/notifications.json +246 -246
  139. package/dist/locales/uk-UA/pages.json +1776 -1776
  140. package/dist/locales/uk-UA/settings.json +913 -886
  141. package/dist/locales/vi-VN/common.json +282 -282
  142. package/dist/locales/vi-VN/nav.json +21 -21
  143. package/dist/locales/vi-VN/notifications.json +243 -243
  144. package/dist/locales/vi-VN/pages.json +1766 -1766
  145. package/dist/locales/vi-VN/settings.json +907 -880
  146. package/dist/locales/zh-CN/common.json +283 -283
  147. package/dist/locales/zh-CN/mobile.json +5 -5
  148. package/dist/locales/zh-CN/nav.json +21 -21
  149. package/dist/locales/zh-CN/notifications.json +250 -250
  150. package/dist/locales/zh-CN/pages.json +1803 -1803
  151. package/dist/locales/zh-CN/settings.json +914 -887
  152. package/dist/locales/zh-TW/common.json +282 -282
  153. package/dist/locales/zh-TW/nav.json +21 -21
  154. package/dist/locales/zh-TW/notifications.json +246 -246
  155. package/dist/locales/zh-TW/pages.json +1769 -1769
  156. package/dist/locales/zh-TW/settings.json +910 -883
  157. package/package.json +2 -2
  158. package/src/locales/af-ZA/common.json +282 -282
  159. package/src/locales/af-ZA/nav.json +21 -21
  160. package/src/locales/af-ZA/notifications.json +243 -243
  161. package/src/locales/af-ZA/pages.json +1766 -1766
  162. package/src/locales/af-ZA/settings.json +907 -880
  163. package/src/locales/ar-SA/common.json +282 -282
  164. package/src/locales/ar-SA/nav.json +21 -21
  165. package/src/locales/ar-SA/notifications.json +246 -246
  166. package/src/locales/ar-SA/pages.json +1776 -1776
  167. package/src/locales/ar-SA/settings.json +911 -884
  168. package/src/locales/ca-ES/common.json +282 -282
  169. package/src/locales/ca-ES/nav.json +21 -21
  170. package/src/locales/ca-ES/notifications.json +243 -243
  171. package/src/locales/ca-ES/pages.json +1770 -1770
  172. package/src/locales/ca-ES/settings.json +909 -882
  173. package/src/locales/cs-CZ/common.json +282 -282
  174. package/src/locales/cs-CZ/mobile.json +1 -1
  175. package/src/locales/cs-CZ/nav.json +21 -21
  176. package/src/locales/cs-CZ/notifications.json +246 -246
  177. package/src/locales/cs-CZ/pages.json +1783 -1783
  178. package/src/locales/cs-CZ/settings.json +911 -884
  179. package/src/locales/da-DK/common.json +282 -282
  180. package/src/locales/da-DK/mobile.json +1 -1
  181. package/src/locales/da-DK/nav.json +21 -21
  182. package/src/locales/da-DK/notifications.json +246 -246
  183. package/src/locales/da-DK/pages.json +1776 -1776
  184. package/src/locales/da-DK/settings.json +911 -884
  185. package/src/locales/de-DE/common.json +282 -282
  186. package/src/locales/de-DE/mobile.json +1 -1
  187. package/src/locales/de-DE/nav.json +21 -21
  188. package/src/locales/de-DE/notifications.json +246 -246
  189. package/src/locales/de-DE/pages.json +1785 -1785
  190. package/src/locales/de-DE/settings.json +909 -882
  191. package/src/locales/el-GR/common.json +282 -282
  192. package/src/locales/el-GR/nav.json +21 -21
  193. package/src/locales/el-GR/notifications.json +246 -246
  194. package/src/locales/el-GR/pages.json +1776 -1776
  195. package/src/locales/el-GR/settings.json +911 -884
  196. package/src/locales/en/settings.json +29 -2
  197. package/src/locales/es-ES/common.json +282 -282
  198. package/src/locales/es-ES/nav.json +21 -21
  199. package/src/locales/es-ES/notifications.json +246 -246
  200. package/src/locales/es-ES/pages.json +1781 -1781
  201. package/src/locales/es-ES/settings.json +919 -892
  202. package/src/locales/fi-FI/common.json +282 -282
  203. package/src/locales/fi-FI/nav.json +21 -21
  204. package/src/locales/fi-FI/notifications.json +246 -246
  205. package/src/locales/fi-FI/pages.json +1775 -1775
  206. package/src/locales/fi-FI/settings.json +919 -892
  207. package/src/locales/fr-FR/common.json +283 -283
  208. package/src/locales/fr-FR/mobile.json +8 -8
  209. package/src/locales/fr-FR/nav.json +23 -23
  210. package/src/locales/fr-FR/notifications.json +246 -246
  211. package/src/locales/fr-FR/pages.json +1904 -1904
  212. package/src/locales/fr-FR/settings.json +907 -880
  213. package/src/locales/he-IL/common.json +282 -282
  214. package/src/locales/he-IL/nav.json +21 -21
  215. package/src/locales/he-IL/notifications.json +243 -243
  216. package/src/locales/he-IL/pages.json +1766 -1766
  217. package/src/locales/he-IL/settings.json +907 -880
  218. package/src/locales/hu-HU/common.json +282 -282
  219. package/src/locales/hu-HU/nav.json +21 -21
  220. package/src/locales/hu-HU/notifications.json +243 -243
  221. package/src/locales/hu-HU/pages.json +1766 -1766
  222. package/src/locales/hu-HU/settings.json +907 -880
  223. package/src/locales/it-IT/common.json +282 -282
  224. package/src/locales/it-IT/nav.json +21 -21
  225. package/src/locales/it-IT/notifications.json +246 -246
  226. package/src/locales/it-IT/pages.json +1777 -1777
  227. package/src/locales/it-IT/settings.json +910 -883
  228. package/src/locales/ja-JP/common.json +282 -282
  229. package/src/locales/ja-JP/nav.json +21 -21
  230. package/src/locales/ja-JP/notifications.json +246 -246
  231. package/src/locales/ja-JP/pages.json +1776 -1776
  232. package/src/locales/ja-JP/settings.json +911 -884
  233. package/src/locales/ko-KR/common.json +283 -283
  234. package/src/locales/ko-KR/mobile.json +6 -6
  235. package/src/locales/ko-KR/nav.json +21 -21
  236. package/src/locales/ko-KR/notifications.json +246 -246
  237. package/src/locales/ko-KR/pages.json +1834 -1834
  238. package/src/locales/ko-KR/settings.json +927 -900
  239. package/src/locales/nl-NL/common.json +282 -282
  240. package/src/locales/nl-NL/nav.json +21 -21
  241. package/src/locales/nl-NL/notifications.json +246 -246
  242. package/src/locales/nl-NL/pages.json +1809 -1809
  243. package/src/locales/nl-NL/settings.json +912 -885
  244. package/src/locales/no-NO/common.json +282 -282
  245. package/src/locales/no-NO/nav.json +21 -21
  246. package/src/locales/no-NO/notifications.json +246 -246
  247. package/src/locales/no-NO/pages.json +1777 -1777
  248. package/src/locales/no-NO/settings.json +911 -884
  249. package/src/locales/pl-PL/common.json +282 -282
  250. package/src/locales/pl-PL/nav.json +21 -21
  251. package/src/locales/pl-PL/notifications.json +246 -246
  252. package/src/locales/pl-PL/pages.json +1777 -1777
  253. package/src/locales/pl-PL/settings.json +911 -884
  254. package/src/locales/pt-BR/common.json +282 -282
  255. package/src/locales/pt-BR/nav.json +21 -21
  256. package/src/locales/pt-BR/notifications.json +246 -246
  257. package/src/locales/pt-BR/pages.json +1777 -1777
  258. package/src/locales/pt-BR/settings.json +919 -892
  259. package/src/locales/pt-PT/common.json +282 -282
  260. package/src/locales/pt-PT/nav.json +21 -21
  261. package/src/locales/pt-PT/notifications.json +246 -246
  262. package/src/locales/pt-PT/pages.json +1777 -1777
  263. package/src/locales/pt-PT/settings.json +919 -892
  264. package/src/locales/ro-RO/common.json +282 -282
  265. package/src/locales/ro-RO/nav.json +21 -21
  266. package/src/locales/ro-RO/notifications.json +246 -246
  267. package/src/locales/ro-RO/pages.json +1777 -1777
  268. package/src/locales/ro-RO/settings.json +911 -884
  269. package/src/locales/ru-RU/common.json +282 -282
  270. package/src/locales/ru-RU/nav.json +21 -21
  271. package/src/locales/ru-RU/notifications.json +246 -246
  272. package/src/locales/ru-RU/pages.json +1776 -1776
  273. package/src/locales/ru-RU/settings.json +911 -884
  274. package/src/locales/sr-SP/common.json +282 -282
  275. package/src/locales/sr-SP/nav.json +21 -21
  276. package/src/locales/sr-SP/notifications.json +243 -243
  277. package/src/locales/sr-SP/pages.json +1766 -1766
  278. package/src/locales/sr-SP/settings.json +907 -880
  279. package/src/locales/sv-SE/common.json +282 -282
  280. package/src/locales/sv-SE/nav.json +21 -21
  281. package/src/locales/sv-SE/notifications.json +246 -246
  282. package/src/locales/sv-SE/pages.json +1778 -1778
  283. package/src/locales/sv-SE/settings.json +911 -884
  284. package/src/locales/tr-TR/common.json +282 -282
  285. package/src/locales/tr-TR/nav.json +21 -21
  286. package/src/locales/tr-TR/notifications.json +243 -243
  287. package/src/locales/tr-TR/pages.json +1766 -1766
  288. package/src/locales/tr-TR/settings.json +907 -880
  289. package/src/locales/uk-UA/common.json +282 -282
  290. package/src/locales/uk-UA/nav.json +21 -21
  291. package/src/locales/uk-UA/notifications.json +246 -246
  292. package/src/locales/uk-UA/pages.json +1776 -1776
  293. package/src/locales/uk-UA/settings.json +913 -886
  294. package/src/locales/vi-VN/common.json +282 -282
  295. package/src/locales/vi-VN/nav.json +21 -21
  296. package/src/locales/vi-VN/notifications.json +243 -243
  297. package/src/locales/vi-VN/pages.json +1766 -1766
  298. package/src/locales/vi-VN/settings.json +907 -880
  299. package/src/locales/zh-CN/common.json +283 -283
  300. package/src/locales/zh-CN/mobile.json +5 -5
  301. package/src/locales/zh-CN/nav.json +21 -21
  302. package/src/locales/zh-CN/notifications.json +250 -250
  303. package/src/locales/zh-CN/pages.json +1803 -1803
  304. package/src/locales/zh-CN/settings.json +914 -887
  305. package/src/locales/zh-TW/common.json +282 -282
  306. package/src/locales/zh-TW/nav.json +21 -21
  307. package/src/locales/zh-TW/notifications.json +246 -246
  308. package/src/locales/zh-TW/pages.json +1769 -1769
  309. package/src/locales/zh-TW/settings.json +910 -883
  310. package/dist/locales/en-US/common.json +0 -342
  311. package/dist/locales/en-US/mobile.json +0 -178
  312. package/dist/locales/en-US/nav.json +0 -33
  313. package/dist/locales/en-US/notifications.json +0 -303
  314. package/dist/locales/en-US/pages.json +0 -2297
  315. package/dist/locales/en-US/settings.json +0 -1022
  316. package/src/locales/en-US/common.json +0 -342
  317. package/src/locales/en-US/mobile.json +0 -178
  318. package/src/locales/en-US/nav.json +0 -33
  319. package/src/locales/en-US/notifications.json +0 -303
  320. package/src/locales/en-US/pages.json +0 -2297
  321. package/src/locales/en-US/settings.json +0 -1022
@@ -1,825 +1,1010 @@
1
1
  {
2
- "accessControl": {
3
- "allowGuestAccess": "게스트 접근 허용",
4
- "allowGuestAccessDesc": "",
5
- "description": "Tracearr에 접근할 수 있는 사용자를 구성하세요",
6
- "singleOwnerNote": "참고: 게스트 접근이 비활성화되면 서버 소유자만 로그인할 수 있습니다. 다른 모든 사용자는 \"접근 거부\" 메시지를 보게 됩니다.",
7
- "title": "접근 제어"
8
- },
9
- "account": {
10
- "createAccount": "계정 만들기",
11
- "createYourAccount": "시작하려면 계정을 만드세요",
12
- "displayName": "표시 이름",
13
- "email": "이메일",
14
- "password": "비밀번호",
15
- "signInToAccount": "계정에 로그인하세요",
16
- "useLocalAccount": "로컬 계정 대신 사용"
17
- },
18
- "advanced": {
19
- "connectionScenarios": "연결 시나리오",
20
- "externalUrl": "외부 URL",
21
- "reverseProxy": "리버스 프록시",
22
- "title": "고급 설정",
23
- "trustProxy": "프록시 헤더 신뢰"
24
- },
25
- "backup": {
26
- "actions": "작업",
27
- "backToBackups": "백업으로 돌아가기",
28
- "backupHistory": "백업 기록",
29
- "createBackup": "백업 만들기",
30
- "creating": "백업 생성 중...",
31
- "databaseSize": "현재 데이터베이스 크기: {{size}}",
32
- "date": "날짜",
33
- "dayFri": "금요일",
34
- "dayMon": "월요일",
35
- "daySat": "토요일",
36
- "daySun": "일요일",
37
- "dayThu": "목요일",
38
- "dayTue": "화요일",
39
- "dayWed": "수요일",
40
- "deleteConfirmDescription": "이 백업을 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
41
- "deleteConfirmTitle": "백업 삭제",
42
- "description": "Tracearr 데이터를 백업하고 복원하세요",
43
- "download": "",
44
- "freeSpace": "백업 디렉터리 여유 공간: {{size}}",
45
- "lowDiskSpace": "디스크 공간이 부족합니다. 백업과 복원에는 데이터베이스 크기의 최소 두 배에 해당하는 여유 공간이 필요합니다.",
46
- "noBackups": "아직 백업이 없습니다. 위에서 첫 백업을 만들어 보세요.",
47
- "restore": {
48
- "automations": "자동화",
49
- "cannotRestore": "복원에는 PostgreSQL 슈퍼유저 권한이 필요합니다. 데이터베이스 사용자에게 슈퍼유저 권한이 있는지 확인한 뒤 다시 시도하세요.",
50
- "complete": "복원이 성공적으로 완료되었습니다. 잠시 후 페이지가 새로고침됩니다.",
51
- "confirm": "복원 시작",
52
- "confirmLabel": "모든 데이터가 대체된다는 것을 이해했습니다",
53
- "databaseSize": "데이터베이스 크기",
54
- "failed": "복원 실패",
55
- "libraryItems": "라이브러리 항목",
56
- "pgVersionMismatch": "백업은 PostgreSQL {{backupVersion}}에서 생성되었지만 이 서버는 PostgreSQL {{serverVersion}}을 실행 중입니다. 더 새로운 PostgreSQL 버전의 덤프는 복원할 수 없습니다.",
57
- "selectedBackup": "선택한 백업",
58
- "servers": "서버",
59
- "sessions": "세션",
60
- "tables": "테이블",
61
- "title": "백업 복원",
62
- "tsVersionMismatch": "백업은 TimescaleDB {{backupVersion}}로 생성되었지만 이 서버는 TimescaleDB {{serverVersion}}까지만 지원합니다.",
63
- "users": "사용자",
64
- "warning": "복원하면 기존 데이터가 모두 대체됩니다. 복원이 완료된 뒤 다시 로그인해야 합니다."
65
- },
66
- "restoreAction": "복원",
67
- "retentionCount": "최근 항목 유지",
68
- "retentionSuffix": "개의 예약 백업",
69
- "rowActions": "",
70
- "schedule": "예약 백업",
71
- "scheduleDaily": "매일",
72
- "scheduleDayOfMonth": "일자",
73
- "scheduleDayOfMonthHint": "일수가 더 적은 달에는 마지막 날에 백업이 실행됩니다.",
74
- "scheduleDayOfWeek": "요일",
75
- "scheduleDisabled": "비활성화",
76
- "scheduleHour": "",
77
- "scheduleMinute": "",
78
- "scheduleMonthly": "매월",
79
- "scheduleTime": "시간({{timezone}})",
80
- "scheduleType": "일정",
81
- "scheduleWeekly": "매주",
82
- "size": "크기",
83
- "title": "백업",
84
- "toast": {
85
- "backupCreateFailed": "백업을 만들지 못했습니다",
86
- "backupCreated": "백업이 성공적으로 생성되었습니다",
87
- "backupDeleteFailed": "백업을 삭제하지 못했습니다",
88
- "backupDeleted": "백업이 삭제되었습니다",
89
- "backupUploadFailed": "백업을 업로드하지 못했습니다",
90
- "backupUploaded": "백업이 성공적으로 업로드되었습니다",
91
- "restoreStartFailed": "복원을 시작하지 못했습니다",
92
- "restoreStarted": "복원이 시작되었습니다",
93
- "scheduleError": "백업 일정을 저장하지 못했습니다",
94
- "scheduleSaved": "백업 일정이 저장되었습니다"
2
+ "title": "설정",
3
+ "nav": {
4
+ "label": "",
5
+ "selectLabel": "",
6
+ "itemLabel": "",
7
+ "groups": {
8
+ "general": "",
9
+ "servers": "",
10
+ "notifications": "",
11
+ "access": "",
12
+ "data": ""
95
13
  },
96
- "type": "유형",
97
- "typeManual": "수동",
98
- "typeScheduled": "예약됨",
99
- "typeUploaded": "업로드됨",
100
- "uploadBackup": "백업 업로드",
101
- "uploading": "업로드 중...",
102
- "version": "버전"
103
- },
104
- "email": {
105
- "branding": {
106
- "accent": "",
107
- "accentPicker": "",
108
- "description": "",
109
- "footerText": "",
110
- "footerTextHelp": "",
111
- "logo": {
112
- "label": "",
113
- "none": "",
114
- "tracearr": "",
115
- "url": ""
116
- },
117
- "logoUrl": "",
118
- "mailto": "",
119
- "mailtoHelp": "",
120
- "postalAddress": "",
121
- "postalAddressHelp": "",
122
- "save": "",
123
- "saving": "",
124
- "title": ""
14
+ "sections": {
15
+ "appearance": "",
16
+ "locale": "",
17
+ "behavior": "",
18
+ "connections": "",
19
+ "posters": "",
20
+ "plexAccounts": "",
21
+ "destinations": "",
22
+ "newsletters": "",
23
+ "email": "",
24
+ "guest": "",
25
+ "mobile": "",
26
+ "remote": "",
27
+ "import": "",
28
+ "backup": "",
29
+ "jobs": "",
30
+ "api": ""
125
31
  },
126
- "ownerOnly": "",
127
- "suppressions": {
128
- "add": "",
129
- "addConfirm": "",
130
- "addDescription": "",
131
- "addTitle": "",
132
- "address": "",
133
- "empty": "",
134
- "emptyDescription": "",
135
- "globalNote": "",
136
- "openSource": "",
137
- "reason": {
138
- "manual": "",
139
- "unsubscribed": ""
140
- },
141
- "remove": "",
142
- "removeDescription": "",
143
- "removeTitle": "",
144
- "title": ""
32
+ "descriptions": {
33
+ "appearance": "",
34
+ "locale": "",
35
+ "behavior": "",
36
+ "connections": "",
37
+ "posters": "",
38
+ "plexAccounts": "",
39
+ "destinations": "",
40
+ "guest": "",
41
+ "mobile": "",
42
+ "remote": "",
43
+ "import": "",
44
+ "backup": "",
45
+ "jobs": "",
46
+ "api": "",
47
+ "newsletters": "",
48
+ "email": ""
145
49
  }
146
50
  },
147
51
  "general": {
52
+ "title": "일반 설정",
53
+ "unitSystem": "단위 체계",
54
+ "metric": "미터법(km, km/h)",
55
+ "imperial": "야드파운드법(mi, mph)",
56
+ "timezone": "시간대",
57
+ "primaryAuth": "기본 인증 방식",
58
+ "localAccount": "로컬 계정",
59
+ "plexAccount": "Plex 계정",
60
+ "language": "언어",
61
+ "languageDescription": "표시할 언어를 선택하세요.",
62
+ "helpTranslate": "Tracearr 번역 돕기",
63
+ "timeFormat": "시간 형식",
64
+ "timeFormatDescription": "시간을 표시할 방식을 선택하세요.",
65
+ "timeFormat12h": "12시간제(오후 1:30)",
66
+ "timeFormat24h": "24시간제(13:30)",
67
+ "theme": "테마",
148
68
  "accentColor": "강조 색상",
149
- "apiDocs": "API 문서",
150
- "apiKeyDesc": "Homarr, Home Assistant 등 외부 연동에서 Tracearr API에 접근할 수 있습니다.",
151
- "apiKeyReadAccess": "API 키는 Tracearr 데이터에 대한 전체 읽기 권한을 부여합니다.",
152
- "apiRateLimit": "API 요청 한도",
153
- "apiRateLimitDesc": "API 키별 분당 최대 공개 API 요청 수입니다. 적용하려면 다시 시작해야 합니다.",
154
- "apiRateLimitSuffix": "/분",
69
+ "default": "(기본값)",
70
+ "cyanDefault": "* 시안이 기본 강조 색상입니다",
71
+ "themeLight": "밝게",
72
+ "themeDark": "어둡게",
73
+ "themeSystem": "시스템 설정 따르기",
155
74
  "application": "애플리케이션",
156
75
  "applicationDesc": "기본 애플리케이션 설정을 구성하세요",
157
- "copyToClipboard": "클립보드에 복사",
158
- "cyanDefault": "* 시안이 기본 강조 색상입니다",
159
- "default": "(기본값)",
160
- "detect": "감지",
76
+ "unitSystemDesc": "거리와 속도를 표시할 방식을 선택하세요",
77
+ "sessionSync": "세션 동기화",
78
+ "sessionSyncDesc": "미디어 서버의 세션 추적을 활성화하세요",
79
+ "syncInterval": "동기화 간격",
80
+ "syncIntervalDesc": "Jellyfin/Emby 폴링 주기(5-300초)",
81
+ "syncIntervalSuffix": "초",
82
+ "plexSseNote": "Plex는 거의 즉시 업데이트되는 Server-Sent Events(SSE)를 사용하므로 폴링이 필요 없습니다.",
83
+ "jellyfinPollingNote": "Jellyfin/Emby는 위 간격으로 폴링됩니다.",
161
84
  "enhancedGeoIP": "향상된 GeoIP 조회",
162
85
  "enhancedGeoIPDesc": "더 정확한 위치 데이터를 위해 Plex의 GeoIP 서비스를 사용합니다. 활성화하면 조회를 위해 IP 주소가 plex.tv로 전송됩니다. 로컬 MaxMind 데이터베이스는 대체 수단으로 사용됩니다.",
163
86
  "externalAccess": "외부 접근",
164
87
  "externalAccessDesc": "(모바일 앱 같은) 외부 기기가 서버에 연결하는 방식을 구성하세요",
165
88
  "externalUrl": "외부 URL",
89
+ "externalUrlPlaceholder": "https://tracearr.example.com",
166
90
  "externalUrlDesc": "외부 기기가 이 서버에 접속할 때 사용할 URL입니다. QR 코드와 모바일 앱 페어링에 사용됩니다.",
167
- "externalUrlPlaceholder": "",
91
+ "detect": "감지",
92
+ "localhostWarning": "Localhost URL은 외부 기기에서 작동하지 않습니다. LAN IP나 도메인 이름을 사용하세요.",
93
+ "iosHttpWarning": "iOS는 외부 연결에 HTTPS가 필요합니다. SSL이 적용된 리버스 프록시를 설정하세요.",
94
+ "apiKeyDesc": "Homarr, Home Assistant 등 외부 연동에서 Tracearr API에 접근할 수 있습니다.",
95
+ "apiDocs": "API 문서",
96
+ "noApiKeyGenerated": "생성된 API 키가 없습니다",
97
+ "copyToClipboard": "클립보드에 복사",
98
+ "apiKeyReadAccess": "API 키는 Tracearr 데이터에 대한 전체 읽기 권한을 부여합니다.",
168
99
  "generateApiKeyPrompt": "외부 연동을 사용하려면 API 키를 생성하세요.",
100
+ "regenerate": "다시 생성",
169
101
  "generateKey": "키 생성",
170
- "helpTranslate": "Tracearr 번역 돕기",
102
+ "regenerateApiKey": "API 키를 다시 생성할까요?",
103
+ "regenerateApiKeyDesc": "현재 API 키가 무효화됩니다. 이전 키를 사용하는 모든 연동은 더 이상 작동하지 않습니다.",
104
+ "publicApiSettings": "공개 API",
105
+ "publicApiSettingsDesc": "공개 API의 시청 완료 기준과 요청 한도를 설정합니다",
106
+ "watchedThresholdMovie": "영화 시청 완료 기준",
107
+ "watchedThresholdMovieDesc": "",
108
+ "watchedThresholdTv": "TV 에피소드 시청 완료 기준",
109
+ "watchedThresholdTvDesc": "",
110
+ "watchedThresholdMusic": "음악 재생 완료 기준",
111
+ "watchedThresholdMusicDesc": "",
112
+ "watchedThresholdSuffix": "%",
113
+ "apiRateLimit": "API 요청 한도",
114
+ "apiRateLimitDesc": "API 키별 분당 최대 공개 API 요청 수입니다. 적용하려면 다시 시작해야 합니다.",
115
+ "apiRateLimitSuffix": "/분",
116
+ "updateChecks": {
117
+ "title": "업데이트 확인",
118
+ "description": "Tracearr는 여섯 시간마다 새 릴리스를 확인합니다. 업데이트 트리거를 수신하는 자동화를 통해 알림을 보냅니다.",
119
+ "plugin": "실시간 플러그인",
120
+ "pluginDesc": "Jellyfin과 Emby 서버가 이벤트를 전달하는 Tracearr 플러그인의 새 릴리스를 확인합니다.",
121
+ "server": "미디어 서버",
122
+ "serverDesc": "각 Plex, Jellyfin, Emby 서버의 설치 버전을 제작자가 배포한 최신 릴리스와 비교합니다."
123
+ },
171
124
  "imageCache": {
172
- "ceiling": "최대 한도",
125
+ "title": "포스터 캐시",
173
126
  "description": "포스터가 바뀔 때까지 각 포스터 한 장을 디스크에 보관합니다. 공간 확보를 위해 자동 삭제하지 않으며, 디스크 여유 공간이 부족해지면 캐시 저장을 중단하고 알려 줍니다.",
174
- "diskLimited": "{{since}}부터 디스크 공간 부족: 포스터 약 {{shortfall}}개가 캐시되지 않았습니다.",
127
+ "size": "디스크 사용량",
175
128
  "files": "파일 수",
176
- "floor": "확보할 여유 공간",
129
+ "need": "예상 필요 용량",
130
+ "needHint": "포스터 {{count}}개 × 18KB",
177
131
  "free": "남은 디스크 공간",
178
132
  "freeOf": "전체 {{total}} 중",
133
+ "floor": "확보할 여유 공간",
134
+ "ceiling": "최대 한도",
179
135
  "lastSweep": "마지막 정리",
180
- "loadError": "캐시 상태를 불러오지 못했습니다.",
181
- "need": "예상 필요 용량",
182
- "needHint": "포스터 {{count}}개 × 18KB",
183
136
  "never": "아직 없음",
184
- "size": "디스크 사용량",
185
- "title": "포스터 캐시"
186
- },
187
- "imperial": "야드파운드법(mi, mph)",
188
- "iosHttpWarning": "iOS는 외부 연결에 HTTPS가 필요합니다. SSL이 적용된 리버스 프록시를 설정하세요.",
189
- "jellyfinPollingNote": "Jellyfin/Emby는 위 간격으로 폴링됩니다.",
190
- "language": "언어",
191
- "languageDescription": "표시할 언어를 선택하세요.",
192
- "localAccount": "로컬 계정",
193
- "localhostWarning": "Localhost URL은 외부 기기에서 작동하지 않습니다. LAN IP나 도메인 이름을 사용하세요.",
194
- "metric": "미터법(km, km/h)",
195
- "noApiKeyGenerated": "생성된 API 키가 없습니다",
196
- "plexAccount": "Plex 계정",
197
- "plexSseNote": "Plex는 거의 즉시 업데이트되는 Server-Sent Events(SSE)를 사용하므로 폴링이 필요 없습니다.",
198
- "primaryAuth": "기본 인증 방식",
199
- "publicApiSettings": "공개 API",
200
- "publicApiSettingsDesc": "공개 API의 시청 완료 기준과 요청 한도를 설정합니다",
201
- "regenerate": "다시 생성",
202
- "regenerateApiKey": "API 키를 다시 생성할까요?",
203
- "regenerateApiKeyDesc": "현재 API 키가 무효화됩니다. 이전 키를 사용하는 모든 연동은 더 이상 작동하지 않습니다.",
204
- "sessionSync": "세션 동기화",
205
- "sessionSyncDesc": "",
137
+ "diskLimited": "{{since}}부터 디스크 공간 부족: 포스터 약 {{shortfall}}개가 캐시되지 않았습니다.",
138
+ "loadError": "캐시 상태를 불러오지 못했습니다."
139
+ }
140
+ },
141
+ "servers": {
142
+ "title": "연결된 서버",
143
+ "addServer": "서버 추가",
144
+ "serverName": "서버 이름",
145
+ "serverUrl": "서버 URL",
206
146
  "syncInterval": "동기화 간격",
207
- "syncIntervalDesc": "",
208
- "syncIntervalSuffix": "초",
209
- "theme": "테마",
210
- "themeDark": "어둡게",
211
- "themeLight": "밝게",
212
- "themeSystem": "시스템 설정 따르기",
213
- "timeFormat": "시간 형식",
214
- "timeFormat12h": "12시간제(오후 1:30)",
215
- "timeFormat24h": "24시간제(13:30)",
216
- "timeFormatDescription": "시간을 표시할 방식을 선택하세요.",
217
- "timezone": "시간대",
218
- "title": "일반 설정",
219
- "unitSystem": "단위 체계",
220
- "unitSystemDesc": "",
221
- "updateChecks": {
222
- "description": "Tracearr는 여섯 시간마다 새 릴리스를 확인합니다. 업데이트 트리거를 수신하는 자동화를 통해 알림을 보냅니다.",
223
- "plugin": "실시간 플러그인",
224
- "pluginDesc": "Jellyfin과 Emby 서버가 이벤트를 전달하는 Tracearr 플러그인의 새 릴리스를 확인합니다.",
225
- "server": "미디어 서버",
226
- "serverDesc": "각 Plex, Jellyfin, Emby 서버의 설치 버전을 제작자가 배포한 최신 릴리스와 비교합니다.",
227
- "title": "업데이트 확인"
147
+ "testConnection": "연결 테스트",
148
+ "connectionSuccess": "연결되었습니다",
149
+ "connectionFailed": "연결에 실패했습니다",
150
+ "noServersConnected": "연결된 서버가 없습니다",
151
+ "noServersConnectedHint": "Jellyfin 또는 Emby 서버를 연결하려면 \"서버 추가\"를 클릭하세요",
152
+ "serverType": "서버 유형",
153
+ "loadingAccounts": "연결된 Plex 계정을 불러오는 중...",
154
+ "noPlexAccountsLinked": "연결된 Plex 계정이 없습니다",
155
+ "noPlexAccountsLinkedHint": "위에서 Plex 계정을 연결한 뒤 다시 돌아와 서버를 추가하세요.",
156
+ "selectPlexAccount": "Plex 계정 선택",
157
+ "chooseAccount": "계정 선택...",
158
+ "selectAccountHelp": "서버를 검색할 Plex 계정을 선택하세요.",
159
+ "allServersConnected": "모든 서버가 연결됨",
160
+ "allServersConnectedDesc": "이 계정의 모든 서버가 이미 연결되어 있습니다.",
161
+ "serverUrlPlaceholder": "http://192.168.1.100:8096",
162
+ "serverUrlHelp": "Jellyfin 또는 Emby 서버에 직접 연결되는 URL입니다. 안정성을 위해 IP:포트를 사용하는 것이 좋습니다.",
163
+ "serverNamePlaceholder": "내 미디어 서버",
164
+ "apiKeyPlaceholder": "API 키 입력",
165
+ "apiKeyHelp": "미디어 서버 대시보드의 API 키 또는 고급 설정에서 찾을 수 있습니다.",
166
+ "connecting": "연결 중...",
167
+ "connectServer": "서버 연결",
168
+ "removeServer": "서버 제거",
169
+ "removeServerConfirm": "이 서버를 제거할까요? 연결된 세션 데이터는 유지되지만, 이 서버의 새 세션은 더 이상 모니터링할 수 없습니다.",
170
+ "editServer": "서버 수정",
171
+ "editServerDesc": "서버 이름 또는 연결 URL을 업데이트하세요.",
172
+ "serverColor": "서버 색상",
173
+ "serverColorDesc": "여러 서버 보기에서 서버를 구분하는 데 사용됩니다",
174
+ "updating": "업데이트 중...",
175
+ "allFieldsRequired": "모든 항목을 입력해야 합니다",
176
+ "addServerDialogDescPlex": "연결된 계정에서 Plex 서버를 선택하세요.",
177
+ "addServerDialogDescOther": "Jellyfin 또는 Emby 서버를 연결하세요.",
178
+ "description": "연결된 Plex, Jellyfin, Emby 서버를 관리하세요",
179
+ "discoveringServers": "사용 가능한 Plex 서버를 검색하는 중...",
180
+ "discoveringConnections": "연결을 검색하는 중...",
181
+ "plexAccount": "Plex 계정",
182
+ "serverUrlHelpJellyfin": "Jellyfin 서버에 접근할 수 있는 URL입니다",
183
+ "serverUrlHelpEmby": "Emby 서버에 접근할 수 있는 URL입니다",
184
+ "publicUrl": "",
185
+ "publicUrlHint": "",
186
+ "apiKeyHelpJellyfin": "Jellyfin 대시보드 > API 키에서 찾을 수 있습니다",
187
+ "apiKeyHelpEmby": "Emby 서버 > API 키에서 찾을 수 있습니다",
188
+ "apiKeyKeepCurrent": "",
189
+ "plexServerPlaceholder": "내 Plex 서버",
190
+ "plexServerUrlPlaceholder": "http://192.168.1.100:32400",
191
+ "updateHint": "또는 아래 업데이트를 클릭해 이름 변경만 저장하세요.",
192
+ "reorder": "",
193
+ "added": "{{date}} 추가됨",
194
+ "realtimeActive": "실시간 업데이트 활성화됨",
195
+ "pollingMode": "폴링",
196
+ "setupRealtime": "실시간 업데이트 설정",
197
+ "realtimeError": "실시간 연결 오류",
198
+ "checkingConnection": "연결 확인 중…",
199
+ "pluginVersion": "플러그인 v{{version}}",
200
+ "pluginUpdateAvailable": "플러그인 업데이트가 있습니다",
201
+ "realtimeDialog": {
202
+ "title": "실시간 업데이트 활성화",
203
+ "updateTitle": "Tracearr SSE 플러그인 업데이트",
204
+ "jellyfinDescription": "다음 폴링을 기다리지 않고 즉시 세션 업데이트를 받으려면 Tracearr SSE 플러그인을 설치하세요.",
205
+ "embyDescription": "다음 폴링을 기다리지 않고 즉시 세션 업데이트를 받으려면 Tracearr SSE 플러그인을 설치하세요.",
206
+ "jellyfinUpdateDescription": "새 플러그인 버전이 있습니다. Jellyfin 대시보드에서 플러그인 > 카탈로그로 이동해 Tracearr SSE를 업데이트한 뒤 Jellyfin을 다시 시작하세요.",
207
+ "embyUpdateDescription": "새 플러그인 버전이 있습니다. 최신 릴리스 ZIP을 내려받아 Emby 플러그인 폴더의 DLL을 교체한 뒤 Emby를 다시 시작하세요.",
208
+ "repositoryUrl": "저장소 URL",
209
+ "copyUrl": "URL 복사",
210
+ "jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
211
+ "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
212
+ "openReleases": "릴리스 페이지 열기",
213
+ "autoDetectNote": "플러그인을 설치한 뒤 Jellyfin 또는 Emby를 반드시 다시 시작하세요. Tracearr는 다시 시작할 필요 없이 플러그인을 자동으로 감지합니다.",
214
+ "close": "닫기",
215
+ "issueBlocked": "서버에는 플러그인이 설치되어 활성화된 것으로 표시되지만, Tracearr가 엔드포인트에서 404 응답을 받았습니다. 보통 리버스 프록시가 해당 경로를 차단할 때 발생합니다.",
216
+ "issueRestartRequired": "플러그인이 설치되었지만 활성화하려면 미디어 서버를 다시 시작해야 합니다.",
217
+ "issueMalfunctioned": "서버에서 플러그인을 불러오지 못했습니다. 플러그인이나 미디어 서버를 업데이트하면 대부분 해결됩니다."
228
218
  },
229
- "watchedThresholdMovie": "영화 시청 완료 기준",
230
- "watchedThresholdMovieDesc": "",
231
- "watchedThresholdMusic": "음악 재생 완료 기준",
232
- "watchedThresholdMusicDesc": "",
233
- "watchedThresholdSuffix": "",
234
- "watchedThresholdTv": "TV 에피소드 시청 완료 기준",
235
- "watchedThresholdTvDesc": ""
236
- },
237
- "import": {
238
- "apiKeyHelp": "Tautulli 설정 > Web Interface > API Key에서 찾을 수 있습니다.",
239
- "apiKeyPlaceholder": "Tautulli API 키",
240
- "checkPlugin": "플러그인 확인",
241
- "checkingPlugin": "확인 중...",
242
- "connectToTautulli": "Tautulli에 연결",
243
- "connectedFound": "연결되었습니다! 사용자 {{users}}명과 기록 {{records}}개를 찾았습니다.",
244
- "duplicates": "중복 {{count}}개 건너뜀",
245
- "enrichMetadata": "미디어 메타데이터로 보강(권장)",
246
- "enrichMetadataHelp": "가져온 세션에 대해 미디어 서버에서 추가 메타데이터를 가져옵니다.",
247
- "enriched": "보강됨",
248
- "errors": "오류",
249
- "exportBackupHelp": "Jellystat에서 설정 > 백업 > 활동 백업으로 이동해 데이터를 내보내세요.",
250
- "exportBackupHint": "Jellystat에서 활동 백업을 내보내세요",
251
- "howItWorks": "가져오기 방식",
252
- "howItWorksDesc": "Tracearr가 소스의 모든 과거 시청 데이터를 가져옵니다. 라이브러리 크기에 따라 시간이 걸릴 수 있습니다.",
253
- "importComplete": "가져오기 완료",
254
- "importFailed": "가져오기 실패",
255
- "importFullRange": "전체 기록 가져오기",
256
- "importFullRangeHelp": "기본적으로 Tracearr가 이 서버에서 처음 기록한 세션보다 오래된 기록만 가져오므로 이미 기록된 세션이 중복되지 않습니다. Tracearr 기록에 누락된 구간이 있다면 이 옵션을 켜서 겹치는 기간과 관계없이 플러그인의 전체 기록을 가져오세요. 완전히 동일한 항목은 계속 건너뜁니다.",
257
- "importHistory": "가져오기 기록",
258
- "importInProgressGeneric": "가져오는 중...",
259
- "importInProgressPercent": "가져오는 중({{percent}}% 완료)...",
260
- "importOptions": "가져오기 옵션",
261
- "importProgress": "가져오기 진행률",
262
- "imported": "가져옴",
263
- "importing": "가져오는 중...",
264
- "includeStreamDetails": "자세한 스트림 데이터 포함(코덱, 비트레이트, 해상도)",
265
- "includeStreamDetailsHelp": "추가 스트림 정보를 가져옵니다. 가져오기 시간이 크게 늘어날 수 있습니다.",
266
- "jellyfinEmby": "Jellyfin/Emby(Jellystat)",
267
- "jellystat": "Jellystat에서 가져오기",
268
- "noServers": "연결된 서버가 없습니다",
269
- "noServersHint": "데이터를 가져오려면 연결된 서버가 하나 이상 필요합니다.",
270
- "overlapSkipped": "기간이 겹쳐 {{count}}개 건너뜀",
271
- "overwriteFriendlyNames": "기존 표시 이름을 Tautulli 이름으로 덮어쓰기",
272
- "overwriteFriendlyNamesHelp": "Tracearr의 기존 식별 이름이 Tautulli의 표시 이름으로 바뀝니다.",
273
- "page": "페이지",
274
- "playbackReporting": "Playback Reporting 플러그인",
275
- "playbackReportingDesc": "Jellyfin 또는 Emby 서버에 설치된 Playback Reporting 플러그인에서 시청 기록을 바로 가져옵니다. 파일로 내보낼 필요가 없습니다.",
276
- "pleaseEnterDetails": "Tautulli URL과 API 키를 입력하세요",
277
- "pleaseSelectJsonFile": "JSON 파일을 선택하세요",
278
- "plex": "Plex(Tautulli)",
279
- "pluginFound": "플러그인 확인됨: {{oldestDate}}~{{newestDate}}, 기록 {{records}}개",
280
- "pluginNotInstalled": "이 서버에 Playback Reporting 플러그인이 설치되지 않았거나 Tracearr에서 접근할 수 없습니다. 시청 기록을 남기려면 서버의 플러그인 카탈로그에서 설치하거나 아래에서 Jellystat 가져오기를 사용하세요.",
281
- "processed": "처리됨",
282
- "recordsMayBeSkipped": "다음 경우 기록을 건너뛸 수 있습니다:",
283
- "selectJellyfinServer": "Jellyfin 또는 Emby 서버 선택",
284
- "selectPlexServer": "Plex 서버 선택",
285
- "selectTargetServer": "대상 서버 선택",
286
- "serverTimezone": "서버 시간대",
287
- "serverTimezoneHelp": "브라우저가 아닌 미디어 서버 호스트에 설정된 시간대와 일치해야 합니다. Playback Reporting의 타임스탬프는 서버 현지 시간으로 저장됩니다.",
288
- "skipDuplicate": "중복 세션 - 이 세션은 이전에 이미 가져왔습니다.",
289
- "skipDuplicatePlugin": "중복 기록 - 이미 직접 가져왔거나 같은 플러그인 데이터를 Jellystat에서 먼저 가져온 항목입니다.",
290
- "skipInProgress": "진행 중인 세션 - 참조 ID가 없는 활성/미완료 세션은 건너뜁니다.",
291
- "skipOverlap": "기간이 겹치는 기록 - 타임스탬프가 Tracearr에서 이미 추적 중인 기간에 포함됩니다. 포함하려면 전체 기록 가져오기를 켜세요.",
292
- "skipSyncHint": "건너뛴 기록이 많다면 설정 > 서버에서 최근에 서버를 동기화했는지 확인하세요.",
293
- "skipUserNotFoundJellyfin": "사용자를 찾을 수 없음 - Jellyfin/Emby 사용자가 Tracearr에 없습니다. 먼저 서버를 동기화해 모든 사용자를 추가하세요.",
294
- "skipUserNotFoundPlex": "사용자를 찾을 수 없음 - Plex 사용자가 Tracearr에 없습니다. 먼저 서버를 동기화해 모든 사용자를 추가하세요.",
295
- "skipped": "건너뜀",
296
- "startImport": "가져오기 시작",
297
- "startingImport": "가져오기를 시작하는 중...",
298
- "step1": "",
299
- "step2": "",
300
- "targetServer": "대상 서버",
301
- "tautulli": "Tautulli에서 가져오기",
302
- "tautulliUrl": "",
303
- "tautulliUrlHelp": "Tautulli 인스턴스의 URL입니다.",
304
- "tautulliUrlPlaceholder": "",
305
- "testing": "테스트 중...",
306
- "testingConnection": "연결 테스트 중...",
307
- "title": "데이터 가져오기",
308
- "updateExistingRecords": "기존 기록에 스트림 상세 정보 업데이트",
309
- "updateExistingRecordsHelp": "이전에 가져온 기록에 스트림 품질 데이터를 업데이트합니다.",
310
- "uploadJellystatBackup": "Jellystat 백업 업로드",
311
- "uploadingBackup": "백업 파일을 업로드하는 중..."
312
- },
313
- "ipWarning": {
314
- "acknowledge": "알겠습니다",
315
- "message": "모든 사용자가 같은 IP 주소나 로컬 네트워크 IP를 사용하는 것으로 보입니다. 위치 또는 IP 주소 기반 규칙 로직에 영향을 줄 수 있습니다."
316
- },
317
- "jobs": {
318
- "backfill": "백필",
319
- "cleanup": "정리",
320
- "delayed": "지연됨",
321
- "description": "",
322
- "errors": "오류",
323
- "jobHistory": "작업 기록",
324
- "jobHistoryDesc": "최근 유지관리 작업 실행 내역",
325
- "lastJobCompleted": "마지막 작업이 성공적으로 완료되었습니다",
326
- "lastJobFailed": "마지막 작업이 실패했습니다",
327
- "mayTakeAWhile": "시간이 걸릴 수 있습니다",
328
- "mayTakeAWhileDesc": "라이브러리 크기에 따라 이 작업을 완료하는 데 몇 분이 걸릴 수 있습니다.",
329
- "normalization": "정규화",
330
- "processed": "처리됨",
331
- "queued": "대기열에 있음",
332
- "runConfirm": "{{name}}을(를) 실행할까요?",
333
- "runJob": "작업 실행",
334
- "running": "실행 중",
335
- "runningState": "실행 중",
336
- "startJob": "작업 시작",
337
- "title": "유지관리 작업",
338
- "unchanged": "변경 없음",
339
- "updated": "업데이트됨",
340
- "waiting": "대기 중"
219
+ "posterSource": {
220
+ "title": "포스터 설정",
221
+ "titleDesc": "같은 콘텐츠가 여러 서버에 있을 때 표시할 포스터의 서버를 선택합니다",
222
+ "label": "우선 포스터 출처",
223
+ "description": "같은 콘텐츠가 여러 서버에 있으면 이 서버의 포스터를 사용합니다. 포스터가 없으면 가장 최근에 추가된 항목의 포스터를 사용합니다.",
224
+ "automatic": "자동(가장 최근 항목)",
225
+ "emptyHint": "우선 포스터 출처를 선택하려면 서버를 추가하세요.",
226
+ "ownerOnly": ""
227
+ },
228
+ "version": {
229
+ "installed": "버전 {{version}}",
230
+ "upToDate": "최신 버전",
231
+ "updateAvailable": "{{version}} 업데이트 가능"
232
+ }
341
233
  },
342
234
  "mobile": {
343
- "addDevice": "기기 추가",
235
+ "title": "모바일 앱",
236
+ "pairDevice": "기기 페어링",
237
+ "generateToken": "페어링 토큰 생성",
238
+ "scanQrCode": "QR 코드 스캔",
239
+ "tokenExpires": "토큰 만료까지 {{time}}",
240
+ "lastSeen": "",
344
241
  "connectedOn": "",
345
- "copyToken": "토큰 복사",
346
- "deviceName": "기기 이름",
347
- "deviceNamePlaceholder": "예: iPhone 15",
348
- "devicesConnected": "{{max}}대 중 {{current}}대 기기 연결됨",
349
- "disable": "비활성화",
350
- "disableMobileAccess": "모바일 접근 비활성화",
351
- "disableMobileAccessConfirm": "모든 모바일 기기의 연결이 끊기고 모든 세션이 취소됩니다. 나중에 모바일 접근을 다시 활성화할 수 있습니다.",
352
- "done": "완료",
242
+ "noDevices": "연결된 기기가 없습니다",
243
+ "noDevicesDesc": "",
244
+ "revokeAll": "모든 세션 취소",
245
+ "getOnGooglePlay": "Google Play에서 받기",
353
246
  "downloadOnAppStore": "App Store에서 다운로드",
354
- "enableMobileAccess": "모바일 접근 활성화",
355
- "enabling": "활성화 중...",
356
- "expiresIn": "만료까지 {{time}}",
357
- "externalUrlBanner": "리버스 프록시를 사용하거나 원격으로 접속하나요? 모바일 앱이 서버에 연결할 수 있도록",
358
- "externalUrlBannerLink": "외부 URL",
359
- "externalUrlBannerSuffix": "을/를 설정하세요.",
360
247
  "externalUrlRequired": "모바일 페어링을 사용하려면 일반 설정에서 외부 URL을 구성해야 합니다.",
361
- "failedToGenerateToken": "토큰 생성 실패",
362
- "generateToken": "페어링 토큰 생성",
363
- "getOnGooglePlay": "Google Play에서 받기",
364
- "lastSeen": "",
365
248
  "mobileAccessDisabled": "모바일 접근이 비활성화됨",
366
249
  "mobileAccessDisabledDesc": "Tracearr 모바일 앱이 서버에 연결할 수 있도록 모바일 접근을 활성화하세요.",
367
- "noDevices": "연결된 기기가 없습니다",
368
- "noDevicesDesc": "",
369
- "oneTimePairToken": "일회용 페어링 토큰",
370
- "pairDevice": "기기 페어링",
250
+ "enableMobileAccess": "모바일 접근 활성화",
251
+ "enabling": "활성화 중...",
252
+ "devicesConnected": "{{max}}대 중 {{current}}대 기기 연결됨",
253
+ "pendingTokens": "대기 중인 페어링 토큰 {{count}}개",
254
+ "addDevice": "기기 추가",
255
+ "disableMobileAccess": "모바일 접근 비활성화",
256
+ "revokeAllSessions": "모두 취소",
371
257
  "pairNewDevice": "새 기기 페어링",
372
258
  "pairNewDeviceDesc": "Tracearr 모바일 앱으로 QR 코드를 스캔하거나 토큰을 직접 입력하세요.",
373
- "pendingTokens": "대기 중인 페어링 토큰 {{count}}개",
374
- "removeDevice": "기기 제거",
375
- "removeDeviceConfirm": "{{deviceName}}을/를 제거할까요? 다시 연결하려면 이 기기를 다시 페어링해야 합니다.",
259
+ "expiresIn": "만료까지 {{time}}",
260
+ "oneTimePairToken": "일회용 페어링 토큰",
261
+ "copyToken": "토큰 복사",
262
+ "tokenExpiryNote": "이 토큰은 5분 후 만료되며 한 번만 사용할 수 있습니다.",
263
+ "done": "완료",
264
+ "disableMobileAccessConfirm": "모든 모바일 기기의 연결이 끊기고 모든 세션이 취소됩니다. 나중에 모바일 접근을 다시 활성화할 수 있습니다.",
265
+ "disable": "비활성화",
266
+ "revokeAllConfirm": "모든 모바일 기기의 연결이 끊깁니다. 다시 연결하려면 기기를 다시 페어링해야 합니다.",
376
267
  "renameDevice": "기기 이름 변경",
377
268
  "renameDeviceDesc": "목록에서 이 기기를 식별할 이름을 입력하세요.",
378
- "revokeAll": "모든 세션 취소",
379
- "revokeAllConfirm": "모든 모바일 기기의 연결이 끊깁니다. 다시 연결하려면 기기를 다시 페어링해야 합니다.",
380
- "revokeAllSessions": "모두 취소",
381
- "scanQrCode": "QR 코드 스캔",
382
- "title": "모바일 앱",
383
- "tokenExpires": "토큰 만료까지 {{time}}",
384
- "tokenExpiryNote": "이 토큰은 5분 후 만료되며 한 번만 사용할 수 있습니다."
269
+ "deviceName": "기기 이름",
270
+ "deviceNamePlaceholder": "예: iPhone 15",
271
+ "removeDevice": "기기 제거",
272
+ "failedToGenerateToken": "토큰 생성 실패",
273
+ "removeDeviceConfirm": "{{deviceName}}을/를 제거할까요? 다시 연결하려면 이 기기를 다시 페어링해야 합니다.",
274
+ "externalUrlBanner": "리버스 프록시를 사용하거나 원격으로 접속하나요? 모바일 앱이 서버에 연결할 수 있도록",
275
+ "externalUrlBannerLink": "외부 URL",
276
+ "externalUrlBannerSuffix": "을/를 설정하세요."
385
277
  },
386
- "nav": {
387
- "descriptions": {
388
- "api": "",
389
- "appearance": "",
390
- "backup": "",
391
- "behavior": "",
392
- "connections": "",
393
- "destinations": "",
394
- "email": "",
395
- "guest": "",
396
- "import": "",
397
- "jobs": "",
398
- "locale": "",
399
- "mobile": "",
400
- "newsletters": "",
401
- "plexAccounts": "",
402
- "posters": "",
403
- "remote": ""
278
+ "tailscale": {
279
+ "title": "Tailscale VPN",
280
+ "description": "포트 포워딩 없이 Tailscale 네트워크에서 Tracearr에 안전하게 접근하세요.",
281
+ "notAvailable": "Tailscale 바이너리를 찾을 수 없습니다. 이 기능은 공식 Docker 이미지에서 실행할 때만 사용할 수 있습니다.",
282
+ "disabledDescription": "Tailscale을 활성화해 Tracearr를 개인 tailnet에 연결하세요. 포트 포워딩이나 리버스 프록시가 필요 없습니다.",
283
+ "hostnameLabel": "기기 호스트 이름",
284
+ "hostnameHint": "Tailnet에서 이 기기를 식별할 사용자 지정 이름입니다. 문자, 숫자, 하이픈만 사용할 수 있습니다.",
285
+ "enable": "Tailscale 활성화",
286
+ "disable": "Tailscale 비활성화",
287
+ "starting": "Tailscale 시작 중...",
288
+ "stopping": "Tailscale 중지 중...",
289
+ "awaitingAuth": "승인 대기 중...",
290
+ "authorize": "Tailscale에서 승인",
291
+ "connected": "Tailscale이 연결되었습니다. Tracearr 인스턴스를 tailnet에서 사용할 수 있습니다.",
292
+ "hostname": "호스트 이름",
293
+ "dnsName": "DNS 이름",
294
+ "tailnetUrl": "URL",
295
+ "showLogs": "로그 보기",
296
+ "hideLogs": "로그 숨기기",
297
+ "noLogs": "표시할 로그 출력이 없습니다.",
298
+ "exitNodeNone": "없음",
299
+ "exitNodeOffline": "(오프라인)",
300
+ "unknownError": "알 수 없는 오류가 발생했습니다.",
301
+ "disableConfirmTitle": "Tailscale을 비활성화할까요?",
302
+ "disableConfirmDescription": "Tracearr가 tailnet에서 연결 해제됩니다. 다시 승인하지 않고도 나중에 다시 활성화할 수 있습니다.",
303
+ "resetConfirmTitle": "Tailscale을 초기화할까요?",
304
+ "resetConfirmDescription": "Tracearr가 tailnet에서 연결 해제되고 기기 Id가 제거됩니다. 다시 활성화하려면 다시 승인해야 합니다.",
305
+ "toast": {
306
+ "disabled": "Tailscale이 비활성화되었습니다.",
307
+ "enableFailed": "Tailscale을 활성화하지 못했습니다",
308
+ "disableFailed": "Tailscale을 비활성화하지 못했습니다",
309
+ "reset": "Tailscale이 초기화되었습니다.",
310
+ "resetFailed": "Tailscale을 초기화하지 못했습니다",
311
+ "exitNodeSet": "Exit node가 업데이트되었습니다.",
312
+ "exitNodeFailed": "Exit node를 설정하지 못했습니다"
313
+ }
314
+ },
315
+ "jobs": {
316
+ "title": "유지관리 작업",
317
+ "description": "데이터를 정확하고 최적화된 상태로 유지하는 백그라운드 작업을 관리하세요.",
318
+ "normalization": "정규화",
319
+ "backfill": "백필",
320
+ "cleanup": "정리",
321
+ "running": "실행 중",
322
+ "queued": "대기열에 있음",
323
+ "delayed": "지연됨",
324
+ "waiting": "대기 중",
325
+ "runningState": "실행 중",
326
+ "runJob": "작업 실행",
327
+ "processed": "처리됨",
328
+ "updated": "업데이트됨",
329
+ "unchanged": "변경 없음",
330
+ "errors": "오류",
331
+ "lastJobCompleted": "마지막 작업이 성공적으로 완료되었습니다",
332
+ "lastJobFailed": "마지막 작업이 실패했습니다",
333
+ "jobHistory": "작업 기록",
334
+ "jobHistoryDesc": "최근 유지관리 작업 실행 내역",
335
+ "runConfirm": "{{name}}을(를) 실행할까요?",
336
+ "mayTakeAWhile": "시간이 걸릴 수 있습니다",
337
+ "mayTakeAWhileDesc": "라이브러리 크기에 따라 이 작업을 완료하는 데 몇 분이 걸릴 수 있습니다.",
338
+ "startJob": "작업 시작"
339
+ },
340
+ "advanced": {
341
+ "title": "고급 설정",
342
+ "externalUrl": "외부 URL",
343
+ "trustProxy": "프록시 헤더 신뢰",
344
+ "reverseProxy": "리버스 프록시",
345
+ "connectionScenarios": "연결 시나리오"
346
+ },
347
+ "accessControl": {
348
+ "title": "접근 제어",
349
+ "description": "Tracearr에 접근할 수 있는 사용자를 구성하세요",
350
+ "allowGuestAccess": "게스트 접근 허용",
351
+ "allowGuestAccessDesc": "비활성화하면 서버 소유자만 Tracearr에 로그인할 수 있습니다",
352
+ "singleOwnerNote": "참고: 게스트 접근이 비활성화되면 서버 소유자만 로그인할 수 있습니다. 다른 모든 사용자는 \"접근 거부\" 메시지를 보게 됩니다."
353
+ },
354
+ "import": {
355
+ "title": "데이터 가져오기",
356
+ "jellystat": "Jellystat에서 가져오기",
357
+ "tautulli": "Tautulli에서 가져오기",
358
+ "importProgress": "가져오기 진행률",
359
+ "importComplete": "가져오기 완료",
360
+ "importFailed": "가져오기 실패",
361
+ "processed": "처리됨",
362
+ "page": "페이지",
363
+ "imported": "가져옴",
364
+ "skipped": "건너뜀",
365
+ "enriched": "보강됨",
366
+ "errors": "오류",
367
+ "noServers": "연결된 서버가 없습니다",
368
+ "noServersHint": "데이터를 가져오려면 연결된 서버가 하나 이상 필요합니다.",
369
+ "tautulliUrl": "Tautulli URL",
370
+ "tautulliUrlPlaceholder": "http://localhost:8181",
371
+ "tautulliUrlHelp": "Tautulli 인스턴스의 URL입니다.",
372
+ "apiKeyHelp": "Tautulli 설정 > Web Interface > API Key에서 찾을 수 있습니다.",
373
+ "testing": "테스트 중...",
374
+ "connectToTautulli": "Tautulli에 연결",
375
+ "importHistory": "가져오기 기록",
376
+ "targetServer": "대상 서버",
377
+ "selectPlexServer": "Plex 서버 선택",
378
+ "overwriteFriendlyNames": "기존 표시 이름을 Tautulli 이름으로 덮어쓰기",
379
+ "overwriteFriendlyNamesHelp": "Tracearr의 기존 식별 이름이 Tautulli의 표시 이름으로 바뀝니다.",
380
+ "includeStreamDetails": "자세한 스트림 데이터 포함(코덱, 비트레이트, 해상도)",
381
+ "includeStreamDetailsHelp": "추가 스트림 정보를 가져옵니다. 가져오기 시간이 크게 늘어날 수 있습니다.",
382
+ "importing": "가져오는 중...",
383
+ "startImport": "가져오기 시작",
384
+ "howItWorks": "가져오기 방식",
385
+ "howItWorksDesc": "Tracearr가 소스의 모든 과거 시청 데이터를 가져옵니다. 라이브러리 크기에 따라 시간이 걸릴 수 있습니다.",
386
+ "recordsMayBeSkipped": "다음 경우 기록을 건너뛸 수 있습니다:",
387
+ "selectTargetServer": "대상 서버 선택",
388
+ "selectJellyfinServer": "Jellyfin 또는 Emby 서버 선택",
389
+ "uploadJellystatBackup": "Jellystat 백업 업로드",
390
+ "exportBackupHint": "Jellystat에서 활동 백업을 내보내세요",
391
+ "exportBackupHelp": "Jellystat에서 설정 > 백업 > 활동 백업으로 이동해 데이터를 내보내세요.",
392
+ "importOptions": "가져오기 옵션",
393
+ "enrichMetadata": "미디어 메타데이터로 보강(권장)",
394
+ "enrichMetadataHelp": "가져온 세션에 대해 미디어 서버에서 추가 메타데이터를 가져옵니다.",
395
+ "updateExistingRecords": "기존 기록에 스트림 상세 정보 업데이트",
396
+ "updateExistingRecordsHelp": "이전에 가져온 기록에 스트림 품질 데이터를 업데이트합니다.",
397
+ "pleaseEnterDetails": "Tautulli URL과 API 키를 입력하세요",
398
+ "testingConnection": "연결 테스트 중...",
399
+ "pleaseSelectJsonFile": "JSON 파일을 선택하세요",
400
+ "uploadingBackup": "백업 파일을 업로드하는 중...",
401
+ "plex": "Plex(Tautulli)",
402
+ "jellyfinEmby": "Jellyfin/Emby(Jellystat)",
403
+ "step1": "1",
404
+ "step2": "2",
405
+ "apiKeyPlaceholder": "Tautulli API 키",
406
+ "skipUserNotFoundPlex": "사용자를 찾을 수 없음 - Plex 사용자가 Tracearr에 없습니다. 먼저 서버를 동기화해 모든 사용자를 추가하세요.",
407
+ "skipDuplicate": "중복 세션 - 이 세션은 이전에 이미 가져왔습니다.",
408
+ "skipInProgress": "진행 중인 세션 - 참조 ID가 없는 활성/미완료 세션은 건너뜁니다.",
409
+ "skipUserNotFoundJellyfin": "사용자를 찾을 수 없음 - Jellyfin/Emby 사용자가 Tracearr에 없습니다. 먼저 서버를 동기화해 모든 사용자를 추가하세요.",
410
+ "skipSyncHint": "건너뛴 기록이 많다면 설정 > 서버에서 최근에 서버를 동기화했는지 확인하세요.",
411
+ "importInProgressPercent": "가져오는 중({{percent}}% 완료)...",
412
+ "importInProgressGeneric": "가져오는 중...",
413
+ "startingImport": "가져오기를 시작하는 중...",
414
+ "connectedFound": "연결되었습니다! 사용자 {{users}}명과 기록 {{records}}개를 찾았습니다.",
415
+ "playbackReporting": "Playback Reporting 플러그인",
416
+ "playbackReportingDesc": "Jellyfin 또는 Emby 서버에 설치된 Playback Reporting 플러그인에서 시청 기록을 바로 가져옵니다. 파일로 내보낼 필요가 없습니다.",
417
+ "checkPlugin": "플러그인 확인",
418
+ "checkingPlugin": "확인 중...",
419
+ "pluginFound": "플러그인 확인됨: {{oldestDate}}~{{newestDate}}, 기록 {{records}}개",
420
+ "pluginNotInstalled": "이 서버에 Playback Reporting 플러그인이 설치되지 않았거나 Tracearr에서 접근할 수 없습니다. 시청 기록을 남기려면 서버의 플러그인 카탈로그에서 설치하거나 아래에서 Jellystat 가져오기를 사용하세요.",
421
+ "serverTimezone": "서버 시간대",
422
+ "serverTimezoneHelp": "브라우저가 아닌 미디어 서버 호스트에 설정된 시간대와 일치해야 합니다. Playback Reporting의 타임스탬프는 서버 현지 시간으로 저장됩니다.",
423
+ "importFullRange": "전체 기록 가져오기",
424
+ "importFullRangeHelp": "기본적으로 Tracearr가 이 서버에서 처음 기록한 세션보다 오래된 기록만 가져오므로 이미 기록된 세션이 중복되지 않습니다. Tracearr 기록에 누락된 구간이 있다면 이 옵션을 켜서 겹치는 기간과 관계없이 플러그인의 전체 기록을 가져오세요. 완전히 동일한 항목은 계속 건너뜁니다.",
425
+ "overlapSkipped": "기간이 겹쳐 {{count}}개 건너뜀",
426
+ "duplicates": "중복 {{count}}개 건너뜀",
427
+ "skipOverlap": "기간이 겹치는 기록 - 타임스탬프가 Tracearr에서 이미 추적 중인 기간에 포함됩니다. 포함하려면 전체 기록 가져오기를 켜세요.",
428
+ "skipDuplicatePlugin": "중복 기록 - 이미 직접 가져왔거나 같은 플러그인 데이터를 Jellystat에서 먼저 가져온 항목입니다."
429
+ },
430
+ "plex": {
431
+ "signInWithPlex": "Plex로 로그인",
432
+ "signUpWithPlex": "Plex로 가입",
433
+ "selectServer": "서버 선택",
434
+ "chooseServer": "모니터링할 Plex Media Server를 선택하세요"
435
+ },
436
+ "account": {
437
+ "createAccount": "계정 만들기",
438
+ "email": "이메일",
439
+ "password": "비밀번호",
440
+ "displayName": "표시 이름",
441
+ "createYourAccount": "시작하려면 계정을 만드세요",
442
+ "signInToAccount": "계정에 로그인하세요",
443
+ "useLocalAccount": "로컬 계정 대신 사용"
444
+ },
445
+ "update": {
446
+ "title": "업데이트 사용 가능",
447
+ "releaseNotes": "릴리스 노트",
448
+ "updateCommand": "업데이트 명령",
449
+ "pullInstructions": "pull 후 업데이트를 적용하려면 컨테이너를 다시 시작하세요.",
450
+ "stableRelease": "안정 릴리스",
451
+ "betaUpdate": "베타 업데이트",
452
+ "newVersion": "새 버전",
453
+ "versionAvailable": "{{version}} 사용 가능",
454
+ "beforeUpdating": ""
455
+ },
456
+ "whatsNew": {
457
+ "title": "",
458
+ "installed": "",
459
+ "installedSince": "",
460
+ "reopenDescription": "",
461
+ "openNotes": "",
462
+ "gotIt": "",
463
+ "allReleases": "",
464
+ "since": "",
465
+ "earlier": "",
466
+ "installedBadge": "",
467
+ "latestBadge": "",
468
+ "changeCount_one": "",
469
+ "changeCount_other": "",
470
+ "series": "",
471
+ "docs": "",
472
+ "empty": "",
473
+ "types": {
474
+ "new": "",
475
+ "improved": "",
476
+ "fix": "",
477
+ "security": "",
478
+ "note": ""
479
+ }
480
+ },
481
+ "serverHealth": {
482
+ "unreachable": "{{serverName}}에 연결할 수 없습니다",
483
+ "multipleUnreachable": "{{count}}개 서버에 연결할 수 없습니다: {{serverNames}}"
484
+ },
485
+ "ipWarning": {
486
+ "message": "모든 사용자가 같은 IP 주소나 로컬 네트워크 IP를 사용하는 것으로 보입니다. 위치 또는 IP 주소 기반 규칙 로직에 영향을 줄 수 있습니다.",
487
+ "acknowledge": "알겠습니다"
488
+ },
489
+ "backup": {
490
+ "title": "백업",
491
+ "backToBackups": "백업으로 돌아가기",
492
+ "description": "Tracearr 데이터를 백업하고 복원하세요",
493
+ "createBackup": "백업 만들기",
494
+ "creating": "백업 생성 중...",
495
+ "uploadBackup": "백업 업로드",
496
+ "uploading": "업로드 중...",
497
+ "databaseSize": "현재 데이터베이스 크기: {{size}}",
498
+ "freeSpace": "백업 디렉터리 여유 공간: {{size}}",
499
+ "lowDiskSpace": "디스크 공간이 부족합니다. 백업과 복원에는 데이터베이스 크기의 최소 두 배에 해당하는 여유 공간이 필요합니다.",
500
+ "backupHistory": "백업 기록",
501
+ "noBackups": "아직 백업이 없습니다. 위에서 첫 백업을 만들어 보세요.",
502
+ "size": "크기",
503
+ "date": "날짜",
504
+ "type": "유형",
505
+ "version": "버전",
506
+ "actions": "작업",
507
+ "rowActions": "",
508
+ "download": "",
509
+ "typeManual": "수동",
510
+ "typeScheduled": "예약됨",
511
+ "typeUploaded": "업로드됨",
512
+ "restoreAction": "복원",
513
+ "deleteConfirmTitle": "백업 삭제",
514
+ "deleteConfirmDescription": "이 백업을 삭제할까요? 이 작업은 되돌릴 수 없습니다.",
515
+ "schedule": "예약 백업",
516
+ "scheduleType": "일정",
517
+ "scheduleDisabled": "비활성화",
518
+ "scheduleDaily": "매일",
519
+ "scheduleWeekly": "매주",
520
+ "scheduleMonthly": "매월",
521
+ "scheduleTime": "시간({{timezone}})",
522
+ "scheduleHour": "",
523
+ "scheduleMinute": "",
524
+ "scheduleDayOfWeek": "요일",
525
+ "scheduleDayOfMonth": "일자",
526
+ "scheduleDayOfMonthHint": "일수가 더 적은 달에는 마지막 날에 백업이 실행됩니다.",
527
+ "retentionCount": "최근 항목 유지",
528
+ "retentionSuffix": "개의 예약 백업",
529
+ "daySun": "일요일",
530
+ "dayMon": "월요일",
531
+ "dayTue": "화요일",
532
+ "dayWed": "수요일",
533
+ "dayThu": "목요일",
534
+ "dayFri": "금요일",
535
+ "daySat": "토요일",
536
+ "restore": {
537
+ "title": "백업 복원",
538
+ "selectedBackup": "선택한 백업",
539
+ "databaseSize": "데이터베이스 크기",
540
+ "sessions": "세션",
541
+ "users": "사용자",
542
+ "servers": "서버",
543
+ "automations": "자동화",
544
+ "libraryItems": "라이브러리 항목",
545
+ "tables": "테이블",
546
+ "warning": "복원하면 기존 데이터가 모두 대체됩니다. 복원이 완료된 뒤 다시 로그인해야 합니다.",
547
+ "confirmLabel": "모든 데이터가 대체된다는 것을 이해했습니다",
548
+ "confirm": "복원 시작",
549
+ "complete": "복원이 성공적으로 완료되었습니다. 잠시 후 페이지가 새로고침됩니다.",
550
+ "failed": "복원 실패",
551
+ "cannotRestore": "복원에는 PostgreSQL 슈퍼유저 권한이 필요합니다. 데이터베이스 사용자에게 슈퍼유저 권한이 있는지 확인한 뒤 다시 시도하세요.",
552
+ "pgVersionMismatch": "백업은 PostgreSQL {{backupVersion}}에서 생성되었지만 이 서버는 PostgreSQL {{serverVersion}}을 실행 중입니다. 더 새로운 PostgreSQL 버전의 덤프는 복원할 수 없습니다.",
553
+ "tsVersionMismatch": "백업은 TimescaleDB {{backupVersion}}로 생성되었지만 이 서버는 TimescaleDB {{serverVersion}}까지만 지원합니다."
404
554
  },
405
- "groups": {
406
- "access": "",
407
- "data": "",
408
- "general": "",
409
- "notifications": "",
410
- "servers": ""
555
+ "toast": {
556
+ "backupCreated": "백업이 성공적으로 생성되었습니다",
557
+ "backupCreateFailed": "백업을 만들지 못했습니다",
558
+ "backupUploaded": "백업이 성공적으로 업로드되었습니다",
559
+ "backupUploadFailed": "백업을 업로드하지 못했습니다",
560
+ "backupDeleted": "백업이 삭제되었습니다",
561
+ "backupDeleteFailed": "백업을 삭제하지 못했습니다",
562
+ "restoreStarted": "복원이 시작되었습니다",
563
+ "restoreStartFailed": "복원을 시작하지 못했습니다",
564
+ "scheduleSaved": "백업 일정이 저장되었습니다",
565
+ "scheduleError": "백업 일정을 저장하지 못했습니다"
566
+ }
567
+ },
568
+ "newsletters": {
569
+ "ownerOnly": "",
570
+ "new": "",
571
+ "empty": "",
572
+ "emptyDescription": "",
573
+ "noDestinationTitle": "",
574
+ "noDestinationDescription": "",
575
+ "noDestinationHint": "",
576
+ "addEmailDestination": "",
577
+ "enabled": "",
578
+ "rowActions": "",
579
+ "duplicate": "",
580
+ "sendNow": "",
581
+ "deleteTitle": "",
582
+ "deleteDescription": "",
583
+ "schedule": {
584
+ "daily": "",
585
+ "weekly": "",
586
+ "monthly": "",
587
+ "cron": "",
588
+ "inZone": ""
411
589
  },
412
- "itemLabel": "",
413
- "label": "",
414
- "sections": {
415
- "api": "",
416
- "appearance": "",
417
- "backup": "",
418
- "behavior": "",
419
- "connections": "",
420
- "destinations": "",
421
- "email": "",
422
- "guest": "",
423
- "import": "",
424
- "jobs": "",
425
- "locale": "",
426
- "mobile": "",
427
- "newsletters": "",
428
- "plexAccounts": "",
429
- "posters": "",
430
- "remote": ""
590
+ "nextRun": "",
591
+ "noNextRun": "",
592
+ "neverSent": "",
593
+ "lastSend": "",
594
+ "outcome": {
595
+ "rendering": "",
596
+ "sending": "",
597
+ "sent": "",
598
+ "partial": "",
599
+ "failed": "",
600
+ "skipped_empty": ""
431
601
  },
432
- "selectLabel": ""
433
- },
434
- "newsletters": {
435
- "addEmailDestination": "",
436
- "copyOf": "",
437
602
  "counts": {
438
- "albums_one": "",
439
- "albums_other": "",
440
603
  "movies_one": "",
441
604
  "movies_other": "",
442
605
  "shows_one": "",
443
606
  "shows_other": "",
607
+ "albums_one": "",
608
+ "albums_other": "",
444
609
  "watched_one": "",
445
610
  "watched_other": ""
446
611
  },
447
- "deleteDescription": "",
448
- "deleteTitle": "",
449
- "duplicate": "",
612
+ "copyOf": "",
613
+ "richText": {
614
+ "bold": "",
615
+ "italic": "",
616
+ "link": "",
617
+ "bulletList": "",
618
+ "linkHref": "",
619
+ "linkApply": "",
620
+ "counter": ""
621
+ },
450
622
  "editor": {
451
- "actions": {
452
- "more": "",
453
- "preview": "",
454
- "send": "",
455
- "sendHint": "",
456
- "test": "",
457
- "testHint": ""
458
- },
459
- "allLibraries": "",
460
- "allServers": "",
623
+ "newTitle": "",
624
+ "headerSummary": "",
625
+ "notFound": "",
461
626
  "basics": "",
462
- "clear": "",
463
- "content": "",
464
- "cron": "",
465
- "cronHint": "",
466
- "dayOfMonth": "",
467
- "dayOfMonthHelp": "",
468
- "dayOfWeek": "",
469
- "days": "",
470
- "delivery": {
471
- "destination": "",
472
- "destinationHelp": "",
473
- "hostedNeedsUrl": "",
474
- "imageMode": "",
475
- "modeHelp": {
476
- "hosted": "",
477
- "inline": "",
478
- "none": ""
479
- },
480
- "modePreviewHint": "",
481
- "modes": {
482
- "hosted": "",
483
- "inline": "",
484
- "none": ""
485
- },
486
- "noDestination": "",
487
- "pickDestination": "",
488
- "skipWhenEmpty": "",
489
- "skipWhenEmptyHelp": "",
490
- "title": ""
627
+ "tabs": {
628
+ "edit": "",
629
+ "history": ""
491
630
  },
492
- "dstNote": "",
493
- "enabledHelp": "",
494
- "fixFirst": "",
495
- "headerSummary": "",
496
631
  "historyNeedsSave": "",
497
- "intro": "",
498
- "introPlaceholder": "",
632
+ "name": "",
633
+ "nameHelp": "",
634
+ "turnOnNow": "",
635
+ "enabledHelp": "",
636
+ "schedule": "",
637
+ "scheduleKind": "",
499
638
  "kinds": {
500
- "cron": "",
501
639
  "daily": "",
640
+ "weekly": "",
502
641
  "monthly": "",
503
- "weekly": ""
642
+ "cron": ""
643
+ },
644
+ "dayOfWeek": "",
645
+ "dayOfMonth": "",
646
+ "dayOfMonthHelp": "",
647
+ "time": "",
648
+ "timezone": "",
649
+ "timezoneHelp": "",
650
+ "cron": "",
651
+ "cronHint": "",
652
+ "dstNote": "",
653
+ "nextRun": "",
654
+ "nextRunPending": "",
655
+ "content": "",
656
+ "windowKind": "",
657
+ "windows": {
658
+ "since_last_send": "",
659
+ "fixed": ""
660
+ },
661
+ "windowHelp": {
662
+ "since_last_send": "",
663
+ "fixed": ""
664
+ },
665
+ "windowSentence": {
666
+ "fallback": "",
667
+ "fallbackLabel": "",
668
+ "fixed": "",
669
+ "fixedAfter": "",
670
+ "fixedLabel": ""
504
671
  },
672
+ "windowMax": "",
673
+ "days": "",
674
+ "servers": "",
675
+ "allServers": "",
676
+ "searchServers": "",
677
+ "noServers": "",
678
+ "serversSelected": "",
679
+ "variantsNote": "",
680
+ "serversHelp": "",
505
681
  "libraries": "",
506
- "librariesHelp": "",
682
+ "allLibraries": "",
683
+ "searchLibraries": "",
684
+ "noLibraries": "",
507
685
  "librariesSelected": "",
508
- "links": {
509
- "tracearr": "",
510
- "tracearrNote": ""
686
+ "librariesHelp": "",
687
+ "clear": "",
688
+ "unknownLibrary": "",
689
+ "removeLibrary": "",
690
+ "sections": {
691
+ "movies": "",
692
+ "shows": "",
693
+ "music": "",
694
+ "mostWatched": "",
695
+ "legend": "",
696
+ "description": "",
697
+ "upTo": "",
698
+ "the": "",
699
+ "units": {
700
+ "movies": "",
701
+ "shows": "",
702
+ "seasonsEach": "",
703
+ "albums": "",
704
+ "mostPlayed": ""
705
+ },
706
+ "labels": {
707
+ "movies": "",
708
+ "shows": "",
709
+ "seasons": "",
710
+ "music": "",
711
+ "mostWatched": ""
712
+ },
713
+ "musicHelp": "",
714
+ "mostWatchedHelp": ""
511
715
  },
512
716
  "message": "",
513
- "name": "",
514
- "nameHelp": "",
515
- "newTitle": "",
516
- "nextRun": "",
517
- "nextRunPending": "",
518
- "noLibraries": "",
519
- "noServers": "",
520
- "notFound": "",
521
- "outro": "",
522
- "outroPlaceholder": "",
717
+ "senderName": "",
718
+ "senderNameHelp": "",
719
+ "senderNameRequiredMulti": "",
720
+ "previewVariant_one": "",
721
+ "previewVariant_other": "",
722
+ "variantHeading": "",
723
+ "subject": "",
724
+ "subjectHelp": "",
523
725
  "placeholders": {
524
- "end_date": "",
525
- "item_count": "",
526
726
  "server_name": "",
527
- "start_date": ""
727
+ "start_date": "",
728
+ "end_date": "",
729
+ "item_count": ""
528
730
  },
529
- "preview": {
530
- "countsListed": {
531
- "albums": "",
532
- "movies": "",
533
- "shows": ""
731
+ "intro": "",
732
+ "introPlaceholder": "",
733
+ "outro": "",
734
+ "outroPlaceholder": "",
735
+ "save": "",
736
+ "saving": "",
737
+ "unsaved": "",
738
+ "fixFirst": "",
739
+ "sendNeedsSave": "",
740
+ "recipients": {
741
+ "title": "",
742
+ "members": "",
743
+ "membersHelp": "",
744
+ "ownerNote": "",
745
+ "extraTrigger": "",
746
+ "extraHelp": "",
747
+ "pasteAddresses": "",
748
+ "addressLabel": "",
749
+ "nameLabel": "",
750
+ "namePlaceholder": "",
751
+ "removeAddress": "",
752
+ "badAddress": "",
753
+ "loadFailed": "",
754
+ "willReceive": "",
755
+ "excludedCount": "",
756
+ "notIncludable": "",
757
+ "noAddress": "",
758
+ "suppressedCount": "",
759
+ "joinedSinceLastSend": "",
760
+ "newSinceLastSend": "",
761
+ "manage": "",
762
+ "manageHelp": "",
763
+ "searchPlaceholder": "",
764
+ "serverFilter": "",
765
+ "allServers": "",
766
+ "tabs": {
767
+ "receiving": "",
768
+ "excluded": "",
769
+ "noAddress": "",
770
+ "suppressed": ""
534
771
  },
535
- "draft": "",
536
- "images": "",
537
- "imagesBlocked": "",
538
- "imagesBlockedNote": "",
539
- "imagesOn": "",
540
- "linksNote": "",
541
- "recipients": "",
542
- "subjectLabel": "",
772
+ "selectAll": "",
773
+ "selectPerson": "",
774
+ "selectedCount": "",
775
+ "excludeSelected": "",
776
+ "includeSelected": "",
777
+ "noMatches": "",
778
+ "groupsNote": "",
779
+ "noAddressHelp": "",
780
+ "contactEmailFor": "",
781
+ "saveEmail": "",
782
+ "openUserPage": "",
783
+ "unknownMember": "",
784
+ "account": "",
785
+ "fromUsername": "",
786
+ "extraAddress": "",
787
+ "suppressed": "",
788
+ "suppressedHelp": "",
789
+ "exclude": "",
790
+ "excludeAction": "",
791
+ "include": "",
792
+ "includeAction": "",
793
+ "excludedHelp": "",
794
+ "notIncludableHelp": "",
795
+ "excludedAfterSave": "",
796
+ "includedAfterSave": "",
797
+ "reasons": {
798
+ "excluded": "",
799
+ "banned": "",
800
+ "pending": "",
801
+ "noServer": ""
802
+ },
803
+ "emptyTitle": "",
804
+ "emptyDescription": ""
805
+ },
806
+ "delivery": {
543
807
  "title": "",
544
- "variantTab": "",
545
- "variants": "",
546
- "width": "",
547
- "widths": {
548
- "desktop": "",
549
- "phone": ""
808
+ "destination": "",
809
+ "destinationHelp": "",
810
+ "pickDestination": "",
811
+ "noDestination": "",
812
+ "imageMode": "",
813
+ "modes": {
814
+ "hosted": "",
815
+ "inline": "",
816
+ "none": ""
817
+ },
818
+ "modeHelp": {
819
+ "hosted": "",
820
+ "inline": "",
821
+ "none": ""
550
822
  },
551
- "window": "",
552
- "windowSince": ""
823
+ "modePreviewHint": "",
824
+ "hostedNeedsUrl": "",
825
+ "skipWhenEmpty": "",
826
+ "skipWhenEmptyHelp": ""
827
+ },
828
+ "links": {
829
+ "tracearr": "",
830
+ "tracearrNote": ""
553
831
  },
554
- "previewVariant_one": "",
555
- "previewVariant_other": "",
556
832
  "readiness": {
833
+ "title": "",
834
+ "intro": "",
557
835
  "destination": "",
558
- "destinationError": "",
559
836
  "destinationFail": "",
560
837
  "destinationUnknown": "",
561
- "dns": "",
562
- "dnsLink": "",
563
- "emptyVariant": "",
838
+ "destinationError": "",
839
+ "fixDestination": "",
840
+ "fixRecipients": "",
841
+ "fixExternalUrl": "",
564
842
  "externalUrl": "",
565
843
  "externalUrlFail": "",
566
844
  "externalUrlNotHttps": "",
567
- "fixDestination": "",
568
- "fixExternalUrl": "",
569
- "fixRecipients": "",
845
+ "noPublicUrl": "",
846
+ "privatePublicUrl": "",
847
+ "emptyVariant": "",
848
+ "variantsLoadFailed": "",
849
+ "serverSettingsLink": "",
570
850
  "fromDomain": "",
571
851
  "fromDomainFail": "",
572
852
  "fromDomainUnknown": "",
573
- "intro": "",
574
- "noPublicUrl": "",
575
- "privatePublicUrl": "",
576
- "recipientsChecking": "",
577
- "recipientsFail": "",
578
- "recipientsLoadFailed": "",
579
853
  "recipients_one": "",
580
854
  "recipients_other": "",
581
- "serverSettingsLink": "",
582
- "title": "",
583
- "variantsLoadFailed": ""
855
+ "recipientsFail": "",
856
+ "recipientsChecking": "",
857
+ "recipientsLoadFailed": "",
858
+ "dns": "",
859
+ "dnsLink": ""
584
860
  },
585
- "recipients": {
586
- "account": "",
587
- "addressLabel": "",
588
- "allServers": "",
589
- "badAddress": "",
590
- "contactEmailFor": "",
591
- "emptyDescription": "",
592
- "emptyTitle": "",
593
- "exclude": "",
594
- "excludeAction": "",
595
- "excludeSelected": "",
596
- "excludedAfterSave": "",
597
- "excludedCount": "",
598
- "excludedHelp": "",
599
- "extraAddress": "",
600
- "extraHelp": "",
601
- "extraTrigger": "",
602
- "fromUsername": "",
603
- "groupsNote": "",
604
- "include": "",
605
- "includeAction": "",
606
- "includeSelected": "",
607
- "includedAfterSave": "",
608
- "joinedSinceLastSend": "",
609
- "loadFailed": "",
610
- "manage": "",
611
- "manageHelp": "",
612
- "members": "",
613
- "membersHelp": "",
614
- "nameLabel": "",
615
- "namePlaceholder": "",
616
- "newSinceLastSend": "",
617
- "noAddress": "",
618
- "noAddressHelp": "",
619
- "noMatches": "",
620
- "notIncludable": "",
621
- "notIncludableHelp": "",
622
- "openUserPage": "",
623
- "ownerNote": "",
624
- "pasteAddresses": "",
625
- "reasons": {
626
- "banned": "",
627
- "excluded": "",
628
- "noServer": "",
629
- "pending": ""
630
- },
631
- "removeAddress": "",
632
- "saveEmail": "",
633
- "searchPlaceholder": "",
634
- "selectAll": "",
635
- "selectPerson": "",
636
- "selectedCount": "",
637
- "serverFilter": "",
638
- "suppressed": "",
639
- "suppressedCount": "",
640
- "suppressedHelp": "",
641
- "tabs": {
642
- "excluded": "",
643
- "noAddress": "",
644
- "receiving": "",
645
- "suppressed": ""
646
- },
647
- "title": "",
648
- "unknownMember": "",
649
- "willReceive": ""
861
+ "actions": {
862
+ "preview": "",
863
+ "test": "",
864
+ "send": "",
865
+ "more": "",
866
+ "testHint": "",
867
+ "sendHint": ""
650
868
  },
651
- "removeLibrary": "",
652
- "save": "",
653
- "saving": "",
654
- "schedule": "",
655
- "scheduleKind": "",
656
- "searchLibraries": "",
657
- "searchServers": "",
658
- "sections": {
659
- "description": "",
660
- "labels": {
661
- "mostWatched": "",
869
+ "preview": {
870
+ "variants": "",
871
+ "variantTab": "",
872
+ "title": "",
873
+ "draft": "",
874
+ "subjectLabel": "",
875
+ "window": "",
876
+ "windowSince": "",
877
+ "countsListed": {
662
878
  "movies": "",
663
- "music": "",
664
- "seasons": "",
665
- "shows": ""
879
+ "shows": "",
880
+ "albums": ""
666
881
  },
667
- "legend": "",
668
- "mostWatched": "",
669
- "mostWatchedHelp": "",
670
- "movies": "",
671
- "music": "",
672
- "musicHelp": "",
673
- "shows": "",
674
- "the": "",
675
- "units": {
676
- "albums": "",
677
- "mostPlayed": "",
678
- "movies": "",
679
- "seasonsEach": "",
680
- "shows": ""
882
+ "recipients": "",
883
+ "width": "",
884
+ "widths": {
885
+ "desktop": "",
886
+ "phone": ""
681
887
  },
682
- "upTo": ""
888
+ "images": "",
889
+ "imagesOn": "",
890
+ "imagesBlocked": "",
891
+ "imagesBlockedNote": "",
892
+ "linksNote": ""
893
+ },
894
+ "test": {
895
+ "title": "",
896
+ "description": "",
897
+ "variant": "",
898
+ "address": "",
899
+ "send": ""
683
900
  },
684
901
  "send": {
685
- "confirm": "",
686
- "nobody": "",
902
+ "title": "",
687
903
  "previewing": "",
688
- "sending": "",
689
904
  "summary": "",
690
- "title": "",
905
+ "nobody": "",
691
906
  "trimmed_one": "",
692
- "trimmed_other": ""
693
- },
694
- "sendNeedsSave": "",
695
- "senderName": "",
696
- "senderNameHelp": "",
697
- "senderNameRequiredMulti": "",
698
- "servers": "",
699
- "serversHelp": "",
700
- "serversSelected": "",
701
- "subject": "",
702
- "subjectHelp": "",
703
- "tabs": {
704
- "edit": "",
705
- "history": ""
706
- },
707
- "test": {
708
- "address": "",
709
- "description": "",
710
- "send": "",
711
- "title": "",
712
- "variant": ""
713
- },
714
- "time": "",
715
- "timezone": "",
716
- "timezoneHelp": "",
717
- "turnOnNow": "",
718
- "unknownLibrary": "",
719
- "unsaved": "",
720
- "variantHeading": "",
721
- "variantsNote": "",
722
- "windowHelp": {
723
- "fixed": "",
724
- "since_last_send": ""
725
- },
726
- "windowKind": "",
727
- "windowMax": "",
728
- "windowSentence": {
729
- "fallback": "",
730
- "fallbackLabel": "",
731
- "fixed": "",
732
- "fixedAfter": "",
733
- "fixedLabel": ""
734
- },
735
- "windows": {
736
- "fixed": "",
737
- "since_last_send": ""
907
+ "trimmed_other": "",
908
+ "confirm": "",
909
+ "sending": ""
738
910
  }
739
911
  },
740
- "empty": "",
741
- "emptyDescription": "",
742
- "enabled": "",
743
912
  "history": {
913
+ "empty": "",
914
+ "emptyDescription": "",
915
+ "loadFailed": "",
916
+ "trigger": {
917
+ "schedule": "",
918
+ "manual": "",
919
+ "test": ""
920
+ },
921
+ "window": "",
922
+ "recipients": "",
923
+ "recipientsEmpty": "",
924
+ "finished": "",
925
+ "open": "",
926
+ "page": "",
927
+ "sendTitle": "",
928
+ "status": {
929
+ "queued": "",
930
+ "sent": "",
931
+ "failed": "",
932
+ "suppressed": "",
933
+ "unknown": ""
934
+ },
744
935
  "attempts": "",
936
+ "unknownHelp": "",
937
+ "openSnapshot": "",
938
+ "variant": "",
939
+ "variantEmpty": "",
940
+ "openVariantSnapshot": "",
941
+ "snapshotTitle": "",
942
+ "pruned": "",
943
+ "retryFailed": ""
944
+ }
945
+ },
946
+ "email": {
947
+ "ownerOnly": "",
948
+ "branding": {
949
+ "title": "",
950
+ "description": "",
951
+ "logo": {
952
+ "label": "",
953
+ "tracearr": "",
954
+ "none": "",
955
+ "url": ""
956
+ },
957
+ "logoUrl": "",
958
+ "accent": "",
959
+ "accentPicker": "",
960
+ "footerText": "",
961
+ "footerTextHelp": "",
962
+ "postalAddress": "",
963
+ "postalAddressHelp": "",
964
+ "mailto": "",
965
+ "mailtoHelp": "",
966
+ "save": "",
967
+ "saving": ""
968
+ },
969
+ "suppressions": {
970
+ "title": "",
971
+ "globalNote": "",
745
972
  "empty": "",
746
973
  "emptyDescription": "",
747
- "finished": "",
748
- "loadFailed": "",
749
- "open": "",
750
- "openSnapshot": "",
751
- "openVariantSnapshot": "",
752
- "page": "",
753
- "pruned": "",
754
- "recipients": "",
755
- "recipientsEmpty": "",
756
- "retryFailed": "",
757
- "sendTitle": "",
758
- "snapshotTitle": "",
759
- "status": {
760
- "failed": "",
761
- "queued": "",
762
- "sent": "",
763
- "suppressed": "",
764
- "unknown": ""
765
- },
766
- "trigger": {
767
- "manual": "",
768
- "schedule": "",
769
- "test": ""
974
+ "add": "",
975
+ "addTitle": "",
976
+ "addDescription": "",
977
+ "address": "",
978
+ "addConfirm": "",
979
+ "reason": {
980
+ "unsubscribed": "",
981
+ "manual": ""
770
982
  },
771
- "unknownHelp": "",
772
- "variant": "",
773
- "variantEmpty": "",
774
- "window": ""
775
- },
776
- "lastSend": "",
777
- "neverSent": "",
778
- "new": "",
779
- "nextRun": "",
780
- "noDestinationDescription": "",
781
- "noDestinationHint": "",
782
- "noDestinationTitle": "",
783
- "noNextRun": "",
784
- "outcome": {
785
- "failed": "",
786
- "partial": "",
787
- "rendering": "",
788
- "sending": "",
789
- "sent": "",
790
- "skipped_empty": ""
791
- },
792
- "ownerOnly": "",
793
- "richText": {
794
- "bold": "",
795
- "bulletList": "",
796
- "counter": "",
797
- "italic": "",
798
- "link": "",
799
- "linkApply": "",
800
- "linkHref": ""
801
- },
802
- "rowActions": "",
803
- "schedule": {
804
- "cron": "",
805
- "daily": "",
806
- "inZone": "",
807
- "monthly": "",
808
- "weekly": ""
809
- },
810
- "sendNow": ""
983
+ "openSource": "",
984
+ "remove": "",
985
+ "removeTitle": "",
986
+ "removeDescription": ""
987
+ }
811
988
  },
812
- "plex": {
813
- "chooseServer": "모니터링할 Plex Media Server를 선택하세요",
814
- "selectServer": "서버 선택",
815
- "signInWithPlex": "Plex로 로그인",
816
- "signUpWithPlex": "Plex로 가입"
989
+ "shared": {
990
+ "timezone": {
991
+ "placeholder": "",
992
+ "search": "",
993
+ "empty": "",
994
+ "other": ""
995
+ }
817
996
  },
818
997
  "requests": {
819
- "confirmUnlink": {
820
- "body": "",
821
- "title": ""
822
- },
998
+ "label": "",
999
+ "link": "",
1000
+ "unlink": "",
1001
+ "syncNow": "",
1002
+ "enable": "",
1003
+ "disable": "",
1004
+ "paused": "",
1005
+ "menuLabel": "",
1006
+ "syncedAgo": "",
1007
+ "neverSynced": "",
823
1008
  "counts": {
824
1009
  "requests_one": "",
825
1010
  "requests_other": "",
@@ -828,195 +1013,37 @@
828
1013
  "unmatchedUsers_one": "",
829
1014
  "unmatchedUsers_other": ""
830
1015
  },
1016
+ "needsKey": "",
1017
+ "lastError": "",
1018
+ "lastErrorNoTime": "",
831
1019
  "dialog": {
1020
+ "titleLink": "",
1021
+ "titleEdit": "",
1022
+ "description": "",
1023
+ "url": "",
832
1024
  "apiKey": "",
833
1025
  "apiKeyHint": "",
834
1026
  "apiKeyKeep": "",
835
- "description": "",
1027
+ "showKey": "",
836
1028
  "hideKey": "",
1029
+ "test": "",
1030
+ "testing": "",
1031
+ "save": "",
1032
+ "saveHint": "",
837
1033
  "match": "",
838
1034
  "mismatch": "",
839
1035
  "mismatchIds": "",
840
- "mismatchOther": "",
841
- "save": "",
842
- "saveHint": "",
843
- "showKey": "",
844
- "test": "",
845
- "testing": "",
846
- "titleEdit": "",
847
- "titleLink": "",
848
- "url": ""
1036
+ "mismatchOther": ""
1037
+ },
1038
+ "confirmUnlink": {
1039
+ "title": "",
1040
+ "body": ""
849
1041
  },
850
- "disable": "",
851
- "enable": "",
852
- "label": "",
853
- "lastError": "",
854
- "lastErrorNoTime": "",
855
- "link": "",
856
- "menuLabel": "",
857
- "needsKey": "",
858
- "neverSynced": "",
859
- "paused": "",
860
- "syncNow": "",
861
- "syncedAgo": "",
862
1042
  "toast": {
863
- "failed": "",
864
- "removed": "",
865
1043
  "saved": "",
866
- "syncStarted": ""
867
- },
868
- "unlink": ""
869
- },
870
- "serverHealth": {
871
- "multipleUnreachable": "{{count}}개 서버에 연결할 수 없습니다: {{serverNames}}",
872
- "unreachable": "{{serverName}}에 연결할 수 없습니다"
873
- },
874
- "servers": {
875
- "addServer": "서버 추가",
876
- "addServerDialogDescOther": "Jellyfin 또는 Emby 서버를 연결하세요.",
877
- "addServerDialogDescPlex": "연결된 계정에서 Plex 서버를 선택하세요.",
878
- "added": "{{date}} 추가됨",
879
- "allFieldsRequired": "모든 항목을 입력해야 합니다",
880
- "allServersConnected": "모든 서버가 연결됨",
881
- "allServersConnectedDesc": "이 계정의 모든 서버가 이미 연결되어 있습니다.",
882
- "apiKeyHelp": "미디어 서버 대시보드의 API 키 또는 고급 설정에서 찾을 수 있습니다.",
883
- "apiKeyHelpEmby": "Emby 서버 > API 키에서 찾을 수 있습니다",
884
- "apiKeyHelpJellyfin": "Jellyfin 대시보드 > API 키에서 찾을 수 있습니다",
885
- "apiKeyPlaceholder": "API 키 입력",
886
- "checkingConnection": "연결 확인 중…",
887
- "chooseAccount": "계정 선택...",
888
- "connectServer": "서버 연결",
889
- "connecting": "연결 중...",
890
- "connectionFailed": "연결에 실패했습니다",
891
- "connectionSuccess": "연결되었습니다",
892
- "description": "연결된 Plex, Jellyfin, Emby 서버를 관리하세요",
893
- "discoveringConnections": "연결을 검색하는 중...",
894
- "discoveringServers": "사용 가능한 Plex 서버를 검색하는 중...",
895
- "editServer": "서버 수정",
896
- "editServerDesc": "서버 이름 또는 연결 URL을 업데이트하세요.",
897
- "loadingAccounts": "연결된 Plex 계정을 불러오는 중...",
898
- "noPlexAccountsLinked": "연결된 Plex 계정이 없습니다",
899
- "noPlexAccountsLinkedHint": "위에서 Plex 계정을 연결한 뒤 다시 돌아와 서버를 추가하세요.",
900
- "noServersConnected": "연결된 서버가 없습니다",
901
- "noServersConnectedHint": "Jellyfin 또는 Emby 서버를 연결하려면 \"서버 추가\"를 클릭하세요",
902
- "plexAccount": "Plex 계정",
903
- "plexServerPlaceholder": "내 Plex 서버",
904
- "plexServerUrlPlaceholder": "",
905
- "pluginUpdateAvailable": "플러그인 업데이트가 있습니다",
906
- "pluginVersion": "플러그인 v{{version}}",
907
- "pollingMode": "폴링",
908
- "posterSource": {
909
- "automatic": "자동(가장 최근 항목)",
910
- "description": "같은 콘텐츠가 여러 서버에 있으면 이 서버의 포스터를 사용합니다. 포스터가 없으면 가장 최근에 추가된 항목의 포스터를 사용합니다.",
911
- "emptyHint": "우선 포스터 출처를 선택하려면 서버를 추가하세요.",
912
- "label": "우선 포스터 출처",
913
- "ownerOnly": "",
914
- "title": "포스터 설정",
915
- "titleDesc": "같은 콘텐츠가 여러 서버에 있을 때 표시할 포스터의 서버를 선택합니다"
916
- },
917
- "publicUrl": "",
918
- "publicUrlHint": "",
919
- "realtimeActive": "실시간 업데이트 활성화됨",
920
- "realtimeDialog": {
921
- "autoDetectNote": "플러그인을 설치한 뒤 Jellyfin 또는 Emby를 반드시 다시 시작하세요. Tracearr는 다시 시작할 필요 없이 플러그인을 자동으로 감지합니다.",
922
- "close": "닫기",
923
- "copyUrl": "URL 복사",
924
- "embyDescription": "다음 폴링을 기다리지 않고 즉시 세션 업데이트를 받으려면 Tracearr SSE 플러그인을 설치하세요.",
925
- "embyReleasesUrl": "",
926
- "embyUpdateDescription": "새 플러그인 버전이 있습니다. 최신 릴리스 ZIP을 내려받아 Emby 플러그인 폴더의 DLL을 교체한 뒤 Emby를 다시 시작하세요.",
927
- "issueBlocked": "서버에는 플러그인이 설치되어 활성화된 것으로 표시되지만, Tracearr가 엔드포인트에서 404 응답을 받았습니다. 보통 리버스 프록시가 해당 경로를 차단할 때 발생합니다.",
928
- "issueMalfunctioned": "서버에서 플러그인을 불러오지 못했습니다. 플러그인이나 미디어 서버를 업데이트하면 대부분 해결됩니다.",
929
- "issueRestartRequired": "플러그인이 설치되었지만 활성화하려면 미디어 서버를 다시 시작해야 합니다.",
930
- "jellyfinDescription": "다음 폴링을 기다리지 않고 즉시 세션 업데이트를 받으려면 Tracearr SSE 플러그인을 설치하세요.",
931
- "jellyfinRepoUrl": "",
932
- "jellyfinUpdateDescription": "새 플러그인 버전이 있습니다. Jellyfin 대시보드에서 플러그인 > 카탈로그로 이동해 Tracearr SSE를 업데이트한 뒤 Jellyfin을 다시 시작하세요.",
933
- "openReleases": "릴리스 페이지 열기",
934
- "repositoryUrl": "저장소 URL",
935
- "title": "실시간 업데이트 활성화",
936
- "updateTitle": "Tracearr SSE 플러그인 업데이트"
937
- },
938
- "realtimeError": "실시간 연결 오류",
939
- "removeServer": "서버 제거",
940
- "removeServerConfirm": "이 서버를 제거할까요? 연결된 세션 데이터는 유지되지만, 이 서버의 새 세션은 더 이상 모니터링할 수 없습니다.",
941
- "reorder": "",
942
- "selectAccountHelp": "서버를 검색할 Plex 계정을 선택하세요.",
943
- "selectPlexAccount": "Plex 계정 선택",
944
- "serverColor": "서버 색상",
945
- "serverColorDesc": "여러 서버 보기에서 서버를 구분하는 데 사용됩니다",
946
- "serverName": "서버 이름",
947
- "serverNamePlaceholder": "내 미디어 서버",
948
- "serverType": "서버 유형",
949
- "serverUrl": "서버 URL",
950
- "serverUrlHelp": "Jellyfin 또는 Emby 서버에 직접 연결되는 URL입니다. 안정성을 위해 IP:포트를 사용하는 것이 좋습니다.",
951
- "serverUrlHelpEmby": "Emby 서버에 접근할 수 있는 URL입니다",
952
- "serverUrlHelpJellyfin": "Jellyfin 서버에 접근할 수 있는 URL입니다",
953
- "serverUrlPlaceholder": "",
954
- "setupRealtime": "실시간 업데이트 설정",
955
- "syncInterval": "동기화 간격",
956
- "testConnection": "연결 테스트",
957
- "title": "연결된 서버",
958
- "updateHint": "또는 아래 업데이트를 클릭해 이름 변경만 저장하세요.",
959
- "updating": "업데이트 중...",
960
- "version": {
961
- "installed": "버전 {{version}}",
962
- "upToDate": "최신 버전",
963
- "updateAvailable": "{{version}} 업데이트 가능"
964
- }
965
- },
966
- "shared": {
967
- "timezone": {
968
- "empty": "",
969
- "other": "",
970
- "placeholder": "",
971
- "search": ""
1044
+ "removed": "",
1045
+ "syncStarted": "",
1046
+ "failed": ""
972
1047
  }
973
- },
974
- "tailscale": {
975
- "authorize": "Tailscale에서 승인",
976
- "awaitingAuth": "승인 대기 중...",
977
- "connected": "Tailscale이 연결되었습니다. Tracearr 인스턴스를 tailnet에서 사용할 수 있습니다.",
978
- "description": "",
979
- "disable": "Tailscale 비활성화",
980
- "disableConfirmDescription": "Tracearr가 tailnet에서 연결 해제됩니다. 다시 승인하지 않고도 나중에 다시 활성화할 수 있습니다.",
981
- "disableConfirmTitle": "Tailscale을 비활성화할까요?",
982
- "disabledDescription": "Tailscale을 활성화해 Tracearr를 개인 tailnet에 연결하세요. 포트 포워딩이나 리버스 프록시가 필요 없습니다.",
983
- "dnsName": "DNS 이름",
984
- "enable": "Tailscale 활성화",
985
- "exitNodeNone": "없음",
986
- "exitNodeOffline": "(오프라인)",
987
- "hideLogs": "로그 숨기기",
988
- "hostname": "호스트 이름",
989
- "hostnameHint": "Tailnet에서 이 기기를 식별할 사용자 지정 이름입니다. 문자, 숫자, 하이픈만 사용할 수 있습니다.",
990
- "hostnameLabel": "기기 호스트 이름",
991
- "noLogs": "표시할 로그 출력이 없습니다.",
992
- "notAvailable": "Tailscale 바이너리를 찾을 수 없습니다. 이 기능은 공식 Docker 이미지에서 실행할 때만 사용할 수 있습니다.",
993
- "resetConfirmDescription": "Tracearr가 tailnet에서 연결 해제되고 기기 Id가 제거됩니다. 다시 활성화하려면 다시 승인해야 합니다.",
994
- "resetConfirmTitle": "Tailscale을 초기화할까요?",
995
- "showLogs": "로그 보기",
996
- "starting": "Tailscale 시작 중...",
997
- "stopping": "Tailscale 중지 중...",
998
- "tailnetUrl": "",
999
- "title": "",
1000
- "toast": {
1001
- "disableFailed": "Tailscale을 비활성화하지 못했습니다",
1002
- "disabled": "Tailscale이 비활성화되었습니다.",
1003
- "enableFailed": "Tailscale을 활성화하지 못했습니다",
1004
- "exitNodeFailed": "Exit node를 설정하지 못했습니다",
1005
- "exitNodeSet": "Exit node가 업데이트되었습니다.",
1006
- "reset": "Tailscale이 초기화되었습니다.",
1007
- "resetFailed": "Tailscale을 초기화하지 못했습니다"
1008
- },
1009
- "unknownError": "알 수 없는 오류가 발생했습니다."
1010
- },
1011
- "title": "설정",
1012
- "update": {
1013
- "betaUpdate": "베타 업데이트",
1014
- "newVersion": "새 버전",
1015
- "pullInstructions": "pull 후 업데이트를 적용하려면 컨테이너를 다시 시작하세요.",
1016
- "releaseNotes": "릴리스 노트",
1017
- "stableRelease": "안정 릴리스",
1018
- "title": "업데이트 사용 가능",
1019
- "updateCommand": "업데이트 명령",
1020
- "versionAvailable": "{{version}} 사용 가능"
1021
1048
  }
1022
1049
  }