@tracearr/translations 2.5.0 → 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 +86 -112
  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 +274 -132
  20. package/dist/locales/ar-SA/settings.json +199 -98
  21. package/dist/locales/ca-ES/common.json +4 -91
  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 +15 -68
  25. package/dist/locales/ca-ES/pages.json +109 -135
  26. package/dist/locales/ca-ES/settings.json +87 -118
  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 +190 -132
  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 +106 -132
  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 +106 -132
  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 +111 -137
  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 +105 -131
  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 +106 -132
  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 +114 -140
  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 +128 -112
  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 +86 -112
  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 +106 -132
  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 +78 -146
  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 +82 -150
  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 +106 -132
  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 +106 -132
  116. package/dist/locales/no-NO/settings.json +67 -98
  117. package/dist/locales/pl-PL/common.json +99 -148
  118. package/dist/locales/pl-PL/mobile.json +193 -182
  119. package/dist/locales/pl-PL/nav.json +10 -12
  120. package/dist/locales/pl-PL/notifications.json +79 -120
  121. package/dist/locales/pl-PL/pages.json +1510 -1452
  122. package/dist/locales/pl-PL/settings.json +676 -641
  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 +111 -137
  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 +106 -132
  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 +147 -131
  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 +190 -132
  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 +128 -112
  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 +106 -132
  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 +88 -114
  164. package/dist/locales/tr-TR/settings.json +63 -94
  165. package/dist/locales/uk-UA/common.json +62 -111
  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 +26 -67
  169. package/dist/locales/uk-UA/pages.json +201 -143
  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 +58 -126
  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 +97 -165
  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 +62 -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 +86 -112
  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 +274 -132
  207. package/src/locales/ar-SA/settings.json +199 -98
  208. package/src/locales/ca-ES/common.json +4 -91
  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 +15 -68
  212. package/src/locales/ca-ES/pages.json +109 -135
  213. package/src/locales/ca-ES/settings.json +87 -118
  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 +190 -132
  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 +106 -132
  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 +106 -132
  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 +111 -137
  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 +105 -131
  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 +106 -132
  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 +114 -140
  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 +128 -112
  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 +86 -112
  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 +106 -132
  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 +78 -146
  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 +82 -150
  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 +106 -132
  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 +106 -132
  303. package/src/locales/no-NO/settings.json +67 -98
  304. package/src/locales/pl-PL/common.json +99 -148
  305. package/src/locales/pl-PL/mobile.json +193 -182
  306. package/src/locales/pl-PL/nav.json +10 -12
  307. package/src/locales/pl-PL/notifications.json +79 -120
  308. package/src/locales/pl-PL/pages.json +1510 -1452
  309. package/src/locales/pl-PL/settings.json +676 -641
  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 +111 -137
  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 +106 -132
  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 +147 -131
  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 +190 -132
  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 +128 -112
  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 +106 -132
  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 +88 -114
  351. package/src/locales/tr-TR/settings.json +63 -94
  352. package/src/locales/uk-UA/common.json +62 -111
  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 +26 -67
  356. package/src/locales/uk-UA/pages.json +201 -143
  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 +58 -126
  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 +97 -165
  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 +62 -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.0",
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) {