@tracearr/translations 2.5.1 → 2.6.0-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/dist/config.d.ts +416 -594
  2. package/dist/config.d.ts.map +1 -1
  3. package/dist/config.js +2 -1
  4. package/dist/config.js.map +1 -1
  5. package/dist/config.mobile.d.ts +416 -594
  6. package/dist/config.mobile.d.ts.map +1 -1
  7. package/dist/config.mobile.js +2 -1
  8. package/dist/config.mobile.js.map +1 -1
  9. package/dist/locales/af-ZA/common.json +5 -92
  10. package/dist/locales/af-ZA/mobile.json +22 -31
  11. package/dist/locales/af-ZA/nav.json +1 -3
  12. package/dist/locales/af-ZA/notifications.json +11 -64
  13. package/dist/locales/af-ZA/pages.json +85 -113
  14. package/dist/locales/af-ZA/settings.json +63 -94
  15. package/dist/locales/ar-SA/common.json +81 -92
  16. package/dist/locales/ar-SA/mobile.json +62 -31
  17. package/dist/locales/ar-SA/nav.json +1 -3
  18. package/dist/locales/ar-SA/notifications.json +35 -64
  19. package/dist/locales/ar-SA/pages.json +271 -131
  20. package/dist/locales/ar-SA/settings.json +199 -98
  21. package/dist/locales/ca-ES/common.json +3 -90
  22. package/dist/locales/ca-ES/mobile.json +22 -31
  23. package/dist/locales/ca-ES/nav.json +1 -3
  24. package/dist/locales/ca-ES/notifications.json +11 -64
  25. package/dist/locales/ca-ES/pages.json +106 -134
  26. package/dist/locales/ca-ES/settings.json +70 -101
  27. package/dist/locales/cs-CZ/common.json +43 -92
  28. package/dist/locales/cs-CZ/mobile.json +42 -31
  29. package/dist/locales/cs-CZ/nav.json +1 -3
  30. package/dist/locales/cs-CZ/notifications.json +23 -64
  31. package/dist/locales/cs-CZ/pages.json +187 -131
  32. package/dist/locales/cs-CZ/settings.json +133 -98
  33. package/dist/locales/da-DK/common.json +5 -92
  34. package/dist/locales/da-DK/mobile.json +22 -31
  35. package/dist/locales/da-DK/nav.json +1 -3
  36. package/dist/locales/da-DK/notifications.json +11 -64
  37. package/dist/locales/da-DK/pages.json +103 -131
  38. package/dist/locales/da-DK/settings.json +67 -98
  39. package/dist/locales/de-DE/common.json +5 -92
  40. package/dist/locales/de-DE/mobile.json +22 -31
  41. package/dist/locales/de-DE/nav.json +1 -3
  42. package/dist/locales/de-DE/notifications.json +11 -64
  43. package/dist/locales/de-DE/pages.json +103 -131
  44. package/dist/locales/de-DE/settings.json +67 -98
  45. package/dist/locales/el-GR/common.json +5 -92
  46. package/dist/locales/el-GR/mobile.json +23 -32
  47. package/dist/locales/el-GR/nav.json +1 -3
  48. package/dist/locales/el-GR/notifications.json +11 -64
  49. package/dist/locales/el-GR/pages.json +107 -135
  50. package/dist/locales/el-GR/settings.json +67 -98
  51. package/dist/locales/en/common.json +2 -89
  52. package/dist/locales/en/mobile.json +13 -22
  53. package/dist/locales/en/nav.json +0 -2
  54. package/dist/locales/en/notifications.json +6 -59
  55. package/dist/locales/en/pages.json +164 -81
  56. package/dist/locales/en/settings.json +53 -84
  57. package/dist/locales/es-ES/common.json +5 -92
  58. package/dist/locales/es-ES/mobile.json +22 -31
  59. package/dist/locales/es-ES/nav.json +1 -3
  60. package/dist/locales/es-ES/notifications.json +11 -64
  61. package/dist/locales/es-ES/pages.json +102 -130
  62. package/dist/locales/es-ES/settings.json +67 -98
  63. package/dist/locales/fi-FI/common.json +5 -92
  64. package/dist/locales/fi-FI/mobile.json +24 -33
  65. package/dist/locales/fi-FI/nav.json +1 -3
  66. package/dist/locales/fi-FI/notifications.json +11 -64
  67. package/dist/locales/fi-FI/pages.json +103 -131
  68. package/dist/locales/fi-FI/settings.json +67 -98
  69. package/dist/locales/fr-FR/common.json +9 -96
  70. package/dist/locales/fr-FR/mobile.json +41 -50
  71. package/dist/locales/fr-FR/nav.json +1 -3
  72. package/dist/locales/fr-FR/notifications.json +18 -71
  73. package/dist/locales/fr-FR/pages.json +111 -139
  74. package/dist/locales/fr-FR/settings.json +71 -102
  75. package/dist/locales/he-IL/common.json +24 -92
  76. package/dist/locales/he-IL/mobile.json +32 -31
  77. package/dist/locales/he-IL/nav.json +1 -3
  78. package/dist/locales/he-IL/notifications.json +17 -64
  79. package/dist/locales/he-IL/pages.json +127 -113
  80. package/dist/locales/he-IL/settings.json +96 -94
  81. package/dist/locales/hu-HU/common.json +5 -92
  82. package/dist/locales/hu-HU/mobile.json +22 -31
  83. package/dist/locales/hu-HU/nav.json +1 -3
  84. package/dist/locales/hu-HU/notifications.json +11 -64
  85. package/dist/locales/hu-HU/pages.json +85 -113
  86. package/dist/locales/hu-HU/settings.json +63 -94
  87. package/dist/locales/it-IT/common.json +5 -92
  88. package/dist/locales/it-IT/mobile.json +22 -31
  89. package/dist/locales/it-IT/nav.json +1 -3
  90. package/dist/locales/it-IT/notifications.json +11 -64
  91. package/dist/locales/it-IT/pages.json +103 -131
  92. package/dist/locales/it-IT/settings.json +67 -98
  93. package/dist/locales/ja-JP/common.json +4 -110
  94. package/dist/locales/ja-JP/mobile.json +14 -33
  95. package/dist/locales/ja-JP/nav.json +1 -3
  96. package/dist/locales/ja-JP/notifications.json +9 -68
  97. package/dist/locales/ja-JP/pages.json +75 -145
  98. package/dist/locales/ja-JP/settings.json +42 -106
  99. package/dist/locales/ko-KR/common.json +3 -109
  100. package/dist/locales/ko-KR/mobile.json +14 -33
  101. package/dist/locales/ko-KR/nav.json +1 -3
  102. package/dist/locales/ko-KR/notifications.json +10 -69
  103. package/dist/locales/ko-KR/pages.json +79 -149
  104. package/dist/locales/ko-KR/settings.json +44 -108
  105. package/dist/locales/nl-NL/common.json +5 -92
  106. package/dist/locales/nl-NL/mobile.json +22 -31
  107. package/dist/locales/nl-NL/nav.json +1 -3
  108. package/dist/locales/nl-NL/notifications.json +11 -64
  109. package/dist/locales/nl-NL/pages.json +103 -131
  110. package/dist/locales/nl-NL/settings.json +69 -100
  111. package/dist/locales/no-NO/common.json +5 -92
  112. package/dist/locales/no-NO/mobile.json +23 -32
  113. package/dist/locales/no-NO/nav.json +1 -3
  114. package/dist/locales/no-NO/notifications.json +11 -64
  115. package/dist/locales/no-NO/pages.json +103 -131
  116. package/dist/locales/no-NO/settings.json +67 -98
  117. package/dist/locales/pl-PL/common.json +42 -91
  118. package/dist/locales/pl-PL/mobile.json +110 -99
  119. package/dist/locales/pl-PL/nav.json +1 -3
  120. package/dist/locales/pl-PL/notifications.json +79 -120
  121. package/dist/locales/pl-PL/pages.json +1480 -1424
  122. package/dist/locales/pl-PL/settings.json +371 -336
  123. package/dist/locales/pt-BR/common.json +5 -92
  124. package/dist/locales/pt-BR/mobile.json +22 -31
  125. package/dist/locales/pt-BR/nav.json +1 -3
  126. package/dist/locales/pt-BR/notifications.json +11 -64
  127. package/dist/locales/pt-BR/pages.json +108 -136
  128. package/dist/locales/pt-BR/settings.json +67 -98
  129. package/dist/locales/pt-PT/common.json +46 -133
  130. package/dist/locales/pt-PT/mobile.json +32 -41
  131. package/dist/locales/pt-PT/nav.json +1 -3
  132. package/dist/locales/pt-PT/notifications.json +11 -64
  133. package/dist/locales/pt-PT/pages.json +103 -131
  134. package/dist/locales/pt-PT/settings.json +67 -98
  135. package/dist/locales/ro-RO/common.json +24 -92
  136. package/dist/locales/ro-RO/mobile.json +32 -31
  137. package/dist/locales/ro-RO/nav.json +1 -3
  138. package/dist/locales/ro-RO/notifications.json +17 -64
  139. package/dist/locales/ro-RO/pages.json +144 -130
  140. package/dist/locales/ro-RO/settings.json +100 -98
  141. package/dist/locales/ru-RU/common.json +43 -92
  142. package/dist/locales/ru-RU/mobile.json +43 -32
  143. package/dist/locales/ru-RU/nav.json +1 -3
  144. package/dist/locales/ru-RU/notifications.json +23 -64
  145. package/dist/locales/ru-RU/pages.json +187 -131
  146. package/dist/locales/ru-RU/settings.json +133 -98
  147. package/dist/locales/sr-SP/common.json +24 -92
  148. package/dist/locales/sr-SP/mobile.json +32 -31
  149. package/dist/locales/sr-SP/nav.json +1 -3
  150. package/dist/locales/sr-SP/notifications.json +17 -64
  151. package/dist/locales/sr-SP/pages.json +127 -113
  152. package/dist/locales/sr-SP/settings.json +96 -94
  153. package/dist/locales/sv-SE/common.json +5 -92
  154. package/dist/locales/sv-SE/mobile.json +22 -31
  155. package/dist/locales/sv-SE/nav.json +1 -3
  156. package/dist/locales/sv-SE/notifications.json +11 -64
  157. package/dist/locales/sv-SE/pages.json +103 -131
  158. package/dist/locales/sv-SE/settings.json +67 -98
  159. package/dist/locales/tr-TR/common.json +5 -92
  160. package/dist/locales/tr-TR/mobile.json +22 -31
  161. package/dist/locales/tr-TR/nav.json +1 -3
  162. package/dist/locales/tr-TR/notifications.json +11 -64
  163. package/dist/locales/tr-TR/pages.json +87 -115
  164. package/dist/locales/tr-TR/settings.json +63 -94
  165. package/dist/locales/uk-UA/common.json +44 -93
  166. package/dist/locales/uk-UA/mobile.json +44 -33
  167. package/dist/locales/uk-UA/nav.json +9 -4
  168. package/dist/locales/uk-UA/notifications.json +23 -64
  169. package/dist/locales/uk-UA/pages.json +190 -134
  170. package/dist/locales/uk-UA/settings.json +133 -98
  171. package/dist/locales/vi-VN/common.json +4 -110
  172. package/dist/locales/vi-VN/mobile.json +14 -33
  173. package/dist/locales/vi-VN/nav.json +1 -3
  174. package/dist/locales/vi-VN/notifications.json +9 -68
  175. package/dist/locales/vi-VN/pages.json +57 -127
  176. package/dist/locales/vi-VN/settings.json +37 -101
  177. package/dist/locales/zh-CN/common.json +9 -115
  178. package/dist/locales/zh-CN/mobile.json +14 -33
  179. package/dist/locales/zh-CN/nav.json +2 -4
  180. package/dist/locales/zh-CN/notifications.json +9 -68
  181. package/dist/locales/zh-CN/pages.json +94 -164
  182. package/dist/locales/zh-CN/settings.json +44 -108
  183. package/dist/locales/zh-TW/common.json +3 -109
  184. package/dist/locales/zh-TW/mobile.json +14 -33
  185. package/dist/locales/zh-TW/nav.json +1 -3
  186. package/dist/locales/zh-TW/notifications.json +9 -68
  187. package/dist/locales/zh-TW/pages.json +60 -130
  188. package/dist/locales/zh-TW/settings.json +41 -105
  189. package/dist/plurals.d.ts +10 -0
  190. package/dist/plurals.d.ts.map +1 -0
  191. package/dist/plurals.js +31 -0
  192. package/dist/plurals.js.map +1 -0
  193. package/package.json +1 -1
  194. package/src/config.mobile.ts +2 -1
  195. package/src/config.ts +2 -1
  196. package/src/locales/af-ZA/common.json +5 -92
  197. package/src/locales/af-ZA/mobile.json +22 -31
  198. package/src/locales/af-ZA/nav.json +1 -3
  199. package/src/locales/af-ZA/notifications.json +11 -64
  200. package/src/locales/af-ZA/pages.json +85 -113
  201. package/src/locales/af-ZA/settings.json +63 -94
  202. package/src/locales/ar-SA/common.json +81 -92
  203. package/src/locales/ar-SA/mobile.json +62 -31
  204. package/src/locales/ar-SA/nav.json +1 -3
  205. package/src/locales/ar-SA/notifications.json +35 -64
  206. package/src/locales/ar-SA/pages.json +271 -131
  207. package/src/locales/ar-SA/settings.json +199 -98
  208. package/src/locales/ca-ES/common.json +3 -90
  209. package/src/locales/ca-ES/mobile.json +22 -31
  210. package/src/locales/ca-ES/nav.json +1 -3
  211. package/src/locales/ca-ES/notifications.json +11 -64
  212. package/src/locales/ca-ES/pages.json +106 -134
  213. package/src/locales/ca-ES/settings.json +70 -101
  214. package/src/locales/cs-CZ/common.json +43 -92
  215. package/src/locales/cs-CZ/mobile.json +42 -31
  216. package/src/locales/cs-CZ/nav.json +1 -3
  217. package/src/locales/cs-CZ/notifications.json +23 -64
  218. package/src/locales/cs-CZ/pages.json +187 -131
  219. package/src/locales/cs-CZ/settings.json +133 -98
  220. package/src/locales/da-DK/common.json +5 -92
  221. package/src/locales/da-DK/mobile.json +22 -31
  222. package/src/locales/da-DK/nav.json +1 -3
  223. package/src/locales/da-DK/notifications.json +11 -64
  224. package/src/locales/da-DK/pages.json +103 -131
  225. package/src/locales/da-DK/settings.json +67 -98
  226. package/src/locales/de-DE/common.json +5 -92
  227. package/src/locales/de-DE/mobile.json +22 -31
  228. package/src/locales/de-DE/nav.json +1 -3
  229. package/src/locales/de-DE/notifications.json +11 -64
  230. package/src/locales/de-DE/pages.json +103 -131
  231. package/src/locales/de-DE/settings.json +67 -98
  232. package/src/locales/el-GR/common.json +5 -92
  233. package/src/locales/el-GR/mobile.json +23 -32
  234. package/src/locales/el-GR/nav.json +1 -3
  235. package/src/locales/el-GR/notifications.json +11 -64
  236. package/src/locales/el-GR/pages.json +107 -135
  237. package/src/locales/el-GR/settings.json +67 -98
  238. package/src/locales/en/common.json +2 -89
  239. package/src/locales/en/mobile.json +13 -22
  240. package/src/locales/en/nav.json +0 -2
  241. package/src/locales/en/notifications.json +6 -59
  242. package/src/locales/en/pages.json +164 -81
  243. package/src/locales/en/settings.json +53 -84
  244. package/src/locales/es-ES/common.json +5 -92
  245. package/src/locales/es-ES/mobile.json +22 -31
  246. package/src/locales/es-ES/nav.json +1 -3
  247. package/src/locales/es-ES/notifications.json +11 -64
  248. package/src/locales/es-ES/pages.json +102 -130
  249. package/src/locales/es-ES/settings.json +67 -98
  250. package/src/locales/fi-FI/common.json +5 -92
  251. package/src/locales/fi-FI/mobile.json +24 -33
  252. package/src/locales/fi-FI/nav.json +1 -3
  253. package/src/locales/fi-FI/notifications.json +11 -64
  254. package/src/locales/fi-FI/pages.json +103 -131
  255. package/src/locales/fi-FI/settings.json +67 -98
  256. package/src/locales/fr-FR/common.json +9 -96
  257. package/src/locales/fr-FR/mobile.json +41 -50
  258. package/src/locales/fr-FR/nav.json +1 -3
  259. package/src/locales/fr-FR/notifications.json +18 -71
  260. package/src/locales/fr-FR/pages.json +111 -139
  261. package/src/locales/fr-FR/settings.json +71 -102
  262. package/src/locales/he-IL/common.json +24 -92
  263. package/src/locales/he-IL/mobile.json +32 -31
  264. package/src/locales/he-IL/nav.json +1 -3
  265. package/src/locales/he-IL/notifications.json +17 -64
  266. package/src/locales/he-IL/pages.json +127 -113
  267. package/src/locales/he-IL/settings.json +96 -94
  268. package/src/locales/hu-HU/common.json +5 -92
  269. package/src/locales/hu-HU/mobile.json +22 -31
  270. package/src/locales/hu-HU/nav.json +1 -3
  271. package/src/locales/hu-HU/notifications.json +11 -64
  272. package/src/locales/hu-HU/pages.json +85 -113
  273. package/src/locales/hu-HU/settings.json +63 -94
  274. package/src/locales/it-IT/common.json +5 -92
  275. package/src/locales/it-IT/mobile.json +22 -31
  276. package/src/locales/it-IT/nav.json +1 -3
  277. package/src/locales/it-IT/notifications.json +11 -64
  278. package/src/locales/it-IT/pages.json +103 -131
  279. package/src/locales/it-IT/settings.json +67 -98
  280. package/src/locales/ja-JP/common.json +4 -110
  281. package/src/locales/ja-JP/mobile.json +14 -33
  282. package/src/locales/ja-JP/nav.json +1 -3
  283. package/src/locales/ja-JP/notifications.json +9 -68
  284. package/src/locales/ja-JP/pages.json +75 -145
  285. package/src/locales/ja-JP/settings.json +42 -106
  286. package/src/locales/ko-KR/common.json +3 -109
  287. package/src/locales/ko-KR/mobile.json +14 -33
  288. package/src/locales/ko-KR/nav.json +1 -3
  289. package/src/locales/ko-KR/notifications.json +10 -69
  290. package/src/locales/ko-KR/pages.json +79 -149
  291. package/src/locales/ko-KR/settings.json +44 -108
  292. package/src/locales/nl-NL/common.json +5 -92
  293. package/src/locales/nl-NL/mobile.json +22 -31
  294. package/src/locales/nl-NL/nav.json +1 -3
  295. package/src/locales/nl-NL/notifications.json +11 -64
  296. package/src/locales/nl-NL/pages.json +103 -131
  297. package/src/locales/nl-NL/settings.json +69 -100
  298. package/src/locales/no-NO/common.json +5 -92
  299. package/src/locales/no-NO/mobile.json +23 -32
  300. package/src/locales/no-NO/nav.json +1 -3
  301. package/src/locales/no-NO/notifications.json +11 -64
  302. package/src/locales/no-NO/pages.json +103 -131
  303. package/src/locales/no-NO/settings.json +67 -98
  304. package/src/locales/pl-PL/common.json +42 -91
  305. package/src/locales/pl-PL/mobile.json +110 -99
  306. package/src/locales/pl-PL/nav.json +1 -3
  307. package/src/locales/pl-PL/notifications.json +79 -120
  308. package/src/locales/pl-PL/pages.json +1480 -1424
  309. package/src/locales/pl-PL/settings.json +371 -336
  310. package/src/locales/pt-BR/common.json +5 -92
  311. package/src/locales/pt-BR/mobile.json +22 -31
  312. package/src/locales/pt-BR/nav.json +1 -3
  313. package/src/locales/pt-BR/notifications.json +11 -64
  314. package/src/locales/pt-BR/pages.json +108 -136
  315. package/src/locales/pt-BR/settings.json +67 -98
  316. package/src/locales/pt-PT/common.json +46 -133
  317. package/src/locales/pt-PT/mobile.json +32 -41
  318. package/src/locales/pt-PT/nav.json +1 -3
  319. package/src/locales/pt-PT/notifications.json +11 -64
  320. package/src/locales/pt-PT/pages.json +103 -131
  321. package/src/locales/pt-PT/settings.json +67 -98
  322. package/src/locales/ro-RO/common.json +24 -92
  323. package/src/locales/ro-RO/mobile.json +32 -31
  324. package/src/locales/ro-RO/nav.json +1 -3
  325. package/src/locales/ro-RO/notifications.json +17 -64
  326. package/src/locales/ro-RO/pages.json +144 -130
  327. package/src/locales/ro-RO/settings.json +100 -98
  328. package/src/locales/ru-RU/common.json +43 -92
  329. package/src/locales/ru-RU/mobile.json +43 -32
  330. package/src/locales/ru-RU/nav.json +1 -3
  331. package/src/locales/ru-RU/notifications.json +23 -64
  332. package/src/locales/ru-RU/pages.json +187 -131
  333. package/src/locales/ru-RU/settings.json +133 -98
  334. package/src/locales/sr-SP/common.json +24 -92
  335. package/src/locales/sr-SP/mobile.json +32 -31
  336. package/src/locales/sr-SP/nav.json +1 -3
  337. package/src/locales/sr-SP/notifications.json +17 -64
  338. package/src/locales/sr-SP/pages.json +127 -113
  339. package/src/locales/sr-SP/settings.json +96 -94
  340. package/src/locales/sv-SE/common.json +5 -92
  341. package/src/locales/sv-SE/mobile.json +22 -31
  342. package/src/locales/sv-SE/nav.json +1 -3
  343. package/src/locales/sv-SE/notifications.json +11 -64
  344. package/src/locales/sv-SE/pages.json +103 -131
  345. package/src/locales/sv-SE/settings.json +67 -98
  346. package/src/locales/tr-TR/common.json +5 -92
  347. package/src/locales/tr-TR/mobile.json +22 -31
  348. package/src/locales/tr-TR/nav.json +1 -3
  349. package/src/locales/tr-TR/notifications.json +11 -64
  350. package/src/locales/tr-TR/pages.json +87 -115
  351. package/src/locales/tr-TR/settings.json +63 -94
  352. package/src/locales/uk-UA/common.json +44 -93
  353. package/src/locales/uk-UA/mobile.json +44 -33
  354. package/src/locales/uk-UA/nav.json +9 -4
  355. package/src/locales/uk-UA/notifications.json +23 -64
  356. package/src/locales/uk-UA/pages.json +190 -134
  357. package/src/locales/uk-UA/settings.json +133 -98
  358. package/src/locales/vi-VN/common.json +4 -110
  359. package/src/locales/vi-VN/mobile.json +14 -33
  360. package/src/locales/vi-VN/nav.json +1 -3
  361. package/src/locales/vi-VN/notifications.json +9 -68
  362. package/src/locales/vi-VN/pages.json +57 -127
  363. package/src/locales/vi-VN/settings.json +37 -101
  364. package/src/locales/zh-CN/common.json +9 -115
  365. package/src/locales/zh-CN/mobile.json +14 -33
  366. package/src/locales/zh-CN/nav.json +2 -4
  367. package/src/locales/zh-CN/notifications.json +9 -68
  368. package/src/locales/zh-CN/pages.json +94 -164
  369. package/src/locales/zh-CN/settings.json +44 -108
  370. package/src/locales/zh-TW/common.json +3 -109
  371. package/src/locales/zh-TW/mobile.json +14 -33
  372. package/src/locales/zh-TW/nav.json +1 -3
  373. package/src/locales/zh-TW/notifications.json +9 -68
  374. package/src/locales/zh-TW/pages.json +60 -130
  375. package/src/locales/zh-TW/settings.json +41 -105
  376. package/src/plurals.ts +32 -0
