@tracearr/translations 2.1.0-beta.7 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (301) hide show
  1. package/dist/config.d.ts +4 -2
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.mobile.d.ts +4 -2
  4. package/dist/config.mobile.d.ts.map +1 -1
  5. package/dist/locales/af-ZA/common.json +251 -251
  6. package/dist/locales/af-ZA/mobile.json +125 -125
  7. package/dist/locales/af-ZA/notifications.json +226 -226
  8. package/dist/locales/af-ZA/pages.json +69 -67
  9. package/dist/locales/af-ZA/settings.json +446 -446
  10. package/dist/locales/ar-SA/common.json +251 -251
  11. package/dist/locales/ar-SA/mobile.json +125 -125
  12. package/dist/locales/ar-SA/notifications.json +226 -226
  13. package/dist/locales/ar-SA/pages.json +69 -67
  14. package/dist/locales/ar-SA/settings.json +446 -446
  15. package/dist/locales/ca-ES/common.json +251 -251
  16. package/dist/locales/ca-ES/mobile.json +125 -125
  17. package/dist/locales/ca-ES/notifications.json +226 -226
  18. package/dist/locales/ca-ES/pages.json +69 -67
  19. package/dist/locales/ca-ES/settings.json +446 -446
  20. package/dist/locales/cs-CZ/common.json +251 -251
  21. package/dist/locales/cs-CZ/mobile.json +125 -125
  22. package/dist/locales/cs-CZ/notifications.json +226 -226
  23. package/dist/locales/cs-CZ/pages.json +69 -67
  24. package/dist/locales/cs-CZ/settings.json +446 -446
  25. package/dist/locales/da-DK/common.json +251 -251
  26. package/dist/locales/da-DK/mobile.json +125 -125
  27. package/dist/locales/da-DK/notifications.json +226 -226
  28. package/dist/locales/da-DK/pages.json +69 -67
  29. package/dist/locales/da-DK/settings.json +446 -446
  30. package/dist/locales/de-DE/common.json +251 -251
  31. package/dist/locales/de-DE/mobile.json +125 -125
  32. package/dist/locales/de-DE/notifications.json +226 -226
  33. package/dist/locales/de-DE/pages.json +69 -67
  34. package/dist/locales/de-DE/settings.json +446 -446
  35. package/dist/locales/el-GR/common.json +251 -251
  36. package/dist/locales/el-GR/mobile.json +125 -125
  37. package/dist/locales/el-GR/notifications.json +226 -226
  38. package/dist/locales/el-GR/pages.json +69 -67
  39. package/dist/locales/el-GR/settings.json +446 -446
  40. package/dist/locales/en/pages.json +2 -1
  41. package/dist/locales/en-US/common.json +251 -251
  42. package/dist/locales/en-US/mobile.json +125 -125
  43. package/dist/locales/en-US/notifications.json +224 -224
  44. package/dist/locales/en-US/pages.json +57 -55
  45. package/dist/locales/en-US/settings.json +446 -446
  46. package/dist/locales/es-ES/common.json +251 -251
  47. package/dist/locales/es-ES/mobile.json +125 -125
  48. package/dist/locales/es-ES/notifications.json +226 -226
  49. package/dist/locales/es-ES/pages.json +69 -67
  50. package/dist/locales/es-ES/settings.json +446 -446
  51. package/dist/locales/fi-FI/common.json +251 -251
  52. package/dist/locales/fi-FI/mobile.json +125 -125
  53. package/dist/locales/fi-FI/notifications.json +226 -226
  54. package/dist/locales/fi-FI/pages.json +69 -67
  55. package/dist/locales/fi-FI/settings.json +446 -446
  56. package/dist/locales/fr-FR/common.json +251 -251
  57. package/dist/locales/fr-FR/notifications.json +226 -226
  58. package/dist/locales/fr-FR/pages.json +69 -67
  59. package/dist/locales/fr-FR/settings.json +446 -446
  60. package/dist/locales/he-IL/common.json +251 -251
  61. package/dist/locales/he-IL/mobile.json +125 -125
  62. package/dist/locales/he-IL/notifications.json +226 -226
  63. package/dist/locales/he-IL/pages.json +69 -67
  64. package/dist/locales/he-IL/settings.json +446 -446
  65. package/dist/locales/hu-HU/common.json +251 -251
  66. package/dist/locales/hu-HU/mobile.json +125 -125
  67. package/dist/locales/hu-HU/notifications.json +226 -226
  68. package/dist/locales/hu-HU/pages.json +69 -67
  69. package/dist/locales/hu-HU/settings.json +446 -446
  70. package/dist/locales/it-IT/common.json +251 -251
  71. package/dist/locales/it-IT/mobile.json +125 -125
  72. package/dist/locales/it-IT/notifications.json +226 -226
  73. package/dist/locales/it-IT/pages.json +69 -67
  74. package/dist/locales/it-IT/settings.json +446 -446
  75. package/dist/locales/ja-JP/common.json +251 -251
  76. package/dist/locales/ja-JP/mobile.json +125 -125
  77. package/dist/locales/ja-JP/notifications.json +226 -226
  78. package/dist/locales/ja-JP/pages.json +69 -67
  79. package/dist/locales/ja-JP/settings.json +446 -446
  80. package/dist/locales/ko-KR/common.json +251 -251
  81. package/dist/locales/ko-KR/mobile.json +125 -125
  82. package/dist/locales/ko-KR/notifications.json +226 -226
  83. package/dist/locales/ko-KR/pages.json +69 -67
  84. package/dist/locales/ko-KR/settings.json +446 -446
  85. package/dist/locales/nl-NL/common.json +251 -251
  86. package/dist/locales/nl-NL/notifications.json +226 -226
  87. package/dist/locales/nl-NL/pages.json +69 -67
  88. package/dist/locales/no-NO/common.json +251 -251
  89. package/dist/locales/no-NO/mobile.json +125 -125
  90. package/dist/locales/no-NO/notifications.json +226 -226
  91. package/dist/locales/no-NO/pages.json +69 -67
  92. package/dist/locales/no-NO/settings.json +446 -446
  93. package/dist/locales/pl-PL/common.json +251 -251
  94. package/dist/locales/pl-PL/mobile.json +125 -125
  95. package/dist/locales/pl-PL/notifications.json +226 -226
  96. package/dist/locales/pl-PL/pages.json +69 -67
  97. package/dist/locales/pl-PL/settings.json +446 -446
  98. package/dist/locales/pt-BR/common.json +251 -251
  99. package/dist/locales/pt-BR/mobile.json +125 -125
  100. package/dist/locales/pt-BR/notifications.json +226 -226
  101. package/dist/locales/pt-BR/pages.json +69 -67
  102. package/dist/locales/pt-BR/settings.json +446 -446
  103. package/dist/locales/pt-PT/common.json +251 -251
  104. package/dist/locales/pt-PT/mobile.json +125 -125
  105. package/dist/locales/pt-PT/notifications.json +226 -226
  106. package/dist/locales/pt-PT/pages.json +69 -67
  107. package/dist/locales/pt-PT/settings.json +446 -446
  108. package/dist/locales/ro-RO/common.json +251 -251
  109. package/dist/locales/ro-RO/mobile.json +125 -125
  110. package/dist/locales/ro-RO/notifications.json +226 -226
  111. package/dist/locales/ro-RO/pages.json +69 -67
  112. package/dist/locales/ro-RO/settings.json +446 -446
  113. package/dist/locales/ru-RU/common.json +251 -251
  114. package/dist/locales/ru-RU/mobile.json +125 -125
  115. package/dist/locales/ru-RU/notifications.json +226 -226
  116. package/dist/locales/ru-RU/pages.json +69 -67
  117. package/dist/locales/ru-RU/settings.json +446 -446
  118. package/dist/locales/sr-SP/common.json +251 -251
  119. package/dist/locales/sr-SP/mobile.json +125 -125
  120. package/dist/locales/sr-SP/notifications.json +226 -226
  121. package/dist/locales/sr-SP/pages.json +69 -67
  122. package/dist/locales/sr-SP/settings.json +446 -446
  123. package/dist/locales/sv-SE/common.json +251 -251
  124. package/dist/locales/sv-SE/mobile.json +125 -125
  125. package/dist/locales/sv-SE/notifications.json +226 -226
  126. package/dist/locales/sv-SE/pages.json +69 -67
  127. package/dist/locales/sv-SE/settings.json +446 -446
  128. package/dist/locales/tr-TR/common.json +251 -251
  129. package/dist/locales/tr-TR/mobile.json +125 -125
  130. package/dist/locales/tr-TR/notifications.json +226 -226
  131. package/dist/locales/tr-TR/pages.json +69 -67
  132. package/dist/locales/tr-TR/settings.json +446 -446
  133. package/dist/locales/uk-UA/common.json +251 -251
  134. package/dist/locales/uk-UA/mobile.json +125 -125
  135. package/dist/locales/uk-UA/notifications.json +226 -226
  136. package/dist/locales/uk-UA/pages.json +69 -67
  137. package/dist/locales/uk-UA/settings.json +446 -446
  138. package/dist/locales/vi-VN/common.json +251 -251
  139. package/dist/locales/vi-VN/mobile.json +125 -125
  140. package/dist/locales/vi-VN/notifications.json +226 -226
  141. package/dist/locales/vi-VN/pages.json +69 -67
  142. package/dist/locales/vi-VN/settings.json +446 -446
  143. package/dist/locales/zh-CN/common.json +251 -251
  144. package/dist/locales/zh-CN/mobile.json +125 -125
  145. package/dist/locales/zh-CN/notifications.json +226 -226
  146. package/dist/locales/zh-CN/pages.json +69 -67
  147. package/dist/locales/zh-CN/settings.json +446 -446
  148. package/dist/locales/zh-TW/common.json +251 -251
  149. package/dist/locales/zh-TW/mobile.json +125 -125
  150. package/dist/locales/zh-TW/notifications.json +226 -226
  151. package/dist/locales/zh-TW/pages.json +69 -67
  152. package/dist/locales/zh-TW/settings.json +446 -446
  153. package/package.json +1 -1
  154. package/src/locales/af-ZA/common.json +251 -251
  155. package/src/locales/af-ZA/mobile.json +125 -125
  156. package/src/locales/af-ZA/notifications.json +226 -226
  157. package/src/locales/af-ZA/pages.json +69 -67
  158. package/src/locales/af-ZA/settings.json +446 -446
  159. package/src/locales/ar-SA/common.json +251 -251
  160. package/src/locales/ar-SA/mobile.json +125 -125
  161. package/src/locales/ar-SA/notifications.json +226 -226
  162. package/src/locales/ar-SA/pages.json +69 -67
  163. package/src/locales/ar-SA/settings.json +446 -446
  164. package/src/locales/ca-ES/common.json +251 -251
  165. package/src/locales/ca-ES/mobile.json +125 -125
  166. package/src/locales/ca-ES/notifications.json +226 -226
  167. package/src/locales/ca-ES/pages.json +69 -67
  168. package/src/locales/ca-ES/settings.json +446 -446
  169. package/src/locales/cs-CZ/common.json +251 -251
  170. package/src/locales/cs-CZ/mobile.json +125 -125
  171. package/src/locales/cs-CZ/notifications.json +226 -226
  172. package/src/locales/cs-CZ/pages.json +69 -67
  173. package/src/locales/cs-CZ/settings.json +446 -446
  174. package/src/locales/da-DK/common.json +251 -251
  175. package/src/locales/da-DK/mobile.json +125 -125
  176. package/src/locales/da-DK/notifications.json +226 -226
  177. package/src/locales/da-DK/pages.json +69 -67
  178. package/src/locales/da-DK/settings.json +446 -446
  179. package/src/locales/de-DE/common.json +251 -251
  180. package/src/locales/de-DE/mobile.json +125 -125
  181. package/src/locales/de-DE/notifications.json +226 -226
  182. package/src/locales/de-DE/pages.json +69 -67
  183. package/src/locales/de-DE/settings.json +446 -446
  184. package/src/locales/el-GR/common.json +251 -251
  185. package/src/locales/el-GR/mobile.json +125 -125
  186. package/src/locales/el-GR/notifications.json +226 -226
  187. package/src/locales/el-GR/pages.json +69 -67
  188. package/src/locales/el-GR/settings.json +446 -446
  189. package/src/locales/en/pages.json +2 -1
  190. package/src/locales/en-US/common.json +251 -251
  191. package/src/locales/en-US/mobile.json +125 -125
  192. package/src/locales/en-US/notifications.json +224 -224
  193. package/src/locales/en-US/pages.json +57 -55
  194. package/src/locales/en-US/settings.json +446 -446
  195. package/src/locales/es-ES/common.json +251 -251
  196. package/src/locales/es-ES/mobile.json +125 -125
  197. package/src/locales/es-ES/notifications.json +226 -226
  198. package/src/locales/es-ES/pages.json +69 -67
  199. package/src/locales/es-ES/settings.json +446 -446
  200. package/src/locales/fi-FI/common.json +251 -251
  201. package/src/locales/fi-FI/mobile.json +125 -125
  202. package/src/locales/fi-FI/notifications.json +226 -226
  203. package/src/locales/fi-FI/pages.json +69 -67
  204. package/src/locales/fi-FI/settings.json +446 -446
  205. package/src/locales/fr-FR/common.json +251 -251
  206. package/src/locales/fr-FR/notifications.json +226 -226
  207. package/src/locales/fr-FR/pages.json +69 -67
  208. package/src/locales/fr-FR/settings.json +446 -446
  209. package/src/locales/he-IL/common.json +251 -251
  210. package/src/locales/he-IL/mobile.json +125 -125
  211. package/src/locales/he-IL/notifications.json +226 -226
  212. package/src/locales/he-IL/pages.json +69 -67
  213. package/src/locales/he-IL/settings.json +446 -446
  214. package/src/locales/hu-HU/common.json +251 -251
  215. package/src/locales/hu-HU/mobile.json +125 -125
  216. package/src/locales/hu-HU/notifications.json +226 -226
  217. package/src/locales/hu-HU/pages.json +69 -67
  218. package/src/locales/hu-HU/settings.json +446 -446
  219. package/src/locales/it-IT/common.json +251 -251
  220. package/src/locales/it-IT/mobile.json +125 -125
  221. package/src/locales/it-IT/notifications.json +226 -226
  222. package/src/locales/it-IT/pages.json +69 -67
  223. package/src/locales/it-IT/settings.json +446 -446
  224. package/src/locales/ja-JP/common.json +251 -251
  225. package/src/locales/ja-JP/mobile.json +125 -125
  226. package/src/locales/ja-JP/notifications.json +226 -226
  227. package/src/locales/ja-JP/pages.json +69 -67
  228. package/src/locales/ja-JP/settings.json +446 -446
  229. package/src/locales/ko-KR/common.json +251 -251
  230. package/src/locales/ko-KR/mobile.json +125 -125
  231. package/src/locales/ko-KR/notifications.json +226 -226
  232. package/src/locales/ko-KR/pages.json +69 -67
  233. package/src/locales/ko-KR/settings.json +446 -446
  234. package/src/locales/nl-NL/common.json +251 -251
  235. package/src/locales/nl-NL/notifications.json +226 -226
  236. package/src/locales/nl-NL/pages.json +69 -67
  237. package/src/locales/no-NO/common.json +251 -251
  238. package/src/locales/no-NO/mobile.json +125 -125
  239. package/src/locales/no-NO/notifications.json +226 -226
  240. package/src/locales/no-NO/pages.json +69 -67
  241. package/src/locales/no-NO/settings.json +446 -446
  242. package/src/locales/pl-PL/common.json +251 -251
  243. package/src/locales/pl-PL/mobile.json +125 -125
  244. package/src/locales/pl-PL/notifications.json +226 -226
  245. package/src/locales/pl-PL/pages.json +69 -67
  246. package/src/locales/pl-PL/settings.json +446 -446
  247. package/src/locales/pt-BR/common.json +251 -251
  248. package/src/locales/pt-BR/mobile.json +125 -125
  249. package/src/locales/pt-BR/notifications.json +226 -226
  250. package/src/locales/pt-BR/pages.json +69 -67
  251. package/src/locales/pt-BR/settings.json +446 -446
  252. package/src/locales/pt-PT/common.json +251 -251
  253. package/src/locales/pt-PT/mobile.json +125 -125
  254. package/src/locales/pt-PT/notifications.json +226 -226
  255. package/src/locales/pt-PT/pages.json +69 -67
  256. package/src/locales/pt-PT/settings.json +446 -446
  257. package/src/locales/ro-RO/common.json +251 -251
  258. package/src/locales/ro-RO/mobile.json +125 -125
  259. package/src/locales/ro-RO/notifications.json +226 -226
  260. package/src/locales/ro-RO/pages.json +69 -67
  261. package/src/locales/ro-RO/settings.json +446 -446
  262. package/src/locales/ru-RU/common.json +251 -251
  263. package/src/locales/ru-RU/mobile.json +125 -125
  264. package/src/locales/ru-RU/notifications.json +226 -226
  265. package/src/locales/ru-RU/pages.json +69 -67
  266. package/src/locales/ru-RU/settings.json +446 -446
  267. package/src/locales/sr-SP/common.json +251 -251
  268. package/src/locales/sr-SP/mobile.json +125 -125
  269. package/src/locales/sr-SP/notifications.json +226 -226
  270. package/src/locales/sr-SP/pages.json +69 -67
  271. package/src/locales/sr-SP/settings.json +446 -446
  272. package/src/locales/sv-SE/common.json +251 -251
  273. package/src/locales/sv-SE/mobile.json +125 -125
  274. package/src/locales/sv-SE/notifications.json +226 -226
  275. package/src/locales/sv-SE/pages.json +69 -67
  276. package/src/locales/sv-SE/settings.json +446 -446
  277. package/src/locales/tr-TR/common.json +251 -251
  278. package/src/locales/tr-TR/mobile.json +125 -125
  279. package/src/locales/tr-TR/notifications.json +226 -226
  280. package/src/locales/tr-TR/pages.json +69 -67
  281. package/src/locales/tr-TR/settings.json +446 -446
  282. package/src/locales/uk-UA/common.json +251 -251
  283. package/src/locales/uk-UA/mobile.json +125 -125
  284. package/src/locales/uk-UA/notifications.json +226 -226
  285. package/src/locales/uk-UA/pages.json +69 -67
  286. package/src/locales/uk-UA/settings.json +446 -446
  287. package/src/locales/vi-VN/common.json +251 -251
  288. package/src/locales/vi-VN/mobile.json +125 -125
  289. package/src/locales/vi-VN/notifications.json +226 -226
  290. package/src/locales/vi-VN/pages.json +69 -67
  291. package/src/locales/vi-VN/settings.json +446 -446
  292. package/src/locales/zh-CN/common.json +251 -251
  293. package/src/locales/zh-CN/mobile.json +125 -125
  294. package/src/locales/zh-CN/notifications.json +226 -226
  295. package/src/locales/zh-CN/pages.json +69 -67
  296. package/src/locales/zh-CN/settings.json +446 -446
  297. package/src/locales/zh-TW/common.json +251 -251
  298. package/src/locales/zh-TW/mobile.json +125 -125
  299. package/src/locales/zh-TW/notifications.json +226 -226
  300. package/src/locales/zh-TW/pages.json +69 -67
  301. package/src/locales/zh-TW/settings.json +446 -446
