@adminiumjs/i18n 0.3.31 → 0.3.32

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 (406) hide show
  1. package/dist/a11y-keys.d.ts +1 -1
  2. package/dist/a11y-keys.d.ts.map +1 -1
  3. package/dist/a11y-keys.js +233 -1
  4. package/dist/a11y-keys.js.map +1 -1
  5. package/dist/create-i18n-core.d.ts +69 -0
  6. package/dist/create-i18n-core.d.ts.map +1 -0
  7. package/dist/create-i18n-core.js +143 -0
  8. package/dist/create-i18n-core.js.map +1 -0
  9. package/dist/create-i18n.d.ts +9 -48
  10. package/dist/create-i18n.d.ts.map +1 -1
  11. package/dist/create-i18n.js +12 -134
  12. package/dist/create-i18n.js.map +1 -1
  13. package/dist/page.d.ts +19 -0
  14. package/dist/page.d.ts.map +1 -0
  15. package/dist/page.js +14 -0
  16. package/dist/page.js.map +1 -0
  17. package/dist/resources/ar-eg/common.d.ts +4 -16
  18. package/dist/resources/ar-eg/common.d.ts.map +1 -1
  19. package/dist/resources/ar-eg/common.js +6 -18
  20. package/dist/resources/ar-eg/common.js.map +1 -1
  21. package/dist/resources/ar-eg/designer.d.ts +30 -0
  22. package/dist/resources/ar-eg/designer.d.ts.map +1 -1
  23. package/dist/resources/ar-eg/designer.js +30 -0
  24. package/dist/resources/ar-eg/designer.js.map +1 -1
  25. package/dist/resources/ar-eg/desktop.d.ts +33 -0
  26. package/dist/resources/ar-eg/desktop.d.ts.map +1 -1
  27. package/dist/resources/ar-eg/desktop.js +33 -0
  28. package/dist/resources/ar-eg/desktop.js.map +1 -1
  29. package/dist/resources/ar-eg/email.d.ts +26 -0
  30. package/dist/resources/ar-eg/email.d.ts.map +1 -1
  31. package/dist/resources/ar-eg/email.js +26 -0
  32. package/dist/resources/ar-eg/email.js.map +1 -1
  33. package/dist/resources/ar-eg/pay.d.ts +173 -0
  34. package/dist/resources/ar-eg/pay.d.ts.map +1 -0
  35. package/dist/resources/ar-eg/pay.js +173 -0
  36. package/dist/resources/ar-eg/pay.js.map +1 -0
  37. package/dist/resources/ar-eg/payments.d.ts +195 -0
  38. package/dist/resources/ar-eg/payments.d.ts.map +1 -0
  39. package/dist/resources/ar-eg/payments.js +195 -0
  40. package/dist/resources/ar-eg/payments.js.map +1 -0
  41. package/dist/resources/ar-eg/roles.d.ts +3 -0
  42. package/dist/resources/ar-eg/roles.d.ts.map +1 -1
  43. package/dist/resources/ar-eg/roles.js +4 -1
  44. package/dist/resources/ar-eg/roles.js.map +1 -1
  45. package/dist/resources/ar-eg/studio.d.ts +642 -0
  46. package/dist/resources/ar-eg/studio.d.ts.map +1 -1
  47. package/dist/resources/ar-eg/studio.js +643 -1
  48. package/dist/resources/ar-eg/studio.js.map +1 -1
  49. package/dist/resources/ar-eg/ui.d.ts +6 -0
  50. package/dist/resources/ar-eg/ui.d.ts.map +1 -1
  51. package/dist/resources/ar-eg/ui.js +6 -0
  52. package/dist/resources/ar-eg/ui.js.map +1 -1
  53. package/dist/resources/cs-cz/common.d.ts +4 -16
  54. package/dist/resources/cs-cz/common.d.ts.map +1 -1
  55. package/dist/resources/cs-cz/common.js +6 -18
  56. package/dist/resources/cs-cz/common.js.map +1 -1
  57. package/dist/resources/cs-cz/designer.d.ts +30 -0
  58. package/dist/resources/cs-cz/designer.d.ts.map +1 -1
  59. package/dist/resources/cs-cz/designer.js +30 -0
  60. package/dist/resources/cs-cz/designer.js.map +1 -1
  61. package/dist/resources/cs-cz/desktop.d.ts +33 -0
  62. package/dist/resources/cs-cz/desktop.d.ts.map +1 -1
  63. package/dist/resources/cs-cz/desktop.js +33 -0
  64. package/dist/resources/cs-cz/desktop.js.map +1 -1
  65. package/dist/resources/cs-cz/email.d.ts +26 -0
  66. package/dist/resources/cs-cz/email.d.ts.map +1 -1
  67. package/dist/resources/cs-cz/email.js +26 -0
  68. package/dist/resources/cs-cz/email.js.map +1 -1
  69. package/dist/resources/cs-cz/pay.d.ts +173 -0
  70. package/dist/resources/cs-cz/pay.d.ts.map +1 -0
  71. package/dist/resources/cs-cz/pay.js +173 -0
  72. package/dist/resources/cs-cz/pay.js.map +1 -0
  73. package/dist/resources/cs-cz/payments.d.ts +195 -0
  74. package/dist/resources/cs-cz/payments.d.ts.map +1 -0
  75. package/dist/resources/cs-cz/payments.js +195 -0
  76. package/dist/resources/cs-cz/payments.js.map +1 -0
  77. package/dist/resources/cs-cz/roles.d.ts +3 -0
  78. package/dist/resources/cs-cz/roles.d.ts.map +1 -1
  79. package/dist/resources/cs-cz/roles.js +4 -1
  80. package/dist/resources/cs-cz/roles.js.map +1 -1
  81. package/dist/resources/cs-cz/studio.d.ts +642 -0
  82. package/dist/resources/cs-cz/studio.d.ts.map +1 -1
  83. package/dist/resources/cs-cz/studio.js +643 -1
  84. package/dist/resources/cs-cz/studio.js.map +1 -1
  85. package/dist/resources/cs-cz/ui.d.ts +6 -0
  86. package/dist/resources/cs-cz/ui.d.ts.map +1 -1
  87. package/dist/resources/cs-cz/ui.js +6 -0
  88. package/dist/resources/cs-cz/ui.js.map +1 -1
  89. package/dist/resources/da-dk/common.d.ts +4 -16
  90. package/dist/resources/da-dk/common.d.ts.map +1 -1
  91. package/dist/resources/da-dk/common.js +6 -18
  92. package/dist/resources/da-dk/common.js.map +1 -1
  93. package/dist/resources/da-dk/designer.d.ts +30 -0
  94. package/dist/resources/da-dk/designer.d.ts.map +1 -1
  95. package/dist/resources/da-dk/designer.js +30 -0
  96. package/dist/resources/da-dk/designer.js.map +1 -1
  97. package/dist/resources/da-dk/desktop.d.ts +33 -0
  98. package/dist/resources/da-dk/desktop.d.ts.map +1 -1
  99. package/dist/resources/da-dk/desktop.js +33 -0
  100. package/dist/resources/da-dk/desktop.js.map +1 -1
  101. package/dist/resources/da-dk/email.d.ts +26 -0
  102. package/dist/resources/da-dk/email.d.ts.map +1 -1
  103. package/dist/resources/da-dk/email.js +26 -0
  104. package/dist/resources/da-dk/email.js.map +1 -1
  105. package/dist/resources/da-dk/pay.d.ts +173 -0
  106. package/dist/resources/da-dk/pay.d.ts.map +1 -0
  107. package/dist/resources/da-dk/pay.js +173 -0
  108. package/dist/resources/da-dk/pay.js.map +1 -0
  109. package/dist/resources/da-dk/payments.d.ts +195 -0
  110. package/dist/resources/da-dk/payments.d.ts.map +1 -0
  111. package/dist/resources/da-dk/payments.js +195 -0
  112. package/dist/resources/da-dk/payments.js.map +1 -0
  113. package/dist/resources/da-dk/roles.d.ts +3 -0
  114. package/dist/resources/da-dk/roles.d.ts.map +1 -1
  115. package/dist/resources/da-dk/roles.js +4 -1
  116. package/dist/resources/da-dk/roles.js.map +1 -1
  117. package/dist/resources/da-dk/studio.d.ts +642 -0
  118. package/dist/resources/da-dk/studio.d.ts.map +1 -1
  119. package/dist/resources/da-dk/studio.js +643 -1
  120. package/dist/resources/da-dk/studio.js.map +1 -1
  121. package/dist/resources/da-dk/ui.d.ts +6 -0
  122. package/dist/resources/da-dk/ui.d.ts.map +1 -1
  123. package/dist/resources/da-dk/ui.js +6 -0
  124. package/dist/resources/da-dk/ui.js.map +1 -1
  125. package/dist/resources/de-de/common.d.ts +4 -16
  126. package/dist/resources/de-de/common.d.ts.map +1 -1
  127. package/dist/resources/de-de/common.js +6 -18
  128. package/dist/resources/de-de/common.js.map +1 -1
  129. package/dist/resources/de-de/designer.d.ts +30 -0
  130. package/dist/resources/de-de/designer.d.ts.map +1 -1
  131. package/dist/resources/de-de/designer.js +30 -0
  132. package/dist/resources/de-de/designer.js.map +1 -1
  133. package/dist/resources/de-de/desktop.d.ts +33 -0
  134. package/dist/resources/de-de/desktop.d.ts.map +1 -1
  135. package/dist/resources/de-de/desktop.js +33 -0
  136. package/dist/resources/de-de/desktop.js.map +1 -1
  137. package/dist/resources/de-de/email.d.ts +26 -0
  138. package/dist/resources/de-de/email.d.ts.map +1 -1
  139. package/dist/resources/de-de/email.js +26 -0
  140. package/dist/resources/de-de/email.js.map +1 -1
  141. package/dist/resources/de-de/pay.d.ts +173 -0
  142. package/dist/resources/de-de/pay.d.ts.map +1 -0
  143. package/dist/resources/de-de/pay.js +173 -0
  144. package/dist/resources/de-de/pay.js.map +1 -0
  145. package/dist/resources/de-de/payments.d.ts +195 -0
  146. package/dist/resources/de-de/payments.d.ts.map +1 -0
  147. package/dist/resources/de-de/payments.js +195 -0
  148. package/dist/resources/de-de/payments.js.map +1 -0
  149. package/dist/resources/de-de/roles.d.ts +3 -0
  150. package/dist/resources/de-de/roles.d.ts.map +1 -1
  151. package/dist/resources/de-de/roles.js +4 -1
  152. package/dist/resources/de-de/roles.js.map +1 -1
  153. package/dist/resources/de-de/studio.d.ts +642 -0
  154. package/dist/resources/de-de/studio.d.ts.map +1 -1
  155. package/dist/resources/de-de/studio.js +643 -1
  156. package/dist/resources/de-de/studio.js.map +1 -1
  157. package/dist/resources/de-de/ui.d.ts +6 -0
  158. package/dist/resources/de-de/ui.d.ts.map +1 -1
  159. package/dist/resources/de-de/ui.js +6 -0
  160. package/dist/resources/de-de/ui.js.map +1 -1
  161. package/dist/resources/deferred-counts.d.ts +2 -2
  162. package/dist/resources/deferred-counts.js +1 -1
  163. package/dist/resources/en-us/common-deferred.d.ts +3 -0
  164. package/dist/resources/en-us/common-deferred.d.ts.map +1 -1
  165. package/dist/resources/en-us/common-deferred.js +4 -1
  166. package/dist/resources/en-us/common-deferred.js.map +1 -1
  167. package/dist/resources/en-us/common.d.ts +1 -16
  168. package/dist/resources/en-us/common.d.ts.map +1 -1
  169. package/dist/resources/en-us/common.js +2 -17
  170. package/dist/resources/en-us/common.js.map +1 -1
  171. package/dist/resources/en-us/designer.d.ts +30 -0
  172. package/dist/resources/en-us/designer.d.ts.map +1 -1
  173. package/dist/resources/en-us/designer.js +30 -0
  174. package/dist/resources/en-us/designer.js.map +1 -1
  175. package/dist/resources/en-us/desktop.d.ts +33 -0
  176. package/dist/resources/en-us/desktop.d.ts.map +1 -1
  177. package/dist/resources/en-us/desktop.js +33 -0
  178. package/dist/resources/en-us/desktop.js.map +1 -1
  179. package/dist/resources/en-us/email.d.ts +26 -0
  180. package/dist/resources/en-us/email.d.ts.map +1 -1
  181. package/dist/resources/en-us/email.js +26 -0
  182. package/dist/resources/en-us/email.js.map +1 -1
  183. package/dist/resources/en-us/pay.d.ts +173 -0
  184. package/dist/resources/en-us/pay.d.ts.map +1 -0
  185. package/dist/resources/en-us/pay.js +173 -0
  186. package/dist/resources/en-us/pay.js.map +1 -0
  187. package/dist/resources/en-us/payments.d.ts +195 -0
  188. package/dist/resources/en-us/payments.d.ts.map +1 -0
  189. package/dist/resources/en-us/payments.js +195 -0
  190. package/dist/resources/en-us/payments.js.map +1 -0
  191. package/dist/resources/en-us/roles.d.ts +3 -0
  192. package/dist/resources/en-us/roles.d.ts.map +1 -1
  193. package/dist/resources/en-us/roles.js +4 -1
  194. package/dist/resources/en-us/roles.js.map +1 -1
  195. package/dist/resources/en-us/studio.d.ts +642 -0
  196. package/dist/resources/en-us/studio.d.ts.map +1 -1
  197. package/dist/resources/en-us/studio.js +643 -1
  198. package/dist/resources/en-us/studio.js.map +1 -1
  199. package/dist/resources/en-us/ui-deferred.d.ts +1 -0
  200. package/dist/resources/en-us/ui-deferred.d.ts.map +1 -1
  201. package/dist/resources/en-us/ui-deferred.js +1 -0
  202. package/dist/resources/en-us/ui-deferred.js.map +1 -1
  203. package/dist/resources/en-us/ui.d.ts +5 -0
  204. package/dist/resources/en-us/ui.d.ts.map +1 -1
  205. package/dist/resources/en-us/ui.js +5 -0
  206. package/dist/resources/en-us/ui.js.map +1 -1
  207. package/dist/resources/fr-fr/common.d.ts +4 -16
  208. package/dist/resources/fr-fr/common.d.ts.map +1 -1
  209. package/dist/resources/fr-fr/common.js +6 -18
  210. package/dist/resources/fr-fr/common.js.map +1 -1
  211. package/dist/resources/fr-fr/designer.d.ts +30 -0
  212. package/dist/resources/fr-fr/designer.d.ts.map +1 -1
  213. package/dist/resources/fr-fr/designer.js +30 -0
  214. package/dist/resources/fr-fr/designer.js.map +1 -1
  215. package/dist/resources/fr-fr/desktop.d.ts +33 -0
  216. package/dist/resources/fr-fr/desktop.d.ts.map +1 -1
  217. package/dist/resources/fr-fr/desktop.js +33 -0
  218. package/dist/resources/fr-fr/desktop.js.map +1 -1
  219. package/dist/resources/fr-fr/email.d.ts +26 -0
  220. package/dist/resources/fr-fr/email.d.ts.map +1 -1
  221. package/dist/resources/fr-fr/email.js +26 -0
  222. package/dist/resources/fr-fr/email.js.map +1 -1
  223. package/dist/resources/fr-fr/pay.d.ts +173 -0
  224. package/dist/resources/fr-fr/pay.d.ts.map +1 -0
  225. package/dist/resources/fr-fr/pay.js +173 -0
  226. package/dist/resources/fr-fr/pay.js.map +1 -0
  227. package/dist/resources/fr-fr/payments.d.ts +195 -0
  228. package/dist/resources/fr-fr/payments.d.ts.map +1 -0
  229. package/dist/resources/fr-fr/payments.js +195 -0
  230. package/dist/resources/fr-fr/payments.js.map +1 -0
  231. package/dist/resources/fr-fr/roles.d.ts +3 -0
  232. package/dist/resources/fr-fr/roles.d.ts.map +1 -1
  233. package/dist/resources/fr-fr/roles.js +4 -1
  234. package/dist/resources/fr-fr/roles.js.map +1 -1
  235. package/dist/resources/fr-fr/studio.d.ts +642 -0
  236. package/dist/resources/fr-fr/studio.d.ts.map +1 -1
  237. package/dist/resources/fr-fr/studio.js +643 -1
  238. package/dist/resources/fr-fr/studio.js.map +1 -1
  239. package/dist/resources/fr-fr/ui.d.ts +6 -0
  240. package/dist/resources/fr-fr/ui.d.ts.map +1 -1
  241. package/dist/resources/fr-fr/ui.js +6 -0
  242. package/dist/resources/fr-fr/ui.js.map +1 -1
  243. package/dist/resources/index.d.ts.map +1 -1
  244. package/dist/resources/index.js +4 -0
  245. package/dist/resources/index.js.map +1 -1
  246. package/dist/resources/lazy.d.ts.map +1 -1
  247. package/dist/resources/lazy.js +16 -0
  248. package/dist/resources/lazy.js.map +1 -1
  249. package/dist/resources/namespaces.d.ts +2 -2
  250. package/dist/resources/namespaces.d.ts.map +1 -1
  251. package/dist/resources/namespaces.js +14 -0
  252. package/dist/resources/namespaces.js.map +1 -1
  253. package/dist/resources/zh-cn/common.d.ts +4 -16
  254. package/dist/resources/zh-cn/common.d.ts.map +1 -1
  255. package/dist/resources/zh-cn/common.js +6 -18
  256. package/dist/resources/zh-cn/common.js.map +1 -1
  257. package/dist/resources/zh-cn/designer.d.ts +30 -0
  258. package/dist/resources/zh-cn/designer.d.ts.map +1 -1
  259. package/dist/resources/zh-cn/designer.js +30 -0
  260. package/dist/resources/zh-cn/designer.js.map +1 -1
  261. package/dist/resources/zh-cn/desktop.d.ts +33 -0
  262. package/dist/resources/zh-cn/desktop.d.ts.map +1 -1
  263. package/dist/resources/zh-cn/desktop.js +33 -0
  264. package/dist/resources/zh-cn/desktop.js.map +1 -1
  265. package/dist/resources/zh-cn/email.d.ts +26 -0
  266. package/dist/resources/zh-cn/email.d.ts.map +1 -1
  267. package/dist/resources/zh-cn/email.js +26 -0
  268. package/dist/resources/zh-cn/email.js.map +1 -1
  269. package/dist/resources/zh-cn/pay.d.ts +173 -0
  270. package/dist/resources/zh-cn/pay.d.ts.map +1 -0
  271. package/dist/resources/zh-cn/pay.js +173 -0
  272. package/dist/resources/zh-cn/pay.js.map +1 -0
  273. package/dist/resources/zh-cn/payments.d.ts +195 -0
  274. package/dist/resources/zh-cn/payments.d.ts.map +1 -0
  275. package/dist/resources/zh-cn/payments.js +195 -0
  276. package/dist/resources/zh-cn/payments.js.map +1 -0
  277. package/dist/resources/zh-cn/roles.d.ts +3 -0
  278. package/dist/resources/zh-cn/roles.d.ts.map +1 -1
  279. package/dist/resources/zh-cn/roles.js +4 -1
  280. package/dist/resources/zh-cn/roles.js.map +1 -1
  281. package/dist/resources/zh-cn/studio.d.ts +642 -0
  282. package/dist/resources/zh-cn/studio.d.ts.map +1 -1
  283. package/dist/resources/zh-cn/studio.js +643 -1
  284. package/dist/resources/zh-cn/studio.js.map +1 -1
  285. package/dist/resources/zh-cn/ui.d.ts +6 -0
  286. package/dist/resources/zh-cn/ui.d.ts.map +1 -1
  287. package/dist/resources/zh-cn/ui.js +6 -0
  288. package/dist/resources/zh-cn/ui.js.map +1 -1
  289. package/dist/resources/zh-tw/common.d.ts +4 -16
  290. package/dist/resources/zh-tw/common.d.ts.map +1 -1
  291. package/dist/resources/zh-tw/common.js +6 -18
  292. package/dist/resources/zh-tw/common.js.map +1 -1
  293. package/dist/resources/zh-tw/designer.d.ts +30 -0
  294. package/dist/resources/zh-tw/designer.d.ts.map +1 -1
  295. package/dist/resources/zh-tw/designer.js +30 -0
  296. package/dist/resources/zh-tw/designer.js.map +1 -1
  297. package/dist/resources/zh-tw/desktop.d.ts +33 -0
  298. package/dist/resources/zh-tw/desktop.d.ts.map +1 -1
  299. package/dist/resources/zh-tw/desktop.js +33 -0
  300. package/dist/resources/zh-tw/desktop.js.map +1 -1
  301. package/dist/resources/zh-tw/email.d.ts +26 -0
  302. package/dist/resources/zh-tw/email.d.ts.map +1 -1
  303. package/dist/resources/zh-tw/email.js +26 -0
  304. package/dist/resources/zh-tw/email.js.map +1 -1
  305. package/dist/resources/zh-tw/pay.d.ts +173 -0
  306. package/dist/resources/zh-tw/pay.d.ts.map +1 -0
  307. package/dist/resources/zh-tw/pay.js +173 -0
  308. package/dist/resources/zh-tw/pay.js.map +1 -0
  309. package/dist/resources/zh-tw/payments.d.ts +195 -0
  310. package/dist/resources/zh-tw/payments.d.ts.map +1 -0
  311. package/dist/resources/zh-tw/payments.js +195 -0
  312. package/dist/resources/zh-tw/payments.js.map +1 -0
  313. package/dist/resources/zh-tw/roles.d.ts +3 -0
  314. package/dist/resources/zh-tw/roles.d.ts.map +1 -1
  315. package/dist/resources/zh-tw/roles.js +4 -1
  316. package/dist/resources/zh-tw/roles.js.map +1 -1
  317. package/dist/resources/zh-tw/studio.d.ts +642 -0
  318. package/dist/resources/zh-tw/studio.d.ts.map +1 -1
  319. package/dist/resources/zh-tw/studio.js +643 -1
  320. package/dist/resources/zh-tw/studio.js.map +1 -1
  321. package/dist/resources/zh-tw/ui.d.ts +6 -0
  322. package/dist/resources/zh-tw/ui.d.ts.map +1 -1
  323. package/dist/resources/zh-tw/ui.js +6 -0
  324. package/dist/resources/zh-tw/ui.js.map +1 -1
  325. package/dist/review-status.js +7 -7
  326. package/dist/review-status.js.map +1 -1
  327. package/locales/ar-EG/.meta.json +8552 -5064
  328. package/locales/ar-EG/common.json +6 -18
  329. package/locales/ar-EG/designer.json +30 -0
  330. package/locales/ar-EG/desktop.json +33 -0
  331. package/locales/ar-EG/email.json +26 -0
  332. package/locales/ar-EG/pay.json +162 -0
  333. package/locales/ar-EG/payments.json +184 -0
  334. package/locales/ar-EG/roles.json +4 -1
  335. package/locales/ar-EG/studio.json +643 -1
  336. package/locales/ar-EG/ui.json +6 -0
  337. package/locales/cs-CZ/.meta.json +8569 -5081
  338. package/locales/cs-CZ/common.json +6 -18
  339. package/locales/cs-CZ/designer.json +30 -0
  340. package/locales/cs-CZ/desktop.json +33 -0
  341. package/locales/cs-CZ/email.json +26 -0
  342. package/locales/cs-CZ/pay.json +162 -0
  343. package/locales/cs-CZ/payments.json +184 -0
  344. package/locales/cs-CZ/roles.json +4 -1
  345. package/locales/cs-CZ/studio.json +643 -1
  346. package/locales/cs-CZ/ui.json +6 -0
  347. package/locales/da-DK/.meta.json +8582 -5094
  348. package/locales/da-DK/common.json +6 -18
  349. package/locales/da-DK/designer.json +30 -0
  350. package/locales/da-DK/desktop.json +33 -0
  351. package/locales/da-DK/email.json +26 -0
  352. package/locales/da-DK/pay.json +162 -0
  353. package/locales/da-DK/payments.json +184 -0
  354. package/locales/da-DK/roles.json +4 -1
  355. package/locales/da-DK/studio.json +643 -1
  356. package/locales/da-DK/ui.json +6 -0
  357. package/locales/de-DE/.meta.json +8498 -5010
  358. package/locales/de-DE/common.json +6 -18
  359. package/locales/de-DE/designer.json +30 -0
  360. package/locales/de-DE/desktop.json +33 -0
  361. package/locales/de-DE/email.json +26 -0
  362. package/locales/de-DE/pay.json +162 -0
  363. package/locales/de-DE/payments.json +184 -0
  364. package/locales/de-DE/roles.json +4 -1
  365. package/locales/de-DE/studio.json +643 -1
  366. package/locales/de-DE/ui.json +6 -0
  367. package/locales/en-US/common.json +6 -18
  368. package/locales/en-US/designer.json +30 -0
  369. package/locales/en-US/desktop.json +33 -0
  370. package/locales/en-US/email.json +26 -0
  371. package/locales/en-US/pay.json +162 -0
  372. package/locales/en-US/payments.json +184 -0
  373. package/locales/en-US/roles.json +4 -1
  374. package/locales/en-US/studio.json +643 -1
  375. package/locales/en-US/ui.json +6 -0
  376. package/locales/fr-FR/.meta.json +8515 -5027
  377. package/locales/fr-FR/common.json +6 -18
  378. package/locales/fr-FR/designer.json +30 -0
  379. package/locales/fr-FR/desktop.json +33 -0
  380. package/locales/fr-FR/email.json +26 -0
  381. package/locales/fr-FR/pay.json +162 -0
  382. package/locales/fr-FR/payments.json +184 -0
  383. package/locales/fr-FR/roles.json +4 -1
  384. package/locales/fr-FR/studio.json +643 -1
  385. package/locales/fr-FR/ui.json +6 -0
  386. package/locales/zh-CN/.meta.json +8562 -5074
  387. package/locales/zh-CN/common.json +6 -18
  388. package/locales/zh-CN/designer.json +30 -0
  389. package/locales/zh-CN/desktop.json +33 -0
  390. package/locales/zh-CN/email.json +26 -0
  391. package/locales/zh-CN/pay.json +162 -0
  392. package/locales/zh-CN/payments.json +184 -0
  393. package/locales/zh-CN/roles.json +4 -1
  394. package/locales/zh-CN/studio.json +643 -1
  395. package/locales/zh-CN/ui.json +6 -0
  396. package/locales/zh-TW/.meta.json +8562 -5074
  397. package/locales/zh-TW/common.json +6 -18
  398. package/locales/zh-TW/designer.json +30 -0
  399. package/locales/zh-TW/desktop.json +33 -0
  400. package/locales/zh-TW/email.json +26 -0
  401. package/locales/zh-TW/pay.json +162 -0
  402. package/locales/zh-TW/payments.json +184 -0
  403. package/locales/zh-TW/roles.json +4 -1
  404. package/locales/zh-TW/studio.json +643 -1
  405. package/locales/zh-TW/ui.json +6 -0
  406. package/package.json +5 -1