@@ -49,19 +49,14 @@
49
49
  }
50
50
  },
51
51
  "general": {
52
- "title": "一般設定",
53
52
  "unitSystem": "單位系統",
54
53
  "metric": "公制(km, km/h)",
55
54
  "imperial": "英制(mi, mph)",
56
- "timezone": "時區",
57
- "primaryAuth": "主要驗證方法",
58
- "localAccount": "本地帳號",
59
- "plexAccount": "Plex 帳號",
60
55
  "language": "語言",
61
- "languageDescription": "請選擇你偏好的顯示語言。",
56
+ "languageDescription": "儲存在此瀏覽器中,因此每位登入的使用者都可以選擇自己的語言。",
62
57
  "helpTranslate": "幫助翻譯 Tracearr",
63
58
  "timeFormat": "時間格式",
64
- "timeFormatDescription": "請選擇如何顯示時間。",
59
+ "timeFormatDescription": "12 小時制或 24 小時制,用於歷史記錄和媒體頁面中的會話時間。",
65
60
  "timeFormat12h": "12 小時制(1:30 PM)",
66
61
  "timeFormat24h": "24 小時制(13:30)",
67
62
  "theme": "",
@@ -127,7 +122,6 @@
127
122
  "size": "",
128
123
  "files": "",
129
124
  "need": "",
130
- "needHint": "",
131
125
  "free": "",
132
126
  "freeOf": "",
133
127
  "floor": "",
@@ -138,18 +132,15 @@
138
132
  "never": "",
139
133
  "diskLimited": "",
140
134
  "loadError": "",
141
- "notPersisting": ""
135
+ "notPersisting": "",
136
+ "needHint_other": ""
142
137
  }
