@tracearr/translations 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (572) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +116 -0
  3. package/dist/config.d.ts +4510 -0
  4. package/dist/config.d.ts.map +1 -0
  5. package/dist/config.js +164 -0
  6. package/dist/config.js.map +1 -0
  7. package/dist/config.mobile.d.ts +4511 -0
  8. package/dist/config.mobile.d.ts.map +1 -0
  9. package/dist/config.mobile.js +587 -0
  10. package/dist/config.mobile.js.map +1 -0
  11. package/dist/formatting.d.ts +120 -0
  12. package/dist/formatting.d.ts.map +1 -0
  13. package/dist/formatting.js +265 -0
  14. package/dist/formatting.js.map +1 -0
  15. package/dist/index.d.ts +46 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +49 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/language.d.ts +101 -0
  20. package/dist/language.d.ts.map +1 -0
  21. package/dist/language.js +241 -0
  22. package/dist/language.js.map +1 -0
  23. package/dist/locales/af/common.json +276 -0
  24. package/dist/locales/af/mobile.json +60 -0
  25. package/dist/locales/af/nav.json +22 -0
  26. package/dist/locales/af/notifications.json +262 -0
  27. package/dist/locales/af/pages.json +324 -0
  28. package/dist/locales/af/settings.json +243 -0
  29. package/dist/locales/af-ZA/common.json +308 -0
  30. package/dist/locales/af-ZA/mobile.json +178 -0
  31. package/dist/locales/af-ZA/nav.json +28 -0
  32. package/dist/locales/af-ZA/notifications.json +279 -0
  33. package/dist/locales/af-ZA/pages.json +953 -0
  34. package/dist/locales/af-ZA/settings.json +487 -0
  35. package/dist/locales/ar/common.json +276 -0
  36. package/dist/locales/ar/mobile.json +60 -0
  37. package/dist/locales/ar/nav.json +22 -0
  38. package/dist/locales/ar/notifications.json +262 -0
  39. package/dist/locales/ar/pages.json +324 -0
  40. package/dist/locales/ar/settings.json +243 -0
  41. package/dist/locales/ar-SA/common.json +308 -0
  42. package/dist/locales/ar-SA/mobile.json +178 -0
  43. package/dist/locales/ar-SA/nav.json +28 -0
  44. package/dist/locales/ar-SA/notifications.json +279 -0
  45. package/dist/locales/ar-SA/pages.json +953 -0
  46. package/dist/locales/ar-SA/settings.json +487 -0
  47. package/dist/locales/ca/common.json +276 -0
  48. package/dist/locales/ca/mobile.json +60 -0
  49. package/dist/locales/ca/nav.json +22 -0
  50. package/dist/locales/ca/notifications.json +262 -0
  51. package/dist/locales/ca/pages.json +324 -0
  52. package/dist/locales/ca/settings.json +243 -0
  53. package/dist/locales/ca-ES/common.json +308 -0
  54. package/dist/locales/ca-ES/mobile.json +178 -0
  55. package/dist/locales/ca-ES/nav.json +28 -0
  56. package/dist/locales/ca-ES/notifications.json +279 -0
  57. package/dist/locales/ca-ES/pages.json +953 -0
  58. package/dist/locales/ca-ES/settings.json +487 -0
  59. package/dist/locales/cs/common.json +276 -0
  60. package/dist/locales/cs/mobile.json +60 -0
  61. package/dist/locales/cs/nav.json +22 -0
  62. package/dist/locales/cs/notifications.json +262 -0
  63. package/dist/locales/cs/pages.json +324 -0
  64. package/dist/locales/cs/settings.json +243 -0
  65. package/dist/locales/cs-CZ/common.json +308 -0
  66. package/dist/locales/cs-CZ/mobile.json +178 -0
  67. package/dist/locales/cs-CZ/nav.json +28 -0
  68. package/dist/locales/cs-CZ/notifications.json +279 -0
  69. package/dist/locales/cs-CZ/pages.json +953 -0
  70. package/dist/locales/cs-CZ/settings.json +487 -0
  71. package/dist/locales/da/common.json +276 -0
  72. package/dist/locales/da/mobile.json +60 -0
  73. package/dist/locales/da/nav.json +22 -0
  74. package/dist/locales/da/notifications.json +262 -0
  75. package/dist/locales/da/pages.json +324 -0
  76. package/dist/locales/da/settings.json +243 -0
  77. package/dist/locales/da-DK/common.json +308 -0
  78. package/dist/locales/da-DK/mobile.json +178 -0
  79. package/dist/locales/da-DK/nav.json +28 -0
  80. package/dist/locales/da-DK/notifications.json +279 -0
  81. package/dist/locales/da-DK/pages.json +953 -0
  82. package/dist/locales/da-DK/settings.json +487 -0
  83. package/dist/locales/de/common.json +276 -0
  84. package/dist/locales/de/mobile.json +60 -0
  85. package/dist/locales/de/nav.json +22 -0
  86. package/dist/locales/de/notifications.json +262 -0
  87. package/dist/locales/de/pages.json +324 -0
  88. package/dist/locales/de/settings.json +243 -0
  89. package/dist/locales/de-DE/common.json +308 -0
  90. package/dist/locales/de-DE/mobile.json +178 -0
  91. package/dist/locales/de-DE/nav.json +28 -0
  92. package/dist/locales/de-DE/notifications.json +279 -0
  93. package/dist/locales/de-DE/pages.json +953 -0
  94. package/dist/locales/de-DE/settings.json +487 -0
  95. package/dist/locales/el/common.json +276 -0
  96. package/dist/locales/el/mobile.json +60 -0
  97. package/dist/locales/el/nav.json +22 -0
  98. package/dist/locales/el/notifications.json +262 -0
  99. package/dist/locales/el/pages.json +324 -0
  100. package/dist/locales/el/settings.json +243 -0
  101. package/dist/locales/el-GR/common.json +308 -0
  102. package/dist/locales/el-GR/mobile.json +178 -0
  103. package/dist/locales/el-GR/nav.json +28 -0
  104. package/dist/locales/el-GR/notifications.json +279 -0
  105. package/dist/locales/el-GR/pages.json +953 -0
  106. package/dist/locales/el-GR/settings.json +487 -0
  107. package/dist/locales/en/common.json +308 -0
  108. package/dist/locales/en/mobile.json +178 -0
  109. package/dist/locales/en/nav.json +28 -0
  110. package/dist/locales/en/notifications.json +279 -0
  111. package/dist/locales/en/pages.json +953 -0
  112. package/dist/locales/en/settings.json +487 -0
  113. package/dist/locales/en-US/common.json +308 -0
  114. package/dist/locales/en-US/mobile.json +178 -0
  115. package/dist/locales/en-US/nav.json +28 -0
  116. package/dist/locales/en-US/notifications.json +279 -0
  117. package/dist/locales/en-US/pages.json +953 -0
  118. package/dist/locales/en-US/settings.json +487 -0
  119. package/dist/locales/es/common.json +276 -0
  120. package/dist/locales/es/mobile.json +60 -0
  121. package/dist/locales/es/nav.json +22 -0
  122. package/dist/locales/es/notifications.json +262 -0
  123. package/dist/locales/es/pages.json +324 -0
  124. package/dist/locales/es/settings.json +243 -0
  125. package/dist/locales/es-ES/common.json +308 -0
  126. package/dist/locales/es-ES/mobile.json +178 -0
  127. package/dist/locales/es-ES/nav.json +28 -0
  128. package/dist/locales/es-ES/notifications.json +279 -0
  129. package/dist/locales/es-ES/pages.json +953 -0
  130. package/dist/locales/es-ES/settings.json +487 -0
  131. package/dist/locales/fi/common.json +276 -0
  132. package/dist/locales/fi/mobile.json +60 -0
  133. package/dist/locales/fi/nav.json +22 -0
  134. package/dist/locales/fi/notifications.json +262 -0
  135. package/dist/locales/fi/pages.json +324 -0
  136. package/dist/locales/fi/settings.json +243 -0
  137. package/dist/locales/fi-FI/common.json +308 -0
  138. package/dist/locales/fi-FI/mobile.json +178 -0
  139. package/dist/locales/fi-FI/nav.json +28 -0
  140. package/dist/locales/fi-FI/notifications.json +279 -0
  141. package/dist/locales/fi-FI/pages.json +953 -0
  142. package/dist/locales/fi-FI/settings.json +487 -0
  143. package/dist/locales/fr/common.json +276 -0
  144. package/dist/locales/fr/mobile.json +60 -0
  145. package/dist/locales/fr/nav.json +22 -0
  146. package/dist/locales/fr/notifications.json +262 -0
  147. package/dist/locales/fr/pages.json +324 -0
  148. package/dist/locales/fr/settings.json +243 -0
  149. package/dist/locales/fr-FR/common.json +308 -0
  150. package/dist/locales/fr-FR/mobile.json +178 -0
  151. package/dist/locales/fr-FR/nav.json +28 -0
  152. package/dist/locales/fr-FR/notifications.json +279 -0
  153. package/dist/locales/fr-FR/pages.json +953 -0
  154. package/dist/locales/fr-FR/settings.json +487 -0
  155. package/dist/locales/he/common.json +276 -0
  156. package/dist/locales/he/mobile.json +60 -0
  157. package/dist/locales/he/nav.json +22 -0
  158. package/dist/locales/he/notifications.json +262 -0
  159. package/dist/locales/he/pages.json +324 -0
  160. package/dist/locales/he/settings.json +243 -0
  161. package/dist/locales/he-IL/common.json +308 -0
  162. package/dist/locales/he-IL/mobile.json +178 -0
  163. package/dist/locales/he-IL/nav.json +28 -0
  164. package/dist/locales/he-IL/notifications.json +279 -0
  165. package/dist/locales/he-IL/pages.json +953 -0
  166. package/dist/locales/he-IL/settings.json +487 -0
  167. package/dist/locales/hu/common.json +276 -0
  168. package/dist/locales/hu/mobile.json +60 -0
  169. package/dist/locales/hu/nav.json +22 -0
  170. package/dist/locales/hu/notifications.json +262 -0
  171. package/dist/locales/hu/pages.json +324 -0
  172. package/dist/locales/hu/settings.json +243 -0
  173. package/dist/locales/hu-HU/common.json +308 -0
  174. package/dist/locales/hu-HU/mobile.json +178 -0
  175. package/dist/locales/hu-HU/nav.json +28 -0
  176. package/dist/locales/hu-HU/notifications.json +279 -0
  177. package/dist/locales/hu-HU/pages.json +953 -0
  178. package/dist/locales/hu-HU/settings.json +487 -0
  179. package/dist/locales/it/common.json +276 -0
  180. package/dist/locales/it/mobile.json +60 -0
  181. package/dist/locales/it/nav.json +22 -0
  182. package/dist/locales/it/notifications.json +262 -0
  183. package/dist/locales/it/pages.json +324 -0
  184. package/dist/locales/it/settings.json +243 -0
  185. package/dist/locales/it-IT/common.json +308 -0
  186. package/dist/locales/it-IT/mobile.json +178 -0
  187. package/dist/locales/it-IT/nav.json +28 -0
  188. package/dist/locales/it-IT/notifications.json +279 -0
  189. package/dist/locales/it-IT/pages.json +953 -0
  190. package/dist/locales/it-IT/settings.json +487 -0
  191. package/dist/locales/ja/common.json +276 -0
  192. package/dist/locales/ja/mobile.json +60 -0
  193. package/dist/locales/ja/nav.json +22 -0
  194. package/dist/locales/ja/notifications.json +262 -0
  195. package/dist/locales/ja/pages.json +324 -0
  196. package/dist/locales/ja/settings.json +243 -0
  197. package/dist/locales/ja-JP/common.json +308 -0
  198. package/dist/locales/ja-JP/mobile.json +178 -0
  199. package/dist/locales/ja-JP/nav.json +28 -0
  200. package/dist/locales/ja-JP/notifications.json +279 -0
  201. package/dist/locales/ja-JP/pages.json +953 -0
  202. package/dist/locales/ja-JP/settings.json +487 -0
  203. package/dist/locales/ko/common.json +276 -0
  204. package/dist/locales/ko/mobile.json +60 -0
  205. package/dist/locales/ko/nav.json +22 -0
  206. package/dist/locales/ko/notifications.json +262 -0
  207. package/dist/locales/ko/pages.json +324 -0
  208. package/dist/locales/ko/settings.json +243 -0
  209. package/dist/locales/ko-KR/common.json +308 -0
  210. package/dist/locales/ko-KR/mobile.json +178 -0
  211. package/dist/locales/ko-KR/nav.json +28 -0
  212. package/dist/locales/ko-KR/notifications.json +279 -0
  213. package/dist/locales/ko-KR/pages.json +953 -0
  214. package/dist/locales/ko-KR/settings.json +487 -0
  215. package/dist/locales/nl/common.json +276 -0
  216. package/dist/locales/nl/mobile.json +60 -0
  217. package/dist/locales/nl/nav.json +22 -0
  218. package/dist/locales/nl/notifications.json +262 -0
  219. package/dist/locales/nl/pages.json +324 -0
  220. package/dist/locales/nl/settings.json +243 -0
  221. package/dist/locales/nl-NL/common.json +308 -0
  222. package/dist/locales/nl-NL/mobile.json +178 -0
  223. package/dist/locales/nl-NL/nav.json +28 -0
  224. package/dist/locales/nl-NL/notifications.json +279 -0
  225. package/dist/locales/nl-NL/pages.json +953 -0
  226. package/dist/locales/nl-NL/settings.json +487 -0
  227. package/dist/locales/no/common.json +276 -0
  228. package/dist/locales/no/mobile.json +60 -0
  229. package/dist/locales/no/nav.json +22 -0
  230. package/dist/locales/no/notifications.json +262 -0
  231. package/dist/locales/no/pages.json +324 -0
  232. package/dist/locales/no/settings.json +243 -0
  233. package/dist/locales/no-NO/common.json +308 -0
  234. package/dist/locales/no-NO/mobile.json +178 -0
  235. package/dist/locales/no-NO/nav.json +28 -0
  236. package/dist/locales/no-NO/notifications.json +279 -0
  237. package/dist/locales/no-NO/pages.json +953 -0
  238. package/dist/locales/no-NO/settings.json +487 -0
  239. package/dist/locales/pl/common.json +276 -0
  240. package/dist/locales/pl/mobile.json +60 -0
  241. package/dist/locales/pl/nav.json +22 -0
  242. package/dist/locales/pl/notifications.json +262 -0
  243. package/dist/locales/pl/pages.json +324 -0
  244. package/dist/locales/pl/settings.json +243 -0
  245. package/dist/locales/pl-PL/common.json +308 -0
  246. package/dist/locales/pl-PL/mobile.json +178 -0
  247. package/dist/locales/pl-PL/nav.json +28 -0
  248. package/dist/locales/pl-PL/notifications.json +279 -0
  249. package/dist/locales/pl-PL/pages.json +953 -0
  250. package/dist/locales/pl-PL/settings.json +487 -0
  251. package/dist/locales/pt/common.json +276 -0
  252. package/dist/locales/pt/mobile.json +60 -0
  253. package/dist/locales/pt/nav.json +22 -0
  254. package/dist/locales/pt/notifications.json +262 -0
  255. package/dist/locales/pt/pages.json +324 -0
  256. package/dist/locales/pt/settings.json +243 -0
  257. package/dist/locales/pt-BR/common.json +308 -0
  258. package/dist/locales/pt-BR/mobile.json +178 -0
  259. package/dist/locales/pt-BR/nav.json +28 -0
  260. package/dist/locales/pt-BR/notifications.json +279 -0
  261. package/dist/locales/pt-BR/pages.json +953 -0
  262. package/dist/locales/pt-BR/settings.json +487 -0
  263. package/dist/locales/pt-PT/common.json +308 -0
  264. package/dist/locales/pt-PT/mobile.json +178 -0
  265. package/dist/locales/pt-PT/nav.json +28 -0
  266. package/dist/locales/pt-PT/notifications.json +279 -0
  267. package/dist/locales/pt-PT/pages.json +953 -0
  268. package/dist/locales/pt-PT/settings.json +487 -0
  269. package/dist/locales/ro/common.json +276 -0
  270. package/dist/locales/ro/mobile.json +60 -0
  271. package/dist/locales/ro/nav.json +22 -0
  272. package/dist/locales/ro/notifications.json +262 -0
  273. package/dist/locales/ro/pages.json +324 -0
  274. package/dist/locales/ro/settings.json +243 -0
  275. package/dist/locales/ro-RO/common.json +308 -0
  276. package/dist/locales/ro-RO/mobile.json +178 -0
  277. package/dist/locales/ro-RO/nav.json +28 -0
  278. package/dist/locales/ro-RO/notifications.json +279 -0
  279. package/dist/locales/ro-RO/pages.json +953 -0
  280. package/dist/locales/ro-RO/settings.json +487 -0
  281. package/dist/locales/ru/common.json +276 -0
  282. package/dist/locales/ru/mobile.json +60 -0
  283. package/dist/locales/ru/nav.json +22 -0
  284. package/dist/locales/ru/notifications.json +262 -0
  285. package/dist/locales/ru/pages.json +324 -0
  286. package/dist/locales/ru/settings.json +243 -0
  287. package/dist/locales/ru-RU/common.json +308 -0
  288. package/dist/locales/ru-RU/mobile.json +178 -0
  289. package/dist/locales/ru-RU/nav.json +28 -0
  290. package/dist/locales/ru-RU/notifications.json +279 -0
  291. package/dist/locales/ru-RU/pages.json +953 -0
  292. package/dist/locales/ru-RU/settings.json +487 -0
  293. package/dist/locales/sr/common.json +276 -0
  294. package/dist/locales/sr/mobile.json +60 -0
  295. package/dist/locales/sr/nav.json +22 -0
  296. package/dist/locales/sr/notifications.json +262 -0
  297. package/dist/locales/sr/pages.json +324 -0
  298. package/dist/locales/sr/settings.json +243 -0
  299. package/dist/locales/sr-SP/common.json +308 -0
  300. package/dist/locales/sr-SP/mobile.json +178 -0
  301. package/dist/locales/sr-SP/nav.json +28 -0
  302. package/dist/locales/sr-SP/notifications.json +279 -0
  303. package/dist/locales/sr-SP/pages.json +953 -0
  304. package/dist/locales/sr-SP/settings.json +487 -0
  305. package/dist/locales/sv/common.json +276 -0
  306. package/dist/locales/sv/mobile.json +60 -0
  307. package/dist/locales/sv/nav.json +22 -0
  308. package/dist/locales/sv/notifications.json +262 -0
  309. package/dist/locales/sv/pages.json +324 -0
  310. package/dist/locales/sv/settings.json +243 -0
  311. package/dist/locales/sv-SE/common.json +308 -0
  312. package/dist/locales/sv-SE/mobile.json +178 -0
  313. package/dist/locales/sv-SE/nav.json +28 -0
  314. package/dist/locales/sv-SE/notifications.json +279 -0
  315. package/dist/locales/sv-SE/pages.json +953 -0
  316. package/dist/locales/sv-SE/settings.json +487 -0
  317. package/dist/locales/tr/common.json +276 -0
  318. package/dist/locales/tr/mobile.json +60 -0
  319. package/dist/locales/tr/nav.json +22 -0
  320. package/dist/locales/tr/notifications.json +262 -0
  321. package/dist/locales/tr/pages.json +324 -0
  322. package/dist/locales/tr/settings.json +243 -0
  323. package/dist/locales/tr-TR/common.json +308 -0
  324. package/dist/locales/tr-TR/mobile.json +178 -0
  325. package/dist/locales/tr-TR/nav.json +28 -0
  326. package/dist/locales/tr-TR/notifications.json +279 -0
  327. package/dist/locales/tr-TR/pages.json +953 -0
  328. package/dist/locales/tr-TR/settings.json +487 -0
  329. package/dist/locales/uk/common.json +276 -0
  330. package/dist/locales/uk/mobile.json +60 -0
  331. package/dist/locales/uk/nav.json +22 -0
  332. package/dist/locales/uk/notifications.json +262 -0
  333. package/dist/locales/uk/pages.json +324 -0
  334. package/dist/locales/uk/settings.json +243 -0
  335. package/dist/locales/uk-UA/common.json +308 -0
  336. package/dist/locales/uk-UA/mobile.json +178 -0
  337. package/dist/locales/uk-UA/nav.json +28 -0
  338. package/dist/locales/uk-UA/notifications.json +279 -0
  339. package/dist/locales/uk-UA/pages.json +953 -0
  340. package/dist/locales/uk-UA/settings.json +487 -0
  341. package/dist/locales/vi/common.json +276 -0
  342. package/dist/locales/vi/mobile.json +60 -0
  343. package/dist/locales/vi/nav.json +22 -0
  344. package/dist/locales/vi/notifications.json +262 -0
  345. package/dist/locales/vi/pages.json +324 -0
  346. package/dist/locales/vi/settings.json +243 -0
  347. package/dist/locales/vi-VN/common.json +308 -0
  348. package/dist/locales/vi-VN/mobile.json +178 -0
  349. package/dist/locales/vi-VN/nav.json +28 -0
  350. package/dist/locales/vi-VN/notifications.json +279 -0
  351. package/dist/locales/vi-VN/pages.json +953 -0
  352. package/dist/locales/vi-VN/settings.json +487 -0
  353. package/dist/locales/zh/common.json +276 -0
  354. package/dist/locales/zh/mobile.json +60 -0
  355. package/dist/locales/zh/nav.json +22 -0
  356. package/dist/locales/zh/notifications.json +262 -0
  357. package/dist/locales/zh/pages.json +324 -0
  358. package/dist/locales/zh/settings.json +243 -0
  359. package/dist/locales/zh-CN/common.json +308 -0
  360. package/dist/locales/zh-CN/mobile.json +178 -0
  361. package/dist/locales/zh-CN/nav.json +28 -0
  362. package/dist/locales/zh-CN/notifications.json +279 -0
  363. package/dist/locales/zh-CN/pages.json +953 -0
  364. package/dist/locales/zh-CN/settings.json +487 -0
  365. package/dist/locales/zh-TW/common.json +308 -0
  366. package/dist/locales/zh-TW/mobile.json +178 -0
  367. package/dist/locales/zh-TW/nav.json +28 -0
  368. package/dist/locales/zh-TW/notifications.json +279 -0
  369. package/dist/locales/zh-TW/pages.json +953 -0
  370. package/dist/locales/zh-TW/settings.json +487 -0
  371. package/dist/mobile.d.ts +11 -0
  372. package/dist/mobile.d.ts.map +1 -0
  373. package/dist/mobile.js +14 -0
  374. package/dist/mobile.js.map +1 -0
  375. package/dist/types.d.ts +54 -0
  376. package/dist/types.d.ts.map +1 -0
  377. package/dist/types.js +5 -0
  378. package/dist/types.js.map +1 -0
  379. package/package.json +57 -0
  380. package/src/config.mobile.ts +647 -0
  381. package/src/config.ts +209 -0
  382. package/src/formatting.ts +297 -0
  383. package/src/index.ts +105 -0
  384. package/src/language.ts +270 -0
  385. package/src/locales/af-ZA/common.json +308 -0
  386. package/src/locales/af-ZA/mobile.json +178 -0
  387. package/src/locales/af-ZA/nav.json +28 -0
  388. package/src/locales/af-ZA/notifications.json +279 -0
  389. package/src/locales/af-ZA/pages.json +953 -0
  390. package/src/locales/af-ZA/settings.json +487 -0
  391. package/src/locales/ar-SA/common.json +308 -0
  392. package/src/locales/ar-SA/mobile.json +178 -0
  393. package/src/locales/ar-SA/nav.json +28 -0
  394. package/src/locales/ar-SA/notifications.json +279 -0
  395. package/src/locales/ar-SA/pages.json +953 -0
  396. package/src/locales/ar-SA/settings.json +487 -0
  397. package/src/locales/ca-ES/common.json +308 -0
  398. package/src/locales/ca-ES/mobile.json +178 -0
  399. package/src/locales/ca-ES/nav.json +28 -0
  400. package/src/locales/ca-ES/notifications.json +279 -0
  401. package/src/locales/ca-ES/pages.json +953 -0
  402. package/src/locales/ca-ES/settings.json +487 -0
  403. package/src/locales/cs-CZ/common.json +308 -0
  404. package/src/locales/cs-CZ/mobile.json +178 -0
  405. package/src/locales/cs-CZ/nav.json +28 -0
  406. package/src/locales/cs-CZ/notifications.json +279 -0
  407. package/src/locales/cs-CZ/pages.json +953 -0
  408. package/src/locales/cs-CZ/settings.json +487 -0
  409. package/src/locales/da-DK/common.json +308 -0
  410. package/src/locales/da-DK/mobile.json +178 -0
  411. package/src/locales/da-DK/nav.json +28 -0
  412. package/src/locales/da-DK/notifications.json +279 -0
  413. package/src/locales/da-DK/pages.json +953 -0
  414. package/src/locales/da-DK/settings.json +487 -0
  415. package/src/locales/de-DE/common.json +308 -0
  416. package/src/locales/de-DE/mobile.json +178 -0
  417. package/src/locales/de-DE/nav.json +28 -0
  418. package/src/locales/de-DE/notifications.json +279 -0
  419. package/src/locales/de-DE/pages.json +953 -0
  420. package/src/locales/de-DE/settings.json +487 -0
  421. package/src/locales/el-GR/common.json +308 -0
  422. package/src/locales/el-GR/mobile.json +178 -0
  423. package/src/locales/el-GR/nav.json +28 -0
  424. package/src/locales/el-GR/notifications.json +279 -0
  425. package/src/locales/el-GR/pages.json +953 -0
  426. package/src/locales/el-GR/settings.json +487 -0
  427. package/src/locales/en/common.json +308 -0
  428. package/src/locales/en/mobile.json +178 -0
  429. package/src/locales/en/nav.json +28 -0
  430. package/src/locales/en/notifications.json +279 -0
  431. package/src/locales/en/pages.json +953 -0
  432. package/src/locales/en/settings.json +487 -0
  433. package/src/locales/en-US/common.json +308 -0
  434. package/src/locales/en-US/mobile.json +178 -0
  435. package/src/locales/en-US/nav.json +28 -0
  436. package/src/locales/en-US/notifications.json +279 -0
  437. package/src/locales/en-US/pages.json +953 -0
  438. package/src/locales/en-US/settings.json +487 -0
  439. package/src/locales/es-ES/common.json +308 -0
  440. package/src/locales/es-ES/mobile.json +178 -0
  441. package/src/locales/es-ES/nav.json +28 -0
  442. package/src/locales/es-ES/notifications.json +279 -0
  443. package/src/locales/es-ES/pages.json +953 -0
  444. package/src/locales/es-ES/settings.json +487 -0
  445. package/src/locales/fi-FI/common.json +308 -0
  446. package/src/locales/fi-FI/mobile.json +178 -0
  447. package/src/locales/fi-FI/nav.json +28 -0
  448. package/src/locales/fi-FI/notifications.json +279 -0
  449. package/src/locales/fi-FI/pages.json +953 -0
  450. package/src/locales/fi-FI/settings.json +487 -0
  451. package/src/locales/fr-FR/common.json +308 -0
  452. package/src/locales/fr-FR/mobile.json +178 -0
  453. package/src/locales/fr-FR/nav.json +28 -0
  454. package/src/locales/fr-FR/notifications.json +279 -0
  455. package/src/locales/fr-FR/pages.json +953 -0
  456. package/src/locales/fr-FR/settings.json +487 -0
  457. package/src/locales/he-IL/common.json +308 -0
  458. package/src/locales/he-IL/mobile.json +178 -0
  459. package/src/locales/he-IL/nav.json +28 -0
  460. package/src/locales/he-IL/notifications.json +279 -0
  461. package/src/locales/he-IL/pages.json +953 -0
  462. package/src/locales/he-IL/settings.json +487 -0
  463. package/src/locales/hu-HU/common.json +308 -0
  464. package/src/locales/hu-HU/mobile.json +178 -0
  465. package/src/locales/hu-HU/nav.json +28 -0
  466. package/src/locales/hu-HU/notifications.json +279 -0
  467. package/src/locales/hu-HU/pages.json +953 -0
  468. package/src/locales/hu-HU/settings.json +487 -0
  469. package/src/locales/it-IT/common.json +308 -0
  470. package/src/locales/it-IT/mobile.json +178 -0
  471. package/src/locales/it-IT/nav.json +28 -0
  472. package/src/locales/it-IT/notifications.json +279 -0
  473. package/src/locales/it-IT/pages.json +953 -0
  474. package/src/locales/it-IT/settings.json +487 -0
  475. package/src/locales/ja-JP/common.json +308 -0
  476. package/src/locales/ja-JP/mobile.json +178 -0
  477. package/src/locales/ja-JP/nav.json +28 -0
  478. package/src/locales/ja-JP/notifications.json +279 -0
  479. package/src/locales/ja-JP/pages.json +953 -0
  480. package/src/locales/ja-JP/settings.json +487 -0
  481. package/src/locales/ko-KR/common.json +308 -0
  482. package/src/locales/ko-KR/mobile.json +178 -0
  483. package/src/locales/ko-KR/nav.json +28 -0
  484. package/src/locales/ko-KR/notifications.json +279 -0
  485. package/src/locales/ko-KR/pages.json +953 -0
  486. package/src/locales/ko-KR/settings.json +487 -0
  487. package/src/locales/nl-NL/common.json +308 -0
  488. package/src/locales/nl-NL/mobile.json +178 -0
  489. package/src/locales/nl-NL/nav.json +28 -0
  490. package/src/locales/nl-NL/notifications.json +279 -0
  491. package/src/locales/nl-NL/pages.json +953 -0
  492. package/src/locales/nl-NL/settings.json +487 -0
  493. package/src/locales/no-NO/common.json +308 -0
  494. package/src/locales/no-NO/mobile.json +178 -0
  495. package/src/locales/no-NO/nav.json +28 -0
  496. package/src/locales/no-NO/notifications.json +279 -0
  497. package/src/locales/no-NO/pages.json +953 -0
  498. package/src/locales/no-NO/settings.json +487 -0
  499. package/src/locales/pl-PL/common.json +308 -0
  500. package/src/locales/pl-PL/mobile.json +178 -0
  501. package/src/locales/pl-PL/nav.json +28 -0
  502. package/src/locales/pl-PL/notifications.json +279 -0
  503. package/src/locales/pl-PL/pages.json +953 -0
  504. package/src/locales/pl-PL/settings.json +487 -0
  505. package/src/locales/pt-BR/common.json +308 -0
  506. package/src/locales/pt-BR/mobile.json +178 -0
  507. package/src/locales/pt-BR/nav.json +28 -0
  508. package/src/locales/pt-BR/notifications.json +279 -0
  509. package/src/locales/pt-BR/pages.json +953 -0
  510. package/src/locales/pt-BR/settings.json +487 -0
  511. package/src/locales/pt-PT/common.json +308 -0
  512. package/src/locales/pt-PT/mobile.json +178 -0
  513. package/src/locales/pt-PT/nav.json +28 -0
  514. package/src/locales/pt-PT/notifications.json +279 -0
  515. package/src/locales/pt-PT/pages.json +953 -0
  516. package/src/locales/pt-PT/settings.json +487 -0
  517. package/src/locales/ro-RO/common.json +308 -0
  518. package/src/locales/ro-RO/mobile.json +178 -0
  519. package/src/locales/ro-RO/nav.json +28 -0
  520. package/src/locales/ro-RO/notifications.json +279 -0
  521. package/src/locales/ro-RO/pages.json +953 -0
  522. package/src/locales/ro-RO/settings.json +487 -0
  523. package/src/locales/ru-RU/common.json +308 -0
  524. package/src/locales/ru-RU/mobile.json +178 -0
  525. package/src/locales/ru-RU/nav.json +28 -0
  526. package/src/locales/ru-RU/notifications.json +279 -0
  527. package/src/locales/ru-RU/pages.json +953 -0
  528. package/src/locales/ru-RU/settings.json +487 -0
  529. package/src/locales/sr-SP/common.json +308 -0
  530. package/src/locales/sr-SP/mobile.json +178 -0
  531. package/src/locales/sr-SP/nav.json +28 -0
  532. package/src/locales/sr-SP/notifications.json +279 -0
  533. package/src/locales/sr-SP/pages.json +953 -0
  534. package/src/locales/sr-SP/settings.json +487 -0
  535. package/src/locales/sv-SE/common.json +308 -0
  536. package/src/locales/sv-SE/mobile.json +178 -0
  537. package/src/locales/sv-SE/nav.json +28 -0
  538. package/src/locales/sv-SE/notifications.json +279 -0
  539. package/src/locales/sv-SE/pages.json +953 -0
  540. package/src/locales/sv-SE/settings.json +487 -0
  541. package/src/locales/tr-TR/common.json +308 -0
  542. package/src/locales/tr-TR/mobile.json +178 -0
  543. package/src/locales/tr-TR/nav.json +28 -0
  544. package/src/locales/tr-TR/notifications.json +279 -0
  545. package/src/locales/tr-TR/pages.json +953 -0
  546. package/src/locales/tr-TR/settings.json +487 -0
  547. package/src/locales/uk-UA/common.json +308 -0
  548. package/src/locales/uk-UA/mobile.json +178 -0
  549. package/src/locales/uk-UA/nav.json +28 -0
  550. package/src/locales/uk-UA/notifications.json +279 -0
  551. package/src/locales/uk-UA/pages.json +953 -0
  552. package/src/locales/uk-UA/settings.json +487 -0
  553. package/src/locales/vi-VN/common.json +308 -0
  554. package/src/locales/vi-VN/mobile.json +178 -0
  555. package/src/locales/vi-VN/nav.json +28 -0
  556. package/src/locales/vi-VN/notifications.json +279 -0
  557. package/src/locales/vi-VN/pages.json +953 -0
  558. package/src/locales/vi-VN/settings.json +487 -0
  559. package/src/locales/zh-CN/common.json +308 -0
  560. package/src/locales/zh-CN/mobile.json +178 -0
  561. package/src/locales/zh-CN/nav.json +28 -0
  562. package/src/locales/zh-CN/notifications.json +279 -0
  563. package/src/locales/zh-CN/pages.json +953 -0
  564. package/src/locales/zh-CN/settings.json +487 -0
  565. package/src/locales/zh-TW/common.json +308 -0
  566. package/src/locales/zh-TW/mobile.json +178 -0
  567. package/src/locales/zh-TW/nav.json +28 -0
  568. package/src/locales/zh-TW/notifications.json +279 -0
  569. package/src/locales/zh-TW/pages.json +953 -0
  570. package/src/locales/zh-TW/settings.json +487 -0
  571. package/src/mobile.ts +69 -0
  572. package/src/types.ts +86 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Language detection and management utilities.