@@ -0,0 +1,143 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ /**
3
+ * THE CORE, with no bundle of its own: `create-i18n.ts` hands it the
4
+ * dashboard's eager English, and a page with its own small vocabulary (the
5
+ * customer's pay page, `./page.ts`) hands it only its own, so a bundler
6
+ * never sees the dashboard's words from there.
7
+ *
8
+ * i18next factory: i18next + IcuFormat (ICU MessageFormat for every
9
+ * message — i18next's own plural-suffix system is disabled by the ICU
10
+ * format plugin) + an inline lazy backend.
11
+ *
12
+ * The instance starts with the EAGER namespaces only: en-US's ship
13
+ * synchronously (they are the fallback text and must never be async) and the
14
+ * active locale's are fetched through `loadBundle` before `init` resolves —
15
+ * the dashboard passes a Vite dynamic-import loader, so each locale becomes
16
+ * its own chunk. A DEFERRED namespace (`studio`) is in neither set: the
17
+ * surface that owns it calls `instance.loadNamespaces()` and waits, which is
18
+ * what keeps the admin console's text out of every user's first load. See
19
+ * ./resources/namespaces.ts.
20
+ */
21
+ import i18next, {} from 'i18next';
22
+ import { IcuFormat } from './icu-format.js';
23
+ import { localeEntry, tagForLocale } from './locales.js';
24
+ import { bumpI18nRevision } from './revision.js';
25
+ function lazyBackend(load) {
26
+ return {
27
+ type: 'backend',
28
+ init() {
29
+ // Options come through the closure — nothing to do.
30
+ },
31
+ read(language, namespace, callback) {
32
+ void Promise.resolve()
33
+ .then(async () => await load(language, namespace))
34
+ .then((bundle) => {
35
+ if (bundle === null) {
36
+ callback(null, {});
37
+ return;
38
+ }
39
+ const data = 'default' in bundle ? bundle.default : bundle;
40
+ // CLONE. i18next stores a backend bundle BY REFERENCE
41
+ // (`skipCopy: true` on the connector's store write), and this
42
+ // object is the live default export of a dynamic-import module —
43
+ // a process-wide singleton. Anything that later merges runtime
44
+ // overrides into the store would rewrite the compiled chunk
45
+ // itself, destroying the original text for every other instance
46
+ // in the process. Clone once here so the store owns its copy.
47
+ callback(null, structuredClone(data));
48
+ }, () => {
49
+ // Missing/failed chunk: resolve empty so the fallback chain applies
50
+ // (degraded network beats a blank screen).
51
+ callback(null, {});
52
+ });
53
+ },
54
+ };
55
+ }
56
+ export async function buildI18n(opts, base) {
57
+ const tag = tagForLocale(opts.locale);
58
+ // DEEP clone, not a spread. A shallow spread leaves
59
+ // `resources['en-US'].common === <the bundled module>.common`, and i18next's
60
+ // ResourceStore takes `this.data = data` with no copy of its own — so the
61
+ // store would alias the compiled ES-module singletons. Any later merge of
62
+ // runtime overrides would then permanently rewrite the compiled
63
+ // English in memory: the original text is gone, so even a correct
64
+ // reset-to-built-in has nothing to restore, and on the server every
65
+ // subsequently created instance inherits another caller's overrides.
66
+ const resources = {
67
+ 'en-US': structuredClone(base.english),
68
+ };
69
+ for (const [resourceTag, byNs] of Object.entries(opts.resources ?? {})) {
70
+ if (byNs === undefined)
71
+ continue;
72
+ const target = (resources[resourceTag] ??= {});
73
+ for (const [ns, bundle] of Object.entries(byNs)) {
74
+ // Cloned for the same reason as the bundled resources above: a caller
75
+ // (Electron packaging, tests) may hand us a module singleton.
76
+ if (bundle !== undefined)
77
+ target[ns] = structuredClone(bundle);
78
+ }
79
+ }
80
+ const instance = i18next.createInstance();
81
+ instance.use(new IcuFormat());
82
+ if (opts.loadBundle !== undefined)
83
+ instance.use(lazyBackend(opts.loadBundle));
84
+ await instance.init({
85
+ lng: tag,
86
+ fallbackLng: 'en-US',
87
+ // EAGER only. `studio` joins `options.ns` the first time something calls
88
+ // `loadNamespaces('studio')`, which is also what makes a later
89
+ // `switchLocale` load the new language's copy of it.
90
+ ns: [...base.namespaces],
91
+ defaultNS: base.defaultNamespace,
92
+ resources,
93
+ // Bundled en-US coexists with the lazy backend for other locales.
94
+ partialBundledLanguages: true,
95
+ // React escapes; ICU handles placeables.
96
+ interpolation: { escapeValue: false },
97
+ returnNull: false,
98
+ // TRUE since: an empty string is a deliberate override state
99
+ // ("render nothing"), not a missing value. With `false`, an
100
+ // admin's blank would fall through to the en-US built-in and the state
101
+ // would be unexpressible. Compiled bundles are unaffected — the parity
102
+ // gate asserts no compiled message is empty.
103
+ returnEmptyString: true,
104
+ ...(opts.onMissingKey === undefined
105
+ ? {}
106
+ : {
107
+ saveMissing: true,
108
+ missingKeyHandler: (lngs, ns, key) => {
109
+ for (const lng of lngs)
110
+ opts.onMissingKey?.(lng, ns, key);
111
+ },
112
+ }),
113
+ });
114
+ // A language switch changes what every key resolves to, so it is a revision
115
+ // change like any other. Without this, only components that
116
+ // consume `I18nProvider`'s context re-render — and the dashboard's ~2.3k
117
+ // call sites use a module-level `t()` that is not a hook, so already-painted
118
+ // strings kept the OUTGOING language until a reload while `dir` flipped
119
+ // immediately. That produced a mirrored English UI, and it is the defect
120
+ // `apps/e2e/tests/rtl-locale.spec.ts` used to pin as a known bug.
121
+ instance.on('languageChanged', () => {
122
+ bumpI18nRevision();
123
+ });
124
+ return instance;
125
+ }
126
+ /**
127
+ * Preloaded live locale switch: the target locale's namespaces load BEFORE
128
+ * `changeLanguage` fires, so the UI never renders a half-translated frame
129
+ * while `dir`/`lang` flip.
130
+ *
131
+ * `loadLanguages` covers whatever is in `options.ns` at the time, which is the
132
+ * eager set plus any deferred namespace already pulled in — so switching
133
+ * locale inside the Studio reloads the Studio's text, and switching locale
134
+ * outside it does not fetch a console the user has not opened.
135
+ */
136
+ export async function switchLocale(instance, locale) {
137
+ const { tag } = localeEntry(locale);
138
+ if (instance.language === tag)
139
+ return;
140
+ await instance.loadLanguages(tag);
141
+ await instance.changeLanguage(tag);
142
+ }
143
+ //# sourceMappingURL=create-i18n-core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-i18n-core.js","sourceRoot":"","sources":["../src/create-i18n-core.ts"],"names":[],"mappings":"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"}
@@ -1,42 +1,14 @@
1
1
  /**
2
- * i18next factory: i18next + IcuFormat (ICU MessageFormat for every
3
- * message — i18next's own plural-suffix system is disabled by the ICU
4
- * format plugin) + an inline lazy backend.
5
- *
6
- * The instance starts with the EAGER namespaces only: en-US's ship
7
- * synchronously (they are the fallback text and must never be async) and the
8
- * active locale's are fetched through `loadBundle` before `init` resolves —
9
- * the dashboard passes a Vite dynamic-import loader, so each locale becomes
10
- * its own chunk. A DEFERRED namespace (`studio`) is in neither set: the
11
- * surface that owns it calls `instance.loadNamespaces()` and waits, which is
12
- * what keeps the admin console's text out of every user's first load. See
13
- * ./resources/namespaces.ts.
2
+ * The dashboard's i18next instance: the core (`create-i18n-core.ts`) started
3
+ * with the EAGER namespaces. en-US's ship synchronously (they are the fallback
4
+ * text and must never be async) and the active locale's are fetched through
5
+ * `loadBundle` before `init` resolves. A DEFERRED namespace (`studio`) is in
6
+ * neither set: the surface that owns it calls `instance.loadNamespaces()` and
7
+ * waits. See ./resources/namespaces.ts.
14
8
  */