143
138
  },
144
139
  "servers": {
145
- "title": "已連接的伺服器",
146
140
  "addServer": "新增伺服器",
147
141
  "serverName": "伺服器名稱",
148
142
  "serverUrl": "伺服器網址",
149
- "syncInterval": "同步間隔",
150
143
  "testConnection": "測試連線",
151
- "connectionSuccess": "連接成功",
152
- "connectionFailed": "連接失敗",
153
144
  "noServersConnected": "",
154
145
  "noServersConnectedHint": "",
155
146
  "serverType": "",
@@ -162,11 +153,8 @@
162
153
  "allServersConnected": "",
163
154
  "allServersConnectedDesc": "",
164
155
  "serverUrlPlaceholder": "",
165
- "serverUrlHelp": "",
166
156
  "serverNamePlaceholder": "",
167
157
  "apiKeyPlaceholder": "",
168
- "apiKeyHelp": "",
169
- "connecting": "正在連接……",
170
158
  "connectServer": "",
171
159
  "removeServer": "",
172
160
  "removeServerConfirm": "",
@@ -178,7 +166,6 @@
178
166
  "allFieldsRequired": "",
179
167
  "addServerDialogDescPlex": "",
180
168
  "addServerDialogDescOther": "",
181
- "description": "",
182
169
  "discoveringServers": "",
183
170
  "discoveringConnections": "",
184
171
  "plexAccount": "",
@@ -208,7 +195,6 @@
208
195
  "addMove": "",
209
196
  "fromBeginning": "",
210
197
  "movedOn": "",
211
- "remove": "",
212
198
  "latitude": "",
213
199
  "longitude": "",
214
200
  "country": "",
@@ -231,17 +217,12 @@
231
217
  "repositoryUrl": "",
232
218
  "copyUrl": "",
233
219
  "jellyfinRepoUrl": "",
234
- "embyReleasesUrl": "",
235
- "openReleases": "",
236
220
  "autoDetectNote": "",
237
- "close": "",
238
221
  "issueBlocked": "",
239
222
  "issueRestartRequired": "",
240
223
  "issueMalfunctioned": ""
241
224
  },
