@abtnode/blocklet-services 1.16.54-beta-20251016-050817-2fc632b8 → 1.16.54-beta-20251017-133309-7d40faa6

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 (222) hide show
  1. package/api/emails/_components/asset.js +7 -2
  2. package/api/emails/_components/attachments.js +1 -1
  3. package/dist/assets/{AdapterDayjs-DyE9ImrK.js → AdapterDayjs-T-a0V_gA.js} +1 -1
  4. package/dist/assets/{Google-ZJmTt04Y.js → Google-BXi1gq6W.js} +1 -1
  5. package/dist/assets/{access-control-C5AwSG3T.js → access-control-m0S6yUo8.js} +1 -1
  6. package/dist/assets/{actions-C4-lIUPY.js → actions-C0hEY5iN.js} +1 -1
  7. package/dist/assets/{add-component-core-CrZWbFmf.js → add-component-core-BksM6C--.js} +17 -17
  8. package/dist/assets/{add-resource-Brh4F6D2.js → add-resource-CTnW2X8N.js} +1 -1
  9. package/dist/assets/{addon-DMW6BcQH.js → addon-CPEWVDQ1.js} +1 -1
  10. package/dist/assets/{advanced-ykwSXzlQ.js → advanced-BQT157yk.js} +2 -2
  11. package/dist/assets/{aigne-DmDL-WLj.js → aigne-CfRlP6kv.js} +1 -1
  12. package/dist/assets/api-C7Kyuutl.js +1 -0
  13. package/dist/assets/{appearance-CwaUUdyp.js → appearance-BddR68-e.js} +1 -1
  14. package/dist/assets/{ar-Ge3t6oI2.js → ar-BQm9lQ4M.js} +1 -1
  15. package/dist/assets/{arrow-down.svg-D3B8bxxx.js → arrow-down.svg-UHWRwrOh.js} +1 -1
  16. package/dist/assets/audit-logs-BzqpNyz0.js +35 -0
  17. package/dist/assets/{authorize-CmneXxos.js → authorize-D9fC-nXh.js} +1 -1
  18. package/dist/assets/{base-chart-C_jLgGFD.js → base-chart-CSJD1faI.js} +1 -1
  19. package/dist/assets/{base32-Cg02gOuu.js → base32-iOXf3Dyk.js} +1 -1
  20. package/dist/assets/{bind-account-B_UMGXib.js → bind-account-DhXOE_rG.js} +1 -1
  21. package/dist/assets/branding-BQslHJ3k.js +1 -0
  22. package/dist/assets/{branding-DETOdgiW.js → branding-B_hljukd.js} +1 -1
  23. package/dist/assets/{branding-B_eCdYJK.js → branding-PrRXFhYD.js} +3 -3
  24. package/dist/assets/{bundle-avatar-BFaxogKz.js → bundle-avatar-B6pd4JA-.js} +1 -1
  25. package/dist/assets/button-2y9b8ibp.js +1 -0
  26. package/dist/assets/{click-to-copy-CK42VmRr.js → click-to-copy-PW3ieO34.js} +1 -1
  27. package/dist/assets/{cloneDeep-gpb_g13N.js → cloneDeep-D3tVGEyF.js} +1 -1
  28. package/dist/assets/{collapse-D7GlSZQp.js → collapse-Cc8IqFzl.js} +1 -1
  29. package/dist/assets/{complete-Bqi3d0V1.js → complete-BpTFnpTf.js} +2 -2
  30. package/dist/assets/{component-CSPqPsOF.js → component-abZy96kt.js} +2 -2
  31. package/dist/assets/{config-CPdtVTio.js → config-B-efbAjK.js} +1 -1
  32. package/dist/assets/{config-BWSyA18z.js → config-CBb_1lBq.js} +5 -5
  33. package/dist/assets/{config-BHZS65kz.js → config-CRxkGlLw.js} +1 -1
  34. package/dist/assets/{config-navigation-BFsrGucq.js → config-navigation-V-jkhCe0.js} +3 -3
  35. package/dist/assets/{config-space-CSl6D7xo.js → config-space-uoEgpVj0.js} +1 -1
  36. package/dist/assets/{confirm-CEAKWDZJ.js → confirm-2zLPRflS.js} +1 -1
  37. package/dist/assets/{connect-FvriLilq.js → connect-Bg2fkKdJ.js} +1 -1
  38. package/dist/assets/{connect-BVXqic92.js → connect-CR6YXL6l.js} +1 -1
  39. package/dist/assets/{connect-to-dZwJX0bt.js → connect-to-DVzVPrNg.js} +1 -1
  40. package/dist/assets/{content-layout-W7JDm8iO.js → content-layout-DJL10aJT.js} +1 -1
  41. package/dist/assets/{create-passport-svg-BsR3hKFq.js → create-passport-svg-G2i9OoEB.js} +1 -1
  42. package/dist/assets/{createClass-B4I2IV47.js → createClass-Bf8maCzZ.js} +1 -1
  43. package/dist/assets/{dashboard-DyYLnek8.js → dashboard-DvbW_coF.js} +2 -2
  44. package/dist/assets/{de-CbARTvf4.js → de-D0uPENSq.js} +1 -1
  45. package/dist/assets/{delete-confirm-DpKJ9gtf.js → delete-confirm-tJr-kQGY.js} +1 -1
  46. package/dist/assets/{did-address-BQL5Zxlr.js → did-address-yNLicvuz.js} +1 -1
  47. package/dist/assets/{domain-action-card-CRdL2PFv.js → domain-action-card-oKAg2vcg.js} +2 -2
  48. package/dist/assets/{domain-Bq75ZuOm.js → domain-orOrS-66.js} +1 -1
  49. package/dist/assets/domains-CIKaHlMa.js +1 -0
  50. package/dist/assets/{email-OlQWpbtF.js → email-Bw5lhga1.js} +1 -1
  51. package/dist/assets/{empty-spinner-sNq-0DF5.js → empty-spinner-Dqkt-AHg.js} +1 -1
  52. package/dist/assets/engine-DrB5N6Vq.js +1 -0
  53. package/dist/assets/{es-CaCbzATO.js → es-Dh4_UfCu.js} +1 -1
  54. package/dist/assets/{exchange-passport-DK4-g9my.js → exchange-passport-D5N7TuyP.js} +1 -1
  55. package/dist/assets/{form-C5dLovtO.js → form-D9ZwMxUQ.js} +1 -1
  56. package/dist/assets/{form-text-input-AIMlcRaM.js → form-text-input-BdGN_cNn.js} +1 -1
  57. package/dist/assets/{form-wrapper-DINLdpTN.js → form-wrapper-SZH1FnTd.js} +1 -1
  58. package/dist/assets/{fr-B3yjKUFH.js → fr-CzZWQkiT.js} +1 -1
  59. package/dist/assets/{fuel-DkqmEB8D.js → fuel-DRu4UcZ3.js} +1 -1
  60. package/dist/assets/{gen-access-key-BnCg2Wu1.js → gen-access-key-Cg1WeFbg.js} +1 -1
  61. package/dist/assets/{gen-simple-access-key-zOQbFtZ8.js → gen-simple-access-key-DPQLOBVf.js} +1 -1
  62. package/dist/assets/get-safe-url-BEmXir96.js +1 -0
  63. package/dist/assets/{hi-q4mhHiIl.js → hi-Do9VCuRi.js} +1 -1
  64. package/dist/assets/{home-DTXdAvXT.js → home-drsp3cTN.js} +1 -1
  65. package/dist/assets/{id-DTf7aVH8.js → id-Dhhrveu9.js} +1 -1
  66. package/dist/assets/{iframe-DAoobOBi.js → iframe-D7RMzvnk.js} +1 -1
  67. package/dist/assets/{index-DHQkab_n.js → index--FkaQ0Dk.js} +1 -1
  68. package/dist/assets/index--OvsXAyb.js +1 -0
  69. package/dist/assets/{index-DNGdj2R4.js → index-4_vQ0fa1.js} +4 -4
  70. package/dist/assets/{index-IGBGBXd_.js → index-B31Z5yXU.js} +1 -1
  71. package/dist/assets/index-B486VukG.js +1 -0
  72. package/dist/assets/{index-DeVDiUjo.js → index-B80ObPIt.js} +1 -1
  73. package/dist/assets/index-BJkTWRHF.js +281 -0
  74. package/dist/assets/{index-D_vhPpT2.js → index-BMkkWtK-.js} +1 -1
  75. package/dist/assets/index-BPz1W1F5.js +7 -0
  76. package/dist/assets/{index-D6Y3sCzN.js → index-BTb5QwNU.js} +2 -2
  77. package/dist/assets/{index-BJrVQ6ch.js → index-B_9ypeKS.js} +1 -1
  78. package/dist/assets/{index-3yzleS_1.js → index-BnPTSmJZ.js} +87 -87
  79. package/dist/assets/index-Bv1DYw0_.js +55 -0
  80. package/dist/assets/{index-D1thq8eN.js → index-BwxEDC7M.js} +6 -6
  81. package/dist/assets/{index-VySXxf4w.js → index-CAMegfIe.js} +1 -1
  82. package/dist/assets/{index-ve-p7nSZ.js → index-CMOR5eza.js} +5 -5
  83. package/dist/assets/index-CR7OYm8K.js +120 -0
  84. package/dist/assets/{index-KpZGUssm.js → index-CXs5RZ6g.js} +1 -1
  85. package/dist/assets/{index-Bgt2qHLn.js → index-CcoIHAI8.js} +4 -4
  86. package/dist/assets/{index-Cd_Gml9C.js → index-CjUY4wYp.js} +1 -1
  87. package/dist/assets/{index-DJj8GmQS.js → index-Cs8-XzFL.js} +1 -1
  88. package/dist/assets/{index-BcGECSaf.js → index-D0c5zNE-.js} +1 -1
  89. package/dist/assets/{index-C80JxCSn.js → index-D5jPhzpV.js} +1 -1
  90. package/dist/assets/{index-Cs_I9KFa.js → index-DC4JoVqO.js} +1 -1
  91. package/dist/assets/{index-DlRa8Zeh.js → index-DD8Xcc3x.js} +1 -1
  92. package/dist/assets/index-DJgF8q_o.js +124 -0
  93. package/dist/assets/{index-B6a6aopU.js → index-DJhcYi8s.js} +11 -11
  94. package/dist/assets/{index-DX3L95vz.js → index-DKuLdlGi.js} +1 -1
  95. package/dist/assets/{index-rQAVknkX.js → index-DVsdJqbi.js} +1 -1
  96. package/dist/assets/{index-Cr5RxnHu.js → index-DacQww-t.js} +1 -1
  97. package/dist/assets/{index-iOD1kOar.js → index-DdeHXxqD.js} +4 -4
  98. package/dist/assets/{index-BdHbrnpK.js → index-Dj7hvho1.js} +1 -1
  99. package/dist/assets/{index-D_HqsEfj.js → index-Dz7IF3dR.js} +1 -1
  100. package/dist/assets/{index-DFceGCP0.js → index-Z2OlxmBy.js} +1 -1
  101. package/dist/assets/{invitation-P1aXUnIO.js → invitation-dxOWwXhI.js} +1 -1
  102. package/dist/assets/{invitations-dPkgiFPr.js → invitations-fxhgBZ7v.js} +1 -1
  103. package/dist/assets/{invite-Bz99qCDF.js → invite-BUfTFpm3.js} +1 -1
  104. package/dist/assets/{isURL-DYsELTMk.js → isURL-BWdci4BV.js} +2 -2
  105. package/dist/assets/{issue-passport-DPyxNFLD.js → issue-passport-CGjo4nFE.js} +1 -1
  106. package/dist/assets/{item-B1UaStjk.js → item-CpRxSfFl.js} +1 -1
  107. package/dist/assets/{ja-Csh_XwzF.js → ja-B70UYq5X.js} +1 -1
  108. package/dist/assets/{ko-xiNTwgO9.js → ko-C7TZwmXC.js} +1 -1
  109. package/dist/assets/{landing-page-CkVnGimh.js → landing-page-BeMOLJet.js} +1 -1
  110. package/dist/assets/{launch-result-message-Dt-T7zmz.js → launch-result-message-DZJ76kCs.js} +1 -1
  111. package/dist/assets/{layout-fFNOz6Xe.js → layout-DSuoHJe3.js} +1 -1
  112. package/dist/assets/list-DA_a9DhC.js +103 -0
  113. package/dist/assets/list-gCQikTBu.js +2 -0
  114. package/dist/assets/{list-header-CjohGZ9B.js → list-header-BNFs7V0b.js} +1 -1
  115. package/dist/assets/localization-NenbMmXN.js +1 -0
  116. package/dist/assets/{log-lPrpnnPZ.js → log-BRV1BCFu.js} +1 -1
  117. package/dist/assets/logger-CHXN98LU.js +1 -0
  118. package/dist/assets/{login-63olb_gZ.js → login-DP97VuHR.js} +1 -1
  119. package/dist/assets/{login-oauth-callback-DebmT1Db.js → login-oauth-callback-C2DR5bOf.js} +1 -1
  120. package/dist/assets/{logo-uploader-3OpHGD1n.js → logo-uploader-BNfVMS9b.js} +1 -1
  121. package/dist/assets/{lost-passport-xCmWuuxC.js → lost-passport-BdOj7Qyw.js} +3 -3
  122. package/dist/assets/{observability-B458LeIE.js → observability-BjKI3tFt.js} +1 -1
  123. package/dist/assets/{omit-DdfLLBNW.js → omit-CxhCIYKY.js} +1 -1
  124. package/dist/assets/{open-window-CzYfI7l7.js → open-window-Dm9n80Az.js} +1 -1
  125. package/dist/assets/{over-due-invoice-payment-C5fynimj.js → over-due-invoice-payment-Cg-G2W1o.js} +1 -1
  126. package/dist/assets/{overview-BFzvEbcq.js → overview-BFV7mugn.js} +2 -2
  127. package/dist/assets/{page-header-gosgJ3fX.js → page-header-xpG0yfsa.js} +1 -1
  128. package/dist/assets/passport-CQWKOko9.js +1 -0
  129. package/dist/assets/passport-item-ZjtfZLBd.js +1 -0
  130. package/dist/assets/{permission-UeJPGiMm.js → permission-BZsLoL-d.js} +1 -1
  131. package/dist/assets/{playground-_1Dj8J_h.js → playground-DKMlueFr.js} +1 -1
  132. package/dist/assets/preferences-C5BaFHlg.js +1 -0
  133. package/dist/assets/profile-embed-HIW9YGAc.js +1 -0
  134. package/dist/assets/{pt-BvcG4R7B.js → pt-DObJ_ADK.js} +1 -1
  135. package/dist/assets/publish-resource-CG--uFPX.js +1 -0
  136. package/dist/assets/{react-beautiful-dnd.esm-CIwtis6a.js → react-beautiful-dnd.esm-DG8qQeEC.js} +1 -1
  137. package/dist/assets/{react-stripe.esm-omsK4b05.js → react-stripe.esm-BV6kfV2w.js} +1 -1
  138. package/dist/assets/{required-BPzIdi1N.js → required-C9DLcn9T.js} +1 -1
  139. package/dist/assets/revoke.svg-CmffMlcP.js +1 -0
  140. package/dist/assets/{ru-DzUPRLmr.js → ru-nYDmEUmY.js} +1 -1
  141. package/dist/assets/{runtime-iwxdTEke.js → runtime-tvucPK2o.js} +1 -1
  142. package/dist/assets/{sanitize-CEXE1rEu.js → sanitize-m8Fu6XGD.js} +1 -1
  143. package/dist/assets/sdk-BGPH_Nn6.js +1 -0
  144. package/dist/assets/{section-DOw43pby.js → section-MSasF4Cx.js} +1 -1
  145. package/dist/assets/{security-D4Sx6wQO.js → security-DTZHnwsj.js} +6 -6
  146. package/dist/assets/{session-Dnp_ufkx.js → session-ByI8mrad.js} +1 -1
  147. package/dist/assets/{setup-DpBiTcjv.js → setup-BUodqoBL.js} +1 -1
  148. package/dist/assets/{shorten-label-C-X_7vr2.js → shorten-label-dRmYvYJ7.js} +1 -1
  149. package/dist/assets/simple-select-C-ApYkD4.js +1 -0
  150. package/dist/assets/{spaces-Bu7-7u79.js → spaces-Bqe6pnFj.js} +1 -1
  151. package/dist/assets/{start-B1qawsPb.js → start-DCOjCV4F.js} +1 -1
  152. package/dist/assets/{starting-progress-BfM3wNuj.js → starting-progress-_tZGZM6B.js} +1 -1
  153. package/dist/assets/{status-LEG00uGL.js → status-DAIZaCUT.js} +1 -1
  154. package/dist/assets/{step-actions-BzwezgI2.js → step-actions-D_gKO0Cw.js} +1 -1
  155. package/dist/assets/{studio-Bk9PCaeS.js → studio-DCdXmXUq.js} +1 -1
  156. package/dist/assets/{switch-control-CRxlGq2g.js → switch-control-Ddqhf44I.js} +1 -1
  157. package/dist/assets/{table-tips-BMq3WO_p.js → table-tips-BUZ1mtAq.js} +1 -1
  158. package/dist/assets/{team-DmYSbFMF.js → team-CeANUXFV.js} +7 -7
  159. package/dist/assets/{th-BmW1qKpZ.js → th-DMcUw_9_.js} +1 -1
  160. package/dist/assets/{traffic-CzxoP9Vj.js → traffic-CVF4T2v4.js} +1 -1
  161. package/dist/assets/{transfer-CUe_bnhh.js → transfer-B4X6jlUA.js} +1 -1
  162. package/dist/assets/ua-parser-DP5omx3I.js +1 -0
  163. package/dist/assets/{unsubscribe-5Z1xcJ3T.js → unsubscribe-xvziXmXe.js} +1 -1
  164. package/dist/assets/{use-app-logo-0uziDh86.js → use-app-logo-Cp60-jm5.js} +1 -1
  165. package/dist/assets/{use-mobile-DLnLSQQq.js → use-mobile-Bjbo_Gou.js} +1 -1
  166. package/dist/assets/{use-mobile-Db5FIl07.js → use-mobile-CjZIGfWP.js} +1 -1
  167. package/dist/assets/{use-server-logo-CFlVReBS.js → use-server-logo-uMEEt675.js} +1 -1
  168. package/dist/assets/{use-window-close-CrHmRyVV.js → use-window-close-Coe8kRfa.js} +1 -1
  169. package/dist/assets/{useAsync-1_z8P8M4.js → useAsync-B9mMAdx5.js} +1 -1
  170. package/dist/assets/{useAsync-BKYfrNw7.js → useAsync-tu8lmT7w.js} +1 -1
  171. package/dist/assets/{useAsyncRetry-Dyo5t1bq.js → useAsyncRetry-n96jNDlD.js} +1 -1
  172. package/dist/assets/{useLocalStorage-Be_1V0gr.js → useLocalStorage-CPNhajTc.js} +1 -1
  173. package/dist/assets/user-center-CdyILvwP.js +126 -0
  174. package/dist/assets/user-follower-Brdja1Pl.js +32 -0
  175. package/dist/assets/{util-DXaZWduO.js → util-cUwto1hL.js} +1 -1
  176. package/dist/assets/{util-CQfGbjyT.js → util-d0fh6S9R.js} +1 -1
  177. package/dist/assets/{vendor-arcblock-DGOH9a3F.js → vendor-arcblock-BzYItNIN.js} +1 -1
  178. package/dist/assets/{vendor-hooks-DmThWyyG.js → vendor-hooks-tpeT8a0P.js} +2 -2
  179. package/dist/assets/{vendor-mui-core-BFPsXaTR.js → vendor-mui-core-BPcN1m8_.js} +1 -1
  180. package/dist/assets/{vendor-mui-x-C6iZOJbV.js → vendor-mui-x-DEgOZXst.js} +1 -1
  181. package/dist/assets/{vendor-utils-OrZFrHBP.js → vendor-utils-COYaMdo5.js} +1 -1
  182. package/dist/assets/{vendor-ux-CE4sOH7O.js → vendor-ux-D_B1Y7iC.js} +126 -133
  183. package/dist/assets/{vi-BPU54RQW.js → vi-B73oWQBC.js} +1 -1
  184. package/dist/assets/{wait-connect-Rle27g9O.js → wait-connect-B4jNvmkx.js} +1 -1
  185. package/dist/assets/{wizard-CewJTR0V.js → wizard-BZNmVb4z.js} +1 -1
  186. package/dist/assets/{wizard-components-B4yvBYZF.js → wizard-components-C5WSLWm-.js} +1 -1
  187. package/dist/assets/wrap-locale-CsR2MOap.js +1 -0
  188. package/dist/assets/{zh-Bg-a-bz5.js → zh-BsfsxdYb.js} +1 -1
  189. package/dist/assets/{zh-WrFfMVyM.js → zh-DCABA61W.js} +1 -1
  190. package/dist/assets/{zh-tw-DjWFpq-W.js → zh-tw-M_0Y4wmR.js} +1 -1
  191. package/dist/index.html +1 -1
  192. package/dist/service-worker.js +1 -1
  193. package/package.json +34 -34
  194. package/dist/assets/api-txzyyizM.js +0 -1
  195. package/dist/assets/audit-logs-eJR1v94e.js +0 -35
  196. package/dist/assets/branding-CHRz3wuZ.js +0 -1
  197. package/dist/assets/button-CaqBEwnu.js +0 -1
  198. package/dist/assets/domains-BiIZZN7p.js +0 -1
  199. package/dist/assets/engine-B1U2TY7M.js +0 -1
  200. package/dist/assets/get-safe-url-3Xj-tgXY.js +0 -1
  201. package/dist/assets/index-CDCcuLh3.js +0 -7
  202. package/dist/assets/index-CZp06HHE.js +0 -281
  203. package/dist/assets/index-D9QTZSnh.js +0 -1
  204. package/dist/assets/index-D_s4QOu7.js +0 -1
  205. package/dist/assets/index-Dfmjh5-5.js +0 -124
  206. package/dist/assets/index-LeqLm9hN.js +0 -55
  207. package/dist/assets/index-RD-gFG7U.js +0 -113
  208. package/dist/assets/list-C-9EwvIL.js +0 -2
  209. package/dist/assets/list-CX2Q1hbc.js +0 -103
  210. package/dist/assets/localization-DQioZq4I.js +0 -1
  211. package/dist/assets/logger-DkBs7Soy.js +0 -1
  212. package/dist/assets/passport-BLmrTDdo.js +0 -1
  213. package/dist/assets/passport-item-CBB6usyJ.js +0 -1
  214. package/dist/assets/preferences-Da8NATLw.js +0 -1
  215. package/dist/assets/profile-embed-9LLnCulK.js +0 -1
  216. package/dist/assets/publish-resource-Chyv1Trw.js +0 -1
  217. package/dist/assets/sdk-D4xzRwM9.js +0 -1
  218. package/dist/assets/simple-select-Bg4XC1E_.js +0 -1
  219. package/dist/assets/user-center-u6FpYGow.js +0 -126
  220. package/dist/assets/user-follower-CyGK-1so.js +0 -32
  221. package/dist/assets/user-sessions-4qrRIOb8.js +0 -1
  222. package/dist/assets/wrap-locale-qW2Nj5Kt.js +0 -1