15
- import { type i18n } from 'i18next';
16
- import { type LocaleId } from './locales.js';
17
- import { type Namespace, type ResourceBundle } from './resources/namespaces.js';
18
- /** The concrete i18next instance type consumers hold (re-exported so callers never import i18next directly). */
19
- export type I18nInstance = i18n;
20
- export type BundleLoader = (tag: string, ns: Namespace) => Promise<ResourceBundle | {
21
- default: ResourceBundle;
22
- } | null>;
23
- export interface CreateI18nOptions {
24
- /** Canonical locale id (`en_US` … `ar_EG`) the instance starts in. */
25
- locale: LocaleId;
26
- /**
27
- * Extra/override resource bundles, keyed by BCP-47 tag then namespace.
28
- * Merged over the bundled en-US resources (tests, Electron packaging).
29
- */
30
- resources?: Partial<Record<string, Partial<Record<Namespace, ResourceBundle>>>> | undefined;
31
- /**
32
- * Lazy loader for non-bundled locale/namespace pairs. Return `null` (or
33
- * reject) for a missing bundle — the key then resolves through the en-US
34
- * fallback chain instead of failing.
35
- */
36
- loadBundle?: BundleLoader | undefined;
37
- /** Missing-key hook (dev overlay / CI missing-key guard). */
38
- onMissingKey?: ((lng: string, ns: string, key: string) => void) | undefined;
39
- }
9
+ import { type CreateI18nOptions, type I18nInstance } from './create-i18n-core.js';
10
+ export { switchLocale } from './create-i18n-core.js';
11
+ export type { BundleLoader, CreateI18nOptions, I18nInstance } from './create-i18n-core.js';
40
12
  /**
41
13
  * Builds a ready (initialized) i18next instance for `locale`. For `en_US`
42
14
  * initialization is effectively synchronous (bundled resources); other
@@ -44,15 +16,4 @@ export interface CreateI18nOptions {
44
16
  * en-US, when no loader/bundle exists yet).
45
17
  */