242
225
  "posterSource": {
243
- "title": "",
244
- "titleDesc": "",
245
226
  "label": "",
246
227
  "description": "",
247
228
  "automatic": "",
@@ -262,7 +243,7 @@
262
243
  "tokenExpires": "憑證於 {{time}} 過期",
263
244
  "lastSeen": "",
264
245
  "connectedOn": "",
265
- "noDevices": "未連接至任何裝置",
246
+ "noDevices": "尚未配對任何裝置",
266
247
  "noDevicesDesc": "",
267
248
  "revokeAll": "撤銷所有會話",
268
249
  "getOnGooglePlay": "",
@@ -273,7 +254,6 @@
273
254
  "enableMobileAccess": "",
274
255
  "enabling": "",
275
256
  "devicesConnected": "",
276
- "pendingTokens": "",
277
257
  "addDevice": "",
278
258
  "disableMobileAccess": "",
279
259
  "revokeAllSessions": "",
@@ -296,7 +276,8 @@
296
276
  "removeDeviceConfirm": "",
297
277
  "externalUrlBanner": "",
298
278
  "externalUrlBannerLink": "",
299
- "externalUrlBannerSuffix": ""
279
+ "externalUrlBannerSuffix": "",
280
+ "pendingTokens_other": ""
300
281
  },