@@ -1,501 +1,501 @@
1
1
  {
2
- "accessControl": {
3
- "allowGuestAccess": "Salli Vieraiden Käyttö",
4
- "allowGuestAccessDesc": "Kun poistettu käytöstä, vain palvelimen omistaja voi kirjautua tracearr:iin",
5
- "description": "Määritä kuka voi käyttää Tracearria",
6
- "singleOwnerNote": "Huomautus: Kun vierailijoiden käyttö on poistettu käytöstä, vain palvelimen omistaja voi kirjautua sisään. Kaikki muut käyttäjät näkevät \"Pääsy estetty\" -viestin.",
7
- "title": "Käyttöoikeuksien Hallinta"
8
- },
9
- "account": {
10
- "createAccount": "Luo Tili",
11
- "createYourAccount": "Luo tilisi päästäksesi alkuun",
12
- "displayName": "Näytön Nimi",
13
- "email": "Sähköposti",
14
- "password": "Salasana",
15
- "signInToAccount": "Kirjaudu sisään tilillesi",
16
- "useLocalAccount": "Käytä paikallista tiliä sen sijaan"
17
- },
18
- "advanced": {
19
- "connectionScenarios": "Yhteyden Skenaariot",
20
- "externalUrl": "Ulkoinen URL",
21
- "reverseProxy": "Käänteinen Välityspalvelin",
22
- "title": "Edistyneet Asetukset",
23
- "trustProxy": "Luota Välityspalvelimen Otsikkoihin"
24
- },
25
- "backup": {
26
- "actions": "Toiminnot",
27
- "backToBackups": "Takaisin varmuuskopioihin",
28
- "backupHistory": "Varmuuskopioinnin Historia",
29
- "createBackup": "Luo Varmuuskopio",
30
- "creating": "Luodaan varmuuskopiota...",
31
- "databaseSize": "Current database size: {{size}}",
32
- "date": "Päivämäärä",
33
- "dayFri": "Perjantai",
34
- "dayMon": "Maanantai",
35
- "daySat": "Lauantai",
36
- "daySun": "Sunnuntai",
37
- "dayThu": "Torstai",
38
- "dayTue": "Tiistai",
39
- "dayWed": "Keskiviikko",
40
- "deleteConfirmDescription": "Oletko varma, että haluat poistaa tämän varmuuskopion? Tätä ei voi perua.",
41
- "deleteConfirmTitle": "Poista Varmuuskopio",
42
- "description": "Varmuuskopioi ja palauta Tracearr tiedot",
43
- "filename": "Tiedostonimi",
44
- "freeSpace": "Varmuuskopiointihakemiston vapaa tila: {{size}}",
45
- "lowDiskSpace": "Alhainen levytila — varmuuskopiot ja palautukset vaativat vähintään kaksi kertaa tietokannan koko vapaassa tilassa.",
46
- "noBackups": "Ei vielä varmuuskopioita. Luo ensimmäinen varmuuskopiosi yllä.",
47
- "restore": {
48
- "cannotRestore": "Palautus edellyttää PostgreSQL superuser oikeuksia. Varmista, että tietokannan käyttäjällä on pääkäyttäjän oikeudet ja yritä uudelleen.",
49
- "complete": "Palautus suoritettu onnistuneesti. Sivu päivittyy pian.",
50
- "confirm": "Aloita Palautus",
51
- "confirmLabel": "Ymmärrän, että tämä korvaa kaikki tiedot",
52
- "databaseSize": "Tietokannan Koko",
53
- "failed": "Palautus epäonnistui",
54
- "libraryItems": "Kirjaston Nimikkeet",
55
- "pgVersionMismatch": "Backup was created on PostgreSQL {{backupVersion}} but this server runs PostgreSQL {{serverVersion}}. Restoring a dump from a newer PostgreSQL version is not supported.",
56
- "rules": "Säännöt",
57
- "selectedBackup": "Valittu Varmuuskopio",
58
- "servers": "Palvelimet",
59
- "sessions": "Istunnot",
60
- "tables": "Taulukot",
61
- "title": "Palauta Varmuuskopio",
62
- "tsVersionMismatch": "Backup was created with TimescaleDB {{backupVersion}} but this server only supports up to TimescaleDB {{serverVersion}}.",
63
- "users": "Käyttäjät",
64
- "warning": "Palautus korvaa kaikki olemassa olevat tiedot. Sinun täytyy kirjautua uudelleen palautuksen jälkeen."
65
- },
66
- "restoreAction": "Palauta",
67
- "retentionCount": "Säilytä Viimeinen",
68
- "retentionSuffix": "ajoitetut varmuuskopiot",
69
- "schedule": "Ajoitetut Varmuuskopiot",
70
- "scheduleDaily": "Päivittäin",
71
- "scheduleDayOfMonth": "Kuukauden päivä",
72
- "scheduleDayOfMonthHint": "Kuukausia, joilla on vähemmän päiviä, varmuuskopio toimii viimeisenä päivänä.",
73
- "scheduleDayOfWeek": "Viikon päivä",
74
- "scheduleDisabled": "Pois Käytöstä",
75
- "scheduleMonthly": "Kuukausittain",
76
- "scheduleTime": "Aika ({{timezone}})",
77
- "scheduleType": "Aikataulu",
78
- "scheduleWeekly": "Viikoittain",
79
- "size": "Koko",
80
- "title": "Varmuuskopio",
81
- "toast": {
82
- "backupCreateFailed": "Varmuuskopion luonti epäonnistui",
83
- "backupCreated": "Varmuuskopio luotu onnistuneesti",
84
- "backupDeleteFailed": "Varmuuskopion poistaminen epäonnistui",
85
- "backupDeleted": "Varmuuskopiointi poistettu",
86
- "backupUploadFailed": "Varmuuskopion lataaminen epäonnistui",
87
- "backupUploaded": "Varmuuskopiointi ladattu onnistuneesti",
88
- "restoreStartFailed": "Palautuksen aloittaminen epäonnistui",
89
- "restoreStarted": "Palautus aloitettu",
90
- "scheduleError": "Varmuuskopioinnin aikataulun tallennus epäonnistui",
91
- "scheduleSaved": "Varmuuskopiointi tallennettu"
92
- },
93
- "type": "Tyyppi",
94
- "typeManual": "Manuaalinen",
95
- "typeScheduled": "Ajoitettu",
96
- "typeUploaded": "Ladattu",
97
- "uploadBackup": "Lataa Varmuuskopio",
98
- "uploading": "Lähetetään...",
99
- "version": "Versio"
2
+ "title": "Asetukset",
3
+ "tabs": {
4
+ "general": "Yleiset",
5
+ "servers": "Palvelimet",
6
+ "notifications": "Ilmoitukset",
7
+ "mobile": "Mobiili Sovellus",
8
+ "tailscale": "Tailscale",
9
+ "import": "Tuo",
10
+ "advanced": "Lisäasetukset",
11
+ "jobs": "Työt",
12
+ "accessControl": "Käyttöoikeuksien Hallinta",
13
+ "backup": "Varmuuskopio"
100
14
  },
101
15
  "general": {
102
- "accentColor": "Korostettu Väri",
103
- "apiDocs": "API Docs",
104
- "apiKeyDesc": "Pääsy Tracearr API kolmannen osapuolen integraatioita, kuten Homarr, Home Assistant, jne.",
105
- "apiKeyReadAccess": "Sinun API avain myöntää täyden lukemisen pääsyn Tracearr tietoja.",
106
- "apiRateLimit": "API Rate Limit",
107
- "apiRateLimitDesc": "Maximum public API requests per minute per key. Restart required to apply.",
108
- "apiRateLimitSuffix": "/min",
16
+ "title": "Yleiset Asetukset",
17
+ "unitSystem": "Yksikkö Järjestelmä",
18
+ "metric": "Metrinen (km, km/h)",
19
+ "imperial": "Imperiaalinen (mi, mph)",
20
+ "timezone": "Timezone",
21
+ "primaryAuth": "Ensisijainen Todennusmenetelmä",
22
+ "localAccount": "Paikallinen Tili",
23
+ "plexAccount": "Plex Tili",
24
+ "language": "Kieli",
25
+ "languageDescription": "Valitse haluamasi näytön kieli.",
26
+ "helpTranslate": "Auta kääntämään Tracearr",
27
+ "timeFormat": "Ajan Muoto",
28
+ "timeFormatDescription": "Valitse, miten ajat näytetään.",
29
+ "timeFormat12h": "12-tuntinen (1:30 PM)",
30
+ "timeFormat24h": "24-tuntinen (13:30)",
109
31
  "appearance": "Ulkoasu",
110
32
  "appearanceDesc": "Mukauta Tracearrin ulkoasua ja tunnelmaa",
33
+ "theme": "Teema",
34
+ "accentColor": "Korostettu Väri",
35
+ "default": "(oletus)",
36
+ "cyanDefault": "* Syaani on oletuksena aksentti väri",
37
+ "themeLight": "Vaalea",
38
+ "themeDark": "Tumma",
39
+ "themeSystem": "Järjestelmä",
111
40
  "application": "Sovellus",
112
41
  "applicationDesc": "Määritä sovelluksen perusasetukset",
113
- "copyToClipboard": "Kopioi leikepöydälle",
114
- "cyanDefault": "* Syaani on oletuksena aksentti väri",
115
- "default": "(oletus)",
116
- "detect": "Tunnista",
42
+ "unitSystemDesc": "Valitse, miten etäisyydet ja nopeudet näytetään",
43
+ "sessionSync": "Istunnon Synkronointi",
44
+ "sessionSyncDesc": "Ota istunnon seuranta käyttöön mediasoittimillasi",
45
+ "syncInterval": "Synkronoinnin Aikaväli",
46
+ "syncIntervalDesc": "Kyselytaajuus Jellyfini/embyn osalta (5–300 sekuntia)",
47
+ "syncIntervalSuffix": "sek",
48
+ "plexSseNote": "Plex käyttää Server-Sent Events (SSE) lähes pikapäivityksiä – ei kyselyä.",
49
+ "jellyfinPollingNote": "Jellyfin/Emby ovat haastateltuina edellä mainittuun aikaan.",
117
50
  "enhancedGeoIP": "Parannettu GeoIP Haku",
118
51
  "enhancedGeoIPDesc": "Käytä Plexin GeoIP palvelua tarkempien sijaintitietojen saamiseksi. Kun käytössä, IP-osoitteet lähetetään plexiin. v haku. Paikallinen MaxMind tietokantaa käytetään fallback.",
119
52
  "externalAccess": "Ulkoinen Käyttöoikeus",
120
53
  "externalAccessDesc": "Määritä kuinka ulkoiset laitteet (kuten mobiilisovellukset) yhdistä palvelimeen",
121
54
  "externalUrl": "Ulkoinen URL",
122
- "externalUrlDesc": "URL, jota ulkoisten laitteiden tulisi käyttää päästäkseen tälle palvelimelle. Käytetään QR-koodeihin ja mobiilisovellusten parittamiseen.",
123
55
  "externalUrlPlaceholder": "https://tracearr.example.com",
124
- "generateApiKeyPrompt": "Luo API-avain ulkoisen integraation mahdollistamiseksi.",
125
- "generateKey": "Luo Avain",
126
- "helpTranslate": "Auta kääntämään Tracearr",
127
- "imperial": "Imperiaalinen (mi, mph)",
128
- "iosHttpWarning": "iOS vaatii HTTPS ulkoisille yhteyksille. Määritä käänteinen välityspalvelin SSL.",
129
- "jellyfinPollingNote": "Jellyfin/Emby ovat haastateltuina edellä mainittuun aikaan.",
130
- "language": "Kieli",
131
- "languageDescription": "Valitse haluamasi näytön kieli.",
132
- "localAccount": "Paikallinen Tili",
56
+ "externalUrlDesc": "URL, jota ulkoisten laitteiden tulisi käyttää päästäkseen tälle palvelimelle. Käytetään QR-koodeihin ja mobiilisovellusten parittamiseen.",
57
+ "detect": "Tunnista",
133
58
  "localhostWarning": "Paikallisen palvelimen URL-osoitteet eivät toimi ulkoisille laitteille. Käytä LAN-IP-osoitetta tai verkkotunnusta.",
134
- "metric": "Metrinen (km, km/h)",
59
+ "iosHttpWarning": "iOS vaatii HTTPS ulkoisille yhteyksille. Määritä käänteinen välityspalvelin SSL.",
60
+ "apiKeyDesc": "Pääsy Tracearr API kolmannen osapuolen integraatioita, kuten Homarr, Home Assistant, jne.",
61
+ "apiDocs": "API Docs",
135
62
  "noApiKeyGenerated": "Ei luotua API-avainta",
136
- "plexAccount": "Plex Tili",
137
- "plexSseNote": "Plex käyttää Server-Sent Events (SSE) lähes pikapäivityksiä – ei kyselyä.",
138
- "primaryAuth": "Ensisijainen Todennusmenetelmä",
139
- "publicApiSettings": "Public API",
140
- "publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
63
+ "copyToClipboard": "Kopioi leikepöydälle",
64
+ "apiKeyReadAccess": "Sinun API avain myöntää täyden lukemisen pääsyn Tracearr tietoja.",
65
+ "generateApiKeyPrompt": "Luo API-avain ulkoisen integraation mahdollistamiseksi.",
141
66
  "regenerate": "Luo Uudelleen",
67
+ "generateKey": "Luo Avain",
142
68
  "regenerateApiKey": "Luo API-avain?",
143
69
  "regenerateApiKeyDesc": "Tämä mitätöi nykyisen API-avaimen. Vanhaa avainta käyttävät integraatiot lakkaavat toimimasta.",
144
- "sessionSync": "Istunnon Synkronointi",
145
- "sessionSyncDesc": "Ota istunnon seuranta käyttöön mediasoittimillasi",
146
- "syncInterval": "Synkronoinnin Aikaväli",
147
- "syncIntervalDesc": "Kyselytaajuus Jellyfini/embyn osalta (5–300 sekuntia)",
148
- "syncIntervalSuffix": "sek",
149
- "theme": "Teema",
150
- "themeDark": "Tumma",
151
- "themeLight": "Vaalea",
152
- "themeSystem": "Järjestelmä",
153
- "timeFormat": "Ajan Muoto",
154
- "timeFormat12h": "12-tuntinen (1:30 PM)",
155
- "timeFormat24h": "24-tuntinen (13:30)",
156
- "timeFormatDescription": "Valitse, miten ajat näytetään.",
157
- "timezone": "Timezone",
158
- "title": "Yleiset Asetukset",
159
- "unitSystem": "Yksikkö Järjestelmä",
160
- "unitSystemDesc": "Valitse, miten etäisyydet ja nopeudet näytetään",
70
+ "publicApiSettings": "Public API",
71
+ "publicApiSettingsDesc": "Configure watch-completion thresholds and request limits for the public API",
161
72
  "watchedThresholdMovie": "Movie Watched Threshold",
162
73
  "watchedThresholdMovieDesc": "Percentage of a movie that must be watched before it's marked complete",
74
+ "watchedThresholdTv": "TV Episode Watched Threshold",
75
+ "watchedThresholdTvDesc": "Percentage of an episode that must be watched before it's marked complete",
163
76
  "watchedThresholdMusic": "Track Watched Threshold",
164
77
  "watchedThresholdMusicDesc": "Percentage of a track that must be played before it's marked complete",
165
78
  "watchedThresholdSuffix": "%",
166
- "watchedThresholdTv": "TV Episode Watched Threshold",
167
- "watchedThresholdTvDesc": "Percentage of an episode that must be watched before it's marked complete"
168
- },
169
- "import": {
170
- "apiKeyHelp": "Löydetty Tautulli asetuksista → Web-käyttöliittymä → API avain.",
171
- "apiKeyPlaceholder": "Tautulli API avain",
172
- "connectToTautulli": "Yhdistä Tautulli",
173
- "connectedFound": "Connected! Found {{users}} users and {{records}} history records.",
174
- "enrichMetadata": "Rikasta median metadatassa (suositeltu)",
175
- "enrichMetadataHelp": "Noudetaan muita metatietoja mediapalvelimelta tuotuja istuntoja varten.",
176
- "enriched": "Rikastettu",
177
- "errors": "Virheet",
178
- "exportBackupHelp": "Valitse Jellystatissa Asetukset → Varmuuskopioi → Varmuuskopioi toiminnot viedäksesi tietosi.",
179
- "exportBackupHint": "Vie aktiviteetin varmuuskopio Jellystatista",
180
- "howItWorks": "Miten tuonti toimii",
181
- "howItWorksDesc": "Tracearr tuo kaikki historialliset kellon tiedot lähteestäsi. Tämä voi kestää jonkin aikaa riippuen kirjaston koosta.",
182
- "importComplete": "Tuonti Valmis",
183
- "importFailed": "Tuonti Epäonnistui",
184
- "importHistory": "Tuo Historia",
185
- "importHistoryDesc": "Tuo historiallinen kellon tiedot ulkoisista lähteistä",
186
- "importInProgressGeneric": "Tuonti käynnissä...",
187
- "importInProgressPercent": "Tuonti käynnissä ({{percent}}% valmis)...",
188
- "importOptions": "Tuonnin Asetukset",
189
- "importProgress": "Tuo Edistyminen",
190
- "imported": "Tuotu",
191
- "importing": "Tuoda...",
192
- "includeStreamDetails": "Sisällytä yksityiskohtaiset virtatiedot (koodekit, bitrate, resoluutio)",
193
- "includeStreamDetailsHelp": "Tuontia koskevat lisätiedot. Saattaa pidentää tuontiaikaa merkittävästi.",
194
- "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
195
- "jellystat": "Tuo Jellystatista",
196
- "noServers": "Palvelimia Ei Yhdistetty",
197
- "noServersHint": "Tietojen tuonti vaatii ainakin yhden yhdistetyn palvelimen.",
198
- "overwriteFriendlyNames": "Korvaa nykyiset ystävälliset nimet Tautullin nimillä",
199
- "overwriteFriendlyNamesHelp": "Tracearrissa olevat nykyiset henkilötunnukset korvataan ystävällisillä Tautullin nimillä.",
200
- "page": "Sivu",
201
- "pleaseEnterDetails": "Syötä Tautulli URL ja API-avain",
202
- "pleaseSelectJsonFile": "Ole hyvä ja valitse JSON tiedosto",
203
- "plex": "Plex (Tautulli)",
204
- "processed": "Käsitelty",
205
- "recordsMayBeSkipped": "Tietueet voidaan ohittaa, jos:",
206
- "selectJellyfinServer": "Valitse Jellyfin tai Emby palvelin",
207
- "selectPlexServer": "Valitse Plex palvelin",
208
- "selectTargetServer": "Valitse Kohdepalvelin",
209
- "skipDuplicate": "Kaksoiskappale istunto — Istunto on jo tuotu aiemmin.",
210
- "skipInProgress": "Seurantaistunto – Aktiiviset/keskeneräiset istunnot ilman viitetunnusta ohitetaan.",
211
- "skipSyncHint": "Jos monta tietuetta ohitetaan, varmista, että olet synkronoinut palvelimen äskettäin Asetukset → Palvelimet.",
212
- "skipUserNotFoundJellyfin": "Käyttäjää ei löydy — Jellyfin/Emby-käyttäjää ei ole Tracearrissa. Synkronoi palvelin ensin lisätäksesi kaikki käyttäjät.",
213
- "skipUserNotFoundPlex": "Käyttäjää ei löydy — Plex-käyttäjää ei ole olemassa Tracearrissa. Synkronoi palvelin ensin lisätäksesi kaikki käyttäjät.",
214
- "skipped": "Ohitettu",
215
- "startImport": "Aloita Tuonti",
216
- "startingImport": "Aloitetaan tuontia...",
217
- "step1": "1",
218
- "step2": "2",
219
- "targetServer": "Target Server",
220
- "tautulli": "Tuo Tautulli",
221
- "tautulliUrl": "Tautulli URL",
222
- "tautulliUrlHelp": "The URL of your Tautulli instance.",
223
- "tautulliUrlPlaceholder": "http://localhost:8181",
224
- "testing": "Testataan...",
225
- "testingConnection": "Testataan yhteyttä...",
226
- "title": "Tuo Tiedot",
227
- "updateExistingRecords": "Päivitä olemassa olevat tietueet stream-tiedoilla",
228
- "updateExistingRecordsHelp": "Aiemmin tuotuja tietueita päivitetään streamin laatutiedoilla.",
229
- "uploadJellystatBackup": "Lataa Jellystatin Varmuuskopio",
230
- "uploadingBackup": "Ladataan varmuuskopiotiedostoa...",
231
- "playbackReporting": "Playback Reporting Plugin",
232
- "playbackReportingDesc": "Import history directly from the Playback Reporting plugin installed on your Jellyfin or Emby server. No file export needed.",
233
- "checkPlugin": "Check Plugin",
234
- "checkingPlugin": "Checking...",
235
- "pluginFound": "Plugin found: {{records}} records from {{oldestDate}} to {{newestDate}}",
236
- "pluginNotInstalled": "The Playback Reporting plugin is not installed on this server, or Tracearr cannot reach it. Install it from the server's plugin catalog to start recording history, or use the Jellystat import below.",
237
- "serverTimezone": "Server Timezone",
238
- "serverTimezoneHelp": "Must match the timezone configured on your media server host, not your browser's timezone. Playback Reporting timestamps are stored in local server time.",
239
- "importFullRange": "Import full history",
240
- "importFullRangeHelp": "By default only history older than Tracearr's earliest tracked session for this server is imported, so sessions Tracearr already recorded are never duplicated. Enable this to import the plugin's entire history regardless of overlap, if your Tracearr history has gaps. Exact duplicates are still skipped.",
241
- "overlapSkipped": "{{count}} skipped as overlap",
242
- "duplicates": "{{count}} duplicates skipped",
243
- "skipOverlap": "Overlapping record - the timestamp falls inside the period Tracearr already tracks for this server. Enable full-range import to include it.",
244
- "skipDuplicatePlugin": "Duplicate record - already imported directly or arrived earlier via a Jellystat import of the same plugin data."
245
- },
246
- "ipWarning": {
247
- "acknowledge": "Asia ymmärretty",
248
- "message": "Kaikki käyttäjät näyttävät käyttävän samaa IP-osoitetta tai paikallisia verkko-osoitteita. Tämä saattaa vaikuttaa sääntöpohjaiseen sijainti- tai IP-osoitteiden logiikkaan."
249
- },
250
- "jobs": {
251
- "backfill": "Backfill",
252
- "cleanup": "Siivoaminen",
253
- "delayed": "viivästynyt",
254
- "description": "Hallitse taustatehtäviä, jotka pitävät tietosi tarkkoina ja optimoituina.",
255
- "errors": "virheet",
256
- "jobHistory": "Työn Historia",
257
- "jobHistoryDesc": "Viimeaikaiset huoltotöiden suoritukset",
258
- "lastJobCompleted": "Viimeisin työ suoritettu onnistuneesti",
259
- "lastJobFailed": "Viimeisin työ epäonnistui",
260
- "mayTakeAWhile": "Tämä voi kestää jonkin aikaa",
261
- "mayTakeAWhileDesc": "Tämä työ voi kestää useita minuutteja loppuun riippuen kirjaston koosta.",
262
- "normalization": "Normalisointi",
263
- "processed": "käsitelty",
264
- "queued": "jonossa",
265
- "runConfirm": "Suorita {{name}}?",
266
- "runJob": "Suorita Työ",
267
- "running": "käynnissä",
268
- "runningState": "Käynnissä",
269
- "startJob": "Aloita Työ",
270
- "title": "Huoltotyöt",
271
- "unchanged": "muuttumaton",
272
- "updated": "päivitetty",
273
- "waiting": "Odottaa"
274
- },
275
- "mobile": {
276
- "addDevice": "Lisää Laite",
277
- "connectedDevices": "Yhdistetyt Laitteet",
278
- "connectedDevicesDesc": "{{count}} laitetta liitetty palvelimeen",
279
- "copyToken": "Kopioi tunnus",
280
- "deviceName": "Laitteen nimi",
281
- "deviceNamePlaceholder": "esim. iPhone 15",
282
- "devicesConnected": "{{current}} of {{max}} devices connected",
283
- "disable": "Poista Käytöstä",
284
- "disableMobileAccess": "Poista Mobiilikäyttö Käytöstä",
285
- "disableMobileAccessConfirm": "Tämä poistaa yhteyden kaikista mobiililaitteista ja peruuttaa kaikki istunnot. Voit ottaa mobiiliyhteyden käyttöön myöhemmin.",
286
- "done": "Valmis",
287
- "downloadOnAppStore": "Lataa App Storesta",
288
- "enableMobileAccess": "Ota Mobiilikäyttö Käyttöön",
289
- "enabling": "Poistetaan...",
290
- "expiresIn": "Vanhenee {{time}}",
291
- "externalUrlBanner": "Käytetäänkö käänteistä välityspalvelinta vai etäännyttä? Aseta sinun",
292
- "externalUrlBannerLink": "Ulkoinen URL",
293
- "externalUrlBannerSuffix": "jotta mobiilisovellus voi muodostaa yhteyden palvelimellesi.",
294
- "externalUrlRequired": "Ulkoinen URL-osoite on konfiguroitava Yleiset asetukset, jotta mobiiliparitus toimisi.",
295
- "failedToGenerateToken": "Tunnuksen luonti epäonnistui",
296
- "generateToken": "Luo Pari Tunnus",
297
- "getOnGooglePlay": "Hanki se Google Playsta",
298
- "getTheApp": "Hanki sovellus",
299
- "getTheAppDesc": "Lataa Tracearr mobiilisovellus iOS:lle tai Androidille",
300
- "mobileAccessDisabled": "Mobiilikäyttö Pois Käytöstä",
301
- "mobileAccessDisabledDesc": "Ota mobiiliyhteys käyttöön, jotta Tracearr mobiilisovellus voi muodostaa yhteyden palvelimellesi.",
302
- "noDevices": "Laitteita ei ole yhdistetty",
303
- "oneTimePairToken": "Kertamaksu Tunnus",
304
- "pairDevice": "Pari Laite",
305
- "pairNewDevice": "Pari Uusi Laite",
306
- "pairNewDeviceDesc": "Skannaa QR-koodi Tracearr mobiilisovelluksella tai kirjoita tunnus manuaalisesti.",
307
- "pairYourDevice": "Parita Laitteesi",
308
- "pairYourDeviceDesc": "Skannaa QR-koodi Tracearr -sovelluksella yhdistääksesi tämän palvelimen.",
309
- "pendingTokens": "{{count}} odottaa parinumeroa",
310
- "removeDevice": "Poista Laite",
311
- "removeDeviceConfirm": "Oletko varma, että haluat poistaa {{deviceName}}? Tämän laitteen on muodostettava pari, jotta yhteys muodostetaan uudelleen.",
312
- "renameDevice": "Nimeä Laite Uudelleen",
313
- "renameDeviceDesc": "Anna nimi, joka tunnistaa tämän laitteen luettelossa.",
314
- "revokeAll": "Peruuta Kaikki Istunnot",
315
- "revokeAllConfirm": "Tämä katkaisee yhteyden kaikkiin mobiililaitteisiin. Niiden on muodostettava pari, jotta yhteys muodostetaan uudelleen.",
316
- "revokeAllSessions": "Peruuta Kaikki",
317
- "scanQrCode": "Scan QR Code",
318
- "title": "Mobiili Sovellus",
319
- "tokenExpires": "Token vanhenee {{time}}",
320
- "tokenExpiryNote": "Tämä tunnus vanhenee 5 minuutissa ja sitä voidaan käyttää vain kerran."
321
- },
322
- "notifications": {
323
- "agentCard": {
324
- "default": "Oletus",
325
- "editSettings": "Muokkaa asetuksia",
326
- "events": "Tapahtumat",
327
- "notConfigured": "Ei täysin määritetty.",
328
- "saved": "Tallennettu",
329
- "sendTest": "Lähetä Testi"
330
- },
331
- "routing": {
332
- "discord": "Discord",
333
- "event": "Tapahtuma",
334
- "web": "Verkko",
335
- "webNote": "Push-ilmoitukset on määritetty laitteen kanssa mobiilisovelluksessa.",
336
- "webToastNote": "näyttää paahdettuja ilmoituksia tässä selaimessa.",
337
- "webhook": "Webkoukku"
338
- }
339
- },
340
- "plex": {
341
- "chooseServer": "Valitse, mitä Plex Media Serveriä seurataan",
342
- "selectServer": "Valitse Palvelin",
343
- "signInWithPlex": "Kirjaudu sisään Plexillä",
344
- "signUpWithPlex": "Rekisteröidy käyttäen Plexiä"
345
- },
346
- "serverHealth": {
347
- "multipleUnreachable": "{{count}} servers unreachable: {{serverNames}}",
348
- "unreachable": "{{serverName}} ei ole tavoitettavissa"
79
+ "apiRateLimit": "API Rate Limit",
80
+ "apiRateLimitDesc": "Maximum public API requests per minute per key. Restart required to apply.",
81
+ "apiRateLimitSuffix": "/min"
349
82
  },
350
83
  "servers": {
84
+ "title": "Yhdistetyt Palvelimet",
351
85
  "addServer": "Lisää Palvelin",
352
- "addServerDialogDescOther": "Yhdistä Jellyfin tai Emby palvelin.",
353
- "addServerDialogDescPlex": "Valitse Plex palvelin linkitetystä tililtäsi.",
354
- "added": "Lisätty {{date}}",
355
- "allFieldsRequired": "Kaikki kentät ovat pakollisia",
86
+ "serverName": "Palvelimen Nimi",
87
+ "serverUrl": "Palvelimen URL",
88
+ "syncInterval": "Synkronoinnin Aikaväli",
89
+ "testConnection": "Testaa Yhteys",
90
+ "connectionSuccess": "Yhteys onnistui",
91
+ "connectionFailed": "Yhteys epäonnistui",
92
+ "noServersConnected": "Palvelimia ei yhdistetty",
93
+ "noServersConnectedHint": "Klikkaa \"Add Server\" yhdistääksesi Jellyfin- tai Emby- palvelimen",
94
+ "serverType": "Palvelimen Tyyppi",
95
+ "loadingAccounts": "Ladataan linkitettyjä Plex tilejä...",
96
+ "noPlexAccountsLinked": "Ei Ole Ole Yhdistetty Plex Tilejä",
97
+ "noPlexAccountsLinkedHint": "Linkitä Plex tili yllä ja palaa sitten lisäämään palvelin.",
98
+ "selectPlexAccount": "Valitse Plex Tili",
99
+ "chooseAccount": "Valitse käyttäjätunnus...",
100
+ "selectAccountHelp": "Valitse mikä Plex tili löytääksesi palvelimet.",
356
101
  "allServersConnected": "Kaikki Palvelimet Yhdistetty",
357
102
  "allServersConnectedDesc": "Kaikki tämän tilin palvelimet on jo yhdistetty.",
358
- "apiKeyHelp": "Löydetty mediapalvelimen hallintapaneelista API-avaimista tai Edistyneistä asetuksista.",
359
- "apiKeyHelpEmby": "Etsi tämä Emby Server → API Avaimet",
360
- "apiKeyHelpJellyfin": "Etsi tämä sivulta Jellyfin-kojelauta → API-avaimet",
103
+ "serverUrlPlaceholder": "http://192.168.1.100:8096",
104
+ "serverUrlHelp": "Suora URL Jellyfinille tai Emby palvelimelle. Käytä IP:porttia parhaan luotettavuuden takaamiseksi.",
105
+ "serverNamePlaceholder": "Oma Mediapalvelin",
361
106
  "apiKeyPlaceholder": "Syötä API-avain",
362
- "checkingConnection": "Checking connection…",
363
- "chooseAccount": "Valitse käyttäjätunnus...",
364
- "connectServer": "Yhdistä Palvelin",
107
+ "apiKeyHelp": "Löydetty mediapalvelimen hallintapaneelista API-avaimista tai Edistyneistä asetuksista.",
365
108
  "connecting": "Yhdistetään...",
366
- "connectionFailed": "Yhteys epäonnistui",
367
- "connectionSuccess": "Yhteys onnistui",
368
- "description": "Hallitse yhdistettyjä Plex-, Jellyfin- ja Emby-palvelimia",
369
- "discoveringConnections": "Löytää yhteyksiä...",
370
- "discoveringServers": "Löydät saatavilla olevat Plex palvelimet...",
109
+ "connectServer": "Yhdistä Palvelin",
110
+ "removeServer": "Poista Palvelin",
111
+ "removeServerConfirm": "Oletko varma, että haluat poistaa tämän palvelimen? Kaikki liittyvät istunnon tiedot säilytetään, mutta et voi seurata uusia istuntoja tältä palvelimelta.",
371
112
  "editServer": "Muokkaa Palvelinta",
372
113
  "editServerDesc": "Päivitä palvelimen nimi tai yhteyden URL.",
373
- "loadingAccounts": "Ladataan linkitettyjä Plex tilejä...",
374
- "noPlexAccountsLinked": "Ei Ole Ole Yhdistetty Plex Tilejä",
375
- "noPlexAccountsLinkedHint": "Linkitä Plex tili yllä ja palaa sitten lisäämään palvelin.",
376
- "noServersConnected": "Palvelimia ei yhdistetty",
377
- "noServersConnectedHint": "Klikkaa \"Add Server\" yhdistääksesi Jellyfin- tai Emby- palvelimen",
114
+ "serverColor": "Palvelimen Väri",
115
+ "serverColorDesc": "Käytetään visuaaliseen attribuuttiin usean palvelimen näkymässä",
116
+ "updating": "Päivitetään...",
117
+ "allFieldsRequired": "Kaikki kentät ovat pakollisia",
118
+ "addServerDialogDescPlex": "Valitse Plex palvelin linkitetystä tililtäsi.",
119
+ "addServerDialogDescOther": "Yhdistä Jellyfin tai Emby palvelin.",
120
+ "description": "Hallitse yhdistettyjä Plex-, Jellyfin- ja Emby-palvelimia",
121
+ "discoveringServers": "Löydät saatavilla olevat Plex palvelimet...",
122
+ "discoveringConnections": "Löytää yhteyksiä...",
378
123
  "plexAccount": "Plex Tili",
124
+ "serverUrlHelpJellyfin": "URL, jossa Jellyfin-palvelimesi on käytettävissä",
125
+ "serverUrlHelpEmby": "URL jossa Emby palvelin on käytettävissä",
126
+ "apiKeyHelpJellyfin": "Etsi tämä sivulta Jellyfin-kojelauta → API-avaimet",
127
+ "apiKeyHelpEmby": "Etsi tämä Emby Server → API Avaimet",
379
128
  "plexServerPlaceholder": "Oma Plex Palvelin",
380
129
  "plexServerUrlPlaceholder": "http://192.168.1.100:32400",
381
- "pluginUpdateAvailable": "Plugin update available",
382
- "pluginVersion": "plugin v{{version}}",
383
- "pollingMode": "Polling",
384
- "posterSource": {
385
- "automatic": "Automatic (most recent)",
386
- "description": "When a title is on more than one server, use this server's poster. If it doesn't have one, we'll fall back to the most recently added copy.",
387
- "emptyHint": "Add a server to choose a preferred poster source.",
388
- "label": "Preferred Poster Source",
389
- "title": "Poster Preferences",
390
- "titleDesc": "Choose which server's poster is shown when a title exists on more than one server"
391
- },
130
+ "updateHint": "Tai klikkaa Päivitä alla tallentaaksesi vain nimen muutoksen.",
131
+ "added": "Lisätty {{date}}",
392
132
  "realtimeActive": "Real-time updates active",
133
+ "pollingMode": "Polling",
134
+ "setupRealtime": "Set up real-time updates",
135
+ "realtimeError": "Real-time error",
136
+ "checkingConnection": "Checking connection…",
137
+ "pluginVersion": "plugin v{{version}}",
138
+ "pluginUpdateAvailable": "Plugin update available",
393
139
  "realtimeDialog": {
394
- "autoDetectNote": "Restart Jellyfin or Emby after installing the plugin; the restart is required. Tracearr itself needs no restart and picks the plugin up automatically.",
395
- "close": "Close",
396
- "copyUrl": "Copy URL",
140
+ "title": "Enable real-time updates",
141
+ "updateTitle": "Update the Tracearr SSE plugin",
142
+ "jellyfinDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
397
143
  "embyDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
398
- "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
144
+ "jellyfinUpdateDescription": "A newer plugin release is available. Open your Jellyfin dashboard, go to Plugins, Catalog, and update Tracearr SSE, then restart Jellyfin.",
399
145
  "embyUpdateDescription": "A newer plugin release is available. Download the latest release zip, replace the plugin DLL in your Emby plugins folder, and restart Emby.",
400
- "jellyfinDescription": "Install the Tracearr SSE plugin to get instant session updates without waiting for the next poll.",
146
+ "repositoryUrl": "Repository URL",
147
+ "copyUrl": "Copy URL",
401
148
  "jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
402
- "jellyfinUpdateDescription": "A newer plugin release is available. Open your Jellyfin dashboard, go to Plugins, Catalog, and update Tracearr SSE, then restart Jellyfin.",
149
+ "embyReleasesUrl": "https://github.com/Tracearr/Media-Server-SSE/releases",
403
150
  "openReleases": "Open releases page",
404
- "repositoryUrl": "Repository URL",
405
- "title": "Enable real-time updates",
406
- "updateTitle": "Update the Tracearr SSE plugin",
151
+ "autoDetectNote": "Restart Jellyfin or Emby after installing the plugin; the restart is required. Tracearr itself needs no restart and picks the plugin up automatically.",
152
+ "close": "Close",
407
153
  "issueBlocked": "The server reports the plugin as installed and active, but Tracearr gets a 404 from its endpoint. A reverse proxy blocking the path is the usual cause.",
408
154
  "issueRestartRequired": "The plugin is installed, but the media server needs a restart before it activates.",
409
155
  "issueMalfunctioned": "The server reports the plugin failed to load. Updating the plugin or the media server usually clears this."
410
156
  },
411
- "removeServer": "Poista Palvelin",
412
- "removeServerConfirm": "Oletko varma, että haluat poistaa tämän palvelimen? Kaikki liittyvät istunnon tiedot säilytetään, mutta et voi seurata uusia istuntoja tältä palvelimelta.",
413
- "selectAccountHelp": "Valitse mikä Plex tili löytääksesi palvelimet.",
414
- "selectPlexAccount": "Valitse Plex Tili",
415
- "serverColor": "Palvelimen Väri",
416
- "serverColorDesc": "Käytetään visuaaliseen attribuuttiin usean palvelimen näkymässä",
417
- "serverName": "Palvelimen Nimi",
418
- "serverNamePlaceholder": "Oma Mediapalvelin",
419
- "serverType": "Palvelimen Tyyppi",
420
- "serverUrl": "Palvelimen URL",
421
- "serverUrlHelp": "Suora URL Jellyfinille tai Emby palvelimelle. Käytä IP:porttia parhaan luotettavuuden takaamiseksi.",
422
- "serverUrlHelpEmby": "URL jossa Emby palvelin on käytettävissä",
423
- "serverUrlHelpJellyfin": "URL, jossa Jellyfin-palvelimesi on käytettävissä",
424
- "serverUrlPlaceholder": "http://192.168.1.100:8096",
425
- "setupRealtime": "Set up real-time updates",
426
- "realtimeError": "Real-time error",
427
- "syncInterval": "Synkronoinnin Aikaväli",
428
- "testConnection": "Testaa Yhteys",
429
- "title": "Yhdistetyt Palvelimet",
430
- "updateHint": "Tai klikkaa Päivitä alla tallentaaksesi vain nimen muutoksen.",
431
- "updating": "Päivitetään..."
432
- },
433
- "tabs": {
434
- "accessControl": "Käyttöoikeuksien Hallinta",
435
- "advanced": "Lisäasetukset",
436
- "backup": "Varmuuskopio",
437
- "general": "Yleiset",
438
- "import": "Tuo",
439
- "jobs": "Työt",
440
- "mobile": "Mobiili Sovellus",
441
- "notifications": "Ilmoitukset",
442
- "servers": "Palvelimet",
443
- "tailscale": "Tailscale"
157
+ "posterSource": {
158
+ "title": "Poster Preferences",
159
+ "titleDesc": "Choose which server's poster is shown when a title exists on more than one server",
160
+ "label": "Preferred Poster Source",
161
+ "description": "When a title is on more than one server, use this server's poster. If it doesn't have one, we'll fall back to the most recently added copy.",
162
+ "automatic": "Automatic (most recent)",
163
+ "emptyHint": "Add a server to choose a preferred poster source."
164
+ }
444
165
  },
445
- "tailscale": {
446
- "authorize": "Valtuuta Tailscale",
447
- "awaitingAuth": "Odotetaan lupaa...",
448
- "connected": "Tailscale on yhdistetty. Tracearr instanssi on saatavilla räätälöidyssä verkossa.",
449
- "description": "Pääsy Tracearr turvallisesti Tailscale verkossa ilman portti huolintaa.",
450
- "disable": "Poista Tailscale Käytöstä",
451
- "disableConfirmDescription": "Tämä katkaisee Tracearr- yhteyden hännänverkkoon. Voit ottaa uudelleen käyttöön ilman uudelleenvaltuutusta.",
452
- "disableConfirmTitle": "Poistetaanko Tailscale?",
453
- "disabledDescription": "Ota käyttöön Tailscale laittaaksesi Tracearr yksityiseen hännänverkkoon. Portin huoltoa tai käänteisvälityspalvelinta ei tarvita.",
454
- "dnsName": "DNS Nimi",
455
- "enable": "Ota Käyttöön Tailscale",
456
- "exitNodeNone": "Ei Mitään",
457
- "exitNodeOffline": "(offline)",
458
- "hideLogs": "Piilota Lokit",
459
- "hostname": "Hostname",
460
- "hostnameHint": "Valinnainen mukautettu nimi tälle laitteelle räätälöidyssäsi. Vain kirjaimet, numerot ja väliviivat.",
461
- "hostnameLabel": "Laitteen Isäntänimi",
462
- "noLogs": "Lokitietoja ei ole saatavilla.",
463
- "notAvailable": "Tailscale binary ei löytynyt. Tämä ominaisuus on käytettävissä vain käytettäessä virallista Docker-kuvaa.",
464
- "resetConfirmDescription": "Tämä poistaa Tracearr-yhteyden räätälöidystä verkosta ja poistaa laitteen henkilöllisyyden. Sinun täytyy sallia uudelleen, jos otat sen käyttöön uudestaan.",
465
- "resetConfirmTitle": "Reset Tailscale?",
466
- "showLogs": "Näytä Lokit",
467
- "starting": "Käynnistetään Tailscale...",
468
- "stopping": "Pysäytetään Tailscale...",
469
- "tailnetUrl": "URL-osoite",
470
- "title": "Tailscale VPN",
471
- "toast": {
472
- "disableFailed": "Tailscale poistaminen käytöstä epäonnistui",
473
- "disabled": "Tailscale on poistettu käytöstä.",
474
- "enableFailed": "Ei voitu ottaa käyttöön Tailscale",
475
- "exitNodeFailed": "Poistumispalvelimen asettaminen epäonnistui",
476
- "exitNodeSet": "Poistu palvelimesta päivitetty.",
477
- "reset": "Tailscale on nollattu.",
478
- "resetFailed": "Tailscale nollaaminen epäonnistui"
166
+ "mobile": {
167
+ "title": "Mobiili Sovellus",
168
+ "pairDevice": "Pari Laite",
169
+ "connectedDevices": "Yhdistetyt Laitteet",
170
+ "generateToken": "Luo Pari Tunnus",
171
+ "scanQrCode": "Scan QR Code",
172
+ "tokenExpires": "Token vanhenee {{time}}",
173
+ "noDevices": "Laitteita ei ole yhdistetty",
174
+ "revokeAll": "Peruuta Kaikki Istunnot",
175
+ "getTheApp": "Hanki sovellus",
176
+ "getTheAppDesc": "Lataa Tracearr mobiilisovellus iOS:lle tai Androidille",
177
+ "getOnGooglePlay": "Hanki se Google Playsta",
178
+ "downloadOnAppStore": "Lataa App Storesta",
179
+ "pairYourDevice": "Parita Laitteesi",
180
+ "pairYourDeviceDesc": "Skannaa QR-koodi Tracearr -sovelluksella yhdistääksesi tämän palvelimen.",
181
+ "externalUrlRequired": "Ulkoinen URL-osoite on konfiguroitava Yleiset asetukset, jotta mobiiliparitus toimisi.",
182
+ "mobileAccessDisabled": "Mobiilikäyttö Pois Käytöstä",
183
+ "mobileAccessDisabledDesc": "Ota mobiiliyhteys käyttöön, jotta Tracearr mobiilisovellus voi muodostaa yhteyden palvelimellesi.",
184
+ "enableMobileAccess": "Ota Mobiilikäyttö Käyttöön",
185
+ "enabling": "Poistetaan...",
186
+ "devicesConnected": "{{current}} of {{max}} devices connected",
187
+ "pendingTokens": "{{count}} odottaa parinumeroa",
188
+ "addDevice": "Lisää Laite",
189
+ "disableMobileAccess": "Poista Mobiilikäyttö Käytöstä",
190
+ "connectedDevicesDesc": "{{count}} laitetta liitetty palvelimeen",
191
+ "revokeAllSessions": "Peruuta Kaikki",
192
+ "pairNewDevice": "Pari Uusi Laite",
193
+ "pairNewDeviceDesc": "Skannaa QR-koodi Tracearr mobiilisovelluksella tai kirjoita tunnus manuaalisesti.",
194
+ "expiresIn": "Vanhenee {{time}}",
195
+ "oneTimePairToken": "Kertamaksu Tunnus",
196
+ "copyToken": "Kopioi tunnus",
197
+ "tokenExpiryNote": "Tämä tunnus vanhenee 5 minuutissa ja sitä voidaan käyttää vain kerran.",
198
+ "done": "Valmis",
199
+ "disableMobileAccessConfirm": "Tämä poistaa yhteyden kaikista mobiililaitteista ja peruuttaa kaikki istunnot. Voit ottaa mobiiliyhteyden käyttöön myöhemmin.",
200
+ "disable": "Poista Käytöstä",
201
+ "revokeAllConfirm": "Tämä katkaisee yhteyden kaikkiin mobiililaitteisiin. Niiden on muodostettava pari, jotta yhteys muodostetaan uudelleen.",
202
+ "renameDevice": "Nimeä Laite Uudelleen",
203
+ "renameDeviceDesc": "Anna nimi, joka tunnistaa tämän laitteen luettelossa.",
204
+ "deviceName": "Laitteen nimi",
205
+ "deviceNamePlaceholder": "esim. iPhone 15",
206
+ "removeDevice": "Poista Laite",
207
+ "failedToGenerateToken": "Tunnuksen luonti epäonnistui",
208
+ "removeDeviceConfirm": "Oletko varma, että haluat poistaa {{deviceName}}? Tämän laitteen on muodostettava pari, jotta yhteys muodostetaan uudelleen.",
209
+ "externalUrlBanner": "Käytetäänkö käänteistä välityspalvelinta vai etäännyttä? Aseta sinun",
210
+ "externalUrlBannerLink": "Ulkoinen URL",
211
+ "externalUrlBannerSuffix": "jotta mobiilisovellus voi muodostaa yhteyden palvelimellesi."
212
+ },
213
+ "tailscale": {
214
+ "title": "Tailscale VPN",
215
+ "description": "Pääsy Tracearr turvallisesti Tailscale verkossa ilman portti huolintaa.",
216
+ "notAvailable": "Tailscale binary ei löytynyt. Tämä ominaisuus on käytettävissä vain käytettäessä virallista Docker-kuvaa.",
217
+ "disabledDescription": "Ota käyttöön Tailscale laittaaksesi Tracearr yksityiseen hännänverkkoon. Portin huoltoa tai käänteisvälityspalvelinta ei tarvita.",
218
+ "hostnameLabel": "Laitteen Isäntänimi",
219
+ "hostnameHint": "Valinnainen mukautettu nimi tälle laitteelle räätälöidyssäsi. Vain kirjaimet, numerot ja väliviivat.",
220
+ "enable": "Ota Käyttöön Tailscale",
221
+ "disable": "Poista Tailscale Käytöstä",
222
+ "starting": "Käynnistetään Tailscale...",
223
+ "stopping": "Pysäytetään Tailscale...",
224
+ "awaitingAuth": "Odotetaan lupaa...",
225
+ "authorize": "Valtuuta Tailscale",
226
+ "connected": "Tailscale on yhdistetty. Tracearr instanssi on saatavilla räätälöidyssä verkossa.",
227
+ "hostname": "Hostname",
228
+ "dnsName": "DNS Nimi",
229
+ "tailnetUrl": "URL-osoite",
230
+ "showLogs": "Näytä Lokit",
231
+ "hideLogs": "Piilota Lokit",
232
+ "noLogs": "Lokitietoja ei ole saatavilla.",
233
+ "exitNodeNone": "Ei Mitään",
234
+ "exitNodeOffline": "(offline)",
235
+ "unknownError": "Tapahtui tuntematon virhe.",
236
+ "disableConfirmTitle": "Poistetaanko Tailscale?",
237
+ "disableConfirmDescription": "Tämä katkaisee Tracearr- yhteyden hännänverkkoon. Voit ottaa uudelleen käyttöön ilman uudelleenvaltuutusta.",
238
+ "resetConfirmTitle": "Reset Tailscale?",
239
+ "resetConfirmDescription": "Tämä poistaa Tracearr-yhteyden räätälöidystä verkosta ja poistaa laitteen henkilöllisyyden. Sinun täytyy sallia uudelleen, jos otat sen käyttöön uudestaan.",
240
+ "toast": {
241
+ "disabled": "Tailscale on poistettu käytöstä.",
242
+ "enableFailed": "Ei voitu ottaa käyttöön Tailscale",
243
+ "disableFailed": "Tailscale poistaminen käytöstä epäonnistui",
244
+ "reset": "Tailscale on nollattu.",
245
+ "resetFailed": "Tailscale nollaaminen epäonnistui",
246
+ "exitNodeSet": "Poistu palvelimesta päivitetty.",
247
+ "exitNodeFailed": "Poistumispalvelimen asettaminen epäonnistui"
248
+ }
249
+ },
250
+ "webhooks": {
251
+ "title": "Webkoukun Asetukset",
252
+ "discordWebhook": "Discord Webhook URL",
253
+ "ntfyTopic": "Ntfy Aihe",
254
+ "customWebhook": "Mukautettu Webkoukun URL",
255
+ "webhookFormat": "Webkoukun Muoto",
256
+ "testWebhook": "Testaa Webkoukku"
257
+ },
258
+ "jobs": {
259
+ "title": "Huoltotyöt",
260
+ "description": "Hallitse taustatehtäviä, jotka pitävät tietosi tarkkoina ja optimoituina.",
261
+ "normalization": "Normalisointi",
262
+ "backfill": "Backfill",
263
+ "cleanup": "Siivoaminen",
264
+ "running": "käynnissä",
265
+ "queued": "jonossa",
266
+ "delayed": "viivästynyt",
267
+ "waiting": "Odottaa",
268
+ "runningState": "Käynnissä",
269
+ "runJob": "Suorita Työ",
270
+ "processed": "käsitelty",
271
+ "updated": "päivitetty",
272
+ "unchanged": "muuttumaton",
273
+ "errors": "virheet",
274
+ "lastJobCompleted": "Viimeisin työ suoritettu onnistuneesti",
275
+ "lastJobFailed": "Viimeisin työ epäonnistui",
276
+ "jobHistory": "Työn Historia",
277
+ "jobHistoryDesc": "Viimeaikaiset huoltotöiden suoritukset",
278
+ "runConfirm": "Suorita {{name}}?",
279
+ "mayTakeAWhile": "Tämä voi kestää jonkin aikaa",
280
+ "mayTakeAWhileDesc": "Tämä työ voi kestää useita minuutteja loppuun riippuen kirjaston koosta.",
281
+ "startJob": "Aloita Työ"
282
+ },
283
+ "notifications": {
284
+ "routing": {
285
+ "event": "Tapahtuma",
286
+ "web": "Verkko",
287
+ "discord": "Discord",
288
+ "webhook": "Webkoukku",
289
+ "webNote": "Push-ilmoitukset on määritetty laitteen kanssa mobiilisovelluksessa.",
290
+ "webToastNote": "näyttää paahdettuja ilmoituksia tässä selaimessa."
479
291
  },
480
- "unknownError": "Tapahtui tuntematon virhe."
292
+ "agentCard": {
293
+ "saved": "Tallennettu",
294
+ "default": "Oletus",
295
+ "events": "Tapahtumat",
296
+ "sendTest": "Lähetä Testi",
297
+ "notConfigured": "Ei täysin määritetty.",
298
+ "editSettings": "Muokkaa asetuksia"
299
+ }
300
+ },
301
+ "advanced": {
302
+ "title": "Edistyneet Asetukset",
303
+ "externalUrl": "Ulkoinen URL",
304
+ "trustProxy": "Luota Välityspalvelimen Otsikkoihin",
305
+ "reverseProxy": "Käänteinen Välityspalvelin",
306
+ "connectionScenarios": "Yhteyden Skenaariot"
307
+ },
308
+ "accessControl": {
309
+ "title": "Käyttöoikeuksien Hallinta",
310
+ "description": "Määritä kuka voi käyttää Tracearria",
311
+ "allowGuestAccess": "Salli Vieraiden Käyttö",
312
+ "allowGuestAccessDesc": "Kun poistettu käytöstä, vain palvelimen omistaja voi kirjautua tracearr:iin",
313
+ "singleOwnerNote": "Huomautus: Kun vierailijoiden käyttö on poistettu käytöstä, vain palvelimen omistaja voi kirjautua sisään. Kaikki muut käyttäjät näkevät \"Pääsy estetty\" -viestin."
314
+ },
315
+ "import": {
316
+ "title": "Tuo Tiedot",
317
+ "jellystat": "Tuo Jellystatista",
318
+ "tautulli": "Tuo Tautulli",
319
+ "importProgress": "Tuo Edistyminen",
320
+ "importComplete": "Tuonti Valmis",
321
+ "importFailed": "Tuonti Epäonnistui",
322
+ "processed": "Käsitelty",
323
+ "page": "Sivu",
324
+ "imported": "Tuotu",
325
+ "skipped": "Ohitettu",
326
+ "enriched": "Rikastettu",
327
+ "errors": "Virheet",
328
+ "noServers": "Palvelimia Ei Yhdistetty",
329
+ "noServersHint": "Tietojen tuonti vaatii ainakin yhden yhdistetyn palvelimen.",
330
+ "tautulliUrl": "Tautulli URL",
331
+ "tautulliUrlPlaceholder": "http://localhost:8181",
332
+ "tautulliUrlHelp": "The URL of your Tautulli instance.",
333
+ "apiKeyHelp": "Löydetty Tautulli asetuksista → Web-käyttöliittymä → API avain.",
334
+ "testing": "Testataan...",
335
+ "connectToTautulli": "Yhdistä Tautulli",
336
+ "importHistory": "Tuo Historia",
337
+ "targetServer": "Target Server",
338
+ "selectPlexServer": "Valitse Plex palvelin",
339
+ "overwriteFriendlyNames": "Korvaa nykyiset ystävälliset nimet Tautullin nimillä",
340
+ "overwriteFriendlyNamesHelp": "Tracearrissa olevat nykyiset henkilötunnukset korvataan ystävällisillä Tautullin nimillä.",
341
+ "includeStreamDetails": "Sisällytä yksityiskohtaiset virtatiedot (koodekit, bitrate, resoluutio)",
342
+ "includeStreamDetailsHelp": "Tuontia koskevat lisätiedot. Saattaa pidentää tuontiaikaa merkittävästi.",
343
+ "importing": "Tuoda...",
344
+ "startImport": "Aloita Tuonti",
345
+ "howItWorks": "Miten tuonti toimii",
346
+ "howItWorksDesc": "Tracearr tuo kaikki historialliset kellon tiedot lähteestäsi. Tämä voi kestää jonkin aikaa riippuen kirjaston koosta.",
347
+ "recordsMayBeSkipped": "Tietueet voidaan ohittaa, jos:",
348
+ "selectTargetServer": "Valitse Kohdepalvelin",
349
+ "selectJellyfinServer": "Valitse Jellyfin tai Emby palvelin",
350
+ "uploadJellystatBackup": "Lataa Jellystatin Varmuuskopio",
351
+ "exportBackupHint": "Vie aktiviteetin varmuuskopio Jellystatista",
352
+ "exportBackupHelp": "Valitse Jellystatissa Asetukset → Varmuuskopioi → Varmuuskopioi toiminnot viedäksesi tietosi.",
353
+ "importOptions": "Tuonnin Asetukset",
354
+ "enrichMetadata": "Rikasta median metadatassa (suositeltu)",
355
+ "enrichMetadataHelp": "Noudetaan muita metatietoja mediapalvelimelta tuotuja istuntoja varten.",
356
+ "updateExistingRecords": "Päivitä olemassa olevat tietueet stream-tiedoilla",
357
+ "updateExistingRecordsHelp": "Aiemmin tuotuja tietueita päivitetään streamin laatutiedoilla.",
358
+ "pleaseEnterDetails": "Syötä Tautulli URL ja API-avain",
359
+ "testingConnection": "Testataan yhteyttä...",
360
+ "pleaseSelectJsonFile": "Ole hyvä ja valitse JSON tiedosto",
361
+ "uploadingBackup": "Ladataan varmuuskopiotiedostoa...",
362
+ "importHistoryDesc": "Tuo historiallinen kellon tiedot ulkoisista lähteistä",
363
+ "plex": "Plex (Tautulli)",
364
+ "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
365
+ "step1": "1",
366
+ "step2": "2",
367
+ "apiKeyPlaceholder": "Tautulli API avain",
368
+ "skipUserNotFoundPlex": "Käyttäjää ei löydy — Plex-käyttäjää ei ole olemassa Tracearrissa. Synkronoi palvelin ensin lisätäksesi kaikki käyttäjät.",
369
+ "skipDuplicate": "Kaksoiskappale istunto — Istunto on jo tuotu aiemmin.",
370
+ "skipInProgress": "Seurantaistunto – Aktiiviset/keskeneräiset istunnot ilman viitetunnusta ohitetaan.",
371
+ "skipUserNotFoundJellyfin": "Käyttäjää ei löydy — Jellyfin/Emby-käyttäjää ei ole Tracearrissa. Synkronoi palvelin ensin lisätäksesi kaikki käyttäjät.",
372
+ "skipSyncHint": "Jos monta tietuetta ohitetaan, varmista, että olet synkronoinut palvelimen äskettäin Asetukset → Palvelimet.",
373
+ "importInProgressPercent": "Tuonti käynnissä ({{percent}}% valmis)...",
374
+ "importInProgressGeneric": "Tuonti käynnissä...",
375
+ "startingImport": "Aloitetaan tuontia...",
376
+ "connectedFound": "Connected! Found {{users}} users and {{records}} history records.",
377
+ "playbackReporting": "Playback Reporting Plugin",
378
+ "playbackReportingDesc": "Import history directly from the Playback Reporting plugin installed on your Jellyfin or Emby server. No file export needed.",
379
+ "checkPlugin": "Check Plugin",
380
+ "checkingPlugin": "Checking...",
381
+ "pluginFound": "Plugin found: {{records}} records from {{oldestDate}} to {{newestDate}}",
382
+ "pluginNotInstalled": "The Playback Reporting plugin is not installed on this server, or Tracearr cannot reach it. Install it from the server's plugin catalog to start recording history, or use the Jellystat import below.",
383
+ "serverTimezone": "Server Timezone",
384
+ "serverTimezoneHelp": "Must match the timezone configured on your media server host, not your browser's timezone. Playback Reporting timestamps are stored in local server time.",
385
+ "importFullRange": "Import full history",
386
+ "importFullRangeHelp": "By default only history older than Tracearr's earliest tracked session for this server is imported, so sessions Tracearr already recorded are never duplicated. Enable this to import the plugin's entire history regardless of overlap, if your Tracearr history has gaps. Exact duplicates are still skipped.",
387
+ "overlapSkipped": "{{count}} skipped as overlap",
388
+ "duplicates": "{{count}} duplicates skipped",
389
+ "skipOverlap": "Overlapping record - the timestamp falls inside the period Tracearr already tracks for this server. Enable full-range import to include it.",
390
+ "skipDuplicatePlugin": "Duplicate record - already imported directly or arrived earlier via a Jellystat import of the same plugin data."
391
+ },
392
+ "plex": {
393
+ "signInWithPlex": "Kirjaudu sisään Plexillä",
394
+ "signUpWithPlex": "Rekisteröidy käyttäen Plexiä",
395
+ "selectServer": "Valitse Palvelin",
396
+ "chooseServer": "Valitse, mitä Plex Media Serveriä seurataan"
397
+ },
398
+ "account": {
399
+ "createAccount": "Luo Tili",
400
+ "email": "Sähköposti",
401
+ "password": "Salasana",
402
+ "displayName": "Näytön Nimi",
403
+ "createYourAccount": "Luo tilisi päästäksesi alkuun",
404
+ "signInToAccount": "Kirjaudu sisään tilillesi",
405
+ "useLocalAccount": "Käytä paikallista tiliä sen sijaan"
481
406
  },
482
- "title": "Asetukset",
483
407
  "update": {
484
- "betaUpdate": "Beta Päivitys",
485
- "newVersion": "Uusi Versio",
486
- "pullInstructions": "Käynnistä kontti uudelleen vetämisen jälkeen käyttääksesi päivitystä.",
487
- "releaseNotes": "Julkaise Muistiinpanot",
488
- "stableRelease": "Vakaa Versio",
489
408
  "title": "Päivitys Saatavilla",
409
+ "releaseNotes": "Julkaise Muistiinpanot",
490
410
  "updateCommand": "Päivitä Komento",
411
+ "pullInstructions": "Käynnistä kontti uudelleen vetämisen jälkeen käyttääksesi päivitystä.",
412
+ "stableRelease": "Vakaa Versio",
413
+ "betaUpdate": "Beta Päivitys",
414
+ "newVersion": "Uusi Versio",
491
415
  "versionAvailable": "{{version}} saatavilla"
492
416
  },
493
- "webhooks": {
494
- "customWebhook": "Mukautettu Webkoukun URL",
495
- "discordWebhook": "Discord Webhook URL",
496
- "ntfyTopic": "Ntfy Aihe",
497
- "testWebhook": "Testaa Webkoukku",
498
- "title": "Webkoukun Asetukset",
499
- "webhookFormat": "Webkoukun Muoto"
417
+ "serverHealth": {
418
+ "unreachable": "{{serverName}} ei ole tavoitettavissa",
419
+ "multipleUnreachable": "{{count}} servers unreachable: {{serverNames}}"
420
+ },
421
+ "ipWarning": {
422
+ "message": "Kaikki käyttäjät näyttävät käyttävän samaa IP-osoitetta tai paikallisia verkko-osoitteita. Tämä saattaa vaikuttaa sääntöpohjaiseen sijainti- tai IP-osoitteiden logiikkaan.",
423
+ "acknowledge": "Asia ymmärretty"
424
+ },
425
+ "backup": {
426
+ "title": "Varmuuskopio",
427
+ "backToBackups": "Takaisin varmuuskopioihin",
428
+ "description": "Varmuuskopioi ja palauta Tracearr tiedot",
429
+ "createBackup": "Luo Varmuuskopio",
430
+ "creating": "Luodaan varmuuskopiota...",
431
+ "uploadBackup": "Lataa Varmuuskopio",
432
+ "uploading": "Lähetetään...",
433
+ "databaseSize": "Current database size: {{size}}",
434
+ "freeSpace": "Varmuuskopiointihakemiston vapaa tila: {{size}}",
435
+ "lowDiskSpace": "Alhainen levytila — varmuuskopiot ja palautukset vaativat vähintään kaksi kertaa tietokannan koko vapaassa tilassa.",
436
+ "backupHistory": "Varmuuskopioinnin Historia",
437
+ "noBackups": "Ei vielä varmuuskopioita. Luo ensimmäinen varmuuskopiosi yllä.",
438
+ "filename": "Tiedostonimi",
439
+ "size": "Koko",
440
+ "date": "Päivämäärä",
441
+ "type": "Tyyppi",
442
+ "version": "Versio",
443
+ "actions": "Toiminnot",
444
+ "typeManual": "Manuaalinen",
445
+ "typeScheduled": "Ajoitettu",
446
+ "typeUploaded": "Ladattu",
447
+ "restoreAction": "Palauta",
448
+ "deleteConfirmTitle": "Poista Varmuuskopio",
449
+ "deleteConfirmDescription": "Oletko varma, että haluat poistaa tämän varmuuskopion? Tätä ei voi perua.",
450
+ "schedule": "Ajoitetut Varmuuskopiot",
451
+ "scheduleType": "Aikataulu",
452
+ "scheduleDisabled": "Pois Käytöstä",
453
+ "scheduleDaily": "Päivittäin",
454
+ "scheduleWeekly": "Viikoittain",
455
+ "scheduleMonthly": "Kuukausittain",
456
+ "scheduleTime": "Aika ({{timezone}})",
457
+ "scheduleDayOfWeek": "Viikon päivä",
458
+ "scheduleDayOfMonth": "Kuukauden päivä",
459
+ "scheduleDayOfMonthHint": "Kuukausia, joilla on vähemmän päiviä, varmuuskopio toimii viimeisenä päivänä.",
460
+ "retentionCount": "Säilytä Viimeinen",
461
+ "retentionSuffix": "ajoitetut varmuuskopiot",
462
+ "daySun": "Sunnuntai",
463
+ "dayMon": "Maanantai",
464
+ "dayTue": "Tiistai",
465
+ "dayWed": "Keskiviikko",
466
+ "dayThu": "Torstai",
467
+ "dayFri": "Perjantai",
468
+ "daySat": "Lauantai",
469
+ "restore": {
470
+ "title": "Palauta Varmuuskopio",
471
+ "selectedBackup": "Valittu Varmuuskopio",
472
+ "databaseSize": "Tietokannan Koko",
473
+ "sessions": "Istunnot",
474
+ "users": "Käyttäjät",
475
+ "servers": "Palvelimet",
476
+ "rules": "Säännöt",
477
+ "libraryItems": "Kirjaston Nimikkeet",
478
+ "tables": "Taulukot",
479
+ "warning": "Palautus korvaa kaikki olemassa olevat tiedot. Sinun täytyy kirjautua uudelleen palautuksen jälkeen.",
480
+ "confirmLabel": "Ymmärrän, että tämä korvaa kaikki tiedot",
481
+ "confirm": "Aloita Palautus",
482
+ "complete": "Palautus suoritettu onnistuneesti. Sivu päivittyy pian.",
483
+ "failed": "Palautus epäonnistui",
484
+ "cannotRestore": "Palautus edellyttää PostgreSQL superuser oikeuksia. Varmista, että tietokannan käyttäjällä on pääkäyttäjän oikeudet ja yritä uudelleen.",
485
+ "pgVersionMismatch": "Backup was created on PostgreSQL {{backupVersion}} but this server runs PostgreSQL {{serverVersion}}. Restoring a dump from a newer PostgreSQL version is not supported.",
486
+ "tsVersionMismatch": "Backup was created with TimescaleDB {{backupVersion}} but this server only supports up to TimescaleDB {{serverVersion}}."
487
+ },
488
+ "toast": {
489
+ "backupCreated": "Varmuuskopio luotu onnistuneesti",
490
+ "backupCreateFailed": "Varmuuskopion luonti epäonnistui",
491
+ "backupUploaded": "Varmuuskopiointi ladattu onnistuneesti",
492
+ "backupUploadFailed": "Varmuuskopion lataaminen epäonnistui",
493
+ "backupDeleted": "Varmuuskopiointi poistettu",
494
+ "backupDeleteFailed": "Varmuuskopion poistaminen epäonnistui",
495
+ "restoreStarted": "Palautus aloitettu",
496
+ "restoreStartFailed": "Palautuksen aloittaminen epäonnistui",
497
+ "scheduleSaved": "Varmuuskopiointi tallennettu",
498
+ "scheduleError": "Varmuuskopioinnin aikataulun tallennus epäonnistui"
499
+ }
500
500
  }
501
501
  }