@tracearr/translations 3.1.3 → 3.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/dist/config.d.ts +30 -4
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.mobile.d.ts +30 -4
  4. package/dist/config.mobile.d.ts.map +1 -1
  5. package/dist/locales/af-ZA/common.json +3 -1
  6. package/dist/locales/af-ZA/mobile.json +7 -2
  7. package/dist/locales/af-ZA/nav.json +1 -1
  8. package/dist/locales/af-ZA/notifications.json +1 -1
  9. package/dist/locales/af-ZA/pages.json +50 -3
  10. package/dist/locales/af-ZA/settings.json +1 -1
  11. package/dist/locales/ar-SA/common.json +7 -1
  12. package/dist/locales/ar-SA/mobile.json +15 -2
  13. package/dist/locales/ar-SA/nav.json +1 -1
  14. package/dist/locales/ar-SA/notifications.json +1 -1
  15. package/dist/locales/ar-SA/pages.json +210 -3
  16. package/dist/locales/ar-SA/settings.json +1 -1
  17. package/dist/locales/ca-ES/common.json +15 -13
  18. package/dist/locales/ca-ES/mobile.json +21 -16
  19. package/dist/locales/ca-ES/nav.json +4 -4
  20. package/dist/locales/ca-ES/notifications.json +6 -6
  21. package/dist/locales/ca-ES/pages.json +508 -461
  22. package/dist/locales/ca-ES/settings.json +106 -106
  23. package/dist/locales/cs-CZ/common.json +5 -1
  24. package/dist/locales/cs-CZ/mobile.json +11 -2
  25. package/dist/locales/cs-CZ/nav.json +1 -1
  26. package/dist/locales/cs-CZ/notifications.json +1 -1
  27. package/dist/locales/cs-CZ/pages.json +130 -3
  28. package/dist/locales/cs-CZ/settings.json +1 -1
  29. package/dist/locales/da-DK/common.json +3 -1
  30. package/dist/locales/da-DK/mobile.json +7 -2
  31. package/dist/locales/da-DK/nav.json +1 -1
  32. package/dist/locales/da-DK/notifications.json +1 -1
  33. package/dist/locales/da-DK/pages.json +50 -3
  34. package/dist/locales/da-DK/settings.json +1 -1
  35. package/dist/locales/de-DE/common.json +26 -24
  36. package/dist/locales/de-DE/mobile.json +78 -73
  37. package/dist/locales/de-DE/nav.json +9 -9
  38. package/dist/locales/de-DE/notifications.json +1 -1
  39. package/dist/locales/de-DE/pages.json +188 -141
  40. package/dist/locales/de-DE/settings.json +89 -89
  41. package/dist/locales/el-GR/common.json +3 -1
  42. package/dist/locales/el-GR/mobile.json +7 -2
  43. package/dist/locales/el-GR/nav.json +1 -1
  44. package/dist/locales/el-GR/notifications.json +1 -1
  45. package/dist/locales/el-GR/pages.json +50 -3
  46. package/dist/locales/el-GR/settings.json +1 -1
  47. package/dist/locales/en/common.json +1 -0
  48. package/dist/locales/en/mobile.json +6 -1
  49. package/dist/locales/en/pages.json +9 -2
  50. package/dist/locales/es-ES/common.json +3 -1
  51. package/dist/locales/es-ES/mobile.json +7 -2
  52. package/dist/locales/es-ES/nav.json +1 -1
  53. package/dist/locales/es-ES/notifications.json +1 -1
  54. package/dist/locales/es-ES/pages.json +50 -3
  55. package/dist/locales/es-ES/settings.json +1 -1
  56. package/dist/locales/fi-FI/common.json +3 -1
  57. package/dist/locales/fi-FI/mobile.json +7 -2
  58. package/dist/locales/fi-FI/nav.json +1 -1
  59. package/dist/locales/fi-FI/notifications.json +1 -1
  60. package/dist/locales/fi-FI/pages.json +52 -5
  61. package/dist/locales/fi-FI/settings.json +1 -1
  62. package/dist/locales/fr-FR/common.json +25 -23
  63. package/dist/locales/fr-FR/mobile.json +27 -22
  64. package/dist/locales/fr-FR/nav.json +4 -4
  65. package/dist/locales/fr-FR/notifications.json +1 -1
  66. package/dist/locales/fr-FR/pages.json +123 -76
  67. package/dist/locales/fr-FR/settings.json +163 -163
  68. package/dist/locales/he-IL/common.json +4 -1
  69. package/dist/locales/he-IL/mobile.json +9 -2
  70. package/dist/locales/he-IL/nav.json +1 -1
  71. package/dist/locales/he-IL/notifications.json +1 -1
  72. package/dist/locales/he-IL/pages.json +90 -3
  73. package/dist/locales/he-IL/settings.json +1 -1
  74. package/dist/locales/hu-HU/common.json +3 -1
  75. package/dist/locales/hu-HU/mobile.json +7 -2
  76. package/dist/locales/hu-HU/nav.json +1 -1
  77. package/dist/locales/hu-HU/notifications.json +1 -1
  78. package/dist/locales/hu-HU/pages.json +50 -3
  79. package/dist/locales/hu-HU/settings.json +1 -1
  80. package/dist/locales/it-IT/common.json +3 -1
  81. package/dist/locales/it-IT/mobile.json +7 -2
  82. package/dist/locales/it-IT/nav.json +1 -1
  83. package/dist/locales/it-IT/notifications.json +1 -1
  84. package/dist/locales/it-IT/pages.json +50 -3
  85. package/dist/locales/it-IT/settings.json +1 -1
  86. package/dist/locales/ja-JP/common.json +2 -1
  87. package/dist/locales/ja-JP/mobile.json +5 -2
  88. package/dist/locales/ja-JP/nav.json +1 -1
  89. package/dist/locales/ja-JP/notifications.json +1 -1
  90. package/dist/locales/ja-JP/pages.json +10 -3
  91. package/dist/locales/ja-JP/settings.json +1 -1
  92. package/dist/locales/ko-KR/common.json +2 -1
  93. package/dist/locales/ko-KR/mobile.json +5 -2
  94. package/dist/locales/ko-KR/nav.json +1 -1
  95. package/dist/locales/ko-KR/notifications.json +1 -1
  96. package/dist/locales/ko-KR/pages.json +12 -5
  97. package/dist/locales/ko-KR/settings.json +1 -1
  98. package/dist/locales/nl-NL/common.json +3 -1
  99. package/dist/locales/nl-NL/mobile.json +7 -2
  100. package/dist/locales/nl-NL/nav.json +1 -1
  101. package/dist/locales/nl-NL/notifications.json +1 -1
  102. package/dist/locales/nl-NL/pages.json +50 -3
  103. package/dist/locales/nl-NL/settings.json +1 -1
  104. package/dist/locales/no-NO/common.json +3 -1
  105. package/dist/locales/no-NO/mobile.json +7 -2
  106. package/dist/locales/no-NO/nav.json +1 -1
  107. package/dist/locales/no-NO/notifications.json +1 -1
  108. package/dist/locales/no-NO/pages.json +50 -3
  109. package/dist/locales/no-NO/settings.json +1 -1
  110. package/dist/locales/pl-PL/common.json +19 -15
  111. package/dist/locales/pl-PL/mobile.json +14 -5
  112. package/dist/locales/pl-PL/nav.json +4 -4
  113. package/dist/locales/pl-PL/notifications.json +6 -6
  114. package/dist/locales/pl-PL/pages.json +592 -465
  115. package/dist/locales/pl-PL/settings.json +107 -107
  116. package/dist/locales/pt-BR/common.json +3 -1
  117. package/dist/locales/pt-BR/mobile.json +7 -2
  118. package/dist/locales/pt-BR/nav.json +1 -1
  119. package/dist/locales/pt-BR/notifications.json +1 -1
  120. package/dist/locales/pt-BR/pages.json +50 -3
  121. package/dist/locales/pt-BR/settings.json +1 -1
  122. package/dist/locales/pt-PT/common.json +3 -1
  123. package/dist/locales/pt-PT/mobile.json +7 -2
  124. package/dist/locales/pt-PT/nav.json +1 -1
  125. package/dist/locales/pt-PT/notifications.json +1 -1
  126. package/dist/locales/pt-PT/pages.json +50 -3
  127. package/dist/locales/pt-PT/settings.json +1 -1
  128. package/dist/locales/ro-RO/common.json +4 -1
  129. package/dist/locales/ro-RO/mobile.json +9 -2
  130. package/dist/locales/ro-RO/nav.json +1 -1
  131. package/dist/locales/ro-RO/notifications.json +1 -1
  132. package/dist/locales/ro-RO/pages.json +90 -3
  133. package/dist/locales/ro-RO/settings.json +1 -1
  134. package/dist/locales/ru-RU/common.json +120 -116
  135. package/dist/locales/ru-RU/mobile.json +224 -215
  136. package/dist/locales/ru-RU/nav.json +10 -10
  137. package/dist/locales/ru-RU/notifications.json +80 -80
  138. package/dist/locales/ru-RU/pages.json +2148 -2021
  139. package/dist/locales/ru-RU/settings.json +717 -717
  140. package/dist/locales/sr-SP/common.json +4 -1
  141. package/dist/locales/sr-SP/mobile.json +9 -2
  142. package/dist/locales/sr-SP/nav.json +1 -1
  143. package/dist/locales/sr-SP/notifications.json +1 -1
  144. package/dist/locales/sr-SP/pages.json +90 -3
  145. package/dist/locales/sr-SP/settings.json +1 -1
  146. package/dist/locales/sv-SE/common.json +3 -1
  147. package/dist/locales/sv-SE/mobile.json +7 -2
  148. package/dist/locales/sv-SE/nav.json +1 -1
  149. package/dist/locales/sv-SE/notifications.json +1 -1
  150. package/dist/locales/sv-SE/pages.json +50 -3
  151. package/dist/locales/sv-SE/settings.json +1 -1
  152. package/dist/locales/tr-TR/common.json +3 -1
  153. package/dist/locales/tr-TR/mobile.json +7 -2
  154. package/dist/locales/tr-TR/nav.json +1 -1
  155. package/dist/locales/tr-TR/notifications.json +1 -1
  156. package/dist/locales/tr-TR/pages.json +50 -3
  157. package/dist/locales/tr-TR/settings.json +1 -1
  158. package/dist/locales/uk-UA/common.json +5 -1
  159. package/dist/locales/uk-UA/mobile.json +11 -2
  160. package/dist/locales/uk-UA/nav.json +1 -1
  161. package/dist/locales/uk-UA/notifications.json +1 -1
  162. package/dist/locales/uk-UA/pages.json +130 -3
  163. package/dist/locales/uk-UA/settings.json +1 -1
  164. package/dist/locales/vi-VN/common.json +2 -1
  165. package/dist/locales/vi-VN/mobile.json +5 -2
  166. package/dist/locales/vi-VN/nav.json +1 -1
  167. package/dist/locales/vi-VN/notifications.json +1 -1
  168. package/dist/locales/vi-VN/pages.json +10 -3
  169. package/dist/locales/vi-VN/settings.json +1 -1
  170. package/dist/locales/zh-CN/common.json +23 -22
  171. package/dist/locales/zh-CN/mobile.json +107 -104
  172. package/dist/locales/zh-CN/nav.json +4 -4
  173. package/dist/locales/zh-CN/notifications.json +31 -31
  174. package/dist/locales/zh-CN/pages.json +1468 -1461
  175. package/dist/locales/zh-CN/settings.json +613 -613
  176. package/dist/locales/zh-TW/common.json +2 -1
  177. package/dist/locales/zh-TW/mobile.json +5 -2
  178. package/dist/locales/zh-TW/nav.json +1 -1
  179. package/dist/locales/zh-TW/notifications.json +1 -1
  180. package/dist/locales/zh-TW/pages.json +10 -3
  181. package/dist/locales/zh-TW/settings.json +1 -1
  182. package/package.json +1 -1
  183. package/src/locales/af-ZA/common.json +3 -1
  184. package/src/locales/af-ZA/mobile.json +7 -2
  185. package/src/locales/af-ZA/nav.json +1 -1
  186. package/src/locales/af-ZA/notifications.json +1 -1
  187. package/src/locales/af-ZA/pages.json +50 -3
  188. package/src/locales/af-ZA/settings.json +1 -1
  189. package/src/locales/ar-SA/common.json +7 -1
  190. package/src/locales/ar-SA/mobile.json +15 -2
  191. package/src/locales/ar-SA/nav.json +1 -1
  192. package/src/locales/ar-SA/notifications.json +1 -1
  193. package/src/locales/ar-SA/pages.json +210 -3
  194. package/src/locales/ar-SA/settings.json +1 -1
  195. package/src/locales/ca-ES/common.json +15 -13
  196. package/src/locales/ca-ES/mobile.json +21 -16
  197. package/src/locales/ca-ES/nav.json +4 -4
  198. package/src/locales/ca-ES/notifications.json +6 -6
  199. package/src/locales/ca-ES/pages.json +508 -461
  200. package/src/locales/ca-ES/settings.json +106 -106
  201. package/src/locales/cs-CZ/common.json +5 -1
  202. package/src/locales/cs-CZ/mobile.json +11 -2
  203. package/src/locales/cs-CZ/nav.json +1 -1
  204. package/src/locales/cs-CZ/notifications.json +1 -1
  205. package/src/locales/cs-CZ/pages.json +130 -3
  206. package/src/locales/cs-CZ/settings.json +1 -1
  207. package/src/locales/da-DK/common.json +3 -1
  208. package/src/locales/da-DK/mobile.json +7 -2
  209. package/src/locales/da-DK/nav.json +1 -1
  210. package/src/locales/da-DK/notifications.json +1 -1
  211. package/src/locales/da-DK/pages.json +50 -3
  212. package/src/locales/da-DK/settings.json +1 -1
  213. package/src/locales/de-DE/common.json +26 -24
  214. package/src/locales/de-DE/mobile.json +78 -73
  215. package/src/locales/de-DE/nav.json +9 -9
  216. package/src/locales/de-DE/notifications.json +1 -1
  217. package/src/locales/de-DE/pages.json +188 -141
  218. package/src/locales/de-DE/settings.json +89 -89
  219. package/src/locales/el-GR/common.json +3 -1
  220. package/src/locales/el-GR/mobile.json +7 -2
  221. package/src/locales/el-GR/nav.json +1 -1
  222. package/src/locales/el-GR/notifications.json +1 -1
  223. package/src/locales/el-GR/pages.json +50 -3
  224. package/src/locales/el-GR/settings.json +1 -1
  225. package/src/locales/en/common.json +1 -0
  226. package/src/locales/en/mobile.json +6 -1
  227. package/src/locales/en/pages.json +9 -2
  228. package/src/locales/es-ES/common.json +3 -1
  229. package/src/locales/es-ES/mobile.json +7 -2
  230. package/src/locales/es-ES/nav.json +1 -1
  231. package/src/locales/es-ES/notifications.json +1 -1
  232. package/src/locales/es-ES/pages.json +50 -3
  233. package/src/locales/es-ES/settings.json +1 -1
  234. package/src/locales/fi-FI/common.json +3 -1
  235. package/src/locales/fi-FI/mobile.json +7 -2
  236. package/src/locales/fi-FI/nav.json +1 -1
  237. package/src/locales/fi-FI/notifications.json +1 -1
  238. package/src/locales/fi-FI/pages.json +52 -5
  239. package/src/locales/fi-FI/settings.json +1 -1
  240. package/src/locales/fr-FR/common.json +25 -23
  241. package/src/locales/fr-FR/mobile.json +27 -22
  242. package/src/locales/fr-FR/nav.json +4 -4
  243. package/src/locales/fr-FR/notifications.json +1 -1
  244. package/src/locales/fr-FR/pages.json +123 -76
  245. package/src/locales/fr-FR/settings.json +163 -163
  246. package/src/locales/he-IL/common.json +4 -1
  247. package/src/locales/he-IL/mobile.json +9 -2
  248. package/src/locales/he-IL/nav.json +1 -1
  249. package/src/locales/he-IL/notifications.json +1 -1
  250. package/src/locales/he-IL/pages.json +90 -3
  251. package/src/locales/he-IL/settings.json +1 -1
  252. package/src/locales/hu-HU/common.json +3 -1
  253. package/src/locales/hu-HU/mobile.json +7 -2
  254. package/src/locales/hu-HU/nav.json +1 -1
  255. package/src/locales/hu-HU/notifications.json +1 -1
  256. package/src/locales/hu-HU/pages.json +50 -3
  257. package/src/locales/hu-HU/settings.json +1 -1
  258. package/src/locales/it-IT/common.json +3 -1
  259. package/src/locales/it-IT/mobile.json +7 -2
  260. package/src/locales/it-IT/nav.json +1 -1
  261. package/src/locales/it-IT/notifications.json +1 -1
  262. package/src/locales/it-IT/pages.json +50 -3
  263. package/src/locales/it-IT/settings.json +1 -1
  264. package/src/locales/ja-JP/common.json +2 -1
  265. package/src/locales/ja-JP/mobile.json +5 -2
  266. package/src/locales/ja-JP/nav.json +1 -1
  267. package/src/locales/ja-JP/notifications.json +1 -1
  268. package/src/locales/ja-JP/pages.json +10 -3
  269. package/src/locales/ja-JP/settings.json +1 -1
  270. package/src/locales/ko-KR/common.json +2 -1
  271. package/src/locales/ko-KR/mobile.json +5 -2
  272. package/src/locales/ko-KR/nav.json +1 -1
  273. package/src/locales/ko-KR/notifications.json +1 -1
  274. package/src/locales/ko-KR/pages.json +12 -5
  275. package/src/locales/ko-KR/settings.json +1 -1
  276. package/src/locales/nl-NL/common.json +3 -1
  277. package/src/locales/nl-NL/mobile.json +7 -2
  278. package/src/locales/nl-NL/nav.json +1 -1
  279. package/src/locales/nl-NL/notifications.json +1 -1
  280. package/src/locales/nl-NL/pages.json +50 -3
  281. package/src/locales/nl-NL/settings.json +1 -1
  282. package/src/locales/no-NO/common.json +3 -1
  283. package/src/locales/no-NO/mobile.json +7 -2
  284. package/src/locales/no-NO/nav.json +1 -1
  285. package/src/locales/no-NO/notifications.json +1 -1
  286. package/src/locales/no-NO/pages.json +50 -3
  287. package/src/locales/no-NO/settings.json +1 -1
  288. package/src/locales/pl-PL/common.json +19 -15
  289. package/src/locales/pl-PL/mobile.json +14 -5
  290. package/src/locales/pl-PL/nav.json +4 -4
  291. package/src/locales/pl-PL/notifications.json +6 -6
  292. package/src/locales/pl-PL/pages.json +592 -465
  293. package/src/locales/pl-PL/settings.json +107 -107
  294. package/src/locales/pt-BR/common.json +3 -1
  295. package/src/locales/pt-BR/mobile.json +7 -2
  296. package/src/locales/pt-BR/nav.json +1 -1
  297. package/src/locales/pt-BR/notifications.json +1 -1
  298. package/src/locales/pt-BR/pages.json +50 -3
  299. package/src/locales/pt-BR/settings.json +1 -1
  300. package/src/locales/pt-PT/common.json +3 -1
  301. package/src/locales/pt-PT/mobile.json +7 -2
  302. package/src/locales/pt-PT/nav.json +1 -1
  303. package/src/locales/pt-PT/notifications.json +1 -1
  304. package/src/locales/pt-PT/pages.json +50 -3
  305. package/src/locales/pt-PT/settings.json +1 -1
  306. package/src/locales/ro-RO/common.json +4 -1
  307. package/src/locales/ro-RO/mobile.json +9 -2
  308. package/src/locales/ro-RO/nav.json +1 -1
  309. package/src/locales/ro-RO/notifications.json +1 -1
  310. package/src/locales/ro-RO/pages.json +90 -3
  311. package/src/locales/ro-RO/settings.json +1 -1
  312. package/src/locales/ru-RU/common.json +120 -116
  313. package/src/locales/ru-RU/mobile.json +224 -215
  314. package/src/locales/ru-RU/nav.json +10 -10
  315. package/src/locales/ru-RU/notifications.json +80 -80
  316. package/src/locales/ru-RU/pages.json +2148 -2021
  317. package/src/locales/ru-RU/settings.json +717 -717
  318. package/src/locales/sr-SP/common.json +4 -1
  319. package/src/locales/sr-SP/mobile.json +9 -2
  320. package/src/locales/sr-SP/nav.json +1 -1
  321. package/src/locales/sr-SP/notifications.json +1 -1
  322. package/src/locales/sr-SP/pages.json +90 -3
  323. package/src/locales/sr-SP/settings.json +1 -1
  324. package/src/locales/sv-SE/common.json +3 -1
  325. package/src/locales/sv-SE/mobile.json +7 -2
  326. package/src/locales/sv-SE/nav.json +1 -1
  327. package/src/locales/sv-SE/notifications.json +1 -1
  328. package/src/locales/sv-SE/pages.json +50 -3
  329. package/src/locales/sv-SE/settings.json +1 -1
  330. package/src/locales/tr-TR/common.json +3 -1
  331. package/src/locales/tr-TR/mobile.json +7 -2
  332. package/src/locales/tr-TR/nav.json +1 -1
  333. package/src/locales/tr-TR/notifications.json +1 -1
  334. package/src/locales/tr-TR/pages.json +50 -3
  335. package/src/locales/tr-TR/settings.json +1 -1
  336. package/src/locales/uk-UA/common.json +5 -1
  337. package/src/locales/uk-UA/mobile.json +11 -2
  338. package/src/locales/uk-UA/nav.json +1 -1
  339. package/src/locales/uk-UA/notifications.json +1 -1
  340. package/src/locales/uk-UA/pages.json +130 -3
  341. package/src/locales/uk-UA/settings.json +1 -1
  342. package/src/locales/vi-VN/common.json +2 -1
  343. package/src/locales/vi-VN/mobile.json +5 -2
  344. package/src/locales/vi-VN/nav.json +1 -1
  345. package/src/locales/vi-VN/notifications.json +1 -1
  346. package/src/locales/vi-VN/pages.json +10 -3
  347. package/src/locales/vi-VN/settings.json +1 -1
  348. package/src/locales/zh-CN/common.json +23 -22
  349. package/src/locales/zh-CN/mobile.json +107 -104
  350. package/src/locales/zh-CN/nav.json +4 -4
  351. package/src/locales/zh-CN/notifications.json +31 -31
  352. package/src/locales/zh-CN/pages.json +1468 -1461
  353. package/src/locales/zh-CN/settings.json +613 -613
  354. package/src/locales/zh-TW/common.json +2 -1
  355. package/src/locales/zh-TW/mobile.json +5 -2
  356. package/src/locales/zh-TW/nav.json +1 -1
  357. package/src/locales/zh-TW/notifications.json +1 -1
  358. package/src/locales/zh-TW/pages.json +10 -3
  359. package/src/locales/zh-TW/settings.json +1 -1