301
282
  "tailscale": {
302
283
  "title": "",
@@ -318,8 +299,6 @@
318
299
  "showLogs": "顯示日誌",
319
300
  "hideLogs": "隱藏日誌",
320
301
  "noLogs": "沒有可用的日誌輸出。",
321
- "exitNodeNone": "沒有",
322
- "exitNodeOffline": "(離線)",
323
302
  "unknownError": "發生了未知錯誤。",
324
303
  "disableConfirmTitle": "停用 Tailscale?",
325
304
  "disableConfirmDescription": "這將使 Tracearr 與你的 tailnet 中斷連接。你可以在不重新認證的情況下重新啟用。",
@@ -363,33 +342,12 @@
363
342
  "automatic": "",
364
343
  "startJob": ""
365
344
  },
366
- "advanced": {
367
- "title": "進階設定",
368
- "externalUrl": "外部網址",
369
- "trustProxy": "信任代理標頭",
370
- "reverseProxy": "",
371
- "connectionScenarios": "連線情境"
372
- },
373
345
  "accessControl": {
374
- "title": "",
375
- "description": "",
376
346
  "allowGuestAccess": "",
377
347
  "allowGuestAccessDesc": "",
378
348
  "singleOwnerNote": ""
379
349
  },
380
350
  "import": {
381
- "title": "匯入資料",
382
- "jellystat": "從 Jellyfin 匯入",
383
- "tautulli": "從 Tautulli 匯入",
384
- "importProgress": "匯入進度",
385
- "importComplete": "匯入完成",
386
- "importFailed": "匯入失敗",
387
- "processed": "已處理",
388
- "page": "頁",
389
- "imported": "已匯入",
390
- "skipped": "已略過",
391
- "enriched": "豐富",
392
- "errors": "錯誤",
393
351
  "noServers": "",
394
352
  "noServersHint": "",
395
353
  "tautulliUrl": "",
@@ -426,8 +384,6 @@
426
384
  "uploadingBackup": "",
427
385
  "plex": "",
428
386
  "jellyfinEmby": "",
429
- "step1": "",
430
- "step2": "",
431
387
  "apiKeyPlaceholder": "",
432
388
  "skipUserNotFoundPlex": "",
433
389
  "skipDuplicate": "",
@@ -448,10 +404,10 @@
448
404
  "serverTimezoneHelp": "",
449
405
  "importFullRange": "",
450
406
  "importFullRangeHelp": "",
451
- "overlapSkipped": "",
452
- "duplicates": "",
453
407
  "skipOverlap": "",
454
- "skipDuplicatePlugin": ""
408
+ "skipDuplicatePlugin": "",
409
+ "overlapSkipped_other": "",
410
+ "duplicates_other": ""
455
411
  },