46
18
  export declare function createI18n(opts: CreateI18nOptions): Promise<I18nInstance>;
47
- /**
48
- * Preloaded live locale switch: the target locale's namespaces load BEFORE
49
- * `changeLanguage` fires, so the UI never renders a half-translated frame
50
- * while `dir`/`lang` flip.
51
- *
52
- * `loadLanguages` covers whatever is in `options.ns` at the time, which is the
53
- * eager set plus any deferred namespace already pulled in — so switching
54
- * locale inside the Studio reloads the Studio's text, and switching locale
55
- * outside it does not fetch a console the user has not opened.
56
- */
57
- export declare function switchLocale(instance: I18nInstance, locale: LocaleId): Promise<void>;
58
19
  //# sourceMappingURL=create-i18n.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-i18n.d.ts","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;GAaG;AACH,OAAgB,EAAsB,KAAK,IAAI,EAAoC,MAAM,SAAS,CAAC;AAGnG,OAAO,EAA6B,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAIxE,OAAO,EAAoB,KAAK,SAAS,EAAE,KAAK,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAElG,gHAAgH;AAChH,MAAM,MAAM,YAAY,GAAG,IAAI,CAAC;AAEhC,MAAM,MAAM,YAAY,GAAG,CACzB,GAAG,EAAE,MAAM,EACX,EAAE,EAAE,SAAS,KACV,OAAO,CAAC,cAAc,GAAG;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAAC,CAAC;AAElE,MAAM,WAAW,iBAAiB;IAChC,sEAAsE;IACtE,MAAM,EAAE,QAAQ,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;IAC5F;;;;OAIG;IACH,UAAU,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IACtC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;CAC7E;AAqCD;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CA2E/E;AAED;;;;;;;;;GASG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1F"}