@@ -1,4 +1,4 @@
1
- const n={setup:{connect:{title:"Thiết lập máy chủ Blocklet",scan:"Sử dụng các phương pháp sau để trở thành chủ sở hữu của máy chủ này",confirm:"Vui lòng xem xét thao tác này trên Ví DID của bạn",success:"Tài khoản của bạn đã kết nối với máy chủ này"},keyPair:{title:"Đưa ra KeyPair",scan:"Kết nối ví DID của bạn để tạo cặp khóa cho ứng dụng này",confirm:"Xem lại hoạt động này trên ví DID của bạn",success:"Cặp khóa của bạn được lưu trữ một cách an toàn"},verify:{title:"Yêu cầu Chứng chỉ Sở hữu",scan:"Kết nối Ví DID của bạn để cung cấp các thông tin chứng thực sở hữu",confirm:"Xem lại thao tác này trên Ví DID của bạn",success:"Tài khoản của bạn đã kết nối với máy chủ này"},accept:{title:"Chấp nhận chứng chỉ sở hữu máy chủ",scan:"Kết nối ví DID của bạn để cung cấp các chứng chỉ sở hữu",confirm:"Xem lại thao tác này trên ví DID của bạn",success:"Tài khoản của bạn được kết nối với máy chủ này"},title:"Cài đặt máy chủ Blocklet",steps:{eula:"Hợp đồng Cấp phép Người dùng cuối",eulaFooter:"Tôi đã đọc và đồng ý với các điều khoản của EULA",connect:"Kết nối Ví DID Chủ sở hữu",verify:"Xác minh Sở hữu",basicSettings:"Cài đặt cơ bản",launchApp:"Khởi chạy ứng dụng",complete:"Hoàn thành"},congratulation:"Xin chúc mừng! Máy chủ Blocklet của bạn đã được bảo mật và sẵn sàng sử dụng",redirectButton:"Đưa tôi đến bảng điều khiển!"},login:{loginTo:"Kết nối với",description:"Chỉ chủ sở hữu máy chủ và thành viên được phê duyệt mới có thể truy cập bảng điều khiển.",switchDid:{title:"Chuyển Tài Khoản",scan:"Sử dụng các phương pháp sau để thêm tài khoản",confirm:"Xác nhận chuyển đổi trong ví DID của bạn",success:"Chuyển đổi thành công"},switchSpecifiedDid:{title:"Chuyển tài khoản",scan:"Bạn cần chuyển đổi DID thành {did} để hoàn thành các hành động sau",confirm:"Xác nhận chuyển đổi trong Ví của bạn",success:"Chuyển đổi thành công"},connect:{title:"Kết nối",scan:"Chỉ chủ sở hữu máy chủ và các thành viên được phê duyệt mới có thể truy cập bảng điều khiển",confirm:"Xác nhận trong tài khoản của bạn",success:"Bạn đã kết nối thành công"},verify:{title:"Xác minh truy cập",scan:"Kết nối ví DID của bạn với chủ sở hữu hoặc quản trị viên hiện tại",confirm:"Xác nhận trong tài khoản của bạn",success:"Quyền truy cập của bạn đã được xác minh",abort:"Xác minh truy cập đã bị hủy",description:"Bạn cần cung cấp hộ chiếu {roles} để thực hiện thao tác này, bạn chỉ cần xác minh lại sau 1 giờ không hoạt động.",descriptionForDestroy:"Bạn cần cung cấp hộ chiếu {roles} để thực hiện hoạt động nguy hiểm này nhằm đảm bảo an toàn."},login:"Kết nối",termsOfUse:"Điều khoản sử dụng",agreeTermsOfUse:"Tôi xác nhận rằng tôi đã đọc và đồng ý với điều khoản áp dụng"},acceptServer:{title:"Thu thập máy chủ với NFT Sở hữu",tooltip:"Nếu bạn nhận được một NFT quyền sở hữu máy chủ, bạn có thể yêu cầu hộ chiếu chủ sở hữu của bạn với liên kết này."},exchangePassport:{title:"Đổi hộ chiếu của bạn bằng NFT",success:"Bạn đã thành công trong việc đổi hộ chiếu và đăng nhập bằng hộ chiếu của mình",login:"Đăng nhập",dialog:{title:"Nhận hộ chiếu với NFT",scan:"Kết nối Ví DID của bạn để trình diễn NFT và nhận hộ chiếu",confirm:"Chọn NFT trên Ví DID của bạn",success:"Hộ chiếu đã được đổi thành công"},tooltip1:"Nếu bạn sở hữu NFT từ bộ sưu tập này,",tooltip2:"Bạn có thể đổi hộ chiếu của mình qua liên kết này."},payablePassport:{title:"Mua hộ chiếu bằng phương thức thanh toán",tooltip:"Nếu bạn không có hộ chiếu, bạn có thể mua hộ chiếu qua liên kết này."},sidebar:{dashboard:"Bảng điều khiển",blocklets:"Blocklets",console:"Bảng điều khiển",settings:"Cài đặt"},system:{total:"Tổng cộng",used:"Đã sử dụng",free:"Miễn phí",cores:"Số nhân",instances:"Số lượng trường hợp"},common:{invalid:"Không hợp lệ",about:"Về",access:"Truy cập",accessKey:"Khóa truy cập",action:"Hành động",actions:"Hành động",add:"Thêm",address:"Địa chỉ",afterTime:"Sau {time}",allow:"Cho phép",alreadyExist:"đã tồn tại",approve:"Phê duyệt",approved:"Được chấp thuận",appUrl:"URL Ứng dụng",auditLogs:"Lịch sử kiểm toán",author:"Tác giả",avatar:"Avatar",back:"Quay lại",basic:"Cơ bản",basicInfo:"Thông tin cơ bản",profile:"Hồ sơ",bind:"Buộc",blocklet:"Khối",blocklets:"Blocklets",blockletsStorage:"Lưu trữ Blocklets",cacheStorage:"Lưu trữ Bộ nhớ cache",cancel:"Hủy",certificate:"Chứng chỉ",category:"Chủ đề nhật ký",click:"Nhấp để sao chép",close:"Đóng",selectAll:"Chọn tất cả",unselectAll:"Bỏ chọn tất cả",collapseAll:"Thu gọn Tất cả",community:"URL Cộng đồng",complete:"Hoàn thành",componentBasicInfo:"Thông tin cơ bản về thành phần",components:"Blockets",config:"Cài đặt",configuration:"Cấu hình",appearance:"Giao diện",configNavigation:"Điều hướng",configSuccess:"Cấu hình thành công",confirm:"Xác nhận",connect:"Kết nối",console:"Console",continue:"Tiếp tục",continueWith:"Tiếp Tục Với",copiedTip:"Đã sao chép",copyAndClose:"Sao chép và Đóng",copyTip:"Nhấp để sao chép",coreStorage:"Lưu trữ Core",cpu:"CPU",create:"Tạo",createSuccess:"Tạo Khóa Truy Cập",created:"Được tạo lúc",createdAt:"Tạo vào",createdBy:"Được tạo bởi",dAddress:"Các Định danh Phi tập trung (DID)",dataStorage:"Lưu trữ trên Ổ đĩa Cục bộ",delConfirm:"Xoá",delConfirmDescription:"Xác nhận xóa {data}?",delete:"Xóa",dependents:"Người phụ thuộc",description:"Mô tả",detail:"Chi tiết",did:"DID",disk:"Ổ đĩa",diskInfo:"Thông tin đĩa",docker:"Có phải là Docker không",documentation:"Tài liệu",domain:"Miền",downgradeTo:"Downgrade xuống {name}",download:"Tải xuống",downloading:"Đang tải xuống",edit:"Chỉnh sửa",email:"Email",phone:"Điện thoại",empty:"Trống",emptyData:"Không tìm thấy kết quả",enable:"Bật",engine:"Động cơ",env:"Môi trường",environment:"Môi trường",expandAll:"Mở rộng Tất cả",expired:"Hết hạn",expires:"Hết hạn",export:"Xuất khẩu",externalIp:"IP Bên ngoài",failed:"Thất bại",filter:"Bộ lọc Nhật ký",fingerprint:"Vân tay",finish:"Hoàn thành",forbid:"Cấm",free:"Miễn phí",general:"Tổng quát",gitpod:"Gitpod LÀ GÌ",goEULA:'Nhấp để xem "Thỏa thuận Giấy phép Người dùng Cuối cùng"',group:"Nhóm",image:"Đây là một hình ảnh",install:"Cài đặt",installed:"Đã cài đặt",installedAt:"Đã cài đặt tại",installSuccess:"Cài đặt thành công",installing:"Đang cài đặt",internalIp:"Địa chỉ IP nội bộ",introduction:"Giới thiệu",invite:"Mời",inviting:"Mời",ip:"IP",isPublic:"Công chúng",issue:"Vấn đề",issuer:"Người phát hành",item:"Mục",joined:"Tham gia",key:"Khóa",lastPublishedAt:"Được xuất bản vào",launcher:"Thông tin về launcher",leavePageTip:"Bạn có chắc chắn muốn rời khỏi trang này không?",link:"Liên kết",loading:"Đang tải",log:"Xem Logs",logStorage:"Lưu trữ nhật ký",login:"Đăng nhập",logo:"Logo",logout:"Đăng xuất",logs:"Nhật ký",manageTeam:"Quản lý Nhóm",marketplace:"Chợ",member:"Thành viên",members:"Thành viên",memory:"Ký ức",meta:"Dữ liệu siêu",analytics:"Phân tích",runtime:"Thời gian chạy",traffic:"Giao thông",more:"Hơn",mountPoint:"Điểm Mount",name:"Tên",next:"Tiếp theo",no:"Không",noData:"Không có bản ghi để hiển thị",notice:"Những điều tồi tệ không ngờ sẽ xảy ra nếu bạn không đọc điều này!",noticeTitle:"Thông báo",notification:"Thông báo",open:"Mở",management:"Quản lý",os:"Hệ điều hành",overview:"Tổng quan",owner:"Chủ sở hữu",page404:"Trang 404",passport:"Hộ chiếu",permission:"Quyền",port:"Port",pre:"Trước đó",preferences:"Tùy chọn",preview:"Xem trước",protected:"Bảo vệ",protocol:"Giao thức",purchase:"Mua hàng",readMore:"Nhiều hơn",redirect:"Chuyển hướng",redirectCode:"Mã chuyển hướng",redirectPermanently:"Chuyển hướng vĩnh viễn",redirectTemporary:"Chuyển hướng tạm thời",redirectUrl:"URL chuyển hướng",rewrite:"Viết lại",release:"Phát hành",rewriteUrl:"Viết lại URL",reject:"Từ chối",reload:"Tải lại",remark:"Ghi chú",remove:"Xóa bỏ",removeSuccess:"Xoá thành công",renew:"Gia hạn",reportIssue:"Báo cáo vấn đề",required:"Bắt buộc",requiredErrorText:"Yêu cầu {name}",resource:"Tài nguyên",restart:"Khởi động lại",restore:"Phục hồi",retry:"Thử lại",revoke:"Thu hồi",role:"Vai trò",running:"Đang chạy",runtimeInfo:"Thông tin thời gian chạy",save:"Lưu",saveChanges:"Lưu Thay đổi",saveSuccess:"Lưu thành công",scheduleFailed:"Lịch trình thất bại",scheduleSuccess:"Đã lên lịch thành công",scope:"Phạm vi",screenshot:"Ảnh chụp màn hình",search:"Tìm kiếm",security:"An ninh",serverDid:"Máy chủ DID",serverVersion:"Phiên bản máy chủ",setting:"Cài đặt",start:"Bắt đầu",status:"Tình trạng",stop:"Dừng lại",storage:"Lưu trữ",backup:"Sao lưu",store:"Cửa hàng",succeeded:"Thành công",subscription:"Đăng ký",support:"Hỗ trợ: URL hoặc Email",switch:"Chuyển đổi",team:"Đội",the:"O",timeAgo:"{time} trước",title:"Tiêu đề",type:"Loại",unavailable:"Không có sẵn",update:"Cập nhật",updateAvailable:"Phiên bản mới {version} đã có sẵn",updatedAt:"Cập nhật lúc",updatedBy:"Được cập nhật bởi",upgrade:"Nâng cấp",upgradeTo:"Nâng cấp lên",upgrading:"Nâng cấp",uptime:"Thời gian hoạt động",url:"URL",valid:"Hợp lệ",value:"Giá trị",version:"Phiên bản",visit:"Ghé thăm",waiting:"Đang chờ",webhook:"Tích hợp",yes:"Vâng",invalidParam:"Tham số không hợp lệ",launch:"Khởi chạy",price:"Giá",redirecting:"Đang chuyển hướng",error:"Lỗi",reminder:"Nhắc nhở",normal:"Bình thường",gateway:"Cổng",verifyNFT:"Xác minh NFT",errorMessage:"Thông báo lỗi:",slugifyHint:"Điểm gắn kết thực tế sẽ là: {value}",strategy:"Chiến lược",auto:"Ô tô",manual:"Hướng dẫn",progress:"Đang tiến hành",startTime:"Thời gian bắt đầu",endTime:"Thời gian kết thúc",timeoutError:"Lỗi thời gian chờ",tags:"Tags",connectToStore:"Kết nối tới Cửa hàng",uploaded:"Đã tải lên",upload:"Tải lên",blockletStudio:"Studio",visitStore:"Ghé cửa hàng",reconnect:"Kết nối lại",change:"Thay đổi",disconnect:"Ngắt kết nối",sourceApp:"Thuộc về ứng dụng",visitTarget:"Ghé thăm {name}",upgradeServer:"Nâng cấp Máy chủ",display:"Hiển thị",requiredInputPlaceholder:"Vui lòng nhập {name}",refresh:"Làm mới",moveUp:"Di chuyển lên trên",moveDown:"Di chuyển xuống",enabled:"Đã kích hoạt",disabled:"Tắt",homepage:"Trang Chủ",buy:"Mua",view:"Xem",homepageTip:"Trang chủ hoặc URL Bản demo trực tiếp",repository:"Kho lưu trữ",expand:"Mở rộng",collapse:"Thu gọn",all:"Tất cả",notificationRecords:"Thông báo",unrecordedUser:"Tên chưa ghi",unrecordedRole:"Vai trò chưa ghi nhận",auditLogsSearch:"Tìm kiếm theo hành động hoặc nội dung",optional:"Tùy chọn",bugOrConnectDomain:"Mua hoặc kết nối một miền hiện có",bugOrConnectDomainTip:"Tên miền là địa chỉ duy nhất của trang web bạn trên internet. Bạn có thể mua tên miền mới từ DID Names hoặc bất kỳ nhà đăng ký tên miền nào, hoặc cấu hình tên miền hiện có mà bạn đã sở hữu.",connectExistingDomain:"Kết nối miền hiện có",domains:"Tên miền",didDomains:"Tên miền DID",manualDomains:"Tên miền của tôi",didDomainsDescription:"Các miền sau được quản lý tự động bởi dịch vụ DID:Names.",systemDomains:"Cấp bởi Hệ thống",systemDomainsDescription:"Các miền sau được tự động gán theo mặc định. Mặc dù có thể truy cập, chúng không dành cho mục đích sản xuất và không nên chia sẻ với khách hàng. Các miền này chủ yếu dành cho mục đích phát triển.",manualDomainsDescription:"Các miền sau được quản lý bởi nhà cung cấp miền của bạn và đã được cấu hình thủ công để trỏ đến đây.",fileCount:"Số lượng Tệp",fileSize:"Kích thước tệp",time:"Thời gian",less:"Ít hơn",timeInfo:"Thời gian",operator:"Operator",inviter:"Người mời",clear:"Xóa",ok:"OK",minutes:"Phút",hours:"Giờ",hour:"Giờ",days:"Ngày",day:"Ngày",weeks:"Tuần",months:"Tháng",custom:"Tùy chỉnh",environments:"Môi trường",sites:"Trang web",active:"Đang hoạt động",backupTime:"Thời gian sao lưu",lastUsedAt:"Lần sử dụng cuối cùng",expiredAt:"Ngày hết hạn",createdVia:"Tạo qua",neverExpired:"Không bao giờ",baseInfo:"Thông tin cơ bản",otherInfo:"Thông tin khác",lightMode:"Chế độ sáng",darkMode:"Chế độ tối",advancedConfig:"Nâng cao",document:"Tài liệu",mcpServers:"Máy chủ MCP",generate:"Tạo",copy:"Sao chép",copied:"Đã sao chép",orgs:"Tổ chức"},blocklet:{external:"Bên ngoài",notFound:"Không tìm thấy Blocklet trên máy chủ này, có thể đã bị xóa",installFromMarket:"Cài đặt Blocklets Mới",installFromUrl:"Cài đặt từ URL",installFromCreate:"Tạo Blocklet",installFromDiskBackup:"Khôi phục từ máy chủ này",installedAt:"Được cài đặt tại",internal:"Nội bộ",startedAt:"Bắt đầu lúc",stoppedAt:"Đã dừng lại ở",urlEmptyTip:"URL không có quyền truy cập",goToAddRule:"Đi đến Thêm",services:"Các Dịch vụ Tiếp cận",upstreamPort:"Cổng Thượng Dòng",noService:"Không có dịch vụ",appId:"App DID",appPid:"DID vĩnh viễn",alsoKnownAs:"Còn được biết đến là",skSource:"Ví của Người sở hữu",reloadSuccess:"Blocklet đã được tải lại thành công",statusTip:"Blocklet là {status}",initialUptime:"Dưới 1m",dashboard:"Bảng điều khiển Blocklet",noComponent:"Ứng dụng không có thành phần và không thể được khởi chạy",fromUrl:{title:"Cài đặt Blocklet",label:"URL Meta Blocklet",description:"URL nên trỏ đến Tệp thông tin Meta của Blocklet. Nếu bạn cần tham chiếu đến một tệp cục bộ, vui lòng thêm tiền tố file://, ví dụ file:///Users/foo/blocklet.json.",confirm:"Cài đặt",step0:"URL đầu vào",step1:"Xác nhận Meta Info",existTipPrefix:"Blocklet với cùng DID đã tồn tại, phiên bản đang là {version}",existTipSuffix:"Vui lòng cài đặt phiên bản cao hơn."},action:{stopDescription:"Dừng blocklet sẽ làm cho giao diện công khai của nó trở thành không thể tiếp cận, điều này có thể gây ra các lỗi cho người dùng cuối",stopComponentDescription:"Ngừng hoạt động của thành phần sẽ làm cho giao diện công khai của nó không thể truy cập, điều này có thể gây ra sự cố cho người dùng cuối",confirmStop:"Vâng, Dừng lại",cancelDownloadDescription:"Hủy tải xuống {name}?",removeApplicationDescription:"Xóa ứng dụng sẽ xóa mã và dữ liệu được tạo ra bởi ứng dụng này, và không thể khôi phục nếu bạn không có bất kỳ bản sao lưu nào.",removeApplicationAfterBackup:"Sao lưu và gỡ bỏ ứng dụng. Bạn có thể khôi phục ứng dụng từ máy chủ này nếu cần",removeApplicationComplete:"Xóa cả mã và dữ liệu cho ứng dụng này",removeComponentDescription:"Việc xóa thành phần sẽ xóa mã và dữ liệu được tạo bởi thành phần này, không thể phục hồi nếu bạn không có bản sao",removeComponentKeepData:"Giữ dữ liệu cho thành phần này, chỉ xóa mã",removeComponentComplete:"Xoá cả mã và dữ liệu cho thành phần này",confirmRemove:"Vâng, Xóa nó",confirmComponentRemove:"Có, Xóa nó",upgradeDescription:"Nâng cấp blocklet sẽ làm cho nó tạm thời không khả dụng, bạn có chắc chắn muốn tiếp tục không?",confirmUpgrade:"Có, Nâng cấp nó",confirmRestart:"Có, Khởi động lại nó",restartDescription:"Khởi động lại blocklet sẽ tạm thời bị tạm ngưng và có thể không khởi động được do thay đổi cấu hình"},dev:{modeTip:"Vui lòng chuyển Blocklet Server sang chế độ DEBUG"},index:{tableTitle:"Quản lý Blocklets Của Bạn",noBlocklet:"Không tìm thấy blocklets trong Máy chủ Blocklet này, cài đặt một blocklet từ thị trường để bắt đầu."},config:{name:"Tên ứng dụng",description:"Mô tả ứng dụng",logoSquare:"Biểu trưng ứng dụng",logoRect:"Logo Website",logoRectDesc:"Được sử dụng trong: tiêu đề và chân trang website; nếu không được cấu hình, sẽ quay lại logo ứng dụng",logoFavicon:"Favicon",logoFaviconDesc:"Được sử dụng trong: thanh địa chỉ và tab trình duyệt; sẽ chuyển về logo ứng dụng nếu không được cấu hình",clusterSize:"Số lượng phiên bản khi chạy blocklet này trong chế độ cụm",copyrightOwner:"Chủ sở hữu bản quyền",copyrightYear:"Bản quyền Năm",deletable:{name:"Bảo vệ Xóa",enable:"Hiện tại, Khối này KHÔNG thể xóa",disable:"Hiện tại, blocklet này có thể bị xóa"},walletType:{name:"Loại ví",description:"Loại ví của khối Blocklet, sẽ thay đổi DID được lấy ra"},languages:"Ngôn ngữ được hỗ trợ",selectLanguagesTip:"Điều chỉnh thứ tự bằng cách loại bỏ và thêm lại",languagesSearch:"Tìm kiếm theo Tên Gọi địa phương của Quốc gia, Tên tiếng Anh hoặc Mã ISO...",passportColor:"Màu hòm hộ chiếu",appUrl:"URL ứng dụng",access:{title:"Ai có thể truy cập?",description:"Chọn cách bạn muốn kiểm soát quyền truy cập vào ứng dụng của mình.",useDefault:"Sử dụng mặc định",defaultDescription:"Sử dụng cấu hình mặc định của ứng dụng",whoCanAccess:{all:{title:"Mở cửa cho mọi người",description:"Mở cửa ra thế giới, bất cứ ai cũng có thể truy cập mà không cần hộ chiếu"},owner:{title:"Chỉ chủ sở hữu mới được truy cập",description:"Bạn phải cung cấp hộ chiếu của chủ sở hữu để truy cập vào ứng dụng này"},invited:{title:"Truy cập chỉ dành cho người được mời",description:"Chỉ thành viên được mời mới có thể truy cập."}},publicToStore:"Công khai tại Cửa hàng",publicInstanceTip:"Địa chỉ truy cập khối này sẽ được hiển thị trong Cửa hàng (cùng với DID của bạn để chấp nhận quyên góp)",updatedTip:"Kiểm soát truy cập đã được sửa đổi"},changedTip:"Cấu hình được cập nhật, vui lòng khởi động lại Blocklet",missingRequired:"Thiếu cấu hình bắt buộc để khởi động blocklet",gotoFix:"Đi sửa",environment:{key:"Khóa cấu hình",value:"Giá trị cấu hình",keyValueRequired:"Phải chỉ định khóa và giá trị cấu hình",invalidKey:"Khóa cấu hình không được bắt đầu bằng BLOCKLET_ hoặc COMPONENT_",deleteForbidden:"Cấu hình này là bắt buộc và không được xóa",tip:"Các cấu hình có tiền tố BWA_ không nên chứa thông tin nhạy cảm vì chúng sẽ được gửi đến trình duyệt"},dangerZone:"Khu Vực Nguy Hiểm",sharedToAllComponents:"Sẽ được chia sẻ cho tất cả các thành phần",session:{ttl:"Người dùng sẽ được yêu cầu đăng nhập lại nếu không có hoạt động trên trang web này trong {ngày} ngày",day:"{day} ngày",days:"{day} ngày",period:"Thời gian hiệu lực phiên",profile:"Yêu cầu hồ sơ người dùng",cacheTtl:"Thời gian lưu trữ cache cho dữ liệu phiên người dùng (theo giây)",fullNameEnabled:"Yêu cầu tên người dùng khi đăng nhập (được bật mặc định)",avatarEnabled:"Yêu cầu avatar người dùng khi đăng nhập (được kích hoạt mặc định)",emailEnabled:"Yêu cầu email người dùng khi đăng nhập",emailRequireVerified:"Yêu cầu xác minh email người dùng trước khi đăng nhập",emailRequireUnique:"Yêu cầu email người dùng là duy nhất trong tất cả người dùng",phoneEnabled:"Yêu cầu số điện thoại người dùng khi đăng nhập (chưa được hỗ trợ)",phoneRequireVerified:"Yêu cầu xác minh số điện thoại người dùng trước khi đăng nhập",phoneRequireUnique:"Yêu cầu số điện thoại người dùng phải duy nhất trong tất cả người dùng",emailTrustOauthProviders:"Tin tưởng các nhà cung cấp OAuth để kiểm tra trạng thái xác minh email",enableDomainBlackList:"Kích hoạt danh sách đen tên miền email (từ chối các tên miền email đã liệt kê)",enableDomainWhiteList:"Kích hoạt danh sách trắng tên miền email (chỉ cho phép các tên miền email được liệt kê để đăng nhập)",addDomain:"Thêm nguồn để lấy danh sách (dưới dạng văn bản thường, một miền trên mỗi dòng)",enableBlacklist:"Bật thu hồi token đăng nhập và token làm mới",experimentalSettings:"Cài đặt Thử nghiệm"},clearCache:{name:"Quản lý Cache",purpose:"Quản lý file được lưu trữ trong dịch vụ router và blocklet",title:"Xác nhận xóa Cache?",action:"Xóa Cache",success:"{count} mục cache đã được xóa thành công",description:"Bạn có chắc chắn muốn xóa các tệp được lưu trữ tạm thời trong bộ định tuyến và dịch vụ blocklet không? Thao tác này có thể làm giảm hiệu suất một chút trong thời gian ngắn."},tenantMode:{name:"Chế độ Nhiều người thuê",multiple:"Blocklet này chạy trong chế độ nhiều người thuê, dữ liệu được cô lập cho mỗi người thuê",single:"Khối mã này chạy trong chế độ khách hàng đơn, tất cả dữ liệu được chia sẻ"},splashPortrait:"Hình ảnh Splash",splashLandscape:"Cảnh Splash",splashPortraitDesc:"Hiển thị khi Blocklet được khởi chạy. Định dạng PNG hoặc JPG, tỷ lệ khung hình được đề xuất 9:16 cho ảnh chân dung và 16:9 cho ảnh phong cảnh (tối đa 5MB)",rotateSessionKey:{name:"Xoay muối phiên",purpose:"Salt phiên là một giá trị ngẫu nhiên được sử dụng để tăng cường bảo mật của token phiên. Nhấp vào nút để xoay salt phiên thủ công, điều này giúp giảm nguy cơ bị đánh cắp token đăng nhập.",title:"Xác nhận xoay muối phiên?",action:"Xoay Muối",success:"Xoay thành công muối phiên",description:"Bạn có chắc chắn muốn xoay muối phiên? Thao tác này sẽ làm mất hiệu lực tất cả các token đăng nhập hiện có và buộc người dùng phải đăng nhập lại, bao gồm cả token đăng nhập của bạn."},ogImage:"Mở Graph Background",ogImageDesc:"Được sử dụng trong: nền chia sẻ phương tiện truyền thông xã hội",migrate:{button:"Di chuyển với DID Wallet",title:"Xác nhận thay đổi DID",description:"Nếu bạn đang khởi chạy với ví được quản lý bởi máy chủ, bạn có thể thay đổi DID ứng dụng thành ví của riêng bạn.",confirm:"Bạn có chắc chắn muốn thay đổi DID của ứng dụng? Thao tác này sẽ làm mất hiệu lực tất cả các phiên hiện có và buộc người dùng phải đăng nhập lại, bao gồm cả phiên của bạn."},vault:{name:"Vault DID",title:"Thiết lập Vault",desc:"Sử dụng vault để thêm lớp bảo mật bổ sung cho quỹ được quản lý bởi blocklet này.",tip:"Nhập địa chỉ kho để tiếp tục, bạn cần chứng minh quyền sở hữu địa chỉ kho trước khi có thể sử dụng.",address:"Địa chỉ Vault",verified:"Vault đã được xác minh",current:"Kho hiện tại",error:{invalid:"Địa chỉ Vault phải là DID hợp lệ",holder:"Địa chỉ Vault phải là người nắm giữ token hợp lệ trên blockchain; địa chỉ token/tài sản/nhà máy/cổ phần không được hỗ trợ.",duplicate:"Địa chỉ vault này đã được sử dụng trước đó, vui lòng sử dụng địa chỉ khác",appDid:"Không thể sử dụng DID ứng dụng làm địa chỉ vault, vui lòng sử dụng địa chỉ khác."},role:"Loại vai trò",firstSeen:"Thấy đầu tiên",lastSeen:"Lần cuối thấy",migratedFrom:"Di chuyển từ",migratedTo:"Di chuyển tới",commit:{title:"Xác minh quyền sở hữu Vault",scan:"Sử dụng các phương pháp sau để xác minh quyền sở hữu kho lưu trữ",confirm:"Xác nhận sử dụng DID Wallet",success:"Vault được cấu hình thành công"},approve:{title:"Duyệt Thay Đổi Vault",byOwner:"Ký với chủ sở hữu Blocklet để phê duyệt thay đổi",byLast:"Đăng nhập bằng vault cuối cùng để phê duyệt thay đổi",confirm:"Xác nhận bằng DID Wallet",success:"Thay đổi Vault đã được phê duyệt"}},changeImageTip:"Tip: Nếu muốn thay đổi hình ảnh, vui lòng nhấp vào Xem trước Hình ảnh.",baseInfo:"Thông tin cơ bản",baseInfoDesc:"Thông tin cơ bản của trang web có thể được thiết lập ở đây.",logoSettings:"Thông tin trực quan",logoSettingsDesc:"Tạo hình ảnh thương hiệu độc đáo, nâng cao khả năng nhận diện website và sức hấp dẫn trực quan trong nhiều trường hợp.",languagesDesc:"Được sử dụng trong: lựa chọn ngôn ngữ của khách truy cập",nameDesc:"Được sử dụng trong: tiêu đề DID Connect, tab trình duyệt, chân trang website, meta dữ liệu SEO và meta dữ liệu OpenGraph",descriptionDesc:"Được sử dụng trong: meta dữ liệu SEO và meta dữ liệu OpenGraph",logoSquareDesc:"Được sử dụng trong: chân trang hộp thoại xác thực người dùng và danh sách ứng dụng <b>DID Wallet</b>",logoDesc:"Kích thước đề nghị: {width}*{height} pixels",splashDesc:`Màn hình khởi chạy APP ArcSphere (sẽ được hiển thị trong <b>ArcSphere</b> nếu được cấu hình)
1
+ const n={setup:{connect:{title:"Thiết lập máy chủ Blocklet",scan:"Sử dụng các phương pháp sau để trở thành chủ sở hữu của máy chủ này",confirm:"Vui lòng xem xét thao tác này trên Ví DID của bạn",success:"Tài khoản của bạn đã kết nối với máy chủ này"},keyPair:{title:"Đưa ra KeyPair",scan:"Kết nối ví DID của bạn để tạo cặp khóa cho ứng dụng này",confirm:"Xem lại hoạt động này trên ví DID của bạn",success:"Cặp khóa của bạn được lưu trữ một cách an toàn"},verify:{title:"Yêu cầu Chứng chỉ Sở hữu",scan:"Kết nối Ví DID của bạn để cung cấp các thông tin chứng thực sở hữu",confirm:"Xem lại thao tác này trên Ví DID của bạn",success:"Tài khoản của bạn đã kết nối với máy chủ này"},accept:{title:"Chấp nhận chứng chỉ sở hữu máy chủ",scan:"Kết nối ví DID của bạn để cung cấp các chứng chỉ sở hữu",confirm:"Xem lại thao tác này trên ví DID của bạn",success:"Tài khoản của bạn được kết nối với máy chủ này"},title:"Cài đặt máy chủ Blocklet",steps:{eula:"Hợp đồng Cấp phép Người dùng cuối",eulaFooter:"Tôi đã đọc và đồng ý với các điều khoản của EULA",connect:"Kết nối Ví DID Chủ sở hữu",verify:"Xác minh Sở hữu",basicSettings:"Cài đặt cơ bản",launchApp:"Khởi chạy ứng dụng",complete:"Hoàn thành"},congratulation:"Xin chúc mừng! Máy chủ Blocklet của bạn đã được bảo mật và sẵn sàng sử dụng",redirectButton:"Đưa tôi đến bảng điều khiển!"},login:{loginTo:"Kết nối với",description:"Chỉ chủ sở hữu máy chủ và thành viên được phê duyệt mới có thể truy cập bảng điều khiển.",switchDid:{title:"Chuyển Tài Khoản",scan:"Sử dụng các phương pháp sau để thêm tài khoản",confirm:"Xác nhận chuyển đổi trong ví DID của bạn",success:"Chuyển đổi thành công"},switchSpecifiedDid:{title:"Chuyển tài khoản",scan:"Bạn cần chuyển đổi DID thành {did} để hoàn thành các hành động sau",confirm:"Xác nhận chuyển đổi trong Ví của bạn",success:"Chuyển đổi thành công"},connect:{title:"Kết nối",scan:"Chỉ chủ sở hữu máy chủ và các thành viên được phê duyệt mới có thể truy cập bảng điều khiển",confirm:"Xác nhận trong tài khoản của bạn",success:"Bạn đã kết nối thành công"},verify:{title:"Xác minh truy cập",scan:"Kết nối ví DID của bạn với chủ sở hữu hoặc quản trị viên hiện tại",confirm:"Xác nhận trong tài khoản của bạn",success:"Quyền truy cập của bạn đã được xác minh",abort:"Xác minh truy cập đã bị hủy",description:"Bạn cần cung cấp hộ chiếu {roles} để thực hiện thao tác này, bạn chỉ cần xác minh lại sau 1 giờ không hoạt động.",descriptionForDestroy:"Bạn cần cung cấp hộ chiếu {roles} để thực hiện hoạt động nguy hiểm này nhằm đảm bảo an toàn."},login:"Kết nối",termsOfUse:"Điều khoản sử dụng",agreeTermsOfUse:"Tôi xác nhận rằng tôi đã đọc và đồng ý với điều khoản áp dụng"},acceptServer:{title:"Thu thập máy chủ với NFT Sở hữu",tooltip:"Nếu bạn nhận được một NFT quyền sở hữu máy chủ, bạn có thể yêu cầu hộ chiếu chủ sở hữu của bạn với liên kết này."},exchangePassport:{title:"Đổi hộ chiếu của bạn bằng NFT",success:"Bạn đã thành công trong việc đổi hộ chiếu và đăng nhập bằng hộ chiếu của mình",login:"Đăng nhập",dialog:{title:"Nhận hộ chiếu với NFT",scan:"Kết nối Ví DID của bạn để trình diễn NFT và nhận hộ chiếu",confirm:"Chọn NFT trên Ví DID của bạn",success:"Hộ chiếu đã được đổi thành công"},tooltip1:"Nếu bạn sở hữu NFT từ bộ sưu tập này,",tooltip2:"Bạn có thể đổi hộ chiếu của mình qua liên kết này."},payablePassport:{title:"Mua hộ chiếu bằng phương thức thanh toán",tooltip:"Nếu bạn không có hộ chiếu, bạn có thể mua hộ chiếu qua liên kết này."},sidebar:{dashboard:"Bảng điều khiển",blocklets:"Blocklets",console:"Bảng điều khiển",settings:"Cài đặt"},system:{total:"Tổng cộng",used:"Đã sử dụng",free:"Miễn phí",cores:"Số nhân",instances:"Số lượng trường hợp"},common:{invalid:"Không hợp lệ",about:"Về",access:"Truy cập",accessKey:"Khóa truy cập",action:"Hành động",actions:"Hành động",add:"Thêm",address:"Địa chỉ",afterTime:"Sau {time}",allow:"Cho phép",alreadyExist:"đã tồn tại",approve:"Phê duyệt",approved:"Được chấp thuận",appUrl:"URL Ứng dụng",auditLogs:"Lịch sử kiểm toán",author:"Tác giả",avatar:"Avatar",back:"Quay lại",basic:"Cơ bản",basicInfo:"Thông tin cơ bản",profile:"Hồ sơ",bind:"Buộc",blocklet:"Khối",blocklets:"Blocklets",blockletsStorage:"Lưu trữ Blocklets",cacheStorage:"Lưu trữ Bộ nhớ cache",cancel:"Hủy",certificate:"Chứng chỉ",category:"Chủ đề nhật ký",click:"Nhấp để sao chép",close:"Đóng",selectAll:"Chọn tất cả",unselectAll:"Bỏ chọn tất cả",collapseAll:"Thu gọn Tất cả",community:"URL Cộng đồng",complete:"Hoàn thành",componentBasicInfo:"Thông tin cơ bản về thành phần",components:"Blockets",config:"Cài đặt",configuration:"Cấu hình",appearance:"Giao diện",configNavigation:"Điều hướng",configSuccess:"Cấu hình thành công",confirm:"Xác nhận",connect:"Kết nối",console:"Console",continue:"Tiếp tục",continueWith:"Tiếp Tục Với",copiedTip:"Đã sao chép",copyAndClose:"Sao chép và Đóng",copyTip:"Nhấp để sao chép",coreStorage:"Lưu trữ Core",cpu:"CPU",create:"Tạo",createSuccess:"Tạo Khóa Truy Cập",created:"Được tạo lúc",createdAt:"Tạo vào",createdBy:"Được tạo bởi",dAddress:"Các Định danh Phi tập trung (DID)",dataStorage:"Lưu trữ trên Ổ đĩa Cục bộ",delConfirm:"Xoá",delConfirmDescription:"Xác nhận xóa {data}?",delete:"Xóa",dependents:"Người phụ thuộc",description:"Mô tả",detail:"Chi tiết",did:"DID",disk:"Ổ đĩa",diskInfo:"Thông tin đĩa",docker:"Có phải là Docker không",documentation:"Tài liệu",domain:"Miền",downgradeTo:"Downgrade xuống {name}",download:"Tải xuống",downloading:"Đang tải xuống",edit:"Chỉnh sửa",email:"Email",phone:"Điện thoại",empty:"Trống",emptyData:"Không tìm thấy kết quả",enable:"Bật",engine:"Động cơ",env:"Môi trường",environment:"Môi trường",expandAll:"Mở rộng Tất cả",expired:"Hết hạn",expires:"Hết hạn",export:"Xuất khẩu",externalIp:"IP Bên ngoài",failed:"Thất bại",filter:"Bộ lọc Nhật ký",fingerprint:"Vân tay",finish:"Hoàn thành",forbid:"Cấm",free:"Miễn phí",general:"Tổng quát",gitpod:"Gitpod LÀ GÌ",goEULA:'Nhấp để xem "Thỏa thuận Giấy phép Người dùng Cuối cùng"',group:"Nhóm",image:"Đây là một hình ảnh",install:"Cài đặt",installed:"Đã cài đặt",installedAt:"Đã cài đặt tại",installSuccess:"Cài đặt thành công",installing:"Đang cài đặt",internalIp:"Địa chỉ IP nội bộ",introduction:"Giới thiệu",invite:"Mời",inviting:"Mời",ip:"IP",isPublic:"Công chúng",issue:"Vấn đề",issuer:"Người phát hành",item:"Mục",joined:"Tham gia",key:"Khóa",lastPublishedAt:"Được xuất bản vào",launcher:"Thông tin về launcher",leavePageTip:"Bạn có chắc chắn muốn rời khỏi trang này không?",link:"Liên kết",loading:"Đang tải",log:"Xem Logs",logStorage:"Lưu trữ nhật ký",login:"Đăng nhập",logo:"Logo",logout:"Đăng xuất",logs:"Nhật ký",manageTeam:"Quản lý Nhóm",marketplace:"Chợ",member:"Thành viên",members:"Thành viên",memory:"Ký ức",meta:"Dữ liệu siêu",analytics:"Phân tích",runtime:"Thời gian chạy",traffic:"Giao thông",more:"Hơn",mountPoint:"Điểm Mount",name:"Tên",next:"Tiếp theo",no:"Không",noData:"Không có bản ghi để hiển thị",notice:"Những điều tồi tệ không ngờ sẽ xảy ra nếu bạn không đọc điều này!",noticeTitle:"Thông báo",notification:"Thông báo",open:"Mở",management:"Quản lý",os:"Hệ điều hành",overview:"Tổng quan",owner:"Chủ sở hữu",page404:"Trang 404",passport:"Hộ chiếu",permission:"Quyền",port:"Port",pre:"Trước đó",preferences:"Tùy chọn",preview:"Xem trước",protected:"Bảo vệ",protocol:"Giao thức",purchase:"Mua hàng",readMore:"Nhiều hơn",redirect:"Chuyển hướng",redirectCode:"Mã chuyển hướng",redirectPermanently:"Chuyển hướng vĩnh viễn",redirectTemporary:"Chuyển hướng tạm thời",redirectUrl:"URL chuyển hướng",rewrite:"Viết lại",release:"Phát hành",rewriteUrl:"Viết lại URL",reject:"Từ chối",reload:"Tải lại",remark:"Ghi chú",remove:"Xóa bỏ",removeSuccess:"Xoá thành công",renew:"Gia hạn",reportIssue:"Báo cáo vấn đề",required:"Bắt buộc",requiredErrorText:"Yêu cầu {name}",resource:"Tài nguyên",restart:"Khởi động lại",restore:"Phục hồi",retry:"Thử lại",revoke:"Thu hồi",role:"Vai trò",running:"Đang chạy",runtimeInfo:"Thông tin thời gian chạy",save:"Lưu",saveChanges:"Lưu Thay đổi",saveSuccess:"Lưu thành công",scheduleFailed:"Lịch trình thất bại",scheduleSuccess:"Đã lên lịch thành công",scope:"Phạm vi",screenshot:"Ảnh chụp màn hình",search:"Tìm kiếm",security:"An ninh",serverDid:"Máy chủ DID",serverVersion:"Phiên bản máy chủ",setting:"Cài đặt",start:"Bắt đầu",status:"Tình trạng",stop:"Dừng lại",storage:"Lưu trữ",backup:"Sao lưu",store:"Cửa hàng",succeeded:"Thành công",subscription:"Đăng ký",support:"Hỗ trợ: URL hoặc Email",switch:"Chuyển đổi",team:"Đội",the:"O",timeAgo:"{time} trước",title:"Tiêu đề",type:"Loại",unavailable:"Không có sẵn",update:"Cập nhật",updateAvailable:"Phiên bản mới {version} đã có sẵn",updatedAt:"Cập nhật lúc",updatedBy:"Được cập nhật bởi",upgrade:"Nâng cấp",upgradeTo:"Nâng cấp lên",upgrading:"Nâng cấp",uptime:"Thời gian hoạt động",url:"URL",valid:"Hợp lệ",value:"Giá trị",version:"Phiên bản",visit:"Ghé thăm",waiting:"Đang chờ",webhook:"Tích hợp",yes:"Vâng",invalidParam:"Tham số không hợp lệ",launch:"Khởi chạy",price:"Giá",redirecting:"Đang chuyển hướng",error:"Lỗi",reminder:"Nhắc nhở",normal:"Bình thường",gateway:"Cổng",verifyNFT:"Xác minh NFT",errorMessage:"Thông báo lỗi:",slugifyHint:"Điểm gắn kết thực tế sẽ là: {value}",strategy:"Chiến lược",auto:"Ô tô",manual:"Hướng dẫn",progress:"Đang tiến hành",startTime:"Thời gian bắt đầu",endTime:"Thời gian kết thúc",timeoutError:"Lỗi thời gian chờ",tags:"Tags",connectToStore:"Kết nối tới Cửa hàng",uploaded:"Đã tải lên",upload:"Tải lên",blockletStudio:"Studio",visitStore:"Ghé cửa hàng",reconnect:"Kết nối lại",change:"Thay đổi",disconnect:"Ngắt kết nối",sourceApp:"Thuộc về ứng dụng",visitTarget:"Ghé thăm {name}",upgradeServer:"Nâng cấp Máy chủ",display:"Hiển thị",requiredInputPlaceholder:"Vui lòng nhập {name}",refresh:"Làm mới",moveUp:"Di chuyển lên trên",moveDown:"Di chuyển xuống",enabled:"Đã kích hoạt",disabled:"Tắt",homepage:"Trang Chủ",buy:"Mua",view:"Xem",homepageTip:"Trang chủ hoặc URL Bản demo trực tiếp",repository:"Kho lưu trữ",expand:"Mở rộng",collapse:"Thu gọn",all:"Tất cả",notificationRecords:"Thông báo",unrecordedUser:"Tên chưa ghi",unrecordedRole:"Vai trò chưa ghi nhận",auditLogsSearch:"Tìm kiếm theo hành động hoặc nội dung",optional:"Tùy chọn",bugOrConnectDomain:"Mua hoặc kết nối một miền hiện có",bugOrConnectDomainTip:"Tên miền là địa chỉ duy nhất của trang web bạn trên internet. Bạn có thể mua tên miền mới từ DID Names hoặc bất kỳ nhà đăng ký tên miền nào, hoặc cấu hình tên miền hiện có mà bạn đã sở hữu.",connectExistingDomain:"Kết nối miền hiện có",domains:"Tên miền",didDomains:"Tên miền DID",manualDomains:"Tên miền của tôi",didDomainsDescription:"Các miền sau được quản lý tự động bởi dịch vụ DID:Names.",systemDomains:"Cấp bởi Hệ thống",systemDomainsDescription:"Các miền sau được tự động gán theo mặc định. Mặc dù có thể truy cập, chúng không dành cho mục đích sản xuất và không nên chia sẻ với khách hàng. Các miền này chủ yếu dành cho mục đích phát triển.",manualDomainsDescription:"Các miền sau được quản lý bởi nhà cung cấp miền của bạn và đã được cấu hình thủ công để trỏ đến đây.",fileCount:"Số lượng Tệp",fileSize:"Kích thước tệp",time:"Thời gian",less:"Ít hơn",timeInfo:"Thời gian",operator:"Operator",inviter:"Người mời",clear:"Xóa",ok:"OK",minutes:"Phút",hours:"Giờ",hour:"Giờ",days:"Ngày",day:"Ngày",weeks:"Tuần",months:"Tháng",custom:"Tùy chỉnh",environments:"Môi trường",sites:"Trang web",active:"Đang hoạt động",backupTime:"Thời gian sao lưu",lastUsedAt:"Lần sử dụng cuối cùng",expiredAt:"Ngày hết hạn",createdVia:"Tạo qua",neverExpired:"Không bao giờ",baseInfo:"Thông tin cơ bản",otherInfo:"Thông tin khác",lightMode:"Chế độ sáng",darkMode:"Chế độ tối",advancedConfig:"Nâng cao",document:"Tài liệu",mcpServers:"Máy chủ MCP",generate:"Tạo",copy:"Sao chép",copied:"Đã sao chép",orgs:"Tổ chức",userSessions:"Phiên người dùng"},blocklet:{external:"Bên ngoài",notFound:"Không tìm thấy Blocklet trên máy chủ này, có thể đã bị xóa",installFromMarket:"Cài đặt Blocklets Mới",installFromUrl:"Cài đặt từ URL",installFromCreate:"Tạo Blocklet",installFromDiskBackup:"Khôi phục từ máy chủ này",installedAt:"Được cài đặt tại",internal:"Nội bộ",startedAt:"Bắt đầu lúc",stoppedAt:"Đã dừng lại ở",urlEmptyTip:"URL không có quyền truy cập",goToAddRule:"Đi đến Thêm",services:"Các Dịch vụ Tiếp cận",upstreamPort:"Cổng Thượng Dòng",noService:"Không có dịch vụ",appId:"App DID",appPid:"DID vĩnh viễn",alsoKnownAs:"Còn được biết đến là",skSource:"Ví của Người sở hữu",reloadSuccess:"Blocklet đã được tải lại thành công",statusTip:"Blocklet là {status}",initialUptime:"Dưới 1m",dashboard:"Bảng điều khiển Blocklet",noComponent:"Ứng dụng không có thành phần và không thể được khởi chạy",fromUrl:{title:"Cài đặt Blocklet",label:"URL Meta Blocklet",description:"URL nên trỏ đến Tệp thông tin Meta của Blocklet. Nếu bạn cần tham chiếu đến một tệp cục bộ, vui lòng thêm tiền tố file://, ví dụ file:///Users/foo/blocklet.json.",confirm:"Cài đặt",step0:"URL đầu vào",step1:"Xác nhận Meta Info",existTipPrefix:"Blocklet với cùng DID đã tồn tại, phiên bản đang là {version}",existTipSuffix:"Vui lòng cài đặt phiên bản cao hơn."},action:{stopDescription:"Dừng blocklet sẽ làm cho giao diện công khai của nó trở thành không thể tiếp cận, điều này có thể gây ra các lỗi cho người dùng cuối",stopComponentDescription:"Ngừng hoạt động của thành phần sẽ làm cho giao diện công khai của nó không thể truy cập, điều này có thể gây ra sự cố cho người dùng cuối",confirmStop:"Vâng, Dừng lại",cancelDownloadDescription:"Hủy tải xuống {name}?",removeApplicationDescription:"Xóa ứng dụng sẽ xóa mã và dữ liệu được tạo ra bởi ứng dụng này, và không thể khôi phục nếu bạn không có bất kỳ bản sao lưu nào.",removeApplicationAfterBackup:"Sao lưu và gỡ bỏ ứng dụng. Bạn có thể khôi phục ứng dụng từ máy chủ này nếu cần",removeApplicationComplete:"Xóa cả mã và dữ liệu cho ứng dụng này",removeComponentDescription:"Việc xóa thành phần sẽ xóa mã và dữ liệu được tạo bởi thành phần này, không thể phục hồi nếu bạn không có bản sao",removeComponentKeepData:"Giữ dữ liệu cho thành phần này, chỉ xóa mã",removeComponentComplete:"Xoá cả mã và dữ liệu cho thành phần này",confirmRemove:"Vâng, Xóa nó",confirmComponentRemove:"Có, Xóa nó",upgradeDescription:"Nâng cấp blocklet sẽ làm cho nó tạm thời không khả dụng, bạn có chắc chắn muốn tiếp tục không?",confirmUpgrade:"Có, Nâng cấp nó",confirmRestart:"Có, Khởi động lại nó",restartDescription:"Khởi động lại blocklet sẽ tạm thời bị tạm ngưng và có thể không khởi động được do thay đổi cấu hình"},dev:{modeTip:"Vui lòng chuyển Blocklet Server sang chế độ DEBUG"},index:{tableTitle:"Quản lý Blocklets Của Bạn",noBlocklet:"Không tìm thấy blocklets trong Máy chủ Blocklet này, cài đặt một blocklet từ thị trường để bắt đầu."},config:{name:"Tên ứng dụng",description:"Mô tả ứng dụng",logoSquare:"Biểu trưng ứng dụng",logoRect:"Logo Website",logoRectDesc:"Được sử dụng trong: tiêu đề và chân trang website; nếu không được cấu hình, sẽ quay lại logo ứng dụng",logoFavicon:"Favicon",logoFaviconDesc:"Được sử dụng trong: thanh địa chỉ và tab trình duyệt; sẽ chuyển về logo ứng dụng nếu không được cấu hình",clusterSize:"Số lượng phiên bản khi chạy blocklet này trong chế độ cụm",copyrightOwner:"Chủ sở hữu bản quyền",copyrightYear:"Bản quyền Năm",deletable:{name:"Bảo vệ Xóa",enable:"Hiện tại, Khối này KHÔNG thể xóa",disable:"Hiện tại, blocklet này có thể bị xóa"},walletType:{name:"Loại ví",description:"Loại ví của khối Blocklet, sẽ thay đổi DID được lấy ra"},languages:"Ngôn ngữ được hỗ trợ",selectLanguagesTip:"Điều chỉnh thứ tự bằng cách loại bỏ và thêm lại",languagesSearch:"Tìm kiếm theo Tên Gọi địa phương của Quốc gia, Tên tiếng Anh hoặc Mã ISO...",passportColor:"Màu hòm hộ chiếu",appUrl:"URL ứng dụng",access:{title:"Ai có thể truy cập?",description:"Chọn cách bạn muốn kiểm soát quyền truy cập vào ứng dụng của mình.",useDefault:"Sử dụng mặc định",defaultDescription:"Sử dụng cấu hình mặc định của ứng dụng",whoCanAccess:{all:{title:"Mở cửa cho mọi người",description:"Mở cửa ra thế giới, bất cứ ai cũng có thể truy cập mà không cần hộ chiếu"},owner:{title:"Chỉ chủ sở hữu mới được truy cập",description:"Bạn phải cung cấp hộ chiếu của chủ sở hữu để truy cập vào ứng dụng này"},invited:{title:"Truy cập chỉ dành cho người được mời",description:"Chỉ thành viên được mời mới có thể truy cập."}},publicToStore:"Công khai tại Cửa hàng",publicInstanceTip:"Địa chỉ truy cập khối này sẽ được hiển thị trong Cửa hàng (cùng với DID của bạn để chấp nhận quyên góp)",updatedTip:"Kiểm soát truy cập đã được sửa đổi"},changedTip:"Cấu hình được cập nhật, vui lòng khởi động lại Blocklet",missingRequired:"Thiếu cấu hình bắt buộc để khởi động blocklet",gotoFix:"Đi sửa",environment:{key:"Khóa cấu hình",value:"Giá trị cấu hình",keyValueRequired:"Phải chỉ định khóa và giá trị cấu hình",invalidKey:"Khóa cấu hình không được bắt đầu bằng BLOCKLET_ hoặc COMPONENT_",deleteForbidden:"Cấu hình này là bắt buộc và không được xóa",tip:"Các cấu hình có tiền tố BWA_ không nên chứa thông tin nhạy cảm vì chúng sẽ được gửi đến trình duyệt"},dangerZone:"Khu Vực Nguy Hiểm",sharedToAllComponents:"Sẽ được chia sẻ cho tất cả các thành phần",session:{ttl:"Người dùng sẽ được yêu cầu đăng nhập lại nếu không có hoạt động trên trang web này trong {ngày} ngày",day:"{day} ngày",days:"{day} ngày",period:"Thời gian hiệu lực phiên",profile:"Yêu cầu hồ sơ người dùng",cacheTtl:"Thời gian lưu trữ cache cho dữ liệu phiên người dùng (theo giây)",fullNameEnabled:"Yêu cầu tên người dùng khi đăng nhập (được bật mặc định)",avatarEnabled:"Yêu cầu avatar người dùng khi đăng nhập (được kích hoạt mặc định)",emailEnabled:"Yêu cầu email người dùng khi đăng nhập",emailRequireVerified:"Yêu cầu xác minh email người dùng trước khi đăng nhập",emailRequireUnique:"Yêu cầu email người dùng là duy nhất trong tất cả người dùng",phoneEnabled:"Yêu cầu số điện thoại người dùng khi đăng nhập (chưa được hỗ trợ)",phoneRequireVerified:"Yêu cầu xác minh số điện thoại người dùng trước khi đăng nhập",phoneRequireUnique:"Yêu cầu số điện thoại người dùng phải duy nhất trong tất cả người dùng",emailTrustOauthProviders:"Tin tưởng các nhà cung cấp OAuth để kiểm tra trạng thái xác minh email",enableDomainBlackList:"Kích hoạt danh sách đen tên miền email (từ chối các tên miền email đã liệt kê)",enableDomainWhiteList:"Kích hoạt danh sách trắng tên miền email (chỉ cho phép các tên miền email được liệt kê để đăng nhập)",addDomain:"Thêm nguồn để lấy danh sách (dưới dạng văn bản thường, một miền trên mỗi dòng)",enableBlacklist:"Bật thu hồi token đăng nhập và token làm mới",experimentalSettings:"Cài đặt Thử nghiệm"},clearCache:{name:"Quản lý Cache",purpose:"Quản lý file được lưu trữ trong dịch vụ router và blocklet",title:"Xác nhận xóa Cache?",action:"Xóa Cache",success:"{count} mục cache đã được xóa thành công",description:"Bạn có chắc chắn muốn xóa các tệp được lưu trữ tạm thời trong bộ định tuyến và dịch vụ blocklet không? Thao tác này có thể làm giảm hiệu suất một chút trong thời gian ngắn."},tenantMode:{name:"Chế độ Nhiều người thuê",multiple:"Blocklet này chạy trong chế độ nhiều người thuê, dữ liệu được cô lập cho mỗi người thuê",single:"Khối mã này chạy trong chế độ khách hàng đơn, tất cả dữ liệu được chia sẻ"},splashPortrait:"Hình ảnh Splash",splashLandscape:"Cảnh Splash",splashPortraitDesc:"Hiển thị khi Blocklet được khởi chạy. Định dạng PNG hoặc JPG, tỷ lệ khung hình được đề xuất 9:16 cho ảnh chân dung và 16:9 cho ảnh phong cảnh (tối đa 5MB)",rotateSessionKey:{name:"Xoay muối phiên",purpose:"Salt phiên là một giá trị ngẫu nhiên được sử dụng để tăng cường bảo mật của token phiên. Nhấp vào nút để xoay salt phiên thủ công, điều này giúp giảm nguy cơ bị đánh cắp token đăng nhập.",title:"Xác nhận xoay muối phiên?",action:"Xoay Muối",success:"Xoay thành công muối phiên",description:"Bạn có chắc chắn muốn xoay muối phiên? Thao tác này sẽ làm mất hiệu lực tất cả các token đăng nhập hiện có và buộc người dùng phải đăng nhập lại, bao gồm cả token đăng nhập của bạn."},ogImage:"Mở Graph Background",ogImageDesc:"Được sử dụng trong: nền chia sẻ phương tiện truyền thông xã hội",migrate:{button:"Di chuyển với DID Wallet",title:"Xác nhận thay đổi DID",description:"Nếu bạn đang khởi chạy với ví được quản lý bởi máy chủ, bạn có thể thay đổi DID ứng dụng thành ví của riêng bạn.",confirm:"Bạn có chắc chắn muốn thay đổi DID của ứng dụng? Thao tác này sẽ làm mất hiệu lực tất cả các phiên hiện có và buộc người dùng phải đăng nhập lại, bao gồm cả phiên của bạn."},vault:{name:"Vault DID",title:"Thiết lập Vault",desc:"Sử dụng vault để thêm lớp bảo mật bổ sung cho quỹ được quản lý bởi blocklet này.",tip:"Nhập địa chỉ kho để tiếp tục, bạn cần chứng minh quyền sở hữu địa chỉ kho trước khi có thể sử dụng.",address:"Địa chỉ Vault",verified:"Vault đã được xác minh",current:"Kho hiện tại",error:{invalid:"Địa chỉ Vault phải là DID hợp lệ",holder:"Địa chỉ Vault phải là người nắm giữ token hợp lệ trên blockchain; địa chỉ token/tài sản/nhà máy/cổ phần không được hỗ trợ.",duplicate:"Địa chỉ vault này đã được sử dụng trước đó, vui lòng sử dụng địa chỉ khác",appDid:"Không thể sử dụng DID ứng dụng làm địa chỉ vault, vui lòng sử dụng địa chỉ khác."},role:"Loại vai trò",firstSeen:"Thấy đầu tiên",lastSeen:"Lần cuối thấy",migratedFrom:"Di chuyển từ",migratedTo:"Di chuyển tới",commit:{title:"Xác minh quyền sở hữu Vault",scan:"Sử dụng các phương pháp sau để xác minh quyền sở hữu kho lưu trữ",confirm:"Xác nhận sử dụng DID Wallet",success:"Vault được cấu hình thành công"},approve:{title:"Duyệt Thay Đổi Vault",byOwner:"Ký với chủ sở hữu Blocklet để phê duyệt thay đổi",byLast:"Đăng nhập bằng vault cuối cùng để phê duyệt thay đổi",confirm:"Xác nhận bằng DID Wallet",success:"Thay đổi Vault đã được phê duyệt"}},changeImageTip:"Tip: Nếu muốn thay đổi hình ảnh, vui lòng nhấp vào Xem trước Hình ảnh.",baseInfo:"Thông tin cơ bản",baseInfoDesc:"Thông tin cơ bản của trang web có thể được thiết lập ở đây.",logoSettings:"Thông tin trực quan",logoSettingsDesc:"Tạo hình ảnh thương hiệu độc đáo, nâng cao khả năng nhận diện website và sức hấp dẫn trực quan trong nhiều trường hợp.",languagesDesc:"Được sử dụng trong: lựa chọn ngôn ngữ của khách truy cập",nameDesc:"Được sử dụng trong: tiêu đề DID Connect, tab trình duyệt, chân trang website, meta dữ liệu SEO và meta dữ liệu OpenGraph",descriptionDesc:"Được sử dụng trong: meta dữ liệu SEO và meta dữ liệu OpenGraph",logoSquareDesc:"Được sử dụng trong: chân trang hộp thoại xác thực người dùng và danh sách ứng dụng <b>DID Wallet</b>",logoDesc:"Kích thước đề nghị: {width}*{height} pixels",splashDesc:`Màn hình khởi chạy APP ArcSphere (sẽ được hiển thị trong <b>ArcSphere</b> nếu được cấu hình)
2
2
  Chế độ Chân dung:
3
3
  Tỷ lệ: 9:16
4
4
  Chế độ Phong cảnh:
@@ -1 +1 @@
1
- import{c as g}from"./index-3yzleS_1.js";import{H as E}from"./vendor-ux-CE4sOH7O.js";import{b as y}from"./vendor-hooks-DmThWyyG.js";import{r as m}from"./vendor-react-Dvs43sk9.js";import{g as h}from"./get-safe-url-3Xj-tgXY.js";import{e as T}from"./vendor-utils-OrZFrHBP.js";function $({messageType:n,onOpen:o,onClose:r}){const t=m.useRef(null),e=m.useRef(null),w=async s=>{setTimeout(()=>{try{r?.()}catch{}},10*1e3),t.current&&(clearInterval(e.current),t.current.close());const a=Math.random().toString(36).slice(2);t.current=window.open(`${g.WELLKNOWN_SERVICE_PATH_PREFIX}/open-window?key=${a}`,"_blank"),o?.(t.current),e.current=setInterval(()=>{(!t.current||t.current.closed)&&(t.current=null,clearInterval(e.current),setTimeout(()=>{r?.()},1100))},200),await Promise.resolve(s(t.current,c=>{if(!t.current){localStorage.setItem(`open-window-url-${a}`,JSON.stringify({url:c,time:Date.now()}));return}t.current.location.href=h(c,{allowDomains:null})}))},i=y(s=>{const{type:a,error:c}=s.data;t.current&&a===n&&c&&(E.error(c),r?.())});return m.useEffect(()=>(window.addEventListener("message",i),()=>{window.removeEventListener("message",i)}),[i]),w}const u={};function b(n){u[n]&&(clearTimeout(u[n]),delete u[n])}async function l(n,{interval:o=1e3,maxDuration:r=120*1e3,intervalFirst:t=4e3,timerKey:e=""}){u[e]&&clearTimeout(u[e]),await new Promise(s=>setTimeout(s,t));const w=Date.now(),i=async(s,a)=>{try{const c=await n();s(c)}catch(c){Date.now()-w>r?a(c):e?u[e]=setTimeout(()=>i(s,a),o):setTimeout(()=>i(s,a),o)}};return new Promise(i)}function j(){return Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2)+`${Date.now()}`.slice(-6)}function v(n,{did:o,projectId:r,messageId:t}){return l(async()=>{const e=await n.getProject({input:{did:o,projectId:r,messageId:t}});if(!e?.project?.blockletDid)throw new Error("Connected store not found");return e.project.blockletDid},{timerKey:"connect-studio"})}function O(n,{did:o,projectId:r,storeId:t}){return l(async()=>{const e=await n.getProject({input:{did:o,projectId:r,messageId:""}});if(!e?.project?.connectedStores?.length)throw new Error("Connected store not found");if(!e.project.connectedStores.find(i=>i.storeId===t))throw new Error("Connected store not found")},{timerKey:`connect-store-${t}`})}function M(n,{did:o,projectId:r,endpointId:t}){return l(async()=>{const e=await n.getProject({input:{did:o,projectId:r,messageId:""}});if(!e?.project?.connectedEndpoints?.length)throw new Error("Connected endpoint not found");if(!e.project.connectedEndpoints.find(i=>i.endpointId===t))throw new Error("Connected endpoint not found")},{timerKey:`connect-store-${t}`})}function R(n,{did:o,refresh:r,t,providerName:e,values:w,timerKey:i}){return l(async()=>{const{blocklet:s}=await n.getBlocklet({input:{did:o}}),a=T(s,"settings.aigne",{}),{url:c,key:f,provider:p}=a||{},{key:d}=w;if(p==="aigneHub"){if(!c||!f)throw new Error(t("setting.aigne.connectTimeOut",{provider:e}));if(d&&d===f)throw new Error(t("setting.aigne.connectTimeOut",{provider:e}));await r(),clearTimeout(u[`connect-aigne-${o}`])}else{if(!d||d!==f)throw new Error(t("setting.aigne.connectTimeOut",{provider:e}));await r(),clearTimeout(u[`connect-aigne-${o}`])}},{timerKey:i,maxDuration:3*60*1e3})}export{O as a,M as b,j as c,b as d,R as e,$ as u,v as w};
1
+ import{c as g}from"./index-BnPTSmJZ.js";import{H as E}from"./vendor-ux-D_B1Y7iC.js";import{b as y}from"./vendor-hooks-tpeT8a0P.js";import{r as m}from"./vendor-react-Dvs43sk9.js";import{g as h}from"./get-safe-url-BEmXir96.js";import{e as T}from"./vendor-utils-COYaMdo5.js";function $({messageType:n,onOpen:o,onClose:r}){const t=m.useRef(null),e=m.useRef(null),w=async s=>{setTimeout(()=>{try{r?.()}catch{}},10*1e3),t.current&&(clearInterval(e.current),t.current.close());const a=Math.random().toString(36).slice(2);t.current=window.open(`${g.WELLKNOWN_SERVICE_PATH_PREFIX}/open-window?key=${a}`,"_blank"),o?.(t.current),e.current=setInterval(()=>{(!t.current||t.current.closed)&&(t.current=null,clearInterval(e.current),setTimeout(()=>{r?.()},1100))},200),await Promise.resolve(s(t.current,c=>{if(!t.current){localStorage.setItem(`open-window-url-${a}`,JSON.stringify({url:c,time:Date.now()}));return}t.current.location.href=h(c,{allowDomains:null})}))},i=y(s=>{const{type:a,error:c}=s.data;t.current&&a===n&&c&&(E.error(c),r?.())});return m.useEffect(()=>(window.addEventListener("message",i),()=>{window.removeEventListener("message",i)}),[i]),w}const u={};function b(n){u[n]&&(clearTimeout(u[n]),delete u[n])}async function l(n,{interval:o=1e3,maxDuration:r=120*1e3,intervalFirst:t=4e3,timerKey:e=""}){u[e]&&clearTimeout(u[e]),await new Promise(s=>setTimeout(s,t));const w=Date.now(),i=async(s,a)=>{try{const c=await n();s(c)}catch(c){Date.now()-w>r?a(c):e?u[e]=setTimeout(()=>i(s,a),o):setTimeout(()=>i(s,a),o)}};return new Promise(i)}function j(){return Math.random().toString(36).slice(2)+Math.random().toString(36).slice(2)+`${Date.now()}`.slice(-6)}function v(n,{did:o,projectId:r,messageId:t}){return l(async()=>{const e=await n.getProject({input:{did:o,projectId:r,messageId:t}});if(!e?.project?.blockletDid)throw new Error("Connected store not found");return e.project.blockletDid},{timerKey:"connect-studio"})}function O(n,{did:o,projectId:r,storeId:t}){return l(async()=>{const e=await n.getProject({input:{did:o,projectId:r,messageId:""}});if(!e?.project?.connectedStores?.length)throw new Error("Connected store not found");if(!e.project.connectedStores.find(i=>i.storeId===t))throw new Error("Connected store not found")},{timerKey:`connect-store-${t}`})}function M(n,{did:o,projectId:r,endpointId:t}){return l(async()=>{const e=await n.getProject({input:{did:o,projectId:r,messageId:""}});if(!e?.project?.connectedEndpoints?.length)throw new Error("Connected endpoint not found");if(!e.project.connectedEndpoints.find(i=>i.endpointId===t))throw new Error("Connected endpoint not found")},{timerKey:`connect-store-${t}`})}function R(n,{did:o,refresh:r,t,providerName:e,values:w,timerKey:i}){return l(async()=>{const{blocklet:s}=await n.getBlocklet({input:{did:o}}),a=T(s,"settings.aigne",{}),{url:c,key:f,provider:p}=a||{},{key:d}=w;if(p==="aigneHub"){if(!c||!f)throw new Error(t("setting.aigne.connectTimeOut",{provider:e}));if(d&&d===f)throw new Error(t("setting.aigne.connectTimeOut",{provider:e}));await r(),clearTimeout(u[`connect-aigne-${o}`])}else{if(!d||d!==f)throw new Error(t("setting.aigne.connectTimeOut",{provider:e}));await r(),clearTimeout(u[`connect-aigne-${o}`])}},{timerKey:i,maxDuration:3*60*1e3})}export{O as a,M as b,j as c,b as d,R as e,$ as u,v as w};
@@ -1,4 +1,4 @@
1
- import{j as e,aY as h,ak as r,Q as l,aT as f}from"./vendor-mui-core-BFPsXaTR.js";import{c as u,N as w,A as j,B as y,r as g}from"./index-3yzleS_1.js";import{C as v}from"./config-space-CSl6D7xo.js";import{P as b}from"./vendor-arcblock-DGOH9a3F.js";import{V as k,E as C}from"./vendor-ux-CE4sOH7O.js";import{r as S}from"./vendor-react-Dvs43sk9.js";import{u as W,a as P,S as E,b as z,c as I,W as B}from"./wizard-components-B4yvBYZF.js";import"./vendor-utils-OrZFrHBP.js";import"./vendor-hooks-DmThWyyG.js";import"./spaces-Bu7-7u79.js";import"./api-txzyyizM.js";import"./lottie-web-4koyQiv_.js";import"./get-safe-url-3Xj-tgXY.js";import"./use-server-logo-CFlVReBS.js";import"./server-logo-notext.svg-CKQB0tIp.js";import"./use-mobile-DLnLSQQq.js";const D=f`
1
+ import{j as e,aY as h,ak as r,Q as l,aT as f}from"./vendor-mui-core-BPcN1m8_.js";import{c as u,N as w,A as j,B as y,r as g}from"./index-BnPTSmJZ.js";import{C as v}from"./config-space-uoEgpVj0.js";import{P as b}from"./vendor-arcblock-BzYItNIN.js";import{V as k,E as C}from"./vendor-ux-D_B1Y7iC.js";import{r as S}from"./vendor-react-Dvs43sk9.js";import{u as W,a as P,S as E,b as z,c as I,W as B}from"./wizard-components-C5WSLWm-.js";import"./vendor-utils-COYaMdo5.js";import"./vendor-hooks-tpeT8a0P.js";import"./spaces-Bqe6pnFj.js";import"./api-C7Kyuutl.js";import"./lottie-web-4koyQiv_.js";import"./get-safe-url-BEmXir96.js";import"./use-server-logo-uMEEt675.js";import"./server-logo-notext.svg-CKQB0tIp.js";import"./use-mobile-Bjbo_Gou.js";const D=f`
2
2
  html,
3
3
  body,
4
4
  #app,
@@ -1,5 +1,5 @@
1
1
  const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.__toCdnUrl("assets/vendor-ux-DYcPPYq2.css"),window.__toCdnUrl("assets/index-DrVXX4fX.css")])))=>i.map(i=>d[i]);