456
412
  "plex": {
457
413
  "signInWithPlex": "使用 Plex 登入",
@@ -463,10 +419,7 @@
463
419
  "createAccount": "建立新帳號",
464
420
  "email": "電子信箱",
465
421
  "password": "密碼",
466
- "displayName": "顯示名稱",
467
- "createYourAccount": "建立你的帳號即可開始使用",
468
- "signInToAccount": "登入你的帳號",
469
- "useLocalAccount": "改用本地帳號"
422
+ "displayName": "顯示名稱"
470
423
  },
471
424
  "update": {
472
425
  "title": "有可用的更新",
@@ -491,8 +444,6 @@
491
444
  "earlier": "",
492
445
  "installedBadge": "",
493
446
  "latestBadge": "",
494
- "changeCount_one": "",
495
- "changeCount_other": "",
496
447
  "series": "",
497
448
  "docs": "",
498
449
  "source": "",
@@ -503,11 +454,12 @@
503
454
  "fix": "",
504
455
  "security": "",
505
456
  "note": ""
506
- }
457
+ },
458
+ "changeCount_other": ""
507
459
  },
508
460
  "serverHealth": {
509
461
  "unreachable": "{{serverName}} 無法連接",
510
- "multipleUnreachable": "{{count}} 個伺服器無法連接:{{serverNames}}"
462
+ "multipleUnreachable_other": "{{count}} 個伺服器無法連接:{{serverNames}}"
511
463
  },
512
464
  "ipWarning": {
513
465
  "message": "所有使用者似乎都在使用相同的 IP 地址或本地網路 IP 地址。這可能會影響基於規則的位置或 IP 地址邏輯。",
@@ -516,7 +468,7 @@
516
468
  "backup": {
517
469
  "title": "備份",
518
470
  "backToBackups": "返回備份",
519
- "description": "備份並還原您的 Tracearr 數據",
471
+ "description": "",
520
472
  "createBackup": "建立備份",
521
473
  "creating": "正在建立備份……",
522
474
  "uploadBackup": "上傳備份",
@@ -526,9 +478,6 @@
526
478
  "lowDiskSpace": "硬碟空間不足— 備份和還原需要至少兩倍的可用空間。",
527
479
  "backupHistory": "備份記錄",
528
480
  "noBackups": "尚未備份。請在上面建立您的第一個備份。",
529
- "size": "大小",
530
- "date": "",
531
- "type": "類型",
532
481
  "version": "",
533
482
  "actions": "操作",
534
483
  "rowActions": "",
@@ -601,7 +550,6 @@
601
550
  "noDestinationDescription": "",
602
551
  "noDestinationHint": "",
603
552
  "addEmailDestination": "",
604
- "enabled": "",
605
553
  "rowActions": "",
606
554
  "duplicate": "",
607
555
  "sendNow": "",
@@ -627,13 +575,9 @@
627
575
  "skipped_empty": ""
628
576
  },
629
577
  "counts": {
630
- "movies_one": "",
631
578
  "movies_other": "",
632
- "shows_one": "",
633
579
  "shows_other": "",
634
- "albums_one": "",
635
580
  "albums_other": "",
636
- "watched_one": "",
637
581
  "watched_other": ""
638
582
  },
639
583
  "copyOf": "",
@@ -643,7 +587,6 @@
643
587
  "link": "",
644
588
  "bulletList": "",
645
589
  "linkHref": "",
646
- "linkApply": "",
647
590
  "counter": ""
648
591
  },