1
+ {"version":3,"file":"create-i18n.d.ts","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AACA;;;;;;;GAOG;AACH,OAAO,EAAa,KAAK,iBAAiB,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAK7F,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3F;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,CAQ/E"}
@@ -1,56 +1,17 @@
1
1
  // SPDX-License-Identifier: AGPL-3.0-only
2
2
  /**
3
- * i18next factory: i18next + IcuFormat (ICU MessageFormat for every
4
- * message — i18next's own plural-suffix system is disabled by the ICU
5
- * format plugin) + an inline lazy backend.
6
- *
7
- * The instance starts with the EAGER namespaces only: en-US's ship
8
- * synchronously (they are the fallback text and must never be async) and the
9
- * active locale's are fetched through `loadBundle` before `init` resolves —
10
- * the dashboard passes a Vite dynamic-import loader, so each locale becomes
11
- * its own chunk. A DEFERRED namespace (`studio`) is in neither set: the
12
- * surface that owns it calls `instance.loadNamespaces()` and waits, which is
13
- * what keeps the admin console's text out of every user's first load. See
14
- * ./resources/namespaces.ts.
3
+ * The dashboard's i18next instance: the core (`create-i18n-core.ts`) started
4
+ * with the EAGER namespaces. en-US's ship synchronously (they are the fallback
5
+ * text and must never be async) and the active locale's are fetched through
6
+ * `loadBundle` before `init` resolves. A DEFERRED namespace (`studio`) is in
7
+ * neither set: the surface that owns it calls `instance.loadNamespaces()` and
8
+ * waits. See ./resources/namespaces.ts.
15
9
  */
