@abtnode/blocklet-services 1.16.41-beta-20250318-012955-51b0ae39 → 1.16.41-beta-20250318-123609-b48bb2d7
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.
- package/api/libs/connect/session.js +23 -12
- package/api/routes/user.js +51 -13
- package/api/services/auth/connect/rotate-key-pair.js +1 -1
- package/api/util/attach-shared-utils.js +1 -1
- package/dist/assets/{ArrowDropDown-qWbq0JMo.js → ArrowDropDown-Do4OWmCn.js} +1 -1
- package/dist/assets/{CheckCircle-B3DI9-8u.js → CheckCircle-DDHElFhm.js} +1 -1
- package/dist/assets/{ChevronLeft-QmS7XZ0_.js → ChevronLeft-CLfrYODg.js} +1 -1
- package/dist/assets/{ChevronRight-C-wVLPcS.js → ChevronRight-OJJ2SUEU.js} +1 -1
- package/dist/assets/{DeleteOutline-DMkWy6Ct.js → DeleteOutline-C954mj84.js} +1 -1
- package/dist/assets/{Done-DMtnp3P-.js → Done-BXwXbLQs.js} +1 -1
- package/dist/assets/{Download-BBNJo00y.js → Download-OmIe8_8C.js} +1 -1
- package/dist/assets/{Error-H665t4TD.js → Error-CXMTbOyQ.js} +1 -1
- package/dist/assets/{ExpandLess-DBi9UnX8.js → ExpandLess-xJAJmJam.js} +1 -1
- package/dist/assets/{Google-Dmn0CqqC.js → Google-jC4aGgA_.js} +1 -1
- package/dist/assets/{InfoOutlined-A0h5OX7J.js → InfoOutlined-Dto4CBtr.js} +1 -1
- package/dist/assets/{Launch-Ca2Avd-H.js → Launch-Do09YVNX.js} +1 -1
- package/dist/assets/{LaunchOutlined-LqfRJ-HK.js → LaunchOutlined-DyT6-6Gt.js} +1 -1
- package/dist/assets/{MoreHoriz-I4HIq7xK.js → MoreHoriz-CU3bPiks.js} +1 -1
- package/dist/assets/{PlayArrow-ByDKBx4g.js → PlayArrow-DsdnOq2p.js} +1 -1
- package/dist/assets/{ViewList-CHv7QZAz.js → ViewList-B2mYqtoR.js} +1 -1
- package/dist/assets/{access-control-CWfdDjGm.js → access-control-BWBOA4g6.js} +1 -1
- package/dist/assets/{actions-BlT0cxUG.js → actions-4OuC0GHy.js} +1 -1
- package/dist/assets/{add-component-core-CkafMVNq.js → add-component-core-BJzkE6_k.js} +1 -1
- package/dist/assets/{add-resource-B6yfNhfJ.js → add-resource-CFUb5VgO.js} +1 -1
- package/dist/assets/{addon-CY_qIvTD.js → addon-D4YcNftH.js} +1 -1
- package/dist/assets/{analytics-DjXhSquU.js → analytics-BZzzJZSo.js} +28 -28
- package/dist/assets/ar-BVbwKJY8.js +3 -0
- package/dist/assets/{audit-logs-f63v6qb6.js → audit-logs-JO59CyGM.js} +1 -1
- package/dist/assets/{base32-BFbPN3_B.js → base32-BjPUfmet.js} +1 -1
- package/dist/assets/{branding-M3jcBXbn.js → branding-CR1e2n6E.js} +2 -2
- package/dist/assets/{bundle-avatar-CV6DwAbG.js → bundle-avatar-Chdo4m6E.js} +1 -1
- package/dist/assets/{button-CobAXYnZ.js → button-BSP6Y6OJ.js} +1 -1
- package/dist/assets/{click-to-copy-4DAi5FNW.js → click-to-copy-fQS5t8fq.js} +1 -1
- package/dist/assets/{complete-BV8Jki_A.js → complete--VG1kQVy.js} +1 -1
- package/dist/assets/{component-CHjmE2X3.js → component-DfQn7Awf.js} +1 -1
- package/dist/assets/{config-AQxF4UXZ.js → config-C-1jeE31.js} +1 -1
- package/dist/assets/{config-D26mW5ts.js → config-mzUmZpxy.js} +1 -1
- package/dist/assets/{config-navigation-CWecd6yU.js → config-navigation-Dm_JpS-L.js} +3 -3
- package/dist/assets/{config-space-CEfS-edx.js → config-space-6wpekLZ1.js} +1 -1
- package/dist/assets/{confirm-AquAQGjx.js → confirm-CVR4a5FI.js} +1 -1
- package/dist/assets/{connect-C3HOcFE4.js → connect-DG6frz_Q.js} +1 -1
- package/dist/assets/{connect-BUUxpeii.js → connect-D_mrUgoL.js} +1 -1
- package/dist/assets/{connect-to-DIh1QUDe.js → connect-to-BhxyRPHq.js} +1 -1
- package/dist/assets/{dashboard-CgU5vYTc.js → dashboard-DE28EHHN.js} +3 -3
- package/dist/assets/de-nWUnqN3q.js +3 -0
- package/dist/assets/{delete-confirm-3NLpiaw3.js → delete-confirm-CCY-Xpk5.js} +1 -1
- package/dist/assets/{did-address-BOFBaeCw.js → did-address-Dx-4WAXQ.js} +1 -1
- package/dist/assets/{domain-By_3gkYk.js → domain-DHb1Ps_o.js} +1 -1
- package/dist/assets/{domain-action-card-3cxCJSVs.js → domain-action-card-BNfDBQhX.js} +1 -1
- package/dist/assets/domains-CO5BsFN8.js +1 -0
- package/dist/assets/{email-CIF4NKca.js → email-B20szkwm.js} +1 -1
- package/dist/assets/es-C7damQG2.js +3 -0
- package/dist/assets/{exchange-passport-CzS1Xb1d.js → exchange-passport-DbZWgurv.js} +1 -1
- package/dist/assets/{form-text-input-BAXS_3xu.js → form-text-input-BTiyCo4F.js} +1 -1
- package/dist/assets/fr-D3MUmftb.js +3 -0
- package/dist/assets/{fuel-mq0wsfbI.js → fuel-SLm_JOs-.js} +1 -1
- package/dist/assets/{fullpage-Bo8SoEA1.js → fullpage-50xw6Dda.js} +1 -1
- package/dist/assets/{get-safe-url-RpxfbZMw.js → get-safe-url-C42wIqi-.js} +1 -1
- package/dist/assets/{get-safe-url-zNlUtfl-.js → get-safe-url-Cn4KEro2.js} +1 -1
- package/dist/assets/hi-DLH2NuCr.js +1 -0
- package/dist/assets/{home-D5_68Jum.js → home-CUlFLl78.js} +1 -1
- package/dist/assets/id-C_OpwsKG.js +3 -0
- package/dist/assets/{iframe-Dg-K9tKI.js → iframe-BfxIVBTL.js} +1 -1
- package/dist/assets/{index-BkWaMAY7.js → index-B6Y7SW3z.js} +1 -1
- package/dist/assets/{index-S_LbRHmk.js → index-BCtCJuih.js} +1 -1
- package/dist/assets/{index-BYV52_OZ.js → index-BFV3n5Hy.js} +1 -1
- package/dist/assets/{index-Bgf07DdH.js → index-Bm1Z6vIr.js} +4 -4
- package/dist/assets/{index-BNbCkJGk.js → index-CKGdCheG.js} +1 -1
- package/dist/assets/{index-DNXaKH5L.js → index-CPUTxynZ.js} +14 -14
- package/dist/assets/{index-BQaClmdg.js → index-CbiypPHS.js} +1 -1
- package/dist/assets/{index-DxEhSAq4.js → index-CyTMvqg2.js} +1 -1
- package/dist/assets/index-D3BxoukB.js +137 -0
- package/dist/assets/{index-CosUPggW.js → index-DI6dvNrm.js} +1 -1
- package/dist/assets/{index-B1eW_9jO.js → index-DNxvGCUa.js} +1 -1
- package/dist/assets/{index-CE2_NNHG.js → index-DOilqSvA.js} +1 -1
- package/dist/assets/index-Do_PTy2g.js +104 -0
- package/dist/assets/{index-CT7JoARP.js → index-F9fg_Rq5.js} +1 -1
- package/dist/assets/{index-C564BFHJ.js → index-mkd7rmEP.js} +1 -1
- package/dist/assets/{index-9xLdpFIQ.js → index-xfe9Dcxz.js} +1 -1
- package/dist/assets/{invitation-BXtb5O-j.js → invitation-BuB1-TxL.js} +1 -1
- package/dist/assets/{invite-WH242mWa.js → invite-C8_Fxnwn.js} +1 -1
- package/dist/assets/{issue-passport-B4E8dvwf.js → issue-passport-BjcOuQDv.js} +1 -1
- package/dist/assets/{item-CBVHWk6p.js → item-3tNefK7M.js} +1 -1
- package/dist/assets/ja-rh-7J19i.js +3 -0
- package/dist/assets/ko-DxXSLIu1.js +3 -0
- package/dist/assets/{layout-DfSNPKMl.js → layout-ceT4Awul.js} +1 -1
- package/dist/assets/{list-CENIOVAm.js → list-BaQMMWrO.js} +1 -1
- package/dist/assets/{localization-Dp5KNtVj.js → localization-UtRmFKb1.js} +1 -1
- package/dist/assets/{log-BXebsTbr.js → log-CNHqg8uo.js} +1 -1
- package/dist/assets/{login-Ocw0I3pN.js → login-DXKAfWij.js} +1 -1
- package/dist/assets/{login-oauth-callback-BRNb2ryy.js → login-oauth-callback-20hVf_bH.js} +1 -1
- package/dist/assets/{logo-uploader-BbLU5__c.js → logo-uploader-Dh1aL_OF.js} +3 -3
- package/dist/assets/{lost-passport-AqXyVK_F.js → lost-passport-CZEU6dJY.js} +1 -1
- package/dist/assets/{open-window-Cd4yc8mA.js → open-window-D4nELhWH.js} +1 -1
- package/dist/assets/overview-xXsfHZEs.js +12 -0
- package/dist/assets/{page-header-5sm-cgQK.js → page-header-C2MPWR-H.js} +1 -1
- package/dist/assets/{permission-DQCYXQUJ.js → permission-DXzAY72t.js} +1 -1
- package/dist/assets/{preferences-CGAPawRw.js → preferences-D2Jg5k10.js} +1 -1
- package/dist/assets/{profile-embed-CsLOY-3P.js → profile-embed-BDQR5OIg.js} +1 -1
- package/dist/assets/pt-q0ZSfFth.js +1 -0
- package/dist/assets/{publish-resource-CAFJkTLS.js → publish-resource-DDV8cXFW.js} +1 -1
- package/dist/assets/{react-beautiful-dnd.esm-CIox0WsN.js → react-beautiful-dnd.esm-Z01y4hUy.js} +1 -1
- package/dist/assets/{relative-time-CRrl1gSW.js → relative-time-wZZM9yTU.js} +1 -1
- package/dist/assets/ru-CK3mPXUk.js +1 -0
- package/dist/assets/sdk-msG4TyIo.js +1 -0
- package/dist/assets/{session-D7wR69VL.js → session-BcGa2Lwu.js} +1 -1
- package/dist/assets/{setup-JUlzHBjh.js → setup-C9iZjtRd.js} +3 -3
- package/dist/assets/{start-CAAERMvb.js → start-nMBbzJog.js} +1 -1
- package/dist/assets/{status-DnvDsTz6.js → status-CW8cLZwc.js} +1 -1
- package/dist/assets/{step-actions-LZ6_MGpe.js → step-actions-D4sVdJ5W.js} +1 -1
- package/dist/assets/{studio-Ccy_TWjv.js → studio-oozJB1Q3.js} +1 -1
- package/dist/assets/{switch-control-BsVebsZm.js → switch-control-G4nR-MQG.js} +1 -1
- package/dist/assets/th-DBezSIJU.js +1 -0
- package/dist/assets/{traffic-BHL1S-qx.js → traffic-ChHSyQUx.js} +1 -1
- package/dist/assets/{transfer-Cnv8HjKE.js → transfer-AGCuXVp7.js} +1 -1
- package/dist/assets/{unsubscribe-BviNUKwm.js → unsubscribe-D2HmFcyp.js} +1 -1
- package/dist/assets/{useLocalStorage-CCDYY4Oj.js → useLocalStorage-Nwt6lPBi.js} +1 -1
- package/dist/assets/{user-center-D0D8fiVb.js → user-center-Q-dkmQTy.js} +1 -1
- package/dist/assets/{util-pKcd70El.js → util-ChHwCleX.js} +1 -1
- package/dist/assets/{util-B7dUkIpg.js → util-DfhJqpch.js} +1 -1
- package/dist/assets/{vendor-arcblock-BmGcldk1.js → vendor-arcblock-BkdpkIRL.js} +71 -71
- package/dist/assets/{vendor-ux-did-connect-4bCiyPYS.js → vendor-ux-did-connect-BUS40ceY.js} +5 -5
- package/dist/assets/vi-hjA0ec5w.js +1 -0
- package/dist/assets/wrap-locale-DnXm9Rv3.js +1 -0
- package/dist/assets/zh-BIwal6DF.js +4 -0
- package/dist/assets/zh-tw-Bj9DYpoo.js +3 -0
- package/dist/index.html +3 -3
- package/dist/service-worker.js +1 -1
- package/package.json +28 -28
- package/dist/assets/ar-B77PsiKa.js +0 -3
- package/dist/assets/de-DxPd91kE.js +0 -3
- package/dist/assets/domains-UcV83Tm2.js +0 -1
- package/dist/assets/es-BLYV0NxM.js +0 -3
- package/dist/assets/fr-CKRgIc8I.js +0 -3
- package/dist/assets/hi-C7aBkqb5.js +0 -1
- package/dist/assets/id-CCxzaFVu.js +0 -3
- package/dist/assets/index-CeZInncP.js +0 -144
- package/dist/assets/index-DXodzmv1.js +0 -104
- package/dist/assets/ja-CtW6nj42.js +0 -3
- package/dist/assets/ko-DnLZZMTR.js +0 -3
- package/dist/assets/overview-3qBN9FRv.js +0 -12
- package/dist/assets/pt-Do2DB7RU.js +0 -1
- package/dist/assets/ru-DLPypCUz.js +0 -1
- package/dist/assets/sdk-CrU7nlFr.js +0 -1
- package/dist/assets/th-BgGjupIV.js +0 -1
- package/dist/assets/vi-Bye_bkKy.js +0 -1
- package/dist/assets/wrap-locale-h-Rh8AV-.js +0 -1
- package/dist/assets/zh-Dr6QyOeU.js +0 -4
- package/dist/assets/zh-tw-3LQ5YEkc.js +0 -3
|
@@ -1 +0,0 @@
|
|
|
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:"Yêu cầu KeyPair đã tạo",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:"Máy chủ Blocklet Đăng nhập",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 trên ví DID 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 trên Ví DID 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."}},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",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 xấu không mong muốn 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",selected:"Đã chọn",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."},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."},admin:{iframeTitle:"Giao diện Quản trị Blocklet",title:"Giao diện quản trị",noContent:"Khối này không có giao diện quản trị",securityError:"SecurityError: Không thể mở URL quản trị từ truy cập khung nguồn gốc giao động"},config:{name:"Tên ứng dụng",description:"Mô tả ứng dụng",sk:"Khóa bí mật cho ví ứng dụng",logoSquare:"Biểu trưng ứng dụng",logoRect:"Logo hình chữ nhật",logoRectDesc:"Thường được hiển thị ở đầu trang, mặc định là biểu trưng ứng dụng",logoFavicon:"Favicon",logoFaviconDesc:"Thường được hiển thị trên thanh địa chỉ trình duyệt hoặc trang tab, mặc định là logo ứng dụng",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 (Hiển thị ở chân trang)",copyrightYear:"Năm bản quyền (Hiển thị ở chân trang)",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:"Dễ tiếp cận cho tất cả",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ỉ mình tôi có thể 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:"Chỉ có người được mời mới có thể truy cập",description:"Bạn có thể mời thành viên sau trên trang quản trị"}},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",blockletTypeChangeTip:"Loại ví sẽ được thay đổi thành <b>{value}</b>",appDidChangeTip:"Hoạt động này sẽ thay đổi DID của ứng dụng, điều này sẽ dẫn đến những vấn đề sau. Vui lòng xác nhận sau khi đánh giá cẩn thận:",appDidChangeTipL1:"Tài khoản người dùng kết nối với ứng dụng này sẽ thay đổi",appDidChangeTipL2:"Tên miền DID của ứng dụng sẽ thay đổi và tên miền gốc sẽ trở thành không hợp lệ",appSkChangeTip:"Bạn đang thay đổi khóa bí mật của ứng dụng",walletTypeTitle:"Cập Nhật Loại Ví",appSkTitle:"Cập nhật Khoá Bí Mật Ứng Dụng",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)"},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:"Màn hình chờ chân dung",splashLandscape:"Cảnh Splash",splashPortraitDesc:"Hiển thị khi blocklet được khởi chạy trong chế độ dọc",splashLandscapeDesc:"Hiển thị khi blocklet được khởi chạy ở chế độ ngang",rotateSessionKey:{name:"Xoay muối phiên",purpose:"Muối phiên là một giá trị ngẫu nhiên được sử dụng để tăng cường bảo mật cho các token phiên. Nhấn nút để xoay muối phiên thủ công, giúp giảm rủi ro bị xâm nhập mã thông báo đă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 không? Thao tác này sẽ làm vô hiệu hóa tất cả các mã đăng nhập hiện có và buộc người dùng đăng nhập lại, bao gồm mã đăng nhập của bạn"},ogImage:"Mở Graph Background",ogImageDesc:"Tùy chỉnh hình nền của tất cả các hình ảnh open graph, cần phối hợp tốt với chữ trắng",migrate:{button:"Di chuyển với DID Wallet",title:"Xác nhận xoay vòng App DID?",description:"Bạn có chắc chắn muốn xoay App DID? 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:"Cấu hình 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à một người giữ token hợp lệ trên blockchain, địa chỉ token/tài sản/nhà máy/cọc 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."},overview:{source:"Nguồn",deployedFrom:"Triển khai từ",accessControl:"Kiểm soát truy cập",viewInStore:"Xem tại cửa hàng"},diskInfo:{empty:"Thông tin đĩa không khả dụng hiện tại!",appDir:"Thư mục Ứng dụng",dataDir:"Thư mục dữ liệu",logDir:"Thư mục nhật ký",cacheDir:"Thư mục cache"},runtimeInfo:{noRunning:"Thông tin thời gian chạy sẽ có sẵn khi blocklet đang chạy!",memoryUsage:"Bộ nhớ sử dụng",cpuUsage:"Sử dụng CPU",uptime:"Thời gian hoạt động",port:"Cảng",processId:"Mã quy trình"},dist:{downloadLink:"Liên kết Tải xuống",verify:"Xác minh"},status:{added:"Đã thêm",waiting:"Đang chờ",downloading:"Đang tải xuống",extracting:"Trích xuất",installing:"Đang cài đặt",upgrading:"Nâng cấp",installed:"Đã cài đặt",created:"Được tạo",starting:"Bắt đầu",running:"Chạy",stopping:"Dừng lại",stopped:"Dừng",error:"Lỗi",deleting:"Xóa",corrupted:"Bị hỏng",purchasing:"Đang chờ mua hàng",purchased:"Đã mua",verifying:"Xác minh mua hàng",resource:"Tài nguyên"},list:{download:"Tải xuống",star:"Ngôi sao",searchPlaceholder:"Tìm kiếm theo tên khối hoặc DID"},component:{container:"Cấu hình Toàn cầu",showContainer:"Hiển thị Cấu hình Toàn cầu",didSpaceConfig:"Cấu hình DID Spaces",didSpaceConfigTip:"Hoàn thành quy trình ủy quyền sau để lưu trữ dữ liệu ứng dụng trong DID Spaces",didSpaceConnected:"Lưu trữ được ủy quyền cho: {endpoint}",checkUpdateTitle:"Kiểm tra Cập nhật",updateTitle:"Cập nhật thành phần",noUpdate:"Không có thành phần cần cập nhật",add:"Thêm thành phần",selectComponent:"Chọn Blocklet",selectRegistry:"Chọn Blocklet Store",selectRegistryTip:"Bạn có thể chuyển cửa hàng khối để xem nhiều thành phần hơn",selectInstance:"Chọn Instance",selectInstanceTip:"Bạn có thể chọn một phiên bản hiện có hoặc tạo một phiên bản mới. Các phiên bản hiện có sẽ sử dụng cấu hình và dữ liệu đã được lưu trước đó.",newInstance:"Tạo Mới Thể hiện",noComponent:"Không có thành phần",mountPoint:"Điểm gắn kết là gì?",mountPointTip:"Nếu bạn đặt điểm gắn kết thành '/my-prefix', thì tất cả các yêu cầu bắt đầu bằng điểm gắn kết đó sẽ được định tuyến đến thành phần đã chọn",delete:"Xóa Bộ phận",deleteDescription:"Thành phần này sẽ không thể truy cập sau khi xóa. Xác nhận xóa?",purchase:"Yêu cầu thanh toán",tip:{stopBlocklet:"Vui lòng dừng chạy Blocklet trước",requiredBy:"Yếu tố này được yêu cầu bởi {name}"},choose:"Chọn",addWithName:"Thêm Blocklet vào {name}",installingCanCloseWindowTip:"Đang cài đặt thành phần trong nền, bạn có thể đóng cửa sổ này an toàn",installSuccessTip:"Chúc mừng, thành phần đã được cài đặt thành công!",missDownloadTokenTip:"Không thể thêm thành phần trả phí mà không có mã thông tin tải xuống hợp lệ",purchaseComponentSecondCheckTip:"Vui lòng trình diễn NFT mua Blocklet của bạn để tiếp tục",installComponentError:"Đã xảy ra lỗi khi cài đặt thành phần, vui lòng thử lại",downloadComponentError:"Đã xảy ra lỗi khi tải xuống thành phần, vui lòng thử lại",addComponentTip:{introduction:"Chào mừng bạn đến Vị tro Tiện ích Thêm Thành phần",isPurchase:"Bạn cần xác minh NFT trước khi sử dụng <b>{name}</b> như một thành phần",belowInformation:"Dưới đây là thông tin về thành phần:",verifyNFT:"Vui lòng chọn phương pháp Xác minh NFT",config:"Vui lòng điền vào cấu hình của thành phần",environment:"Vui lòng điền vào môi trường của thành phần",fromUrl:"Thêm Blocklet Từ Url"},addNext:"Thêm {name}",upgradeNext:"Nâng cấp {name}",setting:"Cài đặt",noDependencies:"{name} không có bất kỳ sự phụ thuộc nào",relatedComponents:"Các khối liên quan",required:"Cần thiết",installed:"Đã cài đặt",installingTip:"Đang cài đặt thành phần, vui lòng chờ...",upgrade:"Nâng cấp"},router:{urlPath:"URL Path",noRunning:"Blocklet hiện không được khởi động. Không thể truy cập thông qua địa chỉ sau!",securitySetting:"Cài đặt Bảo mật",checkUrlAccessible:"Kiểm tra tính khả dụng của địa chỉ",urlInaccessible:"Có thể do lý do mạng, địa chỉ tạm thời không thể truy cập",noAccessibleUrl:"URL không thể truy cập",domainLockTooltip:"Miền tên được tạo bởi hệ thống không thể chỉnh sửa.",urlLockTooltip:"Đường dẫn URL được tạo bởi hệ thống không thể chỉnh sửa.",showAllDomains:"Hiển thị tất cả các miền",showAllDIDs:"Hiển thị tất cả DIDs",currentDomainTip:"Bạn đang truy cập trang hiện tại qua tên miền này"},export:{title:"Xuất Blocklet",name:"Tên Bundle",nameTip:"ví dụ 'my-blocklet-name' hoặc '@my-scope/blocklet-name'",result:"Tiếp theo là gì",exportSource:"Xuất nguồn",success:"Blocklet xuất thành công",resultTipStart:"Với",resultTipEnd:"Bạn có thể xây dựng và xuất bản blocklet này trong vài phút",uploadedComponentTip:"Các thành phần được tải lên trực tiếp không thể được xuất khẩu:"},migrate:{title:"Di chuyển ứng dụng",scan:"Kết nối Ví DID của bạn để tạo một cặp khóa cho ứng dụng này",confirm:"Xem lại thao tác này trên ví DID của bạn",success:"Ứng dụng của bạn đã được di chuyển thành công, trang sẽ được làm mới trong {sec} giây",intro:{l1:"Nhấp vào đây",l2:"Để di chuyển ứng dụng của bạn sang phiên bản mới (thay đổi bị tắt cho đến khi quá trình di chuyển hoàn tất)",l3:"Ứng dụng DID sẽ được điều khiển hoàn toàn từ Ví DID của bạn.",l4:"Dữ liệu ứng dụng sẽ được di chuyển, và không yêu cầu thay đổi khác.",l5:"Cấu trúc ứng dụng mới sẽ mang lại cho bạn linh hoạt hơn khi thay đổi các thành phần.",l6:"4. Vui lòng không thay đổi điểm gắn kết thành phần trước khi phiên bản thành phần mới được phát hành."},tip:{duplicate:"Tìm thành phần trùng lặp {name}, vui lòng xóa các thành phần không cần thiết và di chuyển lại",running:"Vui lòng ngừng chặn trước quá trình di chuyển"}},error:{isRunning:"Blocklet đang chạy, vui lòng dừng nó trước",isInProgress:"Blocklet đang tiến hành, vui lòng đợi cho đến khi hoàn thành"},publish:{createResource:"Tạo tài nguyên",addResource:"Thêm bản phát hành",productTitle:"Sản phẩm",versionTitle:"Phiên bản",imgTitle:"Hình ảnh",resourceTitle:"Nội dung",blockletEmptyTip:"Ở đây không có khối",createBlockletTip:"Bạn có thể tạo blocklet mới thông qua các tài nguyên, thành phần và cấu hình hiện có trong ứng dụng này",createBlocklet:"Khối mới",componentNotRunning:"Blocklet {name} không hoạt động, vui lòng khởi chạy trước",releaseEmptyTip:"Không có bản phát hành ở đây",createReleaseTip:"Bạn có thể tạo một phiên bản của blocklet, cùng với ghi chú về phiên bản và tài nguyên, để mọi người khác có thể sử dụng",createRelease:"Tạo bản phát hành",deleteReleaseTip:"Phiên bản không thể khôi phục sau khi xóa",createBlockletDid:"Tạo từ Ví Điện tử DID",createReleaseSuccess:"Phát hành được tạo thành công",saveDraftSuccess:"Nháp đã được lưu thành công",connect:{title:"Tạo DID Blocklet",scan:"Sử dụng các phương pháp sau để tạo Blocklet DID",confirm:"Xác nhận bằng cách sử dụng Ví DID",success:"DID Blocklet đã được tạo ra, vui lòng tiếp tục hoạt động của bạn"},saveDraft:"Lưu nháp",releaseNote:"Ghi chú phát hành",errorTip:{noDid:"Blocklet DID là bắt buộc",noTitle:"Tiêu đề khối là bắt buộc",noVersion:"Phiên bản Blocklet cần thiết",noDescription:"Yêu cầu miêu tả Blocklet",noNote:"Cần có Ghi chú phát hành",inValidVersion:"Phiên bản Blocklet không hợp lệ",noResource:"Vui lòng chọn tài nguyên tải lên để bao gồm trong blocklet",noFirstDid:"Vui lòng tạo Blocklet DID trước",invalidUrl:"Vui lòng nhập một URL hợp lệ",invalidUrlOrEmail:"Vui lòng nhập một URL hoặc email hợp lệ"},packTip:"Hiện tại, blocklet có thể được cài đặt trực tiếp như các ứng dụng. Các thành phần và cấu hình ứng dụng sẽ được tự động bao gồm trong Blocklet.",resourceChangedWarning:"Bạn đã chỉnh sửa nguồn tài nguyên, vui lòng lưu lại đúng giờ",installResourceTip:"Đường dẫn Cài đặt:",installResourceTip2:"Nếu bạn muốn xem thêm những mẹo khác, vui lòng truy cập",installResourceHelp:"Tài liệu giúp đỡ",componentIncluded:"Bao gồm",componentForceRequired:"Yêu cầu",download:"Tải về {name}",delete:"Xóa {name}",copyInstallUrl:"Sao chép URL cài đặt",install:"Cài đặt {name}",publishToStoreSuccess:"Blocklet đã được xuất bản lên Cửa hàng thành công",connectStoreSuccess:"Kết nối Blocklet Store thành công",uploadToStoreSuccess:"Blocklet đã tải lên Store thành công, bạn cần phải xuất bản nó trong Store",viewLastRelease:"Xem phiên bản phát hành gần đây nhất",reconnectStoreTip:"Sau khi kết nối lại, một nhà phát triển mới sẽ được liên kết. Bạn có chắc chắn muốn kết nối lại không?",deleteProject:{title:"Xóa {name}",scan:"Sử dụng các phương pháp sau để xóa {name}",confirm:"Xác nhận sử dụng Ví DID",success:"Dự án Blocklet đã bị xóa, vui lòng tiếp tục hoạt động của bạn",tip1:"Dự án Blocklet sẽ không thể khôi phục sau khi xóa",tip2:"Bạn sẽ không còn có khả năng xuất bản phiên bản mới cho Blocklet đã bị xóa, điều đó có nghĩa là Blocklet sẽ không được cập nhật nữa trên Cửa hàng.",tip3:"Xóa Blocklet sẽ không ảnh hưởng đến phiên bản hiện tại đã được xuất bản trong Cửa hàng.",description:"Sau khi xóa Blocklet, bạn sẽ gặp các vấn đề sau, bạn có chắc chắn muốn xóa nó không?"},resourceTip:"Hiện tại, là một khối tài nguyên, nó không thể được cài đặt trực tiếp từ Cửa hàng.",whyCantSeeInStore:"Tại sao tôi không thể thấy khối này trong Cửa hàng?",whyCantSeeResourceBlockletInStore:"Resource Blocklet được ẩn khỏi trang danh sách cửa hàng mặc định",tenantScope:"Người thuê",blockletStudio:"Blocklet Studio",allComponentsNotRunning:"Blocklets không đang chạy, vui lòng khởi động nó trước",resourceEmptyTip:"Không có tài nguyên khả dụng",steps:{resources:"Vui lòng chọn các tài nguyên cần được liên kết với Blocklet hiện tại, vì các tài nguyên này sẽ được cài đặt cùng với Blocklet.",blocklets:"Chọn các khối để kết hợp.",version:"Cài đặt phiên bản phát hành và nhật ký thay đổi.",introduction:"Một phần giới thiệu rõ ràng có thể làm nổi bật hiệu quả Blocklet của bạn. Bạn có thể sử dụng cú pháp Markdown để viết và xem trước nó.",branding:"Mô tả thông tin cơ bản về Blocklet của bạn. Thông tin này sẽ được trình bày cho người dùng trong cửa hàng."},branding:"Thương hiệu",brandingHelp:"Thông tin chi tiết về blocklet sẽ được hiển thị trên Cửa hàng",resourceSelect:"Chọn tài nguyên từ blocklets",resourceUpload:"Tải tài nguyên từ ổ đĩa của bạn (index.html cần thiết trong tệp nén)",deleteStoreTip:"Bạn có chắc chắn muốn xóa {name} khỏi danh sách Cửa hàng Kết nối không?",disconnectStoreTip:"Sau khi ngắt kết nối, Blocklet sẽ bị xóa khỏi cửa hàng. Bạn có chắc chắn muốn ngắt kết nối không?",connectOrUpload:"Kết nối hoặc Tải lên",developerInfo:"Thông tin nhà phát triển",autoUploadTip:"Tự động tải lên blocklet lên Cửa hàng sau khi phát hành",possibleSameStoreTip:"Hãy thử giải quyết các blocklet phụ thuộc trong cùng một Cửa hàng Blocklet trước mỗi khi tải lên khi có thể",needProjectId:"Vui lòng tạo dự án trước",projectSettings:"Cài đặt Dự án",noStoreSelected:"Vui lòng chọn một cửa hàng hiện có hoặc thêm cửa hàng mới để tiếp tục",installToThisServer:"Cài đặt vào máy chủ này",forceResourceBlocklet:"Lực được định nghĩa như là Blocklet dựa theo tài nguyên",resourceDocker:"Xây dựng Blocklet từ Docker",resourceSelectTitle:"Nguồn lực",resourceUploadTitle:"Tải lên",resourceDockerTitle:"Docker",resourceDockerInputTip:"Vui lòng nhập lệnh docker run",docker:{pleaseInputDockerCommand:"Vui lòng nhập lệnh docker run",volumeTip:"Phải bắt đầu với $BLOCKLET_DATA_DIR hoặc $BLOCKLET_APP_DIR",volumeTip2:'Âm lượng không thể chứa ".."',noAllowTheArg:"Tham số không được phép sử dụng trong lệnh docker run",needCustomInput:"Thiết lập giá trị khi cài đặt blocklet",dockerParams:"Tham số Docker",dockerCommand:"Lệnh Docker",dockerImageName:"Tên Docker Image",addItem:"Thêm tham số chạy Docker",envKey:"Khóa biến môi trường",publishTips:"Cổng ngoài cuối cùng sẽ được gán tự động bởi blocklet",volumeTips:"Âm lượng cần bắt đầu với $BLOCKLET_DATA_DIR hoặc $BLOCKLET_APP_DIR",modifyParam:"Chỉnh sửa tham số chạy Docker",modifyEnv:"Sửa đổi Biến Môi trường",paramDetail:"Chi tiết Param",description:"Mô tả",secure:"Bảo mật",shared:"Đã chia sẻ",required:"Bắt buộc",prefix:"Tiền tố",path:"Đường dẫn",name:"Tên",portType:"Loại Cổng",dockerImageNameError:"Tên của Docker Image không được chứa khoảng trắng",autoGenerated:"Tự động tạo",dockerCMDError:"Docker CMD chỉ hỗ trợ các ký tự đơn giản",proxyBehavior:"Hành vi Proxy",serviceProxy:"Dịch vụ",directProxy:"Trực tiếp"},storeRule:{maxImageCount:"Cửa hàng cho phép tối đa {max} ảnh chụp màn hình.",minImageCount:"Cửa hàng yêu cầu tối thiểu {min} {unit}.",minImageSize:"Kích thước ảnh chụp màn hình {name} phải tối thiểu {width}x{height}.",logoFormat:"Định dạng hình ảnh logo chỉ hỗ trợ [{format}].",warning:"Cảnh báo",screenshot:"Ảnh chụp màn hình",screenshots:"Ảnh chụp màn hình",first:"Thứ 1",second:"Thứ 2",third:"Thứ 3"}},titleValidationError:"Độ dài tiêu đề phải từ 3 đến 40 ký tự",descriptionValidationError:"Độ dài mô tả phải từ 3 đến 80 ký tự",whyNeedAppPid:"Nếu ứng dụng của bạn đã được di chuyển, DID vĩnh viễn là DID được tạo khi Blocklet này được cài đặt ban đầu",usingDocker:"Blocklet này sẽ chạy bằng docker",gotoVisitError:"Không thể truy cập URL Blocklet, vui lòng thử lại sau",usingIsolation:"Blocklet này sẽ chạy với cách ly mạng",dockerImage:"Hỗ trợ Docker",mountPoint:{description1:"Thay đổi này có thể làm hỏng các URL chứa điểm gắn kết cũ, điều này có thể dẫn đến:",case1:"Tham chiếu tài nguyên bị hỏng giữa các Blocklets trong ứng dụng này",case2:"URL bị hỏng nếu bạn đã chia sẻ chúng công khai",description2:"Bạn có thể thiết lập chuyển hướng từ điểm gắn kết cũ sang điểm gắn kết mới để giảm thiểu những thay đổi có thể gây lỗi."}},dashboard:{nodeDid:"Nút",ownerDid:"Chủ sở hữu",routingEngine:"Bộ Quy Tắc",ownerNftURL:"Chủ sở hữu NFT",expirationLeft:"Ngày hết hạn còn lại",startFromCrashTip:"Blocklet Server không thoát bình thường lần trước, vui lòng khởi động thủ công các blocklets cần chạy.",runtimeConfig:{blockletMaxMemoryLimit:"Giới hạn bộ nhớ tối đa của Blocklet",daemonMaxMemoryLimit:"Giới hạn bộ nhớ tối đa của máy chủ",proxyMaxMemoryLimit:"Giới hạn Bộ nhớ Tối đa của Bảng Tin Sự kiện"}},store:{nameSort:"Tên",popularSort:"Sự phổ biến",headerDescription:"Tìm kiếm và Cài đặt Blocklets của bạn",detail:{purchase:"Mua {name}",open:"Mở {name}",install:"Cài đặt {name}",upgrade:"Nâng cấp {name}",empty:"Không giới thiệu"},blockletRegistry:{changeFailed:"Thay đổi Cửa hàng Blocklet thất bại:",addFailed:"Thêm Blocklet Store thất bại: {name}",editFailed:"Sửa cửa hàng Blocklet không thành công",switchRegistry:"Chuyển Đổi Cửa Hàng Khối",addRegistry:"Thêm Blocklet Store",editRegistry:"Chỉnh sửa Cửa hàng Blocklet",deleteRegistry:"Xóa Blocklet Store",haveSameRegistry:"Cửa hàng khối cùng tồn tại",registryName:"Tên Cửa hàng Blocklet",registryUrl:"URL cửa hàng Blocklet",registryNameEmpty:"Tên cửa hàng Blocklet không thể để trống",registryUrlEmpty:"URL cửa hàng Blocklet không được để trống",deleteDesc:"Xác nhận Xóa cửa hàng blocklet {name} ?",confirmDesc:"Vui lòng nhập {name} để xóa"},purchase:{title:"Mua {name}",confirmed:"Giao dịch mua NFT của bạn đã được xác minh",declined:"Bạn không cung cấp mua NFT blocklet hợp lệ",waiting:"Đang chờ hoàn tất mua hàng...",purchase:{title:"Mua NFT",description:"Hãy thanh toán một số mã thông báo trước khi cài đặt khối này nếu bạn chưa mua khối này"},verify:{title:"Xác minh NFT",description:"NFT của bạn sẽ được xác minh trước khi cài đặt blocklet này nếu bạn đã mua và giữ NFT mua hàng trong Ví DID của bạn",auth:{title:"Yêu cầu Mua thông tin Xác thực",scan:"Kết nối DID Wallet để cung cấp mua blocklet NFT",confirm:"Vui lòng xem lại hoạt động này trên Ví DID của bạn",success:"Mua NFT của bạn đã được xác minh và việc cài đặt đã bắt đầu"}},auth:{title:"Mua {name}",scan:"Quét mã QR sau đây bằng ví điện tử DID của bạn",confirm:"Xác nhận trên ví DID của bạn",success:"Mua NFT được gửi vào ví DID của bạn"},launch:"Khởi chạy {name}",autoLaunch:"{name} đã mua thành công, đang chuyển hướng đến trang khởi chạy..."},tooltip:{upgradeServer:"Blocklet yêu cầu Blocklet Server phiên bản {version}, phiên bản Blocklet Server hiện tại là {serverVersion}"}},setting:{saveSuccess:"Cài đặt đã được lưu thành công",unSavedTip:'Có những thay đổi chưa được lưu, vui lòng nhấp vào "Lưu Thay Đổi" để lưu chúng.',unSavedLeaveTip:"Có những thay đổi chưa được lưu, bạn chắc chắn muốn rời khỏi trang?",form:{name:"Tên Máy chủ của bạn",nameRequired:"Mô tả máy chủ là bắt buộc",namePlaceholder:"Tên máy chủ",description:"Mô tả máy chủ của bạn",descriptionHolder:"Mô tả máy chủ",descriptionRequired:"Cần mô tả của máy chủ",domain:"Tên miền máy chủ của bạn",domainPlaceholder:"Tên Miền Máy Chủ",domainRequired:"Yêu cầu miền máy chủ",ipPlaceholder:"IP",ipRequired:"IP được yêu cầu",registry:"Cửa hàng Blocklet",registryPlaceholder:"Kho blocklet để tìm blocklets",registryRequired:"Cửa hàng Blocklet là bắt buộc",registerUrl:"Địa chỉ URL của Blocklet Launcher",registerUrlPlaceholder:"Nhập URL của Blocklet Launcher ưa thích của bạn, bạn có thể sử dụng phiên bản chính thức một cách an toàn",webWalletUrl:"URL ví DID",webWalletUrlPlaceholder:"Vui lòng nhập URL của 'Ví DID' của bạn được lưu trữ, bạn có thể sử dụng phiên bản chính thức một cách an toàn",nftDomainUrl:"URL miền NFT",nftDomainUrlPlaceholder:'Vui lòng nhập URL của miền "NFT" đã lưu trữ của bạn, bạn có thể sử dụng nó một cách an toàn',enableWelcomePage:"Bật trang chào mừng",welcome:{switchLabel:"Trang Chào mừng"},upgrade:{title:"Nâng cấp Blocklet Server lên phiên bản {version}",description:"Trong quá trình nâng cấp, máy chủ Blocklet của bạn sẽ vào chế độ bảo trì trong vài phút trong khi cập nhật hoàn tất.",dialog:'Nhấp vào "xác nhận" để cài đặt bản cập nhật. Blocklet Server sẽ vào chế độ bảo trì cho đến khi cập nhật hoàn thành và tự động trở lại chế độ sản xuất.',confirm:"Nâng cấp",switchLabel:"Kiểm tra cập nhật tự động",enableBetaRelease:"Kích hoạt Phiên bản Beta",setup:"Đang chuẩn bị nâng cấp",installing:"Đang cài đặt máy chủ Blocklet v{version}",restarting:"Khởi động lại Máy chủ Blocklet",cleanup:"Di chuyển dữ liệu máy chủ Blocklet",verifying:"Đang xác minh máy chủ Blocklet v{version}",rollback:"Máy chủ Rollback Blocklet",complete:"Nâng cấp đã hoàn thành!",progress:"Nâng cấp {name}",check:"Kiểm tra cập nhật",latest:"Bạn đang chạy phiên bản mới nhất."},restart:{title:"Khởi động lại máy chủ Blocklet",description:"Trong quá trình khởi động lại, máy chủ Blocklet của bạn sẽ vào chế độ bảo trì cho đến khi quá trình khởi động lại hoàn tất.",dialog:'Bấm vào "xác nhận" để khởi động lại. Blocklet Server sẽ vào chế độ bảo trì cho đến khi khởi động lại hoàn thành và tự động quay trở lại chế độ sản xuất.',confirm:"Khởi động lại",setup:"Đang chuẩn bị khởi động lại",verifying:"Đang xác minh Máy chủ Blocklet",restarting:"Khởi động lại Máy chủ Blocklet",cleanup:"Đảm bảo mọi thứ đều ổn",rollback:"Dọn dẹp trạng thái bẩn",complete:"Giữ hoàn chỉnh!",progress:"Khởi động lại {name}"},register:{title:"Đăng ký Blocklet Launcher",description:"Sau khi thêm, bạn có thể khởi chạy blocklets tới máy chủ blocklet này từ {url}.",button:"Đăng ký"},monitor:{diskThreshold:"Gửi cảnh báo khi sử dụng đĩa vượt quá (%)",diskThresholdPlaceholder:"Vui lòng đặt ngưỡng cảnh báo việc sử dụng đĩa"},security:{switchLabel:"Cách ly Hệ thống Tệp",switchTips:"Sau khi vô hiệu hóa tùy chọn này, hệ thống tệp của Blocklet sẽ không còn được cách ly nữa, điều này có thể tạo ra nguy cơ phần mềm độc hại làm hỏng hệ thống tệp.",warningTips:"Tính năng cô lập hệ thống tệp không có hiệu lực. Vui lòng nâng cấp phiên bản node.js (phiên bản hiện tại là {version}) lên v21.6.0 hoặc cao hơn."},docker:{switchLabel:"Chạy Blocklets trong Containers",switchTips:"Sau khi kích hoạt tùy chọn này, các blocklet sẽ chạy bằng cách sử dụng container, có thể cải thiện bảo mật tổng thể của máy chủ.",notInstalled:"Không thể kích hoạt chạy container vì Docker chưa được cài đặt hoặc thiếu quyền cần thiết để thực thi.",needCloseFileSystemIsolation:"Cách ly hệ thống tệp và chế độ thùng chứa docker không thể được kích hoạt cùng một lúc"},dockerNetwork:{switchLabel:"Phân lập Mạng cho Container",switchTips:"Sau khi bật tùy chọn này, các blocklet sẽ chạy an toàn hơn: một blocklet không thể truy cập vào máy chủ blocklet hoặc các blocklet khác trên các ứng dụng.",needEnableDocker:"Chế độ chứa phải được kích hoạt để bật khả năng cô lập mạng"},restartAllContainers:{title:"Khởi động lại tất cả Container",description:"Khởi động lại tất cả các container và giữ cho blocklets chạy.",dialog:'Nhấp vào "xác nhận" để khởi động lại tất cả blocklets trong container và giữ trạng thái blocklets đang chạy.',confirm:"Khởi động lại",setup:"Đang chuẩn bị khởi động lại",verifying:"Đang xác minh Server Blocklet",restarting:"Khởi động lại tất cả container ở nền",cleanup:"Đảm bảo mọi thứ đều ổn",rollback:"Dọn dẹp trạng thái bẩn",complete:"Bảo trì hoàn tất!",progress:"Khởi động lại tất cả các container ở chế độ nền"},restartAllBlocklet:{title:"Khởi động lại tất cả Blocklets",description:"Khởi động lại tất cả Blocklets đang chạy hoặc lỗi trên server này.",dialog:'Nhấp vào "xác nhận" để khởi động lại tất cả blocklets ở chế độ nền.',confirm:"Khởi động lại",setup:"Đang chuẩn bị khởi động lại",verifying:"Đang xác minh Blocklet Server",restarting:"Khởi động lại tất cả các Blocklets đang chạy hoặc lỗi ở chế độ nền",cleanup:"Đảm bảo mọi thứ đều ổn",rollback:"Dọn dẹp trạng thái bẩn",complete:"Bảo trì hoàn tất!",progress:"Khởi động lại tất cả Blocklets đang chạy hoặc bị lỗi ở chế độ nền"},enableSessionHardening:{switchLabel:"Kích hoạt Tăng cường Phiên",switchTips:"Sau khi bật tùy chọn này, các hoạt động đột biến sẽ yêu cầu xác minh nghiêm ngặt, có thể cải thiện bảo mật tổng thể của máy chủ."}},accessKey:{accessKeyId:"KHÓA TRUY CẬP",lastUsed:"Lần cuối sử dụng vào",tip:"Vui lòng nhập tên cho khóa truy cập này để tham khảo sau này:",saveSecretTip:"Đây là lần duy nhất mà khóa bí mật truy cập của bạn có thể được xem và không thể khôi phục. Tuy nhiên, bạn có thể tạo các khóa truy cập mới bất kỳ lúc nào.",iKnow:"Tôi đã sao chép và lưu Khoá truy cập Bí mật",showSecret:"Hiển thị Mã Truy Cập Bí Mật",hideSecret:"Ẩn bí mật",title:"Xóa Khóa Truy Cập",descriptionNoTime:"Điều này sẽ xóa vĩnh viễn khóa truy cập {key} với tên {name}, chưa bao giờ được sử dụng trước đó",description:"Điều này sẽ xóa khóa truy cập {key} vĩnh viễn với tên {name}, được sử dụng lần cuối vào {time}, {timeAge}",confirm_desc:"Vui lòng nhập {name} để xóa",remark:"Tên Khóa Truy Cập",remarkInvalid:"Tên Khóa truy cập là bắt buộc"},webhook:{add:"Thêm tích hợp",delTitle:"Xóa tích hợp",requiredError:"Vui lòng cung cấp một {type} hợp lệ",confirm_desc:"Vui lòng nhập {name} để xóa",test:"Kiểm tra",description:"Điều này sẽ xóa vĩnh viễn tích hợp với ID {id}",columns:{description:"Xin chào, ID",params:"Tham số",createdAt:"Tạo vào"}}},notification:{title:"Thông báo",empty:"Chưa có hoạt động",viewAll:"Xem Tất Cả",showRead:"Hiển thị Đọc",markAllAsRead:"Đánh dấu tất cả là đã đọc",markAsRead:"Đánh dấu đã đọc",proceed:"Tiếp tục",checkingForUpdates:"Đang kiểm tra cập nhật...",email:{enable:"Bật thông báo qua email",from:"Người gửi email",host:"Máy chủ SMTP",port:"Cổng máy chủ SMTP",user:"Tên người dùng máy chủ SMTP",secure:"Kích hoạt kết nối an toàn",password:"Mật khẩu người dùng máy chủ SMTP",fromRequired:"Người gửi email là bắt buộc",fromInvalid:"Người gửi email không hợp lệ",receiverRequired:"Người nhận email bắt buộc",receiverInvalid:"Người nhận email không hợp lệ",hostRequired:"Máy chủ SMTP cần được cung cấp",hostInvalid:"Máy chủ SMTP không hợp lệ",portRequired:"Cổng máy chủ SMTP là bắt buộc",portInvalid:"Cổng máy chủ SMTP không hợp lệ, cổng phải từ 1 đến 65535",userRequired:"Cần nhập tên người dùng máy chủ SMTP",passwordRequired:"Yêu cầu mật khẩu người dùng máy chủ SMTP",testSuccess:"Gửi email kiểm tra thành công",testFailed:"Gửi email thử thất bại",testReceiver:"Người nhận Email",testSendEmail:"Thử gửi email",inputTestReceiver:"Vui lòng nhập email nhận kiểm tra",disable:"Hủy đăng ký thông báo qua email",disableDescription:"Sau khi hủy đăng ký, bạn sẽ không còn nhận được thông báo qua email nữa. Để nhận thông báo qua email, bạn có thể đăng ký lại trang này.",unsubscribe:"Hủy đăng ký thông báo qua email",unsubscribeDescription:"Sau khi hủy đăng ký, bạn sẽ không còn nhận được bất kỳ thông báo qua email nào nữa.",subscribe:"Đăng ký",subscribeDescription:"Để nhận thông báo qua email, bạn có thể đăng ký lại trên trang cài đặt."},comingSoon:"Có thêm kênh thông báo đang được xây dựng",unsubscribe:"Huỷ đăng ký",unsubscribeSucceed:"Hủy đăng ký thành công",unsubscribeFailed:"Hủy đăng ký không thành công",unsubscribeTokenRequired:"Mã token hủy đăng ký bắt buộc",unsubscribeTokenExpired:"Mã hủy đăng ký đã hết hạn",unsubscribeTokenInvalid:"Mã hủy đăng ký không hợp lệ",installComponentError:"Không tìm thấy thành phần {name} đã gỡ cài đặt",installingComponent:"Đang cài đặt thành phần {name}",pushKit:{enable:"Kích hoạt thông báo PushKit",endpoint:"PushKit endpoint",endpointInvalid:"Điểm cuối PushKit là URL không hợp lệ",testSuccess:"Đẩy thử PushKit thành công",testFailed:"Thử nghiệm gửi PushKit không thành công",testReceiver:"Máy thu PushKit",testSend:"Thử nghiệm đẩy push-kit",inputTestReceiver:"Vui lòng nhập máy thu thử nghiệm",receiverRequired:"Cần có bộ thu PushKit",pushPath:"Đường dẫn api cho push-kit (mặc định /api/push)",did:"PushKit Blocklet DID",customOptions:"Tùy Chọn Tùy Chỉnh"},notificationDetails:"Chi tiết thông báo",receiver:"Người nhận",sendStatus:{success:"Đã gửi",failed:"Thất bại",sentTime:"Gửi vào lúc: {date}",pending:"Đang chờ",reason:{enabled:"Người dùng đã bật thông báo {channel}",disabled:"Người dùng chưa bật thông báo {channel}",unavailable:"Blocklet hiện tại chưa cấu hình thông báo {channel}",available:"Blocklet hiện tại đã cấu hình thông báo {channel}",notSent:"Tin nhắn hiện tại chưa được gửi đến {channel}",offline:"Người dùng đang ngoại tuyến"},count:"{count}",total:"Tổng cộng"},filter:"Lọc",notificationPreview:"Xem trước Thông báo",resend:"Gửi lại",resendLimit:"Bạn có thể gửi lại thông báo tối đa ba lần mỗi ngày.",from:"Từ",to:"Cho",body:"Cơ thể",notificationTitle:"Tiêu đề",createdAt:"Tạo lúc",status:"Trạng thái",system:"Hệ thống",severity:"Mức độ nghiêm trọng",config:"Configs",selectChannels:"Chọn Kênh",selectChannelsTip:"Chọn các kênh để gửi lại",resendFailedOnly:"Gửi lại chỉ đến các kênh đã thất bại",statistics:"Thống kê",allSender:"Tất cả Người gửi",allSeverity:"Tất cả mức độ nghiêm trọng",severityType:{info:"Info",success:"Thành công",warning:"Cảnh báo",error:"Lỗi"}},router:{routerSetting:"Domínio và URL",certSetting:"Chứng chỉ SSL",defaultSite:"Mặc định",urlHelperText:"URL không bắt đầu bằng HTTP/HTTPS được coi là đường dẫn tương đối",empty:"Nhấp vào Tác vụ để thiết lập Bản đồ URL",healthy:{ok:"Blocklet hoặc dịch vụ đang chạy",error:"Khối hoặc dịch vụ không chạy hoặc chưa được cài đặt"},service:{select:"Chọn Dịch vụ Blocklet (Tùy chọn)",what:"Dịch vụ Blocklet là các đường ống thực hiện trước yêu cầu trước khi chuyển hướng đến blocklet trên"},nonProvider:{title:"Cảnh báo Thay đổi Động cơ",description:"Nếu bạn thay đổi động cơ thành none, trang hiện tại của bạn có thể không hoạt động đúng vì động cơ trước đó sẽ bị dừng, bạn có chắc chắn tiếp tục không?",confirm:"Tôi hiểu, tiếp tục"},validation:{urlRequired:"URL là bắt buộc",redirectCodeRequired:"Mã chuyển hướng bắt buộc",didRequired:"Blocklet là bắt buộc",pathPrefixTooLong:"Tiền tố URL không được vượt quá {length} ký tự",pathPrefixCannotBeEmpty:"Tiền tố URL không được để trống",domainRequired:"Yêu cầu tên miền máy chủ",invalidUrl:"Vui lòng cung cấp một URL hợp lệ",pathPrefixRequired:"Yêu cầu tiền tố URL",redirectUrlRequired:"Yêu cầu URL chuyển hướng",rewriteUrlRequired:"Cần phải viết lại URL"},domain:{addSite:"Thêm Trang",validate:{emptyTip:"Tên miền trang web không thể để trống",suffixTip:"Tên miền trang web không thể bao gồm {suffix}"},add:{title:"Thêm Tên Miền",description:"Vui lòng cung cấp tên miền hợp lệ",confirm:"Thêm",cancel:"Hủy bỏ",blocklet:"Chọn Blocklet",redirect:"Hướng dẫn chuyển hướng lưu lượng?",port:"Cổng nào mà trình xử lý yêu cầu của bạn cần nghe?",portTip:"Mặc định là cổng chính của trình xử lý yêu cầu, bạn có thể tùy chỉnh điều này",type:"Người điều khiển giao thông",component:"Chọn thành phần",pageGroup:"Nhóm Trang",pageGroupTip:"Thành phần này có thể hiển thị bất kỳ nhóm trang nào được liệt kê ở trên, để trống để hiển thị tất cả các trang"},update:{title:"Cập nhật tên miền trang web",label:"Tên miền trang web",description:"Vui lòng cung cấp một tên miền trang web hợp lệ"},setup:{tipStart:"Thêm các bản ghi DNS cho tên miền",tipEnd:"Theo hướng dẫn dưới đây",recordType:"Loại Bản ghi",recordValue:"Giá trị ghi"},verify:{ok:"Giải quyết tên miền bình thường",notResolved:"Miền này không được giải quyết hoặc truy cập, vui lòng kiểm tra cấu hình DNS của bạn."},https:{ok:"Tên miền này đã kích hoạt https",bad:"Tên miền này chưa bật https"},delete:{title:"Xóa trang",description:'Bằng cách xác nhận, bạn sẽ xóa trang web "{name}" hiện có của bạn. Nhập "{name}" vào phần dưới và chọn Xóa để hoàn tất thay đổi, hoặc chọn Hủy bỏ nếu bạn muốn giữ lại trang web của bạn.',confirm_desc:"Vui lòng nhập {name} để xác nhận"}},domainAlias:{nftDomain:"Cấu hình tự động với Domain DID",showTipHint:"Làm thế nào để cấu hình giải quyết tên miền?",add:{title:"Thêm tên miền bổ sung",domainDescription:"Vui lòng cung cấp tên miền hợp lệ",forceTip:"Thêm bắt buộc nếu tên miền đã tồn tại",helperText:"Nếu nhập một URL HTTP hoặc HTTPS, nó sẽ tự động chuyển đổi thành tên miền.",isDidDomainError:"Miền này là Miền DID. Vui lòng thêm nó bằng phương pháp cấu hình miền tự động.",tips:"Bạn có thể nhập tên miền mua từ DID Domain hoặc bất kỳ tên miền nào khác. Nếu đó là DID Domain, bạn phải trình bày NFT của DID Domain để tiếp tục."},addCustomDomain:{name:"Tên miền tùy chỉnh"},addDomainNFT:{showNFT:"Cấu hình tên miền tự động",tips:"Bạn có thể nhập một miền được mua từ DID Domain. Nếu phát hiện miền DID Domain, bạn phải trình bày NFT DID Domain để tiếp tục.",connect:{title:"Xin vui lòng hiển thị NFT Domain của bạn",scan:"Sử dụng các phương pháp sau để ủy quyền cho Blocklet sử dụng domain của bạn",confirm:"Xác nhận trên Ví DID của bạn",success:"Xác nhận thành công"},buyTip:"DID Domain sẽ thực hiện phân giải tên miền tự động, không cần phải cấu hình thủ công và ứng dụng sẽ tự động cập nhật bản ghi phân giải của tên miền khi cần thiết. Nếu bạn chưa có DID Domain NFT,",buy:"Mua Tên miền DID",topLevelDidDomainHint:"Đối với Miền DID, nếu bạn nhập một miền cấp cao nhất (ví dụ: example.com), nó sẽ tự động được cấu hình thành www.example.com"},delete:{title:"Xóa",description:'Sau khi xóa "{domain}", truy cập vào alias đó có thể không được xử lý đúng cách.',confirmPlaceholder:'Nhập "{domain}" để xóa'}},domainSecurity:{title:"Bảo mật miền",cors:{title:"Tên miền CORS được phép",description:'Danh sách tên miền có thể gửi yêu cầu gốc chéo đến {name}, phân tách bằng dấu phẩy, sử dụng "*" để cho phép bất kỳ ai, điều này không được khuyến nghị',domainInvalid:"Vui lòng nhập một danh sách tên miền hợp lệ"}},rule:{add:{title:"Thêm Ánh xạ địa chỉ URL",confirm:"Thêm",pathPrefix:"Tiền tố URL là gì?",pathPrefixTip:"Nếu bạn đặt tiền tố là '/tiền-tố-của-tôi', thì tất cả các yêu cầu bắt đầu bằng tiền tố đó sẽ được định tuyến đến khối đã được cấu hình",blocklet:"Blocklet nào sẽ xử lý những yêu cầu đó?",port:"Cổng nào của blocklet sẽ xử lý các yêu cầu?",portTip:"Mặc định là cổng chính của blocklet, nếu blocklet của bạn lắng nghe trên nhiều cổng, bạn có thể tùy chỉnh điều này",responseType:"Loại phản hồi",responseBody:"Nội dung phản hồi",responseBodyTip:"Dán nội dung đáp ứng của bạn vào đây, không vượt quá 4096 ký tự",responseBodyRequired:"Nội dung phản hồi không thể trống"},delete:{title:"Xóa Liên kết URL",description:'Bằng cách xác nhận, bạn sẽ xóa Bản đồ URL "{name}" hiện có của bạn. Nhập "{name}" vào bên dưới và chọn Xóa để hoàn tất thay đổi hoặc chọn Hủy nếu bạn muốn giữ Bản đồ URL của bạn.',confirm_desc:"Vui lòng nhập {name} để xóa",cancel:"Hủy"},update:{title:"Cập nhật Gán địa chỉ URL",confirm:"Có, Cập nhật",cancel:"Hủy bỏ"}},cert:{name:"Tên Chứng chỉ",domain:"Tên miền",action:"Hành động",commonName:"Tên thông thường",boundDomains:"Tên miền",source:"Nguồn",expired:"Hết hạn",leftDays:"ngày còn lại",issuedOn:"Được phát hành vào",expiryOn:"Hết hạn vào",fingerprintAlg:"Thuật toán Vân tay",validityPeriod:"Thời hạn hiệu lực",matchedSites:"Các trang phù hợp",upload:"Tải lên thủ công",publicCertHelperText:"Chứng chỉ công cộng có thể được tải xuống",nonPublicCertHelperText:"Không thể tải xuống chứng chỉ không công khai",protectedCertHelperText:"Chứng chỉ bảo vệ không thể chỉnh sửa",unprotectedCertHelperText:"Chứng chỉ chưa được bảo vệ có thể được chỉnh sửa",issuing:"Đang tạo chứng chỉ",sourceTypes:{upload:"Tải lên bằng tay",lets_encrypt:"Hãy Mã hóa"},table:{nodata:"Không có dữ liệu"},delete:{title:"Xóa Chứng chỉ",description:"Xác nhận xóa chứng chỉ của miền {domain}? Xóa nó có thể ảnh hưởng đến các dịch vụ liên quan. Vui lòng xác nhận rằng nó an toàn trước khi tiếp tục xóa.",confirm:"Xác nhận"},nginx:{title:"Cập nhật Chứng chỉ",titleAdd:"Thêm Chứng chỉ",pem:"Tập tin chứng chỉ SSL",pemTip:'Vui lòng thả tệp chứng chỉ máy chủ của bạn vào đây, tệp nên kết thúc bằng ".pem" hoặc ".crt"',key:"Tệp Khóa Riêng",keyTip:"Vui lòng thả tệp khóa riêng của máy chủ của bạn vào đây, nó phải kết thúc bằng '.pem' hoặc '.key'",confirm:"Lưu",cancel:"Hủy",invalidFile:"Bạn đã chọn một tệp không hợp lệ",empty:"Chưa chọn tệp nào",source:"Nguồn",sourceTypes:{upload:"Tải lên thủ công",lets_encrypt:"Hãy mã hóa"}},detail:{title:"Chi tiết Chứng chỉ"},genLetsEncryptCert:{title:"Tạo chứng chỉ Let's Encrypt",dnsTip:"Vui lòng đảm bảo tên miền đã trỏ đến Máy chủ Blocklet hiện tại.",description:"Thêm một chứng chỉ sẽ làm cho dịch vụ an toàn hơn, và Blocklet Server sẽ tự động gia hạn chứng chỉ trước khi hết hạn."}},gateway:{reqLimit:{switchLabel:"Giới hạn yêu cầu",rate:"Giới hạn yêu cầu ({rate} yêu cầu/giây)",title:"Giới hạn yêu cầu"},cacheEnabled:{switchLabel:"Bật bộ nhớ đệm gateway để tăng hiệu suất",title:"Bộ nhớ đệm Gateway"},blockPolicy:{switchLabel:"Chặn Yêu Cầu",addItem:"Thêm Mục",blacklistDesc:"Yêu cầu từ các IP này sẽ bị chặn khỏi việc truy cập vào Máy chủ này và tất cả các Blocklet",inputPlaceholder:"Nhập địa chỉ IP, phạm vi CIDR hoặc URL",invalidItem:"Địa chỉ IP, phạm vi CIDR hoặc URL không hợp lệ",title:"Chặn Yêu cầu",autoBlocking:{switchLabel:"Chặn yêu cầu xấu bằng cách phát hiện thời gian thực",windowSize:"Kích thước cửa sổ thời gian để đếm yêu cầu (giây)",windowQuota:"Số lượng yêu cầu tối đa (mỗi IP) được phép trong cửa sổ",blockDuration:"Thời gian chặn người dùng theo IP khi vượt quá giới hạn trong cửa sổ (giây)",statusCodes:"Mã trạng thái cần kiểm tra"}},proxyPolicy:{switchLabel:"Chạy sau các proxy",trustRecursive:"Tin cậy các proxy theo cách đệ quy",trustRecursiveDesc:"Sử dụng địa chỉ IP ngoài cùng bên trái trong chuỗi X-Forwarded-For",trustedProxies:"Proxy Đáng Tin Cậy",trustedProxiesDesc:"Yêu cầu từ các IP này sẽ được tin cậy để lấy IP thực của khách hàng",realIpHeaderLabel:"Đầu IP Khách hàng",realIpHeaderDesc:"Nếu máy chủ Blocklet đang chạy đằng sau các proxy như CloudFront, bạn có thể đặt tiêu đề của IP thực của khách hàng ở đây.",addItem:"Thêm mục",inputPlaceholder:"Nhập địa chỉ IP, phạm vi CIDR",invalidItem:"Địa chỉ IP không hợp lệ, phạm vi CIDR",title:"Chính sách Proxy"},wafPolicy:{switchLabel:"Phát hiện và chặn các yêu cầu xấu với ModSecurity",modeDesc:"Chế độ modsecurity (cần có mô-đun modsecurity)",mode:{detectOnly:"Chỉ phát hiện (sẽ không chặn yêu cầu)",on:"Bật (sẽ chặn yêu cầu)"},logLevelDesc:"Mức nhật ký cho ModSecurity (0-9), 0 có nghĩa là tắt nhật ký kiểm tra",inboundAnomalyScoreThresholdDesc:"Ngưỡng điểm bất thường đầu vào (1-100), giá trị thấp hơn nghĩa là nghiêm ngặt hơn",outboundAnomalyScoreThresholdDesc:"Ngưỡng điểm bất thường đầu ra (1-100), giá trị thấp hơn có nghĩa nghiêm ngặt hơn",docDesc:"Kiểm tra tài liệu để biết cách thiết lập modsecurity",title:"Tường lửa Ứng dụng Web"}}},noMatch:{desc:"Chúng tôi không thể tìm thấy trang bạn đang tìm kiếm"},health:{connectionErrorTip:"Blocklet Server không thể kết nối với mạng, vui lòng kiểm tra xem Blocklet Server đã bị dừng hoặc có vấn đề về mạng",connectionRecoveryTip:"Đã khôi phục kết nối với máy chủ Blocklet",connectionStoppedTip:"Máy chủ Blocklet đã được tắt",wrongAccessUrlTip:"Địa chỉ truy cập máy chủ Blocklet không đúng, vui lòng sử dụng địa chỉ truy cập đúng"},debug:{title:"Máy chủ Blocklet của bạn đã hoạt động!"},team:{invite:{action:"Mời Mới",setting:"Cài đặt Mời",enabled:"Vô hiệu hóa cài đặt này để hạn chế lời mời người dùng mới chỉ cho chủ sở hữu/quản trị viên",disabled:"Bật cài đặt này để cho phép bất kỳ người dùng nào mời người dùng mới",inviter:"Được Mời Bởi"},add:"Thêm Mới",member:{name:"Tên",passport:"Hộ chiếu",passports:"Hộ chiếu",lastLogin:"Lần đăng nhập cuối",lastLoginIp:"IP đăng nhập gần nhất",source:"Đăng ký Nguồn",source_derived:"Bắt nguồn từ OAuth",source_wallet:"Ví DID",filter:"Lọc theo",blockAccess:"Cấm đăng nhập",blockAccessDescription:"Người dùng sẽ không thể kết nối với ứng dụng này",allowAccess:"Cho phép Đăng nhập",allowAccessDescription:"Người dùng sẽ có thể kết nối với ứng dụng này",updateRole:"Cập nhật Vai trò",removeUser:"Xóa Người dùng",removeUserDescription:'Xác nhận xóa người dùng "{name}"?',revokePassport:"Thu hồi Hộ chiếu",revokePassportDescription:"Một khi hộ chiếu bị thu hồi, người giữ hộ chiếu không thể sử dụng nó để đăng nhập lại, bạn có chắc chắn muốn tiếp tục không?",enablePassport:"Kích hoạt Hộ chiếu",enablePassportDescription:"Sau khi hồ sơ hủy bỏ được kích hoạt lại, chủ sở hữu hộ chiếu có thể sử dụng nó để đăng nhập lại, bạn có chắc chắn muốn tiếp tục không?",passportPermissionTitle:"Hộ chiếu có các quyền sau:",search:"Tìm Kiếm Thành Viên",onlyApprovedMember:"Chỉ Hiện Được Phê Duyệt",inviteDialog:{createInviteLink:"Tạo liên kết mời",createSuccessTip:"Liên kết mời đã được tạo thành công, nhấn để sao chép và gửi liên kết cho thành viên được mời. Vui lòng lưu ý rằng liên kết mời này không thể sử dụng lại và sẽ hết hạn vào {expireDate}."},error:{passportEmpty:"Hộ chiếu không được để trống"},connectedAccounts:"Tài khoản Đã kết nối",connections:"Kết nối",federated:"Liên minh",switch:{did:"Chuyển đổi DID",profile:"Chuyển đổi Hồ sơ",passport:"Đổi Hộ chiếu"},settings:{notification:"Thông báo",email:"Gửi email cho tôi khi có một số sự kiện xảy ra",wallet:"Gửi thông báo đến ví của tôi khi có một số sự kiện xảy ra",phone:"Gửi tin nhắn đến tôi khi các sự kiện xảy ra",webhook:"Webhooks",add:"Thêm webhook mới",url:"URL tùy chỉnh",slack:"Slack Webhook",tested:"Tin nhắn kiểm tra đã được gửi"},activeUserSessions:"Phiên người dùng hoạt động",forceLogout:"Đăng xuất bắt buộc",forceLogoutDescription:"Xác nhận đăng xuất buộc người dùng này?",openProfile:"Xem hồ sơ",removeUserSuccess:"Người dùng đã bị xóa thành công"},transferNode:{name:"Chuyển quyền sở hữu",inviteDialog:{title:"Chuyển máy chủ Blocklet",tips:{progress:"Việc chuyển đổi máy chủ cần được người nhận chấp nhận để hoàn tất hoạt động chuyển đổi và một khi người nhận đã chấp nhận, bạn không thể đăng nhập vào máy chủ với hộ chiếu hiện tại nữa.",newOwnerPermissions:"Chủ sở hữu mới sẽ có quyền quản lý tất cả các hoạt động như thành viên, hộ chiếu và Blocklets.",revoke:'Nếu bạn muốn rút lại lời mời chuyển giao, bạn có thể xóa liên kết mời trên trang "Nhóm -> Thành viên -> Mời".'},createInviteLink:"Tạo Liên kết Mời",createSuccessTip:"Liên kết mời đã được tạo thành công, nhấp để sao chép và gửi liên kết đến thành viên được mời, lưu ý rằng liên kết mời này không thể tái sử dụng và sẽ hết hạn vào {expireDate}."},delegateDialog:{title:"Yêu cầu ủy quyền",scan:"Sử dụng các phương pháp sau để ủy quyền cho máy chủ chuyển nhượng NFT quyền sở hữu máy chủ.",confirm:"Xác nhận trên ví DID của bạn",success:"Xác thực thành công"}},transferApp:{name:"Chuyển Quyền Sở Hữu",transferDialog:{title:"Ứng dụng Chuyển khoản",tips:{progress:"Yêu cầu chuyển tiền phải được người nhận chấp nhận để hoàn tất thao tác chuyển tiền, và một khi người nhận chấp nhận, bạn không thể đăng nhập vào ứng dụng bằng hộ chiếu hiện tại.",newOwnerPermissions:"Chủ sở hữu mới sẽ có quyền quản lý tất cả các hoạt động như thành viên, hộ chiếu và cài đặt."},createTransferLink:"Tạo liên kết Chuyển khoản",createSuccessTip1:'Liên kết chuyển nhượng đã được tạo thành công, người được mời phải sử dụng <a style="color: rgb(29, 193, 199)" target="_blank" href="https://www.didwallet.io/">DID Wallet</a> để nhận quyền sở hữu ứng dụng',createSuccessTip2:"Vui lòng nhấp để sao chép và gửi liên kết đến thành viên được mời, lưu ý rằng liên kết chuyển này không thể tái sử dụng và sẽ hết hạn vào ngày {expireDate}. Liên kết chuyển của bạn chỉ được hiển thị một lần và sẽ không thể xem được sau khi đóng hộp thoại này.",createSuccessTip3:"Sau khi chuyển thành công, ứng dụng sẽ tự động khởi động lại để thay đổi có hiệu lực.",link:"Liên kết chuyển tiền",iKnow:"Tôi đã sao chép và lưu liên kết"},connectDialog:{title:"Yêu cầu Xin phép",scan:"Sử dụng các phương pháp sau để ủy quyền cho ứng dụng chuyển nhượng quyền sở hữu.",confirm:"Xác nhận trên ví DID của bạn",success:"Xác thực thành công"},receiveDialog:{title:"Nhận Quyền Sở Hữu Ứng Dụng",scan:"Sử dụng các phương pháp sau để nhận quyền sở hữu ứng dụng.",confirm:"Xác nhận trên ví DID của bạn",success:"Nhận Quyền Sở Hữu Thành Công"},successTitle:"Bạn đã trở thành chủ sở hữu mới của ứng dụng này",visitDashboard:"Truy cập Bảng điều khiển Ứng dụng",description:'Nếu bạn muốn thay đổi quyền sở hữu dự án của mình, hãy nhấp vào "chuyển quyền sở hữu" để bắt đầu'},permission:{create:{title:"Tạo Quyền",description:"Định dạng: <hành động>_<tài nguyên>"},delete:{title:"Xóa Quyền",description:"Xác nhận xóa {name}?"},error:{actionEmpty:"Hành động không thể trống",resourceEmpty:"Tài nguyên không thể trống",permissionTooLong:"Quyền không được vượt quá {length} ký tự",descriptionTooLong:"Mô tả không được vượt quá {length} ký tự"}},passport:{create:{title:"Tạo hộ chiếu",titleTip:"Tiêu đề không thể chỉnh sửa sau khi tạo, nên giới hạn trong 14 chữ cái"},bind:{title:"Gán Phân Quyền",roleTip:"Bạn sẽ nhận được tất cả các quyền của hộ chiếu đã chọn sau khi ràng buộc",permissionTip:"Bạn sẽ nhận được các quyền đã chọn sau khi ràng buộc",transferLeftTitle:"Tất cả các quyền",transferRightTitle:"Được cấp quyền"},delete:{title:"Xóa Hộ chiếu",description:"Các hộ chiếu mà người dùng đang sở hữu sẽ mất mọi quyền sau khi bị xóa. Bạn có chắc chắn muốn tiếp tục?"},error:{titleEmpty:"Tiêu đề không thể bỏ trống",titleTooLong:"Tiêu đề không được vượt quá {length} ký tự",descriptionEmpty:"Mô tả không thể để trống"},issuance:{pending:"Đang chờ",create:{title:"Tạo liên kết"},delete:{title:"Xóa Liên kết Nhận",description:"Xác nhận xóa {link}?"}},issue:"Phát hành hộ chiếu",disableIssuance:"Vô hiệu hóa Cấp phát Hộ chiếu",enableIssuance:"Bật Phát Hành Hộ Chiếu",disableIssuanceTip:'Các hoạt động "Cấp hộ chiếu", "Mời thành viên" và các hoạt động khác sẽ bị vô hiệu',enableIssuanceTip:"Cấp Hộ chiếu",trustedPassportIssuers:"Nhà cấp hộ chiếu đáng tin cậy",trustedIssuers:"Người phát hành đáng tin cậy",trustedFactories:"Bộ sưu tập NFT đáng tin cậy",trustedFactoriesTip:"Quản lý bộ sưu tập NFT đáng tin cậy có thể được sử dụng để trao đổi cho hộ chiếu",searchFactoryAddress:"Tìm bộ sưu tập DID",configFactories:"Cấu hình Bộ sưu tập NFT Đáng tin cậy",configFactoriesTip:"Cho phép người dùng đổi NFT cho hộ chiếu",factoryAddress:"Địa chỉ Bộ sưu tập NFT",factory404:"Bộ sưu tập NFT không tìm thấy",factoryAddressTip:"Địa chỉ bộ sưu tập NFT phải tồn tại trên ArcBlock Main Chain",role:"Loại hộ chiếu",ttl:"Chính sách hết hạn Hộ chiếu",ttlNever:"Không bao giờ hết hạn",ttlMint:"Kể từ khi mua NFT",ttlExchange:"Kể từ Trao đổi Hộ chiếu",ttlNeverTip:"Hộ chiếu sẽ có giá trị cho đến khi bị thu hồi",ttlMintTip:"Hộ chiếu sẽ có giá trị từ khi mua NFT cho đến khi bạn chỉ định thời gian (ttl) hoặc thu hồi",ttlExchangeTip:"Hộ chiếu sẽ hợp lệ từ thời điểm người dùng đổi thành công cho đến khi bạn chỉ định ttl hoặc thu hồi",ttlTip:'"365d" có nghĩa là 365 ngày, bạn cũng có thể sử dụng "30 ngày" hoặc "24 giờ"',validUntil:"Có hiệu lực đến: {date}",externalPassport:"Hộ chiếu ngoại",notTrustedIssuerTip:"Hộ chiếu không thể được sử dụng vì người cấp không có trong danh sách người cấp phát đáng tin cậy",issuerDid:"DID NGƯỜI CÃƠ QUAN PHÁT HÀNH",addNodeToTrustedIssuers:"Thêm máy chủ hiện tại như một nhà phát hành hộ chiếu đáng tin cậy",revoked:"Rút lại",noPermission:"Không có quyền để thực hiện thao tác này",shouldNotDeleteCurrent:"Bạn không thể thu hồi hộ chiếu đang sử dụng hiện tại",mappingRule:"Quy tắc ánh xạ",defaultRule:"Luật mặc định",search:"Tìm Hộ Chiếu",searchIssuerDid:"Tìm kiếm Nhà phát hành DID",issueBy:"Vấn đề bởi {name}",configColor:"Cấu hình Màu Hộ Chiếu",configColorTip:"Tùy chỉnh màu hộ chiếu",color:"Màu Hộ Chiếu",description:"Sử dụng hộ chiếu này để kết nối {teamName} là {title}",displayBuiltin:"Được tích hợp sẵn",displayCustom:"Tùy chỉnh",typesTip:"Tùy chỉnh các loại hộ chiếu, phân chia bằng dấu phẩy",issuanceDate:"Ngày phát hành: {date}"},inviting:{link:"Liên kết Mời",inviter:"Người mời",delete:{title:"Xóa Liên kết Mời",description:"Xác nhận xóa {link}?"},disabledTip:"Lời mời không được kích hoạt"},whoCanAccess:{all:{title:"Dễ tiếp cận cho tất cả"},owner:{title:"Chỉ chủ sở hữu"},invited:{title:"Chỉ người dùng được mời"}}},launcher:{provider:"Nhà cung cấp",adminUrl:"URL"},session:{blockAccess:"Bạn đã bị chặn khỏi truy cập vào máy chủ này"},launchBlocklet:{appInfo:"Thông tin ứng dụng",appInfoDesc:"Xác nhận thông tin ứng dụng",author:"Tác giả ứng dụng: {author}",setup:"Cài đặt Blocklet",redirect:"Chuyển hướng",alreadyRunning:"Ứng dụng {name} đã được chạy trên máy chủ Blocklet này",alreadyInstalled:"Ứng dụng {name} đã được cài đặt trên máy chủ Blocklet này",alreadyExists:"Ứng dụng này đã tồn tại, đang chuyển hướng...",purchased:"Đã Mua",purchase:"Mua hàng",nextStep:"Bước Tiếp theo",agreement:"Thỏa thuận Cấp phép",agreeAll:"Đồng ý & Tiếp tục",installing:"Đang cài đặt {appName} trên {serverName}, việc này có thể mất vài phút để hoàn thành, xin vui lòng đợi...",redirecting:"{appName} đã được cài đặt thành công, đang khởi động...",start:"Khởi động",launch:"Cài đặt Blocklet vào máy chủ",launchSuccess:"{appName} đã được khởi chạy thành công!",installSuccess:"Blocklet đã được cài đặt và khởi chạy thành công trên {serverName}",openInRegistry:"Xem trong Blocklet Store",subTitle:"Sẵn sàng cài đặt Blocklet {appName} trên {serverName}",installingSubTitle:"{appName} đang được cài đặt",access:"Mở ứng dụng",viewApplication:"Xem Ứng Dụng",newVersion:"Phiên bản mới",newVersionDesc:"Ứng dụng đã tồn tại, nhưng phiên bản hiện tại có thể nâng cấp",upgradeNow:"Nâng cấp Ngay",later:"Sau",introduction:"Giới thiệu",welcome:"Chào mừng bạn đến với Trình hướng dẫn Khởi chạy Blocklet",accept:"Tôi đồng ý với EULA của Blocklet",license:"Giấy phép ứng dụng",next:"Đồng ý với EULA và tiếp tục",purchaseApp:"Mua Blocklet",setupAppDesc:"Khởi tạo Blocklet của bạn",launched:"Hoàn thành",confirmInstall:"Xác nhận Cài đặt",dialog:{title:"Trở thành chủ sở hữu ứng dụng",nftFreeDescription:"Vui lòng giới thiệu không gian NFT ứng dụng và tạo tài khoản ứng dụng để tiếp tục",nftPaidDescription:"Vui lòng giới thiệu NFT không gian ứng dụng và mua NFT ứng dụng để tiếp tục",freeDescription:"Vui lòng tạo tài khoản ứng dụng để tiếp tục",paidDescription:"Vui lòng trình diễn mua NFT ứng dụng và tạo tài khoản ứng dụng để tiếp tục",confirm:"Xác nhận trong ví DID của bạn",success:"Xác thực thành công",authorizationTimeout:"Hết thời gian ủy quyền"},waiting:{verifying:"Đang xác minh siêu dữ liệu ứng dụng...",downloading:"Đang tải xuống gói ứng dụng...",downloadingComponent:"Đang tải xuống {name}",extractingComponent:"Trích xuất {name}",extracting:"Đang trích xuất gói ứng dụng...",installing:"Đang cài đặt các thành phần ứng dụng...",installed:"Đã cài đặt",starting:"Bắt đầu ứng dụng...",done:"Ứng dụng của bạn đang khởi chạy..."},error:{loadMetaFailed:"Không thể tải thông tin ứng dụng",appMetaNotFound:"Không tìm thấy thông tin cho ứng dụng này",downloadFailed:"Không tải được ứng dụng, vui lòng thử lại",installFailed:"Không cài đặt được ứng dụng, vui lòng thử lại",startFailed:"Không thể khởi động ứng dụng, vui lòng thử lại",launchFailed:"Không khởi động được ứng dụng, vui lòng thử lại",installedButStopped:"Ứng dụng được cài đặt thành công, nhưng không thể khởi động. Bạn có thể khởi động nó thủ công sau khi giải quyết các vấn đề chặn",installedButError:"Ứng dụng đã được cài đặt thành công, nhưng không khởi động được",restoreFailed:"Không thể khôi phục ứng dụng, vui lòng thử lại",resourceBlocklet:"Không thể khởi chạy khối chức năng này trực tiếp, nhưng bạn có thể thêm khối chức năng này vào ứng dụng hiện có."},steps:{introduction:"Giới thiệu",installApp:"Cài đặt Ứng dụng",purchaseSpace:"Mua Không gian",prepareSpace:"Chuẩn bị không gian"},installRelatedComponents:"Cài đặt các Blocklet liên quan",canNotInstall:"Không thể cài đặt",dockerBlockletCantInstall:"Không thể cài đặt Blocklet, vì Server Blocklet chưa kích hoạt Docker hoặc Docker Network"},issuePassport:{title:"Nhận Hộ chiếu",description:"Sử dụng các phương pháp sau để nhận hộ chiếu do {name} cấp",dialog:{scan:"Sử dụng các phương pháp sau để nhận hộ chiếu",confirm:"Xác nhận trên Ví DID của bạn",success:"Hộ chiếu đã được thêm vào ví của bạn thành công",loginWithPassport:"Kết nối với hộ chiếu này",autoClose:"Trang sẽ tự đóng sau {seconds}s",autoJump:"Trang sẽ tự động chuyển đến trong {seconds}s"}},lostPassport:{title:"Hộ chiếu bị mất",description:"Chủ sở hữu của {name} có thể sử dụng các phương pháp sau để lấy lại hộ chiếu, các thành viên vui lòng liên hệ với chủ sở hữu để cấp lại hộ chiếu.",return:"Hủy thao tác truy xuất, trở về trang chủ",receivePassport:"Nhận hộ chiếu",recoverDialog:{title:"Khôi phục hộ chiếu",scan:"Sử dụng các phương pháp sau để lấy hộ chiếu của bạn",confirm:"Xác nhận trên ví DID của bạn",success:"Đã lấy thành công"},receiveDialog:{title:"Nhận hộ chiếu",scan:"Sử dụng các phương pháp sau để nhận hộ chiếu",confirm:"Xác nhận trên ví DID của bạn",success:"Đã nhận thành công"},recoverPassport:"Khôi phục hộ chiếu"},invite:{message:"{name} mời bạn làm {role} của {dapp}",success:"Bạn đã tham gia {dapp} thành công",receive:"Nhận với",validUntil:"Hiệu lực đến:",viewPermission:"Quyền Xem",emptyPermission:"Quyền trống rỗng",open:"Mở",description:{step1:"Tải về và cài đặt {wallet} của bạn",step2:"Nhấp vào nút bên trên để nhận hộ chiếu",step3:"Đăng nhập vào {dapp} bằng hộ chiếu đã nhận được"},transferNFTDialog:{title:"Chấp nhận máy chủ Blocklet {name}",scan:"Kết nối Launcher để hoàn tất việc nhận dữ liệu từ máy chủ Blocklet.",confirm:"Xem lại thao tác này trên Ví DID của bạn",success:"Kết nối thành công, đang chờ xác nhận nhận từ Máy chủ"}},receive:{dialog:{title:"Nhận hộ chiếu",scan:"Sau khi nhận được hộ chiếu, bạn có thể sử dụng hộ chiếu để đăng nhập vào ứng dụng",confirm:"Xác nhận trên ví DID của bạn",success:"Bạn đã kết nối thành công"}},navigation:{navigation:"Điều hướng",actionFailed:"Hành động thất bại",form:{title:"Tiêu đề",titlePlaceholder:"Vui lòng nhập tiêu đề điều hướng",titleTooLong:"Độ dài tiêu đề phải nhỏ hơn {len}",description:"Mô tả",descriptionPlaceholder:"Vui lòng nhập mô tả điều hướng",descriptionTooLong:"Độ dài mô tả phải nhỏ hơn {len}",icon:"Biểu tượng điều hướng",iconPlaceholder:"Vui lòng nhập biểu tượng điều hướng",invalidIcon:"Biểu tượng không hợp lệ",findMoreIcon:"Tìm thêm biểu tượng",link:"Liên kết",linkPlaceholder:"Vui lòng nhập liên kết điều hướng",invalidLink:"Liên kết không hợp lệ",component:"Thành phần",componentPlaceholder:"Vui lòng chọn thành phần điều hướng",role:"Vai trò",rolePlaceholder:"Vui lòng chọn vai trò điều hướng",locale:"Cấu hình",localePlaceholder:"Vui lòng nhập vị trí cần thêm",localeExists:"{value} đã tồn tại",activeIcon:"Biểu tượng Hoạt động",activeIconPlaceholder:"Vui lòng nhập biểu tượng điều hướng hoạt động",activeColor:"Màu Hoạt Động",activeColorPlaceholder:"Vui lòng nhập màu hoạt động của điều hướng",color:"Màu sắc",colorPlaceholder:"Vui lòng nhập màu mặc định điều hướng"},action:{add:"Thêm điều hướng",addSub:"Thêm điều hướng phụ",edit:"Chỉnh sửa điều hướng",hide:"Ẩn điều hướng",show:"Hiển thị điều hướng",del:"Xóa điều hướng",new:"Mới",noAddSub:"Thành phần đã gỡ cài đặt không thể thêm điều hướng phụ",noEdit:"Không thể chỉnh sửa thành phần đã gỡ cài đặt",noDel:"Không cho phép xóa điều hướng tích hợp sẵn",reset:"Đặt lại",restConfirmTitle:"Bạn có muốn xóa tất cả các điều hướng tùy chỉnh?",restConfirmDesc:"Sau khi làm sạch, điều hướng sẽ được khôi phục về cấu hình mặc định ban đầu của Blocklet",resetSuccessful:"Khôi phục thành công"},access:"Truy cập",members:"Thành viên",passport:"Hộ chiếu",analytics:"Phân tích",dashboard:"Bảng điều khiển",studio:"Studio",blockletService:"Dịch vụ Blocklet"},storage:{spaces:{title:"DID Spaces",tips:"Mẹo",label:"Nhập Cổng DID Spaces",connected:{title:"Các Không gian DID đã Kết nối",tag:"Kết nối"},connectedWithName:"Bạn đã kết nối thành công với {name}",addedWithName:"Bạn đã thêm {name} thành công",connects:"Kết nối",reconnect:"Kết nối lại",addressCannotEmpty:"Địa chỉ không được để trống",addressNotValid:"{url} không phải là một địa chỉ hợp lệ",authorize:{title:"Kết nối {appName} với DID Spaces",scan:"Sử dụng các phương pháp sau để cho phép ứng dụng {appName} kết nối với DID Spaces",success:"Kết nối thành công"},provideNFT:{title:"Vui lòng hiển thị DID Spaces NFT cho {appName}",scan:"Sử dụng các phương pháp sau để cho phép ứng dụng {appName} hiển thị NFT Space DID",success:"Kết nối thành công"},backup:{title:"Sao lưu",records:"Sao lưu Hồ sơ"},autoBackup:{title:"Sao lưu tự động",enabled:"Sao lưu tự động đã được bật",disabled:"Sao lưu tự động đã tắt"},autoCheckUpdate:{title:"Kiểm tra tự động thông báo phiên bản mới",enabled:"Tự động kiểm tra phiên bản mới đã được kích hoạt",disabled:"Tự động kiểm tra phiên bản mới đã tắt"},backupSuccessfully:"Sao lưu thành công",restore:"Khôi phục",restoreSuccessfully:"Khôi phục thành công",gateway:{title:"Cổng",select:"Chọn một Không gian DID",add:{title:"Thêm Không gian DID",label:"Nhập URL của Không gian DID",failed:"Thêm DID Spaces thất bại",invalidUrl:"URL cổng không gian DID không hợp lệ",duplicate:"{name} đã được kết nối với Blocklet này"},delete:{title:"Ngắt kết nối",succeeded:"Ngắt kết nối DID Space {name} thành công",failed:"Ngắt kết nối thất bại",failedForSelected:"Không thể ngắt kết nối DID Space đã chọn",descForBackup:"Sau khi ngắt kết nối từ {name}, bạn sẽ không thể sao lưu dữ liệu từ Blocklet này đến DID Space này nữa. Bạn có muốn ngắt kết nối?",descForStorage:"Sau khi ngắt kết nối từ {name}, bạn sẽ không thể lưu dữ liệu từ Blocklet này đến DID Space này nữa. Bạn có muốn ngắt kết nối?"},connect:{title:"Kết nối DID Spaces",add:"Kết nối với không gian DID ngay bây giờ",addTips:"Bạn chưa kết nối với bất kỳ không gian DID nào",switch:"Chuyển đổi không gian DID",switchTips:"Bạn đã kết nối với {name}",connected:"Đã kết nối"},switch:{failedForMismatchSpace:"Vui lòng kết nối với DID Space đúng {name}"},connectTo:"Kết nối với DID Spaces"},strategy:{title:"Chiến lược sao lưu",autoBackup:"Auto backup",backupNow:"Sao lưu ngay bây giờ",viewBackupFiles:"Xem tệp sao lưu"},progress:{title:"Tiến trình sao lưu"},record:{title:"Sao lưu hồ sơ",emptyData:"Không có hồ sơ"},notYet:"Bạn chưa có sao lưu đang diễn ra...",connect:{now:"Kết nối ngay",title:"Kết nối DID Spaces",provider:"Cung cấp DID Space của bạn để bắt đầu sao lưu",providerForStorage:"Cung cấp DID Space của bạn để lưu trữ dữ liệu",useWallet:"Kết nối với ví DID",useWalletReconnect:"Kết nối lại với ví DID",useSpaceGateway:"Kết nối qua cổng DID Spaces",useSpaceGatewayReconnect:"Kết nối lại qua cổng DID Spaces",switchToSpace:"Chuyển sang DID Space",switchToSpaceSucceeded:"Chuyển sang không gian DID {name}",succeeded:"Bạn đã kết nối thành công với DID Space",disconnect:"Ngắt kết nối",abortBlockletBackup:"Hủy sao lưu"},disconnected:{tag:"Ngắt kết nối",reconnectNow:"Kết nối lại ngay bây giờ"}},appLevel:{title:"Lưu trữ ứng dụng",description:"Tất cả dữ liệu được tạo ra bởi ứng dụng được lưu trữ trên DID Space này"}},log:{lastDays:{1:"1 Ngày cuối cùng",7:"Tuần trước"}},oauth:{commonSettings:"Cài đặt chung",save:"Lưu",saveSuccess:"Lưu thành công",saveFailed:"Lưu thất bại",issued:"Được phát hành",thirdPartyLogin:"Đăng nhập bằng bên thứ ba",alreadyBindOAuth:"Đã kết nối đăng nhập bên thứ ba",alreadyBindWallet:"Đã ràng buộc ví DID",auth0:{enable:"Cho phép đăng nhập Auth0",domain:"Tên miền",domainDescription:"Yêu cầu tên miền của Auth0",clientId:"Mã khách hàng",clientIdDescription:"Yêu cầu clientId của Auth0",clientSecret:"Bí mật của khách hàng",clientSecretDescription:"Secret Client ứng dụng OAuth Auth0 là bắt buộc"},comingSoon:"Có thêm phương thức đăng nhập đang được xây dựng",moreLogin:"Đăng nhập thêm",federated:"Đăng nhập liên kết",runTest:"Kiểm tra",github:{enable:"Bật đăng nhập Github",clientId:"ID Khách hàng",clientIdDescription:"Yêu cầu clientId của ứng dụng OAuth trên Github",clientSecret:"Bí Mật Khách Hàng",clientSecretDescription:"Bí mật ứng dụng OAuth của Github là bắt buộc"},google:{enable:"Kích hoạt đăng nhập Google",clientId:"Mã khách hàng",clientIdDescription:"Yêu cầu clientId của ứng dụng Google OAuth",clientSecret:"Bí Mật Khách Hàng",clientSecretDescription:"ClientSecret của ứng dụng Google OAuth là bắt buộc"},apple:{enable:"Bật đăng nhập Apple",teamId:"ID nhóm",teamIdDescription:"Cần có ID nhóm ứng dụng OAuth của Apple",serviceId:"ID dịch vụ",serviceIdDescription:"Cần có ID Dịch vụ ứng dụng OAuth của Apple",keyId:"Mã khóa",keyIdDescription:"Cần ID ứng dụng Apple OAuth",authKey:"Khóa Auth",authKeyDescription:"Cần Khoá xác thực ứng dụng Apple OAuth",bundleId:"Bundle ID",bundleIdDescription:"ID gói ứng dụng Apple OAuth là bắt buộc"},oauth:"Đăng nhập bên thứ ba"},expiration:{mobile:{tips:{success:"{validity}",warning:"{validity}",error:"Hết hạn"},loadFailed:"Thử lại!"},desktop:{tips:{success:"Gói đăng ký sẽ hết hạn sau {validity}",warning:"Đăng ký sẽ hết hạn sau {validity}",error:"Đã hết hạn đăng ký"},loading:"Tải đăng ký...",loadFailed:"Không tải được thông tin đăng ký, vui lòng thử lại!",nextInvoice:"Hóa đơn tiếp theo: {date}"}},analytics:{trend:"Xu hướng",detail:"Hỏng",traffic:{totalRequests:"Tổng số yêu cầu",validRequests:"Các yêu cầu thành công",failedRequests:"Yêu cầu thất bại",uniqueVisitors:"Lượt truy cập duy nhất",uniqueFiles:"URL duy nhất",uniqueReferrers:"Người giới thiệu duy nhất",uniqueNotFound:"404 Độc nhất",uniqueStaticFiles:"Tập tin tĩnh duy nhất",logSize:"Kích thước Log",bandwidth:"Băng thông"},runtime:"Thời gian chạy"},federated:{inviteJoinFederatedLogin:"Mời tham gia đăng nhập liên kết",inviteJoinFederatedLoginDescription:"Sao chép địa chỉ sau đây và điền vào ứng dụng nơi bạn cần tham gia để đăng ký đăng nhập liên minh.",federatedLogin:"Đăng nhập liên kết",joinFederatedLogin:"Tham gia đăng nhập phân liên hợp",joinFederatedLoginDescription:"Vui lòng nhập địa chỉ đăng nhập liên kết được cung cấp bởi Master Blocklet để tham gia đăng nhập liên kết",quitFederatedLogin:"Thoát khỏi đăng nhập liên minh",quitFederatedLoginDescription:"Sau khi thoát khỏi đăng nhập được liên kết, đăng nhập thông thường luôn có sẵn",federatedJoinAppUrl:"Đăng nhập bằng đăng ký kết hợp trên appUrl",federatedJoinAppUrlRequired:"Vui lòng nhập đăng nhập liên kết để tham gia {appUrl}",failedToGetFederatedLoginAppUrl:"Không thành công trong việc lấy đăng nhập qui định liên kết, tham gia appUrl",federatedJoinAppUrlInvalid:"AppUrl đăng nhập liên kết không hợp lệ",siteDetail:"Chi tiết trang web",approveToJoinLogin:"Chấp nhận tham gia đăng nhập liên thông",approve:"Bật chế độ đăng nhập",revoke:"Vô hiệu hóa đăng nhập",enableFederatedLogin:"Kích hoạt đăng nhập liên danh",disableFederatedLogin:"Vô hiệu hóa đăng nhập liên kết",enableFederatedLoginDescription:"Sau khi kích hoạt đăng nhập liên kết, trang web này sẽ tự động đăng nhập",disableFederatedLoginDescription:"Sau khi vô hiệu hóa đăng nhập liên tục, trang web này sẽ không đăng nhập tự động",enableFederatedAutoLogin:"Bật đăng nhập tự động",enableFederatedAutoLoginDescription:"Sau khi kích hoạt đăng nhập tự động, nếu hiện tại có trạng thái đăng nhập thống nhất, trang web sẽ tự động đăng nhập với danh tính của đăng nhập đoàn thể",disableFederatedAutoLogin:"Tắt đăng nhập tự động",disableFederatedAutoLoginDescription:"Sau khi đăng nhập tự động tắt, trang web sẽ không đăng nhập tự động thông tin người dùng của đăng nhập thống nhất và bạn vẫn có thể chọn để đăng nhập bằng tay bằng danh tính đăng nhập liên minh.",info:{appId:"ỨNG DỤNG ĐÃ LÀM",appPid:"ID vĩnh viễn",migratedFrom:"Còn được biết đến là",appName:"Tên Blocklet",appDescription:"Mô tả khối",appUrl:"URL Blocklet",appLogo:"Logo Blocklet",did:"Blocklet DID",serverId:"ID máy chủ Blocklet",serverVersion:"Phiên bản Blocklet Server",version:"Phiên bản Blocklet",appliedAt:"Đăng ký tại",status:"Tình trạng"},status:{pending:"Đang chờ",approved:"Được chấp thuận",rejected:"Bị từ chối",revoked:"Thu hồi"},disbandFederatedLogin:"Hủy kết nối đăng nhập liên kết",disbandFederatedLoginDescription:"Sau khi giải tán đăng nhập liên kết, tất cả các trang thành viên sẽ tự động thoát khỏi đăng nhập liên kết",syncConfig:"Đồng bộ cấu hình trang web liên kết",quitMember:"Xóa",quitMemberDescription:"Xóa thành viên chỉ định khỏi nhóm trang web",removeFederatedLogin:"Gỡ thành viên",removeFederatedLoginDescription:"Sau khi loại bỏ các thành viên được chỉ định khỏi nhóm trang web, thành viên chỉ có thể sử dụng đăng nhập bình thường"},optionsOrder:{1:"Tùy chọn Một",2:"Lựa chọn Hai"},securityRule:{title:"Quy tắc bảo mật",sortByDescription:"Sắp xếp theo mức độ ưu tiên phù hợp",add:"Thêm Quy tắc Bảo mật",edit:"Chỉnh sửa Quy tắc Bảo mật",view:"Xem quy tắc bảo mật",form:{precede:"Trước đó",pathPattern:"รูปแบบพาธ",pathPatternPlaceholder:"Hãy nhập mô hình đường dẫn",pathPatternErrorText:"Mẫu đường dẫn không hợp lệ",accessPolicyOrResponseHeaderPolicyRequired:"Chính sách truy cập hoặc chính sách tiêu đề phản hồi là bắt buộc",accessPolicy:"Chính sách truy cập",accessPolicyPlaceholder:"Vui lòng chọn chính sách truy cập",accessPolicyHelperText:"Chọn chính sách truy cập",responseHeaderPolicy:"Chính sách Tiêu đề phản hồi",responseHeaderPolicyPlaceholder:"Vui lòng chọn chính sách tiêu đề phản hồi",responseHeaderPolicyHelperText:"Vui lòng chọn chính sách tiêu đề phản hồi",remark:"Chú thích",remarkPlaceholder:"Hãy nhập chú thích",component:"Thành phần",componentPlaceholder:"Vui lòng chọn thành phần"},delete:{title:"Xóa Quy tắc Bảo mật?",description:"Sau khi xóa bỏ quy tắc bảo mật, quy tắc này sẽ không còn hiệu lực"}},responseHeaderPolicy:{title:"Chính sách header phản hồi",add:"Thêm Chính sách Tiêu đề Phản hồi",edit:"Chỉnh sửa Chính sách Đầu phản hồi",view:"Xem Chính sách Tiêu đề Phản hồi",form:{name:"Tên",namePlaceholder:"Vui lòng nhập tên",description:"Mô tả",descriptionPlaceholder:"Vui lòng nhập mô tả",cors:{origin:"Gốc",originPlaceholder:"Hỗ trợ các định dạng miền sau: http://www.example.com, http://*.example.com, http://www.example.com:8080, * (không khuyến nghị sử dụng ký tự đại diện)",originHelperText:"Tên miền bắt đầu với http:// hoặc https://, một trên một dòng, một ký tự đại diện * trên một dòng",methods:"Phương pháp",allowedHeaders:"Đầu trang được cho phép",allowedHeadersPlaceholder:"Khuyến nghị điền *, hỗ trợ nhập nhiều dòng",allowedHeadersHelperText:"Cho máy chủ biết những header tùy chỉnh nào có thể dùng trong yêu cầu tiếp theo khi gửi yêu cầu OPTIONS như: x-blocklet-version",exposedHeaders:"Tiêu đề được hiển thị",exposedHeadersPlaceholder:"Hỗ trợ nhập nhiều dòng",exposedHeadersHelperText:"Cấu hình Expose-Headers, ví dụ: X-Content-Range",maxAge:"Max-Age (giây)",maxAgeHelperText:"Thời hạn hiệu lực của kết quả thu được bằng yêu cầu OPTIONS, phải là một số nguyên dương",optionsSuccessStatus:"Trạng thái thành công của tùy chọn",preflightContinue:"Tiếp tục Chế độ xem trước",credentials:"Thông tin xác thực",smartModeHelperText:"Tự động thêm mọi tên miền của ứng dụng hiện tại, cũng như mọi tên miền của nhóm trang web đăng nhập liên kết",smartMode:"Chế Độ Thông Minh"},originOverride:"Origin Override",originOverrideHelperText:"Cho phép logic trong ứng dụng ghi đè lên tiêu đề phản hồi này"},delete:{title:"Xóa Chính sách tiêu đề phản hồi?",description:"Sau khi xóa chính sách tiêu đề phản hồi, chính sách sẽ không còn hiệu lực"}},accessPolicy:{title:"Chính sách truy cập",add:"Thêm Chính sách truy cập",edit:"Chỉnh sửa Chính sách Truy cập",view:"Xem chính sách quyền truy cập",form:{name:"Tên",namePlaceholder:"Vui lòng nhập tên",description:"Mô tả",descriptionPlaceholder:"Vui lòng nhập mô tả",roles:"Quyền truy cập",accessType:"Loại truy cập"},delete:{title:"Xóa Chính sách truy cập?",description:"Sau khi xóa một chính sách truy cập, chính sách này sẽ không còn hiệu lực"}},didConnect:{genKeyPair:{title:"Tạo DID Blocklet",scan:"Sử dụng các phương pháp sau để tạo Blocklet DID",success:"Tạo DID Blocklet thành công",successDesc:"Blocklet DID đã được tạo thành công (Các ấn phẩm sau yêu cầu ví đã tạo DID để vận hành)"},common:{invalidSession:"Phiên làm việc không hợp lệ",invalidSessionDesc:"Phiên không tồn tại hoặc đã hết hạn",connectionError:"Kết nối thất bại"}},pagination:{next:"Trang Kế Tiếp",previous:"Trang trước",rowsPerPage:"Mỗi trang:",displayRows:"của",jumpToPage:"Nhảy đến Trang:"},webhookEndpoint:{createWebhook:"Tạo Webhook",createWebhookTitle:"Tạo Webhook",selectAllEvents:"Chọn tất cả Sự kiện",selectAllEventsTooltip:"Chọn tất cả sự kiện khả dụng",selectedEventsCount:"{count} sự kiện đã chọn",selectedCount:"{count} đã chọn",eventsCount:"{count} sự kiện",saveWebhook:"Tạo Webhook",noAvailableEvents:"Không có sự kiện nào",loadingEvents:"Đang tải sự kiện...",loadingError:"Thất bại khi tải sự kiện: {message}",title:"Webhooks",noWebhooksAdded:"Chưa thêm webhook nào",validation:{urlRequired:"URL bắt buộc",urlInvalid:"Vui lòng nhập URL hợp lệ",descriptionRequired:"Mô tả bắt buộc",eventRequired:"Vui lòng chọn ít nhất một sự kiện"},hosted:"Endpoint được lưu trữ",add:"Tạo Webhook",addTip:"Thiết lập endpoint webhook của bạn để nhận các sự kiện trực tiếp",listen:"Nghe để",version:"Phiên bản API",attempts:"Thử nghiệm Webhook",url:{label:"URL",description:"URL Endpoint Webhook"},description:{label:"Mô tả",description:"Mô tả tùy chọn về mục đích sử dụng của endpoint này"},events:{label:"Chọn sự kiện để nghe",description:"Xin chào, {name}."},disabled:"Đã tắt",enabled:"Đã bật",disable:"Tắt",enable:"Bật",editWebhookTitle:"Cập nhật Webhook",updateWebhook:"Cập nhật Webhook",waitingForEvents:"Đang chờ sự kiện...",loadingMore:"Đang tải thêm...",loadMore:"Tải thêm",response:"Trả lời",request:"Yêu cầu",eventData:"Dữ liệu Sự kiện",deleteWebhook:{title:"Xóa Webhook?",description:"Sau khi xóa một webhook, webhook đó sẽ không còn nhận được sự kiện nữa"},success:"Thành công"}};export{n as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{aw as _,ao as i}from"./vendor-ux-did-connect-4bCiyPYS.js";import{_ as e}from"./vendor-arcblock-BmGcldk1.js";import{y as a}from"./index-DXodzmv1.js";import{j as r}from"./vendor-mui-core-O22FPGM4.js";const u={en:_(a),ar:()=>e(()=>import("./ar-B77PsiKa.js"),[]).then(t=>_(t.default)),de:()=>e(()=>import("./de-DxPd91kE.js"),[]).then(t=>_(t.default)),es:()=>e(()=>import("./es-BLYV0NxM.js"),[]).then(t=>_(t.default)),fr:()=>e(()=>import("./fr-CKRgIc8I.js"),[]).then(t=>_(t.default)),hi:()=>e(()=>import("./hi-C7aBkqb5.js"),[]).then(t=>_(t.default)),id:()=>e(()=>import("./id-CCxzaFVu.js"),[]).then(t=>_(t.default)),ja:()=>e(()=>import("./ja-CtW6nj42.js"),[]).then(t=>_(t.default)),ko:()=>e(()=>import("./ko-DnLZZMTR.js"),[]).then(t=>_(t.default)),pt:()=>e(()=>import("./pt-Do2DB7RU.js"),[]).then(t=>_(t.default)),ru:()=>e(()=>import("./ru-DLPypCUz.js"),[]).then(t=>_(t.default)),th:()=>e(()=>import("./th-BgGjupIV.js"),[]).then(t=>_(t.default)),vi:()=>e(()=>import("./vi-Bye_bkKy.js"),[]).then(t=>_(t.default)),"zh-TW":()=>e(()=>import("./zh-tw-3LQ5YEkc.js"),[]).then(t=>_(t.default)),zh:()=>e(()=>import("./zh-Dr6QyOeU.js"),[]).then(t=>_(t.default))};function f(t){return function(o){return r.jsx(i,{translations:u,children:r.jsx(t,{...o})})}}export{f as w};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
const e={setup:{connect:{title:"设置 Blocklet Server",scan:"使用以下方法成为此节点的所有者",confirm:"请在 DID Wallet 上确认",success:"你已经成功成为节点的所有者"},keyPair:{title:"生成钥匙对",scan:"用你的 DID Wallet 为这个应用生成钥匙对",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:{loginTo:"连接 DID Wallet ",description:"只有节点的所有者和成员可以访问仪表盘",switchDid:{title:"切换账户",scan:"请使用以下方法添加账户",confirm:"在 DID Wallet 中确认切换",success:"切换成功"},switchSpecifiedDid:{title:"切换账号",scan:"你需要切换账号至 {did} 才能完成后续的操作",confirm:"在 DID Wallet 中确认切换",success:"切换成功"},connect:{title:"登录 Blocklet Server",scan:"只有节点所有者和成员才能访问控制面板",confirm:"在您的 DID Wallet 上确认",success:"连接成功"},verify:{title:"验证访问",scan:"连接你的 DID Wallet 以展示所有者或管理员通行证",confirm:"在你的 DID Wallet 上确认",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:"配置",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:"成员",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",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:"进行中",startTime:"开始时间",endTime:"结束时间",selected:"已选中",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:"以下是由您手动配置指向此处的域名,但它由自己的域名提供商进行管理。"},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 中安装."},admin:{iframeTitle:"Blocklets 管理界面",title:"管理界面",noContent:"该 Blocklet 没有管理界面",securityError:"安全错误:无法从访问跨源框架中打开管理界面"},config:{changeImageTip:"提示:如果想更改图片,请点击预览图片进行更改。",name:"应用名称",description:"应用描述",sk:"应用账户私钥",logoSquare:"应用 Logo",logoRect:"横版 Logo",logoRectDesc:"通常显示在页面顶部,默认和应用 Logo 相同",logoFavicon:"Favicon",logoFaviconDesc:"通常显示在浏览器的地址栏或标签页中,默认和应用 Logo 相同",clusterSize:"以 Cluster 模式启动时的实例数量",copyrightOwner:"版权所有者 (展示在页脚中)",copyrightYear:"版权年份 (展示在页脚中)",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:"危险操作",blockletTypeChangeTip:"钱包类型将被修改为 <b>{value}</b>",appDidChangeTip:"该操作会导致应用 DID 发生变化,进而导致如下问题,请仔细评估后确认:",appDidChangeTipL1:"用户连接此应用的账户会发生变化",appDidChangeTipL2:"应用的 DID Domain 会发生变化,原域名将会失效",appSkChangeTip:"你正在修改应用私钥",walletTypeTitle:"修改钱包类型",appSkTitle:"修改应用私钥",sharedToAllComponents:"将共享给所有组件",session:{ttl:"如果用户在此网站上没有任何活动 {day} 天,将被要求重新登录",day:"{day} 天",days:"{day} 天",period:"会话有效期",profile:"用户个人资料要求",cacheTtl:"用户会话数据的缓存持续时间(以秒为单位)",fullNameEnabled:"登录时请求用户名(默认启用)",avatarEnabled:"登录时请求用户头像(默认启用)",emailEnabled:"在登录时请求用户电子邮件",emailRequireVerified:"要求用户在登录前验证电子邮件",emailRequireUnique:"要求用户电子邮件在所有用户中是唯一的",phoneEnabled:"在登录时请求用户电话号码(目前不支持)",phoneRequireVerified:"在登录前要求用户验证电话号码",phoneRequireUnique:"要求用户电话号码在所有用户中是唯一的",emailTrustOauthProviders:"信任OAuth提供商进行电子邮件验证状态",enableDomainBlackList:"启用电子邮件域黑名单(拒绝列出的电子邮件域)",enableDomainWhiteList:"启用电子邮件域白名单(仅允许列出的电子邮件域登录)",addDomain:"添加源以获取列表(纯文本格式,每行一个域名)"},clearCache:{name:"缓存管理",purpose:"管理缓存在网关和服务中的文件",title:"确认清除缓存?",action:"清除缓存",success:"成功清除了 {count} 个缓存条目",description:"您确定要清除缓存在网关和服务中的文件吗?此操作可能会在短期内导致轻微的性能降低。"},tenantMode:{name:"多租户模式",multiple:"该应用在多租户模式下运行,每个租户的数据应该是隔离的",single:"该应用运行在单租户模式下,所有数据都是共享的"},splashPortrait:"竖屏缩略图",splashLandscape:"横屏缩略图",splashPortraitDesc:"在竖屏模式下启动块时显示",splashLandscapeDesc:"当块被以横向模式启动时显示",rotateSessionKey:{name:"会话密钥轮换",purpose:"会话 salt 是用于增强会话令牌安全性的随机值。点击按钮手动旋转会话 salt,以帮助降低登录令牌被盗的风险。",title:"确认会话密钥轮换吗?",action:"轮换密钥",success:"会话密钥轮换成功",description:"你确定要轮换会话密钥吗?此操作将使所有现有的登录令牌失效,并强制用户重新登录,包括你自己的登录令牌。"},ogImage:"Open Graph 背景",ogImageDesc:"自定义所有开放图像的背景图像,应该与白色文本良好配合",migrate:{button:"更新应用 DID",title:"确认更新应用 DID?",description:"您确定要更新应用 DID 吗?此操作将使所有现有会话失效,并强制用户重新登录,包括您自己的会话"},vault:{name:"冷钱包 DID",title:"配置冷钱包",desc:"使用冷钱包为这个 Blocklet 管理的资金增加一层额外的安全保障。",tip:"输入冷钱包地址继续,你需要证明冷钱包地址的所有权才能使用。",address:"冷钱包地址",verified:"冷钱包已验证",current:"当前冷钱包",error:{invalid:"冷钱包地址必须是有效的 DID",holder:"冷钱包地址必须是区块链上的有效代币持有者,不支持代币/资产/工厂/质押地址",duplicate:"此冷钱包地址已被使用,请使用其他地址",appDid:"不能使用应用 DID 作为冷钱包地址,请使用不同的地址"},role:"账户类型",firstSeen:"首次见到",lastSeen:"上次见到",migratedFrom:"迁移自",migratedTo:"迁移到",commit:{title:"验证冷钱包所有权",scan:"使用以下方法以验证冷钱包的所有权",confirm:"确认使用 DID Wallet",success:"冷钱包配置成功"},approve:{title:"批准冷钱包变更",byOwner:"使用 Blocklet 所有者签名以批准更改",byLast:"使用上个冷钱包签名以批准更改",confirm:"在 DID Wallet 上确认",success:"冷钱包变更已批准"}}},overview:{source:"来源",deployedFrom:"部署源",accessControl:"访问控制",viewInStore:"在商店中查看"},diskInfo:{empty:"无法获得磁盘信息",appDir:"应用目录",dataDir:"数据目录",logDir:"日志目录",cacheDir:"缓存目录"},runtimeInfo:{noRunning:"当应用运行时才可以获得运行信息!",memoryUsage:"内存",cpuUsage:"CPU",uptime:"启动时长",port:"端口",processId:"进程 ID"},dist:{downloadLink:"下载地址",verify:"校验信息"},status:{added:"已添加",waiting:"等待中",downloading:"下载中",extracting:"提取中",installing:"安装中",upgrading:"升级中",installed:"已安装",created:"已创建",starting:"启动中",running:"运行中",stopping:"停止中",stopped:"已停止",error:"错误",deleting:"删除中",corrupted:"已损坏",purchased:"已购买",purchasing:"购买中...",verifying:"验证中...",resource:"资源"},list:{download:"下载数",star:"收藏数",searchPlaceholder:"按 Blocklet 名称或 DID 搜索"},component:{container:"全局配置",showContainer:"显示全局配置",didSpaceConfig:"配置 DID Spaces",didSpaceConfigTip:"完成以下授权流程,即可将应用数据存储到 DID Spaces 中",didSpaceConnected:"正在授权存储到:{endpoint}",checkUpdateTitle:"检查更新",updateTitle:"更新 Blocklet",noUpdate:"没有需要更新的 Blocklet",add:"添加 Blocklet",selectComponent:"选择 Blocklet",selectRegistry:"选择应用商店",selectRegistryTip:"您可以切换应用商店以查看更多 Blocklet",selectInstance:"选择实例",selectInstanceTip:"您可以选择已有实例 或 创建新的实例。已有实例将使用之前保存的配置和数据",newInstance:"创建新实例",noComponent:"暂无 Blocklets",mountPoint:"Blocklet 的挂载点是什么?",mountPointTip:"如果你填写了 '/my-prefix',那么所有以其为前缀的请求都会被转发到配置的 Blocklet",delete:"删除 Blocklet",deleteDescription:"删除后此 Blocklet 将无法访问。确认删除?",purchase:"需要支付",tip:{stopBlocklet:"请先停止运行应用",requiredBy:"{name} 需要该 Blocklet"},choose:"选择",upgrade:"升级",addWithName:"将 Blocklet 添加到 {name}",installed:"已安装",installingTip:"正在安装 Blocklet 中, 请等待安装结束",installingCanCloseWindowTip:"正在后台安装 Blocklet 中, 您可以放心关掉此窗口",installSuccessTip:"恭喜,组件安装成功!",missDownloadTokenTip:"缺少下载凭证,无法下载",purchaseComponentSecondCheckTip:"请在 钱包 提供应用购买凭证",installComponentError:"安装组件遇到错误,请重试",downloadComponentError:"下载组件遇到错误,请重试",addComponentTip:{introduction:"欢迎来到添加组件向导",isPurchase:"您需要验证凭证才能添加 <b>{name}</b> 为组件;",belowInformation:"下面为该组件的信息:",verifyNFT:"请选择验证凭证方式",config:"请填写组件的相关配置",environment:"请填写组件的环境变量",fromUrl:"从 URL 添加 Blocklet"},addNext:"添加 {name}",upgradeNext:"升级 {name}",setting:"参数设置",noDependencies:"{name}没有任何依赖",relatedComponents:"相关 Blocklets",required:"必须"},router:{urlPath:"URL 路径",securitySetting:"安全设置",noRunning:"应用当前未启动。无法通过以下地址访问!",checkUrlAccessible:"检查地址的是否可访问",urlInaccessible:"可能因为网络的原因,该地址暂时无法访问",noAccessibleUrl:"没有可访问的地址",domainLockTooltip:"无法编辑由系统生成的域名",urlLockTooltip:"无法编辑由系统生成的 URL 路径",showAllDomains:"显示所有域名",showAllDIDs:"显示所有 DID",currentDomainTip:"你正在通过该域名访问当前页面"},export:{title:"导出应用",name:"包名称",nameTip:'e.g. "my-blocklet-name" or "@my-scope/blocklet-name"',result:"接下来",exportSource:"导出源代码",success:"应用导出成功",resultTipStart:"使用",resultTipEnd:"你可以在几分钟内构建并发布这个应用",uploadedComponentTip:"无法导出直接上传的组件:"},migrate:{title:"迁移应用",scan:"用你的 DID Wallet 为这个应用生成钥匙对",confirm:"请在 DID Wallet 上确认",success:"你的应用已迁移成功,页面将在 {sec} 秒后刷新",intro:{l1:"点击这里",l2:"迁移应用到新版(迁移完成之前组件升级将被禁用)",l3:"1. 应用的钥匙对将完全由钱包管理",l4:"2. 应用的数据将平滑迁移,不会丢失",l5:"3. 新的结构将为你组合应用提供更大的灵活性",l6:"4. 在组件有新版之前,请不要在迁移之后随意变更组件挂载点"},tip:{duplicate:"发现重复的组件 {name},请删除无用组件并重新迁移",running:"迁移前请先停止应用"}},error:{isRunning:"应用正在运行,请先停止运行",isInProgress:"应用正在进行中,请等待完成"},publish:{createResource:"创建资源",addResource:"添加 Blocklet",productTitle:"Blocklet 详情",versionTitle:"版本",imgTitle:"图片资源",resourceTitle:"内容",blockletEmptyTip:"这里没有任何 Blocklet",createBlockletTip:"你可以使用此应用的资源,组件,配置制作新的 Blocklet",createBlocklet:"新建 Blocklet",componentNotRunning:"Blocklet {name} 没有运行,请先启动它",resourceEmptyTip:"没有可用的资源",releaseEmptyTip:"这里没有任何发布",createReleaseTip:"您可以创建 Blocklet 新版本,在发布中包含说明和资源,以供其他人使用",createRelease:"创建版本",deleteReleaseTip:"此发布删除后不可恢复,是否继续?",createBlockletDid:"通过 DID Wallet 创建",createReleaseSuccess:"发布成功",saveDraftSuccess:"保存成功",packTip:"您的 Blocklet 现在可以直接安装为应用程序。应用程序配置将自动包含在内",resourceChangedWarning:"您修改了资源,请及时保存",installResourceTip:"安装网址:",installResourceTip2:"如果你需要更多提示,请查看",installResourceHelp:"帮助文档",componentIncluded:"包含",componentForceRequired:"强依赖",connect:{title:"创建 Blocklet DID",scan:"使用以下方法生成 Blocklet DID",confirm:"使用 DID Wallet 确认",success:"Blocklet DID 已经生成,请继续您的操作"},saveDraft:"保存草稿",releaseNote:"发布说明",errorTip:{noDid:"请填写 Blocklet DID",noFirstDid:"请先填写 Blocklet DID",noTitle:"请填写 Blocklet 名称",noVersion:"请填写 Blocklet 版本号",noResource:"请选择上传的资源以包含在应用中",noDescription:"请填写 Blocklet 描述",noNote:"请填写 发布说明",inValidVersion:"无效的 Blocklet 版本",invalidUrl:"请输入有效的网址",invalidUrlOrEmail:"请输入有效的URL或电子邮件"},download:"下载 {name}",delete:"删除 {name}",copyInstallUrl:"复制安装链接",install:"安装 {name}",publishToStoreSuccess:"成功发布到商店的Blocklet",connectStoreSuccess:"Blocklet 成功连接 Store",uploadToStoreSuccess:"Blocklet 成功上传至 Store,请在 Store 中发布",viewLastRelease:"查看最新版本",reconnectStoreTip:"重新连接后,将绑定一个新的开发者。你确定要重新连接吗?",deleteProject:{title:"删除{name}",scan:"使用以下方法删除 {name}",confirm:"确认使用DID钱包",success:"Blocklet 已被删除,请继续操作",tip1:"Blocklet 一旦删除将无法恢复。",tip2:"您将不能再向已删除的 Blocklet 发布新版本,这意味着 Blocklet 将不再在商店中更新。",tip3:"删除 Blocklet 不会影响商店中已发布的版本。",description:"您确定要删除这个 Blocklet 吗?删除后可能会遇到以下问题:"},resourceTip:"目前,作为资源型 Blocklet,它无法直接从 Store 安装。",whyCantSeeInStore:"为什么我不能在 Store 中看到这个 Blocklet?",whyCantSeeResourceBlockletInStore:"资源Blocklet默认情况下在商店列表页面上被隐藏",tenantScope:"租户",blockletStudio:"Blocklet Studio",allComponentsNotRunning:"Blocklets未运行,请先启动",steps:{resources:"请选择需要与当前的 Blocklet 关联的资源,这些资源将与 Blocklet 一起安装。",blocklets:"请选择当前 Blocklet 安装时, 需要关联安装的 Blocklets。",version:"设置发布版本和更改日志。",introduction:"清晰的介绍可以有效地突出你的Blocklet。你可以使用Markdown语法来编写和预览。",branding:"描述您的应用链应用的基本信息。此信息将在商店向用户展示。"},branding:"品牌",brandingHelp:"将在商店中显示有关应用链的更多信息",resourceSelect:"从 blocklets 选择资源",resourceUpload:"从您的磁盘上传资源(存档中需要index.html)",deleteStoreTip:"您确定要将{name}从连接商店列表中移除吗?",disconnectStoreTip:"断开连接后,blocklet 将从商店中移除。您确定要断开连接吗?",connectOrUpload:"连接或上传",developerInfo:"开发者信息",possibleSameStoreTip:"依赖的 Blocklets 优先使用同源 Store",autoUploadTip:"创建发布后自动将 Blocklet 上传到商店",needProjectId:"请先创建一个项目",projectSettings:"项目设置",noStoreSelected:"请选择现有店铺中的一个或添加新店铺以继续",installToThisServer:"安装到此服务器",forceResourceBlocklet:"强制定义为资源型组件",resourceDocker:"从 Docker 构建 Blocklet",resourceSelectTitle:"资源",resourceUploadTitle:"上传",resourceDockerTitle:"Docker",resourceDockerInputTip:"请输入 docker run 命令",docker:{pleaseInputDockerCommand:"请输入 docker run 命令",volumeTip:"卷必须以 $BLOCKLET_DATA_DIR 或 $BLOCKLET_APP_DIR 开头",volumeTip2:'卷不能包含 ".."',noAllowTheArg:"不允许在 docker run 命令中使用该参数",needCustomInput:"安装 Blocklet 时设置值",dockerParams:"Docker 参数",dockerCommand:"Docker 命令",dockerImageName:"Docker 镜像名称",addItem:"添加 Docker 运行参数",envKey:"环境变量键",publishTips:"最终外部端口将由 blocklet 自动分配",volumeTips:"卷需要以 $BLOCKLET_DATA_DIR 或 $BLOCKLET_APP_DIR 开头",modifyParam:"修改 Docker 运行参数",modifyEnv:"修改环境变量",paramDetail:"参数详情",description:"描述",secure:"安全",shared:"共享",required:"必需",prefix:"前缀",path:"路径",name:"名字",portType:"端口类型",dockerImageNameError:"Docker 镜像名称不能包含空格",autoGenerated:"自动生成",dockerCMDError:"Docker CMD 只支持简单字符",proxyBehavior:"代理行为",serviceProxy:"服务",directProxy:"直接"},storeRule:{maxImageCount:"该 Store 最多允许 {max} 张截图。",minImageCount:"该 Store 至少需要 {min} 张截图。",minImageSize:"{name}张屏幕截图图像大小必须至少为 {width}x{height}。",logoFormat:"Logo 图片格式仅支持 [{format}]。",warning:"警告",screenshot:"截图",screenshots:"截图",first:"第一",second:"第二",third:"第三"}},titleValidationError:"名称长度必须限制为3到40个字符",descriptionValidationError:"描述长度必须介于3到80个字符之间",usingDocker:"这个 Blocklet 将使用 docker 运行",gotoVisitError:"无法访问 Blocklet 地址,请稍后再试",usingIsolation:"这个 Blocklet 将使用网络隔离运行",dockerImage:"支持 Docker",mountPoint:{description1:"这次更改有可能会影响到包含旧挂载点的 URL,进而可能引发一些问题:",case1:"应用里 Blocklets 之间的资源引用出现异常",case2:"如果您对外分享过相关内容,分享 URL 可能失效",description2:"为了尽量降低可能的影响,您可以设置旧挂载点到新挂载点的重定向。"}},dashboard:{nodeDid:"节点地址",ownerDid:"所有者地址",routingEngine:"路由引擎",ownerNftURL:"所有者 NFT",expirationLeft:"有效期还剩",startFromCrashTip:"应用Server 上次未正常退出,请手动启动需要运行的 blocklet.",runtimeConfig:{blockletMaxMemoryLimit:"Blocklet 最大内存限制",daemonMaxMemoryLimit:"Server 最大内存限制",proxyMaxMemoryLimit:"消息总线最大内存限制"}},store:{nameSort:"名称",popularSort:"下载量",headerDescription:"查找、安装 Blocklet",detail:{purchase:"购买 {name}",open:"打开 {name}",install:"安装 {name}",upgrade:"升级 {name}",empty:"暂无介绍"},blockletRegistry:{changeFailed:"更改应用商店地址失败:",addFailed:"添加应用商店地址失败:",editFailed:"编辑应用商店地址失败:",switchRegistry:"选择应用商店地址",addRegistry:"添加应用商店地址",editRegistry:"编辑应用商店地址",deleteRegistry:"删除应用商店地址",haveSameRegistry:"存在相同的应用商店地址",registryName:"应用商店名称",registryUrl:"应用商店地址",registryNameEmpty:"应用商店名称不能为空",registryUrlEmpty:"应用商店地址不能为空",deleteDesc:'确认删除应用商店地址 {name} ?<br/><span style="color: {color}">*移除该商店之后,无法更新从此商店安装的应用,除非你再次添加。</span>',confirmDesc:"请输入 {name} 以确认删除"},purchase:{title:"购买 {name}",confirmed:"你的购买已经验证,安装中",declined:"你没有提供有效的购买凭证",waiting:"等待购买完成...",purchase:{title:"获取凭证",description:"安装此应用之前你需要支付一定数量的通证以完成购买"},verify:{title:"验证凭证",description:"如果你已经购买过此应用,提供购买凭证 NFT 即可完成安装",auth:{title:"需要验证购买凭证",scan:"用你的 DID Wallet 提供购买凭证",confirm:"请在 DID Wallet 上确认",success:"你的购买凭证已经验证通过,应用正在安装中"}},auth:{title:"购买 {name}",scan:"用你的 DID Wallet 完成操作",confirm:"请在 DID Wallet 上确认",success:"购买凭证已经发送到你钱包"},launch:"启动 {name}",autoLaunch:"{name} 购买成功,正在跳转到启动页面..."},tooltip:{upgradeServer:"Blocklet 需要 Blocklet Server 版本 {version},当前 Blocklet Server 版本是 {serverVersion}"}},setting:{saveSuccess:"保存设置成功",unSavedTip:"有尚未保存的更改,请单击“保存”使更改生效。",unSavedLeaveTip:"有尚未保存的更改,是否确定离开当前页面?",form:{name:"节点命名",nameRequired:"名称不能为空",namePlaceholder:"节点名称",description:"节点描述",descriptionHolder:"节点描述",descriptionRequired:"节点描述不能为空",domain:"节点域名",domainPlaceholder:"节点域名",registry:"应用商店地址",registryPlaceholder:"用来拉取 Blocklets 列表",registryRequired:"应用商店地址是必填的",registerUrl:"应用启动器地址",registerUrlPlaceholder:'你可以使用自己运行的"应用启动器", 也可以使用官方提供的版本',webWalletUrl:"DID Wallet 地址",webWalletUrlPlaceholder:'你可以使用自己运行的 "DID Wallet", 也可以使用官方提供的版本',nftDomainUrl:"NFT Domain 地址",nftDomainUrlPlaceholder:"你可以选择其它的 NFT Domain 服务器, 也可以使用官方提供的版本",upgrade:{title:"升级 Blocklet 服务器到 {version}",description:"在升级期间,节点将会进入维护模式几分钟。",dialog:"点击 “确认” 安装更新。节点将进入维护模式,直到更新完成并自动返回生产模式。",confirm:"升级",switchLabel:"自动更新检查",enableBetaRelease:"允许安装测试版",setup:"准备升级中",installing:"安装节点新版本(v{version})",restarting:"重新启动节点",cleanup:"迁移节点数据",verifying:"验证节点新版本 v{version}",rollback:"回滚此次升级",complete:"升级完成!",progress:"升级 {name}",check:"检查更新",latest:"太棒了,你的节点已经是最新版!"},restart:{title:"重新启动节点",description:"在重启期间,节点将会进入维护模式几十秒钟。",dialog:"点击 “确认” 开启重启。节点将进入维护模式,直到更新完成并自动返回生产模式。",confirm:"重启",setup:"准备重启中",verifying:"验证节点版本",restarting:"重启节点中",cleanup:"验证重启成功",rollback:"撤销重启操作",complete:"维护完成",progress:"重新开始 {name}"},welcome:{switchLabel:"Welcome 页面"},security:{switchLabel:"文件系统隔离",switchTips:"关闭此选项后,Blocklet 的文件系统将不再处于隔离状态,可能会存在恶意软件破坏文件系统的风险。",warningTips:"文件系统隔离功能无法生效,请将 node.js 版本(当前版本为 {version})升级至 v21.6.0 或更高。"},register:{title:"注册到 Blocklet Launcher",description:"添加成功后,你可以快速从 {url} 安装应用到此节点",button:"注册"},monitor:{diskThreshold:"当磁盘使用率超过(%)时发送报警",diskThresholdPlaceholder:"请设置磁盘使用率报警阈值"},domainRequired:"服务器域名是必需的",ipPlaceholder:"IP",ipRequired:"IP是必需的",enableWelcomePage:"启用欢迎页",docker:{switchLabel:"在容器中运行 Blocklets",switchTips:"启用此选项后,块将使用容器运行,可以提高服务器的整体安全性。",notInstalled:"无法激活容器运行,因为未安装Docker或缺少执行所需的权限",needCloseFileSystemIsolation:"文件系统隔离和Docker容器模式运行时不能同时启用"},dockerNetwork:{switchLabel:"容器网络隔离",switchTips:"启用该选项后,blocklet 会以更高安全性运行:一个 blocklet 无法访问跨应用程序的其他 blocklet 或 blocklet 服务器。",needEnableDocker:"必须启用容器模式才能启用网络隔离"},restartAllContainers:{title:"重启所有容器",description:"重启所有容器并保持 Blocklets 运行。",dialog:'点击 "确认" 重启所有容器 Blocklets 并保持 Blocklets 状态运行。',confirm:"重新启动",setup:"正在准备重启",verifying:"正在验证 Blocklet Server",restarting:"在后台重启所有容器",cleanup:"确保一切正常",rollback:"清理脏状态",complete:"保持完整!",progress:"在后台重启所有容器"},restartAllBlocklet:{title:"重启所有 Blocklets",description:"重新启动此服务器上所有正在运行或出错的 Blocklets。",dialog:"点击“确认”在后台重新启动所有 Blocklets。",confirm:"重新启动",setup:"正在准备重启",verifying:"验证 Blocklet Server",restarting:"后台重新启动所有正在运行或出错的 Blocklets",cleanup:"确保一切正常",rollback:"清理脏状态",complete:"维护完成!",progress:"正在后台重启所有运行中或出错的 Blocklets"},enableSessionHardening:{switchLabel:"启用会话强化",switchTips:"启用此选项后,变更操作将需要严格验证,这可以提高服务器的整体安全性。"}},accessKey:{accessKeyId:"Access Key",lastUsed:"最后使用",tip:"请给 Access Key 起个名字",saveSecretTip:"你的 Access Secret 只会展示一次,关闭此窗口后将无法再次查看,不过你可以随时重新创建新的 Access Key",iKnow:"我已复制保存好该 Access Secret",showSecret:"展示 Secret",hideSecret:"隐藏 Secret",title:"删除 Access Key",descriptionNoTime:"此操作无法撤消。这将永久删除备注为 {name} 并且 Id 为 {key} 的 Access Key (此 Access Key 之前没有被使用过) ",description:"此操作无法撤消。这将永久删除备注为 {name} 并且 Id 为 {key} 的 Access Key (最后的使用时间为 {time}, {timeAge})",confirm_desc:"请输入 {name} 以确认删除",remark:"Access Key 名称",remarkInvalid:"Access Key 名称不能为空"},webhook:{add:"添加应用集成",delTitle:"删除应用集成",requiredError:"请输入正确的 {type}",confirm_desc:"请输入 {name} 以确认删除",test:"测试",description:"此操作无法撤消。这将永久删除 ID 为 {id} 的应用集成",columns:{description:"ID",params:"参数",createdAt:"创建时间"}}},notification:{title:"通知",empty:"没有动态",viewAll:"查看所有动态",showRead:"显示已读",markAllAsRead:"全部标记为已读",markAsRead:"标记为已读",proceed:"处理",checkingForUpdates:"正在检查更新...",email:{enable:"是否开启 Email 通知",from:"发件人邮箱",host:"SMTP 服务地址",port:"SMTP 服务端口",user:"SMTP 服务用户名",secure:"使用安全链接",password:"SMTP 服务用户密码",fromRequired:"请输入发件人邮箱",fromInvalid:"发件人邮箱格式不正确",receiverRequired:"请输入收件人邮箱",receiverInvalid:"收件人邮箱格式不正确",hostRequired:"请输入 SMTP 服务地址",hostInvalid:"请输入 SMTP 服务地址格式不正确",portRequired:"请输入 SMTP 服务端口",portInvalid:"请输入 SMTP 服务端口,端口号应该在 0-65535 之间",userRequired:"请输入 SMTP 服务用户名",passwordRequired:"请输入 SMTP 服务用户密码",testSuccess:"测试邮件发送成功",testFailed:"测试邮件发送失败",testReceiver:"收件人邮箱",testSendEmail:"测试邮件发送",inputTestReceiver:"请输入测试邮件接收者的邮箱地址",disable:"禁用邮件通知",disableDescription:"禁用后将不再收到邮件通知,如需收到邮件通知,可以在本页面再次开启",unsubscribe:"取消邮件订阅",unsubscribeDescription:"取消邮件订阅后将不再收到所有邮件通知",subscribe:"订阅邮件",subscribeDescription:"如需收到邮件通知,可进入配置页再次开启订阅"},comingSoon:"更多通知方式正在建设中",unsubscribe:"取消订阅",unsubscribeSucceed:"取消订阅成功",unsubscribeFailed:"取消订阅失败",unsubscribeTokenRequired:"取消订阅链接不存在",unsubscribeTokenExpired:"取消订阅链接已过期",unsubscribeTokenInvalid:"取消订阅链接有误",installComponentError:"未找到卸载的组件 {name}",installingComponent:"安装组件{name}",pushKit:{enable:"启用 PushKit 通知",endpoint:"PushKit 端点",endpointInvalid:"PushKit 端点不是一个有效的网址",testSuccess:"Test PushKit 发送成功",testFailed:"测试 PushKit 发送失败",testReceiver:"PushKit 接收器",testSend:"测试推送",inputTestReceiver:"请输入测试接收者 DID",receiverRequired:"需要 PushKit 接收者 DID",pushPath:"PushKit 的 API 路径(默认 /api/push)",did:"PushKit Blocklet DID",customOptions:"自定义选项"},notificationDetails:"通知详情",notificationPreview:"通知预览",receiver:"接收者",filter:"筛选器",resend:"重发",resendLimit:"您每天最多可以重新发送三次通知。",sendStatus:{success:"发送成功",failed:"发送失败",pending:"待发送",sentTime:"发送时间:{date}",reason:{enabled:"用户已开启 {channel} 通知",disabled:"用户没有开启 {channel} 通知",unavailable:"当前 Blocklet 没有配置 {channel} 通知",available:"当前 Blocklet 已配置 {channel} 通知",notSent:"当前消息没有向 {channel} 发送",offline:"用户未在线"},count:"{count}",total:"总计"},from:"发送方",to:"接收方",body:"内容",notificationTitle:"标题",createdAt:"创建时间",status:"状态",system:"系统通知",severity:"消息等级",config:"配置",selectChannels:"选择通知渠道",selectChannelsTip:"选择需要重发的渠道",resendFailedOnly:"仅重发失败渠道",statistics:"统计",allSender:"所有发送者",allSeverity:"所有等级",severityType:{info:"正常",success:"成功",warning:"警告",error:"错误"}},router:{routerSetting:"域名和网址",certSetting:"SSL 证书",defaultSite:"默认",urlHelperText:"不以 HTTP/HTTPS 开头的 URL 将被认为是相对路径",empty:"点击 “添加 URL” 来增加映射",healthy:{ok:"Blocklet 运行中,可访问",error:"Blocklet 未安装或未运行中,无法访问"},service:{select:"选择和配置服务(可选)",what:"服务是把请求转交给 Blocklet 前执行的逻辑,比如要求用户登录,检查权限等"},nonProvider:{title:"变更引擎警告",description:"如果你将引擎切换为 none,你当前访问的页面可能不再可用,因为它可能是由引擎来提供服务的,是否要继续?",confirm:"我知道风险,继续吧"},validation:{urlRequired:"URL 是必填的",redirectCodeRequired:"重定向码是必选的",didRequired:"应用是必选的",pathPrefixTooLong:"请求的前缀不能超过30个字符",pathPrefixCannotBeEmpty:"请求的前缀不能为空",domainRequired:"节点域名不能为空",invalidUrl:"请填写正确的 URL",pathPrefixRequired:"URL 前缀是必填的",redirectUrlRequired:"重定向 URL 是必填的",rewriteUrlRequired:"重写到 URL 是必填的"},domain:{addSite:"添加站点",validate:{emptyTip:"站点域名不能为空",suffixTip:"站点域名不能包含 {suffix}"},add:{title:"添加域名",description:"请填写你所拥有的合法的域名",confirm:"添加",cancel:"取消",blocklet:"选择 Blocklet",redirect:"重定向到哪里?",port:"负责处理请求的服务监听在哪个端口?",portTip:"保持默认值就好,如果你想把请求转发到非默认端口,可以根据需要修改",type:"服务类型",component:"选择组件",pageGroup:"路由分组",pageGroupTip:"该组件具备渲染这里列出的任何一组页面,留空表示渲染所有页面"},update:{title:"更新站点域名",label:"站点域名",description:"请填写你所拥有的合法的站点域名"},setup:{tipStart:"请将",tipEnd:"域名的 DNS 记录按照下面的提示添加",recordType:"记录类型",recordValue:"记录值"},verify:{ok:"该域名解析正常",notResolved:"该域名解析异常,请检查你域名服务商的 DNS 配置"},https:{ok:"该域名已启用 HTTPS",bad:"该域名尚未启用 HTTPS"},delete:{title:"删除站点",description:"确认之后,你会删除掉 “{name}” 站点, 在下面输入“{name}”,选择删除按钮完成修改,或者选择取消按钮关闭当前弹窗。",confirm_desc:"请输入 {name} 以确认删除"}},domainAlias:{nftDomain:"通过 DID Domain 自动配置域名",showTipHint:"如何配置域名解析?",add:{title:"添加额外域名",domainDescription:"请填写有效的域名",forceTip:"当域名已存在时强制添加",helperText:"如果输入 HTTP 或者 HTTPS URL, 则会被自动转换为域名。",isDidDomainError:"该域名是 DID Domain, 请使用自动配置域名的方式添加该域名。",tips:"您可以输入 DID Domain 或其他域名服务商购买的域名。若使用 DID Domain,则需要出示相应的 NFT 才能继续。"},addCustomDomain:{name:"自定义域名"},addDomainNFT:{showNFT:"自动配置域名",tips:"您可以输入从 DID Domain 购买的域名。如果检测到 DID Domain,您必须出示 DID Domain NFT 才能继续。",connect:{title:"请出示域名 NFT",scan:"使用以下方法出示域名 NFT",confirm:"在您的 DID Wallet 上确认",success:"授权成功"},buyTip:"DID Domain 将自动执行域名解析,无需手动配置,并且应用程序将在需要时自动更新域名解析记录。如果您还没有 DID Domain NFT,",buy:"购买 DID Domain",topLevelDidDomainHint:"对于DID域名,如果您输入顶级域名(例如 example.com),它将自动配置为 www.example.com"},delete:{title:"删除",description:"删除“{domain}”后,对该别名的访问可能无法正常处理。",confirmPlaceholder:'请输入 "{domain}" 删除'}},domainSecurity:{title:"站点安全设置",cors:{title:"CORS 域名白名单",description:'此白名单显示的声明可以往 {name} 发送跨域请求的域名, 多个域名用逗号分隔, 可以用 "*" 来允许任何域名(我们不推荐这么做)',domainInvalid:"请输入有效的域名列表"}},rule:{add:{title:"添加 URL",confirm:"添加",pathPrefix:"请求的前缀是什么?",pathPrefixTip:"如果你填写了 '/prefix',那么所有以其为前缀的请求都会被转发到配置的 Blocklet",blocklet:"把请求代理到哪个服务?",port:"把请求代理到哪个端口?",portTip:"这里的默认值是应用默认监听的端口,如果你的应用会启用多个端口,你可以根据需要自定义",responseType:"回应类型",responseBody:"响应内容",responseBodyTip:"请将您的回复内容粘贴在这里,不要超过4096个字符",responseBodyRequired:"响应内容不能为空"},delete:{title:"删除规则",description:"确认之后,你会删除掉 “{name}” URL映射, 在下面输入“{name}”,选择删除按钮完成修改,或者选择取消按钮关闭当前弹窗。",confirm_desc:"请输入 {name} 以确认删除",cancel:"取消"},update:{title:"更新规则",confirm:"确认,更新吧",cancel:"取消"}},cert:{name:"证书名称",domain:"域名",commonName:"通用名称",boundDomains:"域名",action:"操作",expired:"已过期",leftDays:" 天 剩余",issuedOn:"签发时间",expiryOn:"过期时间",fingerprintAlg:"指纹算法",validityPeriod:"有效期",matchedSites:"匹配站点",source:"添加方式",upload:"手动上传",publicCertHelperText:"公开证书可以下载",nonPublicCertHelperText:"非公开的证书不能被下载",protectedCertHelperText:"受保护的证书不可以编辑",unprotectedCertHelperText:"不受保护的证书可以编辑",issuing:"正在生成证书",sourceTypes:{upload:"手动上传",lets_encrypt:"Let's Encrypt"},table:{nodata:"暂无数据"},delete:{title:"删除证书",description:"确认删除域名 {domain} 的证书?删除后相关服务可能会受到影响,请确认无风险后再删除。",confirm:"确认"},nginx:{title:"更新证书",titleAdd:"添加证书",pem:"证书文件",pemTip:'请把证书文件拖拽到这里, 应该以 ".pem" 或 ".crt" 结尾',key:"证书私钥",keyTip:'请把证书私钥拖拽到这里,应该以 ".pem" 或 ".key" 结尾',confirm:"提交",cancel:"取消",invalidFile:"所选择的文件无效",empty:"尚未选择任何文件",sourceTypes:{upload:"通过上传文件",lets_encrypt:"通过 Let's Encrypt 自动生成"},source:"來源"},detail:{title:"证书详情"},genLetsEncryptCert:{title:"生成 Let's Encrypt 证书",dnsTip:"请确保该域名已经解析到了当前节点。",description:"添加证书会让服务变得更安全,节点会在证书过期前自动更新证书。"}},gateway:{reqLimit:{switchLabel:"请求限制",rate:"限流速率({rate} 请求/秒)",title:"请求限制"},cacheEnabled:{switchLabel:"启用网关缓存以提升性能",title:"网关缓存"},blockPolicy:{switchLabel:"请求封禁",addItem:"添加",blacklistDesc:"来自这些 IP 的请求将被阻止访问此服务器和所有应用",inputPlaceholder:"请输入 IP 地址、CIDR 范围或 URL",invalidItem:"无效的 IP 地址、CIDR 范围或 URL",title:"请求阻止",autoBlocking:{switchLabel:"通过实时检测阻止恶意请求",windowSize:"用于统计请求的时间窗口大小(秒)",windowQuota:"每个 IP 在窗口期内允许的最大请求数",blockDuration:"超出窗口配额时按 IP 阻止用户的持续时间(秒)",statusCodes:"需要检查的状态代码"}},proxyPolicy:{switchLabel:"运行在代理之后",trustRecursive:"无条件信任代理",trustRecursiveDesc:"使用 X-Forwarded-For 链中的最左边的 IP",trustedProxies:"可信代理",trustedProxiesDesc:"来自这些 IP 的请求将被信任以获取真实的客户端 IP",realIpHeaderLabel:"客户端 IP 标头",realIpHeaderDesc:"如果 Blocklet 服务器在诸如 CloudFront 之类的代理后面运行,您可以在此设置客户端真实 IP 的标头。",addItem:"添加",inputPlaceholder:"输入 IP 地址,CIDR 范围",invalidItem:"无效的 IP 地址、CIDR 范围",title:"代理政策"},wafPolicy:{switchLabel:"使用 ModSecurity 检测和阻止恶意请求",modeDesc:"Modsecurity 的模式(需要 modsecurity 模块)",mode:{detectOnly:"仅检测(不会阻止请求)",on:"开启(将阻止请求)"},logLevelDesc:"ModSecurity 的日志级别(0-9),0 表示禁用审计日志",inboundAnomalyScoreThresholdDesc:"入站异常评分阈值 (1-100),值越低意味着越严格",outboundAnomalyScoreThresholdDesc:"外部异常评分阈值 (1-100),较低值意味着更严格",docDesc:"查看文档了解如何设置 modsecurity",title:"Web 应用防火墙"}}},noMatch:{desc:"我们找不到您要找的页面"},health:{connectionErrorTip:"节点服务节点的连接已经断开,可能是出现了网络异常或者节点服务节点故障",connectionRecoveryTip:"节点服务节点的连接刚刚恢复正常",connectionStoppedTip:"节点服务节点已经被停止",wrongAccessUrlTip:"节点访问地址错误,请使用正确的访问地址"},debug:{title:"您的节点已启动并正在运行"},team:{invite:{action:"邀请新人",setting:"邀请设置",enabled:"禁用此设置以限制只有拥有者/管理员才能邀请新用户",disabled:"启用此设置以允许任何用户邀请新用户",inviter:"被邀请者"},add:"添加",member:{name:"姓名",passport:"通行证",passports:"通行证",lastLogin:"上次登录",lastLoginIp:"上次登陆 IP",source:"注册来源",source_derived:"OAuth 账户派生",source_wallet:"DID Wallet",filter:"条件筛选",blockAccess:"禁止登录",blockAccessDescription:"该成员将无法登录此应用",allowAccess:"允许登录",allowAccessDescription:"该成员将可以登录此应用",removeUser:"删除成员",removeUserDescription:'确认删除用户 "{did}" 及其所有相关数据(已连接账号、通行证、登录会话等)?此操作无法撤销。',updateRole:"更新角色",revokePassport:"撤销通行证",revokePassportDescription:"通行证一旦被撤销,通行证的持有者将无法用其登录,是否继续?",enablePassport:"启用通行证",enablePassportDescription:"撤销的通行证一旦被重新启用,通行证持有者将可以继续登陆应用,是否继续?",passportPermissionTitle:"该通行证具有以下权限:",search:"搜索成员",onlyApprovedMember:"仅显示已批准",inviteDialog:{createInviteLink:"生成邀请链接",createSuccessTip:"创建邀请链接成功,请复制并发送给被邀请人。该链接只能使用一次,并将在 {expireDate} 过期"},error:{passportEmpty:"通行证不能为空"},connectedAccounts:"已连接账号",connections:"账号绑定",federated:"统一登录",switch:{did:"添加账户",profile:"更新身份",passport:"切换通行证"},settings:{notification:"通知设置",email:"当有动态时给我发送邮件",wallet:"当有动态时给我发送钱包通知",phone:"当有动态时给我发送短信",webhook:"外部钩子",add:"添加新钩子",url:"自定义 URL",slack:"Slack 通知",tested:"测试消息已经发送"},activeUserSessions:"活跃用户会话",forceLogout:"强制注销",forceLogoutDescription:"确认是否强制退出此用户?",openProfile:"查看个人资料",removeUserSuccess:"用户删除成功"},transferNode:{name:"转移所有者",inviteDialog:{createInviteLink:"生成邀请链接",title:"转移节点",tips:{progress:"转移节点需要对方接受后才能完成转移操作,对方一旦接受,无法再使用当前凭据登录节点。",newOwnerPermissions:"新 Owner 将有权管理成员、通行证,以及应用等所有操作。",revoke:'如果想收回转移邀请,在"团队 -> 成员 -> 邀请中"页面删除邀请链接即可。'},createSuccessTip:"创建邀请链接成功,请复制并发送给被邀请人。该链接只能使用一次,并将在 {expireDate} 过期"},delegateDialog:{title:"需要授权",scan:"使用以下方法授权服务器转移节点所有权 NFT",confirm:"在您的 DID Wallet 上确认",success:"授权成功"}},transferApp:{name:"转移所有者",transferDialog:{title:"转移应用",tips:{progress:"转移应用需要对方接受后才能完成转移操作,对方一旦接受,无法再使用当前应用所有者凭据登录应用。",newOwnerPermissions:"新 Owner 将有权管理成员、通行证,以及设置等所有操作。"},createTransferLink:"生成转移链接",createSuccessTip1:'创建转移链接成功,被邀请人必须使用 <a style="color: rgb(29, 193, 199)" target="_blank" href="https://www.didwallet.io/">DID Wallet</a> 接收应用所有权',createSuccessTip2:"请复制并发送给被邀请人。该链接只能使用一次,并将在 {expireDate} 过期。你的转移链接只会展示一次,关闭此窗口后将无法再次查看",createSuccessTip3:"转移成功之后应用会自动重启以使变更生效",link:"邀请链接",iKnow:"我已复制保存好该链接"},connectDialog:{title:"需要授权",scan:"使用以下方法授权应用转移所有权。",confirm:"在您的 DID Wallet 上确认",success:"授权成功"},receiveDialog:{title:"接收应用程序所有权",scan:"使用以下方法接收应用所有权。",confirm:"在您的 DID Wallet 上确认",success:"成功获得所有权"},successTitle:"你已成为应用的所有者",visitDashboard:"访问应用控制台",description:'如果你想更改项目的所有权, 点击 "transfer ownership" 开始'},permission:{create:{title:"创建权限",description:`格式:<操作>_<资源>
|
|
2
|
-
举例:'query_user', 'mutate_user'`},delete:{title:"删除权限",description:"确认删除 {name}?(角色中关联的 {name} 将会同时被删除)"},error:{actionEmpty:"操作不能为空",resourceEmpty:"资源不能为空",permissionTooLong:"权限不能超过 {length} 个字符",descriptionTooLong:"描述不能超过 {length} 个字符"}},passport:{create:{title:"创建通行证",titleTip:"名称创建后不可修改,建议在14个字母内"},bind:{title:"绑定",roleTip:"绑定后将会获得选定的通行证的所有权限",permissionTip:"绑定后将会获得选定的权限",transferLeftTitle:"所有权限",transferRightTitle:"已添加权限"},delete:{title:"删除通行证",description:"删除后,用户持有的此通行证的将失去所有权限,是否继续?"},error:{titleEmpty:"名称不能为空",titleTooLong:"名称不能超过 {length} 个字符",descriptionEmpty:"描述不能为空"},issuance:{pending:"待领取",create:{title:"生成链接"},delete:{title:"删除领取链接",description:"确认删除 {link}?"}},issue:"颁发通行证",disableIssuance:"禁止颁发通行证",enableIssuance:"允许颁发通行证",disableIssuanceTip:"“颁发通行证”,“邀请成员” 等操作将被禁止",enableIssuanceTip:"“颁发通行证”,“邀请成员” 等操作将被允许",trustedPassportIssuers:"信任的通行证颁发者",trustedIssuers:"信任的颁发者",trustedFactories:"信任的 NFT 集合",trustedFactoriesTip:"管理信任的 NFT 集合,持有这些集合中 NFT 的用户可以领取指定通行证",searchFactoryAddress:"搜索集合 DID",configFactories:"配置信任的 NFT 集合",configFactoriesTip:"允许用户用特定 NFT 来换取通行证",factoryAddress:"NFT 集合 DID",factory404:"NFT 集合未找到",factoryAddressTip:"NFT 集合必须 ArcBlock 主链上的",role:"通行证类型",ttl:"通行证过期策略",ttlNever:"永不过期",ttlMint:"从购买日期算起",ttlExchange:"从兑换日期算起",ttlTip:'"365d" 意思是 365 天, 你也可以使用类似 "30 days" 或 "24h" 的',ttlNeverTip:"通行证将永久有效直到被吊销",ttlMintTip:"通行证有效期将从 NFT 购买时间开始计算,直到指定的时间或者被吊销",ttlExchangeTip:"通行证将从用户成功交换时起有效,直到您指定的ttl或撤销",validUntil:"有效期至: {date}",externalPassport:"外部的通信证",notTrustedIssuerTip:"该通行证无法使用,因为颁发者未在信任的颁发者列表中",issuerDid:"颁发者 DID",addNodeToTrustedIssuers:"添加当前 node 为信任的通行证颁发者",revoked:"撤销",noPermission:"没有权限执行此操作",shouldNotDeleteCurrent:"无法删除当前正在使用的通行证",mappingRule:"映射规则",defaultRule:"默认规则",search:"搜索通行证",searchIssuerDid:"搜索颁发者 DID",issueBy:"由 {name} 颁发",configColor:"设置通行证颜色",configColorTip:"通过调色盘来自定义通行证的主色调",color:"通行证颜色",description:"使用此通行证以 {title} 连接 {teamName}",displayBuiltin:"内置",displayCustom:"自定义",typesTip:"自定义通行证类型,以逗号分隔",issuanceDate:"签发日期: {date}"},inviting:{link:"邀请链接",inviter:"邀请人",delete:{title:"删除邀请链接",description:"确认删除 {link}?"},disabledTip:"邀请功能未开启"},whoCanAccess:{all:{title:"所有人可访问"},owner:{title:"只有我自己可访问"},invited:{title:"只有被邀请的人可以访问"}}},launcher:{provider:"云服务商",adminUrl:"Launcher 管理页面"},session:{blockAccess:"你已被禁止访问此节点"},launchBlocklet:{appInfo:"应用信息",appInfoDesc:"确认应用信息",author:"应用作者:{author}",setup:"设置应用",redirect:"跳转",alreadyRunning:"应用 {name} 已经运行在当前节点",alreadyInstalled:"应用 {name} 已经安装到当前节点,无需重复安装",alreadyExists:"该应用已经存在,跳转中...",launchSuccess:"{appName} 已经启动成功!",nextStep:"下一步",purchased:"已购买",purchase:"购买",agreeAll:"同意并继续",agreement:"许可协议",installing:" 正在节点 {serverName} 上安装 {appName},请稍等片刻",redirecting:"安装成功,现正在启动 {appName}",start:"启动中",launch:"安装应用到节点",installSuccess:"应用已经成功安装到节点 {serverName} 并启动",openInRegistry:"在应用商店中打开",subTitle:"准备在节点 {serverName} 上安装 {appName}",installingSubTitle:"正在安装 {appName}",access:"打开应用",viewApplication:"查看应用",newVersion:"新版本",newVersionDesc:"应用已经存在,但当前版本可更新",later:"稍后",upgradeNow:"现在更新",introduction:"简介",welcome:"欢迎来到应用启动向导",accept:"许可协议",license:"应用许可",next:"同意协议并继续",purchaseApp:"购买应用",setupAppDesc:"初始化你的应用",launched:"启动",confirmInstall:"确认安装",dialog:{title:"成为应用所有者",nftFreeDescription:"请提空间购买凭证并创建应用账户以继续",nftPaidDescription:"请提空间购买凭证、应用购买凭证、创建应用账户以继续",freeDescription:"请创建应用账户以继续",paidDescription:"请提供应用购买凭证、并创建应用账户以继续",confirm:"在 DID Wallet 上确认",success:"授权成功",authorizationTimeout:"授权超时"},waiting:{verifying:"验证应用元数据...",downloading:"下载应用包...",extracting:"提取应用包的数据...",downloadingComponent:"下载 {name}",extractingComponent:"提取 {name}",installing:"安装应用组件...",installed:"已安装",starting:"正在启动应用...",done:"您的应用正在启动..."},error:{loadMetaFailed:"获取应用信息出错",appMetaNotFound:"没有找到该应用的信息",downloadFailed:"下载应用失败,请重试",installFailed:"安装应用失败,请重试",startFailed:"启动应用失败,请重试",launchFailed:"启动应用失败,请重试",installedButStopped:"应用安装成功,但是无法启动,解决启动问题之后后可手动启动",installedButError:"应用已经安装,但是运行出错了",restoreFailed:"还原应用失败,请重试",resourceBlocklet:"此 Blocklet 无法直接启动,但你可以将其添加到现有的应用程序中。"},steps:{introduction:"简介",installApp:"安装应用",purchaseSpace:"选购空间",prepareSpace:"准备空间"},installRelatedComponents:"安装相关的 Blocklets",canNotInstall:"无法安装",dockerBlockletCantInstall:"无法安装 Blocklet,因为 Blocklet Server 未启用 Docker 或 Docker Network"},issuePassport:{title:"领取通行证",description:"使用以下方法接收由 {name} 颁发的通行证",dialog:{confirm:"在您的 DID Wallet 上确认",success:"通行证已成功添加到您的 DID Wallet ",loginWithPassport:"用此通行证连接",scan:"使用以下方法认领通行证",autoClose:"页面将在 {seconds} 秒后自动关闭",autoJump:"页面将在 {seconds} 秒后自动跳转"}},lostPassport:{title:"找回通行证",description:"{name} 所有者可使用下列方式找回通行证,成员请联系所有者重新颁发通行证",recoverDialog:{title:"找回通行证",scan:"使用以下方法找回通行证",confirm:"在您的 DID Wallet 上确认",success:"找回成功"},receiveDialog:{title:"领取通行证",scan:"使用以下方法领取通行证",confirm:"在您的 DID Wallet 上确认",success:"领取成功"},return:"取消找回操作,返回主页",recoverPassport:"找回通行证",receivePassport:"领取通行证"},invite:{message:"{name} 邀请你成为 {dapp} 的 {role}",success:"你已成功加入 {dapp}",receive:"领取通行证",validUntil:"过期时间:",viewPermission:"查看权限",emptyPermission:"没有权限",open:"打开",description:{step1:"下载并设置好您的 {wallet}",step2:"点击上面的按钮领取通行证",step3:"使用通行证登录 {dapp}"},transferNFTDialog:{title:"接受节点 {name}",scan:"连接节点启动器,以完成节点的接收。",confirm:"请在 DID Wallet 上确认",success:"连接成功,等待确认接收节点。"}},receive:{dialog:{title:"领取通行证",scan:"领取通行证后,您将可以使用此通行证来登录应用",confirm:"在您的 DID Wallet 上确认",success:"连接成功"}},navigation:{actionFailed:"操作失败",navigation:"导航",form:{title:"标题",titlePlaceholder:"请输入导航标题",titleTooLong:"标题最长为 {len}",description:"描述",descriptionPlaceholder:"请输入导航描述",descriptionTooLong:"描述最长为 {len}",icon:"图标",iconPlaceholder:"请输入导航图标",invalidIcon:"导航图标不存在",findMoreIcon:"找到更多图标",link:"链接",linkPlaceholder:"请输入导航链接",invalidLink:"链接格式不正确",component:"组件",componentPlaceholder:"请选择导航所属的组件",role:"角色",rolePlaceholder:"请选择导航可见的角色",locale:"语言",localePlaceholder:"请输入要添加的多语言标识符",localeExists:"{value} 已经存在",activeIcon:"激活图标",activeIconPlaceholder:"请输入导航活跃图标",activeColor:"激活颜色",activeColorPlaceholder:"请输入导航激活颜色",color:"颜色",colorPlaceholder:"请输入导航默认颜色"},action:{add:"增加导航",addSub:"增加子导航",edit:"编辑导航",hide:"隐藏导航",show:"显示导航",del:"删除导航",new:"新建",noAddSub:"未安装组件无法添加子导航",noEdit:"未安装组件的导航无法编辑",noDel:"内置的导航无法删除",reset:"重置",restConfirmTitle:"是否清空所有自定义导航?",restConfirmDesc:"清空后,导航会恢复到 Blocklet 原有默认的配置.",resetSuccessful:"重置成功"},access:"访问",members:"成员",passport:"通行证",analytics:"分析",dashboard:"仪表板",studio:"工作室",blockletService:"Blocklet服务"},storage:{spaces:{title:"DID Spaces",tips:"提示",label:"请输入 DID Spaces 服务地址",connected:{title:"已连接的 DID Spaces",tag:"已连接"},connectedWithName:"你已成功连接至 {name}",addedWithName:"你已成功添加 {name}",connects:"连接",reconnect:"重新连接",addressCannotEmpty:"地址不能为空",addressNotValid:"{url} 不是一个合法的地址",authorize:{title:"连接 {appName} 至 DID Spaces",scan:"使用以下方法允许应用 {appName} 连接到 DID Spaces",success:"连接成功"},provideNFT:{title:"请为 {appName} 出示 DID Spaces NFT",scan:"使用以下方法允许应用 {appName} 显示DID Space NFT",success:"连接成功"},backup:{title:"备份",records:"备份记录"},autoBackup:{title:"自动备份",enabled:"自动备份已开启",disabled:"自动备份已关闭"},autoCheckUpdate:{title:"自动检测新版本提醒",enabled:"自动检测新版本提醒已开启",disabled:"自动检测新版本提醒已关闭"},backupSuccessfully:"备份成功",restore:"还原",restoreSuccessfully:"还原成功",gateway:{select:"选择一个 DID Spaces",add:{title:"添加 DID Spaces",label:"输入 DID Spaces 的地址",failed:"添加 DID Spaces 失败",invalidUrl:"无效的 DID Spaces 网关地址",duplicate:"{name} 已连接到此 Blocklet"},delete:{title:"断开连接",succeeded:"成功断开连接 DID Space {name}",failed:"断开连接失败",failedForSelected:"无法断开连接所选的 DID Space",descForBackup:`断开连接后,您将无法再将此 Blocklet 的数据备份到此 DID Space。您确定要断开连接吗?
|
|
3
|
-
断开连接后,您可以重新连接到 {name} 以恢复备份操作。`,descForStorage:`断开连接后,您将无法再将此 Blocklet 的数据备份到此 DID Space。您确定要断开连接吗?
|
|
4
|
-
断开连接后,您可以重新连接到 {name} 以恢复备份操作。`},connect:{title:"连接到 DID Spaces",add:"立即连接 DID Spaces",addTips:"你还没有连接到任何 DID Space",switch:"切换 DID Spaces",switchTips:"你已连接到 {name}",connected:"已连接"},switch:{failedForMismatchSpace:"请连接到正确的 DID 空间 {name}"},connectTo:"连接至 DID Spaces",title:"门户"},strategy:{title:"备份策略",autoBackup:"自动备份",backupNow:"立即备份",viewBackupFiles:"查看备份文件"},progress:{title:"备份进度"},record:{title:"备份记录",emptyData:"暂无记录"},notYet:"你还没有正在进行中的备份...",connect:{now:"立即连接",title:"使用 DID Wallet 连接",provider:"提供您的 DID Spaces 开始备份",providerForStorage:"提供您的 DID Space 进行数据存储",useWallet:"使用 DID Wallet 连接",useWalletReconnect:"使用 DID Wallet 重新连接",useSpaceGateway:"使用 DID Spaces 网关连接",useSpaceGatewayReconnect:"使用 DID Spaces 网关重新连接",switchToSpace:"切换至 DID Space",abortBlockletBackup:"停止备份",switchToSpaceSucceeded:"已切换到 DID Space {name}",succeeded:"你已成功连接至 DID Spaces",disconnect:"断开连接"},disconnected:{tag:"连接已断开",reconnectNow:"立即重连"}},appLevel:{title:"应用级存储",description:"应用生成的所有数据都存储在这个 DID Space 上"}},log:{lastDays:{1:"最近 1 天",7:"最近 1 周"}},oauth:{commonSettings:"通用设置",save:"保存",saveSuccess:"保存成功",saveFailed:"保存失败",issued:"颁发",thirdPartyLogin:"第三方登录",alreadyBindOAuth:"已绑定第三方登录",alreadyBindWallet:"已绑定 DID Wallet",auth0:{enable:"是否开启 Auth0 登录",domain:"Domain",domainDescription:"请输入 Auth0 的 Domain",clientId:"Client ID",clientIdDescription:"请输入 Auth0 的 Client ID",clientSecret:"Client Secret",clientSecretDescription:"需要 Auth0 OAuth 应用程序 Client Secret"},comingSoon:"更多登录方式正在建设中",moreLogin:"更多登录方式",federated:"统一登录",runTest:"测试",github:{enable:"启用 Github 登录",clientId:"Client ID",clientIdDescription:"Github OAuth 应用程序 Client ID 是必需的",clientSecret:"Client Secret",clientSecretDescription:"Github OAuth 应用的 Client Secret 信息是必需的"},google:{enable:"启用谷歌登录",clientId:"Client ID",clientIdDescription:"需要 Google OAuth 应用的 Client ID",clientSecret:"Client Secret",clientSecretDescription:"Google OAuth 应用的 Client Secret 是必需的"},apple:{enable:"启用 Apple 登录",teamId:"Team ID",teamIdDescription:"需要 Apple OAuth 应用程序 Team ID",serviceId:"服务编号",serviceIdDescription:"需要 Apple OAuth 应用 Service ID",keyId:"Key ID",keyIdDescription:"需要 Apple OAuth 应用程序 Key ID",authKey:"Auth Key",authKeyDescription:"需要苹果OAuth应用程序的 Auth Key",bundleId:"Bundle ID",bundleIdDescription:"Apple OAuth 应用程序 Bundle ID 为必填"},oauth:"第三方登录"},expiration:{mobile:{tips:{success:"{validity}",warning:"{validity}",error:"订阅已过期"},loadFailed:"请重试!"},desktop:{tips:{success:"订阅将在{validity}后到期",warning:"订阅将在{validity}后到期",error:"订阅已过期"},loadFailed:"加载订阅信息失败,请重试!",loading:"加载订阅信息...",nextInvoice:"下次账单:{date}"}},analytics:{trend:"趋势",detail:"探究",traffic:{totalRequests:"总请求数",validRequests:"成功请求数",failedRequests:"失败请求数",uniqueVisitors:"访客数量",uniqueFiles:"网址数量",uniqueReferrers:"来源数量",uniqueNotFound:"404 数量",uniqueStaticFiles:"静态资源数量",logSize:"日志大小",bandwidth:"带宽消耗"},runtime:"运行时"},federated:{inviteJoinFederatedLogin:"邀请加入统一登录",inviteJoinFederatedLoginDescription:"复制以下地址到需要加入的应用中填入,申请加入统一登录",federatedLogin:"统一登录",joinFederatedLogin:"加入统一登录",joinFederatedLoginDescription:"请输入 Master Blocklet 提供的统一登录地址以加入统一登录",quitFederatedLogin:"退出统一登录",quitFederatedLoginDescription:"退出统一登录后,你仍可以使用普通的登录方式来登录",federatedJoinAppUrl:"统一登录地址",federatedJoinAppUrlRequired:"请输入统一登录地址",failedToGetFederatedLoginAppUrl:"获取统一登录地址失败",federatedJoinAppUrlInvalid:"统一登录地址不可用",siteDetail:"站点详情",approveToJoinLogin:"审核加入统一登录",approve:"恢复登录",revoke:"禁止登录",enableFederatedLogin:"启用统一登录",disableFederatedLogin:"禁用统一登录",enableFederatedLoginDescription:"启用统一登录后,该站点将自动登录",disableFederatedLoginDescription:"禁用统一登录后,该站点将无法自动登录",enableFederatedAutoLogin:"开启自动登录",enableFederatedAutoLoginDescription:"开启自动登录后,如果当前存在统一登录的状态,则该站点将自动登录统一登录的身份",disableFederatedAutoLogin:"关闭自动登录",disableFederatedAutoLoginDescription:"关闭自动登录后,该站点将不会自动登录统一登录的用户信息,您仍可选择手动点击登录统一登录的身份",info:{appId:"应用 DID",appPid:"永久 DID",migratedFrom:"曾用 DID",appName:"应用名称",appDescription:"应用描述",appUrl:"应用地址",appLogo:"应用图标",did:"应用 DID",serverId:"Blocklet Server ID",serverVersion:"Blocklet Server 版本",version:"应用版本",appliedAt:"申请时间",status:"状态"},status:{pending:"待审核",approved:"已通过",rejected:"已拒绝",revoked:"已撤销"},disbandFederatedLogin:"解散统一登录",disbandFederatedLoginDescription:"解散统一登录后,将自动让所有成员站点自动退出统一登录站点群",syncConfig:"同步站点群配置",quitMember:"移除",quitMemberDescription:"从站点组中移除指定成员",removeFederatedLogin:"移除成员",removeFederatedLoginDescription:"从站点组中移除指定成员后,成员只能使用普通登录。"},optionsOrder:{1:"选择一",2:"选择二"},securityRule:{title:"安全规则",sortByDescription:"按匹配优先级排序",add:"添加安全规则",edit:"编辑安全规则",view:"查看安全规则",form:{precede:"执行顺序",pathPattern:"路由匹配规则",pathPatternPlaceholder:"请输入路由匹配规则",pathPatternErrorText:"路由匹配规则无效",accessPolicyOrResponseHeaderPolicyRequired:"至少选择访问策略或响应头策略之一",accessPolicy:"访问策略",accessPolicyPlaceholder:"请选择访问策略",accessPolicyHelperText:"请选择访问策略",responseHeaderPolicy:"响应头策略",responseHeaderPolicyPlaceholder:"请选择响应头策略",responseHeaderPolicyHelperText:"请选择响应头策略",remark:"备注",remarkPlaceholder:"请输入备注",component:"组件",componentPlaceholder:"请选择组件"},delete:{title:"删除安全规则?",description:"删除安全规则后,规则将不再生效"}},responseHeaderPolicy:{title:"响应头策略",add:"添加响应头策略",edit:"编辑响应头策略",view:"查看响应头策略",form:{name:"姓名",namePlaceholder:"请输入你的名字",description:"描述",descriptionPlaceholder:"请输入描述",originOverride:"允许覆盖",originOverrideHelperText:"是否允许应用程序中的逻辑覆盖该响应头",cors:{origin:"Origin",originPlaceholder:"支持下列域名格式:http://www.example.com, http://*.example.com, http://www.example.com:8080, (通配符不推荐使用)",originHelperText:"域名以 http:// 或 https:// 开头,每行一个,每行一个通配符 *",methods:"Methods",allowedHeaders:"Allowed Headers",allowedHeadersPlaceholder:"建议填写 *,支持多行输入",allowedHeadersHelperText:"告诉服务器在发送 OPTIONS 请求时,可以在下一请求中使用哪些自定义的 HTTP 请求头,例如: x-blocklet-version",exposedHeaders:"Exposed Headers",exposedHeadersPlaceholder:"多行输入支持",exposedHeadersHelperText:"配置 Expose-Headers,例如: X-Content-Range",maxAge:"Max-Age (秒)",maxAgeHelperText:"通过 OPTIONS 请求获得的结果的有效期,必须是正整数",optionsSuccessStatus:"OPTIONS 成功状态码",preflightContinue:"预检是否继续传递给下一中间件",credentials:"是否携带凭证",smartMode:"智能模式",smartModeHelperText:"自动添加当前应用程序的所有域名以及统一登录网站组的所有域名"}},delete:{title:"删除响应标题政策?",description:"删除响应头策略后,该策略将不再生效"}},accessPolicy:{title:"访问策略",add:"添加访问策略",edit:"编辑访问权限策略",view:"查看访问策略",form:{name:"名字",namePlaceholder:"请输入姓名",description:"描述",descriptionPlaceholder:"请输入描述",roles:"访问角色",accessType:"访问类型"},delete:{title:"删除访问策略?",description:"删除访问策略后,该策略将不再生效"}},pagination:{next:"下一页",previous:"上一页",rowsPerPage:"每页行数:",displayRows:"的",jumpToPage:"跳转到页面:"},webhookEndpoint:{createWebhook:"创建 Webhook",createWebhookTitle:"创建 Webhook",selectAllEvents:"选择所有事件",selectAllEventsTooltip:"选择所有可用事件",selectedEventsCount:"{count} 个事件已选择",selectedCount:"{count} 个已选择",eventsCount:"{count} 个事件",saveWebhook:"创建 Webhook",noAvailableEvents:"没有可用的事件",loadingEvents:"加载事件...",loadingError:"加载事件失败:{message}",title:"Webhooks",noWebhooksAdded:"未添加任何 Webhook",validation:{urlRequired:"Webhook URL 是必填的",urlInvalid:"请输入有效的 URL",descriptionRequired:"Webhook 描述是必填的",eventRequired:"请选择至少一个事件"},hosted:"托管端点",add:"创建 Webhook",addTip:"设置你的 webhook 端点以接收实时事件",listen:"收听",version:"API 版本",attempts:"Webhook 事件",url:{label:"URL",description:"Webhook URL"},description:{label:"描述",description:"此端點用途的選填描述"},events:{label:"选择要收听的事件",description:"你好, {name}."},disabled:"已禁用",enabled:"已启用",disable:"禁用",enable:"启用",editWebhookTitle:"更新 Webhook",updateWebhook:"更新 Webhook",waitingForEvents:"等待接收事件...",loadingMore:"正在加载...",loadMore:"加载更多",response:"回复",request:"请求",eventData:"事件数据",deleteWebhook:{title:"删除 Webhook?",description:"删除 Webhook 后,Webhook 将不再接收事件"},success:"成功"}};export{e as default};
|