649
592
  "editor": {
@@ -691,10 +634,10 @@
691
634
  },
692
635
  "windowSentence": {
693
636
  "fallback": "",
694
- "fallbackLabel": "",
695
637
  "fixed": "",
696
638
  "fixedAfter": "",
697
- "fixedLabel": ""
639
+ "fallbackLabel_other": "",
640
+ "fixedLabel_other": ""
698
641
  },
699
642
  "windowMax": "",
700
643
  "days": "",
@@ -702,14 +645,12 @@
702
645
  "allServers": "",
703
646
  "searchServers": "",
704
647
  "noServers": "",
705
- "serversSelected": "",
706
648
  "variantsNote": "",
707
649
  "serversHelp": "",
708
650
  "libraries": "",
709
651
  "allLibraries": "",
710
652
  "searchLibraries": "",
711
653
  "noLibraries": "",
712
- "librariesSelected": "",
713
654
  "librariesHelp": "",
714
655
  "clear": "",
715
656
  "unknownLibrary": "",
@@ -731,11 +672,11 @@
731
672
  "mostPlayed": ""
732
673
  },
733
674
  "labels": {
734
- "movies": "",
735
- "shows": "",
736
- "seasons": "",
737
- "music": "",
738
- "mostWatched": ""
675
+ "movies_other": "",
676
+ "shows_other": "",
677
+ "seasons_other": "",
678
+ "music_other": "",
679
+ "mostWatched_other": ""
739
680
  },
740
681
  "musicHelp": "",
741
682
  "mostWatchedHelp": ""
@@ -743,9 +684,6 @@
743
684
  "message": "",
744
685
  "senderName": "",
745
686
  "senderNameHelp": "",
746
- "senderNameRequiredMulti": "",
747
- "previewVariant_one": "",
748
- "previewVariant_other": "",
749
687
  "variantHeading": "",
750
688
  "subject": "",
751
689
  "subjectHelp": "",
@@ -780,10 +718,8 @@
780
718
  "loadFailed": "",
781
719
  "willReceive": "",
782
720
  "excludedCount": "",
783
- "notIncludable": "",
784
721
  "noAddress": "",
785
722
  "suppressedCount": "",
786
- "joinedSinceLastSend": "",
787
723
  "newSinceLastSend": "",
788
724
  "manage": "",
789
725
  "manageHelp": "",
@@ -798,7 +734,6 @@
798
734
  },
799
735
  "selectAll": "",
800
736
  "selectPerson": "",
801
- "selectedCount": "",
802
737
  "excludeSelected": "",
803
738
  "includeSelected": "",
804
739
  "noMatches": "",
@@ -818,7 +753,6 @@
818
753
  "include": "",
819
754
  "includeAction": "",
820
755
  "excludedHelp": "",
821
- "notIncludableHelp": "",
822
756
  "excludedAfterSave": "",
823
757
  "includedAfterSave": "",
824
758
  "reasons": {
@@ -828,7 +762,11 @@
828
762
  "noServer": ""
829
763
  },
830
764
  "emptyTitle": "",
831
- "emptyDescription": ""
765
+ "emptyDescription": "",
766
+ "notIncludable_other": "",
767
+ "joinedSinceLastSend_other": "",
768
+ "selectedCount_other": "",
769
+ "notIncludableHelp_other": ""
832
770
  },
833
771
  "delivery": {
834
772
  "title": "",
@@ -877,13 +815,12 @@
877
815
  "fromDomain": "",
878
816
  "fromDomainFail": "",
879
817
  "fromDomainUnknown": "",
880
- "recipients_one": "",
881
- "recipients_other": "",
882
818
  "recipientsFail": "",
883
819
  "recipientsChecking": "",
884
820
  "recipientsLoadFailed": "",
885
821
  "dns": "",
886
- "dnsLink": ""
822
+ "dnsLink": "",
823
+ "recipients_other": ""
887
824
  },
888
825
  "actions": {
889
826
  "preview": "",
@@ -928,13 +865,16 @@
928
865
  "send": {
929
866
  "title": "",
930
867
  "previewing": "",
931
- "summary": "",
932
868
  "nobody": "",
933
- "trimmed_one": "",
934
- "trimmed_other": "",
935
869
  "confirm": "",
936
- "sending": ""
937
- }
870
+ "sending": "",
871
+ "summary_other": "",
872
+ "trimmed_other": ""
873
+ },
874
+ "serversSelected_other": "",
875
+ "librariesSelected_other": "",
876
+ "senderNameRequiredMulti_other": "",
877
+ "previewVariant_other": ""
938
878
  },
939
879
  "history": {
940
880
  "empty": "",
@@ -946,7 +886,6 @@
946
886
  "test": ""
947
887
  },
948
888
  "window": "",
949
- "recipients": "",
950
889
  "recipientsEmpty": "",
951
890
  "finished": "",
952
891
  "open": "",
@@ -959,7 +898,6 @@
959
898
  "suppressed": "",
960
899
  "unknown": ""
961
900
  },
962
- "attempts": "",
963
901
  "unknownHelp": "",
964
902
  "openSnapshot": "",
965
903
  "variant": "",
@@ -967,7 +905,9 @@
967
905
  "openVariantSnapshot": "",
968
906
  "snapshotTitle": "",
969
907
  "pruned": "",