16
- import i18next, {} from 'i18next';
17
- import { IcuFormat } from './icu-format.js';
18
- import { localeEntry, tagForLocale } from './locales.js';
19
- import { bumpI18nRevision } from './revision.js';
20
- import { loadedWords } from './ui-words.js';
10
+ import { buildI18n } from './create-i18n-core.js';
21
11
  import { EN_US_EAGER } from './resources/eager.js';
22
12
  import { EAGER_NAMESPACES } from './resources/namespaces.js';
23
- function lazyBackend(load) {
24
- return {
25
- type: 'backend',
26
- init() {
27
- // Options come through the closure — nothing to do.
28
- },
29
- read(language, namespace, callback) {
30
- void Promise.resolve()
31
- .then(async () => await load(language, namespace))
32
- .then((bundle) => {
33
- if (bundle === null) {
34
- callback(null, {});
35
- return;
36
- }
37
- const data = 'default' in bundle ? bundle.default : bundle;
38
- // CLONE. i18next stores a backend bundle BY REFERENCE
39
- // (`skipCopy: true` on the connector's store write), and this
40
- // object is the live default export of a dynamic-import module —
41
- // a process-wide singleton. Anything that later merges runtime
42
- // overrides into the store would rewrite the compiled chunk
43
- // itself, destroying the original text for every other instance
44
- // in the process. Clone once here so the store owns its copy.
45
- callback(null, structuredClone(data));
46
- }, () => {
47
- // Missing/failed chunk: resolve empty so the fallback chain applies
48
- // (degraded network beats a blank screen).
49
- callback(null, {});
50
- });
51
- },
52
- };
53
- }
13
+ import { loadedWords } from './ui-words.js';
14
+ export { switchLocale } from './create-i18n-core.js';
54
15
  /**
55
16
  * Builds a ready (initialized) i18next instance for `locale`. For `en_US`
56
17
  * initialization is effectively synchronous (bundled resources); other
@@ -58,96 +19,13 @@ function lazyBackend(load) {
58
19
  * en-US, when no loader/bundle exists yet).
59
20
  */