2
- import{j as e,at as E,ak as c,an as G,T as w,a6 as P,n as Y,W as r}from"./vendor-mui-core-BFPsXaTR.js";import{u as J,i as Z,r as o,l as ee,m as f,N as te}from"./vendor-react-Dvs43sk9.js";import{C as i}from"./vendor-utils-OrZFrHBP.js";import{c as b,l as se,a as ne,X as j,ag as T,ah as ie,ai as re,aj as A}from"./index-3yzleS_1.js";import{V as z,y as oe,_ as x}from"./vendor-ux-CE4sOH7O.js";import{g as $}from"./get-safe-url-3Xj-tgXY.js";import{u as ae}from"./use-server-logo-CFlVReBS.js";function Ce(t=`${b.WELLKNOWN_SERVICE_PATH_PREFIX}/setup`,d=!1,h=null){const{t:s}=z(),[g,y]=J(),p=Z(),{meta:n,blocklet:m,actions:a,launcherSession:N}=se(),O=localStorage.getItem("blocklet-server-url"),{session:S}=ne(),B=m?.environments?.find(u=>u.key===j.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_SPACE_ENDPOINT)?.value,D=ae({onClick:()=>{window.open($(O,{allowDomains:null}))}}),v=T("fromLauncher"),W=T("launcherUrl"),U=T("launchType"),R=T("visitorId");R&&(oe(R),g.delete("visitorId"),y(g)),o.useEffect(()=>{ie(),S.user&&(a?.refreshMeta(),a?.refreshBlocklet({showError:!1}))},[S.user]),o.useEffect(()=>{a.refreshFuel({showError:!1})},[m?.meta?.did]);const q=u=>{const l=u?.capabilities?.didSpace;return l?l===j.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED||l===j.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED_ON_SETUP?{key:"did-space",stepTitle:s("setup.steps.didSpace"),name:e.jsxs(e.Fragment,{children:[s("setup.steps.didSpace")," ",e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"did-space"),description:s("setup.didSpace.subTitle"),getButtonDisabled:()=>!B}:l===j.BLOCKLET_APP_SPACE_REQUIREMENT.OPTIONAL?{key:"did-space",stepTitle:s("setup.steps.didSpace"),name:e.jsx(e.Fragment,{children:s("setup.steps.didSpace")}),path:i(t,"did-space"),description:s("setup.didSpace.subTitle"),getButtonDisabled:()=>!1}:(console.warn(`capabilities.didSpace cannot take the value ${l}`),null):null},V=()=>{const{requirements:u}=n;return{key:"aigne",stepTitle:s("setup.steps.aigne"),name:e.jsxs(e.Fragment,{children:[s("setup.aigne.title")," ",u?.aigne&&e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"aigne"),description:s("setup.aigne.subTitle")}},_=[{key:"bind-account",stepTitle:s("setup.steps.connect"),name:s("setup.connectAccount.title"),path:i(t,"bind-account"),description:s("setup.connectAccount.subTitle")},{key:"access",stepTitle:s("setup.steps.access"),name:s("setup.accessControl.title"),path:i(t,"access"),description:s("setup.accessControl.subTitle")},V(),{key:"domain",stepTitle:s("setup.steps.domain"),name:s("setup.domain.title"),path:i(t,"domain"),description:s("setup.domain.subTitle")},q(m),d?{key:"branding",stepTitle:s("setup.steps.branding"),name:s("setup.branding.title"),path:i(t,"branding"),description:s("setup.branding.subTitle")}:{key:"config",stepTitle:s("setup.steps.config"),name:e.jsxs(e.Fragment,{children:[s("setup.steps.config")," ",re(n)&&e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"config"),description:s("setup.config.subTitle")},n?.requirements?.fuels?.length?{key:"fuel",stepTitle:s("setup.steps.fuel"),name:e.jsxs(e.Fragment,{children:[s("setup.steps.fuel")," ",e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"fuel"),description:s("setup.fuel.subTitle")}:null].filter(Boolean),k=_.findIndex(u=>`${A.replace(/\/$/,"")}${t}/${u.key}`===window.location.pathname),F=i(A,b.WELLKNOWN_SERVICE_PATH_PREFIX,`/blocklet/logo?v=${m?.updatedAt}`),K=async u=>{const{search:l}=new URL(window.location.href),Q=_[k];if(l.includes("from=empty")&&Q.key==="config"){window.open($(`${i(b.WELLKNOWN_BLOCKLET_ADMIN_PATH,"/overview/components")}${l}`));return}if(!u)_[k+1]?p(`${i(t,_[k+1].key)}${l}`):h?h():p(`${i(t,"complete")}${l}`);else{const L=_.findIndex(X=>X.key===u);L>-1?p(`${i(t,_[L].key)}${l}`):h?h():p(`${i(t,"complete")}${l}`)}await a.refreshBlocklet()},M=u=>{const{search:l}=new URL(window.location.href);p(`${i(t,u)}${l}`)},H=()=>{p(-1)},I=[{key:"install",name:s("launchBlocklet.steps.installApp"),path:i(t,"install")},{key:"setup",name:s("setup.steps.launchApp"),children:_}];let C=[{key:"agreement",name:s("launchBlocklet.introduction"),path:i(t,"agreement")},...I];return v&&(C=[{key:"purchase-space",name:s("launchBlocklet.steps.purchaseSpace")},{key:"prepare-space",name:s("launchBlocklet.steps.prepareSpace")},...I]),{meta:n,blocklet:m,actions:a,launcherSession:N,session:S,steps:_,stepIndex:k,totalSteps:C,fromLauncher:v,launcherUrl:W,launchType:U,logoUrl:F,logo:D,t:s,onNext:K,onPrevious:H,onStepClick:M}}const le=o.lazy(()=>x(()=>import("./connect-FvriLilq.js"),__vite__mapDeps([0,1]),import.meta.url)),ce=o.lazy(()=>x(()=>import("./bind-account-B_UMGXib.js"),__vite__mapDeps([0,1]),import.meta.url)),pe=o.lazy(()=>x(()=>import("./config-CPdtVTio.js"),__vite__mapDeps([0,1]),import.meta.url)),de=o.lazy(()=>x(()=>import("./index-D_HqsEfj.js"),__vite__mapDeps([0,1]),import.meta.url)),ue=o.lazy(()=>x(()=>import("./branding-CHRz3wuZ.js"),__vite__mapDeps([0,1]),import.meta.url)),me=o.lazy(()=>x(()=>import("./domain-Bq75ZuOm.js"),__vite__mapDeps([0,1]),import.meta.url)),ge=o.lazy(()=>x(()=>import("./access-control-C5AwSG3T.js"),__vite__mapDeps([0,1]),import.meta.url)),fe=o.lazy(()=>x(()=>import("./fuel-DkqmEB8D.js"),__vite__mapDeps([0,1]),import.meta.url)),xe=o.lazy(()=>x(()=>import("./aigne-DmDL-WLj.js"),__vite__mapDeps([0,1]),import.meta.url)),he=o.lazy(()=>x(()=>import("./complete-Bqi3d0V1.js"),__vite__mapDeps([0,1]),import.meta.url)),ye=E(c)`
2
+ import{j as e,at as E,ak as c,an as G,T as w,a6 as P,n as Y,W as r}from"./vendor-mui-core-BPcN1m8_.js";import{u as J,i as Z,r as o,l as ee,m as f,N as te}from"./vendor-react-Dvs43sk9.js";import{C as i}from"./vendor-utils-COYaMdo5.js";import{c as b,l as se,a as ne,X as j,ag as T,ah as ie,ai as re,aj as A}from"./index-BnPTSmJZ.js";import{V as z,y as oe,_ as x}from"./vendor-ux-D_B1Y7iC.js";import{g as $}from"./get-safe-url-BEmXir96.js";import{u as ae}from"./use-server-logo-uMEEt675.js";function Ce(t=`${b.WELLKNOWN_SERVICE_PATH_PREFIX}/setup`,d=!1,h=null){const{t:s}=z(),[g,y]=J(),p=Z(),{meta:n,blocklet:m,actions:a,launcherSession:N}=se(),O=localStorage.getItem("blocklet-server-url"),{session:S}=ne(),B=m?.environments?.find(u=>u.key===j.BLOCKLET_CONFIGURABLE_KEY.BLOCKLET_APP_SPACE_ENDPOINT)?.value,D=ae({onClick:()=>{window.open($(O,{allowDomains:null}))}}),v=T("fromLauncher"),W=T("launcherUrl"),U=T("launchType"),R=T("visitorId");R&&(oe(R),g.delete("visitorId"),y(g)),o.useEffect(()=>{ie(),S.user&&(a?.refreshMeta(),a?.refreshBlocklet({showError:!1}))},[S.user]),o.useEffect(()=>{a.refreshFuel({showError:!1})},[m?.meta?.did]);const q=u=>{const l=u?.capabilities?.didSpace;return l?l===j.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED||l===j.BLOCKLET_APP_SPACE_REQUIREMENT.REQUIRED_ON_SETUP?{key:"did-space",stepTitle:s("setup.steps.didSpace"),name:e.jsxs(e.Fragment,{children:[s("setup.steps.didSpace")," ",e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"did-space"),description:s("setup.didSpace.subTitle"),getButtonDisabled:()=>!B}:l===j.BLOCKLET_APP_SPACE_REQUIREMENT.OPTIONAL?{key:"did-space",stepTitle:s("setup.steps.didSpace"),name:e.jsx(e.Fragment,{children:s("setup.steps.didSpace")}),path:i(t,"did-space"),description:s("setup.didSpace.subTitle"),getButtonDisabled:()=>!1}:(console.warn(`capabilities.didSpace cannot take the value ${l}`),null):null},V=()=>{const{requirements:u}=n;return{key:"aigne",stepTitle:s("setup.steps.aigne"),name:e.jsxs(e.Fragment,{children:[s("setup.aigne.title")," ",u?.aigne&&e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"aigne"),description:s("setup.aigne.subTitle")}},_=[{key:"bind-account",stepTitle:s("setup.steps.connect"),name:s("setup.connectAccount.title"),path:i(t,"bind-account"),description:s("setup.connectAccount.subTitle")},{key:"access",stepTitle:s("setup.steps.access"),name:s("setup.accessControl.title"),path:i(t,"access"),description:s("setup.accessControl.subTitle")},V(),{key:"domain",stepTitle:s("setup.steps.domain"),name:s("setup.domain.title"),path:i(t,"domain"),description:s("setup.domain.subTitle")},q(m),d?{key:"branding",stepTitle:s("setup.steps.branding"),name:s("setup.branding.title"),path:i(t,"branding"),description:s("setup.branding.subTitle")}:{key:"config",stepTitle:s("setup.steps.config"),name:e.jsxs(e.Fragment,{children:[s("setup.steps.config")," ",re(n)&&e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"config"),description:s("setup.config.subTitle")},n?.requirements?.fuels?.length?{key:"fuel",stepTitle:s("setup.steps.fuel"),name:e.jsxs(e.Fragment,{children:[s("setup.steps.fuel")," ",e.jsx("span",{className:"required",children:"*"})]}),path:i(t,"fuel"),description:s("setup.fuel.subTitle")}:null].filter(Boolean),k=_.findIndex(u=>`${A.replace(/\/$/,"")}${t}/${u.key}`===window.location.pathname),F=i(A,b.WELLKNOWN_SERVICE_PATH_PREFIX,`/blocklet/logo?v=${m?.updatedAt}`),K=async u=>{const{search:l}=new URL(window.location.href),Q=_[k];if(l.includes("from=empty")&&Q.key==="config"){window.open($(`${i(b.WELLKNOWN_BLOCKLET_ADMIN_PATH,"/overview/components")}${l}`));return}if(!u)_[k+1]?p(`${i(t,_[k+1].key)}${l}`):h?h():p(`${i(t,"complete")}${l}`);else{const L=_.findIndex(X=>X.key===u);L>-1?p(`${i(t,_[L].key)}${l}`):h?h():p(`${i(t,"complete")}${l}`)}await a.refreshBlocklet()},M=u=>{const{search:l}=new URL(window.location.href);p(`${i(t,u)}${l}`)},H=()=>{p(-1)},I=[{key:"install",name:s("launchBlocklet.steps.installApp"),path:i(t,"install")},{key:"setup",name:s("setup.steps.launchApp"),children:_}];let C=[{key:"agreement",name:s("launchBlocklet.introduction"),path:i(t,"agreement")},...I];return v&&(C=[{key:"purchase-space",name:s("launchBlocklet.steps.purchaseSpace")},{key:"prepare-space",name:s("launchBlocklet.steps.prepareSpace")},...I]),{meta:n,blocklet:m,actions:a,launcherSession:N,session:S,steps:_,stepIndex:k,totalSteps:C,fromLauncher:v,launcherUrl:W,launchType:U,logoUrl:F,logo:D,t:s,onNext:K,onPrevious:H,onStepClick:M}}const le=o.lazy(()=>x(()=>import("./connect-Bg2fkKdJ.js"),__vite__mapDeps([0,1]),import.meta.url)),ce=o.lazy(()=>x(()=>import("./bind-account-DhXOE_rG.js"),__vite__mapDeps([0,1]),import.meta.url)),pe=o.lazy(()=>x(()=>import("./config-B-efbAjK.js"),__vite__mapDeps([0,1]),import.meta.url)),de=o.lazy(()=>x(()=>import("./index-Dz7IF3dR.js"),__vite__mapDeps([0,1]),import.meta.url)),ue=o.lazy(()=>x(()=>import("./branding-BQslHJ3k.js"),__vite__mapDeps([0,1]),import.meta.url)),me=o.lazy(()=>x(()=>import("./domain-orOrS-66.js"),__vite__mapDeps([0,1]),import.meta.url)),ge=o.lazy(()=>x(()=>import("./access-control-m0S6yUo8.js"),__vite__mapDeps([0,1]),import.meta.url)),fe=o.lazy(()=>x(()=>import("./fuel-DRu4UcZ3.js"),__vite__mapDeps([0,1]),import.meta.url)),xe=o.lazy(()=>x(()=>import("./aigne-CfRlP6kv.js"),__vite__mapDeps([0,1]),import.meta.url)),he=o.lazy(()=>x(()=>import("./complete-BpTFnpTf.js"),__vite__mapDeps([0,1]),import.meta.url)),ye=E(c)`
3
3
  background: ${({theme:t})=>Y(t.palette.primary.main,.05)};
4
4
  `,Le=E(c)`
5
5
  width: 100vw;
@@ -0,0 +1 @@
1
+ import{T as n}from"./vendor-ux-D_B1Y7iC.js";import{t as a}from"./index-B486VukG.js";import{j as r}from"./vendor-mui-core-BPcN1m8_.js";function m(t){return function(o){return r.jsx(n,{translations:a,children:r.jsx(t,{...o})})}}export{m as w};
@@ -1 +1 @@
1
- import{g as s}from"./vendor-react-Dvs43sk9.js";import{a5 as i}from"./index-3yzleS_1.js";function c(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const a=Object.getOwnPropertyDescriptor(e,r);a&&Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var f=i();const p=s(f),l=c({__proto__:null,default:p},[f]);export{l as z};
1
+ import{g as s}from"./vendor-react-Dvs43sk9.js";import{a5 as i}from"./index-BnPTSmJZ.js";function c(t,n){for(var o=0;o<n.length;o++){const e=n[o];if(typeof e!="string"&&!Array.isArray(e)){for(const r in e)if(r!=="default"&&!(r in t)){const a=Object.getOwnPropertyDescriptor(e,r);a&&Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}var f=i();const p=s(f),l=c({__proto__:null,default:p},[f]);export{l as z};
@@ -1,4 +1,4 @@
1
- const e={setup:{connect:{title:"设置 Blocklet Server",scan:"使用以下方法成为此节点的所有者",confirm:"请在 DID Wallet 上确认",success:"你已经成功成为节点的所有者"},keyPair:{title:"生成钥匙对",scan:"用你的 DID Wallet 为这个 Blocklet 生成钥匙对",confirm:"请在 DID Wallet 上确认",success:"你的钥匙对已经被安全存储"},verify:{title:"需要节点所有权证书",scan:"用你的 DID Wallet 提供所有权证书",confirm:"请在 DID Wallet 上确认",success:"你已经成功成为节点的所有者"},accept:{title:"接收节点需要所有权证书",scan:"用你的 DID Wallet 提供所有权证书",confirm:"请在 DID Wallet 上确认",success:"你已经成功成为节点的所有者"},title:"设置节点",steps:{eula:"最终用户许可协议",eulaFooter:"我已阅读并同意最终用户许可协议的条款",connect:"链接所有者的 DID Wallet ",verify:"验证所有权",basicSettings:"基础设置",launchApp:"启动应用",complete:"完成"},congratulation:"恭喜, 您的节点安全可用!",redirectButton:"查看节点仪表盘"},login:{login:"登录",termsOfUse:"服务条款",agreeTermsOfUse:"我已阅读并同意",loginTo:"连接 DID Wallet ",description:"只有节点的所有者和成员可以访问仪表盘",switchDid:{title:"切换账户",scan:"请使用以下方法添加账户",confirm:"在 DID Wallet 中确认切换",success:"切换成功"},switchSpecifiedDid:{title:"切换账号",scan:"你需要切换账号至 {did} 才能完成后续的操作",confirm:"在 DID Wallet 中确认切换",success:"切换成功"},connect:{title:"登录",scan:"只有节点所有者和成员才能访问控制面板",confirm:"在您的账户中确认",success:"登录成功"},verify:{title:"验证访问",scan:"连接你的 DID Wallet 以展示所有者或管理员通行证",confirm:"在你的 账户 中确认",success:"您的访问已验证",abort:"访问验证已终止",description:"您需要提供 {roles} 通行证才能执行此操作,在 1 小时的非活动状态后才会再次要求验证。",descriptionForDestroy:"您需要提供 {roles} 通行证以继续此操作以确保安全。"}},acceptServer:{title:"使用 Owner NFT 接收节点",tooltip:"如果你收到了 Owner NFT,你可以通过这个链接申请你的节点所有者通行证"},didConnect:{genKeyPair:{title:"创建应用 DID",scan:"使用以下方法生成一个应用 DID",success:"生成应用 DID 成功",successDesc:"生成应用 DID 已经成功完成,请继续您的操作 (后续发布需要使用生成该 DID 的钱包来进行操作)。"},common:{invalidSession:"会话无效",invalidSessionDesc:"会话不存在或已经过期",connectionError:"连接错误"}},exchangePassport:{title:"用 NFT 来获得通行证",success:"你已经成功获得通行证,并自动登录",tooltip1:"如果你拥有来自以下集合的 NFT,",tooltip2:"点击这里获得通行证",dialog:{title:"使用 NFT 获取通行证",scan:"连接 DID Wallet 出示 NFT 以获得通行证",confirm:"在钱包中选择 NFT",success:"通行证换取成功"},login:"登录"},payablePassport:{title:"Purchase passport with payment",tooltip:"If you do not have a passport, you can purchase a passport with this link."},sidebar:{dashboard:"仪表盘",blocklets:"Blocklets",console:"试验台",settings:"设置"},system:{total:"总计",used:"已使用",free:"空闲",cores:"核数",instances:"实例数"},common:{invalid:"无效",about:"关于",access:"访问",accessKey:"访问秘钥",action:"操作",actions:"操作",add:"添加",address:"地址",afterTime:"{time}后",allow:"允许",alreadyExist:"已经存在",approve:"同意",approved:"Approved",appUrl:"APP 链接",auditLogs:"审计记录",author:"作者",avatar:"头像",back:"返回",basic:"基础",basicInfo:"基础信息",profile:"信息",bind:"绑定",blocklet:"Blocklet",blocklets:"Blocklets",blockletsStorage:"Blocklets 存储",cacheStorage:"缓存存储",cancel:"取消",category:"日志分类",certificate:"证书",click:"点击复制",close:"关闭",selectAll:"全选",unselectAll:"取消全选",collapseAll:"收起全部",community:"社区 URL",complete:"完成",componentBasicInfo:"Blocklet 基础信息",components:"Blocklets",config:"配置",configuration:"配置",appearance:"外观",configNavigation:"导航",configSuccess:"设置成功",confirm:"确认",connect:"连接",console:"控制台",continue:"继续",continueWith:"确认继续",copiedTip:"已复制",copyAndClose:"复制并关闭",copyTip:"点击复制",coreStorage:"核心存储",cpu:"CPU",create:"创建",createSuccess:"创建成功",created:"创建于",createdAt:"创建时间",createdBy:"创建人",dAddress:"去中心化地址(DID)",dataStorage:"本地数据存储",delConfirm:"删除",delConfirmDescription:"确认删除 {data}?",delete:"删除",dependents:"被依赖",description:"描述",detail:"详情",did:"DID",disk:"磁盘",diskInfo:"磁盘信息",docker:"Docker?",documentation:"文档手册",domain:"域名",downgradeTo:"降级到",download:"下载",downloading:"下载中",edit:"编辑",email:"邮箱",phone:"电话",empty:"暂无",emptyData:"未找到结果",enable:"启用",engine:"引擎",env:"环境",environment:"环境变量",expandAll:"展开全部",expired:"已过期",expires:"过期时间",export:"导出",externalIp:"公网 IP",failed:"失败",filter:"筛选",fingerprint:"指纹",finish:"完成",forbid:"禁止",free:"免费",general:"通用",gitpod:"Gitpod?",goEULA:'点击查看"最终用户许可协议"',group:"分组",image:"镜像内?",install:"安装",installed:"已安装",installedAt:"安装时间",installSuccess:"安装成功",installing:"安装中",internalIp:"内网 IP",introduction:"介绍",invite:"邀请",inviting:"邀请中",ip:"IP",isPublic:"公开",issue:"颁发",issuer:"颁发者",item:"项",joined:"已加入",key:"键",lastPublishedAt:"发布时间",launcher:"启动器信息",leavePageTip:"是否确定离开当前页面?",link:"链接",loading:"加载中",log:"查看日志",logStorage:"日志存储",login:"登录",logo:"图标",logout:"退出",logs:"日志",manageTeam:"管理团队",marketplace:"市场",member:"成员",members:"成员",orgs:"组织",memory:"内存",meta:"元数据",analytics:"访问统计",runtime:"运行监控",traffic:"流量分析",less:"更少",more:"更多",mountPoint:"挂载点",name:"名称",next:"下一步",no:"否",noData:"暂无数据",notice:"请确认下面的信息",noticeTitle:"提示",notification:"通知",open:"打开",management:"管理",os:"操作系统",overview:"概览",owner:"所有者",page404:"404 页面",passport:"通行证",permission:"权限",port:"端口",pre:"上一步",preferences:"偏好",preview:"预览",protected:"受保护",protocol:"协议",purchase:"购买",readMore:"更多",redirect:"重定向",redirectCode:"重定向状态码",redirectPermanently:"永久重定向",redirectTemporary:"临时重定向",redirectUrl:"重定向 URL",rewriteUrl:"重写到 URL",rewrite:"重写",release:"发布",reject:"拒绝",reload:"优雅重启",remark:"备注",remove:"删除",removeSuccess:"删除成功",renew:"续期",reportIssue:"问题反馈",required:"必需的",requiredErrorText:"{name}是必填的",resource:"资源",restart:"重启",restore:"还原",retry:"重试",revoke:"撤销",role:"角色",running:"运行中",runtimeInfo:"运行信息",save:"保存",saveChanges:"保存",saveSuccess:"保存成功",scheduleFailed:"加入任务队列失败",scheduleSuccess:"成功加入任务队列",scope:"范围",screenshot:"屏幕截图",search:"搜索",security:"安全",serverDid:"服务器 DID",serverVersion:"服务器版本",setting:"设置",start:"启动",status:"状态",stop:"停止",storage:"存储",backup:"备份",store:"商店",succeeded:"成功",subscription:"订阅",support:"支持网址或邮箱",switch:"切换",team:"团队",the:"此",timeAgo:"{time}前",title:"名称",type:"类型",unavailable:"不可访问",update:"更新",updateAvailable:"可升级到新版本 v{version}",updatedAt:"更新时间",updatedBy:"更新人",upgrade:"升级",upgradeTo:"升级到",upgrading:"升级中",uptime:"运行时长",url:"URL",valid:"有效",value:"值",version:"版本号",visit:"访问",waiting:"等待中",webhook:"应用集成",yes:"是",invalidParam:"无效的参数",launch:"启动",price:"价格",redirecting:"跳转中",error:"错误",reminder:"提醒",normal:"正常",gateway:"网关",verifyNFT:"验证凭证",errorMessage:"错误信息:",slugifyHint:"最终生效的挂载点是: {value}",strategy:"策略",auto:"自动",manual:"手动",progress:"进行中",fileCount:"文件数量",fileSize:"文件大小",time:"时间",startTime:"开始时间",endTime:"结束时间",timeoutError:"超时错误",tags:"标签",connectToStore:"连接 Store",uploaded:"已上传",upload:"上传",blockletStudio:"Studio",visitStore:"访问 Store",reconnect:"重新连接",change:"更改",sourceApp:"所属应用",disconnect:"断开连接",visitTarget:"访问{name}",upgradeServer:"升级服务器",display:"外观",requiredInputPlaceholder:"请输入 {name}",refresh:"刷新",moveUp:"上移",moveDown:"下移",enabled:"已启用",disabled:"已禁用",homepage:"主页",buy:"购买",view:"查看",homepageTip:"主页或演示 URL",repository:"代码仓库",expand:"展开",collapse:"收起",all:"全部",notificationRecords:"通知",unrecordedUser:"未记录的名称",unrecordedRole:"未记录角色",auditLogsSearch:"搜索操作或内容",optional:"可选",bugOrConnectDomain:"购买或配置已有域名",bugOrConnectDomainTip:"域名是你在互联网上网站的唯一地址。 你可以从DID Names或任何域名注册商购买新域名,或者配置你已拥有的现有域名。",connectExistingDomain:"配置已有域名",domains:"域名",didDomains:"DID 域名",didDomainsDescription:"以下是由 DID:Names 服务自动管理的域名。",systemDomains:"默认域名",systemDomainsDescription:"以下是由系统自动分配的默认域名。这些域名可以正常访问,但仅供测试使用,请勿分享给您的客户。",manualDomains:"我的域名",manualDomainsDescription:"以下是由您手动配置指向此处的域名,但它由自己的域名提供商进行管理。",timeInfo:"时间",operator:"操作者",inviter:"邀请者",clear:"清除",ok:"OK",minutes:"分钟",hours:"小时",hour:"小时",days:"天",day:"天",weeks:"周",months:"月份",custom:"自定义",environments:"环境",sites:"站点",active:"活跃",backupTime:"备份时间",lastUsedAt:"上次使用时间",expiredAt:"过期日期",createdVia:"通过",neverExpired:"从不",baseInfo:"基本信息",otherInfo:"更多信息",lightMode:"浅色模式",darkMode:"深色模式",advancedConfig:"高级",document:"文档",mcpServers:"MCP 服务器",generate:"生成",copy:"复制",copied:"已复制"},blocklet:{external:"外部",notFound:"应用没有找到,可能已经被删除",installFromMarket:"从应用商店安装",installFromUrl:"通过 URL 安装",installFromCreate:"创建 Blocklet",installFromDiskBackup:"从此 Server 还原",installedAt:"安装时间",internal:"内部",startedAt:"启动时间",stoppedAt:"停止时间",urlEmptyTip:"无访问地址,",goToAddRule:"立即添加",services:"暴露的服务",upstreamPort:"上游端口",noService:"暂无服务",appId:"应用 DID",appPid:"永久性 DID",whyNeedAppPid:"如果你的应用曾经迁移过,永久性 DID 是最初安装这个 Blocklet 时产生的 DID",alsoKnownAs:"曾用 DID",skSource:"安装钱包",reloadSuccess:"应用重启成功",statusTip:"应用{status}",initialUptime:"少于1分钟",dashboard:"应用控制台",noComponent:"应用没有组件,无法启动",action:{stopDescription:"停止该 Blocklet 将会使页面不可以访问,可能会导致使用它的用户出现错误",stopComponentDescription:"停止该组件将会使页面不可以访问,可能会导致使用它的用户出现错误",confirmStop:"是的,停止",cancelDownloadDescription:"取消下载 {name} ?",removeApplicationDescription:"如果没有备份数据,删除应用将会删除所有数据,包括应用运行时产生的所有数据",removeApplicationAfterBackup:"备份后删除应用。 需要时您可以从此服务器恢复该应用",removeApplicationComplete:"直接删除应用程序和数据",removeComponentDescription:"如果没有备份数据,删除该组件将会删除所有数据,包括组件运行时产生的所有数据",removeComponentKeepData:"保留该组件的数据,只删除组件",removeComponentComplete:"删除组件和数据",confirmRemove:"是的, 删除",upgradeDescription:"升级 Blocklets 可能会导致其短暂不可用,是否要继续?",confirmUpgrade:"是的,升级吧",confirmRestart:"是的,重启吧",restartDescription:"服务会短暂暂停,并且有可能因为变更了配置无法启动",confirmComponentRemove:"是的,刪除它"},dev:{modeTip:"请将节点切换至 DEBUG 模式"},fromUrl:{title:"安装应用",label:"应用Meta URL",description:"URL 应指向应用的 Meta 文件。如果需要指向本地文件,请加上 file:// 前缀,如:file:///Users/foo/blocklet.json。",confirm:"安装",step0:"输入 URL",step1:"确认 Meta 信息",existTipPrefix:"已存在相同 DID 的应用, 版本为",existTipSuffix:",请安装更高版本。"},index:{tableTitle:"管理已安装 Blocklets",noBlocklet:"节点中还没有 Blocklet, 您可以从 Blocklet Store 中安装."},config:{changeImageTip:"提示:如果想更改图片,请点击预览图片进行更改。",name:"应用名称",description:"应用描述",logoSquare:"应用 Logo",logoRect:"网站 Logo",logoRectDesc:"使用于: 网站页眉和页脚,未配置则回退到应用 Logo",logoFavicon:"Favicon",logoFaviconDesc:"使用于:浏览器地址栏和标签页,未配置则回退到应用 Logo",clusterSize:"以 Cluster 模式启动时的实例数量",copyrightOwner:"版权所有者",copyrightYear:"版权 年份",advanced:"高级配置",deletable:{name:"删除保护",enable:"此应用当前不可被删除",disable:"此应用当前可以被删除"},walletType:{name:"钱包类型",description:"应用钱包类型,会影响派生出来的 DID"},languages:"支持的语言",selectLanguagesTip:"通过删除再添加来调整顺序",languagesSearch:"搜索国家的本地名称、英文名称或ISO代码..",passportColor:"通行证颜色",appUrl:"应用访问地址",access:{title:"谁能访问?",description:"选择你希望如何控制对你的应用程序的访问。",useDefault:"使用该应用默认配置",defaultDescription:"使用应用的默认配置",whoCanAccess:{all:{title:"面向所有人",description:"任何人都可以访问应用而不需要身份验证。"},owner:{title:"仅限所有者访问",description:"仅限拥有者访问应用。"},invited:{title:"仅限受邀访问",description:"只有受邀成员可以访问。"}},publicToStore:"在 Store 公开",publicInstanceTip:"此应用的访问地址将展示在 Store 中(同时也会展示你的 DID,用于接受捐赠)",updatedTip:"访问控制已修改"},changedTip:"配置已更新,请重启应用",missingRequired:"缺少启动应用的必填项",gotoFix:"去修复",environment:{key:"配置键",value:"配置值",keyValueRequired:"键和值不能为空",invalidKey:"键不能以 BLOCKLET_ 或 COMPONENT_ 开头",deleteForbidden:"该配置项是必填项,不能删除",tip:"包含 BWA_ 前缀的配置项不应该包含敏感信息,因为他们会被发送到前端页面"},dangerZone:"危险操作",sharedToAllComponents:"将共享给所有组件",session:{ttl:"如果用户在此网站上没有任何活动 {day} 天,将被要求重新登录",day:"{day} 天",days:"{day} 天",period:"会话有效期",profile:"用户个人资料要求",cacheTtl:"用户会话数据的缓存持续时间(以秒为单位)",fullNameEnabled:"登录时请求用户名(默认启用)",avatarEnabled:"登录时请求用户头像(默认启用)",emailEnabled:"在登录时请求用户电子邮箱",emailRequireVerified:"要求用户在登录前验证电子邮箱",emailRequireUnique:"要求用户电子邮箱在所有用户中是唯一的",phoneEnabled:"在登录时请求用户电话号码(目前不支持)",phoneRequireVerified:"在登录前要求用户验证电话号码",phoneRequireUnique:"要求用户电话号码在所有用户中是唯一的",emailTrustOauthProviders:"信任OAuth提供商进行电子邮箱验证状态",enableDomainBlackList:"启用电子邮箱域黑名单(拒绝列出的电子邮箱域)",enableDomainWhiteList:"启用电子邮箱域白名单(仅允许列出的电子邮箱域登录)",addDomain:"添加源以获取列表(纯文本格式,每行一个域名)",enableBlacklist:"启用登录令牌撤销功能",experimentalSettings:"实验性设置"},clearCache:{name:"缓存管理",purpose:"管理缓存在网关和服务中的文件",title:"确认清除缓存?",action:"清除缓存",success:"成功清除了 {count} 个缓存条目",description:"您确定要清除缓存在网关和服务中的文件吗?此操作可能会在短期内导致轻微的性能降低。"},tenantMode:{name:"多租户模式",multiple:"该应用在多租户模式下运行,每个租户的数据应该是隔离的",single:"该应用运行在单租户模式下,所有数据都是共享的"},splashPortrait:"启动画面",splashLandscape:"横屏缩略图",splashPortraitDesc:"ArcSphere 应用启动时显示。推荐使用 PNG 或 JPG 格式,纵向比例为 9:16,横向比例为 16:9(最大 5MB)",rotateSessionKey:{name:"会话密钥轮换",purpose:"会话 salt 是用于增强会话令牌安全性的随机值。点击按钮手动旋转会话 salt,以帮助降低登录令牌被盗的风险。",title:"确认会话密钥轮换吗?",action:"轮换密钥",success:"会话密钥轮换成功",description:"你确定要轮换会话密钥吗?此操作将使所有现有的登录令牌失效,并强制用户重新登录,包括你自己的登录令牌。"},ogImage:"Open Graph 背景",ogImageDesc:"使用于:社交媒体分享背景",migrate:{button:"更新应用 DID",title:"确认更新应用 DID",description:"如果您使用服务器管理的钱包启动,您可以将应用程序 DID 更改为您自己的钱包。",confirm:"您确定要更新应用 DID 吗?此操作将使所有现有会话失效,并强制用户重新登录,包括您自己的会话。"},vault:{name:"冷钱包 DID",title:"设置冷钱包",desc:"使用冷钱包为这个 Blocklet 管理的资金增加一层额外的安全保障。",tip:"输入冷钱包地址继续,你需要证明冷钱包地址的所有权才能使用。",address:"冷钱包地址",verified:"冷钱包已验证",current:"当前冷钱包",error:{invalid:"冷钱包地址必须是有效的 DID",holder:"Vault地址必须是区块链上有效的代币持有者,不支持token/asset/factory/stake地址。",duplicate:"此冷钱包地址已被使用,请使用其他地址",appDid:"不能使用应用 DID 作为冷钱包地址,请使用不同的地址"},role:"账户类型",firstSeen:"首次见到",lastSeen:"上次见到",migratedFrom:"迁移自",migratedTo:"迁移到",commit:{title:"验证冷钱包所有权",scan:"使用以下方法以验证冷钱包的所有权",confirm:"确认使用 DID Wallet",success:"冷钱包配置成功"},approve:{title:"批准冷钱包变更",byOwner:"使用 Blocklet 所有者签名以批准更改",byLast:"使用上个冷钱包签名以批准更改",confirm:"在 DID Wallet 上确认",success:"冷钱包变更已批准"}},baseInfo:"应用信息",baseInfoDesc:"这里可以设置网站的基本信息。",logoSettings:"视觉信息",logoSettingsDesc:"塑造独特的品牌形象,提升网站在各种场景下的辨识度和视觉吸引力。",languagesDesc:"使用于:访客语言选择",nameDesc:"使用于:DID Connect 头部,浏览器标签页,网站页脚,SEO 和 OpenGraph",descriptionDesc:"使用于:SEO 和 OpenGraph",logoSquareDesc:"用于:用户身份验证对话框页脚和 <b>DID Wallet</b> 应用列表",logoDesc:"推荐尺寸:{width} * {height} 像素",splashDesc:`ArcSphere 应用启动画面 (如果已配置,将在 <b>ArcSphere</b> 中显示)
1
+ const e={setup:{connect:{title:"设置 Blocklet Server",scan:"使用以下方法成为此节点的所有者",confirm:"请在 DID Wallet 上确认",success:"你已经成功成为节点的所有者"},keyPair:{title:"生成钥匙对",scan:"用你的 DID Wallet 为这个 Blocklet 生成钥匙对",confirm:"请在 DID Wallet 上确认",success:"你的钥匙对已经被安全存储"},verify:{title:"需要节点所有权证书",scan:"用你的 DID Wallet 提供所有权证书",confirm:"请在 DID Wallet 上确认",success:"你已经成功成为节点的所有者"},accept:{title:"接收节点需要所有权证书",scan:"用你的 DID Wallet 提供所有权证书",confirm:"请在 DID Wallet 上确认",success:"你已经成功成为节点的所有者"},title:"设置节点",steps:{eula:"最终用户许可协议",eulaFooter:"我已阅读并同意最终用户许可协议的条款",connect:"链接所有者的 DID Wallet ",verify:"验证所有权",basicSettings:"基础设置",launchApp:"启动应用",complete:"完成"},congratulation:"恭喜, 您的节点安全可用!",redirectButton:"查看节点仪表盘"},login:{login:"登录",termsOfUse:"服务条款",agreeTermsOfUse:"我已阅读并同意",loginTo:"连接 DID Wallet ",description:"只有节点的所有者和成员可以访问仪表盘",switchDid:{title:"切换账户",scan:"请使用以下方法添加账户",confirm:"在 DID Wallet 中确认切换",success:"切换成功"},switchSpecifiedDid:{title:"切换账号",scan:"你需要切换账号至 {did} 才能完成后续的操作",confirm:"在 DID Wallet 中确认切换",success:"切换成功"},connect:{title:"登录",scan:"只有节点所有者和成员才能访问控制面板",confirm:"在您的账户中确认",success:"登录成功"},verify:{title:"验证访问",scan:"连接你的 DID Wallet 以展示所有者或管理员通行证",confirm:"在你的 账户 中确认",success:"您的访问已验证",abort:"访问验证已终止",description:"您需要提供 {roles} 通行证才能执行此操作,在 1 小时的非活动状态后才会再次要求验证。",descriptionForDestroy:"您需要提供 {roles} 通行证以继续此操作以确保安全。"}},acceptServer:{title:"使用 Owner NFT 接收节点",tooltip:"如果你收到了 Owner NFT,你可以通过这个链接申请你的节点所有者通行证"},didConnect:{genKeyPair:{title:"创建应用 DID",scan:"使用以下方法生成一个应用 DID",success:"生成应用 DID 成功",successDesc:"生成应用 DID 已经成功完成,请继续您的操作 (后续发布需要使用生成该 DID 的钱包来进行操作)。"},common:{invalidSession:"会话无效",invalidSessionDesc:"会话不存在或已经过期",connectionError:"连接错误"}},exchangePassport:{title:"用 NFT 来获得通行证",success:"你已经成功获得通行证,并自动登录",tooltip1:"如果你拥有来自以下集合的 NFT,",tooltip2:"点击这里获得通行证",dialog:{title:"使用 NFT 获取通行证",scan:"连接 DID Wallet 出示 NFT 以获得通行证",confirm:"在钱包中选择 NFT",success:"通行证换取成功"},login:"登录"},payablePassport:{title:"Purchase passport with payment",tooltip:"If you do not have a passport, you can purchase a passport with this link."},sidebar:{dashboard:"仪表盘",blocklets:"Blocklets",console:"试验台",settings:"设置"},system:{total:"总计",used:"已使用",free:"空闲",cores:"核数",instances:"实例数"},common:{invalid:"无效",about:"关于",access:"访问",accessKey:"访问秘钥",action:"操作",actions:"操作",add:"添加",address:"地址",afterTime:"{time}后",allow:"允许",alreadyExist:"已经存在",approve:"同意",approved:"Approved",appUrl:"APP 链接",auditLogs:"审计记录",author:"作者",avatar:"头像",back:"返回",basic:"基础",basicInfo:"基础信息",profile:"信息",bind:"绑定",blocklet:"Blocklet",blocklets:"Blocklets",blockletsStorage:"Blocklets 存储",cacheStorage:"缓存存储",cancel:"取消",category:"日志分类",certificate:"证书",click:"点击复制",close:"关闭",selectAll:"全选",unselectAll:"取消全选",collapseAll:"收起全部",community:"社区 URL",complete:"完成",componentBasicInfo:"Blocklet 基础信息",components:"Blocklets",config:"配置",configuration:"配置",appearance:"外观",configNavigation:"导航",configSuccess:"设置成功",confirm:"确认",connect:"连接",console:"控制台",continue:"继续",continueWith:"确认继续",copiedTip:"已复制",copyAndClose:"复制并关闭",copyTip:"点击复制",coreStorage:"核心存储",cpu:"CPU",create:"创建",createSuccess:"创建成功",created:"创建于",createdAt:"创建时间",createdBy:"创建人",dAddress:"去中心化地址(DID)",dataStorage:"本地数据存储",delConfirm:"删除",delConfirmDescription:"确认删除 {data}?",delete:"删除",dependents:"被依赖",description:"描述",detail:"详情",did:"DID",disk:"磁盘",diskInfo:"磁盘信息",docker:"Docker?",documentation:"文档手册",domain:"域名",downgradeTo:"降级到",download:"下载",downloading:"下载中",edit:"编辑",email:"邮箱",phone:"电话",empty:"暂无",emptyData:"未找到结果",enable:"启用",engine:"引擎",env:"环境",environment:"环境变量",expandAll:"展开全部",expired:"已过期",expires:"过期时间",export:"导出",externalIp:"公网 IP",failed:"失败",filter:"筛选",fingerprint:"指纹",finish:"完成",forbid:"禁止",free:"免费",general:"通用",gitpod:"Gitpod?",goEULA:'点击查看"最终用户许可协议"',group:"分组",image:"镜像内?",install:"安装",installed:"已安装",installedAt:"安装时间",installSuccess:"安装成功",installing:"安装中",internalIp:"内网 IP",introduction:"介绍",invite:"邀请",inviting:"邀请中",ip:"IP",isPublic:"公开",issue:"颁发",issuer:"颁发者",item:"项",joined:"已加入",key:"键",lastPublishedAt:"发布时间",launcher:"启动器信息",leavePageTip:"是否确定离开当前页面?",link:"链接",loading:"加载中",log:"查看日志",logStorage:"日志存储",login:"登录",logo:"图标",logout:"退出",logs:"日志",manageTeam:"管理团队",marketplace:"市场",member:"成员",members:"成员",orgs:"组织",memory:"内存",meta:"元数据",analytics:"访问统计",runtime:"运行监控",traffic:"流量分析",less:"更少",more:"更多",mountPoint:"挂载点",name:"名称",next:"下一步",no:"否",noData:"暂无数据",notice:"请确认下面的信息",noticeTitle:"提示",notification:"通知",open:"打开",management:"管理",os:"操作系统",overview:"概览",owner:"所有者",page404:"404 页面",passport:"通行证",permission:"权限",port:"端口",pre:"上一步",preferences:"偏好",preview:"预览",protected:"受保护",protocol:"协议",purchase:"购买",readMore:"更多",redirect:"重定向",redirectCode:"重定向状态码",redirectPermanently:"永久重定向",redirectTemporary:"临时重定向",redirectUrl:"重定向 URL",rewriteUrl:"重写到 URL",rewrite:"重写",release:"发布",reject:"拒绝",reload:"优雅重启",remark:"备注",remove:"删除",removeSuccess:"删除成功",renew:"续期",reportIssue:"问题反馈",required:"必需的",requiredErrorText:"{name}是必填的",resource:"资源",restart:"重启",restore:"还原",retry:"重试",revoke:"撤销",role:"角色",running:"运行中",runtimeInfo:"运行信息",save:"保存",saveChanges:"保存",saveSuccess:"保存成功",scheduleFailed:"加入任务队列失败",scheduleSuccess:"成功加入任务队列",scope:"范围",screenshot:"屏幕截图",search:"搜索",security:"安全",serverDid:"服务器 DID",serverVersion:"服务器版本",setting:"设置",start:"启动",status:"状态",stop:"停止",storage:"存储",backup:"备份",store:"商店",succeeded:"成功",subscription:"订阅",support:"支持网址或邮箱",switch:"切换",team:"团队",the:"此",timeAgo:"{time}前",title:"名称",type:"类型",unavailable:"不可访问",update:"更新",updateAvailable:"可升级到新版本 v{version}",updatedAt:"更新时间",updatedBy:"更新人",upgrade:"升级",upgradeTo:"升级到",upgrading:"升级中",uptime:"运行时长",url:"URL",valid:"有效",value:"值",version:"版本号",visit:"访问",waiting:"等待中",webhook:"应用集成",yes:"是",invalidParam:"无效的参数",launch:"启动",price:"价格",redirecting:"跳转中",error:"错误",reminder:"提醒",normal:"正常",gateway:"网关",verifyNFT:"验证凭证",errorMessage:"错误信息:",slugifyHint:"最终生效的挂载点是: {value}",strategy:"策略",auto:"自动",manual:"手动",progress:"进行中",fileCount:"文件数量",fileSize:"文件大小",time:"时间",startTime:"开始时间",endTime:"结束时间",timeoutError:"超时错误",tags:"标签",connectToStore:"连接 Store",uploaded:"已上传",upload:"上传",blockletStudio:"Studio",visitStore:"访问 Store",reconnect:"重新连接",change:"更改",sourceApp:"所属应用",disconnect:"断开连接",visitTarget:"访问{name}",upgradeServer:"升级服务器",display:"外观",requiredInputPlaceholder:"请输入 {name}",refresh:"刷新",moveUp:"上移",moveDown:"下移",enabled:"已启用",disabled:"已禁用",homepage:"主页",buy:"购买",view:"查看",homepageTip:"主页或演示 URL",repository:"代码仓库",expand:"展开",collapse:"收起",all:"全部",notificationRecords:"通知",unrecordedUser:"未记录的名称",unrecordedRole:"未记录角色",auditLogsSearch:"搜索操作或内容",optional:"可选",bugOrConnectDomain:"购买或配置已有域名",bugOrConnectDomainTip:"域名是你在互联网上网站的唯一地址。 你可以从DID Names或任何域名注册商购买新域名,或者配置你已拥有的现有域名。",connectExistingDomain:"配置已有域名",domains:"域名",didDomains:"DID 域名",didDomainsDescription:"以下是由 DID:Names 服务自动管理的域名。",systemDomains:"默认域名",systemDomainsDescription:"以下是由系统自动分配的默认域名。这些域名可以正常访问,但仅供测试使用,请勿分享给您的客户。",manualDomains:"我的域名",manualDomainsDescription:"以下是由您手动配置指向此处的域名,但它由自己的域名提供商进行管理。",timeInfo:"时间",operator:"操作者",inviter:"邀请者",clear:"清除",ok:"OK",minutes:"分钟",hours:"小时",hour:"小时",days:"天",day:"天",weeks:"周",months:"月份",custom:"自定义",environments:"环境",sites:"站点",active:"活跃",backupTime:"备份时间",lastUsedAt:"上次使用时间",expiredAt:"过期日期",createdVia:"通过",neverExpired:"从不",baseInfo:"基本信息",otherInfo:"更多信息",lightMode:"浅色模式",darkMode:"深色模式",advancedConfig:"高级",document:"文档",mcpServers:"MCP 服务器",generate:"生成",copy:"复制",copied:"已复制",userSessions:"用户会话"},blocklet:{external:"外部",notFound:"应用没有找到,可能已经被删除",installFromMarket:"从应用商店安装",installFromUrl:"通过 URL 安装",installFromCreate:"创建 Blocklet",installFromDiskBackup:"从此 Server 还原",installedAt:"安装时间",internal:"内部",startedAt:"启动时间",stoppedAt:"停止时间",urlEmptyTip:"无访问地址,",goToAddRule:"立即添加",services:"暴露的服务",upstreamPort:"上游端口",noService:"暂无服务",appId:"应用 DID",appPid:"永久性 DID",whyNeedAppPid:"如果你的应用曾经迁移过,永久性 DID 是最初安装这个 Blocklet 时产生的 DID",alsoKnownAs:"曾用 DID",skSource:"安装钱包",reloadSuccess:"应用重启成功",statusTip:"应用{status}",initialUptime:"少于1分钟",dashboard:"应用控制台",noComponent:"应用没有组件,无法启动",action:{stopDescription:"停止该 Blocklet 将会使页面不可以访问,可能会导致使用它的用户出现错误",stopComponentDescription:"停止该组件将会使页面不可以访问,可能会导致使用它的用户出现错误",confirmStop:"是的,停止",cancelDownloadDescription:"取消下载 {name} ?",removeApplicationDescription:"如果没有备份数据,删除应用将会删除所有数据,包括应用运行时产生的所有数据",removeApplicationAfterBackup:"备份后删除应用。 需要时您可以从此服务器恢复该应用",removeApplicationComplete:"直接删除应用程序和数据",removeComponentDescription:"如果没有备份数据,删除该组件将会删除所有数据,包括组件运行时产生的所有数据",removeComponentKeepData:"保留该组件的数据,只删除组件",removeComponentComplete:"删除组件和数据",confirmRemove:"是的, 删除",upgradeDescription:"升级 Blocklets 可能会导致其短暂不可用,是否要继续?",confirmUpgrade:"是的,升级吧",confirmRestart:"是的,重启吧",restartDescription:"服务会短暂暂停,并且有可能因为变更了配置无法启动",confirmComponentRemove:"是的,刪除它"},dev:{modeTip:"请将节点切换至 DEBUG 模式"},fromUrl:{title:"安装应用",label:"应用Meta URL",description:"URL 应指向应用的 Meta 文件。如果需要指向本地文件,请加上 file:// 前缀,如:file:///Users/foo/blocklet.json。",confirm:"安装",step0:"输入 URL",step1:"确认 Meta 信息",existTipPrefix:"已存在相同 DID 的应用, 版本为",existTipSuffix:",请安装更高版本。"},index:{tableTitle:"管理已安装 Blocklets",noBlocklet:"节点中还没有 Blocklet, 您可以从 Blocklet Store 中安装."},config:{changeImageTip:"提示:如果想更改图片,请点击预览图片进行更改。",name:"应用名称",description:"应用描述",logoSquare:"应用 Logo",logoRect:"网站 Logo",logoRectDesc:"使用于: 网站页眉和页脚,未配置则回退到应用 Logo",logoFavicon:"Favicon",logoFaviconDesc:"使用于:浏览器地址栏和标签页,未配置则回退到应用 Logo",clusterSize:"以 Cluster 模式启动时的实例数量",copyrightOwner:"版权所有者",copyrightYear:"版权 年份",advanced:"高级配置",deletable:{name:"删除保护",enable:"此应用当前不可被删除",disable:"此应用当前可以被删除"},walletType:{name:"钱包类型",description:"应用钱包类型,会影响派生出来的 DID"},languages:"支持的语言",selectLanguagesTip:"通过删除再添加来调整顺序",languagesSearch:"搜索国家的本地名称、英文名称或ISO代码..",passportColor:"通行证颜色",appUrl:"应用访问地址",access:{title:"谁能访问?",description:"选择你希望如何控制对你的应用程序的访问。",useDefault:"使用该应用默认配置",defaultDescription:"使用应用的默认配置",whoCanAccess:{all:{title:"面向所有人",description:"任何人都可以访问应用而不需要身份验证。"},owner:{title:"仅限所有者访问",description:"仅限拥有者访问应用。"},invited:{title:"仅限受邀访问",description:"只有受邀成员可以访问。"}},publicToStore:"在 Store 公开",publicInstanceTip:"此应用的访问地址将展示在 Store 中(同时也会展示你的 DID,用于接受捐赠)",updatedTip:"访问控制已修改"},changedTip:"配置已更新,请重启应用",missingRequired:"缺少启动应用的必填项",gotoFix:"去修复",environment:{key:"配置键",value:"配置值",keyValueRequired:"键和值不能为空",invalidKey:"键不能以 BLOCKLET_ 或 COMPONENT_ 开头",deleteForbidden:"该配置项是必填项,不能删除",tip:"包含 BWA_ 前缀的配置项不应该包含敏感信息,因为他们会被发送到前端页面"},dangerZone:"危险操作",sharedToAllComponents:"将共享给所有组件",session:{ttl:"如果用户在此网站上没有任何活动 {day} 天,将被要求重新登录",day:"{day} 天",days:"{day} 天",period:"会话有效期",profile:"用户个人资料要求",cacheTtl:"用户会话数据的缓存持续时间(以秒为单位)",fullNameEnabled:"登录时请求用户名(默认启用)",avatarEnabled:"登录时请求用户头像(默认启用)",emailEnabled:"在登录时请求用户电子邮箱",emailRequireVerified:"要求用户在登录前验证电子邮箱",emailRequireUnique:"要求用户电子邮箱在所有用户中是唯一的",phoneEnabled:"在登录时请求用户电话号码(目前不支持)",phoneRequireVerified:"在登录前要求用户验证电话号码",phoneRequireUnique:"要求用户电话号码在所有用户中是唯一的",emailTrustOauthProviders:"信任OAuth提供商进行电子邮箱验证状态",enableDomainBlackList:"启用电子邮箱域黑名单(拒绝列出的电子邮箱域)",enableDomainWhiteList:"启用电子邮箱域白名单(仅允许列出的电子邮箱域登录)",addDomain:"添加源以获取列表(纯文本格式,每行一个域名)",enableBlacklist:"启用登录令牌撤销功能",experimentalSettings:"实验性设置"},clearCache:{name:"缓存管理",purpose:"管理缓存在网关和服务中的文件",title:"确认清除缓存?",action:"清除缓存",success:"成功清除了 {count} 个缓存条目",description:"您确定要清除缓存在网关和服务中的文件吗?此操作可能会在短期内导致轻微的性能降低。"},tenantMode:{name:"多租户模式",multiple:"该应用在多租户模式下运行,每个租户的数据应该是隔离的",single:"该应用运行在单租户模式下,所有数据都是共享的"},splashPortrait:"启动画面",splashLandscape:"横屏缩略图",splashPortraitDesc:"ArcSphere 应用启动时显示。推荐使用 PNG 或 JPG 格式,纵向比例为 9:16,横向比例为 16:9(最大 5MB)",rotateSessionKey:{name:"会话密钥轮换",purpose:"会话 salt 是用于增强会话令牌安全性的随机值。点击按钮手动旋转会话 salt,以帮助降低登录令牌被盗的风险。",title:"确认会话密钥轮换吗?",action:"轮换密钥",success:"会话密钥轮换成功",description:"你确定要轮换会话密钥吗?此操作将使所有现有的登录令牌失效,并强制用户重新登录,包括你自己的登录令牌。"},ogImage:"Open Graph 背景",ogImageDesc:"使用于:社交媒体分享背景",migrate:{button:"更新应用 DID",title:"确认更新应用 DID",description:"如果您使用服务器管理的钱包启动,您可以将应用程序 DID 更改为您自己的钱包。",confirm:"您确定要更新应用 DID 吗?此操作将使所有现有会话失效,并强制用户重新登录,包括您自己的会话。"},vault:{name:"冷钱包 DID",title:"设置冷钱包",desc:"使用冷钱包为这个 Blocklet 管理的资金增加一层额外的安全保障。",tip:"输入冷钱包地址继续,你需要证明冷钱包地址的所有权才能使用。",address:"冷钱包地址",verified:"冷钱包已验证",current:"当前冷钱包",error:{invalid:"冷钱包地址必须是有效的 DID",holder:"Vault地址必须是区块链上有效的代币持有者,不支持token/asset/factory/stake地址。",duplicate:"此冷钱包地址已被使用,请使用其他地址",appDid:"不能使用应用 DID 作为冷钱包地址,请使用不同的地址"},role:"账户类型",firstSeen:"首次见到",lastSeen:"上次见到",migratedFrom:"迁移自",migratedTo:"迁移到",commit:{title:"验证冷钱包所有权",scan:"使用以下方法以验证冷钱包的所有权",confirm:"确认使用 DID Wallet",success:"冷钱包配置成功"},approve:{title:"批准冷钱包变更",byOwner:"使用 Blocklet 所有者签名以批准更改",byLast:"使用上个冷钱包签名以批准更改",confirm:"在 DID Wallet 上确认",success:"冷钱包变更已批准"}},baseInfo:"应用信息",baseInfoDesc:"这里可以设置网站的基本信息。",logoSettings:"视觉信息",logoSettingsDesc:"塑造独特的品牌形象,提升网站在各种场景下的辨识度和视觉吸引力。",languagesDesc:"使用于:访客语言选择",nameDesc:"使用于:DID Connect 头部,浏览器标签页,网站页脚,SEO 和 OpenGraph",descriptionDesc:"使用于:SEO 和 OpenGraph",logoSquareDesc:"用于:用户身份验证对话框页脚和 <b>DID Wallet</b> 应用列表",logoDesc:"推荐尺寸:{width} * {height} 像素",splashDesc:`ArcSphere 应用启动画面 (如果已配置,将在 <b>ArcSphere</b> 中显示)
2
2
 
3
3
  纵向模式:
4
4
  比例:9:16
@@ -1,4 +1,4 @@
1
- const e={setup:{connect:{title:"需要簽名",scan:"連接您的DID錢包以成為此伺服器的擁有者",confirm:"請在您的DID錢包上檢查此操作",success:"您的帳戶已連接到此伺服器"},keyPair:{title:"需要衍生金鑰對",scan:"連接您的DID錢包以為此應用程式產生一對密鑰",confirm:"請在您的 DID 錢包上查看此操作",success:"您的金鑰對安全儲存"},verify:{title:"需要擁有權憑證",scan:"連接您的DID錢包以提供所有權憑證",confirm:"請在您的DID錢包上檢查此操作",success:"您的帳戶已連線到此伺服器"},accept:{title:"接受伺服器要求的所有權證書",scan:"連接您的DID錢包以提供所有權憑證",confirm:"請在您的DID錢包上檢查此操作",success:"您的帳戶已連接到此伺服器"},title:"設置 Blocklet Server ",steps:{eula:"最終用戶許可協議",eulaFooter:"我已閱讀並同意 EULA 條款",connect:"連接所有者DID錢包",verify:"驗證所有權",basicSettings:"基本設置",launchApp:"啟動應用程式",complete:"完成"},congratulation:"恭喜你!你的Blocklet伺服器已經安全且準備好使用。",redirectButton:"帶我去儀表板!"},login:{loginTo:"連接到",description:"只有伺服器所有者和已核准的成員才能存取儀表板",switchDid:{title:"切換DID錢包",scan:"掃描以下 QR 碼以切換帳號",confirm:"確認在您的DID錢包中切換",success:"成功切換"},switchSpecifiedDid:{title:"切換 DID 錢包",scan:"你需要切換 DID 至 {did} 以完成以下操作",confirm:"確認在您的DID錢包中切換",success:"成功切換"},connect:{title:"連接DID錢包",scan:"連接您的DID錢包以提供通行證",confirm:"在您的帳戶中確認",success:"您已成功連線"},verify:{title:"驗證訪問",scan:"連接你的 DID 錢包以展示所有者或管理員通行證",confirm:"在你的 帳戶 中確認",success:"您的訪問已驗證",abort:"存取驗證已中止",description:"您需要提供 {roles} 通行證才能執行此操作,在 1 小時的非活動狀態後才會再次要求驗證。",descriptionForDestroy:"您需要提供 {roles} 通行證以繼續此操作以確保安全。"},login:"連接",termsOfUse:"使用條款",agreeTermsOfUse:"我已閱讀並同意適用的"},acceptServer:{title:"使用所有權NFT索取伺服器",tooltip:"如果您收到了一枚伺服器所有權 NFT,您可以使用此連結來領取您的所有者通行證。"},exchangePassport:{title:"用NFT交換通行證",success:"您已成功交換您的通行證並使用通行證登錄",login:"登入",dialog:{title:"使用NFT取得通行證",scan:"連接您的DID錢包,展示您的NFT以獲得通行證",confirm:"在您的DID錢包上選擇NFT",success:"通行證成功換取"},tooltip1:"如果你擁有來自該系列的NFT,",tooltip2:"你可以透過此連結兌換你的護照。"},payablePassport:{title:"購買並付款通行證",tooltip:"如果您沒有通行證,您可以使用此連結購買通行證。"},sidebar:{dashboard:"儀表板",blocklets:"Blocklets",console:"控制台",settings:"設定"},system:{total:"總共",used:"已使用",free:"自由",cores:"核心數",instances:"實例數量"},common:{invalid:"無效",about:"關於",access:"訪問",accessKey:"存取金鑰",action:"行動",actions:"行動",add:"新增",address:"地址",afterTime:"在{time}後",allow:"允許",alreadyExist:"已存在",approve:"批准",approved:"批准",appUrl:"APP連結",auditLogs:"稽核追蹤",author:"作者",avatar:"阿凡達",back:"返回",basic:"基本",basicInfo:"基本資訊",profile:"個人檔案",bind:"綁定",blocklet:"Blocklet",blocklets:"Blocklets",blockletsStorage:"Blocklets 儲存",cacheStorage:"快取存儲",cancel:"取消",certificate:"證書",category:"日誌主題",click:"點擊複製",close:"關閉",selectAll:"全選",unselectAll:"取消全選",collapseAll:"折疊所有",community:"社群 URL",complete:"完成",componentBasicInfo:"Blocklet 基本資訊",components:"Blocklets",config:"配置",configuration:"配置",appearance:"外觀",configNavigation:"導航",configSuccess:"配置成功",confirm:"確認",connect:"連線",console:"控制台",continue:"繼續",continueWith:"繼續",copiedTip:"已複製",copyAndClose:"複製並關閉",copyTip:"點擊複製",coreStorage:"核心儲存",cpu:"CPU",create:"創建",createSuccess:"建立存取金鑰",created:"建立於",createdAt:"創建於",createdBy:"創建者是",dAddress:"分散式識別符 (DID)",dataStorage:"本地磁碟機儲存",delConfirm:"刪除",delConfirmDescription:"確認刪除 {data} 嗎?",delete:"刪除",dependents:"受扶養人",description:"描述",detail:"詳情",did:"DID",disk:"磁碟",diskInfo:"磁碟資訊",docker:"是Docker",documentation:"文件",domain:"網域",downgradeTo:"降級為",download:"下載",downloading:"下載中",edit:"編輯",email:"電子郵箱",phone:"電話",empty:"空的",emptyData:"找不到結果",enable:"啟用",engine:"引擎",env:"環境",environment:"環境",expandAll:"展開所有",expired:"已過期",expires:"到期",export:"匯出",externalIp:"外部IP",failed:"失敗",filter:"日誌篩選器",fingerprint:"指紋",finish:"完成",forbid:"禁止",free:"自由",general:"將軍",gitpod:"Gitpod是",goEULA:"點擊檢視「最終用户許可協議」",group:"團體",image:"IS 圖像",install:"安裝",installed:"安裝完成",installedAt:"安裝在",installSuccess:"安裝成功",installing:"正在安裝",internalIp:"內部IP",introduction:"介紹",invite:"邀請",inviting:"邀請",ip:"IP",isPublic:"公開的",issue:"問題",issuer:"發行者",item:"物品",joined:"加入",key:"關鍵字",lastPublishedAt:"發表於",launcher:"啟動器資訊",leavePageTip:"你確定要離開頁面嗎?",link:"連結",loading:"載入中",log:"檢視日誌",logStorage:"日誌存儲",login:"登入",logo:"商標",logout:"登出",logs:"日誌",manageTeam:"管理團隊",marketplace:"市場",member:"成員",members:"成員",memory:"記憶",meta:"元資料",analytics:"分析",runtime:"執行時間",traffic:"交通",more:"更多",mountPoint:"掛載點",name:"名字",next:"下一個",no:"不",noData:"沒有記錄可顯示",notice:"如果不讀這個,將會發生意想不到的壞事!",noticeTitle:"注意事項",notification:"通知",open:"打開",management:"管理",os:"作業系統",overview:"概述",owner:"所有者",page404:"404頁面",passport:"通行證",permission:"允許",port:"港口",pre:"前",preferences:"偏好",preview:"預覽",protected:"受保護",protocol:"協議",purchase:"購買",readMore:"更多",redirect:"重新導向",redirectCode:"重定向代碼",redirectPermanently:"永久重新導向",redirectTemporary:"臨時重定向",redirectUrl:"重定向 URL",rewrite:"重寫",release:"釋放",rewriteUrl:"重寫URL",reject:"拒絕",reload:"重新載入",remark:"備註",remove:"刪除",removeSuccess:"成功刪除",renew:"更新",reportIssue:"回報問題",required:"必需",requiredErrorText:"{name} 是必需的",resource:"資源",restart:"重新啟動",restore:"還原",retry:"重試",revoke:"撤銷",role:"角色",running:"跑步",runtimeInfo:"執行時資訊",save:"保存",saveChanges:"儲存變更",saveSuccess:"儲存成功",scheduleFailed:"計劃失敗",scheduleSuccess:"成功安排",scope:"範圍",screenshot:"螢幕截圖",search:"搜索",security:"安全",serverDid:"伺服器 DID",serverVersion:"伺服器版本",setting:"設定",start:"開始",status:"狀態",stop:"停止",storage:"儲存",backup:"備份",store:"商店",succeeded:"成功",subscription:"訂閱",support:"支援網址或電子郵箱",switch:"開關",team:"團隊",the:"這個",timeAgo:"{time}前",title:"標題",type:"類型",unavailable:"暫無",update:"更新",updateAvailable:"新版本 {version} 可用",updatedAt:"更新於 {time}",updatedBy:"更新者",upgrade:"升級",upgradeTo:"升級到",upgrading:"升級",uptime:"上線時間",url:"URL",valid:"有效的",value:"價值",version:"版本",visit:"參觀",waiting:"等待中",webhook:"整合",yes:"是的",invalidParam:"無效參數",launch:"發射",price:"價格",redirecting:"重新導向",error:"錯誤",reminder:"提醒",normal:"正常",gateway:"閘道器",verifyNFT:"驗證NFT",errorMessage:"錯誤訊息:",slugifyHint:"實際掛載點將是:{value}",strategy:"策略",auto:"汽車",manual:"手冊",progress:"進行中",startTime:"開始時間",endTime:"結束時間",timeoutError:"超時錯誤",tags:"標籤",connectToStore:"連接至商店",uploaded:"已上傳",upload:"上傳",blockletStudio:"Studio",visitStore:"訪問 Store",reconnect:"重新連接",change:"更改",disconnect:"斷開連線",sourceApp:"屬於此 App",visitTarget:"拜訪{name}",upgradeServer:"升級伺服器",display:"外觀",requiredInputPlaceholder:"請輸入 {name}",refresh:"重新 整理",moveUp:"向上移動",moveDown:"下移",enabled:"已啟用",disabled:"已停用",homepage:"首頁",buy:"購買",view:"檢視",homepageTip:"首頁或示範 URL",repository:"代碼倉庫",expand:"展開",collapse:"收合",all:"全部",notificationRecords:"通知",unrecordedUser:"未記錄的名稱",unrecordedRole:"未記錄角色",auditLogsSearch:"搜尋操作或內容",optional:"可選",bugOrConnectDomain:"購買或連接已有網域",bugOrConnectDomainTip:"網域名是你在網際網路上的網站的唯一位址。 你可以從DID Names或任何域名註冊商購買新網域名,或者設定你已擁有的現有網域名。",connectExistingDomain:"連接現有網域",domains:"網域",didDomains:"DID 網域",manualDomains:"我的網域",didDomainsDescription:"以下網域由DID:Names 服務自動管理。",systemDomains:"默认域名",systemDomainsDescription:"以下網域名稱由系統分配。可以存取它們;但是,它們並非用於生產用途,不應與您的客戶共享。",manualDomainsDescription:"以下網域由您的網域提供商管理,並已手動設定為指向這裡。",fileCount:"檔案計數",fileSize:"檔案大小",time:"時間",less:"更少",timeInfo:"時間",operator:"操作者",inviter:"邀請者",clear:"清除",ok:"OK",minutes:"分鐘",hours:"小時",hour:"小時",days:"天",day:"天",weeks:"週",months:"月份",custom:"自訂",environments:"環境",sites:"網站",active:"活躍",backupTime:"備份時間",lastUsedAt:"上次使用時間",expiredAt:"到期日",createdVia:"透過",neverExpired:"從不",baseInfo:"基本資訊",otherInfo:"更多資訊",lightMode:"淺色模式",darkMode:"深色模式",advancedConfig:"進階",document:"文件",mcpServers:"MCP 伺服器",generate:"產生",copy:"複製",copied:"已複製",orgs:"組織"},blocklet:{external:"外部的",notFound:"在此伺服器上未找到 Blocklet,可能已經被刪除",installFromMarket:"安裝新的 Blocklets",installFromUrl:"從URL安裝",installFromCreate:"建立 Blocklet",installFromDiskBackup:"從此伺服器還原",installedAt:"安裝於",internal:"內部",startedAt:"開始於",stoppedAt:"停在",urlEmptyTip:"無訪問URL",goToAddRule:"前往添加",services:"暴露的服務",upstreamPort:"上游端口",noService:"無服務",appId:"App DID",appPid:"永久的DID",alsoKnownAs:"別名",skSource:"所有人錢包",reloadSuccess:"Blocklet成功重新加載",statusTip:"Blocklet 是 {status}",initialUptime:"小於1公尺",dashboard:"Blocklet 檢測儀表板",noComponent:"應用程式沒有組件,無法啟動",fromUrl:{title:"安裝 Blocklet",label:"Blocklet URL",description:"URL 應該指向 Blocklet 的元檔案。如果你需要參考一個本地檔案,請添加 file:// 前綴,例如:file:///Users/foo/blocklet.json。",confirm:"安裝",step0:"輸入URL",step1:"確認元信息",existTipPrefix:"具有相同DID的Blocklet已經存在,版本為{version}",existTipSuffix:"請安裝更高的版本。"},action:{stopDescription:"停止方塊將使其公共介面不可訪問,這可能導致終端用户失敗",stopComponentDescription:"停止該元件將使其公共介面無法存取,可能導致終端用户失敗",confirmStop:"是的,停下來",cancelDownloadDescription:"取消下載{name}?",removeApplicationDescription:"移除該應用程式將刪除由此應用程式產生的程式碼和資料,如果您沒有任何備份,這些資料將無法還原",removeApplicationAfterBackup:"備份並刪除應用程式。如果需要,您可以從此伺服器恢復應用程式",removeApplicationComplete:"刪除此應用程式的程式碼和資料",removeComponentDescription:"刪除元件將清除由此元件生成的代碼和數據,如果您沒有任何備份,則無法恢復",removeComponentKeepData:"保留此組件的資料,僅移除程式碼",removeComponentComplete:"移除此元件的程式碼和資料",confirmRemove:"是的,刪除它",confirmComponentRemove:"是的,刪除它",upgradeDescription:"升級 Blocklet 將使其暫時無法使用,你確定要繼續嗎?",confirmUpgrade:"是的,升級它",confirmRestart:"是的,重新啟動",restartDescription:"重新啟動塊將暫時暫停且可能由於配置更改無法啟動"},dev:{modeTip:"請將Blocklet伺服器切換到偵錯模式"},index:{tableTitle:"管理您的Blocklets",noBlocklet:"在這個Blocklet伺服器中找不到blocklets,請從市場安裝一個blocklet開始。"},config:{name:"應用程式名稱",description:"應用程式描述",logoSquare:"應用程式標誌",logoRect:"網站 Logo",logoRectDesc:"使用於: 網站頁眉和頁腳,未設定則回退到應用程式 Logo",logoFavicon:"Favicon",logoFaviconDesc:"使用於:瀏覽器地址列和分頁,未設定則回退到應用程式 Logo",clusterSize:"在叢集模式下運行此 blocklet 時的實例數",copyrightOwner:"版權所有人",copyrightYear:"版權 年份",deletable:{name:"刪除保護",enable:"目前無法刪除此 blocklet",disable:"這個 Blocklet 目前可以刪除"},walletType:{name:"錢包類型",description:"Blocklet實例錢包類型,將更改衍生的DID"},languages:"支援的語言",selectLanguagesTip:"通過刪除和重新添加來調整順序",languagesSearch:"透過國家本地名稱、英文名稱或ISO代碼搜尋...",passportColor:"通行證顏色",appUrl:"應用程式網址",access:{title:"誰能存取?",description:"選擇你希望如何控制對你的應用程式的存取。",useDefault:"使用預設值",defaultDescription:"使用應用程式的預設配置",whoCanAccess:{all:{title:"面向所有人",description:"任何人都可以訪問應用程式而不需要身份驗證。"},owner:{title:"僅限所有者存取",description:"僅限擁有者訪問應用程式。"},invited:{title:"僅限受邀訪問",description:"只有受邀成員可以存取。"}},publicToStore:"公眾在店內",publicInstanceTip:"此 Blocklet 鏈的存取地址將會在商店中顯示(連同您的DID用於接受捐款)",updatedTip:"存取控制已修改"},changedTip:"配置已更新,請重新啟動 Blocklet",missingRequired:"缺少啟動 Blocklet 鏈所需的配置",gotoFix:"去修理",environment:{key:"配置鍵",value:"配置值",keyValueRequired:"配置鍵和值必須指定",invalidKey:"配置鍵不能以BLOCKLET_或COMPONENT_開頭",deleteForbidden:"這個設定是必需的,不應該被刪除",tip:"以 BWA_ 為前綴的配置項不應包含敏感信息,因為它們將被發送到瀏覽器"},dangerZone:"危險區域",sharedToAllComponents:"將分享給所有組件",session:{ttl:"如果用户在此網站上沒有任何活動 {day} 天,將被要求重新登錄",day:"{day}天",days:"{day} 天",period:"會話有效期",profile:"用户個人檔案需求",cacheTtl:"用戶會話數據的快取持續時間(以秒為單位)",fullNameEnabled:"登錄時請求用户名稱(預設啟用)",avatarEnabled:"登錄時請求用户頭像(默認啟用)",emailEnabled:"在登錄時請求用户電子郵箱",emailRequireVerified:"要求用户在登入前驗證電子郵箱",emailRequireUnique:"要求用户電子郵箱在所有用户中是唯一的",phoneEnabled:"在登錄時請求用户電話號碼(目前不支援)",phoneRequireVerified:"在登錄前要求用戶驗證電話號碼",phoneRequireUnique:"要求用户電話號碼在所有用戶中是唯一的",emailTrustOauthProviders:"信任OAuth提供商進行電子郵箱驗證狀態",enableDomainBlackList:"啟用電子郵箱域黑名單(拒絕列出的電子郵箱域)",enableDomainWhiteList:"啟用電子郵箱域白名單(僅允許列出的電子郵箱域登錄)",addDomain:"添加來源以獲取清單(純文本格式,每行一個域名)",enableBlacklist:"啟用 Login Token 黑名單功能",experimentalSettings:"實驗設定"},clearCache:{name:"快取管理",purpose:"管理路由器和 Blocklet Server 中緩存的檔案",title:"確認清除快取嗎?",action:"清除快取",success:"成功清除{count}個快取項目",description:"你確定要清除路由器和 Blocklet Blocklet中的快取文件嗎?這個操作可能會導致短期內性能略微下降。"},tenantMode:{name:"多租戶模式",multiple:"該 Blocklet 以多租戶模式運行,每個租戶的數據應該是隔離的",single:"這個 Blocklet 在單租戶模式下運行,所有數據都是共享的"},splashPortrait:"啟動畫面",splashLandscape:"橫屏閃屏圖",splashPortraitDesc:"Blocklet 啟動時顯示。建議使用 PNG 或 JPG 格式,直向比例為 9:16,橫向比例為 16:9(最大 5MB)",rotateSessionKey:{name:"會話密鑰輪換",purpose:"會話 salt 是用於增強會話令牌安全性的隨機值。點擊按鈕手動旋轉會話 salt,以幫助降低登錄令牌被盜的風險。",title:"確認會話密鑰輪換嗎?",action:"輪換密鑰",success:"會話密鑰輪換成功",description:"你確定要輪換會話密鑰嗎?此操作將使所有現有的登錄令牌失效,並強制用戶重新登錄,包括你自己的登錄令牌。"},ogImage:"Open Graph 背景",ogImageDesc:"使用於:社群媒體分享背景",migrate:{button:"應用 DID 輪換",title:"確認應用 DID 輪換?",description:"您確定要輪換應用 DID 嗎?此操作將使所有現有工作階段失效,並強制使用者重新登入,包括您自己的工作階段",confirm:"您確定要更改應用 DID 嗎?此操作將使所有現有會話失效,並強制使用者重新登入,包括您自己的會話。"},vault:{name:"Vault DID",title:"配置 Vault",desc:"使用 vault 為這個 Blocklet 管理的資金增加一層額外的安全保障。",tip:"輸入 vault 地址繼續,你需要證明 vault 地址的所有權才能使用。",address:"Vault 位址",verified:"Vault 已驗證",current:"當前 Vault",error:{invalid:"Vault 地址必須是有效的 DID",holder:"Vault 地址必須是區塊鏈上的有效代幣持有者,代幣/資產/工廠/質押地址不支持",duplicate:"Vault 地址已存在",appDid:"不能使用應用 DID 作為 vault 地址,請使用不同的地址"},role:"角色類型",firstSeen:"首次見到",lastSeen:"上次查看",migratedFrom:"移轉自",migratedTo:"遷移到",commit:{title:"驗證 Vault 所有權",scan:"掃描下面的二維碼以驗證保險庫的所有權",confirm:"確認使用 DID Wallet",success:"Vault 配置成功"},approve:{title:"批准 Vault 變更",byOwner:"與Blocklet所有者簽名以批准更改",byLast:"使用最後保險庫簽名以批准更改",confirm:"使用 DID Wallet 確認",success:"Vault變更已批准"}},changeImageTip:"提示:如果想更改圖片,請點擊預覽圖片進行更改。",baseInfo:"應用資訊",baseInfoDesc:"這裡可以設定網站的基本資訊。",logoSettings:"視覺資訊",logoSettingsDesc:"塑造獨特的品牌形象,提升網站在各種情境下的辨識度和視覺吸引力。",languagesDesc:"使用於:訪客語言選擇",nameDesc:"使用於:DID Connect 頭部,瀏覽器分頁,網站頁尾,SEO 元數據和 OpenGraph 元數據",descriptionDesc:"用於: SEO 元數據和 OpenGraph 元數據",logoSquareDesc:"用於:使用者身份驗證對話框頁腳和 <b>DID Wallet</b> 應用程式列表",logoDesc:"建議尺寸:{width} * {height} 像素",splashDesc:`ArcSphere 應用啟動畫面 (如果已設定,將會顯示在 <b>ArcSphere</b> 中)
1
+ const e={setup:{connect:{title:"需要簽名",scan:"連接您的DID錢包以成為此伺服器的擁有者",confirm:"請在您的DID錢包上檢查此操作",success:"您的帳戶已連接到此伺服器"},keyPair:{title:"需要衍生金鑰對",scan:"連接您的DID錢包以為此應用程式產生一對密鑰",confirm:"請在您的 DID 錢包上查看此操作",success:"您的金鑰對安全儲存"},verify:{title:"需要擁有權憑證",scan:"連接您的DID錢包以提供所有權憑證",confirm:"請在您的DID錢包上檢查此操作",success:"您的帳戶已連線到此伺服器"},accept:{title:"接受伺服器要求的所有權證書",scan:"連接您的DID錢包以提供所有權憑證",confirm:"請在您的DID錢包上檢查此操作",success:"您的帳戶已連接到此伺服器"},title:"設置 Blocklet Server ",steps:{eula:"最終用戶許可協議",eulaFooter:"我已閱讀並同意 EULA 條款",connect:"連接所有者DID錢包",verify:"驗證所有權",basicSettings:"基本設置",launchApp:"啟動應用程式",complete:"完成"},congratulation:"恭喜你!你的Blocklet伺服器已經安全且準備好使用。",redirectButton:"帶我去儀表板!"},login:{loginTo:"連接到",description:"只有伺服器所有者和已核准的成員才能存取儀表板",switchDid:{title:"切換DID錢包",scan:"掃描以下 QR 碼以切換帳號",confirm:"確認在您的DID錢包中切換",success:"成功切換"},switchSpecifiedDid:{title:"切換 DID 錢包",scan:"你需要切換 DID 至 {did} 以完成以下操作",confirm:"確認在您的DID錢包中切換",success:"成功切換"},connect:{title:"連接DID錢包",scan:"連接您的DID錢包以提供通行證",confirm:"在您的帳戶中確認",success:"您已成功連線"},verify:{title:"驗證訪問",scan:"連接你的 DID 錢包以展示所有者或管理員通行證",confirm:"在你的 帳戶 中確認",success:"您的訪問已驗證",abort:"存取驗證已中止",description:"您需要提供 {roles} 通行證才能執行此操作,在 1 小時的非活動狀態後才會再次要求驗證。",descriptionForDestroy:"您需要提供 {roles} 通行證以繼續此操作以確保安全。"},login:"連接",termsOfUse:"使用條款",agreeTermsOfUse:"我已閱讀並同意適用的"},acceptServer:{title:"使用所有權NFT索取伺服器",tooltip:"如果您收到了一枚伺服器所有權 NFT,您可以使用此連結來領取您的所有者通行證。"},exchangePassport:{title:"用NFT交換通行證",success:"您已成功交換您的通行證並使用通行證登錄",login:"登入",dialog:{title:"使用NFT取得通行證",scan:"連接您的DID錢包,展示您的NFT以獲得通行證",confirm:"在您的DID錢包上選擇NFT",success:"通行證成功換取"},tooltip1:"如果你擁有來自該系列的NFT,",tooltip2:"你可以透過此連結兌換你的護照。"},payablePassport:{title:"購買並付款通行證",tooltip:"如果您沒有通行證,您可以使用此連結購買通行證。"},sidebar:{dashboard:"儀表板",blocklets:"Blocklets",console:"控制台",settings:"設定"},system:{total:"總共",used:"已使用",free:"自由",cores:"核心數",instances:"實例數量"},common:{invalid:"無效",about:"關於",access:"訪問",accessKey:"存取金鑰",action:"行動",actions:"行動",add:"新增",address:"地址",afterTime:"在{time}後",allow:"允許",alreadyExist:"已存在",approve:"批准",approved:"批准",appUrl:"APP連結",auditLogs:"稽核追蹤",author:"作者",avatar:"阿凡達",back:"返回",basic:"基本",basicInfo:"基本資訊",profile:"個人檔案",bind:"綁定",blocklet:"Blocklet",blocklets:"Blocklets",blockletsStorage:"Blocklets 儲存",cacheStorage:"快取存儲",cancel:"取消",certificate:"證書",category:"日誌主題",click:"點擊複製",close:"關閉",selectAll:"全選",unselectAll:"取消全選",collapseAll:"折疊所有",community:"社群 URL",complete:"完成",componentBasicInfo:"Blocklet 基本資訊",components:"Blocklets",config:"配置",configuration:"配置",appearance:"外觀",configNavigation:"導航",configSuccess:"配置成功",confirm:"確認",connect:"連線",console:"控制台",continue:"繼續",continueWith:"繼續",copiedTip:"已複製",copyAndClose:"複製並關閉",copyTip:"點擊複製",coreStorage:"核心儲存",cpu:"CPU",create:"創建",createSuccess:"建立存取金鑰",created:"建立於",createdAt:"創建於",createdBy:"創建者是",dAddress:"分散式識別符 (DID)",dataStorage:"本地磁碟機儲存",delConfirm:"刪除",delConfirmDescription:"確認刪除 {data} 嗎?",delete:"刪除",dependents:"受扶養人",description:"描述",detail:"詳情",did:"DID",disk:"磁碟",diskInfo:"磁碟資訊",docker:"是Docker",documentation:"文件",domain:"網域",downgradeTo:"降級為",download:"下載",downloading:"下載中",edit:"編輯",email:"電子郵箱",phone:"電話",empty:"空的",emptyData:"找不到結果",enable:"啟用",engine:"引擎",env:"環境",environment:"環境",expandAll:"展開所有",expired:"已過期",expires:"到期",export:"匯出",externalIp:"外部IP",failed:"失敗",filter:"日誌篩選器",fingerprint:"指紋",finish:"完成",forbid:"禁止",free:"自由",general:"將軍",gitpod:"Gitpod是",goEULA:"點擊檢視「最終用户許可協議」",group:"團體",image:"IS 圖像",install:"安裝",installed:"安裝完成",installedAt:"安裝在",installSuccess:"安裝成功",installing:"正在安裝",internalIp:"內部IP",introduction:"介紹",invite:"邀請",inviting:"邀請",ip:"IP",isPublic:"公開的",issue:"問題",issuer:"發行者",item:"物品",joined:"加入",key:"關鍵字",lastPublishedAt:"發表於",launcher:"啟動器資訊",leavePageTip:"你確定要離開頁面嗎?",link:"連結",loading:"載入中",log:"檢視日誌",logStorage:"日誌存儲",login:"登入",logo:"商標",logout:"登出",logs:"日誌",manageTeam:"管理團隊",marketplace:"市場",member:"成員",members:"成員",memory:"記憶",meta:"元資料",analytics:"分析",runtime:"執行時間",traffic:"交通",more:"更多",mountPoint:"掛載點",name:"名字",next:"下一個",no:"不",noData:"沒有記錄可顯示",notice:"如果不讀這個,將會發生意想不到的壞事!",noticeTitle:"注意事項",notification:"通知",open:"打開",management:"管理",os:"作業系統",overview:"概述",owner:"所有者",page404:"404頁面",passport:"通行證",permission:"允許",port:"港口",pre:"前",preferences:"偏好",preview:"預覽",protected:"受保護",protocol:"協議",purchase:"購買",readMore:"更多",redirect:"重新導向",redirectCode:"重定向代碼",redirectPermanently:"永久重新導向",redirectTemporary:"臨時重定向",redirectUrl:"重定向 URL",rewrite:"重寫",release:"釋放",rewriteUrl:"重寫URL",reject:"拒絕",reload:"重新載入",remark:"備註",remove:"刪除",removeSuccess:"成功刪除",renew:"更新",reportIssue:"回報問題",required:"必需",requiredErrorText:"{name} 是必需的",resource:"資源",restart:"重新啟動",restore:"還原",retry:"重試",revoke:"撤銷",role:"角色",running:"跑步",runtimeInfo:"執行時資訊",save:"保存",saveChanges:"儲存變更",saveSuccess:"儲存成功",scheduleFailed:"計劃失敗",scheduleSuccess:"成功安排",scope:"範圍",screenshot:"螢幕截圖",search:"搜索",security:"安全",serverDid:"伺服器 DID",serverVersion:"伺服器版本",setting:"設定",start:"開始",status:"狀態",stop:"停止",storage:"儲存",backup:"備份",store:"商店",succeeded:"成功",subscription:"訂閱",support:"支援網址或電子郵箱",switch:"開關",team:"團隊",the:"這個",timeAgo:"{time}前",title:"標題",type:"類型",unavailable:"暫無",update:"更新",updateAvailable:"新版本 {version} 可用",updatedAt:"更新於 {time}",updatedBy:"更新者",upgrade:"升級",upgradeTo:"升級到",upgrading:"升級",uptime:"上線時間",url:"URL",valid:"有效的",value:"價值",version:"版本",visit:"參觀",waiting:"等待中",webhook:"整合",yes:"是的",invalidParam:"無效參數",launch:"發射",price:"價格",redirecting:"重新導向",error:"錯誤",reminder:"提醒",normal:"正常",gateway:"閘道器",verifyNFT:"驗證NFT",errorMessage:"錯誤訊息:",slugifyHint:"實際掛載點將是:{value}",strategy:"策略",auto:"汽車",manual:"手冊",progress:"進行中",startTime:"開始時間",endTime:"結束時間",timeoutError:"超時錯誤",tags:"標籤",connectToStore:"連接至商店",uploaded:"已上傳",upload:"上傳",blockletStudio:"Studio",visitStore:"訪問 Store",reconnect:"重新連接",change:"更改",disconnect:"斷開連線",sourceApp:"屬於此 App",visitTarget:"拜訪{name}",upgradeServer:"升級伺服器",display:"外觀",requiredInputPlaceholder:"請輸入 {name}",refresh:"重新 整理",moveUp:"向上移動",moveDown:"下移",enabled:"已啟用",disabled:"已停用",homepage:"首頁",buy:"購買",view:"檢視",homepageTip:"首頁或示範 URL",repository:"代碼倉庫",expand:"展開",collapse:"收合",all:"全部",notificationRecords:"通知",unrecordedUser:"未記錄的名稱",unrecordedRole:"未記錄角色",auditLogsSearch:"搜尋操作或內容",optional:"可選",bugOrConnectDomain:"購買或連接已有網域",bugOrConnectDomainTip:"網域名是你在網際網路上的網站的唯一位址。 你可以從DID Names或任何域名註冊商購買新網域名,或者設定你已擁有的現有網域名。",connectExistingDomain:"連接現有網域",domains:"網域",didDomains:"DID 網域",manualDomains:"我的網域",didDomainsDescription:"以下網域由DID:Names 服務自動管理。",systemDomains:"默认域名",systemDomainsDescription:"以下網域名稱由系統分配。可以存取它們;但是,它們並非用於生產用途,不應與您的客戶共享。",manualDomainsDescription:"以下網域由您的網域提供商管理,並已手動設定為指向這裡。",fileCount:"檔案計數",fileSize:"檔案大小",time:"時間",less:"更少",timeInfo:"時間",operator:"操作者",inviter:"邀請者",clear:"清除",ok:"OK",minutes:"分鐘",hours:"小時",hour:"小時",days:"天",day:"天",weeks:"週",months:"月份",custom:"自訂",environments:"環境",sites:"網站",active:"活躍",backupTime:"備份時間",lastUsedAt:"上次使用時間",expiredAt:"到期日",createdVia:"透過",neverExpired:"從不",baseInfo:"基本資訊",otherInfo:"更多資訊",lightMode:"淺色模式",darkMode:"深色模式",advancedConfig:"進階",document:"文件",mcpServers:"MCP 伺服器",generate:"產生",copy:"複製",copied:"已複製",orgs:"組織",userSessions:"用戶會話"},blocklet:{external:"外部的",notFound:"在此伺服器上未找到 Blocklet,可能已經被刪除",installFromMarket:"安裝新的 Blocklets",installFromUrl:"從URL安裝",installFromCreate:"建立 Blocklet",installFromDiskBackup:"從此伺服器還原",installedAt:"安裝於",internal:"內部",startedAt:"開始於",stoppedAt:"停在",urlEmptyTip:"無訪問URL",goToAddRule:"前往添加",services:"暴露的服務",upstreamPort:"上游端口",noService:"無服務",appId:"App DID",appPid:"永久的DID",alsoKnownAs:"別名",skSource:"所有人錢包",reloadSuccess:"Blocklet成功重新加載",statusTip:"Blocklet 是 {status}",initialUptime:"小於1公尺",dashboard:"Blocklet 檢測儀表板",noComponent:"應用程式沒有組件,無法啟動",fromUrl:{title:"安裝 Blocklet",label:"Blocklet URL",description:"URL 應該指向 Blocklet 的元檔案。如果你需要參考一個本地檔案,請添加 file:// 前綴,例如:file:///Users/foo/blocklet.json。",confirm:"安裝",step0:"輸入URL",step1:"確認元信息",existTipPrefix:"具有相同DID的Blocklet已經存在,版本為{version}",existTipSuffix:"請安裝更高的版本。"},action:{stopDescription:"停止方塊將使其公共介面不可訪問,這可能導致終端用户失敗",stopComponentDescription:"停止該元件將使其公共介面無法存取,可能導致終端用户失敗",confirmStop:"是的,停下來",cancelDownloadDescription:"取消下載{name}?",removeApplicationDescription:"移除該應用程式將刪除由此應用程式產生的程式碼和資料,如果您沒有任何備份,這些資料將無法還原",removeApplicationAfterBackup:"備份並刪除應用程式。如果需要,您可以從此伺服器恢復應用程式",removeApplicationComplete:"刪除此應用程式的程式碼和資料",removeComponentDescription:"刪除元件將清除由此元件生成的代碼和數據,如果您沒有任何備份,則無法恢復",removeComponentKeepData:"保留此組件的資料,僅移除程式碼",removeComponentComplete:"移除此元件的程式碼和資料",confirmRemove:"是的,刪除它",confirmComponentRemove:"是的,刪除它",upgradeDescription:"升級 Blocklet 將使其暫時無法使用,你確定要繼續嗎?",confirmUpgrade:"是的,升級它",confirmRestart:"是的,重新啟動",restartDescription:"重新啟動塊將暫時暫停且可能由於配置更改無法啟動"},dev:{modeTip:"請將Blocklet伺服器切換到偵錯模式"},index:{tableTitle:"管理您的Blocklets",noBlocklet:"在這個Blocklet伺服器中找不到blocklets,請從市場安裝一個blocklet開始。"},config:{name:"應用程式名稱",description:"應用程式描述",logoSquare:"應用程式標誌",logoRect:"網站 Logo",logoRectDesc:"使用於: 網站頁眉和頁腳,未設定則回退到應用程式 Logo",logoFavicon:"Favicon",logoFaviconDesc:"使用於:瀏覽器地址列和分頁,未設定則回退到應用程式 Logo",clusterSize:"在叢集模式下運行此 blocklet 時的實例數",copyrightOwner:"版權所有人",copyrightYear:"版權 年份",deletable:{name:"刪除保護",enable:"目前無法刪除此 blocklet",disable:"這個 Blocklet 目前可以刪除"},walletType:{name:"錢包類型",description:"Blocklet實例錢包類型,將更改衍生的DID"},languages:"支援的語言",selectLanguagesTip:"通過刪除和重新添加來調整順序",languagesSearch:"透過國家本地名稱、英文名稱或ISO代碼搜尋...",passportColor:"通行證顏色",appUrl:"應用程式網址",access:{title:"誰能存取?",description:"選擇你希望如何控制對你的應用程式的存取。",useDefault:"使用預設值",defaultDescription:"使用應用程式的預設配置",whoCanAccess:{all:{title:"面向所有人",description:"任何人都可以訪問應用程式而不需要身份驗證。"},owner:{title:"僅限所有者存取",description:"僅限擁有者訪問應用程式。"},invited:{title:"僅限受邀訪問",description:"只有受邀成員可以存取。"}},publicToStore:"公眾在店內",publicInstanceTip:"此 Blocklet 鏈的存取地址將會在商店中顯示(連同您的DID用於接受捐款)",updatedTip:"存取控制已修改"},changedTip:"配置已更新,請重新啟動 Blocklet",missingRequired:"缺少啟動 Blocklet 鏈所需的配置",gotoFix:"去修理",environment:{key:"配置鍵",value:"配置值",keyValueRequired:"配置鍵和值必須指定",invalidKey:"配置鍵不能以BLOCKLET_或COMPONENT_開頭",deleteForbidden:"這個設定是必需的,不應該被刪除",tip:"以 BWA_ 為前綴的配置項不應包含敏感信息,因為它們將被發送到瀏覽器"},dangerZone:"危險區域",sharedToAllComponents:"將分享給所有組件",session:{ttl:"如果用户在此網站上沒有任何活動 {day} 天,將被要求重新登錄",day:"{day}天",days:"{day} 天",period:"會話有效期",profile:"用户個人檔案需求",cacheTtl:"用戶會話數據的快取持續時間(以秒為單位)",fullNameEnabled:"登錄時請求用户名稱(預設啟用)",avatarEnabled:"登錄時請求用户頭像(默認啟用)",emailEnabled:"在登錄時請求用户電子郵箱",emailRequireVerified:"要求用户在登入前驗證電子郵箱",emailRequireUnique:"要求用户電子郵箱在所有用户中是唯一的",phoneEnabled:"在登錄時請求用户電話號碼(目前不支援)",phoneRequireVerified:"在登錄前要求用戶驗證電話號碼",phoneRequireUnique:"要求用户電話號碼在所有用戶中是唯一的",emailTrustOauthProviders:"信任OAuth提供商進行電子郵箱驗證狀態",enableDomainBlackList:"啟用電子郵箱域黑名單(拒絕列出的電子郵箱域)",enableDomainWhiteList:"啟用電子郵箱域白名單(僅允許列出的電子郵箱域登錄)",addDomain:"添加來源以獲取清單(純文本格式,每行一個域名)",enableBlacklist:"啟用 Login Token 黑名單功能",experimentalSettings:"實驗設定"},clearCache:{name:"快取管理",purpose:"管理路由器和 Blocklet Server 中緩存的檔案",title:"確認清除快取嗎?",action:"清除快取",success:"成功清除{count}個快取項目",description:"你確定要清除路由器和 Blocklet Blocklet中的快取文件嗎?這個操作可能會導致短期內性能略微下降。"},tenantMode:{name:"多租戶模式",multiple:"該 Blocklet 以多租戶模式運行,每個租戶的數據應該是隔離的",single:"這個 Blocklet 在單租戶模式下運行,所有數據都是共享的"},splashPortrait:"啟動畫面",splashLandscape:"橫屏閃屏圖",splashPortraitDesc:"Blocklet 啟動時顯示。建議使用 PNG 或 JPG 格式,直向比例為 9:16,橫向比例為 16:9(最大 5MB)",rotateSessionKey:{name:"會話密鑰輪換",purpose:"會話 salt 是用於增強會話令牌安全性的隨機值。點擊按鈕手動旋轉會話 salt,以幫助降低登錄令牌被盜的風險。",title:"確認會話密鑰輪換嗎?",action:"輪換密鑰",success:"會話密鑰輪換成功",description:"你確定要輪換會話密鑰嗎?此操作將使所有現有的登錄令牌失效,並強制用戶重新登錄,包括你自己的登錄令牌。"},ogImage:"Open Graph 背景",ogImageDesc:"使用於:社群媒體分享背景",migrate:{button:"應用 DID 輪換",title:"確認應用 DID 輪換?",description:"您確定要輪換應用 DID 嗎?此操作將使所有現有工作階段失效,並強制使用者重新登入,包括您自己的工作階段",confirm:"您確定要更改應用 DID 嗎?此操作將使所有現有會話失效,並強制使用者重新登入,包括您自己的會話。"},vault:{name:"Vault DID",title:"配置 Vault",desc:"使用 vault 為這個 Blocklet 管理的資金增加一層額外的安全保障。",tip:"輸入 vault 地址繼續,你需要證明 vault 地址的所有權才能使用。",address:"Vault 位址",verified:"Vault 已驗證",current:"當前 Vault",error:{invalid:"Vault 地址必須是有效的 DID",holder:"Vault 地址必須是區塊鏈上的有效代幣持有者,代幣/資產/工廠/質押地址不支持",duplicate:"Vault 地址已存在",appDid:"不能使用應用 DID 作為 vault 地址,請使用不同的地址"},role:"角色類型",firstSeen:"首次見到",lastSeen:"上次查看",migratedFrom:"移轉自",migratedTo:"遷移到",commit:{title:"驗證 Vault 所有權",scan:"掃描下面的二維碼以驗證保險庫的所有權",confirm:"確認使用 DID Wallet",success:"Vault 配置成功"},approve:{title:"批准 Vault 變更",byOwner:"與Blocklet所有者簽名以批准更改",byLast:"使用最後保險庫簽名以批准更改",confirm:"使用 DID Wallet 確認",success:"Vault變更已批准"}},changeImageTip:"提示:如果想更改圖片,請點擊預覽圖片進行更改。",baseInfo:"應用資訊",baseInfoDesc:"這裡可以設定網站的基本資訊。",logoSettings:"視覺資訊",logoSettingsDesc:"塑造獨特的品牌形象,提升網站在各種情境下的辨識度和視覺吸引力。",languagesDesc:"使用於:訪客語言選擇",nameDesc:"使用於:DID Connect 頭部,瀏覽器分頁,網站頁尾,SEO 元數據和 OpenGraph 元數據",descriptionDesc:"用於: SEO 元數據和 OpenGraph 元數據",logoSquareDesc:"用於:使用者身份驗證對話框頁腳和 <b>DID Wallet</b> 應用程式列表",logoDesc:"建議尺寸:{width} * {height} 像素",splashDesc:`ArcSphere 應用啟動畫面 (如果已設定,將會顯示在 <b>ArcSphere</b> 中)
2
2
 
3
3
  直向模式:
4
4
  比例:9:16
package/dist/index.html CHANGED
@@ -18,7 +18,7 @@
18
18
  padding: 0;
19
19
  }
20
20
  </style>
21
- <script type="module" crossorigin src="/.well-known/service/static/assets/index-3yzleS_1.js"></script>
21
+ <script type="module" crossorigin src="/.well-known/service/static/assets/index-BnPTSmJZ.js"></script>
22
22
  <link rel="stylesheet" crossorigin href="/.well-known/service/static/assets/vendor-ux-DYcPPYq2.css">
23
23
  <link rel="stylesheet" crossorigin href="/.well-known/service/static/assets/index-DrVXX4fX.css">
24
24
  <link rel="manifest" href="/.well-known/service/static/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/.well-known/service/static/registerSW.js"></script></head>