970
- "retryFailed": ""
908
+ "retryFailed": "",
909
+ "recipients_other": "",
910
+ "attempts_other": ""
971
911
  }
972
912
  },
973
913
  "email": {
@@ -1035,11 +975,8 @@
1035
975
  "syncedAgo": "",
1036
976
  "neverSynced": "",
1037
977
  "counts": {
1038
- "requests_one": "",
1039
978
  "requests_other": "",
1040
- "unmatchedMedia_one": "",
1041
979
  "unmatchedMedia_other": "",
1042
- "unmatchedUsers_one": "",
1043
980
  "unmatchedUsers_other": ""
1044
981
  },
1045
982
  "needsKey": "",
@@ -1057,7 +994,6 @@
1057
994
  "hideKey": "",
1058
995
  "test": "",
1059
996
  "testing": "",
1060
- "save": "",
1061
997
  "saveHint": "",
1062
998
  "match": "",
1063
999
  "mismatch": "",
@@ -1075,4 +1011,4 @@
1075
1011
  "failed": ""
1076
1012
  }
1077
1013
  }
1078
- }
1014
+ }
@@ -0,0 +1,10 @@
1
+ type Bundle = Record<string, unknown>;
2
+ /**
3
+ * Crowdin exports only `_one` and `_other` for every language, but i18next looks
4
+ * up the language's own categories (`_few`, `_many`, ...) and falls back to English
5
+ * when one is missing. Filling the gaps from `_other` keeps the text in the user's
6
+ * language, even where `_other` is not the grammatically right form for that count.
7
+ */
8
+ export declare function withPluralFallbacks(lang: string, bundle: Bundle): Bundle;
9
+ export {};
10
+ //# sourceMappingURL=plurals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plurals.d.ts","sourceRoot":"","sources":["../src/plurals.ts"],"names":[],"mappings":"AAAA,KAAK,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtC;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAuBxE"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Crowdin exports only `_one` and `_other` for every language, but i18next looks
3
+ * up the language's own categories (`_few`, `_many`, ...) and falls back to English
4
+ * when one is missing. Filling the gaps from `_other` keeps the text in the user's
5
+ * language, even where `_other` is not the grammatically right form for that count.
6
+ */
7
+ export function withPluralFallbacks(lang, bundle) {
8
+ const categories = new Intl.PluralRules(lang).resolvedOptions().pluralCategories;
9
+ const fill = (node) => {
10
+ const out = {};
11
+ for (const [key, value] of Object.entries(node)) {
12
+ out[key] =
13
+ value !== null && typeof value === 'object' && !Array.isArray(value)
14
+ ? fill(value)
15
+ : value;
16
+ }
17
+ for (const [key, value] of Object.entries(node)) {
18
+ if (!key.endsWith('_other') || typeof value !== 'string' || value === '')
19
+ continue;
20
+ const base = key.slice(0, -'_other'.length);
21
+ for (const category of categories) {
22
+ const target = `${base}_${category}`;
23
+ if (out[target] === undefined || out[target] === '')
24
+ out[target] = value;
25
+ }
26
+ }
27
+ return out;
28
+ };
29
+ return fill(bundle);
30
+ }
31
+ //# sourceMappingURL=plurals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plurals.js","sourceRoot":"","sources":["../src/plurals.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,MAAc;IAC9D,MAAM,UAAU,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CAAC,gBAAgB,CAAC;IAEjF,MAAM,IAAI,GAAG,CAAC,IAAY,EAAU,EAAE;QACpC,MAAM,GAAG,GAAW,EAAE,CAAC;QACvB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,GAAG,CAAC,GAAG,CAAC;gBACN,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBAClE,CAAC,CAAC,IAAI,CAAC,KAAe,CAAC;oBACvB,CAAC,CAAC,KAAK,CAAC;QACd,CAAC;QACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,EAAE;gBAAE,SAAS;YACnF,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC5C,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;gBACrC,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE;oBAAE,GAAG,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC;YAC3E,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tracearr/translations",
3
- "version": "2.5.1",
3
+ "version": "2.6.0-beta.1",
4
4
  "description": "Shared i18n resources and helpers for Tracearr apps",
5
5
  "license": "AGPL-3.0-only",
6
6
  "author": "Connor Gallopo",
@@ -4,6 +4,7 @@
4
4
  import i18n from 'i18next';
5
5
  import { initReactI18next } from 'react-i18next';
6
6
  import { _registerLocaleLoader } from './language.js';
7
+ import { withPluralFallbacks } from './plurals.js';
7
8
 
8
9
  // ============================================================================
9
10
  // English (base language)
@@ -571,7 +572,7 @@ export async function loadLocale(lang: string): Promise<void> {
571
572
  if (!bundles) return;
572
573
 
573
574
  for (const [ns, data] of Object.entries(bundles)) {
574
- i18n.addResourceBundle(lang, ns, data, true, true);
575
+ i18n.addResourceBundle(lang, ns, withPluralFallbacks(lang, data), true, true);
575
576
  }
576
577
  loadedLocales.add(lang);
577
578
  }
package/src/config.ts CHANGED
@@ -2,6 +2,7 @@
2
2
  import i18n from 'i18next';
3
3
  import { initReactI18next } from 'react-i18next';
4
4
  import { _registerLocaleLoader } from './language.js';
5
+ import { withPluralFallbacks } from './plurals.js';
5
6
 
6
7
  // ============================================================================
7
8
  // English Translations (Base Language — always bundled)
@@ -125,7 +126,7 @@ export async function loadLocale(lang: string): Promise<void> {
125
126
  try {
126
127
  const bundles = await loader();
127
128
  for (const [ns, data] of Object.entries(bundles)) {
128
- i18n.addResourceBundle(lang, ns, data, true, true);
129
+ i18n.addResourceBundle(lang, ns, withPluralFallbacks(lang, data), true, true);
129
130
  }
130
131
  loadedLocales.add(lang);
131
132
  } catch (err) {