60
21
  export async function createI18n(opts) {
61
- const tag = tagForLocale(opts.locale);
62
- // DEEP clone, not a spread. A shallow spread leaves
63
- // `resources['en-US'].common === EN_US_EAGER.common`, and i18next's
64
- // ResourceStore takes `this.data = data` with no copy of its own — so the
65
- // store would alias the compiled ES-module singletons. Any later merge of
66
- // runtime overrides would then permanently rewrite the compiled
67
- // English in memory: the original text is gone, so even a correct
68
- // reset-to-built-in has nothing to restore, and on the server every
69
- // subsequently created instance inherits another caller's overrides.
70
- const resources = {
71
- 'en-US': structuredClone(EN_US_EAGER),
72
- };
22
+ const english = { ...EN_US_EAGER };
73
23
  // The widget and template words, once any instance in this process has read them (ui-words.ts).
74
24
  for (const ns of ['ui', 'common']) {
75
25
  const words = loadedWords(ns);
76
26
  if (words !== null)
77
- resources['en-US'][ns] = { ...resources['en-US'][ns], ...structuredClone(words) };
78
- }
79
- for (const [resourceTag, byNs] of Object.entries(opts.resources ?? {})) {
80
- if (byNs === undefined)
81
- continue;
82
- const target = (resources[resourceTag] ??= {});
83
- for (const [ns, bundle] of Object.entries(byNs)) {
84
- // Cloned for the same reason as the bundled resources above: a caller
85
- // (Electron packaging, tests) may hand us a module singleton.
86
- if (bundle !== undefined)
87
- target[ns] = structuredClone(bundle);
88
- }
27
+ english[ns] = { ...english[ns], ...words };
89
28
  }
90
- const instance = i18next.createInstance();
91
- instance.use(new IcuFormat());
92
- if (opts.loadBundle !== undefined)
93
- instance.use(lazyBackend(opts.loadBundle));
94
- await instance.init({
95
- lng: tag,
96
- fallbackLng: 'en-US',
97
- // EAGER only. `studio` joins `options.ns` the first time something calls
98
- // `loadNamespaces('studio')`, which is also what makes a later
99
- // `switchLocale` load the new language's copy of it.
100
- ns: [...EAGER_NAMESPACES],
101
- defaultNS: 'common',
102
- resources,
103
- // Bundled en-US coexists with the lazy backend for other locales.
104
- partialBundledLanguages: true,
105
- // React escapes; ICU handles placeables.
106
- interpolation: { escapeValue: false },
107
- returnNull: false,
108
- // TRUE since: an empty string is a deliberate override state
109
- // ("render nothing"), not a missing value. With `false`, an
110
- // admin's blank would fall through to the en-US built-in and the state
111
- // would be unexpressible. Compiled bundles are unaffected — the parity
112
- // gate asserts no compiled message is empty.
113
- returnEmptyString: true,
114
- ...(opts.onMissingKey === undefined
115
- ? {}
116
- : {
117
- saveMissing: true,
118
- missingKeyHandler: (lngs, ns, key) => {
119
- for (const lng of lngs)
120
- opts.onMissingKey?.(lng, ns, key);
121
- },
122
- }),
123
- });
124
- // A language switch changes what every key resolves to, so it is a revision
125
- // change like any other. Without this, only components that
126
- // consume `I18nProvider`'s context re-render — and the dashboard's ~2.3k
127
- // call sites use a module-level `t()` that is not a hook, so already-painted
128
- // strings kept the OUTGOING language until a reload while `dir` flipped
129
- // immediately. That produced a mirrored English UI, and it is the defect
130
- // `apps/e2e/tests/rtl-locale.spec.ts` used to pin as a known bug.
131
- instance.on('languageChanged', () => {
132
- bumpI18nRevision();
133
- });
134
- return instance;
135
- }
136
- /**
137
- * Preloaded live locale switch: the target locale's namespaces load BEFORE
138
- * `changeLanguage` fires, so the UI never renders a half-translated frame
139
- * while `dir`/`lang` flip.
140
- *
141
- * `loadLanguages` covers whatever is in `options.ns` at the time, which is the
142
- * eager set plus any deferred namespace already pulled in — so switching
143
- * locale inside the Studio reloads the Studio's text, and switching locale
144
- * outside it does not fetch a console the user has not opened.
145
- */
146
- export async function switchLocale(instance, locale) {
147
- const { tag } = localeEntry(locale);
148
- if (instance.language === tag)
149
- return;
150
- await instance.loadLanguages(tag);
151
- await instance.changeLanguage(tag);
29
+ return buildI18n(opts, { english, namespaces: EAGER_NAMESPACES, defaultNamespace: 'common' });
152
30
  }
153
31
  //# sourceMappingURL=create-i18n.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-i18n.js","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;;;;;;;GAaG;AACH,OAAO,OAAO,EAAE,EAAmE,MAAM,SAAS,CAAC;AACnG,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,YAAY,EAAiB,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAuC,MAAM,2BAA2B,CAAC;AA4BlG,SAAS,WAAW,CAAC,IAAkB;IACrC,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI;YACF,oDAAoD;QACtD,CAAC;QACD,IAAI,CAAC,QAAgB,EAAE,SAAiB,EAAE,QAAsB;YAC9D,KAAK,OAAO,CAAC,OAAO,EAAE;iBACnB,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,QAAQ,EAAE,SAAsB,CAAC,CAAC;iBAC9D,IAAI,CACH,CAAC,MAAM,EAAE,EAAE;gBACT,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBACpB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBACnB,OAAO;gBACT,CAAC;gBACD,MAAM,IAAI,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAE,MAAsC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC5F,sDAAsD;gBACtD,8DAA8D;gBAC9D,iEAAiE;gBACjE,+DAA+D;gBAC/D,4DAA4D;gBAC5D,gEAAgE;gBAChE,8DAA8D;gBAC9D,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,IAAI,CAAU,CAAC,CAAC;YACjD,CAAC,EACD,GAAG,EAAE;gBACH,oEAAoE;gBACpE,2CAA2C;gBAC3C,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACrB,CAAC,CACF,CAAC;QACN,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAEtC,oDAAoD;IACpD,oEAAoE;IACpE,0EAA0E;IAC1E,0EAA0E;IAC1E,gEAAgE;IAChE,kEAAkE;IAClE,oEAAoE;IACpE,qEAAqE;IACrE,MAAM,SAAS,GAAa;QAC1B,OAAO,EAAE,eAAe,CAAC,WAAW,CAAqB;KAC1D,CAAC;IACF,gGAAgG;IAChG,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS,CAAC,OAAO,CAAE,CAAC,EAAE,CAAC,GAAG,EAAE,GAAI,SAAS,CAAC,OAAO,CAAE,CAAC,EAAE,CAAY,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;IACtH,CAAC;IACD,KAAK,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC;QACvE,IAAI,IAAI,KAAK,SAAS;YAAE,SAAS;QACjC,MAAM,MAAM,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC;QAC/C,KAAK,MAAM,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YAChD,sEAAsE;YACtE,8DAA8D;YAC9D,IAAI,MAAM,KAAK,SAAS;gBAAG,MAAkC,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC;IAC9B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAE9E,MAAM,QAAQ,CAAC,IAAI,CAAC;QAClB,GAAG,EAAE,GAAG;QACR,WAAW,EAAE,OAAO;QACpB,yEAAyE;QACzE,+DAA+D;QAC/D,qDAAqD;QACrD,EAAE,EAAE,CAAC,GAAG,gBAAgB,CAAC;QACzB,SAAS,EAAE,QAAQ;QACnB,SAAS;QACT,kEAAkE;QAClE,uBAAuB,EAAE,IAAI;QAC7B,yCAAyC;QACzC,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;QACrC,UAAU,EAAE,KAAK;QACjB,6DAA6D;QAC7D,4DAA4D;QAC5D,uEAAuE;QACvE,uEAAuE;QACvE,6CAA6C;QAC7C,iBAAiB,EAAE,IAAI;QACvB,GAAG,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS;YACjC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,WAAW,EAAE,IAAI;gBACjB,iBAAiB,EAAE,CAAC,IAAuB,EAAE,EAAU,EAAE,GAAW,EAAQ,EAAE;oBAC5E,KAAK,MAAM,GAAG,IAAI,IAAI;wBAAE,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;gBAC5D,CAAC;aACF,CAAC;KACP,CAAC,CAAC;IAEH,4EAA4E;IAC5E,4DAA4D;IAC5D,yEAAyE;IACzE,6EAA6E;IAC7E,wEAAwE;IACxE,yEAAyE;IACzE,kEAAkE;IAClE,QAAQ,CAAC,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAClC,gBAAgB,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAsB,EAAE,MAAgB;IACzE,MAAM,EAAE,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC,IAAI,QAAQ,CAAC,QAAQ,KAAK,GAAG;QAAE,OAAO;IACtC,MAAM,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"create-i18n.js","sourceRoot":"","sources":["../src/create-i18n.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;;;GAOG;AACH,OAAO,EAAE,SAAS,EAA6C,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAuC,MAAM,2BAA2B,CAAC;AAClG,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAuB;IACtD,MAAM,OAAO,GAA+C,EAAE,GAAG,WAAW,EAAE,CAAC;IAC/E,gGAAgG;IAChG,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAU,EAAE,CAAC;QAC3C,MAAM,KAAK,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAI,OAAO,CAAC,EAAE,CAAY,EAAE,GAAG,KAAK,EAAoB,CAAC;IAC/F,CAAC;IACD,OAAO,SAAS,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;AAChG,CAAC"}