3
+ *
4
+ * Works in both web (browser) and mobile (React Native/Expo) environments.
5
+ * Language codes use full locale format (e.g., 'fr-FR', 'zh-CN') except for
6
+ * English which uses 'en' as the base/fallback language.
7
+ */
8
+ import i18n from 'i18next';
9
+ // Locale loader — set by config.ts (web) or config.mobile.ts (mobile) at import time
10
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
11
+ let _loadLocaleFn = async () => { };
12
+ /** @internal */
13
+ export function _registerLocaleLoader(fn) {
14
+ _loadLocaleFn = fn;
15
+ }
16
+ // Storage key for persisted language preference
17
+ const LANGUAGE_STORAGE_KEY = 'tracearr_language';
18
+ /**
19
+ * Supported languages with display names.
20
+ * Add new languages here when adding translations.
21
+ */
22
+ export const languageNames = {
23
+ en: 'English',
24
+ 'af-ZA': 'Afrikaans',
25
+ 'ar-SA': 'العربية',
26
+ 'ca-ES': 'Català',
27
+ 'cs-CZ': 'Čeština',
28
+ 'da-DK': 'Dansk',
29
+ 'de-DE': 'Deutsch',
30
+ 'el-GR': 'Ελληνικά',
31
+ 'es-ES': 'Español',
32
+ 'fi-FI': 'Suomi',
33
+ 'fr-FR': 'Français',
34
+ 'he-IL': 'עברית',
35
+ 'hu-HU': 'Magyar',
36
+ 'it-IT': 'Italiano',
37
+ 'ja-JP': '日本語',
38
+ 'ko-KR': '한국어',
39
+ 'nl-NL': 'Nederlands',
40
+ 'no-NO': 'Norsk',
41
+ 'pl-PL': 'Polski',
42
+ 'pt-BR': 'Português (Brasil)',
43
+ 'pt-PT': 'Português (Portugal)',
44
+ 'ro-RO': 'Română',
45
+ 'ru-RU': 'Русский',
46
+ 'sr-SP': 'Српски',
47
+ 'sv-SE': 'Svenska',
48
+ 'tr-TR': 'Türkçe',
49
+ 'uk-UA': 'Українська',
50
+ 'vi-VN': 'Tiếng Việt',
51
+ 'zh-CN': '中文 (简体)',
52
+ 'zh-TW': '中文 (繁體)',
53
+ };
54
+ /**
55
+ * Get the list of supported language codes.
56
+ */
57
+ export function getSupportedLanguages() {
58
+ return Object.keys(languageNames);
59
+ }
60
+ /**
61
+ * Check if a language code is supported (exact match).
62
+ */
63
+ export function isLanguageSupported(lang) {
64
+ if (!lang || typeof lang !== 'string')
65
+ return false;
66
+ return lang in languageNames;
67
+ }
68
+ /**
69
+ * Resolve a language code to the best matching supported locale.
70
+ *
71
+ * Handles exact matches, legacy two-letter codes (e.g., 'fr' → 'fr-FR'),
72
+ * and browser locale strings (e.g., 'zh-Hant-TW' → 'zh-TW').
73
+ *
74
+ * Returns null if no match is found.
75
+ */
76
+ export function resolveLocale(lang) {
77
+ if (!lang || typeof lang !== 'string')
78
+ return null;
79
+ // Normalize: lowercase language, uppercase region
80
+ const normalized = normalizeLocaleCode(lang);
81
+ // Exact match (e.g., 'zh-CN', 'en')
82
+ if (normalized in languageNames)
83
+ return normalized;
84
+ // Try base language match (e.g., 'fr' → 'fr-FR', 'zh' → 'zh-CN')
85
+ const baseLang = normalized.split('-')[0];
86
+ if (!baseLang)
87
+ return null;
88
+ // 'en' is a direct match
89
+ if (baseLang === 'en')
90
+ return 'en';
91
+ // Find first supported locale starting with the base language
92
+ const match = Object.keys(languageNames).find((code) => code.startsWith(baseLang + '-'));
93
+ return match ?? null;
94
+ }
95
+ /**
96
+ * Normalize a locale code: lowercase language, uppercase region.
97
+ * e.g., 'ZH-cn' → 'zh-CN', 'FR' → 'fr', 'pt-br' → 'pt-BR'
98
+ */
99
+ function normalizeLocaleCode(code) {
100
+ const trimmed = code.trim();
101
+ const [lang, region] = trimmed.split('-');
102
+ if (!region)
103
+ return trimmed.toLowerCase();
104
+ return `${lang?.toLowerCase()}-${region.toUpperCase()}`;
105
+ }
106
+ /**
107
+ * Detect the user's preferred language.
108
+ *
109
+ * Priority order:
110
+ * 1. Stored preference (localStorage/AsyncStorage)
111
+ * 2. Browser/device language (checks all preferred languages)
112
+ * 3. Fallback to 'en'
113
+ *
114
+ * @param storage - Optional storage adapter for React Native (AsyncStorage)
115
+ */
116
+ export async function detectLanguage(storage) {
117
+ // 1. Check stored preference
118
+ try {
119
+ const stored = await getStoredLanguage(storage);
120
+ if (stored) {
121
+ const resolved = resolveLocale(stored);
122
+ if (resolved)
123
+ return resolved;
124
+ }
125
+ }
126
+ catch (error) {
127
+ console.warn('[i18n] Failed to get stored language:', error);
128
+ }
129
+ // 2. Check browser/device language
130
+ const detected = detectSystemLanguage();
131
+ if (detected)
132
+ return detected;
133
+ // 3. Fallback
134
+ return 'en';
135
+ }
136
+ /**
137
+ * Detect the system/browser language.
138
+ * Checks all preferred languages in order (navigator.languages).
139
+ * Works in both web and React Native environments.
140
+ */
141
+ export function detectSystemLanguage() {
142
+ if (typeof navigator === 'undefined')
143
+ return null;
144
+ // Check all preferred languages in order
145
+ const languages = navigator.languages || (navigator.language ? [navigator.language] : []);
146
+ for (const lang of languages) {
147
+ if (!lang)
148
+ continue;
149
+ const resolved = resolveLocale(lang);
150
+ if (resolved)
151
+ return resolved;
152
+ }
153
+ return null;
154
+ }
155
+ /**
156
+ * Get the stored language preference.
157
+ * Safely handles localStorage exceptions (private browsing, SSR, etc.).
158
+ */
159
+ async function getStoredLanguage(storage) {
160
+ // React Native with AsyncStorage
161
+ if (storage) {
162
+ try {
163
+ return await storage.getItem(LANGUAGE_STORAGE_KEY);
164
+ }
165
+ catch (error) {
166
+ console.warn('[i18n] AsyncStorage read failed:', error);
167
+ return null;
168
+ }
169
+ }
170
+ // Browser with localStorage
171
+ if (typeof localStorage !== 'undefined') {
172
+ try {
173
+ return localStorage.getItem(LANGUAGE_STORAGE_KEY);
174
+ }
175
+ catch (error) {
176
+ // Fails in private browsing, SSR, or when storage is disabled
177
+ console.warn('[i18n] localStorage read failed:', error);
178
+ return null;
179
+ }
180
+ }
181
+ return null;
182
+ }
183
+ /**
184
+ * Store the language preference.
185
+ * Safely handles localStorage exceptions.
186
+ */
187
+ async function setStoredLanguage(lang, storage) {
188
+ // React Native with AsyncStorage
189
+ if (storage) {
190
+ try {
191
+ await storage.setItem(LANGUAGE_STORAGE_KEY, lang);
192
+ }
193
+ catch (error) {
194
+ console.warn('[i18n] AsyncStorage write failed:', error);
195
+ }
196
+ return;
197
+ }
198
+ // Browser with localStorage
199
+ if (typeof localStorage !== 'undefined') {
200
+ try {
201
+ localStorage.setItem(LANGUAGE_STORAGE_KEY, lang);
202
+ }
203
+ catch (error) {
204
+ // Fails in private browsing, SSR, or when quota exceeded
205
+ console.warn('[i18n] localStorage write failed:', error);
206
+ }
207
+ }
208
+ }
209
+ /**
210
+ * Change the current language and persist the preference.
211
+ *
212
+ * @param lang - Locale code (e.g., 'en', 'fr-FR', 'zh-CN')
213
+ * @param storage - Optional storage adapter for React Native
214
+ * @throws Error if language code is invalid or unsupported
215
+ */
216
+ export async function changeLanguage(lang, storage) {
217
+ // Validate input
218
+ if (!lang || typeof lang !== 'string') {
219
+ throw new Error(`Invalid language code: ${String(lang)}`);
220
+ }
221
+ const resolved = resolveLocale(lang);
222
+ if (!resolved) {
223
+ throw new Error(`Language '${lang}' is not supported. Available: ${getSupportedLanguages().join(', ')}`);
224
+ }
225
+ await _loadLocaleFn(resolved);
226
+ await i18n.changeLanguage(resolved);
227
+ await setStoredLanguage(resolved, storage);
228
+ }
229
+ /**
230
+ * Get the current language.
231
+ */
232
+ export function getCurrentLanguage() {
233
+ return i18n.language || 'en';
234
+ }
235
+ /**
236
+ * Get the display name for a language code.
237
+ */
238
+ export function getLanguageDisplayName(lang) {
239
+ return languageNames[lang] || lang;
240
+ }
241
+ //# sourceMappingURL=language.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language.js","sourceRoot":"","sources":["../src/language.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,276 @@
1
+ {
2
+ "actions": {
3
+ "save": "Save",
4
+ "cancel": "Cancel",
5
+ "delete": "Delete",
6
+ "edit": "Edit",
7
+ "add": "Add",
8
+ "create": "Create",
9
+ "update": "Update",
10
+ "remove": "Remove",
11
+ "connect": "Connect",
12
+ "disconnect": "Disconnect",
13
+ "submit": "Submit",
14
+ "confirm": "Confirm",
15
+ "close": "Close",
16
+ "retry": "Retry",
17
+ "refresh": "Refresh",
18
+ "sync": "Sync",
19
+ "test": "Test",
20
+ "copy": "Copy",
21
+ "signIn": "Sign In",
22
+ "signOut": "Sign Out",
23
+ "signUp": "Sign Up",
24
+ "continue": "Continue",
25
+ "back": "Back",
26
+ "next": "Next",
27
+ "acknowledge": "Acknowledge",
28
+ "dismiss": "Dismiss",
29
+ "terminate": "Terminate",
30
+ "search": "Search",
31
+ "filter": "Filter",
32
+ "sort": "Sort",
33
+ "clear": "Clear",
34
+ "apply": "Apply",
35
+ "reset": "Reset",
36
+ "select": "Select",
37
+ "selectAll": "Select All",
38
+ "deselectAll": "Deselect All",
39
+ "export": "Export",
40
+ "import": "Import",
41
+ "download": "Download",
42
+ "upload": "Upload",
43
+ "view": "View",
44
+ "viewAll": "View All",
45
+ "showMore": "Show More",
46
+ "showLess": "Show Less",
47
+ "expand": "Expand",
48
+ "collapse": "Collapse",
49
+ "goHome": "Go Home",
50
+ "tryAgain": "Try Again",
51
+ "grantPermission": "Grant Permission",
52
+ "openSettings": "Open Settings",
53
+ "viewProfile": "View Profile",
54
+ "viewOnGithub": "View on GitHub",
55
+ "later": "Later"
56
+ },
57
+ "states": {
58
+ "loading": "Loading...",
59
+ "error": "Error",
60
+ "success": "Success",
61
+ "failed": "Failed",
62
+ "pending": "Pending",
63
+ "acknowledged": "Acknowledged",
64
+ "active": "Active",
65
+ "inactive": "Inactive",
66
+ "enabled": "Enabled",
67
+ "disabled": "Disabled",
68
+ "online": "Online",
69
+ "offline": "Offline",
70
+ "connecting": "Connecting...",
71
+ "connected": "Connected",
72
+ "disconnected": "Disconnected",
73
+ "saving": "Saving...",
74
+ "deleting": "Deleting...",
75
+ "dismissing": "Dismissing...",
76
+ "acknowledging": "Acknowledging..."
77
+ },
78
+ "playback": {
79
+ "playing": "Playing",
80
+ "paused": "Paused",
81
+ "stopped": "Stopped",
82
+ "directPlay": "Direct Play",
83
+ "directStream": "Direct Stream",
84
+ "transcode": "Transcode"
85
+ },
86
+ "severity": {
87
+ "low": "Low",
88
+ "warning": "Warning",
89
+ "high": "High"
90
+ },
91
+ "time": {
92
+ "now": "Now",
93
+ "today": "Today",
94
+ "yesterday": "Yesterday",
95
+ "thisWeek": "This Week",
96
+ "thisMonth": "This Month",
97
+ "allTime": "All Time"
98
+ },
99
+ "periods": {
100
+ "last7Days": "Last 7 Days",
101
+ "last30Days": "Last 30 Days",
102
+ "lastYear": "Last Year",
103
+ "byDay": "By Day",
104
+ "byHour": "By Hour"
105
+ },
106
+ "units": {
107
+ "km": "km",
108
+ "mi": "mi",
109
+ "kmh": "km/h",
110
+ "mph": "mph"
111
+ },
112
+ "labels": {
113
+ "date": "Date",
114
+ "user": "User",
115
+ "content": "Content",
116
+ "platform": "Platform",
117
+ "location": "Location",
118
+ "ipAddress": "IP Address",
119
+ "quality": "Quality",
120
+ "duration": "Duration",
121
+ "progress": "Progress",
122
+ "status": "Status",
123
+ "rule": "Rule",
124
+ "media": "Media",
125
+ "started": "Started",
126
+ "stopped": "Stopped",
127
+ "joined": "Joined",
128
+ "server": "Server",
129
+ "device": "Device",
130
+ "player": "Player",
131
+ "unknown": "Unknown",
132
+ "never": "Never",
133
+ "when": "When",
134
+ "severity": "Severity",
135
+ "type": "Type",
136
+ "reason": "Reason",
137
+ "actions": "Actions",
138
+ "filters": "Filters",
139
+ "trustScore": "Trust Score",
140
+ "lastActivity": "Last Activity",
141
+ "serverOwner": "Server Owner",
142
+ "active": "Active",
143
+ "disabled": "Disabled",
144
+ "bandwidth": "Bandwidth",
145
+ "resolution": "Resolution",
146
+ "watchTime": "Watch Time",
147
+ "pausedTime": "Paused Time",
148
+ "sessionDetails": "Session Details",
149
+ "recentSessions": "Recent Sessions",
150
+ "activeStreams": "Active Streams",
151
+ "days": "days"
152
+ },
153
+ "search": {
154
+ "placeholder": "Search...",
155
+ "searchUsers": "Search users...",
156
+ "searchTitles": "Search titles, users..."
157
+ },
158
+ "table": {
159
+ "selectAllOnPage": "Select all on page",
160
+ "selectRow": "Select row",
161
+ "selectAllTotal": "Select all {{total}} items"
162
+ },
163
+ "media": {
164
+ "movie": "Movie",
165
+ "episode": "Episode",
166
+ "track": "Track",
167
+ "liveTV": "Live TV",
168
+ "photo": "Photo"
169
+ },
170
+ "servers": {
171
+ "plex": "Plex",
172
+ "jellyfin": "Jellyfin",
173
+ "emby": "Emby"
174
+ },
175
+ "validation": {
176
+ "required": "This field is required",
177
+ "invalidEmail": "Please enter a valid email address",
178
+ "invalidUrl": "Please enter a valid URL",
179
+ "minLength": "Must be at least {{min}} characters",
180
+ "maxLength": "Must be at most {{max}} characters"
181
+ },
182
+ "errors": {
183
+ "generic": "An error occurred",
184
+ "networkError": "Network connection failed",
185
+ "unauthorized": "You are not authorized to perform this action",
186
+ "notFound": "Not found",
187
+ "serverError": "Server error",
188
+ "timeout": "Request timed out",
189
+ "forbidden": "Access denied",
190
+ "badRequest": "Invalid request",
191
+ "conflict": "A conflict occurred",
192
+ "rateLimited": "Too many requests. Please try again later",
193
+ "pageNotFound": "Page Not Found",
194
+ "pageNotFoundDesc": "The page you're looking for doesn't exist or has been moved.",
195
+ "somethingWentWrong": "Something went wrong",
196
+ "unexpectedError": "An unexpected error occurred. Please try again.",
197
+ "failedToLoad": "Failed to load {{item}}",
198
+ "connectionFailed": "Connection failed",
199
+ "connectionTimedOut": "Connection timed out. Check your server URL.",
200
+ "cannotReachServer": "Cannot reach server. Check URL and network connection."
201
+ },
202
+ "count": {
203
+ "user_one": "{{count}} user",
204
+ "user_other": "{{count}} users",
205
+ "session_one": "{{count}} session",
206
+ "session_other": "{{count}} sessions",
207
+ "stream_one": "{{count}} stream",
208
+ "stream_other": "{{count}} streams",
209
+ "server_one": "{{count}} server",
210
+ "server_other": "{{count}} servers",
211
+ "rule_one": "{{count}} rule",
212
+ "rule_other": "{{count}} rules",
213
+ "violation_one": "{{count}} violation",
214
+ "violation_other": "{{count}} violations",
215
+ "item_one": "{{count}} item",
216
+ "item_other": "{{count}} items",
217
+ "result_one": "{{count}} result",
218
+ "result_other": "{{count}} results",
219
+ "selected_one": "{{count}} selected",
220
+ "selected_other": "{{count}} selected",
221
+ "usersAdded_one": "{{count}} user added",
222
+ "usersAdded_other": "{{count}} users added",
223
+ "usersUpdated_one": "{{count}} user updated",
224
+ "usersUpdated_other": "{{count}} users updated",
225
+ "library_one": "{{count}} library",
226
+ "library_other": "{{count}} libraries",
227
+ "error_one": "{{count}} error",
228
+ "error_other": "{{count}} errors"
229
+ },
230
+ "messages": {
231
+ "noChangesDetected": "No changes detected"
232
+ },
233
+ "relativeTime": {
234
+ "justNow": "Just now",
235
+ "second_one": "{{count}} second ago",
236
+ "second_other": "{{count}} seconds ago",
237
+ "minute_one": "{{count}} minute ago",
238
+ "minute_other": "{{count}} minutes ago",
239
+ "hour_one": "{{count}} hour ago",
240
+ "hour_other": "{{count}} hours ago",
241
+ "day_one": "{{count}} day ago",
242
+ "day_other": "{{count}} days ago",
243
+ "week_one": "{{count}} week ago",
244
+ "week_other": "{{count}} weeks ago",
245
+ "month_one": "{{count}} month ago",
246
+ "month_other": "{{count}} months ago",
247
+ "year_one": "{{count}} year ago",
248
+ "year_other": "{{count}} years ago"
249
+ },
250
+ "duration": {
251
+ "second_one": "{{count}} second",
252
+ "second_other": "{{count}} seconds",
253
+ "minute_one": "{{count}} minute",
254
+ "minute_other": "{{count}} minutes",
255
+ "hour_one": "{{count}} hour",
256
+ "hour_other": "{{count}} hours",
257
+ "day_one": "{{count}} day",
258
+ "day_other": "{{count}} days"
259
+ },
260
+ "empty": {
261
+ "noResults": "No results found",
262
+ "noData": "No data available",
263
+ "noItems": "No items",
264
+ "noDeviceData": "No device data available",
265
+ "noLocationData": "No location data available",
266
+ "noJobHistory": "No job history yet",
267
+ "noSessionsFound": "No sessions found"
268
+ },
269
+ "confirmations": {
270
+ "deleteTitle": "Confirm Delete",
271
+ "deleteMessage": "Are you sure you want to delete this? This action cannot be undone.",
272
+ "unsavedChanges": "You have unsaved changes. Are you sure you want to leave?"
273
+ },
274
+ "beta": "beta",
275
+ "or": "or"
276
+ }
@@ -0,0 +1,60 @@
1
+ {
2
+ "pair": {
3
+ "welcome": "Welcome to Tracearr",
4
+ "addServer": "Add Server",
5
+ "connectToServer": "Connect to Server",
6
+ "enterServerDetails": "Enter your Tracearr server URL and mobile access token",
7
+ "serverUrl": "Server URL",
8
+ "accessToken": "Access Token",
9
+ "scanQrCodeInstead": "Scan QR Code Instead",
10
+ "enterManually": "Enter URL and Token Manually",
11
+ "cameraPermissionRequired": "Camera permission is required to scan QR codes",
12
+ "scanQrInstructions": "Open Settings → Mobile App in your Tracearr dashboard and scan the QR code"
13
+ },
14
+ "errors": {
15
+ "missingFields": "Missing Fields",
16
+ "pleaseEnterBothFields": "Please enter both server URL and token",
17
+ "invalidUrl": "Invalid URL",
18
+ "serverUrlMustStartWith": "Server URL must start with http:// or https://",
19
+ "pleaseEnterValidUrl": "Please enter a valid server URL",
20
+ "pairingFailed": "Pairing Failed",
21
+ "invalidQrCode": "Invalid QR code",
22
+ "invalidQrCodeMissingData": "Invalid QR code: missing pairing data",
23
+ "invalidQrCodeFormat": "Invalid QR code format. Please generate a new code.",
24
+ "invalidQrCodeMissingUrl": "Invalid QR code: missing server URL",
25
+ "invalidQrCodeMissingToken": "Invalid QR code: missing pairing token",
26
+ "invalidServerUrlInQr": "Invalid server URL in QR code",
27
+ "tooManyPairingAttempts": "Too many pairing attempts. Please wait a few minutes.",
28
+ "invalidOrExpiredToken": "Invalid or expired pairing token.",
29
+ "invalidPairingRequest": "Invalid pairing request. Check your token."
30
+ },
31
+ "settings": {
32
+ "preferences": "Preferences",
33
+ "community": "Community",
34
+ "discord": "Discord",
35
+ "joinCommunity": "Join the community",
36
+ "github": "GitHub",
37
+ "viewSourceCode": "View source code",
38
+ "account": "Account",
39
+ "disconnectServer": "Disconnect Server",
40
+ "disconnectConfirm": "Are you sure you want to disconnect from \"{{serverName}}\"? You will need to pair again to use the app.",
41
+ "disconnectConfirmGeneric": "Are you sure you want to disconnect? You will need to pair again to use the app.",
42
+ "currentlyConnected": "Currently connected to {{serverName}}"
43
+ },
44
+ "navigation": {
45
+ "selectServer": "Select Server",
46
+ "server": "Server",
47
+ "navigation": "Navigation"
48
+ },
49
+ "resources": {
50
+ "cpu": "CPU",
51
+ "ram": "RAM"
52
+ },
53
+ "notifications": {
54
+ "testSent": "Test Sent",
55
+ "testFailed": "Test Failed",
56
+ "failedToSendTest": "Failed to send test notification",
57
+ "loadingPreferences": "Loading preferences...",
58
+ "unableToLoadPreferences": "Unable to Load Preferences"
59
+ }
60
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "dashboard": "Dashboard",
3
+ "map": "Map",
4
+ "history": "History",
5
+ "stats": "Stats",
6
+ "activity": "Activity",
7
+ "library": "Library",
8
+ "users": "Users",
9
+ "rules": "Rules",
10
+ "violations": "Violations",
11
+ "alerts": "Alerts",
12
+ "settings": "Settings",
13
+ "overview": "Overview",
14
+ "quality": "Quality",
15
+ "storage": "Storage",
16
+ "watch": "Watch",
17
+ "performance": "Performance",
18
+ "devices": "Devices",
19
+ "bandwidth": "Bandwidth",
20
+ "jobs": "Jobs",
21
+ "accessControl": "Access Control"
22
+ }