@@ -1,51 +1,51 @@
1
1
  {
2
2
  "title": "Настройки",
3
3
  "nav": {
4
- "label": "",
5
- "selectLabel": "",
6
- "itemLabel": "",
4
+ "label": "Разделы настроек",
5
+ "selectLabel": "Раздел настроек",
6
+ "itemLabel": "{{group}} / {{section}}",
7
7
  "groups": {
8
- "general": "",
9
- "servers": "",
10
- "notifications": "",
11
- "access": "",
12
- "data": ""
8
+ "general": "Общие",
9
+ "servers": "Серверы",
10
+ "notifications": "Уведомления",
11
+ "access": "Доступ",
12
+ "data": "Данные и API"
13
13
  },
14
14
  "sections": {
15
- "appearance": "",
16
- "locale": "",
17
- "behavior": "",
18
- "connections": "",
19
- "posters": "",
20
- "plexAccounts": "",
21
- "destinations": "",
22
- "newsletters": "",
23
- "email": "",
24
- "memberLogin": "",
25
- "mobile": "",
26
- "remote": "",
27
- "import": "",
28
- "backup": "",
29
- "jobs": "",
30
- "api": ""
15
+ "appearance": "Внешний вид",
16
+ "locale": "Язык и единицы",
17
+ "behavior": "Поведение",
18
+ "connections": "Подключения",
19
+ "posters": "Постеры",
20
+ "plexAccounts": "Аккаунты Plex",
21
+ "destinations": "Каналы доставки",
22
+ "newsletters": "Рассылки",
23
+ "email": "Почта",
24
+ "memberLogin": "Вход",
25
+ "mobile": "Мобильные устройства",
26
+ "remote": "Удалённый доступ",
27
+ "import": "Импорт",
28
+ "backup": "Резервное копирование",
29
+ "jobs": "Задания",
30
+ "api": "API"
31
31
  },
32
32
  "descriptions": {
33
- "appearance": "",
34
- "locale": "",
35
- "behavior": "",
36
- "connections": "",
37
- "posters": "",
38
- "plexAccounts": "",
39
- "destinations": "",
40
- "memberLogin": "",
41
- "mobile": "",
42
- "remote": "",
43
- "import": "",
44
- "backup": "",
45
- "jobs": "",
46
- "api": "",
47
- "newsletters": "",
48
- "email": ""
33
+ "appearance": "Тема и акцентный цвет. Хранятся в этом браузере.",
34
+ "locale": "Язык, формат времени и единицы измерения во всей панели.",
35
+ "behavior": "Как часто Tracearr опрашивает серверы и проверяет обновления.",
36
+ "connections": "Медиасерверы, из которых Tracearr получает сессии и библиотеки.",
37
+ "posters": "Чей постер использовать, если название есть на нескольких серверах, кэшировать ли постеры заранее и что лежит в кэше.",
38
+ "plexAccounts": "Аккаунты Plex.tv, через которые Tracearr находит и авторизует серверы.",
39
+ "destinations": "Куда доставляются уведомления и дайджесты.",
40
+ "memberLogin": "Кто и как может войти в Tracearr.",
41
+ "mobile": "Устройства, сопряжённые с мобильным приложением Tracearr.",
42
+ "remote": "Как люди вне вашей сети подключаются к этому экземпляру.",
43
+ "import": "Перенос истории просмотров из Tautulli, Jellystat или Playback Reporting.",
44
+ "backup": "Снимки базы данных и конфигурации.",
45
+ "jobs": "Задания обслуживания, которые можно запускать вручную.",
46
+ "api": "Публичный ключ API, его лимит запросов и условия, при которых контент считается просмотренным.",
47
+ "newsletters": "Недавно добавленные названия, которые рассылаются участникам сервера по расписанию.",
48
+ "email": "Брендинг всех писем Tracearr и адреса, отказавшиеся от рассылок."
49
49
  }
50
50
  },
51
51
  "general": {
@@ -72,7 +72,7 @@
72
72
  "themeDark": "Тёмная",
73
73
  "themeSystem": "Система",
74
74
  "application": "Приложение",
75
- "applicationDesc": "",
75
+ "applicationDesc": "Настройка основных параметров приложения.",
76
76
  "unitSystemDesc": "Расстояния и скорости в правилах автоматизаций отображаются в милях или километрах.",
77
77
  "sessionSync": "Синхронизация сессий",
78
78
  "sessionSyncDesc": "Включить отслеживание сессий для ваших медиа серверов",
@@ -84,15 +84,15 @@
84
84
  "enhancedGeoIP": "Расширенный поиск GeoIP",
85
85
  "enhancedGeoIPDesc": "Используйте сервис GeoIP Plex для получения более точных данных о местоположении. Когда включено, IP адреса отправляются в plex. v для поиска. Локальная база данных MaxMind используется как резервная копия.",
86
86
  "externalAccess": "Внешний доступ",
87
- "externalAccessDesc": "",
87
+ "externalAccessDesc": "Настройка подключения внешних устройств (например, мобильных приложений) к серверу.",
88
88
  "externalUrl": "Внешний URL",
89
- "externalUrlPlaceholder": "",
89
+ "externalUrlPlaceholder": "https://tracearr.example.com",
90
90
  "externalUrlDesc": "URL-адрес, который внешние устройства должны использовать для доступа к этому серверу. Используется для подключения QR-кодов и мобильных приложений.",
91
91
  "detect": "Обнаружить",
92
92
  "localhostWarning": "URL-адреса локальных хостов не будут работать для внешних устройств. Используйте локальный IP адрес или имя домена.",
93
93
  "iosHttpWarning": "iOS требует HTTPS для внешних подключений. Настройте обратный прокси с помощью SSL.",
94
94
  "apiKeyDesc": "Получите доступ к Tracearr API для сторонних интеграций, таких как Homarr, Home Assistant, и т.д.",
95
- "apiDocs": "",
95
+ "apiDocs": "Документация API",
96
96
  "noApiKeyGenerated": "Ключ API не создан",
97
97
  "copyToClipboard": "Копировать в буфер обмена",
98
98
  "apiKeyReadAccess": "Ваш ключ API предоставляет полный доступ к чтению данных Tracearr.",
@@ -101,47 +101,47 @@
101
101
  "generateKey": "Сгенерировать ключ",
102
102
  "regenerateApiKey": "Пересоздать ключ API?",
103
103
  "regenerateApiKeyDesc": "Это аннулирует ваш текущий ключ API. Любые интеграции, использующие старый ключ, перестанут работать.",
104
- "publicApiSettings": "",
105
- "publicApiSettingsDesc": "",
106
- "watchedThresholdMovie": "",
107
- "watchedThresholdMovieDesc": "",
108
- "watchedThresholdTv": "",
109
- "watchedThresholdTvDesc": "",
110
- "watchedThresholdMusic": "",
111
- "watchedThresholdMusicDesc": "",
112
- "watchedThresholdSuffix": "",
113
- "apiRateLimit": "",
114
- "apiRateLimitDesc": "",
115
- "apiRateLimitSuffix": "",
104
+ "publicApiSettings": "Публичный API",
105
+ "publicApiSettingsDesc": "Настройка порогов завершения просмотра и лимитов запросов публичного API.",
106
+ "watchedThresholdMovie": "Порог просмотра фильма",
107
+ "watchedThresholdMovieDesc": "Какой процент фильма нужно посмотреть, чтобы он считался просмотренным.",
108
+ "watchedThresholdTv": "Порог просмотра серии",
109
+ "watchedThresholdTvDesc": "Какой процент серии нужно посмотреть, чтобы она считалась просмотренной.",
110
+ "watchedThresholdMusic": "Порог прослушивания трека",
111
+ "watchedThresholdMusicDesc": "Какой процент трека нужно воспроизвести, чтобы он считался прослушанным.",
112
+ "watchedThresholdSuffix": "%",
113
+ "apiRateLimit": "Лимит запросов к API",
114
+ "apiRateLimitDesc": "Максимум запросов к публичному API в минуту на один ключ. Чтобы применить, нужен перезапуск.",
115
+ "apiRateLimitSuffix": "/мин",
116
116
  "updateChecks": {
117
- "title": "",
118
- "description": "",
119
- "plugin": "",
120
- "pluginDesc": "",
121
- "server": "",
122
- "serverDesc": ""
117
+ "title": "Проверка обновлений",
118
+ "description": "Tracearr ищет новые версии каждые шесть часов. Уведомления отправляет автоматизация, настроенная на триггеры обновлений.",
119
+ "plugin": "Плагин реального времени",
120
+ "pluginDesc": "Проверять новые версии плагина Tracearr, через который серверы Jellyfin и Emby передают события.",
121
+ "server": "Медиасерверы",
122
+ "serverDesc": "Сравнивать версию каждого сервера Plex, Jellyfin и Emby с последним выпуском от разработчиков."
123
123
  },
124
124
  "imageCache": {
125
- "title": "",
126
- "description": "",
127
- "size": "",
128
- "files": "",
129
- "need": "",
130
- "free": "",
131
- "freeOf": "",
132
- "floor": "",
133
- "ceiling": "",
134
- "lastSweep": "",
135
- "swept": "",
136
- "freed": "",
137
- "never": "",
138
- "diskLimited": "",
139
- "loadError": "",
140
- "notPersisting": "",
141
- "needHint_one": "",
142
- "needHint_few": "",
143
- "needHint_many": "",
144
- "needHint_other": ""
125
+ "title": "Кэш постеров",
126
+ "description": "По одной копии каждого постера на диске, пока постер не изменится. Ничего не вытесняется ради места: когда на диске мало места, кэш перестаёт расти и сообщает об этом.",
127
+ "size": "На диске",
128
+ "files": "Файлы",
129
+ "need": "Примерный объём",
130
+ "free": "Свободно на диске",
131
+ "freeOf": "из {{total}}",
132
+ "floor": "Оставляет свободным",
133
+ "ceiling": "Предел",
134
+ "lastSweep": "Последняя очистка",
135
+ "swept": "Удалено при последней очистке",
136
+ "freed": "Освобождено при последней очистке",
137
+ "never": "пока нет",
138
+ "diskLimited": "Не хватает места на диске с {{since}}: примерно {{shortfall}} постеров не кэшировано.",
139
+ "loadError": "Не удалось загрузить состояние кэша.",
140
+ "notPersisting": "Кэш постеров не сохраняется после перезапуска. Подключите том к каталогу кэша, иначе при каждом пересоздании контейнера все постеры будут скачиваться заново.",
141
+ "needHint_one": "{{count}} постер × {{size}}",
142
+ "needHint_few": "{{count}} постера × {{size}}",
143
+ "needHint_many": "{{count}} постеров × {{size}}",
144
+ "needHint_other": "{{count}} постеров × {{size}}"
145
145
  }
146
146
  },
147
147
  "servers": {
@@ -160,7 +160,7 @@
160
160
  "selectAccountHelp": "Выберите, с какой учетной записи Plex обнаружить серверы.",
161
161
  "allServersConnected": "Все серверы подключены",
162
162
  "allServersConnectedDesc": "Все серверы этой учетной записи уже подключены.",
163
- "serverUrlPlaceholder": "",
163
+ "serverUrlPlaceholder": "http://192.168.1.100:8096",
164
164
  "serverNamePlaceholder": "Мой медиа сервер",
165
165
  "apiKeyPlaceholder": "Введите ваш API ключ",
166
166
  "connectServer": "Подключить сервер",
@@ -179,85 +179,85 @@
179
179
  "plexAccount": "Аккаунт Plex",
180
180
  "serverUrlHelpJellyfin": "URL-адрес, на котором доступен ваш сервер Jellyfin",
181
181
  "serverUrlHelpEmby": "URL-адрес, на котором доступен сервер Emby",
182
- "publicUrl": "",
183
- "publicUrlHint": "",
182
+ "publicUrl": "Публичный адрес",
183
+ "publicUrlHint": "Адрес, по которому участники открывают этот сервер. Он используется в ссылках рассылок.",
184
184
  "apiKeyHelpJellyfin": "Найти это в панели управления Jellyfin → API Keys",
185
185
  "apiKeyHelpEmby": "Найти это в Emby Server → API Keys",
186
- "apiKeyKeepCurrent": "",
186
+ "apiKeyKeepCurrent": "Оставьте пустым, чтобы сохранить текущий ключ",
187
187
  "plexServerPlaceholder": "Мой Plex Сервер",
188
- "plexServerUrlPlaceholder": "",
188
+ "plexServerUrlPlaceholder": "http://192.168.1.100:32400",
189
189
  "updateHint": "Или нажмите кнопку Обновить ниже, чтобы сохранить только изменение имени.",
190
- "reorder": "",
190
+ "reorder": "Переместить сервер",
191
191
  "added": "Добавлено {{date}}",
192
- "realtimeActive": "",
193
- "pollingMode": "",
194
- "setupRealtime": "",
195
- "realtimeError": "",
196
- "checkingConnection": "",
197
- "pluginVersion": "",
198
- "pluginUpdateAvailable": "",
199
- "historical": "",
200
- "historicalSince": "",
201
- "markHistorical": "",
202
- "resume": "",
203
- "moreActions": "",
204
- "markHistoricalTitle": "",
205
- "markHistoricalConfirm": "",
206
- "resumeFirst": "",
192
+ "realtimeActive": "Обновления в реальном времени активны",
193
+ "pollingMode": "Опрос",
194
+ "setupRealtime": "Настроить обновления в реальном времени",
195
+ "realtimeError": "Ошибка обновлений в реальном времени",
196
+ "checkingConnection": "Проверка подключения…",
197
+ "pluginVersion": "плагин v{{version}}",
198
+ "pluginUpdateAvailable": "Доступно обновление плагина",
199
+ "historical": "Архивный",
200
+ "historicalSince": "Архивный с {{date}}",
201
+ "markHistorical": "Отметить как архивный",
202
+ "resume": "Возобновить",
203
+ "moreActions": "Другие действия",
204
+ "markHistoricalTitle": "Отметить {{name}} как архивный?",
205
+ "markHistoricalConfirm": "Tracearr перестанет обращаться к этому серверу. Его история, пользователи и библиотеки сохранятся, а работу можно возобновить в любое время. Потоки, которые идут на нём сейчас, будут завершены.",
206
+ "resumeFirst": "Чтобы изменить адрес или ключ API, сначала возобновите работу с сервером.",
207
207
  "location": {
208
- "title": "",
209
- "description": "",
210
- "set": "",
211
- "addMove": "",
212
- "fromBeginning": "",
213
- "movedOn": "",
214
- "latitude": "",
215
- "longitude": "",
216
- "country": "",
217
- "countryPlaceholder": "",
218
- "countrySearch": "",
219
- "countryEmpty": "",
220
- "city": "",
221
- "region": "",
222
- "pickHint": "",
223
- "incomplete": "",
224
- "syncPending": ""
208
+ "title": "Местоположение",
209
+ "description": "Необязательно. Размещает локальные сессии этого сервера на карте. Ничего не определяется через интернет: вы указываете это здесь.",
210
+ "set": "Указать местоположение",
211
+ "addMove": "Добавить переезд",
212
+ "fromBeginning": "С самого начала",
213
+ "movedOn": "С даты",
214
+ "latitude": "Широта",
215
+ "longitude": "Долгота",
216
+ "country": "Страна",
217
+ "countryPlaceholder": "Выберите страну",
218
+ "countrySearch": "Поиск стран...",
219
+ "countryEmpty": "Страна не найдена",
220
+ "city": "Город",
221
+ "region": "Регион",
222
+ "pickHint": "Нажмите на карту, чтобы разместить сервер, или введите координаты.",
223
+ "incomplete": "Для каждого местоположения нужны страна и правильные координаты.",
224
+ "syncPending": "Прошлые сессии ещё обновляются."
225
225
  },
226
226
  "realtimeDialog": {
227
- "title": "",
228
- "updateTitle": "",
229
- "jellyfinDescription": "",
230
- "embyDescription": "",
231
- "jellyfinUpdateDescription": "",
232
- "embyUpdateDescription": "",
233
- "repositoryUrl": "",
234
- "copyUrl": "",
235
- "jellyfinRepoUrl": "",
236
- "autoDetectNote": "",
237
- "issueBlocked": "",
238
- "issueRestartRequired": "",
239
- "issueMalfunctioned": "",
240
- "jellyfinStep1": "",
241
- "jellyfinStep2": "",
242
- "jellyfinStep3": "",
243
- "jellyfinStep4": "",
244
- "embyStep1": "",
245
- "embyStep2": "",
246
- "embyStep3": ""
227
+ "title": "Включить обновления в реальном времени",
228
+ "updateTitle": "Обновите плагин Tracearr SSE",
229
+ "jellyfinDescription": "Установите плагин Tracearr SSE, чтобы сессии обновлялись сразу, без ожидания следующего опроса.",
230
+ "embyDescription": "Установите плагин Tracearr SSE, чтобы сессии обновлялись сразу, без ожидания следующего опроса.",
231
+ "jellyfinUpdateDescription": "Доступна новая версия плагина. Откройте панель Jellyfin, перейдите в раздел \"Плагины\", затем в \"Каталог\", обновите Tracearr SSE и перезапустите Jellyfin.",
232
+ "embyUpdateDescription": "Доступна новая версия плагина. Откройте панель Emby, перейдите в раздел \"Плагины\", затем в \"Каталог\", обновите Tracearr SSE и перезапустите Emby.",
233
+ "repositoryUrl": "URL репозитория",
234
+ "copyUrl": "Копировать URL",
235
+ "jellyfinRepoUrl": "https://raw.githubusercontent.com/Tracearr/Media-Server-SSE/main/manifest.json",
236
+ "autoDetectNote": "После установки плагина перезапустите Jellyfin или Emby: это обязательно. Сам Tracearr перезапускать не нужно, он обнаружит плагин автоматически.",
237
+ "issueBlocked": "Сервер сообщает, что плагин установлен и активен, но его конечная точка возвращает Tracearr ошибку 404. Обычно этот путь блокирует обратный прокси.",
238
+ "issueRestartRequired": "Плагин установлен, но для его запуска нужно перезапустить медиасервер.",
239
+ "issueMalfunctioned": "Сервер сообщает, что плагин не загрузился. Обычно помогает обновление плагина или медиасервера.",
240
+ "jellyfinStep1": "В панели Jellyfin перейдите в раздел Плагины → Репозитории.",
241
+ "jellyfinStep2": "Добавьте репозиторий с именем <strong>Tracearr</strong> и URL ниже.",
242
+ "jellyfinStep3": "Откройте вкладку \"Каталог\" и установите <strong>Tracearr SSE</strong>.",
243
+ "jellyfinStep4": "Перезапустите Jellyfin, и Tracearr обнаружит плагин автоматически.",
244
+ "embyStep1": "В панели Emby перейдите в раздел Плагины → Каталог.",
245
+ "embyStep2": "Найдите <strong>Tracearr SSE</strong> в строке \"Уведомления\" и установите его.",
246
+ "embyStep3": "Перезапустите Emby, и Tracearr обнаружит плагин автоматически."
247
247
  },
248
248
  "posterSource": {
249
- "label": "",
250
- "description": "",
251
- "automatic": "",
252
- "emptyHint": "",
253
- "ownerOnly": "",
254
- "precache": "",
255
- "precacheDescription": ""
249
+ "label": "Предпочтительный источник постеров",
250
+ "description": "Если название есть на нескольких серверах, используется постер этого сервера. Если у него постера нет, берётся постер самой недавно добавленной копии.",
251
+ "automatic": "Автоматически (самый новый)",
252
+ "emptyHint": "Добавьте сервер, чтобы выбрать предпочтительный источник постеров.",
253
+ "ownerOnly": "Изменять настройки постеров может только владелец.",
254
+ "precache": "Кэшировать постеры после синхронизации библиотек",
255
+ "precacheDescription": "Загружает постеры новых и изменённых названий после каждой синхронизации, чтобы страницы библиотеки не ждали медиасервер. Если выключено, постер кэшируется, когда кто-то впервые открывает страницу с ним."
256
256
  },
257
257
  "version": {
258
- "installed": "",
259
- "upToDate": "",
260
- "updateAvailable": ""
258
+ "installed": "Версия {{version}}",
259
+ "upToDate": "актуальна",
260
+ "updateAvailable": "доступно обновление {{version}}"
261
261
  },
262
262
  "ownerAccount": {
263
263
  "label": "",
@@ -284,10 +284,10 @@
284
284
  }
285
285
  },
286
286
  "mobile": {
287
- "lastSeen": "",
288
- "connectedOn": "",
287
+ "lastSeen": "Последняя активность: {{when}}",
288
+ "connectedOn": "Подключено: {{date}}",
289
289
  "noDevices": "Устройства не подключены",
290
- "noDevicesDesc": "",
290
+ "noDevicesDesc": "Установите приложение и выполните сопряжение с помощью одноразового QR-кода.",
291
291
  "revokeAll": "Отозвать все сессии",
292
292
  "getOnGooglePlay": "Получить на Google Play",
293
293
  "downloadOnAppStore": "Скачать на App Store",
@@ -304,7 +304,7 @@
304
304
  "expiresIn": "Истекает через {{time}}",
305
305
  "oneTimePairToken": "Одноразовый токен сопряжения",
306
306
  "copyToken": "Копировать токен",
307
- "tokenExpiryNote": "",
307
+ "tokenExpiryNote": "Этот токен действует 15 минут и может быть использован только один раз.",
308
308
  "done": "Готово",
309
309
  "disableMobileAccessConfirm": "Это отключит все мобильные устройства и отменит все сеансы. Вы можете снова включить мобильный доступ позже.",
310
310
  "disable": "Отключено",
@@ -319,9 +319,9 @@
319
319
  "externalUrlBanner": "Использование обратного прокси или удаленный доступ к нему? Установить",
320
320
  "externalUrlBannerLink": "Внешний URL",
321
321
  "externalUrlBannerSuffix": "чтобы мобильное приложение могло подключиться к серверу.",
322
- "pendingTokens_one": "",
323
- "pendingTokens_few": "",
324
- "pendingTokens_many": "",
322
+ "pendingTokens_one": "{{count}} ожидающий токен сопряжения",
323
+ "pendingTokens_few": "{{count}} ожидающих токена сопряжения",
324
+ "pendingTokens_many": "{{count}} ожидающих токенов сопряжения",
325
325
  "pendingTokens_other": "{{count}} ожидающих токенов сопряжения"
326
326
  },
327
327
  "tailscale": {
@@ -338,16 +338,16 @@
338
338
  "awaitingAuth": "Ожидание подтверждения...",
339
339
  "authorize": "Авторизоваться в хвостовой шкале",
340
340
  "connected": "Tailscale подключен. Ваш экземпляр Tracearr доступен в портсете.",
341
- "hostname": "",
341
+ "hostname": "Имя хоста",
342
342
  "dnsName": "DNS Имя",
343
- "tailnetUrl": "",
343
+ "tailnetUrl": "URL",
344
344
  "showLogs": "Показать логи",
345
345
  "hideLogs": "Скрыть журналы",
346
346
  "noLogs": "Нет доступных журналов.",
347
347
  "unknownError": "Произошла неизвестная ошибка.",
348
348
  "disableConfirmTitle": "Отключить Tailscale?",
349
349
  "disableConfirmDescription": "Это отключит Tracearr от вашего портсета. Вы можете снова включить без повторной авторизации.",
350
- "resetConfirmTitle": "",
350
+ "resetConfirmTitle": "Сбросить Tailscale?",
351
351
  "resetConfirmDescription": "Это отключит Tracearr от вашей сети и удалит идентификацию устройства. Вам нужно будет повторно авторизоваться, если вы включите его снова.",
352
352
  "toast": {
353
353
  "disabled": "Шкала хвостовых тканей отключена.",
@@ -378,62 +378,62 @@
378
378
  "lastJobCompleted": "Последняя работа успешно завершена",
379
379
  "lastJobFailed": "Последняя работа не удалась",
380
380
  "jobHistory": "История заданий",
381
- "jobHistoryDesc": "",
381
+ "jobHistoryDesc": "Последние запуски заданий обслуживания.",
382
382
  "runConfirm": "Запустить {{name}}?",
383
383
  "mayTakeAWhile": "Это может занять некоторое время",
384
384
  "mayTakeAWhileDesc": "Завершение этой работы может занять несколько минут в зависимости от размера вашей библиотеки.",
385
- "deletesData": "",
386
- "deletesDataDesc": "",
387
- "automatic": "",
385
+ "deletesData": "Это необратимо удалит данные",
386
+ "deletesDataDesc": "Удалённые записи нельзя восстановить. Если сомневаетесь, сначала сделайте резервную копию.",
387
+ "automatic": "Автоматически",
388
388
  "startJob": "Начать работу"
389
389
  },
390
390
  "memberLogin": {
391
- "serverActivity": "",
392
- "serverActivityDesc": "",
393
- "noServers": "",
394
- "addServer": "",
395
- "serversLoadFailed": "",
391
+ "serverActivity": "Показывать участникам анонимную активность сервера",
392
+ "serverActivityDesc": "Только количество других потоков и просмотров, без имён, названий и местоположений.",
393
+ "noServers": "Серверов пока нет.",
394
+ "addServer": "Добавьте сервер в разделе \"Подключения\"",
395
+ "serversLoadFailed": "Не удалось загрузить серверы.",
396
396
  "signIn": {
397
- "title": "",
398
- "titleDesc": "",
399
- "local": "",
400
- "localDesc": "",
401
- "oidc": "",
402
- "oidcDesc": "",
403
- "plex": "",
404
- "plexDesc": "",
405
- "onlyWay": "",
406
- "membersTitle": "",
407
- "media": "",
408
- "mediaDesc": "",
409
- "servers": "",
410
- "overrides": "",
411
- "overridesDesc": "",
412
- "overridesEmpty": "",
413
- "overridesLoadFailed": "",
414
- "addPerson": "",
415
- "searchPeople": "",
416
- "nobodyFound": "",
417
- "accessLabel": "",
418
- "roleLabel": "",
419
- "allow": "",
420
- "block": "",
421
- "admin": "",
422
- "member": "",
423
- "backToDefault": ""
397
+ "title": "Как вы входите",
398
+ "titleDesc": "Показаны только способы, доступные вашему аккаунту владельца.",
399
+ "local": "Имя пользователя и пароль",
400
+ "localDesc": "Ваш пароль Tracearr.",
401
+ "oidc": "Единый вход",
402
+ "oidcDesc": "Через вашего поставщика удостоверений.",
403
+ "plex": "Аккаунт Plex",
404
+ "plexDesc": "Ваш собственный аккаунт Plex.",
405
+ "onlyWay": "Это ваш единственный способ входа, поэтому он остаётся включённым.",
406
+ "membersTitle": "Администраторы и участники",
407
+ "media": "Разрешить вход администраторам и участникам",
408
+ "mediaDesc": "С аккаунтом, который у них есть на одном из серверов ниже. Если выключено, войти могут только люди с настройкой \"Разрешить\", а все остальные будут отключены.",
409
+ "servers": "Через эти серверы",
410
+ "overrides": "Настроено индивидуально",
411
+ "overridesDesc": "Люди, у которых на странице пользователя указано \"Разрешить\" или \"Запретить\" вместо настройки выше.",
412
+ "overridesEmpty": "Индивидуальных настроек ни у кого нет.",
413
+ "overridesLoadFailed": "Не удалось загрузить список людей.",
414
+ "addPerson": "Добавить человека",
415
+ "searchPeople": "Поиск людей",
416
+ "nobodyFound": "Никто не найден",
417
+ "accessLabel": "Вход для {{name}}",
418
+ "roleLabel": "Роль для {{name}}",
419
+ "allow": "Разрешить",
420
+ "block": "Запретить",
421
+ "admin": "Администратор",
422
+ "member": "Участник",
423
+ "backToDefault": "Вернуть по умолчанию"
424
424
  }
425
425
  },
426
426
  "import": {
427
427
  "noServers": "Серверы не подключены",
428
428
  "noServersHint": "Для импорта данных необходим по крайней мере один подключенный сервер.",
429
429
  "tautulliUrl": "URL Tautulli",
430
- "tautulliUrlPlaceholder": "",
430
+ "tautulliUrlPlaceholder": "http://localhost:8181",
431
431
  "tautulliUrlHelp": "URL вашего экземпляра Tautulli.",
432
432
  "apiKeyHelp": "Найдено в настройках Tautulli → Web Интерфейс → API ключ.",
433
433
  "testing": "Тестирование...",
434
434
  "connectToTautulli": "Подключиться к Tautulli",
435
435
  "importHistory": "История импорта",
436
- "targetServer": "",
436
+ "targetServer": "Целевой сервер",
437
437
  "selectPlexServer": "Выберите Plex сервер",
438
438
  "overwriteFriendlyNames": "Перезаписать существующие дружественные имена с названиями Tautulli",
439
439
  "overwriteFriendlyNamesHelp": "Существующие идентификационные имена в Tracearr будут заменены на дружественные имена от Tautulli.",
@@ -447,8 +447,8 @@
447
447
  "selectTargetServer": "Выберите целевой сервер",
448
448
  "selectJellyfinServer": "Выберите сервер Jellyfin или Emby",
449
449
  "uploadJellystatBackup": "Загрузить резервную копию Jellystat",
450
- "exportFullBackupHint": "",
451
- "exportFullBackupHelp": "",
450
+ "exportFullBackupHint": "Экспортируйте резервную копию из Jellystat",
451
+ "exportFullBackupHelp": "В Jellystat перейдите в Settings → Backup и оставьте выбранными все таблицы, затем запустите задачу Backup Jellystat в Settings → Tasks и скачайте файл .json или .jsonl. Tracearr читает Activity, Library Items, Episodes и Playback Reporting Plugin Data; если в резервной копии их нет, будет связано меньше просмотров.",
452
452
  "importOptions": "Параметры импорта",
453
453
  "enrichMetadata": "Дополнить метаданными медиа (рекомендуется)",
454
454
  "enrichMetadataHelp": "Извлекает дополнительные метаданные из вашего медиа-сервера для импортированных сессий.",
@@ -456,10 +456,10 @@
456
456
  "updateExistingRecordsHelp": "Раньше импортированные записи будут обновляться с данными качества потока.",
457
457
  "pleaseEnterDetails": "Пожалуйста, введите Tautulli URL и API ключ",
458
458
  "testingConnection": "Проверка соединения...",
459
- "pleaseSelectBackupFile": "",
459
+ "pleaseSelectBackupFile": "Выберите резервную копию Jellystat (.json или .jsonl)",
460
460
  "uploadingBackup": "Загрузка файла резервной копии...",
461
461
  "plex": "Plex (Таулли)",
462
- "jellyfinEmby": "",
462
+ "jellyfinEmby": "Jellyfin/Emby (Jellystat)",
463
463
  "apiKeyPlaceholder": "Ваш ключ Tautulli API",
464
464
  "skipUserNotFoundPlex": "Пользователь не найден — Plex пользователь не существует в Tracearr. Синхронизируйте ваш сервер, чтобы добавить всех пользователей.",
465
465
  "skipDuplicate": "Повторяющиеся сессии— сессия уже была импортирована ранее.",
@@ -470,33 +470,33 @@
470
470
  "importInProgressGeneric": "Идёт импорт...",
471
471
  "startingImport": "Запуск импорта...",
472
472
  "connectedFound": "Подключено! Найдено {{users}} пользователей и записей истории {{records}}.",
473
- "playbackReporting": "",
474
- "playbackReportingDesc": "",
475
- "checkPlugin": "",
476
- "checkingPlugin": "",
477
- "pluginFound": "",
478
- "pluginNotInstalled": "",
479
- "serverTimezone": "",
480
- "serverTimezoneHelp": "",
481
- "importFullRange": "",
482
- "importFullRangeHelp": "",
483
- "skipOverlap": "",
484
- "skipDuplicatePlugin": "",
485
- "importFailed": "",
473
+ "playbackReporting": "Плагин Playback Reporting",
474
+ "playbackReportingDesc": "Импорт истории напрямую из плагина Playback Reporting, установленного на сервере Jellyfin или Emby. Экспортировать файл не нужно.",
475
+ "checkPlugin": "Проверить плагин",
476
+ "checkingPlugin": "Проверка...",
477
+ "pluginFound": "Плагин найден. Записей: {{records}}, с {{oldestDate}} по {{newestDate}}",
478
+ "pluginNotInstalled": "Плагин Playback Reporting не установлен на этом сервере, или Tracearr не может к нему обратиться. Установите его из каталога плагинов сервера, чтобы начать запись истории, или используйте импорт из Jellystat ниже.",
479
+ "serverTimezone": "Часовой пояс сервера",
480
+ "serverTimezoneHelp": "Должен совпадать с часовым поясом, настроенным на хосте медиасервера, а не с часовым поясом браузера. Playback Reporting хранит метки времени в местном времени сервера.",
481
+ "importFullRange": "Импортировать всю историю",
482
+ "importFullRangeHelp": "Просмотры, начатые после добавления этого сервера в Tracearr, никогда не импортируются. По умолчанию импорт также останавливается на самом раннем просмотре, который уже есть в Tracearr для этого сервера, например после импорта из Jellystat. Включите, чтобы импортировать всё, что было до добавления сервера. Точные дубликаты всё равно пропускаются.",
483
+ "skipOverlap": "Пересечение: время записи попадает в период, который Tracearr уже отслеживает для этого сервера. Чтобы добавить её, включите импорт всей истории.",
484
+ "skipDuplicatePlugin": "Дубликат: запись уже импортирована напрямую или ранее поступила через импорт Jellystat с теми же данными плагина.",
485
+ "importFailed": "Импорт не удался",
486
486
  "dropzone": {
487
- "dropHere": "",
488
- "dragOrClick": "",
489
- "limit": "",
490
- "removeFile": ""
487
+ "dropHere": "Перетащите файл сюда",
488
+ "dragOrClick": "Перетащите файл или нажмите, чтобы выбрать",
489
+ "limit": "Файлы {{accept}} размером до {{size}}",
490
+ "removeFile": "Удалить файл"
491
491
  },
492
- "overlapSkipped_one": "",
493
- "overlapSkipped_few": "",
494
- "overlapSkipped_many": "",
495
- "overlapSkipped_other": "",
496
- "duplicates_one": "",
497
- "duplicates_few": "",
498
- "duplicates_many": "",
499
- "duplicates_other": ""
492
+ "overlapSkipped_one": "Пропущено из-за пересечения: {{count}}",
493
+ "overlapSkipped_few": "Пропущено из-за пересечения: {{count}}",
494
+ "overlapSkipped_many": "Пропущено из-за пересечения: {{count}}",
495
+ "overlapSkipped_other": "Пропущено из-за пересечения: {{count}}",
496
+ "duplicates_one": "Пропущено дубликатов: {{count}}",
497
+ "duplicates_few": "Пропущено дубликатов: {{count}}",
498
+ "duplicates_many": "Пропущено дубликатов: {{count}}",
499
+ "duplicates_other": "Пропущено дубликатов: {{count}}"
500
500
  },
501
501
  "plex": {
502
502
  "signInWithPlex": "Войти через Plex",
@@ -519,42 +519,42 @@
519
519
  "betaUpdate": "Бета обновление",
520
520
  "newVersion": "Новая версия",
521
521
  "versionAvailable": "Доступно {{version}}",
522
- "beforeUpdating": ""
522
+ "beforeUpdating": "Перед обновлением"
523
523
  },
524
524
  "whatsNew": {
525
- "title": "",
526
- "installed": "",
527
- "installedSince": "",
528
- "reopenDescription": "",
529
- "openNotes": "",
530
- "gotIt": "",
531
- "allReleases": "",
532
- "since": "",
533
- "earlier": "",
534
- "installedBadge": "",
535
- "latestBadge": "",
536
- "series": "",
537
- "docs": "",
538
- "source": "",
539
- "empty": "",
525
+ "title": "Что нового",
526
+ "installed": "Установлен Tracearr {{version}}. Вот что изменилось.",
527
+ "installedSince": "Установлен Tracearr {{version}}. Вот что изменилось с {{since}}.",
528
+ "reopenDescription": "Примечания к выпуску Tracearr {{version}}.",
529
+ "openNotes": "Примечания к выпуску",
530
+ "gotIt": "Понятно",
531
+ "allReleases": "Все выпуски на GitHub",
532
+ "since": "Начиная с {{version}}",
533
+ "earlier": "Более ранние выпуски",
534
+ "installedBadge": "Установлен",
535
+ "latestBadge": "Последний",
536
+ "series": "Tracearr {{series}}",
537
+ "docs": "Документация",
538
+ "source": "GitHub",
539
+ "empty": "В этой версии нет примечаний к выпуску.",
540
540
  "types": {
541
- "new": "",
542
- "improved": "",
543
- "fix": "",
544
- "security": "",
545
- "note": ""
541
+ "new": "Новое",
542
+ "improved": "Улучшено",
543
+ "fix": "Исправлено",
544
+ "security": "Безопасность",
545
+ "note": "Примечание"
546
546
  },
547
- "changeCount_one": "",
548
- "changeCount_few": "",
549
- "changeCount_many": "",
550
- "changeCount_other": ""
547
+ "changeCount_one": "{{count}} изменение",
548
+ "changeCount_few": "{{count}} изменения",
549
+ "changeCount_many": "{{count}} изменений",
550
+ "changeCount_other": "{{count}} изменений"
551
551
  },
552
552
  "serverHealth": {
553
553
  "unreachable": "{{serverName}} недоступен",
554
- "tokenRejected": "",
555
- "multipleUnreachable_one": "",
556
- "multipleUnreachable_few": "",
557
- "multipleUnreachable_many": "",
554
+ "tokenRejected": "{{serverName}} отклонил токен Tracearr",
555
+ "multipleUnreachable_one": "{{count}} сервер недоступен: {{serverNames}}",
556
+ "multipleUnreachable_few": "{{count}} сервера недоступны: {{serverNames}}",
557
+ "multipleUnreachable_many": "{{count}} серверов недоступно: {{serverNames}}",
558
558
  "multipleUnreachable_other": "Сервер {{count}} недоступен: {{serverNames}}"
559
559
  },
560
560
  "ipWarning": {
@@ -609,7 +609,7 @@
609
609
  "backup": {
610
610
  "title": "Резервное копирование",
611
611
  "backToBackups": "Вернуться к резервным копиям",
612
- "description": "",
612
+ "description": "Резервное копирование и восстановление данных Tracearr.",
613
613
  "createBackup": "Создать резервную копию",
614
614
  "creating": "Создание резервной копии...",
615
615
  "uploadBackup": "Загрузить резервную копию",
@@ -621,8 +621,8 @@
621
621
  "noBackups": "Резервных копий пока нет. Создайте первую резервную копию выше.",
622
622
  "version": "Версии",
623
623
  "actions": "Действия",
624
- "rowActions": "",
625
- "download": "",
624
+ "rowActions": "Действия с резервной копией",
625
+ "download": "Скачать",
626
626
  "typeManual": "Ручной",
627
627
  "typeScheduled": "Запланированный",
628
628
  "typeUploaded": "Загружено",
@@ -636,8 +636,8 @@
636
636
  "scheduleWeekly": "Еженедельно",
637
637
  "scheduleMonthly": "Ежемесячно",
638
638
  "scheduleTime": "Время ({{timezone}})",
639
- "scheduleHour": "",
640
- "scheduleMinute": "",
639
+ "scheduleHour": "Час",
640
+ "scheduleMinute": "Минута",
641
641
  "scheduleDayOfWeek": "День недели",
642
642
  "scheduleDayOfMonth": "День месяца",
643
643
  "scheduleDayOfMonthHint": "В месяцах с меньшим количеством дней, резервная копия работает в последний день.",
@@ -657,7 +657,7 @@
657
657
  "sessions": "Сессии",
658
658
  "users": "Пользователи",
659
659
  "servers": "Серверы",
660
- "automations": "",
660
+ "automations": "Автоматизации",
661
661
  "libraryItems": "Элементы библиотеки",
662
662
  "tables": "Таблицы",
663
663
  "warning": "Восстановление заменит все существующие данные. Вам нужно будет заново войти в систему после завершения восстановления.",
@@ -683,545 +683,545 @@
683
683
  }
684
684
  },
685
685
  "newsletters": {
686
- "ownerOnly": "",
687
- "new": "",
688
- "empty": "",
689
- "emptyDescription": "",
690
- "noDestinationTitle": "",
691
- "noDestinationDescription": "",
692
- "noDestinationHint": "",
693
- "addEmailDestination": "",
694
- "rowActions": "",
695
- "duplicate": "",
696
- "sendNow": "",
697
- "deleteTitle": "",
698
- "deleteDescription": "",
686
+ "ownerOnly": "Управлять рассылками может только владелец.",
687
+ "new": "Новая рассылка",
688
+ "empty": "Рассылок пока нет",
689
+ "emptyDescription": "Рассылка отправляет участникам сервера письмо о недавно добавленном.",
690
+ "noDestinationTitle": "Для рассылок нужен почтовый канал доставки",
691
+ "noDestinationDescription": "Почтовый канал доставки — это SMTP-сервер, через который уходят рассылки, поэтому для него нужны только данные сервера и отправителя. Каждая рассылка автоматически доходит до всех, кому открыт доступ к выбранным серверам, а также до дополнительных адресов, которые вы добавите.",
692
+ "noDestinationHint": "Почтового канала доставки пока нет.",
693
+ "addEmailDestination": "Добавить почтовый канал",
694
+ "rowActions": "Действия с рассылкой",
695
+ "duplicate": "Дублировать",
696
+ "sendNow": "Отправить сейчас",
697
+ "deleteTitle": "Удалить эту рассылку?",
698
+ "deleteDescription": "{{name}} и история отправок будут удалены. Адреса из стоп-листа останутся в нём.",
699
699
  "schedule": {
700
- "daily": "",
701
- "weekly": "",
702
- "monthly": "",
703
- "cron": "",
704
- "inZone": ""
700
+ "daily": "Ежедневно в {{time}}",
701
+ "weekly": "Еженедельно, {{day}}, в {{time}}",
702
+ "monthly": "Ежемесячно, {{day}}-го числа, в {{time}}",
703
+ "cron": "Cron {{expression}}",
704
+ "inZone": "{{summary}}, {{timezone}}"
705
705
  },
706
- "noNextRun": "",
707
- "neverSent": "",
708
- "lastSend": "",
706
+ "noNextRun": "Не запланировано",
707
+ "neverSent": "Ещё не отправлялась",
708
+ "lastSend": "{{outcome}}: {{count}}",
709
709
  "outcome": {
710
- "rendering": "",
711
- "sending": "",
712
- "sent": "",
713
- "partial": "",
714
- "failed": "",
715
- "skipped_empty": ""
710
+ "rendering": "Подготовка",
711
+ "sending": "Отправка",
712
+ "sent": "Отправлено",
713
+ "partial": "Отправлено частично",
714
+ "failed": "Ошибка",
715
+ "skipped_empty": "Нет новинок"
716
716
  },
717
717
  "counts": {
718
- "movies_one": "",
719
- "movies_few": "",
720
- "movies_many": "",
721
- "movies_other": "",
722
- "shows_one": "",
723
- "shows_few": "",
724
- "shows_many": "",
725
- "shows_other": "",
726
- "albums_one": "",
727
- "albums_few": "",
728
- "albums_many": "",
729
- "albums_other": "",
730
- "watched_one": "",
731
- "watched_few": "",
732
- "watched_many": "",
733
- "watched_other": ""
718
+ "movies_one": "{{count}} фильм",
719
+ "movies_few": "{{count}} фильма",
720
+ "movies_many": "{{count}} фильмов",
721
+ "movies_other": "{{count}} фильмов",
722
+ "shows_one": "{{count}} сериал",
723
+ "shows_few": "{{count}} сериала",
724
+ "shows_many": "{{count}} сериалов",
725
+ "shows_other": "{{count}} сериалов",
726
+ "albums_one": "{{count}} альбом",
727
+ "albums_few": "{{count}} альбома",
728
+ "albums_many": "{{count}} альбомов",
729
+ "albums_other": "{{count}} альбомов",
730
+ "watched_one": "Самое просматриваемое: {{count}}",
731
+ "watched_few": "Самое просматриваемое: {{count}}",
732
+ "watched_many": "Самое просматриваемое: {{count}}",
733
+ "watched_other": "Самое просматриваемое: {{count}}"
734
734
  },
735
- "copyOf": "",
735
+ "copyOf": "Копия: {{name}}",
736
736
  "richText": {
737
- "bold": "",
738
- "italic": "",
739
- "link": "",
740
- "bulletList": "",
741
- "linkHref": "",
742
- "counter": ""
737
+ "bold": "Полужирный",
738
+ "italic": "Курсив",
739
+ "link": "Ссылка",
740
+ "bulletList": "Маркированный список",
741
+ "linkHref": "Адрес ссылки",
742
+ "counter": "{{used}} / {{max}}"
743
743
  },
744
744
  "editor": {
745
- "newTitle": "",
746
- "headerSummary": "",
747
- "notFound": "",
748
- "basics": "",
745
+ "newTitle": "Новая рассылка",
746
+ "headerSummary": "{{schedule}} · {{recipients}}",
747
+ "notFound": "Этой рассылки больше нет.",
748
+ "basics": "Основное",
749
749
  "tabs": {
750
- "edit": "",
751
- "history": ""
750
+ "edit": "Редактирование",
751
+ "history": "История"
752
752
  },
753
- "historyNeedsSave": "",
754
- "name": "",
755
- "nameHelp": "",
756
- "turnOnNow": "",
757
- "enabledHelp": "",
758
- "schedule": "",
759
- "scheduleKind": "",
753
+ "historyNeedsSave": "История появится после сохранения рассылки.",
754
+ "name": "Название",
755
+ "nameHelp": "Его видите только вы. Оно обозначает рассылку в этом списке и в истории отправок.",
756
+ "turnOnNow": "Включить сейчас",
757
+ "enabledHelp": "Если включено, при следующем запуске по расписанию письмо получат все, кто указан в разделе \"Получатели\". Если выключено, расписание не работает, но \"Отправить сейчас\" доступно.",
758
+ "schedule": "Расписание",
759
+ "scheduleKind": "Повтор",
760
760
  "kinds": {
761
- "daily": "",
762
- "weekly": "",
763
- "monthly": "",
764
- "cron": ""
761
+ "daily": "Ежедневно",
762
+ "weekly": "Еженедельно",
763
+ "monthly": "Ежемесячно",
764
+ "cron": "Выражение cron"
765
765
  },
766
- "dayOfWeek": "",
767
- "dayOfMonth": "",
768
- "dayOfMonthHelp": "",
769
- "time": "",
770
- "timezone": "",
771
- "timezoneHelp": "",
772
- "cron": "",
773
- "cronHint": "",
774
- "dstNote": "",
775
- "nextRun": "",
776
- "nextRunPending": "",
777
- "content": "",
778
- "windowKind": "",
766
+ "dayOfWeek": "День",
767
+ "dayOfMonth": "День месяца",
768
+ "dayOfMonthHelp": "Дни с 1 по 28, чтобы запуск не пришёлся на месяц, где такого дня нет.",
769
+ "time": "Время",
770
+ "timezone": "Часовой пояс",
771
+ "timezoneHelp": "Определяет время отправки и даты в теме и тексте письма.",
772
+ "cron": "Выражение",
773
+ "cronHint": "Пять полей: минута, час, день месяца, месяц, день недели.",
774
+ "dstNote": "Если время попадает в час, пропущенный при весеннем переводе часов, запуск пройдёт в ближайшую существующую минуту.",
775
+ "nextRun": "Следующий запуск: {{when}} ({{timezone}})",
776
+ "nextRunPending": "Следующий запуск будет определён при сохранении.",
777
+ "content": "Содержимое",
778
+ "windowKind": "Период",
779
779
  "windows": {
780
- "since_last_send": "",
781
- "fixed": ""
780
+ "since_last_send": "Всё с момента последнего письма",
781
+ "fixed": "Фиксированное число дней"
782
782
  },
783
783
  "windowHelp": {
784
- "since_last_send": "",
785
- "fixed": ""
784
+ "since_last_send": "Продолжает с места, где остановилось прошлое письмо, поэтому ничего не попадёт в список дважды. Тестовая отправка эту отметку не сдвигает, а \"Отправить сейчас\" сдвигает. Пропущенная неделя тоже не сдвигает, поэтому ничего не теряется.",
785
+ "fixed": "Всегда охватывает одно и то же число дней до момента запуска, поэтому название, добавленное за этот период дважды, попадёт в список дважды."
786
786
  },
787
787
  "windowSentence": {
788
- "fallback": "",
789
- "fixed": "",
790
- "fixedAfter": "",
791
- "fallbackLabel_one": "",
792
- "fallbackLabel_few": "",
793
- "fallbackLabel_many": "",
794
- "fallbackLabel_other": "",
795
- "fixedLabel_one": "",
796
- "fixedLabel_few": "",
797
- "fixedLabel_many": "",
798
- "fixedLabel_other": ""
788
+ "fallback": "Первое письмо охватит последние",
789
+ "fixed": "За последние",
790
+ "fixedAfter": "при каждой отправке",
791
+ "fallbackLabel_one": "Первое письмо охватит последний {{count}} день.",
792
+ "fallbackLabel_few": "Первое письмо охватит последние {{count}} дня.",
793
+ "fallbackLabel_many": "Первое письмо охватит последние {{count}} дней.",
794
+ "fallbackLabel_other": "Первое письмо охватит последние {{count}} дней.",
795
+ "fixedLabel_one": "За последний {{count}} день при каждой отправке.",
796
+ "fixedLabel_few": "За последние {{count}} дня при каждой отправке.",
797
+ "fixedLabel_many": "За последние {{count}} дней при каждой отправке.",
798
+ "fixedLabel_other": "За последние {{count}} дней при каждой отправке."
799
799
  },
800
- "windowMax": "",
801
- "days": "",
802
- "servers": "",
803
- "allServers": "",
804
- "searchServers": "",
805
- "noServers": "",
806
- "variantsNote": "",
807
- "serversHelp": "",
808
- "libraries": "",
809
- "allLibraries": "",
810
- "searchLibraries": "",
811
- "noLibraries": "",
812
- "librariesHelp": "",
813
- "clear": "",
814
- "unknownLibrary": "",
815
- "removeLibrary": "",
800
+ "windowMax": "Не больше 31 дня, что бы здесь ни было указано.",
801
+ "days": "дн.",
802
+ "servers": "Серверы",
803
+ "allServers": "Все серверы",
804
+ "searchServers": "Поиск серверов",
805
+ "noServers": "Серверы не найдены",
806
+ "variantsNote": "Этот выбор определяет и названия, и людей: рассылку получают только участники с аккаунтом на этих серверах. Кто есть на нескольких из них, получит одно письмо сразу по всем своим серверам.",
807
+ "serversHelp": "Рассылку получают только участники с аккаунтом на этом сервере.",
808
+ "libraries": "Библиотеки",
809
+ "allLibraries": "Все библиотеки",
810
+ "searchLibraries": "Поиск библиотек",
811
+ "noLibraries": "Библиотеки не найдены",
812
+ "librariesHelp": "Сужает то, что перечисляется в письме. На то, кто его получит, не влияет.",
813
+ "clear": "Очистить",
814
+ "unknownLibrary": "Неизвестная библиотека",
815
+ "removeLibrary": "Удалить библиотеку {{id}}",
816
816
  "sections": {
817
- "movies": "",
818
- "shows": "",
819
- "music": "",
820
- "mostWatched": "",
821
- "legend": "",
822
- "description": "",
823
- "upTo": "",
824
- "the": "",
817
+ "movies": "Фильмы",
818
+ "shows": "Сериалы",
819
+ "music": "Музыка",
820
+ "mostWatched": "Самое просматриваемое",
821
+ "legend": "Разделы",
822
+ "description": "В письме перечисляется то, что добавлено за период, в пределах этих лимитов. Всё, что выше лимита или убрано, чтобы письмо не превысило 102 КБ (на этом размере Gmail его обрезает), заменяется строкой \"+N more\".",
823
+ "upTo": "до",
824
+ "the": "топ",
825
825
  "units": {
826
- "movies": "",
827
- "shows": "",
828
- "seasonsEach": "",
829
- "albums": "",
830
- "mostPlayed": ""
826
+ "movies": "фильмов",
827
+ "shows": "сериалов",
828
+ "seasonsEach": "сез. на сериал",
829
+ "albums": "альбомов",
830
+ "mostPlayed": "по просмотрам"
831
831
  },
832
832
  "labels": {
833
- "movies_one": "",
834
- "movies_few": "",
835
- "movies_many": "",
836
- "movies_other": "",
837
- "shows_one": "",
838
- "shows_few": "",
839
- "shows_many": "",
840
- "shows_other": "",
841
- "seasons_one": "",
842
- "seasons_few": "",
843
- "seasons_many": "",
844
- "seasons_other": "",
845
- "music_one": "",
846
- "music_few": "",
847
- "music_many": "",
848
- "music_other": "",
849
- "mostWatched_one": "",
850
- "mostWatched_few": "",
851
- "mostWatched_many": "",
852
- "mostWatched_other": ""
833
+ "movies_one": "Фильмы, до {{count}} фильма",
834
+ "movies_few": "Фильмы, до {{count}} фильмов",
835
+ "movies_many": "Фильмы, до {{count}} фильмов",
836
+ "movies_other": "Фильмы, до {{count}} фильмов",
837
+ "shows_one": "Сериалы, до {{count}} сериала",
838
+ "shows_few": "Сериалы, до {{count}} сериалов",
839
+ "shows_many": "Сериалы, до {{count}} сериалов",
840
+ "shows_other": "Сериалы, до {{count}} сериалов",
841
+ "seasons_one": "Сериалы, по {{count}} сезону на сериал",
842
+ "seasons_few": "Сериалы, по {{count}} сезона на сериал",
843
+ "seasons_many": "Сериалы, по {{count}} сезонов на сериал",
844
+ "seasons_other": "Сериалы, по {{count}} сезонов на сериал",
845
+ "music_one": "Музыка, до {{count}} альбома",
846
+ "music_few": "Музыка, до {{count}} альбомов",
847
+ "music_many": "Музыка, до {{count}} альбомов",
848
+ "music_other": "Музыка, до {{count}} альбомов",
849
+ "mostWatched_one": "Самое просматриваемое, топ {{count}} по просмотрам",
850
+ "mostWatched_few": "Самое просматриваемое, топ {{count}} по просмотрам",
851
+ "mostWatched_many": "Самое просматриваемое, топ {{count}} по просмотрам",
852
+ "mostWatched_other": "Самое просматриваемое, топ {{count}} по просмотрам"
853
853
  },
854
- "musicHelp": "",
855
- "mostWatchedHelp": ""
854
+ "musicHelp": "Считается в альбомах, лимит общий для всех исполнителей, в порядке добавления.",
855
+ "mostWatchedHelp": "То, что участники смотрели и слушали чаще всего за период, новое или нет, с числом просмотров. Все остальные разделы показывают добавленное."
856
856
  },
857
- "message": "",
858
- "senderName": "",
859
- "senderNameHelp": "",
860
- "variantHeading": "",
861
- "subject": "",
862
- "subjectHelp": "",
857
+ "message": "Сообщение",
858
+ "senderName": "Имя отправителя",
859
+ "senderNameHelp": "Имя в поле \"От кого\" и в конце письма. Оставьте пустым, чтобы использовать {{name}}.",
860
+ "variantHeading": "С аккаунтом на {{servers}}: {{count}}",
861
+ "subject": "Тема",
862
+ "subjectHelp": "При сборке письма заменяются:",
863
863
  "placeholders": {
864
- "server_name": "",
865
- "start_date": "",
866
- "end_date": "",
867
- "item_count": ""
864
+ "server_name": "имя отправителя, указанное выше",
865
+ "start_date": "первый день периода",
866
+ "end_date": "день отправки письма",
867
+ "item_count": "число добавленных фильмов, серий и альбомов (считаются серии, а не сериалы)"
868
868
  },
869
- "intro": "",
870
- "introPlaceholder": "",
871
- "outro": "",
872
- "outroPlaceholder": "",
873
- "save": "",
874
- "saving": "",
875
- "unsaved": "",
876
- "fixFirst": "",
877
- "sendNeedsSave": "",
869
+ "intro": "Вступление",
870
+ "introPlaceholder": "Несколько слов в начале письма, над первым разделом",
871
+ "outro": "Заключение",
872
+ "outroPlaceholder": "Несколько слов в конце письма, над блоком отписки",
873
+ "save": "Сохранить",
874
+ "saving": "Сохранение",
875
+ "unsaved": "Несохранённые изменения",
876
+ "fixFirst": "Перед сохранением исправьте выделенные поля.",
877
+ "sendNeedsSave": "Сохраните изменения перед отправкой.",
878
878
  "recipients": {
879
- "title": "",
880
- "members": "",
881
- "membersHelp": "",
882
- "ownerNote": "",
883
- "extraTrigger": "",
884
- "extraHelp": "",
885
- "pasteAddresses": "",
886
- "addressLabel": "",
887
- "nameLabel": "",
888
- "namePlaceholder": "",
889
- "removeAddress": "",
890
- "badAddress": "",
891
- "loadFailed": "",
892
- "willReceive": "",
893
- "excludedCount": "",
894
- "noAddress": "",
895
- "suppressedCount": "",
896
- "newSinceLastSend": "",
897
- "manage": "",
898
- "manageHelp": "",
899
- "searchPlaceholder": "",
900
- "serverFilter": "",
901
- "allServers": "",
879
+ "title": "Получатели",
880
+ "members": "Все на выбранных серверах",
881
+ "membersHelp": "Все, кому открыт доступ к {{servers}}, уже включены. Письмо уходит на контактный адрес, если вы его задали, иначе на адрес из аккаунта Tracearr или медиасервера. Каждый получает свою копию и видит только свой адрес.",
882
+ "ownerNote": "Если у вас есть аккаунт на одном из этих серверов, вы тоже в списке. Чтобы исключить себя, откройте \"Управление получателями\".",
883
+ "extraTrigger": "Добавить людей без аккаунта ({{count}})",
884
+ "extraHelp": "Для тех, кого нет на ваших серверах. Все, кому открыт доступ к выбранным серверам, уже есть в списке выше.",
885
+ "pasteAddresses": "Вставьте адреса: по одному в строке или через запятую",
886
+ "addressLabel": "Адрес {{n}}",
887
+ "nameLabel": "Имя {{n}}",
888
+ "namePlaceholder": "Имя (необязательно)",
889
+ "removeAddress": "Удалить адрес {{n}}",
890
+ "badAddress": "Это не адрес электронной почты.",
891
+ "loadFailed": "Не удалось загрузить получателей.",
892
+ "willReceive": "Получат: {{count}}",
893
+ "excludedCount": "Исключено: {{count}}",
894
+ "noAddress": "Без адреса: {{count}}",
895
+ "suppressedCount": "В стоп-листе: {{count}}",
896
+ "newSinceLastSend": "Новый с прошлой отправки",
897
+ "manage": "Управление получателями ({{count}})",
898
+ "manageHelp": "\"Исключить\" и \"Включить\" меняют только форму. Пока вы не нажмёте \"Сохранить\", ничего не сохраняется.",
899
+ "searchPlaceholder": "Поиск по имени, имени пользователя или адресу",
900
+ "serverFilter": "Сервер",
901
+ "allServers": "Все серверы",
902
902
  "tabs": {
903
- "receiving": "",
904
- "excluded": "",
905
- "noAddress": "",
906
- "suppressed": ""
903
+ "receiving": "Получают ({{count}})",
904
+ "excluded": "Исключённые ({{count}})",
905
+ "noAddress": "Без адреса ({{count}})",
906
+ "suppressed": "В стоп-листе ({{count}})"
907
907
  },
908
- "selectAll": "",
909
- "selectPerson": "",
910
- "excludeSelected": "",
911
- "includeSelected": "",
912
- "noMatches": "",
913
- "groupsNote": "",
914
- "noAddressHelp": "",
915
- "contactEmailFor": "",
916
- "saveEmail": "",
917
- "openUserPage": "",
918
- "unknownMember": "",
919
- "account": "",
920
- "fromUsername": "",
921
- "extraAddress": "",
922
- "suppressed": "",
923
- "suppressedHelp": "",
924
- "exclude": "",
925
- "excludeAction": "",
926
- "include": "",
927
- "includeAction": "",
928
- "excludedHelp": "",
929
- "excludedAfterSave": "",
930
- "includedAfterSave": "",
908
+ "selectAll": "Выбрать всех ({{count}})",
909
+ "selectPerson": "Выбрать {{name}}",
910
+ "excludeSelected": "Исключить выбранных",
911
+ "includeSelected": "Включить выбранных",
912
+ "noMatches": "Здесь никто не найден.",
913
+ "groupsNote": "Люди на разных серверах получают разные письма. Каждая группа ниже видит только то, что добавлено на указанные серверы.",
914
+ "noAddressHelp": "Для этих людей адрес не найден: нет ни контактного адреса, ни адреса в Tracearr, ни адреса из аккаунта медиасервера. Jellyfin и Emby адрес не передают, поэтому их аккаунты учитываются, только если имя пользователя и есть адрес почты. Добавьте контактный адрес здесь, и он сразу сохранится.",
915
+ "contactEmailFor": "Контактный адрес: {{name}}",
916
+ "saveEmail": "Сохранить контактный адрес: {{name}}",
917
+ "openUserPage": "Открыть страницу пользователя {{name}}",
918
+ "unknownMember": "Неизвестный участник",
919
+ "account": "{{username}} на {{server}}",
920
+ "fromUsername": "из имени пользователя",
921
+ "extraAddress": "Дополнительный адрес",
922
+ "suppressed": "В стоп-листе",
923
+ "suppressedHelp": "Эти адреса отписались или добавлены в стоп-лист вручную в разделе \"Почта\"; при отправке они пропускаются.",
924
+ "exclude": "Исключить {{name}} из этой рассылки",
925
+ "excludeAction": "Исключить",
926
+ "include": "Снова включить {{name}}",
927
+ "includeAction": "Включить",
928
+ "excludedHelp": "Эти люди не получают рассылку, пока вы снова их не включите. На другие рассылки это не влияет.",
929
+ "excludedAfterSave": "Будет исключён после сохранения",
930
+ "includedAfterSave": "Будет включён после сохранения",
931
931
  "reasons": {
932
- "excluded": "",
933
- "banned": "",
934
- "pending": "",
935
- "noServer": ""
932
+ "excluded": "Исключён",
933
+ "banned": "Заблокирован",
934
+ "pending": "В ожидании",
935
+ "noServer": "Нет на выбранном сервере"
936
936
  },
937
- "emptyTitle": "",
938
- "emptyDescription": "",
939
- "notIncludable_one": "",
940
- "notIncludable_few": "",
941
- "notIncludable_many": "",
942
- "notIncludable_other": "",
943
- "joinedSinceLastSend_one": "",
944
- "joinedSinceLastSend_few": "",
945
- "joinedSinceLastSend_many": "",
946
- "joinedSinceLastSend_other": "",
947
- "selectedCount_one": "",
948
- "selectedCount_few": "",
949
- "selectedCount_many": "",
950
- "selectedCount_other": "",
951
- "notIncludableHelp_one": "",
952
- "notIncludableHelp_few": "",
953
- "notIncludableHelp_many": "",
954
- "notIncludableHelp_other": ""
937
+ "emptyTitle": "Эту рассылку никто не получит",
938
+ "emptyDescription": "Включите \"Все на выбранных серверах\" или добавьте адрес ниже.",
939
+ "notIncludable_one": "Нельзя включить: {{count}}",
940
+ "notIncludable_few": "Нельзя включить: {{count}}",
941
+ "notIncludable_many": "Нельзя включить: {{count}}",
942
+ "notIncludable_other": "Нельзя включить: {{count}}",
943
+ "joinedSinceLastSend_one": "Присоединились с прошлой отправки: {{count}}",
944
+ "joinedSinceLastSend_few": "Присоединились с прошлой отправки: {{count}}",
945
+ "joinedSinceLastSend_many": "Присоединились с прошлой отправки: {{count}}",
946
+ "joinedSinceLastSend_other": "Присоединились с прошлой отправки: {{count}}",
947
+ "selectedCount_one": "Выбрано: {{count}}",
948
+ "selectedCount_few": "Выбрано: {{count}}",
949
+ "selectedCount_many": "Выбрано: {{count}}",
950
+ "selectedCount_other": "Выбрано: {{count}}",
951
+ "notIncludableHelp_one": "Нельзя включить ещё: {{count}}. Причина: блокировка, ожидание или отсутствие на выбранном сервере.",
952
+ "notIncludableHelp_few": "Нельзя включить ещё: {{count}}. Причина: блокировка, ожидание или отсутствие на выбранном сервере.",
953
+ "notIncludableHelp_many": "Нельзя включить ещё: {{count}}. Причина: блокировка, ожидание или отсутствие на выбранном сервере.",
954
+ "notIncludableHelp_other": "Нельзя включить ещё: {{count}}. Причина: блокировка, ожидание или отсутствие на выбранном сервере."
955
955
  },
956
956
  "delivery": {
957
- "title": "",
958
- "destination": "",
959
- "destinationHelp": "",
960
- "pickDestination": "",
961
- "noDestination": "",
962
- "imageMode": "",
957
+ "title": "Доставка",
958
+ "destination": "Почтовый канал доставки",
959
+ "destinationHelp": "Аккаунт SMTP, через который идёт отправка. На то, кто получит письмо, он не влияет.",
960
+ "pickDestination": "Выберите канал доставки",
961
+ "noDestination": "Нет",
962
+ "imageMode": "Постеры",
963
963
  "modes": {
964
- "hosted": "",
965
- "inline": "",
966
- "none": ""
964
+ "hosted": "По ссылке",
965
+ "inline": "Во вложении",
966
+ "none": "Без постеров"
967
967
  },
968
968
  "modeHelp": {
969
- "hosted": "",
970
- "inline": "",
971
- "none": ""
969
+ "hosted": "Загружаются с этого экземпляра Tracearr по внешнему URL. URL должен быть доступен из интернета, и его видит почтовый сервис каждого получателя.",
970
+ "inline": "Вкладываются в письмо. Показываются в любом почтовом клиенте, но письмо становится больше, поэтому из-за лимита размера отсекается больше названий.",
971
+ "none": "Карточки без постеров."
972
972
  },
973
- "modePreviewHint": "",
974
- "hostedNeedsUrl": "",
975
- "skipWhenEmpty": "",
976
- "skipWhenEmptyHelp": ""
973
+ "modePreviewHint": "Предпросмотр показывает текущий выбор. Чтобы увидеть письмо без внешних изображений, переключите в нём \"Изображения\" на \"Заблокированы\".",
974
+ "hostedNeedsUrl": "Внешний URL не задан. Для постеров по ссылке он нужен до сохранения: задайте его в разделе \"Доступ\" → \"Удалённый доступ\" или выберите \"Во вложении\".",
975
+ "skipWhenEmpty": "Пропускать, если ничего не добавлено",
976
+ "skipWhenEmptyHelp": "Нет новинок, нет и письма. Если рассылка охватывает несколько серверов, это работает по группам: люди, на чьих серверах ничего не добавлено, письмо не получат, остальные получат своё. Тестовая отправка формируется всегда."
977
977
  },
978
978
  "links": {
979
- "tracearr": "",
980
- "tracearrNote": ""
979
+ "tracearr": "Ссылки с названий ведут на Tracearr",
980
+ "tracearrNote": "Интерфейс Tracearr пока доступен только администраторам, поэтому участники попадут на страницу входа. Ссылка на медиасервер остаётся в любом случае."
981
981
  },
982
982
  "readiness": {
983
- "title": "",
984
- "intro": "",
985
- "destination": "",
986
- "destinationFail": "",
987
- "destinationUnknown": "",
988
- "destinationError": "",
989
- "fixDestination": "",
990
- "fixRecipients": "",
991
- "fixExternalUrl": "",
992
- "externalUrl": "",
993
- "externalUrlFail": "",
994
- "externalUrlNotHttps": "",
995
- "noPublicUrl": "",
996
- "privatePublicUrl": "",
997
- "emptyVariant": "",
998
- "variantsLoadFailed": "",
999
- "serverSettingsLink": "",
1000
- "fromDomain": "",
1001
- "fromDomainFail": "",
1002
- "fromDomainUnknown": "",
1003
- "recipientsFail": "",
1004
- "recipientsChecking": "",
1005
- "recipientsLoadFailed": "",
1006
- "dns": "",
1007
- "dnsLink": "",
1008
- "recipients_one": "",
1009
- "recipients_few": "",
1010
- "recipients_many": "",
1011
- "recipients_other": ""
983
+ "title": "Перед отправкой",
984
+ "intro": "Эти пункты не мешают сохранению. От них зависит, дойдёт ли письмо до кого-нибудь.",
985
+ "destination": "Отправка через \"{{name}}\".",
986
+ "destinationFail": "Почтовый канал доставки не задан, поэтому рассылка не может быть отправлена.",
987
+ "destinationUnknown": "Проверка почтового канала доставки.",
988
+ "destinationError": "Не удалось загрузить почтовые каналы доставки. Обновите страницу.",
989
+ "fixDestination": "Выбрать канал доставки",
990
+ "fixRecipients": "Перейти к получателям",
991
+ "fixExternalUrl": "Задать внешний URL",
992
+ "externalUrl": "Внешний URL задан: постеры по ссылке, просмотр в браузере и ссылки на Tracearr работают.",
993
+ "externalUrlFail": "Внешний URL не задан: постеры по ссылке, просмотр в браузере и ссылки на Tracearr отключены.",
994
+ "externalUrlNotHttps": "Внешний URL задан через http: участники получат ссылку для отписки, но для отписки в один клик нужен https.",
995
+ "noPublicUrl": "Для {{server}} ссылки на медиа не добавляются: у него нет публичного адреса.",
996
+ "privatePublicUrl": "Для {{server}} ссылки на медиа не добавляются: его публичный адрес находится в частной сети.",
997
+ "emptyVariant": "Участники, у которых есть только {{servers}}, ничего не получат при следующей отправке: на {{servers}} за этот период ничего не добавлено.",
998
+ "variantsLoadFailed": "Не удалось загрузить число получателей по группам.",
999
+ "serverSettingsLink": "Открыть настройки сервера",
1000
+ "fromDomain": "Адрес отправителя совпадает с доменом аккаунта SMTP.",
1001
+ "fromDomainFail": "Адрес отправителя и имя пользователя SMTP находятся на разных доменах. Некоторые провайдеры такое отклоняют.",
1002
+ "fromDomainUnknown": "Выберите канал доставки, чтобы проверить адрес отправителя.",
1003
+ "recipientsFail": "Пока ни у кого нет адреса.",
1004
+ "recipientsChecking": "Проверка получателей рассылки.",
1005
+ "recipientsLoadFailed": "Не удалось загрузить получателей.",
1006
+ "dns": "Доставляемость зависит от записей SPF, DKIM и DMARC домена отправителя.",
1007
+ "dnsLink": "Как их настроить",
1008
+ "recipients_one": "Адрес найден у {{count}} получателя.",
1009
+ "recipients_few": "Адрес найден у {{count}} получателей.",
1010
+ "recipients_many": "Адрес найден у {{count}} получателей.",
1011
+ "recipients_other": "Адрес найден у {{count}} получателей."
1012
1012
  },
1013
1013
  "actions": {
1014
- "preview": "",
1015
- "test": "",
1016
- "send": "",
1017
- "more": "",
1018
- "testHint": "",
1019
- "sendHint": ""
1014
+ "preview": "Предпросмотр",
1015
+ "test": "Отправить тест",
1016
+ "send": "Отправить сейчас",
1017
+ "more": "Другие варианты отправки",
1018
+ "testHint": "Отправляет одну копию на один адрес, период не сдвигается.",
1019
+ "sendHint": "Отправляет всем сейчас и сдвигает период вперёд, как запуск по расписанию."
1020
1020
  },
1021
1021
  "preview": {
1022
- "variants": "",
1023
- "variantTab": "",
1024
- "title": "",
1025
- "draft": "",
1026
- "subjectLabel": "",
1027
- "window": "",
1028
- "windowSince": "",
1022
+ "variants": "Кто смотрит",
1023
+ "variantTab": "{{servers}}: {{count}}",
1024
+ "title": "Предпросмотр",
1025
+ "draft": "Предпросмотр несохранённых изменений",
1026
+ "subjectLabel": "Тема",
1027
+ "window": "Добавлено с {{start}} по {{end}}",
1028
+ "windowSince": "Добавлено с прошлого письма, с {{start}} по {{end}}",
1029
1029
  "countsListed": {
1030
- "movies": "",
1031
- "shows": "",
1032
- "albums": ""
1030
+ "movies": "Фильмы: {{listed}} из {{found}}",
1031
+ "shows": "Сериалы: {{listed}} из {{found}}",
1032
+ "albums": "Альбомы: {{listed}} из {{found}}"
1033
1033
  },
1034
- "recipients": "",
1035
- "width": "",
1034
+ "recipients": "Рассылку во всех версиях получат: {{resolved}}. Без адреса: {{missing}}, отписались: {{suppressed}}.",
1035
+ "width": "Ширина",
1036
1036
  "widths": {
1037
- "desktop": "",
1038
- "phone": ""
1037
+ "desktop": "600 px",
1038
+ "phone": "375 px"
1039
1039
  },
1040
- "images": "",
1041
- "imagesOn": "",
1042
- "imagesBlocked": "",
1043
- "imagesBlockedNote": "",
1044
- "linksNote": ""
1040
+ "images": "Изображения",
1041
+ "imagesOn": "Показаны",
1042
+ "imagesBlocked": "Заблокированы",
1043
+ "imagesBlockedNote": "Многие почтовые клиенты блокируют внешние изображения, пока читатель их не разрешит.",
1044
+ "linksNote": "Ссылки на отписку и просмотр в браузере подставляются для каждого получателя при отправке, поэтому здесь они не работают."
1045
1045
  },
1046
1046
  "test": {
1047
- "title": "",
1048
- "description": "",
1049
- "variant": "",
1050
- "address": "",
1051
- "send": ""
1047
+ "title": "Тестовая отправка",
1048
+ "description": "Формирует письмо за текущий период и отправляет его на один адрес, не учитывая стоп-лист.",
1049
+ "variant": "Версия для",
1050
+ "address": "Кому",
1051
+ "send": "Отправить тест"
1052
1052
  },
1053
1053
  "send": {
1054
- "title": "",
1055
- "previewing": "",
1056
- "nobody": "",
1057
- "confirm": "",
1058
- "sending": "",
1059
- "summary_one": "",
1060
- "summary_few": "",
1061
- "summary_many": "",
1062
- "summary_other": "",
1063
- "trimmed_one": "",
1064
- "trimmed_few": "",
1065
- "trimmed_many": "",
1066
- "trimmed_other": ""
1054
+ "title": "Отправить {{name}} сейчас?",
1055
+ "previewing": "Определяем, кто что получит...",
1056
+ "nobody": "Ни у кого нет адреса (участников без адреса: {{missing}}), поэтому отправлять некому.",
1057
+ "confirm": "Отправить",
1058
+ "sending": "Отправка",
1059
+ "summary_one": "Отправить {{count}} получателю. Добавлено с {{start}} по {{end}}: {{counts}}. Каждый получает свою копию и видит только свой адрес.",
1060
+ "summary_few": "Отправить {{count}} получателям. Добавлено с {{start}} по {{end}}: {{counts}}. Каждый получает свою копию и видит только свой адрес.",
1061
+ "summary_many": "Отправить {{count}} получателям. Добавлено с {{start}} по {{end}}: {{counts}}. Каждый получает свою копию и видит только свой адрес.",
1062
+ "summary_other": "Отправить {{count}} получателям. Добавлено с {{start}} по {{end}}: {{counts}}. Каждый получает свою копию и видит только свой адрес.",
1063
+ "trimmed_one": "{{count}} элемент заменён строкой \"+N more\", чтобы письмо не превысило 102 КБ: на этом размере Gmail его обрезает.",
1064
+ "trimmed_few": "{{count}} элемента заменены строками \"+N more\", чтобы письмо не превысило 102 КБ: на этом размере Gmail его обрезает.",
1065
+ "trimmed_many": "{{count}} элементов заменены строками \"+N more\", чтобы письмо не превысило 102 КБ: на этом размере Gmail его обрезает.",
1066
+ "trimmed_other": "{{count}} элементов заменены строками \"+N more\", чтобы письмо не превысило 102 КБ: на этом размере Gmail его обрезает."
1067
1067
  },
1068
- "serversSelected_one": "",
1069
- "serversSelected_few": "",
1070
- "serversSelected_many": "",
1071
- "serversSelected_other": "",
1072
- "librariesSelected_one": "",
1073
- "librariesSelected_few": "",
1074
- "librariesSelected_many": "",
1075
- "librariesSelected_other": "",
1076
- "senderNameRequiredMulti_one": "",
1077
- "senderNameRequiredMulti_few": "",
1078
- "senderNameRequiredMulti_many": "",
1079
- "senderNameRequiredMulti_other": "",
1080
- "previewVariant_one": "",
1081
- "previewVariant_few": "",
1082
- "previewVariant_many": "",
1083
- "previewVariant_other": ""
1068
+ "serversSelected_one": "{{count}} сервер",
1069
+ "serversSelected_few": "{{count}} сервера",
1070
+ "serversSelected_many": "{{count}} серверов",
1071
+ "serversSelected_other": "{{count}} серверов",
1072
+ "librariesSelected_one": "{{count}} библиотека",
1073
+ "librariesSelected_few": "{{count}} библиотеки",
1074
+ "librariesSelected_many": "{{count}} библиотек",
1075
+ "librariesSelected_other": "{{count}} библиотек",
1076
+ "senderNameRequiredMulti_one": "Рассылка охватывает {{count}} сервер, поэтому нет одного имени сервера для подписи. Укажите имя.",
1077
+ "senderNameRequiredMulti_few": "Рассылка охватывает {{count}} сервера, поэтому нет одного имени сервера для подписи. Укажите имя.",
1078
+ "senderNameRequiredMulti_many": "Рассылка охватывает {{count}} серверов, поэтому нет одного имени сервера для подписи. Укажите имя.",
1079
+ "senderNameRequiredMulti_other": "Рассылка охватывает {{count}} серверов, поэтому нет одного имени сервера для подписи. Укажите имя.",
1080
+ "previewVariant_one": "{{count}} человек с аккаунтом на {{servers}}",
1081
+ "previewVariant_few": "{{count}} человека с аккаунтом на {{servers}}",
1082
+ "previewVariant_many": "{{count}} человек с аккаунтом на {{servers}}",
1083
+ "previewVariant_other": "{{count}} человек с аккаунтом на {{servers}}"
1084
1084
  },
1085
1085
  "history": {
1086
- "empty": "",
1087
- "emptyDescription": "",
1088
- "loadFailed": "",
1086
+ "empty": "Отправок пока нет",
1087
+ "emptyDescription": "Здесь появляется каждая отправка: по расписанию, ручная и тестовая, с указанием, до кого она дошла.",
1088
+ "loadFailed": "Не удалось загрузить историю отправок.",
1089
1089
  "trigger": {
1090
- "schedule": "",
1091
- "manual": "",
1092
- "test": ""
1090
+ "schedule": "По расписанию",
1091
+ "manual": "Вручную",
1092
+ "test": "Тест"
1093
1093
  },
1094
- "window": "",
1095
- "recipientsEmpty": "",
1096
- "finished": "",
1097
- "open": "",
1098
- "page": "",
1099
- "sendTitle": "",
1094
+ "window": "с {{start}} по {{end}}",
1095
+ "recipientsEmpty": "Получатели появятся, когда начнётся отправка.",
1096
+ "finished": "Завершено: {{when}}",
1097
+ "open": "Открыть отправку от {{when}}",
1098
+ "page": "Страница {{page}} из {{pages}}",
1099
+ "sendTitle": "Отправка",
1100
1100
  "status": {
1101
- "queued": "",
1102
- "sent": "",
1103
- "failed": "",
1104
- "suppressed": "",
1105
- "unknown": ""
1101
+ "queued": "В очереди",
1102
+ "sent": "Отправлено",
1103
+ "failed": "Ошибка",
1104
+ "suppressed": "В стоп-листе",
1105
+ "unknown": "Неизвестно"
1106
1106
  },
1107
- "unknownHelp": "",
1108
- "openSnapshot": "",
1109
- "variant": "",
1110
- "variantEmpty": "",
1111
- "openVariantSnapshot": "",
1112
- "snapshotTitle": "",
1113
- "pruned": "",
1114
- "retryFailed": "",
1115
- "recipients_one": "",
1116
- "recipients_few": "",
1117
- "recipients_many": "",
1118
- "recipients_other": "",
1119
- "attempts_one": "",
1120
- "attempts_few": "",
1121
- "attempts_many": "",
1122
- "attempts_other": ""
1107
+ "unknownHelp": "Сервер перестал отвечать после отправки письма. Автоматически оно повторно не отправляется.",
1108
+ "openSnapshot": "Открыть снимок",
1109
+ "variant": "Участники на {{servers}}",
1110
+ "variantEmpty": "На этих серверах нет новинок, письмо этой группе не отправлялось.",
1111
+ "openVariantSnapshot": "Открыть снимок для {{servers}}",
1112
+ "snapshotTitle": "Отправленная копия",
1113
+ "pruned": "Снимок удалён через 90 дней, просмотреть или отправить его повторно нельзя.",
1114
+ "retryFailed": "Повторить неудачные",
1115
+ "recipients_one": "{{count}} получатель",
1116
+ "recipients_few": "{{count}} получателя",
1117
+ "recipients_many": "{{count}} получателей",
1118
+ "recipients_other": "{{count}} получателей",
1119
+ "attempts_one": "{{count}} попытка",
1120
+ "attempts_few": "{{count}} попытки",
1121
+ "attempts_many": "{{count}} попыток",
1122
+ "attempts_other": "{{count}} попыток"
1123
1123
  }
1124
1124
  },
1125
1125
  "email": {
1126
- "ownerOnly": "",
1126
+ "ownerOnly": "Управлять брендингом писем и стоп-листом может только владелец.",
1127
1127
  "branding": {
1128
- "title": "",
1129
- "description": "",
1128
+ "title": "Брендинг",
1129
+ "description": "Применяется ко всем письмам Tracearr: и к оповещениям, и к рассылкам.",
1130
1130
  "logo": {
1131
- "label": "",
1132
- "tracearr": "",
1133
- "none": "",
1134
- "url": ""
1131
+ "label": "Логотип",
1132
+ "tracearr": "Tracearr",
1133
+ "none": "Без логотипа",
1134
+ "url": "Изображение по URL"
1135
1135
  },
1136
- "logoUrl": "",
1137
- "systemTitle": "",
1138
- "systemTitleHelp": "",
1139
- "accent": "",
1140
- "accentPicker": "",
1141
- "footerText": "",
1142
- "footerTextHelp": "",
1143
- "postalAddress": "",
1144
- "postalAddressHelp": "",
1145
- "mailto": "",
1146
- "mailtoHelp": "",
1147
- "save": "",
1148
- "saving": ""
1136
+ "logoUrl": "URL логотипа",
1137
+ "systemTitle": "Название системы",
1138
+ "systemTitleHelp": "Показывается рядом с логотипом в начале каждого письма, например \"Tracearr для Emby\". Оставьте пустым, чтобы использовать название сервера или рассылки.",
1139
+ "accent": "Цвет акцента",
1140
+ "accentPicker": "Выбрать цвет акцента",
1141
+ "footerText": "Текст подвала",
1142
+ "footerTextHelp": "Одна строка внизу каждого письма, например о том, кто управляет сервером.",
1143
+ "postalAddress": "Почтовый адрес",
1144
+ "postalAddressHelp": "Необязательно; в некоторых юрисдикциях он требуется для массовых рассылок.",
1145
+ "mailto": "Также предлагать отписку по почте",
1146
+ "mailtoHelp": "Добавляет mailto в заголовок List-Unsubscribe. Он ведёт на адрес для ответа канала доставки, и эту почту кто-то должен читать.",
1147
+ "save": "Сохранить брендинг",
1148
+ "saving": "Сохранение"
1149
1149
  },
1150
1150
  "suppressions": {
1151
- "title": "",
1152
- "globalNote": "",
1153
- "empty": "",
1154
- "emptyDescription": "",
1155
- "add": "",
1156
- "addTitle": "",
1157
- "addDescription": "",
1158
- "address": "",
1159
- "addConfirm": "",
1151
+ "title": "Адреса в стоп-листе",
1152
+ "globalNote": "Стоп-лист действует на адрес целиком: он исключает адрес из всех рассылок этого экземпляра.",
1153
+ "empty": "Адресов в стоп-листе пока нет",
1154
+ "emptyDescription": "Отписавшиеся попадают сюда автоматически. Добавьте адрес вручную, чтобы исключить его из всех рассылок.",
1155
+ "add": "Добавить адрес",
1156
+ "addTitle": "Добавить адрес в стоп-лист",
1157
+ "addDescription": "Этот адрес не будет получать рассылки, пока его не удалят из этого списка.",
1158
+ "address": "Адрес электронной почты",
1159
+ "addConfirm": "Добавить",
1160
1160
  "reason": {
1161
- "unsubscribed": "",
1162
- "manual": ""
1161
+ "unsubscribed": "Отписался",
1162
+ "manual": "Добавлен вручную"
1163
1163
  },
1164
- "openSource": "",
1165
- "remove": "",
1166
- "removeTitle": "",
1167
- "removeDescription": ""
1164
+ "openSource": "Открыть исходную рассылку",
1165
+ "remove": "Удалить {{address}} из списка",
1166
+ "removeTitle": "Удалить этот адрес?",
1167
+ "removeDescription": "{{address}} снова будет получать рассылки со следующей отправки."
1168
1168
  }
1169
1169
  },
1170
1170
  "shared": {
1171
1171
  "timezone": {
1172
- "placeholder": "",
1173
- "search": "",
1174
- "empty": "",
1175
- "other": ""
1172
+ "placeholder": "Выберите часовой пояс",
1173
+ "search": "Поиск часовых поясов",
1174
+ "empty": "Часовые пояса не найдены",
1175
+ "other": "Другие"
1176
1176
  }
1177
1177
  },
1178
1178
  "requests": {
1179
- "label": "",
1180
- "link": "",
1181
- "unlink": "",
1182
- "syncNow": "",
1183
- "enable": "",
1184
- "disable": "",
1185
- "paused": "",
1186
- "menuLabel": "",
1187
- "syncedAgo": "",
1188
- "neverSynced": "",
1179
+ "label": "Запросы",
1180
+ "link": "Привязать Seerr",
1181
+ "unlink": "Отвязать",
1182
+ "syncNow": "Синхронизировать",
1183
+ "enable": "Включить синхронизацию",
1184
+ "disable": "Выключить синхронизацию",
1185
+ "paused": "Пауза",
1186
+ "menuLabel": "Действия Seerr для {{server}}",
1187
+ "syncedAgo": "Синхронизировано: {{ago}}",
1188
+ "neverSynced": "Ещё не синхронизировано",
1189
1189
  "counts": {
1190
- "requests_one": "",
1191
- "requests_few": "",
1192
- "requests_many": "",
1193
- "requests_other": ""
1190
+ "requests_one": "{{count}} запрос",
1191
+ "requests_few": "{{count}} запроса",
1192
+ "requests_many": "{{count}} запросов",
1193
+ "requests_other": "{{count}} запросов"
1194
1194
  },
1195
- "needsKey": "",
1196
- "lastError": "",
1197
- "lastErrorNoTime": "",
1195
+ "needsKey": "Нужен ключ API",
1196
+ "lastError": "Последняя синхронизация не удалась ({{ago}}): {{error}}",
1197
+ "lastErrorNoTime": "Последняя синхронизация не удалась: {{error}}",
1198
1198
  "dialog": {
1199
- "titleLink": "",
1200
- "titleEdit": "",
1201
- "description": "",
1202
- "url": "",
1203
- "apiKey": "",
1204
- "apiKeyHint": "",
1205
- "apiKeyKeep": "",
1206
- "showKey": "",
1207
- "hideKey": "",
1208
- "test": "",
1209
- "testing": "",
1210
- "saveHint": "",
1211
- "match": "",
1212
- "mismatch": "",
1213
- "mismatchIds": "",
1214
- "mismatchOther": ""
1199
+ "titleLink": "Привязать Seerr к {{server}}",
1200
+ "titleEdit": "Редактирование привязки Seerr",
1201
+ "description": "Tracearr читает историю запросов из этого Seerr. Обратно ничего не записывается.",
1202
+ "url": "URL Seerr",
1203
+ "apiKey": "Ключ API",
1204
+ "apiKeyHint": "Seerr → Settings → General → API key",
1205
+ "apiKeyKeep": "Оставьте пустым, чтобы сохранить текущий ключ",
1206
+ "showKey": "Показать ключ API",
1207
+ "hideKey": "Скрыть ключ API",
1208
+ "test": "Проверить",
1209
+ "testing": "Проверка…",
1210
+ "saveHint": "Проверьте подключение перед сохранением",
1211
+ "match": "{{title}} · Seerr {{version}} · {{type}} · это {{server}}",
1212
+ "mismatch": "Этот Seerr подключён к другому серверу.",
1213
+ "mismatchIds": "Seerr сообщает {{remote}}, а {{server}} — это {{local}}.",
1214
+ "mismatchOther": "Он соответствует {{other}}."
1215
1215
  },
1216
1216
  "confirmUnlink": {
1217
- "title": "",
1218
- "body": ""
1217
+ "title": "Отвязать Seerr?",
1218
+ "body": "Скопированная история запросов для {{server}} будет удалена."
1219
1219
  },
1220
1220
  "toast": {
1221
- "saved": "",
1222
- "removed": "",
1223
- "syncStarted": "",
1224
- "failed": ""
1221
+ "saved": "Сервис запросов сохранён",
1222
+ "removed": "Сервис запросов удалён",
1223
+ "syncStarted": "Синхронизация запущена",
1224
+ "failed": "Ошибка сервиса запросов: {{error}}"
1225
1225
  }
1226
1226
  }
1227
- }
1227
+ }