package/dist/page.d.ts ADDED
@@ -0,0 +1,19 @@
1
+ /**
2
+ * For a page with its own small vocabulary and nothing of the dashboard's
3
+ * (the customer's pay page): an instance started with ONE namespace, whose
4
+ * English the caller bundles itself. Importing this entry never reaches the
5
+ * dashboard's bundles.
6
+ */
7
+ import { type BundleLoader, type I18nInstance } from './create-i18n-core.js';
8
+ import type { LocaleId } from './locales.js';
9
+ import type { Namespace, ResourceBundle } from './resources/namespaces.js';
10
+ export { switchLocale } from './create-i18n-core.js';
11
+ export { localeFromTag, type LocaleId } from './locales.js';
12
+ export type { BundleLoader, I18nInstance } from './create-i18n-core.js';
13
+ export declare function createPageI18n(opts: {
14
+ locale: LocaleId;
15
+ namespace: Namespace;
16
+ english: ResourceBundle;
17
+ loadBundle: BundleLoader;
18
+ }): Promise<I18nInstance>;
19
+ //# sourceMappingURL=page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.d.ts","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AACH,OAAO,EAAa,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAE3E,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAExE,wBAAsB,cAAc,CAAC,IAAI,EAAE;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,SAAS,CAAC;IAAC,OAAO,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,YAAY,CAAA;CAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAE/J"}
package/dist/page.js ADDED
@@ -0,0 +1,14 @@
1
+ // SPDX-License-Identifier: AGPL-3.0-only
2
+ /**
3
+ * For a page with its own small vocabulary and nothing of the dashboard's
4
+ * (the customer's pay page): an instance started with ONE namespace, whose
5
+ * English the caller bundles itself. Importing this entry never reaches the
6
+ * dashboard's bundles.
7
+ */
8
+ import { buildI18n } from './create-i18n-core.js';
9
+ export { switchLocale } from './create-i18n-core.js';
10
+ export { localeFromTag } from './locales.js';
11
+ export async function createPageI18n(opts) {
12
+ return buildI18n({ locale: opts.locale, loadBundle: opts.loadBundle }, { english: { [opts.namespace]: opts.english }, namespaces: [opts.namespace], defaultNamespace: opts.namespace });
13
+ }
14
+ //# sourceMappingURL=page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC;;;;;GAKG;AACH,OAAO,EAAE,SAAS,EAAwC,MAAM,uBAAuB,CAAC;AAIxF,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAiB,MAAM,cAAc,CAAC;AAG5D,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAmG;IACtI,OAAO,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,gBAAgB,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;AAC1L,CAAC"}
@@ -162,6 +162,7 @@ declare const _default: {
162
162
  readonly changelog: "ما الجديد";
163
163
  readonly signOut: "تسجيل الخروج";
164
164
  readonly toggleSidebar: "إظهار/إخفاء الشريط الجانبي";
165
+ readonly payments: "المدفوعات";
165
166
  };
166
167
  readonly palette: {
167
168
  readonly dialog: "لوحة الأوامر";
@@ -1123,22 +1124,6 @@ declare const _default: {
1123
1124
  };
1124
1125
  };
1125
1126
  readonly desktop: {
1126
- readonly menu: {
1127
- readonly file: "ملف";
1128
- readonly fileNewDatabase: "قاعدة بيانات محلية جديدة…";
1129
- readonly fileOpenSqlite: "فتح ملف SQLite…";
1130
- readonly fileBackupNow: "النسخ الاحتياطي الآن…";
1131
- readonly fileRestore: "الاستعادة من نسخة احتياطية…";
1132
- readonly edit: "تحرير";
1133
- readonly view: "عرض";
1134
- readonly window: "نافذة";
1135
- readonly help: "مساعدة";
1136
- readonly helpDocs: "مستندات Adminium";
1137
- readonly helpShortcuts: "اختصارات لوحة المفاتيح";
1138
- readonly helpLogs: "عرض السجلات";
1139
- readonly helpCheckForUpdates: "التحقق من وجود تحديثات…";
1140
- readonly helpAbout: "حول Adminium";
1141
- };
1142
1127
  readonly settings: {
1143
1128
  readonly explainer: "تنطبق هذه الإعدادات على تطبيق Adminium على هذا الكمبيوتر فقط، وتُحفَظ على هذا الجهاز لا في مساحة العمل.";
1144
1129
  readonly title: "إعدادات سطح المكتب";
@@ -1578,6 +1563,9 @@ declare const _default: {
1578
1563
  readonly schema: "المخطط";
1579
1564
  readonly settings: "الإعدادات";
1580
1565
  readonly system: "النظام";
1566
+ readonly addOn: "الإضافات";
1567
+ readonly app: "التطبيقات";
1568
+ readonly payments: "المدفوعات";
1581
1569
  };
1582
1570
  readonly column: {
1583
1571
  readonly action: "الإجراء";
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/resources/ar-eg/common.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBAu3DW"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../src/resources/ar-eg/common.ts"],"names":[],"mappings":"AACA;;;;;;;;GAQG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACH,wBA22DW"}
@@ -162,7 +162,8 @@ export default {
162
162
  "help": "مركز المساعدة",
163
163
  "changelog": "ما الجديد",
164
164
  "signOut": "تسجيل الخروج",
165
- "toggleSidebar": "إظهار/إخفاء الشريط الجانبي"
165
+ "toggleSidebar": "إظهار/إخفاء الشريط الجانبي",
166
+ "payments": "المدفوعات"
166
167
  },
167
168
  "palette": {
168
169
  "dialog": "لوحة الأوامر",
@@ -1124,22 +1125,6 @@ export default {
1124
1125
  }
1125
1126
  },
1126
1127
  "desktop": {
1127
- "menu": {
1128
- "file": "ملف",
1129
- "fileNewDatabase": "قاعدة بيانات محلية جديدة…",
1130
- "fileOpenSqlite": "فتح ملف SQLite…",
1131
- "fileBackupNow": "النسخ الاحتياطي الآن…",
1132
- "fileRestore": "الاستعادة من نسخة احتياطية…",
1133
- "edit": "تحرير",
1134
- "view": "عرض",
1135
- "window": "نافذة",
1136
- "help": "مساعدة",
1137
- "helpDocs": "مستندات Adminium",
1138
- "helpShortcuts": "اختصارات لوحة المفاتيح",
1139
- "helpLogs": "عرض السجلات",
1140
- "helpCheckForUpdates": "التحقق من وجود تحديثات…",
1141
- "helpAbout": "حول Adminium"
1142
- },
1143
1128
  "settings": {
1144
1129
  "explainer": "تنطبق هذه الإعدادات على تطبيق Adminium على هذا الكمبيوتر فقط، وتُحفَظ على هذا الجهاز لا في مساحة العمل.",
1145
1130
  "title": "إعدادات سطح المكتب"
@@ -1578,7 +1563,10 @@ export default {
1578
1563
  "rbac": "الأدوار والصلاحيات",
1579
1564
  "schema": "المخطط",
1580
1565
  "settings": "الإعدادات",
1581
- "system": "النظام"
1566
+ "system": "النظام",
1567
+ "addOn": "الإضافات",
1568
+ "app": "التطبيقات",
1569
+ "payments": "المدفوعات"
1582
1570
  },
1583
1571
  "column": {
1584
1572
  "action": "الإجراء",