@maudecode/kanvil 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. package/apps/server/.env.example +2 -0
  2. package/apps/server/dist/{auth-JcS53IcO.mjs → auth-DAqfvUJm.mjs} +120 -4773
  3. package/apps/server/dist/client.mjs +884 -0
  4. package/apps/server/dist/{config-D3cAABi7.mjs → config-BFzcAs8u.mjs} +3 -132
  5. package/apps/server/dist/index.mjs +6 -4
  6. package/apps/server/dist/instance-CCeXRJ6m.mjs +133 -0
  7. package/apps/server/dist/migrate.mjs +1 -1
  8. package/apps/server/dist/recover.mjs +3 -2
  9. package/apps/server/dist/src-tQ82UI8k.mjs +4818 -0
  10. package/apps/server/drizzle/0038_time_entries.sql +19 -0
  11. package/apps/server/drizzle/meta/0038_snapshot.json +6998 -0
  12. package/apps/server/drizzle/meta/_journal.json +7 -0
  13. package/apps/web/dist/assets/{CompositeItem-BbuEp99X.js → CompositeItem-DgnfVvrF.js} +1 -1
  14. package/apps/web/dist/assets/{Trans-DJGH63s1.js → Trans-f2VYVS9z.js} +1 -1
  15. package/apps/web/dist/assets/admin-settings-DBZL4siY.js +1 -0
  16. package/apps/web/dist/assets/{archive-restore-B6_SsOIP.js → archive-restore-CGuLxoHC.js} +1 -1
  17. package/apps/web/dist/assets/az-AZ-DesqXNg5.js +1 -0
  18. package/apps/web/dist/assets/{az-DqY__MpS.js → az-BE5iqNIE.js} +1 -1
  19. package/apps/web/dist/assets/{corner-left-up-DA7MG5uX.js → corner-left-up-BCro--Gl.js} +1 -1
  20. package/apps/web/dist/assets/de-DE-BIGY9SNm.js +1 -0
  21. package/apps/web/dist/assets/{de-UHreLwyV.js → de-DLGjUGf_.js} +1 -1
  22. package/apps/web/dist/assets/{default-D5TdIZQS.js → default-BgvtI7HK.js} +1 -1
  23. package/apps/web/dist/assets/delivery-settings-CZOtb4X8.js +1 -0
  24. package/apps/web/dist/assets/{el-EJnrsyVr.js → el-CG6Xy42v.js} +1 -1
  25. package/apps/web/dist/assets/el-GR-D2TjImt0.js +1 -0
  26. package/apps/web/dist/assets/{ellipsis-D6154JKs.js → ellipsis-ZJM26JNS.js} +1 -1
  27. package/apps/web/dist/assets/{es-D2ScuV-5.js → es-Bbj5WuMM.js} +1 -1
  28. package/apps/web/dist/assets/es-ES-C_fRqLGU.js +1 -0
  29. package/apps/web/dist/assets/{forms-BcD6Wwyv.js → forms-C3pNy-qY.js} +1 -1
  30. package/apps/web/dist/assets/{fr-C_VpS8u6.js → fr-CjuIKc1o.js} +1 -1
  31. package/apps/web/dist/assets/fr-FR-_tnQsn4j.js +1 -0
  32. package/apps/web/dist/assets/{hi-CW4rdp_m.js → hi-BVVrZ-zZ.js} +1 -1
  33. package/apps/web/dist/assets/hi-IN-CcmFsZYy.js +1 -0
  34. package/apps/web/dist/assets/{highlight-CMydIf9M.js → highlight-CKyEM4jx.js} +1 -1
  35. package/apps/web/dist/assets/{id-CvL3yBVr.js → id-BhNWOQnp.js} +1 -1
  36. package/apps/web/dist/assets/id-ID-C59tC61D.js +1 -0
  37. package/apps/web/dist/assets/index-BIuqxnJn.js +17 -0
  38. package/apps/web/dist/assets/{invitations-BmpelTJu.js → invitations-D5unaga2.js} +1 -1
  39. package/apps/web/dist/assets/{it-DOLotXOj.js → it-Cav3_-xd.js} +1 -1
  40. package/apps/web/dist/assets/it-IT-BAP5O3gK.js +1 -0
  41. package/apps/web/dist/assets/{item-Cq_ZbivE.js → item-Cj8xpMLk.js} +1 -1
  42. package/apps/web/dist/assets/{ja-B1iJt9qB.js → ja-DTmZE0Qe.js} +1 -1
  43. package/apps/web/dist/assets/ja-JP-vQa7mEdh.js +1 -0
  44. package/apps/web/dist/assets/{ko-fmUq1-8W.js → ko-BuYCMOUj.js} +1 -1
  45. package/apps/web/dist/assets/ko-KR-CXlpmX0-.js +1 -0
  46. package/apps/web/dist/assets/{label-settings-B3LsJxhk.js → label-settings-B89Ehf78.js} +1 -1
  47. package/apps/web/dist/assets/{markdown-blocks-Bw26pRKB.js → markdown-blocks-DSEA68s5.js} +1 -1
  48. package/apps/web/dist/assets/{member-directory-CHKUw0u4.js → member-directory-48yD01yN.js} +1 -1
  49. package/apps/web/dist/assets/{mk-LWVrR-T-.js → mk-BZ2Rg2sU.js} +1 -1
  50. package/apps/web/dist/assets/mk-MK-BU5BLpXM.js +1 -0
  51. package/apps/web/dist/assets/{nl-ro6hbqo5.js → nl-BtnPzRih.js} +1 -1
  52. package/apps/web/dist/assets/nl-NL-2aSpdZkg.js +1 -0
  53. package/apps/web/dist/assets/{pl-Bx_fYLKY.js → pl-Beg8hEdK.js} +1 -1
  54. package/apps/web/dist/assets/pl-PL-C5Wvnv7f.js +1 -0
  55. package/apps/web/dist/assets/project-lifecycle-CIAMJ-SX.js +1 -0
  56. package/apps/web/dist/assets/project-settings-C7lolDSl.js +1 -0
  57. package/apps/web/dist/assets/{pt-BR-D-a7F5zJ.js → pt-BR-B4VZ35N_.js} +1 -1
  58. package/apps/web/dist/assets/pt-BR-CVvI-ZB7.js +1 -0
  59. package/apps/web/dist/assets/public-project-DvvfaUd2.js +1 -0
  60. package/apps/web/dist/assets/{rotate-ccw-Bm0ESNH_.js → rotate-ccw-GjVJPDML.js} +1 -1
  61. package/apps/web/dist/assets/{ru-D-WIMI5_.js → ru-DjVJVHzv.js} +1 -1
  62. package/apps/web/dist/assets/ru-RU-C7UUdGIh.js +1 -0
  63. package/apps/web/dist/assets/search-ZaQmVnj1.js +85 -0
  64. package/apps/web/dist/assets/{send-D9TETK3s.js → send-Dr9bXHhf.js} +1 -1
  65. package/apps/web/dist/assets/settings-DXvrVvyS.js +1 -0
  66. package/apps/web/dist/assets/{sliders-horizontal-CiZZFL1o.js → sliders-horizontal-C1t_zA7D.js} +1 -1
  67. package/apps/web/dist/assets/{switch-B_u8n1o6.js → switch-D-WTDajm.js} +1 -1
  68. package/apps/web/dist/assets/{table-DcCLC7fi.js → table-BaRMFP84.js} +1 -1
  69. package/apps/web/dist/assets/ticket-detail-CFJI4qoK.js +2 -0
  70. package/apps/web/dist/assets/ticket-editor-DL3nHG_q.js +2 -0
  71. package/apps/web/dist/assets/ticket-list-CDkweYGS.js +5 -0
  72. package/apps/web/dist/assets/ticket-list-controls-CmTgFQQ-.js +1 -0
  73. package/apps/web/dist/assets/{tr-BZEJyY-F.js → tr-Ckc4TA71.js} +1 -1
  74. package/apps/web/dist/assets/tr-TR-VVsL3uMp.js +1 -0
  75. package/apps/web/dist/assets/{uk-f8X5q5C_.js → uk-B4ZvJ8xG.js} +1 -1
  76. package/apps/web/dist/assets/uk-UA-DRpCbOps.js +1 -0
  77. package/apps/web/dist/assets/{upload-CGpna3R2.js → upload-BwGa8shS.js} +1 -1
  78. package/apps/web/dist/assets/{useQueries-BihXYrAP.js → useQueries-sQEHjB0a.js} +1 -1
  79. package/apps/web/dist/assets/{vi-CSGaJFlR.js → vi-Dq2krfY8.js} +1 -1
  80. package/apps/web/dist/assets/vi-VN-C0YFqq9j.js +1 -0
  81. package/apps/web/dist/assets/{visual-editor-B6HiiLMg.js → visual-editor-CBhwqTDu.js} +1 -1
  82. package/apps/web/dist/assets/workspace-settings-DgLyieJN.js +1 -0
  83. package/apps/web/dist/assets/{zh-CN-BdRcimyZ.js → zh-CN-B7Rxc3Mp.js} +1 -1
  84. package/apps/web/dist/assets/zh-CN-pcgTdR8c.js +1 -0
  85. package/apps/web/dist/assets/zh-TW-DymSXkFg.js +1 -0
  86. package/apps/web/dist/assets/{zh-TW-BH1L9tOt.js → zh-TW-awiwHjeM.js} +1 -1
  87. package/apps/web/dist/index.html +7 -7
  88. package/bin/kanvil.mjs +3 -1
  89. package/compose.yml +1 -0
  90. package/docs/api.md +28 -2
  91. package/docs/cli.md +74 -0
  92. package/docs/plan.md +6 -1
  93. package/docs/self-hosting.md +3 -1
  94. package/docs/workspaces.md +1 -1
  95. package/package.json +1 -1
  96. package/apps/web/dist/assets/admin-settings-CJG9PMKR.js +0 -1
  97. package/apps/web/dist/assets/az-AZ-BtrlbgjS.js +0 -1
  98. package/apps/web/dist/assets/de-DE-Bu_Ko2QA.js +0 -1
  99. package/apps/web/dist/assets/delivery-settings-BE5MW8U0.js +0 -1
  100. package/apps/web/dist/assets/el-GR-CpKEps47.js +0 -1
  101. package/apps/web/dist/assets/es-ES-DVkfi7H-.js +0 -1
  102. package/apps/web/dist/assets/fr-FR-DkHaEHqi.js +0 -1
  103. package/apps/web/dist/assets/hi-IN-CbUDNSTK.js +0 -1
  104. package/apps/web/dist/assets/id-ID-DLTkxt2j.js +0 -1
  105. package/apps/web/dist/assets/index-DoqlyejP.js +0 -17
  106. package/apps/web/dist/assets/it-IT-CIzq0YwC.js +0 -1
  107. package/apps/web/dist/assets/ja-JP-CIE4-D-v.js +0 -1
  108. package/apps/web/dist/assets/ko-KR-DYP5Zae6.js +0 -1
  109. package/apps/web/dist/assets/mk-MK-CpOo5Bd8.js +0 -1
  110. package/apps/web/dist/assets/nl-NL-Mu8G8RON.js +0 -1
  111. package/apps/web/dist/assets/pl-PL-DGuxe2Aq.js +0 -1
  112. package/apps/web/dist/assets/project-lifecycle-Ba7iRF3u.js +0 -1
  113. package/apps/web/dist/assets/project-settings-CtOWgEam.js +0 -1
  114. package/apps/web/dist/assets/pt-BR-DwkMPgq1.js +0 -1
  115. package/apps/web/dist/assets/public-project-CHRjhFIn.js +0 -1
  116. package/apps/web/dist/assets/ru-RU-DrXnqZbV.js +0 -1
  117. package/apps/web/dist/assets/search-D94SZwrC.js +0 -85
  118. package/apps/web/dist/assets/settings-Dd9EVxua.js +0 -1
  119. package/apps/web/dist/assets/ticket-detail-C9egaVSf.js +0 -2
  120. package/apps/web/dist/assets/ticket-editor-UlSZgpWF.js +0 -2
  121. package/apps/web/dist/assets/ticket-list-controls-BidzkMOD.js +0 -1
  122. package/apps/web/dist/assets/ticket-list-vNBO8mkk.js +0 -5
  123. package/apps/web/dist/assets/tr-TR-B92YeFW5.js +0 -1
  124. package/apps/web/dist/assets/uk-UA-DmcDs-MU.js +0 -1
  125. package/apps/web/dist/assets/vi-VN-DM5JYNuP.js +0 -1
  126. package/apps/web/dist/assets/workspace-settings-CSvVqaL6.js +0 -1
  127. package/apps/web/dist/assets/zh-CN-CiUOkQXe.js +0 -1
  128. package/apps/web/dist/assets/zh-TW-Co4UBSfi.js +0 -1
@@ -1 +0,0 @@
1
- var e={common:{status:{backlog:`Tồn đọng`,todo:`Cần làm`,in_progress:`Đang làm`,in_review:`Đang duyệt`,done:`Hoàn thành`,cancelled:`Đã hủy`},priority:{urgent:`Khẩn cấp`,high:`Cao`,medium:`Trung bình`,low:`Thấp`,none:`Không có mức ưu tiên`},kind:{feature:`Tính năng`,bug:`Lỗi`,chore:`Bảo trì`,research:`Nghiên cứu`,documentation:`Tài liệu`},difficulty:{low:`Thấp`,med:`Trung bình`,high:`Cao`,none:`Không có độ khó`},role:{reader:`Chỉ đọc`,writer:`Có thể sửa`,admin:`Quản trị viên`},permission:{ticket:{write:{label:`Sửa phiếu`,description:`Tạo, sửa, di chuyển, nhận và bình luận phiếu; tạo dự án`},delete:{label:`Xóa phiếu`,description:`Xóa vĩnh viễn phiếu`}},project:{manage:{label:`Quản lý dự án`,description:`Thông tin dự án, quy trình, nhãn, trường, tích hợp và vòng đời`}},member:{manage:{label:`Quản lý thành viên`,description:`Thêm, thay đổi và xóa thành viên`}},invitation:{manage:{label:`Quản lý lời mời`,description:`Mời người khác qua email`}},sharing:{manage:{label:`Quản lý chia sẻ`,description:`Liên kết công khai chỉ đọc và nguồn lịch`}},workspace:{manage:{label:`Quản lý không gian làm việc`,description:`Thông tin không gian làm việc, nhãn dùng chung và vai trò`}}},customFieldType:{text:`Văn bản`,number:`Số`,date:`Ngày`,checkbox:`Hộp kiểm`,select:`Chọn một`,multiselect:`Chọn nhiều`},customField:{removedOption:`Tùy chọn đã xóa`,checked:`Có`},filterField:{status:`Trạng thái`,priority:`Mức ưu tiên`,kind:`Loại`,difficulty:`Độ khó`,label:`Nhãn`,assigneeId:`Người được giao`,customField:`Trường`},sort:{priority:`Mức ưu tiên`,updated:`Cập nhật gần đây`,created:`Tạo gần đây`,title:`Tiêu đề`,labels:`Nhãn`,due:`Hạn chót`,start:`Ngày bắt đầu`,number:`Số phiếu`,status:`Trạng thái`,difficulty:`Độ khó`,kind:`Loại`,assignee:`Người được giao`,manual:`Thủ công`},due:{overdue:`Quá hạn`,today:`Đến hạn hôm nay`,week:`Đến hạn tuần này`,scheduled:`Có hạn chót`,none:`Không có hạn chót`},relation:{blocks:{outgoing:`Chặn`,incoming:`Bị chặn bởi`},related:{outgoing:`Liên quan đến`,incoming:`Liên quan đến`},duplicate:{outgoing:`Trùng với`,incoming:`Bị trùng bởi`},causes:{outgoing:`Gây ra`,incoming:`Bị gây ra bởi`},clones:{outgoing:`Sao chép`,incoming:`Được sao chép bởi`},implements:{outgoing:`Triển khai`,incoming:`Được triển khai bởi`},reviews:{outgoing:`Duyệt`,incoming:`Được duyệt bởi`}},remoteKind:{branch:`Nhánh`,pull_request:`Pull request`,issue:`Issue`},notificationCategory:{assignment:`Giao việc`,status:`Thay đổi trạng thái`,comment:`Bình luận`,mention:`Lượt nhắc`,update:`Cập nhật khác`,due_soon:`Sắp đến hạn`,overdue:`Quá hạn`},destinationEvent:{created:`Phiếu mới`},deliveryKind:{email:`Email`,webhook:`Webhook`},change:{pull_request:{name:`Pull request`,opened:`Đã mở pull request`,draft:`Pull request nháp`,merged:`Đã hợp nhất pull request`,closed:`Đã đóng pull request chưa hợp nhất`},merge_request:{name:`Merge request`,opened:`Đã mở merge request`,draft:`Merge request nháp`,merged:`Đã hợp nhất merge request`,closed:`Đã đóng merge request chưa hợp nhất`},branchCreated:`Đã tạo nhánh`},issueLinkState:{active:`Đang đồng bộ`,paused:`Tạm dừng`,review:`Cần xem xét`,creating:`Đang tạo issue`,unknown:`Chưa xác nhận việc tạo`},importStatus:{previewed:`Sẵn sàng nhập`,running:`Đang nhập`,completed:`Đã nhập`,failed:`Thất bại`,cancelled:`Đã hủy`},importProvider:{linear:{project:`Nhóm`,setup:`Tạo khóa API cá nhân trong Settings › Security & access của Linear; quyền đọc là đủ.`},jira:{project:`Dự án`,setup:`Jira Cloud đăng nhập bằng email tài khoản và token API từ id.atlassian.com; Data Center và Server dùng token truy cập cá nhân. Quyền duyệt dự án là đủ.`},trello:{project:`Bảng`,setup:`Dùng khóa API của một Power-Up bạn quản trị tại trello.com/power-ups/admin và token được tạo cho nó; quyền đọc là đủ.`},plane:{project:`Dự án`,setup:`Tạo token truy cập cá nhân trong Profile settings › Personal access tokens của Plane. Địa chỉ API của Plane Cloud là https://api.plane.so; mã URL không gian làm việc là phần đầu tiên trong địa chỉ web của nó.`},planka:{project:`Bảng`,setup:`Đăng nhập bằng tài khoản PLANKA có thể mở bảng; phiên do Kanvil mở sẽ kết thúc khi đọc xong. Quản trị viên PLANKA 2 có thể cấp khóa API thay thế.`},kaneo:{project:`Dự án`,setup:`Tạo khóa API trong Settings › Account › Developer của Kaneo.`}},plankaSignIn:{password:`Tên người dùng và mật khẩu`,api_key:`Khóa API`},jiraEdition:{cloud:`Cloud`,data_center:`Data Center hoặc Server`},event:{label:{created:`Đã tạo nhãn`,updated:`Đã cập nhật nhãn`,deleted:`Đã xóa nhãn`},workflow:{created:`Đã thêm trạng thái quy trình`,updated:`Đã thay đổi trạng thái quy trình`,deleted:`Đã xóa trạng thái quy trình`},custom_field:{created:`Đã tạo trường`,updated:`Đã cập nhật trường`,deleted:`Đã xóa trường`},ticket:{created:`Đã tạo phiếu`,updated:`Đã cập nhật phiếu`,deleted:`Đã xóa phiếu`,moved:`Đã chuyển từ dự án khác`,moved_away:`Đã chuyển sang dự án khác`,due_soon:`Sắp đến hạn`,overdue:`Quá hạn`,claimed:`Đã nhận việc`},claim:{renewed:`Đã gia hạn nhận việc`,released:`Đã trả việc`,recovered:`Đã thu hồi việc đã nhận`},comment:{created:`Đã thêm bình luận`,updated:`Đã sửa bình luận`,deleted:`Đã xóa bình luận`},relation:{added:`Đã thêm quan hệ`,removed:`Đã xóa quan hệ`},attachment:{created:`Đã đính kèm tệp`,deleted:`Đã xóa tệp`},evidence:{added:`Đã đính kèm bằng chứng`},resource:{added:`Đã thêm liên kết`,updated:`Đã sửa liên kết`,removed:`Đã xóa liên kết`},calendar_feed:{created:`Đã tạo nguồn lịch`,revoked:`Đã thu hồi nguồn lịch`},project:{created:`Đã tạo dự án`,updated:`Đã cập nhật dự án`,archived:`Đã lưu trữ dự án`,restored:`Đã khôi phục dự án`,transferred:`Đã chuyển dự án sang không gian làm việc khác`,deleted:`Đã xóa dự án`},membership:{updated:`Đã thay đổi quyền truy cập dự án`},workspace:{owner_changed:`Đã đổi chủ sở hữu không gian làm việc`},role:{created:`Đã tạo vai trò`,updated:`Đã thay đổi vai trò`,deleted:`Đã xóa vai trò`},invitation:{updated:`Đã thay đổi lời mời`},destination:{created:`Đã thêm đích đến`,updated:`Đã thay đổi đích đến`,deleted:`Đã xóa đích đến`},repository:{connected:`Đã kết nối kho mã`,updated:`Đã thay đổi kết nối kho mã`,disconnected:`Đã ngắt kết nối kho mã`,received:`Đã nhận webhook của kho mã`},issue_link:{updated:`Đã thay đổi đồng bộ issue`}},error:{network:`Không thể kết nối tới Kanvil. Kiểm tra kết nối và thử lại.`,fallback:`Không thể hoàn tất yêu cầu`,input:`Dữ liệu nhập`,code:{unauthorized:`Đăng nhập để tiếp tục.`,session_required:`Dùng tài khoản đã đăng nhập cho thao tác này.`,account_disabled:`Tài khoản này đã bị vô hiệu hóa.`,forbidden:`Bạn không có quyền thực hiện thao tác này.`,insufficient_scope:`Thông tin xác thực này không cho phép thao tác này.`,workspace_scope_required:`Dùng tài khoản có quyền truy cập không gian làm việc cho thao tác này.`,invalid_origin:`Nguồn gốc này không được phép.`,not_found:`Không tìm thấy mục này hoặc bạn không có quyền xem.`,version_conflict:`Mục này đã thay đổi kể từ khi tải. Tải lại và thử lại.`,claim_conflict:`Một tiến trình khác đang giữ phiếu này.`,idempotency_conflict:`Yêu cầu này đã được dùng cho một thay đổi khác.`,project_archived:`Khôi phục dự án đã lưu trữ trước khi thay đổi.`,rate_limited:`Quá nhiều thay đổi trong thời gian ngắn. Hãy chờ rồi thử lại.`,snapshot_required:`Luồng trực tiếp bị chậm. Tải lại để tiếp tục.`,request_failed:`Không thể hoàn tất yêu cầu`}},action:{add:`Thêm`,apply:`Áp dụng`,back:`Quay lại`,cancel:`Hủy`,clear:`Xóa`,close:`Đóng`,confirm:`Xác nhận`,continue:`Tiếp tục`,copy:`Sao chép`,create:`Tạo`,delete:`Xóa`,done:`Xong`,edit:`Sửa`,open:`Mở`,remove:`Gỡ bỏ`,rename:`Đổi tên`,reset:`Đặt lại`,retry:`Thử lại`,save:`Lưu`,search:`Tìm kiếm`},state:{copied:`Đã sao chép`,loading:`Đang tải…`,saved:`Đã lưu`,saving:`Đang lưu…`,none:`Không có`,unassigned:`Chưa giao`},evidenceKind:{pull_request:`Pull request`,test:`Kiểm thử`,review:`Duyệt`,deployment:`Triển khai`,device:`Thiết bị`,other:`Khác`},evidenceOutcome:{reported:`Đã báo cáo`,pending:`Đang chờ`,passed:`Đạt`,failed:`Không đạt`},readinessReason:{project_archived:`Dự án đã được lưu trữ`,not_open:`Phiếu phải ở trạng thái Cần làm và chưa lưu trữ`,not_enabled:`Chưa bật làm việc cho tác tử`,missing_description:`Thêm mô tả`,missing_acceptance_criteria:`Thêm tiêu chí chấp nhận`,missing_difficulty:`Chọn độ khó`,duplicate:`Phiếu này được đánh dấu là trùng lặp`,claim_recovery_required:`Xác nhận tiến trình trước đã dừng rồi mới thu hồi quyền sở hữu`,claimed:`Đã được {{worker}} nhận`,dependency:`{{key}} chưa hoàn thành`},person:{deleted:`Tài khoản đã xóa`,former:`Cựu thành viên`},signIn:{codeTitle:`Đăng nhập bằng mã`,resetTitle:`Đặt lại mật khẩu`,codeSent:`Nếu {{email}} có tài khoản, mã đang được gửi đến. Mã hết hạn sau 10 phút.`,code:`Mã`,newPassword:`Mật khẩu mới`,sendCode:`Gửi mã qua email`,back:`Quay lại đăng nhập`,resend:`Gửi lại mã`,resent:`Đã gửi lại mã`,emailCode:`Gửi mã đăng nhập qua email`,forgot:`Quên mật khẩu?`,resetDone:`Đã đặt lại mật khẩu. Đăng nhập bằng mật khẩu mới.`,resetDoneTitle:`Đã đặt lại mật khẩu`,resetDoneBody:`Đăng nhập bằng mật khẩu mới.`,invalidCode:`Mã sai, đã được dùng hoặc đã hết hạn. Gửi lại để nhận mã hợp lệ.`,localPassword:`Mật khẩu cục bộ`},language:{label:`Ngôn ngữ`,system:`Mặc định hệ thống`}},shell:{ui:{showValue:`Hiện {{label, lowercase}}`,hideValue:`Ẩn {{label, lowercase}}`,previousPage:`Trang {{noun}} trước`,nextPage:`Trang {{noun}} tiếp theo`,pageRange:`{{from}}–{{to}} trên {{total}}`,priority:`Ưu tiên {{label, lowercase}}`,working:`Đang xử lý…`,searchPlaceholder:`Tìm kiếm…`,clearValue:`Xóa {{label, lowercase}}`,copyValue:`Sao chép {{label, lowercase}}`,copied:`Đã sao chép {{value}}`},documentTitle:`{{name}} · Kanvil`,openKanvil:`Mở Kanvil`,page:{home:`Trang chủ`,myWork:`Việc của tôi`,inbox:`Hộp thư đến`,search:`Tìm kiếm`,settings:`Cài đặt`,planning:`Kế hoạch`,ticket:`Phiếu`,tickets:`Phiếu`,projects:`Dự án`},connection:{restored:`Đã khôi phục kết nối`,lost:`Mất kết nối`,reconnecting:`Đang kết nối lại…`,reload:`Tải lại`,signIn:`Đăng nhập để kết nối lại`},app:{skipToContent:`Chuyển đến nội dung`,assigned:`Được giao cho bạn`,openCount_other:`{{count, number}} đang mở`,noAssigned:`Không có phiếu đang mở nào được giao cho bạn`,allInMyWork_other:`Tất cả {{count, number}} trong Việc của tôi`,openMyWork:`Mở Việc của tôi`,recentActivity:`Hoạt động gần đây`,noActivity:`Chưa có hoạt động`,searchProjects:`Tìm dự án`,projectCount_other:`{{count, number}} dự án`,noMatchingProjects:`Không có dự án phù hợp`,clearSearch:`Xóa tìm kiếm`,noWorkspaces:`Chưa có không gian làm việc`,noActiveProjects:`Không có dự án đang hoạt động`,noProjects:`Chưa có dự án`,archivedProjects:`Dự án đã lưu trữ`,archived:`Đã lưu trữ`,noOpenTickets:`Không có phiếu đang mở`,overdueCount_other:`{{count, number}} quá hạn`,percentDone:`Hoàn thành {{percent}}`,nextDue:`hạn tiếp theo <time/>`,projectSettingsFor:`Cài đặt dự án {{name}}`,pageNotFound:`Không tìm thấy trang`,openHome:`Mở trang chủ`,tryAgain:`Thử lại`,adminRequired:`Cần quyền quản trị viên hệ thống`,projectNotFound:`Không tìm thấy dự án`,noWorkspaceSelected:`Chưa chọn không gian làm việc`},auth:{signIn:`Đăng nhập`,createOwner:`Tạo tài khoản chủ sở hữu`,ownerHint:`Tài khoản đầu tiên quản trị hệ thống này.`,invitedHint:`Đăng nhập bằng địa chỉ email được mời để chấp nhận lời mời.`,signInWith:`Đăng nhập bằng {{provider}}`,useEmail:`Dùng email và mật khẩu`,or:`hoặc`,name:`Tên`,setupToken:`Token thiết lập`,setupTokenHint:`Dùng KANVIL_SETUP_TOKEN trong cấu hình hệ thống của bạn.`,email:`Email`,password:`Mật khẩu`,signingIn:`Đang đăng nhập…`,createAccount:`Tạo tài khoản`,consent:{expired:`Yêu cầu ủy quyền đã hết hạn. Hãy kết nối lại ứng dụng khách.`,title:`Ủy quyền cho {{client}}`,titleUnnamed:`Ủy quyền ứng dụng khách`,subtitle:`Ứng dụng khách này yêu cầu truy cập dưới danh nghĩa tài khoản của bạn. Quyền của dự án vẫn được áp dụng.`,deny:`Từ chối`,allow:`Cho phép truy cập`},invitation:{unavailable:`Lời mời không khả dụng`,join:`Tham gia {{workspace}}`,invited:`Được mời`,from:`Từ`,access:`Quyền truy cập`,removedProjects:`Dự án bị loại trừ`,wholeWorkspace:`Toàn bộ không gian làm việc`,expires:`Hết hạn`,expired:`Lời mời này đã hết hạn. Hãy đề nghị quản trị viên không gian làm việc gửi lời mời mới.`,revoked:`Lời mời này đã bị thu hồi. Hãy đề nghị quản trị viên không gian làm việc gửi lời mời mới.`,accepted:`Lời mời này đã được chấp nhận. Hãy đề nghị quản trị viên không gian làm việc gửi lời mời mới.`,wrongAccount:`Bạn đang đăng nhập với <account>{{current}}</account>. Đăng nhập với {{invited}} để chấp nhận.`,signOut:`Đăng xuất`,joined:`Đã tham gia {{workspace}}`,accept:`Chấp nhận lời mời`},callback:{cancelled:`Đăng nhập đã bị hủy. Hãy thử lại khi bạn sẵn sàng.`,linkedElsewhere:`Danh tính này đã được liên kết với một tài khoản Kanvil khác. Dùng danh tính khác hoặc liên hệ quản trị viên.`,notLinked:`Danh tính này chưa được liên kết với tài khoản Kanvil nào. Đăng nhập bằng tài khoản cục bộ và liên kết trong Cài đặt.`,expired:`Yêu cầu đăng nhập đã hết hạn hoặc không thể xác minh. Hãy thử lại từ màn hình này.`,emailMismatch:`Không thể liên kết email của nhà cung cấp danh tính. Hãy liên hệ quản trị viên.`,failed:`Không thể hoàn tất đăng nhập. Hãy thử lại hoặc liên hệ quản trị viên.`}},you:`Bạn`,inbox:{markAllRead:`Đánh dấu tất cả đã đọc`,clearRead:`Xóa thông báo đã đọc`,cleared_other:`Đã xóa {{count, number}} thông báo đã đọc`,unread:`Chưa đọc`,mentions:`Lượt nhắc`,all:`Tất cả thông báo`,noUnread:`Không có thông báo chưa đọc`,noMentions:`Không có lượt nhắc`,noNotifications:`Không có thông báo`,markUnread:`Đánh dấu chưa đọc`,markRead:`Đánh dấu đã đọc`,dismiss:`Bỏ qua`},search:{field:`Tìm trong không gian làm việc`,placeholder:`Tìm phiếu, dự án, bình luận, hoạt động…`,tab:{all:`Tất cả`,project:`Dự án`,ticket:`Phiếu`,comment:`Bình luận`,activity:`Hoạt động`},indexing:`Tìm kiếm ngoài đang cập nhật, nên kết quả phiếu được lấy từ PostgreSQL.`,empty:`Tìm phiếu, dự án, bình luận và hoạt động`,noResults:`Không có kết quả cho “{{query}}”`,results:`Kết quả tìm kiếm`,pages:`Trang kết quả tìm kiếm`,previous:`Trước`,next:`Tiếp`,type:{project:`Dự án`,ticket:`Phiếu`,comment:`Bình luận`,activity:`Hoạt động`}},column:{key:`Phiếu`,labels:`Nhãn`,scopes:`Phạm vi`,status:`Trạng thái`,priority:`Mức ưu tiên`,difficulty:`Độ khó`,kind:`Loại`,assigneeId:`Người được giao`,startAt:`Bắt đầu`,dueAt:`Hạn chót`,createdAt:`Ngày tạo`,updatedAt:`Cập nhật`},public:{notShared:`Dự án này không được chia sẻ`,notSharedHint:`Liên kết đã bị tắt hoặc chưa từng tồn tại. Thành viên có thể đăng nhập để xem.`,noTickets:`Không có phiếu`,ticketUnavailable:`Phiếu không khả dụng`,backToTickets:`Quay lại danh sách phiếu`,description:`Mô tả`,noDescription:`_Không có mô tả_`,acceptanceCriteria:`Tiêu chí chấp nhận`,noAcceptanceCriteria:`_Không có tiêu chí chấp nhận_`,ticketProperties:`Thuộc tính phiếu`,properties:`Thuộc tính`,status:`Trạng thái`,priority:`Mức ưu tiên`,kind:`Loại`,difficulty:`Độ khó`,startDate:`Ngày bắt đầu`,dueDate:`Hạn chót`,labels:`Nhãn`,scopes:`Phạm vi`,created:`Ngày tạo`,updated:`Cập nhật`,relationships:`Quan hệ`,parent:`Phiếu cha`,child:`Phiếu con`},sidebar:{workspace:`Không gian làm việc`,unread_other:`{{count, number}} chưa đọc`,userSettings:`Cài đặt người dùng`,administration:`Quản trị`,signOut:`Đăng xuất`,projectSettings:`Cài đặt dự án`},workspace:{new:`Không gian làm việc mới`,name:`Tên không gian làm việc`,key:`Mã không gian làm việc`,create:`Tạo không gian làm việc`,workspaces:`Không gian làm việc`,switch:`Chuyển không gian làm việc`,settings:`Cài đặt không gian làm việc`},palette:{open:`Đi đến…`,title:`Đi đến`,description:`Tìm dự án, phiếu, trang hoặc thao tác`,placeholder:`Tìm phiếu, dự án, trang, thao tác…`,searching:`Đang tìm…`,noResults:`Không có kết quả`,jumpTo:`Chuyển đến`,openKey:`Mở {{key}} trong {{project}}`,resultsIn:`Kết quả trong {{workspace}}`,results:`Kết quả`,seeAll_other:`Xem tất cả {{count, number}} kết quả`,actions:`Thao tác`,pages:`Trang`,newTicketIn:`Phiếu mới trong {{project}}`,myTicketsIn:`Phiếu của tôi trong {{project}}`,lightMode:`Chuyển sang chế độ sáng`,darkMode:`Chuyển sang chế độ tối`,keywords:{jump:`{{query}} chuyển đến mở`,allResults:`tất cả kết quả {{query}}`,newTicket:`phiếu mới tạo`,myTickets:`phiếu của tôi được giao cho tôi`,lightMode:`chuyển chế độ sáng giao diện chủ đề`,darkMode:`chuyển chế độ tối giao diện chủ đề`,help:`phím tắt bàn phím trợ giúp`,home:`trang chủ tổng quan tất cả dự án`,myWork:`việc của tôi phiếu được giao`,search:`tìm kiếm bình luận hoạt động dự án phiếu`,inbox:`hộp thư đến thông báo`,settings:`cài đặt {{scope}} {{label}}`}},actionCategory:{general:`Chung`,ticketList:`Danh sách phiếu`,inbox:`Hộp thư đến`,ticket:`Phiếu`,search:`Tìm kiếm`,markdown:`Markdown`},action:{palette:`Đi đến bất kỳ đâu`,help:`Phím tắt`,sidebar:`Bật/tắt thanh bên`,newTicket:`Phiếu mới`,search:`Tìm phiếu`,highlight:`Tô sáng phiếu tiếp theo hoặc trước đó`,open:`Mở phiếu đang tô sáng`,preview:`Xem trước phiếu đang tô sáng bên cạnh danh sách`,select:`Chọn phiếu đang tô sáng`,properties:`Đặt trạng thái, mức ưu tiên hoặc người được giao cho phiếu đang tô sáng`,inboxHighlight:`Tô sáng thông báo tiếp theo hoặc trước đó`,inboxOpen:`Đọc phiếu của thông báo đang tô sáng bên cạnh Hộp thư đến`,inboxRead:`Đánh dấu thông báo đang tô sáng là đã đọc hoặc chưa đọc`,inboxDismiss:`Bỏ qua thông báo đang tô sáng`,step:`Mở phiếu tiếp theo hoặc trước đó`,edit:`Sửa phiếu`,save:`Lưu phiếu hoặc bình luận`,results:`Di chuyển giữa các kết quả tìm kiếm`,insertBlock:`Chèn bảng, sơ đồ, tệp hoặc khối khác trong trình soạn thảo Trực quan`},move:{top:{label:`Chuyển phiếu đang tô sáng lên đầu`,menu:`Chuyển lên đầu`},up:{label:`Chuyển phiếu đang tô sáng lên`,menu:`Chuyển lên`},down:{label:`Chuyển phiếu đang tô sáng xuống`,menu:`Chuyển xuống`},bottom:{label:`Chuyển phiếu đang tô sáng xuống cuối`,menu:`Chuyển xuống cuối`},previous:{label:`Chuyển phiếu đang tô sáng sang trạng thái trước`,menu:`Chuyển sang trạng thái trước`},next:{label:`Chuyển phiếu đang tô sáng sang trạng thái tiếp theo`,menu:`Chuyển sang trạng thái tiếp theo`}},copy:{link:{label:`Sao chép liên kết`,copied:`Liên kết phiếu`},keyAndTitle:{label:`Sao chép mã và tiêu đề`,copied:`Phiếu`},title:{label:`Sao chép tiêu đề`,copied:`Tiêu đề`},markdown:{label:`Sao chép dạng Markdown`,copied:`Markdown`},branch:{label:`Sao chép tên nhánh`,copied:`Tên nhánh`}},settingsNav:{account:`Tài khoản`,settings:`Cài đặt`,workspace:`Không gian làm việc`,workspaceSettings:`Cài đặt không gian làm việc`,projects:`Dự án`,projectSettings:`Cài đặt dự án`,administration:`Quản trị`,section:{profile:`Hồ sơ và bảo mật`,appearance:`Giao diện`,preferences:`Tùy chọn`,credentials:`Khóa API`,notifications:`Thông báo`,general:`Chung`,members:`Thành viên`,roles:`Vai trò`,labels:`Nhãn`,workflow:`Quy trình`,fields:`Trường`,integrations:`Tích hợp`,calendar:`Nguồn lịch`,storage:`Lưu trữ tệp`,search:`Tìm kiếm`,events:`Phân phối sự kiện`,users:`Người dùng`,workspaces:`Không gian làm việc`,authentication:`Xác thực`}},browser:{copyFailed:`Sao chép thất bại. Hãy chọn văn bản và sao chép thủ công.`,readFailed:`Không thể đọc tệp`,encodeFailed:`Không thể mã hóa tệp`,imageTooBig:`Chọn ảnh nhỏ hơn 10 MB.`,cannotResize:`Trình duyệt này không thể thay đổi kích thước ảnh.`,prepareFailed:`Không thể chuẩn bị ảnh.`,stillTooLarge:`Ảnh vẫn quá lớn sau khi thay đổi kích thước. Hãy chọn ảnh đơn giản hơn.`},primitive:{close:`Đóng`,more:`Thêm`,breadcrumb:`đường dẫn`,sidebar:`Thanh bên`,sidebarDescription:`Hiển thị thanh bên trên di động.`,toggleSidebar:`Bật/tắt thanh bên`,resizeSidebar:`Đổi kích thước thanh bên`,expandSidebar:`Mở rộng thanh bên`,commandTitle:`Bảng lệnh`,commandDescription:`Tìm lệnh để chạy…`}},ticket:{list:{selectSection:`Chọn các phiếu {{section}}`,expandSection:`Mở rộng các phiếu {{section}}`,collapseSection:`Thu gọn các phiếu {{section}}`,sectionTickets:`Phiếu {{section}}`,later:`Sau này`,selectAll:`Chọn tất cả phiếu đang hiển thị`,selectTicket:`Chọn {{key}}`,title:`Tiêu đề`,all:`Tất cả`,planned:`Đã lên kế hoạch`,archived:`Đã lưu trữ`,allTickets:`Tất cả phiếu`,customView:`Chế độ xem tùy chỉnh`,sectionCount:`{{n, number}} {{section}}`,planning:`Kế hoạch {{project}}`,collection:`{{source}} ({{sections}})`,moved:`Đã chuyển {{key}}`,movedTo:`Đã chuyển {{key}} sang {{status}}`,movedAbove:`Đã chuyển {{key}} lên trên {{neighbor}}`,movedBelow:`Đã chuyển {{key}} xuống dưới {{neighbor}}`,movedToAbove:`Đã chuyển {{key}} sang {{status}}, trên {{neighbor}}`,movedToBelow:`Đã chuyển {{key}} sang {{status}}, dưới {{neighbor}}`,emptyFiltered:`Không có phiếu phù hợp`,emptyPlanning:`Không có gì được lên kế hoạch hoặc lưu trữ`,emptyProject:`Chưa có phiếu`,emptyWork:`Không có phiếu đang mở nào được giao cho bạn`,createFirst:`Tạo phiếu đầu tiên`,activeWork:`Việc đang làm`,views:`Chế độ xem phiếu`,saveCurrentView:`Lưu chế độ xem hiện tại`,deleteView:`Xóa chế độ xem {{name}}`,deleteViewConfirm:`Xóa {{name}} khỏi các chế độ xem đã lưu? Phiếu không thay đổi.`,planningLink:`Kế hoạch`,newTicketShortcut:`Phiếu mới ({{shortcut}})`,saveView:`Lưu chế độ xem`,viewSaved:`Đã lưu chế độ xem`,viewName:`Tên chế độ xem`,retry:`Thử tải lại phiếu`,board:`Bảng phiếu`,tickets:`Phiếu`,resizeColumn:`Đổi kích thước cột {{column}}`,count_other:`{{count, number}} phiếu`,scheduledCount_other:`{{count, number}} phiếu đã lên lịch`},move:{destination:`Đích đến`,projectPlaceholder:`Chuyển sang dự án…`,blockers:`Cần xử lý trước khi chuyển`,submit:`Chuyển phiếu`,pending:`Đang chuyển…`},picker:{placeholder:`Chọn phiếu`,loading:`Đang tải phiếu…`,searchLabel:`Tìm {{label, lowercase}}`,searchPlaceholder:`Tìm theo tiêu đề hoặc mã…`,noParent:`Không có phiếu cha`,searching:`Đang tìm…`,empty:`Không tìm thấy phiếu`},property:{status:`Trạng thái`,priority:`Mức ưu tiên`,kind:`Loại`,difficulty:`Độ khó`,assignee:`Người được giao`,you:`{{name}} (bạn)`,assignTo:`Giao cho…`,set:`Đặt {{label, lowercase}}…`,search:`Tìm {{label, lowercase}}`,noMatches:`Không có kết quả phù hợp`},field:{mixed:`Hỗn hợp`,unchecked:`Không`,noValue:`Không có giá trị`},project:{label:`Dự án`,placeholder:`Tạo trong dự án…`,search:`Tìm dự án`},tags:{labels:`Nhãn`,scopes:`Phạm vi`,summary:`{{label}}: {{tags}}`,edit:`Sửa {{label, lowercase}}`,editValues:`Sửa {{label, lowercase}}: {{tags}}`,editMixed:`Sửa {{label, lowercase}}: hỗn hợp`,mixed:`{{label}} hỗn hợp`,none:`Không có {{label, lowercase}}`,mixedNote:`Các phiếu đã chọn có {{label, lowercase}} khác nhau.`,clear:`Xóa {{label, lowercase}}`,replace:`Thay thế {{label, lowercase}}`},tagInput:{remove:`Gỡ {{label, lowercase}} {{tag}}`,addAnother:`Thêm nữa…`,add:`Thêm {{label, lowercase}}…`,choose:`Chọn {{label, lowercase}}`,chooseLabels:`Chọn nhãn`,searchPlaceholder:`Tìm nhãn…`,searchLabel:`Tìm nhãn của dự án`,empty:`Không có nhãn phù hợp`},link:{previewUnavailable:`Không có bản xem trước`},userPicker:{label:`Tài khoản`,placeholder:`Chọn tài khoản`,searchPlaceholder:`Tìm tên hoặc email…`,searchLabel:`Tìm tài khoản`,useEmail:`Dùng {{email}}`,emptyAnyAccount:`Tìm thành viên hoặc nhập email của một tài khoản hiện có.`,empty:`Không có thành viên phù hợp`},date:{placeholder:`Chọn ngày`,clear:`Xóa {{label, lowercase}}`,start:`Ngày bắt đầu`,startShort:`Bắt đầu`,noStart:`Không có ngày bắt đầu`,due:`Hạn chót`,dueShort:`Hạn`,noDue:`Không có hạn chót`},filter:{me:`Tôi`,searchTickets:`Tìm phiếu`,searchTicketsPlaceholder:`Tìm phiếu…`,filters:`Bộ lọc`,filtersActive:`Bộ lọc ({{active, number}})`,due:`Hạn`,anyDue:`Mọi hạn chót`,archived:`Đã lưu trữ`,hideArchived:`Ẩn phiếu đã lưu trữ`,includeArchived:`Bao gồm phiếu đã lưu trữ`,archivedOnly:`Chỉ phiếu đã lưu trữ`,includingArchived:`Bao gồm phiếu đã lưu trữ`,reset:`Đặt lại bộ lọc`,clear:`Xóa bộ lọc`,active:`Bộ lọc phiếu đang dùng`,searchChip:`Tìm: {{query}}`,chipAny:`{{field}}:`,chipNone:`{{field}} không phải:`,notValues:`Không phải {{values}}`,match:`Khớp {{label, lowercase}}`,is:`Là`,isNot:`Không phải`,searchPlaceholder:`{{search}}…`,anyValue:{status:`Mọi trạng thái`,priority:`Mọi mức ưu tiên`,kind:`Mọi loại`,difficulty:`Mọi độ khó`,label:`Mọi nhãn`,assigneeId:`Bất kỳ ai`,customField:`Mọi giá trị trường`},searchValues:{status:`Tìm trạng thái`,priority:`Tìm mức ưu tiên`,kind:`Tìm loại`,difficulty:`Tìm độ khó`,label:`Tìm nhãn`,assigneeId:`Tìm người`,customField:`Tìm trường`}},display:{title:`Hiển thị`,orderBy:`Sắp xếp theo`,direction:`Chiều`,ascending:`Tăng dần`,descending:`Giảm dần`,reset:`Đặt lại hiển thị`,groupBy:`Nhóm theo`,dueDate:`Hạn chót`,layout:`Bố cục`,list:`Danh sách`,board:`Bảng`,backgrounds:`Ảnh nền dự án`,show:`Hiện`,hide:`Ẩn`,rowSpacing:`Khoảng cách dòng`,compact:`Gọn`,comfortable:`Thoáng`,labelDisplay:`Hiển thị nhãn`,compactPreview:`Xem trước gọn`,allLabels:`Tất cả nhãn`,properties:`Thuộc tính`},selection:{region:`Phiếu đã chọn`,clear:`Bỏ chọn`,selected_other:`Đã chọn {{count, number}}`,selectedOf_other:`{{count, number}} trên {{total}}<wide> đã chọn</wide>`,applied_other:`Đã áp dụng {{label}} cho {{count, number}} phiếu`,partlyApplied_other:`Đã áp dụng cho {{done, number}} trên {{count, number}} phiếu`,mixedDue:`Hạn chót khác nhau`,fields:`Trường`,more:`Thao tác khác`,moveTo:`Chuyển sang {{status}}`,restoreChange:`Khôi phục`,restore:`Khôi phục mục đã chọn`,archive:`Lưu trữ mục đã chọn`,delete:`Xóa mục đã chọn`,deleteLimit:`Xóa tối đa {{limit, number}} phiếu mỗi lần`,archiveConfirm_other:`Lưu trữ {{count, number}} phiếu từ {{collection}}?`,deleteConfirm_other:`Xóa vĩnh viễn {{count, number}} phiếu từ {{collection}}, cùng bình luận, quan hệ và tệp đính kèm của chúng? Phiếu con ngoài phần đã chọn sẽ mất phiếu cha.`,deleted_other:`Đã xóa {{count, number}} phiếu`},menu:{copied:`Đã sao chép {{label, lowercase}}`,open:`Mở phiếu`,preview:`Xem trước`,newTab:`Mở trong thẻ mới`,edit:`Sửa phiếu`,editTitle:`Sửa {{key}}`,duplicate:`Nhân bản phiếu`,created:`Đã tạo {{key}}`,move:`Chuyển`,moveToProject:`Chuyển sang dự án…`,moveTitle:`Chuyển {{key}}`,moved:`Đã chuyển thành {{key}}`,follow:`Theo dõi phiếu`,unfollow:`Bỏ theo dõi phiếu`,archive:`Lưu trữ phiếu`,unarchive:`Bỏ lưu trữ phiếu`,delete:`Xóa phiếu`,deleteConfirm:`Xóa vĩnh viễn {{key}}, cùng bình luận, quan hệ và tệp đính kèm của phiếu?`,openProject:`Mở dự án`,projectLink:`Liên kết dự án`,copyLink:`Sao chép liên kết`,newTicket:`Phiếu mới`,projectSettings:`Cài đặt dự án`,manageAccount:`Quản lý tài khoản`,email:`Email`,copyEmail:`Sao chép email`},schedule:{range:`{{from}} – {{to}}`,calendar:`Lịch`,timeline:`Dòng thời gian`,today:`Hôm nay`,previousMonth:`Tháng trước`,nextMonth:`Tháng sau`,previousWeeks:`Hai tuần trước`,nextWeeks:`Hai tuần sau`,emptyWeeks:`Không có gì được lên lịch trong các tuần này`,monthTickets:`Phiếu trong {{title}}`,showDay_other:`Hiện tất cả {{count, number}} phiếu vào {{day}}`,more_other:`Thêm {{count, number}}`,ticketColumn:`Phiếu`,scheduledTickets:`Phiếu đã lên lịch`},copy:{description:`Mô tả`,acceptanceCriteria:`Tiêu chí chấp nhận`}},detail:{field:{title:`Tiêu đề`,description:`Mô tả`,acceptanceCriteria:`Tiêu chí chấp nhận`,parent:`Phiếu cha`,parentTicket:`Phiếu cha`,labels:`Nhãn`,scopes:`Phạm vi`,holdReason:`Lý do tạm giữ`,url:`URL`},page:{preview:`Xem trước phiếu`,unavailable:`Phiếu không khả dụng`,noProject:`Liên kết không chỉ rõ dự án của phiếu.`,gone:`Phiếu này đã bị xóa hoặc bạn không còn quyền truy cập.`,closePreview:`Đóng bản xem trước`,openFullPage:`Mở toàn trang`,backToTickets:`Quay lại danh sách phiếu`,tickets:`Phiếu`,previousTicket:`Phiếu trước`,previousTicketShortcut:`Phiếu trước (K)`,nextTicket:`Phiếu tiếp theo`,nextTicketShortcut:`Phiếu tiếp theo (J)`,position:`{{position, number}} / {{total, number}}`,subscribe:`Theo dõi`,unsubscribe:`Bỏ theo dõi`,subscribed:`Đã theo dõi cập nhật`,unsubscribed:`Đã bỏ theo dõi`,archive:`Lưu trữ phiếu`,unarchive:`Bỏ lưu trữ phiếu`,archivedToast:`Đã lưu trữ phiếu`,unarchivedToast:`Đã bỏ lưu trữ phiếu`,archived:`Đã lưu trữ`,edit:`Sửa phiếu`,editShortcut:`Sửa phiếu (E)`,editTitle:`Sửa {{key}}`,actions:`Thao tác với phiếu`,copyKey:`Sao chép mã phiếu`,keyCopied:`Đã sao chép {{key}}`,noDescription:`_Không có mô tả_`,noAcceptanceCriteria:`_Không có tiêu chí chấp nhận_`,coordination:`Điều phối phiếu`,properties:`Thuộc tính`,created:`Ngày tạo`,updated:`Cập nhật`},section:{discussion:`Thảo luận`,evidence:`Bằng chứng`,activity:`Hoạt động`},readiness:{heading:`Mức sẵn sàng cho tác tử`,ready:`Sẵn sàng để nhận`,notReady:`Chưa sẵn sàng để nhận`,hold:`Tạm giữ: {{reason}}`,claimedUntil:`Đã được <strong>{{worker}}</strong> nhận đến {{date}}.`},claim:{release:`Trả lại việc đã nhận`,releaseDescription:`Trả lại quyền sở hữu sau khi tiến trình của bạn đã ngừng ghi?`,recover:`Thu hồi việc nhận đã hết hạn`,recoverHelp:`Thu hồi cần quyền quản trị viên dự án và việc nhận đã hết hạn. Hãy dừng tiến trình trước.`,reason:`Lý do thu hồi`,confirmed:`Tôi đã xác nhận tiến trình đã dừng`,submit:`Thu hồi quyền sở hữu`},editor:{storageUnavailable:`Trình duyệt này không thể lưu bản nháp. Hãy giữ trình soạn thảo mở cho đến khi lưu.`,saved:`Đã lưu {{key}}`,created:`Đã tạo {{key}}`,properties:`Thuộc tính phiếu`,readyForAgents:`Sẵn sàng cho tác tử`,readyForAgentsHelp:`Tác tử có thể nhận phiếu này khi yêu cầu, phụ thuộc chặn và quyền sở hữu cho phép`,agents:`Tác tử`,notReady:`Chưa sẵn sàng`,moreProperties:`Thêm thuộc tính`,holdPlaceholder:`Vì sao công việc phải chờ?`,claimsNote:`Việc nhận vẫn phụ thuộc vào yêu cầu, phụ thuộc chặn và quyền sở hữu hiện tại.`,restoreSize:`Khôi phục kích thước trình soạn thảo`,expand:`Mở rộng trình soạn thảo`,staleTitle:`Phiếu này đã thay đổi.`,staleDescription:`Bản nháp của bạn vẫn dùng phiên bản {{version}}; khi lưu sẽ cần phiên bản hiện tại.`,discardAndReload:`Hủy bản nháp và tải lại`,titlePlaceholder:`Tiêu đề phiếu`,descriptionPlaceholder:`Thêm bối cảnh, yêu cầu hoặc cách tái hiện…`,criteriaPlaceholder:`- [ ] Điều gì cho thấy việc này đã hoàn thành?`,removeCriteria:`Gỡ tiêu chí chấp nhận`,addCriteria:`Thêm tiêu chí chấp nhận`,savedLocally:`Đã lưu bản nháp trên thiết bị này`,notSavedLocally:`Không thể lưu bản nháp`,discardDraft:`Hủy bản nháp`,createMore:`Tạo thêm`,save:`Lưu phiếu`,create:`Tạo phiếu`},resource:{removeConfirm:`Gỡ {{name}}?`,uploading:`Đang tải lên…`},attachment:{heading:`Tệp đính kèm`,tooLarge:`Chọn các tệp không lớn hơn 10 MB mỗi tệp.`,attached_other:`Đã đính kèm {{count, number}} tệp`,attach:`Đính kèm tệp`,emptyWritable:`Không có tệp đính kèm. Thả tệp vào đây.`,empty:`Không có tệp đính kèm`,remove:`Gỡ tệp đính kèm`,fileInput:`Tệp (tối đa 10 MB)`},evidence:{description:`Liên kết và kết quả do người và tích hợp làm việc trên phiếu này báo cáo.`,add:`Thêm bằng chứng`,empty:`Chưa đính kèm bằng chứng`,added:`Đã thêm bằng chứng`,kindLabel:`Loại`,outcomeLabel:`Kết quả báo cáo`,commit:`Commit (mã băm đầy đủ)`,note:`Ghi chú`},link:{heading:`Liên kết`,add:`Thêm liên kết`,edit:`Sửa liên kết`,save:`Lưu liên kết`,remove:`Gỡ liên kết`,empty:`Không có liên kết`,stateUnknown:`Không rõ trạng thái`,remote:`{{kind}} · {{state}}`,remoteState:{open:`Đang mở`,closed:`Đã đóng`,merged:`Đã hợp nhất`,draft:`Nháp`,active:`Đang hoạt động`,deleted:`Đã xóa`}},activity:{previous:`Hoạt động trước`,next:`Hoạt động tiếp theo`},relations:{heading:`Quan hệ`,add:`Thêm quan hệ`,linkExisting:`Liên kết phiếu có sẵn`,newChild:`Phiếu con mới`,newChildTitle:`Phiếu con mới của {{key}}`,children:`Phiếu con <count>{{done, number}}/{{total, number}}</count>`,previousChildren:`Phiếu con trước`,nextChildren:`Phiếu con tiếp theo`,empty:`Không có quan hệ`,type:`Quan hệ`,ticket:`Phiếu`,statusOf:`Trạng thái của {{key}}`,assigneeOf:`Người được giao của {{key}}`,remove:{blocks:`Gỡ quan hệ chặn`,related:`Gỡ quan hệ liên quan`,duplicate:`Gỡ quan hệ trùng lặp`,causes:`Gỡ quan hệ gây ra`,clones:`Gỡ quan hệ sao chép`,implements:`Gỡ quan hệ triển khai`,reviews:`Gỡ quan hệ duyệt`}},discussion:{empty:`Chưa có bình luận`,previous:`Bình luận trước`,next:`Bình luận tiếp theo`,comment:`Bình luận`,placeholder:`Viết bình luận…`,posting:`Đang đăng…`,edited:`Đã sửa`,edit:`Sửa bình luận`,delete:`Xóa bình luận`,deleteConfirm:`Xóa vĩnh viễn bình luận này?`},markdown:{format:{heading:`Tiêu đề`,bold:`In đậm`,italic:`In nghiêng`,link:`Liên kết`,linkHelp:`Liên kết văn bản đã chọn`,bullets:`Danh sách dấu đầu dòng`,numbers:`Danh sách đánh số`,tasks:`Danh sách kiểm tra`,code:`Khối mã`},formatting:`Định dạng {{label, lowercase}}`,editor:`Trình soạn thảo {{label, lowercase}}`,insertFile:`Chèn tệp`,insertFileInto:`Chèn tệp vào {{label, lowercase}}`,write:`Viết`,visual:`Trực quan`,preview:`Xem trước`,unsupported:`Văn bản này dùng Markdown mà trình soạn thảo trực quan không giữ được, chẳng hạn HTML hoặc chú thích cuối trang.`,nothingToPreview:`Không có gì để xem trước`,mention:`Nhắc đến thành viên`,insertBlock:`Chèn khối`,block:{quote:`Trích dẫn`,table:`Bảng`,diagram:`Sơ đồ`,divider:`Đường phân cách`,file:`Tệp`},table:{addRow:`Thêm hàng`,addColumn:`Thêm cột`,deleteRow:`Xóa hàng`,deleteColumn:`Xóa cột`,deleteTable:`Xóa bảng`},linkAddress:`Địa chỉ liên kết`,diagram:`Sơ đồ`,diagramFailed:`Không thể vẽ sơ đồ này: {{error}}`,diagramSource:`Mã nguồn sơ đồ`}},settings:{account:{title:`Cài đặt`,security:`Đăng nhập và bảo mật`,localPassword:`Mật khẩu cục bộ`,localPasswordDescription:`Đổi mật khẩu sẽ đăng xuất các phiên khác của bạn.`,changePassword:`Đổi mật khẩu`,oidcLinked:`Dùng nhà cung cấp danh tính này để đăng nhập vào cùng tài khoản.`,oidcUnlinked:`Liên kết tài khoản trước khi đăng nhập qua nhà cung cấp này.`,linked:`Đã liên kết`,link:`Liên kết {{name}}`,currentPassword:`Mật khẩu hiện tại`,newPassword:`Mật khẩu mới`,confirmPassword:`Xác nhận mật khẩu mới`,passwordMismatch:`Mật khẩu mới không khớp.`,passwordUpdated:`Đã cập nhật mật khẩu. Các phiên khác đã bị đăng xuất.`},preferences:{behavior:`Hành vi`,languageDescription:`Áp dụng trong trình duyệt này, kể cả trang đăng nhập.`,weekStart:`Tuần bắt đầu vào`,weekStartDescription:`Áp dụng cho mọi bộ chọn ngày.`,weekStartLanguage:`Theo ngôn ngữ`,sidebar:`Thanh bên khi khởi động`,sidebarDescription:`Có hiệu lực vào lần mở Kanvil tiếp theo.`,sidebarLast:`Như lần trước`,sidebarExpanded:`Mở rộng`,sidebarCollapsed:`Thu gọn`,ticketLists:`Danh sách phiếu`,reset:`Đặt lại tùy chọn`,resetDescription:`Khôi phục các lựa chọn này về mặc định trong trình duyệt này.`,resetDone:`Đã đặt lại tùy chọn`},notifications:{title:`Thông báo`,inbox:`Hộp thư đến`,inboxDescription:`Cập nhật của các phiếu bạn theo dõi sẽ hiện trong Kanvil.`,inboxSwitch:`Cập nhật phiếu đã theo dõi trong Hộp thư đến`,push:`Thông báo đẩy`,pushDescription:`Gửi cập nhật đến các thiết bị bạn đã đăng ký.`,pushUnavailable:`Hệ thống này chưa bật gửi thông báo đẩy.`,pushSwitch:`Thông báo đẩy trên thiết bị đã đăng ký`,categories:`Danh mục`,categorySwitch:`Thông báo {{label, lowercase}}`,reminder:`Nhắc sắp đến hạn`,reminderDescription:`Bao lâu trước hạn chót của phiếu đang theo dõi.`,reminderUnit:`Đơn vị nhắc`,reminderAmount:`Thời lượng nhắc`,unit:{minutes:`Phút`,hours:`Giờ`,days:`Ngày`,weeks:`Tuần`}},layout:{nav:`Cài đặt`,section:`Mục cài đặt`,nested:`{{parent}} · {{child}}`,name:`Tên`,description:`Mô tả`,descriptionPlaceholder:`Thêm mô tả`,noDescription:`Không có mô tả`,stale:`Mục này đã được thay đổi ở nơi khác. Hãy hủy và làm lại.`},profile:{title:`Hồ sơ`,displayName:`Tên hiển thị`,edit:`Sửa hồ sơ`,changePhoto:`Đổi ảnh`,removePhoto:`Gỡ ảnh`,photoFile:`Tệp ảnh hồ sơ`,photoUpdated:`Đã cập nhật ảnh`,photoRemoved:`Đã gỡ ảnh`,saved:`Đã lưu hồ sơ`},credentials:{title:`Khóa API`,description:`Kết nối script, tích hợp và tác tử với quyền truy cập có thể thu hồi.`,create:`Tạo khóa API`,creating:`Đang tạo…`,created:`Đã tạo khóa API`,name:`Tên`,access:`Quyền truy cập`,projects:`Dự án`,expires:`Hết hạn`,actions:`Thao tác`,unavailableProject:`Dự án không khả dụng`,untitled:`Khóa chưa đặt tên`,expired:`Đã hết hạn`,disabled:`Đã vô hiệu hóa`,custom:`Tùy chỉnh`,noProjects:`Không có quyền truy cập dự án`,never:`Không bao giờ`,revoke:`Thu hồi khóa API`,revokeNamed:`Thu hồi {{name}}? Các kết nối đang dùng khóa này sẽ mất quyền truy cập ngay.`,revokeUnnamed:`Thu hồi khóa API này? Các kết nối đang dùng khóa này sẽ mất quyền truy cập ngay.`,empty:`Không có khóa API`,emptyDescription:`Tạo khóa khi một script, tích hợp hoặc tác tử cần truy cập vào dự án của bạn.`,copyNow:`Sao chép khóa này ngay. Bạn sẽ không thể xem lại.`,newKey:`Khóa API mới`,copy:`Sao chép khóa API`,noProjectTitle:`Hãy chọn dự án trước`,noProjectDescription:`Khóa API cần quyền truy cập ít nhất một dự án.`,goToProjects:`Đi đến dự án`,keyName:`Tên khóa`,keyNamePlaceholder:`vd. Tự động phát hành`,projectAccess:`Quyền truy cập dự án`,findProject:`Tìm dự án`,projectDescription:`{{key}} · {{workspace}}`,workspace:`Không gian làm việc`,noMatches:`Không có dự án phù hợp`,roleLimit:`Vai trò hiện tại của bạn trong dự án vẫn giới hạn những gì khóa này làm được.`,accessLevel:`Mức truy cập`,preset:{read:`Chỉ đọc`,write:`Đọc và ghi`,automation:`Đọc, ghi và nhận việc`,custom:`Quyền tùy chỉnh`},permission:{read:{name:`Đọc phiếu`,description:`Xem dự án, phiếu, bình luận và tệp đính kèm.`},write:{name:`Sửa phiếu`,description:`Tạo và cập nhật phiếu, bình luận và tệp đính kèm.`},claim:{name:`Nhận việc`,description:`Nhận, gia hạn và trả lại quyền sở hữu phiếu.`},admin:{name:`Quản lý dự án`,description:`Thay đổi cài đặt và thành viên dự án trong phạm vi vai trò của bạn cho phép.`}},expiry:{7:`7 ngày`,30:`30 ngày`,90:`90 ngày`,365:`1 năm`,custom:`Ngày tùy chỉnh`,never:`Không hết hạn`},expiresOn:`Hết hạn vào`,neverDescription:`Khóa hoạt động cho đến khi bạn xóa nó.`},calendarFeeds:{title:`Nguồn lịch`,new:`Nguồn lịch mới`,created:`Đã tạo nguồn lịch`,create:`Tạo nguồn`,adminOnly:`Quản trị viên dự án chia sẻ và thu hồi nguồn lịch.`,labels:`Nhãn`,everyLabel:`Mọi nhãn`,stopped:`· Đã dừng: người tạo không còn quyền truy cập`,revoke:`Thu hồi {{name}}`,revokeDescription:`Các lịch đăng ký {{name}} sẽ ngừng cập nhật ngay. Phiếu không thay đổi.`,revoked:`Đã thu hồi nguồn lịch`,empty:`Không có nguồn lịch`,copyNow:`Sao chép liên kết này vào ứng dụng lịch ngay. Liên kết chỉ hiện một lần, và bất kỳ ai có nó đều đọc được các phiếu được chia sẻ.`,link:`Liên kết nguồn`,name:`Tên nguồn`,onlyLabels:`Chỉ phiếu có các nhãn này`,explanation:`Nguồn liệt kê các phiếu đang mở, chưa lưu trữ, có ngày bắt đầu hoặc hạn chót dưới dạng sự kiện cả ngày theo múi giờ {{zone}}. Bất kỳ ai có liên kết đều thấy mã, tiêu đề, trạng thái, mức ưu tiên và ngày của phiếu.`},project:{title:`Cài đặt dự án`,edit:`Sửa dự án`,copyPrefix:`Sao chép tiền tố phiếu`,saved:`Đã lưu dự án`,noOpenTickets:`Không có phiếu đang mở`,openTickets_other:`{{count, number}} phiếu đang mở`,overdueTickets_other:`· {{count, number}} quá hạn`,created:`· Tạo <time/>`,access:`Quyền truy cập dự án`,accessWorkspace:`Thành viên không gian làm việc kế thừa quyền truy cập từ vai trò trong không gian làm việc.`,accessPrivate:`Chỉ thành viên bạn thêm và quản trị viên không gian làm việc mới thấy dự án này.`,accessUpdated:`Đã cập nhật quyền truy cập dự án`,visibility:{workspace:`Mọi người trong không gian làm việc`,private:`Chỉ thành viên dự án`},workspace:`Không gian làm việc`,workspaceSettings:`Cài đặt không gian làm việc`,prefix:`Tiền tố phiếu`,prefixDescription:`Tiền tố và mã phiếu cũ vẫn hoạt động sau khi thay đổi.`,changePrefix:`Đổi tiền tố`,changePrefixTitle:`Đổi tiền tố phiếu`,changePrefixDescription:`Mọi phiếu trong {{name}} nhận tiền tố mới và giữ nguyên số.`,changing:`Đang thay đổi…`,prefixChanged:`Phiếu giờ dùng {{key}}`,publicLink:`Liên kết công khai`,publicDisclosure:`Bất kỳ ai có liên kết đều đọc được tiêu đề, mô tả, tiêu chí chấp nhận, trạng thái, mức ưu tiên, loại, độ khó, nhãn, phạm vi, ngày và liên kết tới phiếu khác của mọi phiếu chưa lưu trữ trong dự án này. Người, bình luận, hoạt động, tệp đính kèm, bằng chứng và việc nhận vẫn riêng tư.`,publicOn:`Liên kết công khai đang bật`,publicOff:`Liên kết công khai đang tắt`,off:`Tắt`,copyPublicLink:`Sao chép liên kết công khai`,openPublic:`Mở trang công khai`,stopSharing:`Ngừng chia sẻ`,share:`Chia sẻ công khai`,background:`Ảnh nền`,backgroundDescription:`Hiển thị phía sau danh sách và bảng phiếu của dự án này.`,backgroundUpdated:`Đã cập nhật ảnh nền`,backgroundRemoved:`Đã gỡ ảnh nền`,currentBackground:`Ảnh nền hiện tại`,uploading:`Đang tải lên…`,replace:`Thay thế`,upload:`Tải ảnh lên`,backgroundFile:`Tệp ảnh nền dự án`},tickets_other:`{{count, number}} phiếu`,moveUp:`Chuyển {{name}} lên`,moveDown:`Chuyển {{name}} xuống`,workflow:{title:`Quy trình`,new:`Trạng thái mới`,edit:`Sửa trạng thái`,editNamed:`Sửa trạng thái {{name}}`,deleteNamed:`Xóa trạng thái {{name}}`,onlyState:`{{name}} là trạng thái {{category}} duy nhất`,saved:`Đã lưu trạng thái`,name:`Tên trạng thái`,category:`Danh mục`,color:`Màu trạng thái`,categoryChange:`Các phiếu của trạng thái này sẽ chuyển sang {{status}}.`,save:`Lưu trạng thái`,delete:`Xóa trạng thái`,deleteTitle:`Xóa {{name}}`,deleted:`Đã xóa trạng thái`,reassign_other:`Chuyển {{count, number}} phiếu sang`},labels:{title:`Nhãn`,search:`Tìm nhãn`,new:`Nhãn mới`,edit:`Sửa nhãn`,workspace:`Không gian làm việc`,editNamed:`Sửa nhãn {{name}}`,deleteNamed:`Xóa nhãn {{name}}`,deleteUsed_other:`Gỡ {{name}} khỏi {{count, number}} phiếu, kể cả phiếu đã lưu trữ? Các chế độ xem đã lưu dùng nhãn này sẽ bị gỡ bộ lọc nhãn.`,deleteUsedShared_other:`Gỡ {{name}} khỏi {{count, number}} phiếu trong mọi dự án, kể cả phiếu đã lưu trữ? Các chế độ xem đã lưu dùng nhãn này sẽ bị gỡ bộ lọc nhãn.`,deleteUnused:`Xóa nhãn chưa dùng {{name}}? Các chế độ xem đã lưu dùng nhãn này sẽ bị gỡ bộ lọc nhãn.`,deleted:`Đã xóa nhãn`,noMatches:`Không có nhãn phù hợp`,empty:`Chưa có nhãn`,saved:`Đã lưu nhãn`,name:`Tên nhãn`,color:`Màu nhãn`,rename:`Đổi tên sẽ cập nhật nhãn này trên phiếu và trong các chế độ xem đã lưu.`,renameShared:`Đổi tên sẽ cập nhật nhãn này trên phiếu và trong các chế độ xem đã lưu ở mọi dự án.`,adopt:`Tiếp nhận nhãn của dự án`,adoptDescription:`Được định nghĩa trong {{projects}}. Phiếu của các dự án đó giữ nhãn và nhận màu này.`,save:`Lưu nhãn`},fields:{title:`Trường`,new:`Trường mới`,edit:`Sửa trường`,editNamed:`Sửa trường {{name}}`,deleteNamed:`Xóa trường {{name}}`,deleteUsed_other:`Xóa {{name}} và gỡ giá trị của trường khỏi {{count, number}} phiếu, kể cả phiếu đã lưu trữ? Các chế độ xem đã lưu sẽ mất bộ lọc theo trường này.`,deleteUnused:`Xóa trường chưa dùng {{name}}? Các chế độ xem đã lưu sẽ mất bộ lọc theo trường này.`,deleted:`Đã xóa trường`,empty:`Chưa có trường`,saved:`Đã lưu trường`,required:`Bắt buộc`,requiredDescription:`Phiếu mới cần có giá trị.`,defaultValue:`Mặc định {{value}}`,default:`Mặc định`,name:`Tên trường`,type:`Kiểu`,options:`Tùy chọn`,option:`Tùy chọn {{number}}`,optionInline:`tùy chọn {{number}}`,optionColor:`Màu của {{name}}`,removeOption:`Gỡ {{name}}`,addOption:`Thêm tùy chọn`,reassign:`Phiếu có {{name}}`,clearValue:`Xóa giá trị`,moveTo:`Chuyển sang {{name}}`,save:`Lưu trường`},lifecycle:{archivedToast:`Đã lưu trữ dự án`,restoredToast:`Đã khôi phục dự án`,archivedNotice:`Đã lưu trữ <time/> · chỉ đọc`,restore:`Khôi phục`,archive:`Lưu trữ`,archivedDescription:`Đã lưu trữ <time/>. Các phiếu ở chế độ chỉ đọc và không xuất hiện trong danh sách, tìm kiếm, Việc của tôi, nguồn lịch và hàng đợi của tác tử.`,archiveDescription:`Ẩn dự án khỏi danh sách, tìm kiếm, Việc của tôi, nguồn lịch và hàng đợi của tác tử, đồng thời chuyển các phiếu sang chỉ đọc. Lịch sử được giữ lại.`,archiveProject:`Lưu trữ dự án`,archiveConfirm:`{{name}} sẽ rời khỏi danh sách dự án và hàng đợi của tác tử cho đến khi được khôi phục. Các phiếu đã được nhận phải được trả lại trước.`,blocker:`{{message}}: {{tickets}}`,row:{tickets:`Phiếu`,losesAccess:`Mất quyền truy cập`,gainsAccess:`Có quyền truy cập`,labelsCopied:`Nhãn được sao chép`,labelsMerged:`Nhãn được gộp`,followsRemoved:`Lượt theo dõi bị gỡ`,invitations:`Lời mời`,comments:`Bình luận`,files:`Tệp`,kept:`Được giữ lại`,projects:`Dự án`,members:`Thành viên`,sharedLabels:`Nhãn dùng chung`,signIn:`Đăng nhập`,sessions:`Phiên`,credentials:`Thông tin xác thực`,devices:`Thiết bị`,access:`Quyền truy cập`,claims:`Việc đã nhận`,imports:`Lượt nhập`,profile:`Hồ sơ`},transferTickets_other:`{{count, number}}, giữ nguyên mã và liên kết`,noOne:`Không ai`,transferInvitations_other:`{{count, number}} lời mời đang chờ sẽ bỏ dự án`,files_other:`{{count, number}} · {{size}}`,keptProject_other:`{{count, number}} mục hoạt động và tiền tố {{key}}`,keptWorkspace_other:`{{count, number}} mục hoạt động và mã URL {{slug}}`,archivedProject:`đã lưu trữ`,membersLoseAccess_other:`{{count, number}} người mất quyền truy cập; tài khoản vẫn được giữ`,pendingInvitations_other:`{{count, number}} đang chờ`,move:`Chuyển`,moveTitle:`Chuyển {{name}}`,moved:`Đã chuyển sang {{name}}`,movedUnnamed:`Đã chuyển sang không gian làm việc`,destination:`Không gian làm việc đích`,moveProject:`Chuyển dự án`,moving:`Đang chuyển…`,export:`Xuất`,exportDescription:`Phiếu cùng quy trình, trường, nhãn, quan hệ, bình luận, bằng chứng và liên kết dưới dạng JSON có phiên bản. Tệp đính kèm và lịch sử hoạt động vẫn ở lại đây.`,exporting:`Đang xuất…`,exportJson:`Xuất JSON`,delete:`Xóa`,deleteTitle:`Xóa {{name}}`,deleted:`Đã xóa {{name}}`,typeToConfirm:`Nhập {{value}} để xác nhận`,deleting:`Đang xóa…`,deleteProject:`Xóa dự án`,deleteProjectDescription:`Xóa vĩnh viễn phiếu, bình luận và tệp. Lịch sử hoạt động được giữ lại, và {{key}} không bao giờ được dùng lại.`,signInAgain:`Đăng nhập lại`,deleteWorkspace:`Xóa không gian làm việc`,deleteWorkspaceDescription:`Xóa vĩnh viễn mọi dự án trong không gian làm việc cùng phiếu, bình luận và tệp, đồng thời gỡ các thành viên. Tài khoản và lịch sử hoạt động được giữ lại.`,noSignInMethods:`Không có phương thức đăng nhập được liên kết`,sessions_other:`Đã đăng xuất {{count, number}} phiên`,credentials_other:`Đã thu hồi {{count, number}} khóa API hoặc kết nối ứng dụng`,devices_other:`Đã gỡ {{count, number}} thiết bị hoặc kênh thông báo`,workspaceCount_other:`{{count, number}} không gian làm việc`,directProjectCount_other:`{{count, number}} dự án trực tiếp`,accessWorkspaces:`Đã gỡ {{workspaces}}`,accessBoth:`Đã gỡ {{workspaces}} và {{projects}}`,claims_other:`Đã trả {{count, number}} việc đã nhận`,imports_other:`Đã hủy {{count, number}} lượt nhập`,profileErased:`Đã xóa tên, email và ảnh`,commentCount_other:`{{count, number}} bình luận`,activityCount_other:`{{count, number}} mục hoạt động`,keptAccount:`{{tickets}}, {{comments}} và {{events}} hiển thị dưới tên {{name}}`,deleteAccount:`Xóa tài khoản`,deleteOwnAccount:`Xóa vĩnh viễn thông tin đăng nhập, phiên, khóa, thiết bị, tư cách thành viên và thông tin cá nhân của bạn. Phiếu, bình luận và hoạt động được giữ lại và hiển thị dưới tên {{name}}.`,deleteOtherAccount:`Xóa vĩnh viễn thông tin đăng nhập, phiên, khóa, thiết bị, tư cách thành viên và thông tin cá nhân của tài khoản này. Phiếu, bình luận và hoạt động được giữ lại và hiển thị dưới tên {{name}}.`},icon:{change:`Đổi biểu tượng`,title:`Biểu tượng dự án`,library:`Thư viện biểu tượng`,upload:`Tải ảnh lên`,search:`Tìm biểu tượng`,searchPlaceholder:`Tìm biểu tượng…`,color:`Màu biểu tượng`,choose:`Chọn {{name}}`,noMatches:`Không có biểu tượng phù hợp`,showMore:`Hiện thêm biểu tượng`,uploading:`Đang tải lên…`,chooseImage:`Chọn ảnh`,formats:`PNG, JPEG hoặc WebP · tối đa 10 MB`,file:`Tệp biểu tượng dự án`,reset:`Đặt lại biểu tượng`},createProject:{title:`Dự án mới`,inWorkspace:`Trong {{name}}`,everyoneLabel:`Mọi người trong không gian làm việc này`,name:`Tên dự án`,namePlaceholder:`Ứng dụng di động`,create:`Tạo dự án`},workspace:{title:`Cài đặt không gian làm việc`,owner:`Chủ sở hữu`,noOwner:`Chưa có chủ sở hữu. Quản trị viên hệ thống có thể chỉ định.`,transfer:`Chuyển quyền sở hữu`,transferring:`Đang chuyển…`,transferred:`{{name}} giờ sở hữu {{workspace}}`,newOwner:`Chủ sở hữu mới`,noEligible:`Quyền sở hữu được chuyển cho một quản trị viên đang hoạt động của không gian làm việc. Hãy đặt một thành viên khác làm quản trị viên trước.`,chosenCan:`Sau đó {{name}} có thể chuyển giao hoặc xóa không gian làm việc.`,newOwnerCan:`Chủ sở hữu mới có thể chuyển giao hoặc xóa không gian làm việc.`,ownerStays:`{{name}} vẫn là quản trị viên.`,unavailable:`Không gian làm việc không khả dụng`,backToProjects:`Quay lại dự án`,name:`Tên không gian làm việc`,edit:`Sửa không gian làm việc`,copyKey:`Sao chép mã không gian làm việc`,saved:`Đã lưu không gian làm việc`,projects:`Dự án`,projectCount_other:`{{count, number}} dự án bạn có thể truy cập trong không gian làm việc này.`,viewProjects:`Xem dự án`,members:`Thành viên`,membersDescription:`Vai trò trong không gian làm việc áp dụng cho các dự án dùng quyền truy cập không gian làm việc.`,manageMembers:`Quản lý thành viên`},members:{title:`Thành viên`,customRole:`Vai trò tùy chỉnh`,search:`Tìm thành viên`,searchPlaceholder:`Tên hoặc email…`,add:`Thêm thành viên`,added:`Đã thêm thành viên`,workspaceAccess:`Quyền truy cập không gian làm việc`,owner:`Chủ sở hữu`,roleFor:`Vai trò của {{name}}`,useWorkspaceAccess:`Dùng quyền truy cập không gian làm việc`,remove:`Gỡ thành viên`,removeFromWorkspace:`Gỡ {{name}} khỏi không gian làm việc này và mọi dự án của nó?`,restoreAccess:`Khôi phục quyền truy cập không gian làm việc {{role}} cho {{name}}?`,removeFromProject:`Gỡ quyền truy cập dự án của {{name}}?`,noMatches:`Không có thành viên phù hợp`,empty:`Không có thành viên`,projectRole:`Vai trò dự án`,workspaceRole:`Vai trò không gian làm việc`},invitations:{title:`Lời mời`,invite:`Mời qua email`,removedProjects:`Dự án bị loại trừ`,wholeWorkspace:`Toàn bộ không gian làm việc`,selectedProjects:`Dự án đã chọn`,expired:`Đã hết hạn`,expires:`Hết hạn <time/>`,resend:`Gửi lại lời mời đến {{email}}`,revoke:`Thu hồi lời mời`,revokeDescription:`Liên kết đã gửi đến {{email}} sẽ ngừng hoạt động.`,revoked:`Đã thu hồi lời mời`,empty:`Không có lời mời đang chờ`,email:`Email`,role:`Vai trò`,access:`Quyền truy cập`,projects:`Dự án`,noProjects:`Không gian làm việc này chưa có dự án.`,linkExpires:`Liên kết hết hạn`,inDays_other:`Trong {{count, number}} ngày`,submit:`Mời`,link:`Liên kết mời`,copyLink:`Sao chép liên kết mời`,emailed:`Đã gửi email đến {{email}}. Liên kết chỉ dùng được một lần, cho địa chỉ đó.`,notEmailed:`Hệ thống này chưa cấu hình email. Hãy gửi liên kết này đến {{email}}; liên kết chỉ dùng được một lần, cho địa chỉ đó.`,notEmailedUnknown:`Hệ thống này chưa cấu hình email. Hãy gửi liên kết này cho người nhận; liên kết chỉ dùng được một lần, cho địa chỉ đó.`},workspaces:{title:`Không gian làm việc`,search:`Tìm không gian làm việc`,searchPlaceholder:`Tên hoặc mã URL…`,noMatches:`Không có không gian làm việc phù hợp`,empty:`Không có không gian làm việc`,workspace:`Không gian làm việc`,administrators:`Quản trị viên`,members:`Thành viên`,projects:`Dự án`,created:`Ngày tạo`,actions:`Thao tác`,noAdministrator:`Không có quản trị viên`,manage:`Quản lý {{name}}`,pagerNoun:`không gian làm việc`,private:`Riêng tư`,noProjects:`Không có dự án`},roles:{title:`Vai trò`,new:`Vai trò mới`,edit:`Sửa vai trò`,builtIn:`Có sẵn`,readOnly:`Không có thao tác nào ngoài đọc`,memberships_other:`{{count, number}} tư cách thành viên`,editNamed:`Sửa vai trò {{name}}`,deleteNamed:`Xóa vai trò {{name}}`,deleteUnused:`Xóa vai trò chưa dùng {{name}}?`,deleted:`Đã xóa vai trò`,empty:`Không có vai trò`,saved:`Đã lưu vai trò`,name:`Tên vai trò`,actions:`Thao tác`,everyoneReads:`Mọi thành viên đều có thể đọc các dự án mà họ tiếp cận được.`,changesApply_other:`Thay đổi áp dụng ngay cho {{count, number}} tư cách thành viên đang giữ vai trò này.`,save:`Lưu vai trò`,delete:`Xóa vai trò`,reassignDescription_other:`{{count, number}} tư cách thành viên đang giữ {{name}}. Chọn vai trò để chuyển sang.`,moveTo:`Chuyển thành viên sang`},theme:{mode:{light:`Sáng`,dark:`Tối`,system:`Hệ thống`},aligned:`Đã đồng bộ`,hexColor:`Dùng mã màu hex sáu chữ số`,contrast:{light:`Tăng độ tương phản chữ của chủ đề sáng lên ít nhất 4.5:1.`,dark:`Tăng độ tương phản chữ của chủ đề tối lên ít nhất 4.5:1.`},fileTooLarge:`Tệp chủ đề phải nhỏ hơn 100 KB.`,tooMany:`Giữ tối đa 50 chủ đề tùy chỉnh.`},appearance:{colorScheme:`Bảng màu`,theme:`Chủ đề`,themes:`Chủ đề`,colorTheme:`Chủ đề màu`,search:`Tìm chủ đề`,searchPlaceholder:`Tìm chủ đề…`,create:`Tạo chủ đề`,add:`Thêm chủ đề`,importFile:`Nhập tệp chủ đề`,useMode:{light:`Dùng chế độ sáng của {{name}}`,dark:`Dùng chế độ tối của {{name}}`},modeOnly:{light:`Chỉ dùng cho chế độ sáng`,dark:`Chỉ dùng cho chế độ tối`},copyName:`Bản sao {{name}}`,duplicate:`Nhân bản {{name}}`,edit:`Sửa {{name}}`,export:`Xuất {{name}}`,delete:`Xóa {{name}}`,deleteDescription:`Xóa {{name}} khỏi trình duyệt này? Giao diện sáng hoặc tối đang dùng chủ đề này sẽ quay về chủ đề gốc của bạn.`,noMatches:`Không có chủ đề phù hợp`,customTheme:`Chủ đề tùy chỉnh`,name:`Tên chủ đề`,paletteColor:`{{color}} ({{mode, lowercase}})`,color:{background:`Nền`,foreground:`Chữ`,sidebar:`Thanh bên`,primary:`Màu nhấn`,primaryForeground:`Chữ trên màu nhấn`},save:`Lưu chủ đề`},color:{swatch:`{{label}}: {{color}}`,removeCustom:`Gỡ {{hex}} khỏi màu tùy chỉnh`,custom:`Màu tùy chỉnh`,default:`mặc định`,red:`đỏ`,orange:`cam`,amber:`hổ phách`,yellow:`vàng`,lime:`vàng chanh`,green:`xanh lá`,emerald:`ngọc lục bảo`,teal:`xanh mòng két`,cyan:`xanh lơ`,sky:`xanh da trời`,blue:`xanh dương`,indigo:`chàm`,violet:`tím violet`,purple:`tím`,fuchsia:`hồng tím`,pink:`hồng`,rose:`hồng đỏ`,gray:`xám`}},admin:{instance:{title:`Quản trị`,heading:`Hệ thống`,edit:`Sửa hệ thống`,name:`Tên`,description:`Mô tả`,noDescription:`Không có mô tả`,version:`Phiên bản ứng dụng`,publicUrl:`URL công khai`,provider:{local:`Lưu trữ cục bộ trong PostgreSQL`,s3:`Lưu trữ đối tượng tương thích S3`,postgres:`PostgreSQL tích hợp sẵn`,elasticsearch:`Tìm kiếm tương thích Elasticsearch`},section:{storage:`Lưu trữ tệp`,search:`Tìm kiếm phiếu`,events:`Phân phối sự kiện`},viewConfiguration:`Xem cấu hình`,configure:{storage:`Cấu hình lưu trữ`,search:`Cấu hình tìm kiếm`,events:`Cấu hình phân phối sự kiện`},providerTitle:`Nhà cung cấp`,deploymentManaged:`Do triển khai quản lý`,instanceManaged:`Do hệ thống quản lý`,transfers:`Chuyển tệp`,indexStatus:`Trạng thái chỉ mục`,connection:`Kết nối`,transfersS3:`Tệp được chuyển sang lưu trữ đối tượng sau khi được lưu cục bộ.`,transfersLocal:`Tệp mới được lưu trong PostgreSQL.`,searchBuiltIn:`Tìm kiếm chạy trực tiếp trong PostgreSQL.`,searchIndexed:`Thay đổi phiếu được lập chỉ mục ở chế độ nền.`,eventsConnection:`Thông báo đánh thức bên tiêu thụ; PostgreSQL giữ lịch sử phát lại.`,builtIn:`Tích hợp sẵn`,connected:`Đã kết nối`,upToDate:`Đã cập nhật`,status:{ready:`sẵn sàng`,transferring:`đang chuyển`,indexing:`đang lập chỉ mục`,connecting:`đang kết nối`,unavailable:`không khả dụng`},pendingTransfers:`Tệp đang chờ chuyển`,pendingRemain:`Các tệp này vẫn truy cập được từ PostgreSQL cho đến khi chuyển xong.`,noPending:`Không có tệp nào đang chờ chuyển.`,bucket:`Bucket`,storageEndpoint:`Điểm cuối lưu trữ`,backup:`Sao lưu`,backupBuckets:`Sao lưu PostgreSQL và mọi bucket lưu trữ đối tượng được tham chiếu.`,backupDatabase:`Nội dung tệp nằm trong bản sao lưu PostgreSQL của bạn.`,fallback:`Dự phòng`,fallbackDescription:`Tìm kiếm PostgreSQL vẫn dùng được khi chỉ mục ngoài bị chậm hoặc ngoại tuyến.`,searchEndpoint:`Điểm cuối tìm kiếm`,index:`Chỉ mục`,delivery:`Phân phối`,deliveryDescription:`Sự kiện bền vững và việc phát lại vẫn ở trong PostgreSQL. Một broker tùy chọn phân phối tín hiệu đánh thức.`,brokerEndpoint:`Điểm cuối broker`,exchange:`Exchange`},configure:{storageTitle:`Cấu hình lưu trữ tệp`,searchTitle:`Cấu hình tìm kiếm phiếu`,eventsTitle:`Cấu hình phân phối sự kiện`,saved:`Đã lưu cài đặt hệ thống`,instanceName:`Tên hệ thống`,instanceDescription:`Mô tả hệ thống`,publicUrlSource:`URL công khai được đặt bởi KANVIL_URL trong cấu hình triển khai.`,storageIntro:`Tệp đính kèm và ảnh hồ sơ dùng nhà cung cấp này. Tệp hiện có giữ nguyên vị trí lưu trữ ban đầu.`,storageProvider:`Nhà cung cấp lưu trữ`,localDescription:`Nội dung tệp được lưu trong cơ sở dữ liệu cục bộ và nằm trong bản sao lưu PostgreSQL.`,s3Endpoint:`Điểm cuối S3`,s3EndpointHint:`Để trống điểm cuối nếu dùng Amazon S3.`,region:`Vùng`,prefix:`Tiền tố khóa đối tượng`,accessKeyId:`ID khóa truy cập`,secretAccessKey:`Khóa truy cập bí mật`,savedSecret:`Đã lưu. Để trống để giữ nguyên.`,deploymentCredentials:`Dùng thông tin xác thực của triển khai khi bỏ trống`,pathStyle:`Dùng URL bucket kiểu đường dẫn`,storageVerified:`Đã xác minh kết nối lưu trữ`,testStorage:`Kiểm tra kết nối lưu trữ`,filesWaiting_other:`{{count, number}} tệp đang chờ chuyển. Các tệp đang chờ vẫn đọc được từ PostgreSQL.`,transfersComplete:`Đã chuyển xong mọi tệp.`,storageDeployment:`Lưu trữ được cấu hình bởi KANVIL_STORAGE_PROVIDER và các biến triển khai S3_*.`,locations:`Vị trí lưu trữ hiện có`,locationFiles_other:`{{count, number}} tệp`,cleanUp:`Dọn tệp không dùng`,cleanUpConfirm:`Xóa các tệp không được tham chiếu và các lượt tải lên thất bại cũ hơn một ngày? Tệp đính kèm vào phiếu hoặc hồ sơ được giữ lại.`,cleanUpNote:`Việc dọn dẹp cũng chạy tự động. Đối tượng S3 cần sao lưu bucket bên cạnh sao lưu cơ sở dữ liệu.`,searchProvider:`Nhà cung cấp tìm kiếm`,searchBuiltIn:`Tìm kiếm PostgreSQL tích hợp sẵn`,indexName:`Tên chỉ mục Kanvil`,searchAuthentication:`Xác thực tìm kiếm`,noAuthentication:`Không xác thực`,apiKey:`Khóa API`,basic:`Tên người dùng và mật khẩu`,searchApiKey:`Khóa API tìm kiếm`,optional:`Tùy chọn`,searchUsername:`Tên người dùng tìm kiếm`,searchPassword:`Mật khẩu tìm kiếm`,searchVerified:`Đã xác minh kết nối tìm kiếm`,testSearch:`Kiểm tra kết nối tìm kiếm`,rebuildQueued:`Đã xếp hàng dựng lại chỉ mục tìm kiếm`,rebuild:`Dựng lại chỉ mục`,searchNote:`PostgreSQL vẫn là nguồn chính cho quyền và bộ lọc. Tìm kiếm quay về PostgreSQL khi chỉ mục ngoài đang cập nhật hoặc không khả dụng.`,brokerProvider:`Nhà cung cấp phân phối sự kiện`,brokerBuiltIn:`Thông báo PostgreSQL tích hợp sẵn`,rabbitUrl:`URL kết nối RabbitMQ`,savedBrokerEndpoint:`Điểm cuối broker đã lưu`,rabbitExchange:`Exchange RabbitMQ`,brokerVerified:`Đã xác minh phân phối RabbitMQ`,testBroker:`Kiểm tra kết nối broker`,brokerNote:`RabbitMQ phát tín hiệu đánh thức của sự kiện đã cam kết tới các máy Kanvil và đánh thức tiến trình nền. PostgreSQL giữ sự kiện bền vững và công việc đang chờ, đồng thời gửi tín hiệu đánh thức khi broker không khả dụng.`,brokerDeployment:`Phân phối sự kiện được cấu hình bởi KANVIL_BROKER_PROVIDER và các biến triển khai RABBITMQ_*.`,save:`Lưu cài đặt hệ thống`},authentication:{title:`Xác thực`,saved:`Đã lưu cài đặt xác thực`,emailPassword:`Đăng nhập bằng email và mật khẩu`,emailPasswordDescription:`Bao gồm mã đăng nhập qua email và đặt lại mật khẩu.`,ssoProvision:`Tự động tạo người dùng từ SSO`,ssoProvisionDescription:`Người dùng SSO mới không có quyền truy cập không gian làm việc hay dự án cho đến khi được mời.`,registration:`Đăng ký công khai bằng email`,registrationClosed:`Đã đóng`,identityProvider:`Nhà cung cấp danh tính`,notConfigured:`Chưa cấu hình`,linkedProviders:`Nhà cung cấp tài khoản liên kết`,linkedProvidersDescription:`Chỉ đăng nhập các tài khoản đã liên kết với chúng; không bao giờ tạo tài khoản.`,save:`Lưu cài đặt xác thực`,discoveryUrl:`URL khám phá OIDC`,clientId:`ID ứng dụng khách OIDC`,oidcSetup:`Cấu hình OIDC_DISCOVERY_URL, OIDC_CLIENT_ID, OIDC_CLIENT_SECRET và OIDC_NAME, hoặc một cặp CLIENT_ID và CLIENT_SECRET cho GITHUB_, GOOGLE_ hay DISCORD_, trong triển khai, rồi khởi động lại Kanvil. Bí mật của nhà cung cấp không bao giờ được gửi về trình duyệt.`,consumers:`Giao diện cho bên tiêu thụ`,mcpEndpoint:`Điểm cuối MCP`,eventFeed:`Luồng sự kiện thời gian thực`,openApi:`Đặc tả OpenAPI`},users:{title:`Người dùng`,search:`Tìm người dùng`,searchPlaceholder:`Tên hoặc email…`,new:`Người dùng mới`,roleFilter:`Lọc theo vai trò hệ thống`,allRoles:`Mọi vai trò`,administrators:`Quản trị viên`,users:`Người dùng`,statusFilter:`Lọc theo trạng thái tài khoản`,allAccounts:`Mọi tài khoản`,active:`Đang hoạt động`,disabled:`Đã vô hiệu hóa`,noMatches:`Không có người dùng phù hợp`,empty:`Không có người dùng`,user:`Người dùng`,role:`Vai trò`,status:`Trạng thái`,joined:`Ngày tham gia`,actions:`Thao tác`,administrator:`Quản trị viên`,manage:`Quản lý {{name}}`,pagerNoun:`người dùng`,create:`Tạo tài khoản`,creating:`Đang tạo…`,created:`Đã tạo {{email}}`,name:`Tên`,email:`Email`,initialPassword:`Mật khẩu ban đầu`,instanceRole:`Vai trò hệ thống`},account:{details:`Chi tiết tài khoản`,joined:`Tham gia {{date}}`,edit:`Sửa tài khoản`,instanceRole:`Vai trò hệ thống`,adminDescription:`Có thể quản trị mọi không gian làm việc, tài khoản và cài đặt triển khai.`,userDescription:`Vai trò trong không gian làm việc và dự án quyết định quyền truy cập.`,changeRole:`Đổi vai trò`,changeRoleTitle:`Đổi vai trò hệ thống`,signInMethods:`Phương thức đăng nhập`,setPassword:`Đặt mật khẩu cục bộ`,activeSessions:`Phiên đang hoạt động`,sessions_other:`{{count, number}} phiên`,revokeSessions:`Thu hồi phiên`,revokeConfirm:`Đăng xuất {{name}} khỏi mọi thiết bị? Khóa API vẫn hoạt động.`,sessionsRevoked:`Đã thu hồi phiên`,access:`Quyền truy cập tài khoản`,accessDisabled:`Đăng nhập và truy cập API đã bị vô hiệu hóa.`,accessPreserved:`Vô hiệu hóa tài khoản vẫn giữ lại phiếu và lịch sử hoạt động.`,enable:`Kích hoạt tài khoản`,disable:`Vô hiệu hóa tài khoản`,enableConfirm:`Khôi phục quyền đăng nhập cho {{name}}?`,disableConfirm:`Vô hiệu hóa đăng nhập và truy cập API của {{name}}, đồng thời thu hồi các phiên?`,enabled:`Đã kích hoạt tài khoản`,disabledToast:`Đã vô hiệu hóa tài khoản`,updateFailed:`Không thể cập nhật tài khoản`,workspaces:`Không gian làm việc`,addToWorkspace:`Thêm vào không gian làm việc`,noWorkspaces:`Không thuộc không gian làm việc nào`,projectAccess:`Quyền truy cập dự án trực tiếp`,updated:`Đã cập nhật tài khoản`,roleUpdated:`Đã cập nhật vai trò hệ thống`,workspaceAdded:`Đã thêm quyền truy cập không gian làm việc`,passwordMismatch:`Mật khẩu mới không khớp.`,passwordSet:`Đã đặt mật khẩu cục bộ và thu hồi các phiên`,name:`Tên`,email:`Email`,user:`Người dùng`,administrator:`Quản trị viên`,adminsNote:`Quản trị viên có thể quản lý mọi không gian làm việc, người dùng và cài đặt hệ thống.`,workspace:`Không gian làm việc`,workspaceRole:`Vai trò không gian làm việc`,newPassword:`Mật khẩu mới`,confirmPassword:`Xác nhận mật khẩu mới`,passwordNote:`Thao tác này đặt mật khẩu cục bộ và đăng xuất người dùng khỏi mọi thiết bị.`,save:`Lưu thay đổi`},delivery:{field:{address:`Địa chỉ email`,server:`Máy chủ`,topic:`Chủ đề`,accessToken:`Token truy cập`,applicationToken:`Token ứng dụng`,endpointUrl:`URL điểm cuối`,signingSecret:`Bí mật ký`,incomingWebhookUrl:`URL webhook đến`,webhookUrl:`URL webhook`,channel:`Kênh`,botToken:`Token bot`,chatId:`ID cuộc trò chuyện`,chatIdPlaceholder:`-1001234567890 hoặc @channel`,topicId:`ID chủ đề`,optional:`{{label}} (tùy chọn)`,removeSaved:`Gỡ {{label, lowercase}} đã lưu`,savedSecret:`Đã lưu · để trống để giữ nguyên`},failure:{blockedAddress:`Địa chỉ này không được phép`,redirectBlocked:`Điểm cuối đã chuyển hướng`,dnsError:`Không tìm thấy máy chủ`,networkError:`Không thể kết nối`,timeout:`Hết thời gian chờ`,invalidEndpoint:`Điểm cuối không hợp lệ`,emailUnavailable:`Máy chủ này chưa cấu hình email`,smtpError:`Máy chủ thư không khả dụng`,accessRevoked:`Quản trị viên đã kết nối nó mất quyền truy cập; hãy kết nối lại`,repositoryMismatch:`Một lượt gửi đến từ kho mã khác`,http:`Bị từ chối với HTTP {{status}}`,smtp:`Máy chủ thư trả lời {{code}}`},health:{delivery:{done:`Đã gửi <time/>`,pending:`Đang gửi…`,none:`Chưa gửi gì`,failed:`{{reason}}`},access:{done:`Đã kiểm tra quyền truy cập <time/>`,pending:`Đang kiểm tra quyền truy cập…`,none:`Chưa kiểm tra quyền truy cập`,failed:`Kiểm tra quyền truy cập: {{reason}}`},retrying:`đang thử lại`},paused:`Tạm dừng`,failing:`Đang lỗi`,sendTest:`Gửi thử đến {{name}}`,testQueued:`Đã xếp hàng gửi thử`,resume:`Tiếp tục {{name}}`,pause:`Tạm dừng {{name}}`,edit:`Sửa {{name}}`,disconnect:`Ngắt kết nối {{name}}`,disconnected:`Đã ngắt kết nối {{name}}`,name:`Tên`,type:`Kiểu`,channels:`Kênh`,addChannel:`Thêm kênh`,noChannels:`Không có kênh`,editChannel:`Sửa kênh`,channelSaved:`Đã lưu kênh`,channelRemoval:`Ngắt kết nối {{name}}? Cài đặt và các thông báo đang xếp hàng của kênh sẽ bị hủy.`,sendFrom:`Gửi thông báo từ`,routeOff:`Không gì cả`,routeAll:`Mọi dự án`,routeSelected:`Dự án đã chọn`,saveChannel:`Lưu kênh`,adminsOnly:`Quản trị viên dự án quản lý các tích hợp`,destinations:`Đích đến`,addDestination:`Thêm đích đến`,noDestinations:`Không có đích đến`,editDestination:`Sửa đích đến`,destinationSaved:`Đã lưu đích đến`,destinationRemoval:`Ngắt kết nối {{name}}? Cài đặt và các tin nhắn đang xếp hàng của đích đến sẽ bị hủy.`,send:`Gửi`,saveDestination:`Lưu đích đến`},repository:{setup:{github:`Token cần quyền đọc kho mã, và quyền ghi issue và pull request để bình luận hoặc đồng bộ issue. Thêm webhook GitHub với URL sao chép từ dòng của kho mã này, content type application/json, bí mật này, và các sự kiện Branch or tag creation, Branch or tag deletion, Issues, Issue comments và Pull requests.`,gitea:`Token cần phạm vi read:repository, và write:issue để bình luận hoặc đồng bộ issue. Thêm webhook Gitea với URL sao chép từ dòng của kho mã này, content type application/json, bí mật này, và các sự kiện Create, Delete, Issues, Issue Label, Issue Comment và Pull Request.`,gitlab:`Token cần phạm vi read_api, và api để bình luận hoặc đồng bộ issue. Thêm webhook GitLab với URL sao chép từ dòng của kho mã này, token bí mật này, và các sự kiện Push, Issues, Comments và Merge request.`},noWebhook:`Chưa nhận webhook nào`,webhookReceived:`Đã nhận webhook <time/>`,saved:`Đã lưu kho mã`,title:`Kho mã`,connect:`Kết nối kho mã`,empty:`Không có kho mã`,checkAccess:`Kiểm tra quyền truy cập {{repository}}`,accessQueued:`Đã xếp hàng kiểm tra quyền truy cập`,copyWebhook:`Sao chép URL webhook của {{repository}}`,issueSync:`Đồng bộ issue cho {{repository}}`,removal:`Ngắt kết nối {{repository}}? Webhook của kho mã ngừng hoạt động ngay. Các liên kết nó đã thêm vẫn ở trên phiếu.`,edit:`Sửa kho mã`,host:`Máy chủ mã`,serverUrl:`URL máy chủ`,serverUrlOptional:`URL máy chủ (tùy chọn)`,repository:`Kho mã {{host}}`,nestedPlaceholder:`group/project`,placeholder:`owner/repository`,accessToken:`Token truy cập`,webhookSecret:`Bí mật webhook`,savedSecret:`Đã lưu · để trống để giữ nguyên`,commentOnLink:{pull_request:`Bình luận vào issue và pull request mới được liên kết`,merge_request:`Bình luận vào issue và merge request mới được liên kết`},moveTickets:`Chuyển phiếu được liên kết`,noMove:`Không chuyển`,save:`Lưu kho mã`},issueSync:{reason:{labels:`Nhãn đồng bộ của issue đã thay đổi`,conflict:`Đã thay đổi ở cả hai phía`,changedWhilePaused:`Issue đã thay đổi trong khi kho mã bị tạm dừng`,unverified:`Phản hồi của máy chủ mã không xác nhận thay đổi`,claimConflict:`Phiếu đã được nhận`,invalidContent:`Issue dài hơn mức một phiếu cho phép`},issuesSyncing_other:`{{count, number}} issue đang đồng bộ`,linksStopped_other:`{{count, number}} liên kết đã dừng`,match:`Khớp`,matchAny:`Bất kỳ nhãn nào trong số này`,matchAll:`Tất cả các nhãn này`,preview:{matching:`Tiếp tục đồng bộ`,export:`Issue mới sẽ tạo`,pause:`Liên kết sẽ tạm dừng`,review:`Liên kết cần xem xét`},applied:`Đã áp dụng đồng bộ issue`,title:`Đồng bộ issue · {{repository}}`,outbound:`Kanvil sang {{host}}`,exportTickets:`Xuất phiếu thành issue`,exportDescription:`Phiếu đang mở sẽ có issue mới; tiêu đề, mô tả, trạng thái và bình luận mới được giữ đồng bộ.`,ticketLabels:`Chỉ phiếu có các nhãn này`,everyTicket:`Mọi phiếu đang mở`,inbound:`{{host}} sang Kanvil`,importIssues:`Nhập issue thành phiếu`,importDescription:`Issue đang mở được nhập khi {{host}} báo cáo chúng lần tới.`,issueLabels:`Chỉ issue có các nhãn này`,everyIssue:`Mọi issue đang mở`,previewLabel:`Xem trước`,previewAction:`Xem trước`,stopped:`Liên kết đã dừng · {{repository}}`,review:`Xem xét`,linkRemoved:`Đã gỡ liên kết`,resumed:`Đã tiếp tục đồng bộ`,open:`Đang mở`,closed:`Đã đóng`,reviewTitle:`Xem xét {{key}}`,mayExist:`{{host}} có thể đã có issue này; hãy kiểm tra trước khi tạo lại.`,comparison:`So sánh`,field:{title:`tiêu đề`,description:`mô tả`,state:`trạng thái`},notReported:`Chưa báo cáo`,unlink:`Hủy liên kết`,keepHost:`Giữ bản {{host}}`,keepKanvil:`Giữ bản Kanvil`,createAgain:`Tạo lại issue`,unlinkTicket:`Hủy liên kết {{key}}`,unlinkConfirm:`Ngừng đồng bộ {{key}}? Cả phiếu và issue đều được giữ lại.`},import:{count:{tickets:`Phiếu`,workflow:`Trạng thái quy trình`,fields:`Trường tùy chỉnh`,labels:`Nhãn`,relations:`Quan hệ`,comments:`Bình luận`,evidence:`Bằng chứng`,links:`Liên kết`},notExport:`Tệp này không phải bản xuất phiếu của Kanvil.`,progress_other:`{{status}} · {{done, number}} trên {{count, number}} bản ghi`,progressFailed_other:`{{status}} · {{done, number}} trên {{count, number}} bản ghi · {{failed, number}} thất bại`,title:`Nhập`,description:`Tạo dự án từ bản xuất phiếu Kanvil hoặc từ trình theo dõi khác: Linear, Jira, Trello, Plane, PLANKA hoặc Kaneo.`,action:`Nhập dự án`,detailsOf:`Chi tiết của {{name}}`,details:`Chi tiết`,exportFile:`Tệp xuất Kanvil`,source:`Nguồn`,file:`Tệp xuất`,jiraEdition:`Phiên bản Jira`,siteUrl:`URL trang`,accountEmail:`Email tài khoản`,apiKey:`Khóa API`,apiToken:`Token API`,personalToken:`Token truy cập cá nhân`,token:`Token`,apiUrl:`URL API`,workspaceSlug:`Mã URL không gian làm việc`,signInWith:`Đăng nhập bằng`,username:`Tên người dùng hoặc email`,password:`Mật khẩu`,checkConnection:`Kiểm tra thông tin kết nối`,noProjects:`Thông tin xác thực này không đọc được {{label, lowercase}} nào.`,includeComments:`Bao gồm bình luận`,projectName:`Tên dự án`,start:`Nhập`,connect:`Kết nối`,preview:`Xem trước`,starting:`Đang bắt đầu…`,connecting:`Đang kết nối…`,checking:`Đang kiểm tra…`,matched:`Người đã khớp`,unmatched:`Người chưa khớp`,previewLabel:`Xem trước lượt nhập`,errorPrefix:`Lỗi: `,notePrefix:`Lưu ý: `,progressLabel:`Tiến độ nhập`,notImported:`Bản ghi chưa được nhập`,stop:`Dừng nhập`,openProject:`Mở dự án`}},native:{labelValue:`{{label}}: {{value}}`,ui:{dismiss:`Bỏ qua`,loading:`Đang tải`},server:{url:`URL máy chủ`,connect:`Kết nối`,change:`Đổi máy chủ`,invalidOrigin:`Dùng nguồn gốc HTTP hoặc HTTPS của máy chủ Kanvil, không kèm đường dẫn hay thông tin xác thực.`,httpsRequired:`Dùng HTTPS để kết nối tới máy chủ Kanvil.`},login:{setupTitle:`Tạo tài khoản chủ sở hữu`,signIn:`Đăng nhập`,signingIn:`Đang đăng nhập…`,createAccount:`Tạo tài khoản`,signInWith:`Đăng nhập bằng {{provider}}`,name:`Tên`,setupToken:`Token thiết lập`,email:`Email`,password:`Mật khẩu`},connection:{connecting:`đang kết nối`,connected:`● Trực tiếp`,offline:`Ngoại tuyến · dữ liệu đã lưu`,closed:`đã đóng`,signedOut:`Đăng nhập để kết nối lại`},screen:{projects:`Dự án`,inbox:`Hộp thư đến`,settings:`Cài đặt`,tickets:`Phiếu`,ticket:`Phiếu`,newTicket:`Phiếu mới`,editTicket:`Sửa phiếu`},projects:{empty:`Chưa có dự án`,new:`Dự án mới`,name:`Tên dự án`,prefix:`Tiền tố phiếu`,description:`Mô tả`,create:`Tạo dự án`},tickets:{search:`Tìm phiếu`,searchPlaceholder:`Tiêu đề, mô tả hoặc mã`,allStatuses:`Mọi trạng thái`,empty:`Không có phiếu phù hợp`,count:`{{shown}} trên {{total}}`},ticket:{priority:`Mức ưu tiên: {{priority}}`,noDifficulty:`Chưa xác định độ khó`,version:`v{{version}}`,starts:`Bắt đầu {{date}}`,due:`Hạn {{date}}`},editor:{stale:`Phiếu này đã thay đổi. Bản nháp đã lưu vẫn dùng phiên bản {{version}}.`,discardDraft:`Hủy bản nháp và tải lại`,title:`Tiêu đề`,noDifficulty:`Chưa xác định`,labels:`Nhãn (phân cách bằng dấu phẩy)`,scopes:`Phạm vi (phân cách bằng dấu phẩy)`,editMarkdown:`Sửa Markdown`,previewMarkdown:`Xem trước Markdown`,description:`Mô tả (Markdown)`,acceptanceCriteria:`Tiêu chí chấp nhận (Markdown)`,parent:`ID phiếu cha`,automationReady:`Sẵn sàng cho tác tử khi yêu cầu và phụ thuộc cho phép`,holdReason:`Lý do tạm giữ`,draftSaved:`Đã lưu bản nháp trên thiết bị này`,save:`Lưu phiếu`},detail:{archived:`Đã lưu trữ`,subscribe:`Theo dõi`,unsubscribe:`Bỏ theo dõi`,share:`Chia sẻ`,description:`Mô tả`,noDescription:`_Không có mô tả_`,acceptanceCriteria:`Tiêu chí chấp nhận`,noAcceptanceCriteria:`_Không có tiêu chí chấp nhận_`,fields:`Trường`,archive:{action:`Lưu trữ phiếu`,title:`Lưu trữ phiếu?`,message:`Gỡ phiếu này khỏi danh sách đang hoạt động và khỏi diện tác tử có thể nhận?`},unarchive:{action:`Bỏ lưu trữ phiếu`,title:`Bỏ lưu trữ phiếu?`,message:`Đưa phiếu này trở lại danh sách đang hoạt động?`}},readiness:{title:`Mức sẵn sàng cho tác tử`,ready:`Sẵn sàng để nhận`,notReady:`Chưa sẵn sàng để nhận`,hold:`Tạm giữ: {{reason}}`,claimed:`Đã được {{worker}} nhận đến {{time}}.`,release:{action:`Trả lại việc đã nhận`,title:`Trả lại việc đã nhận?`,message:`Hãy dừng tiến trình của bạn trước khi trả lại quyền sở hữu.`,confirm:`Trả lại`},recover:{action:`Thu hồi việc nhận đã hết hạn`,explanation:`Chỉ quản trị viên dự án mới có thể thu hồi việc nhận đã hết hạn. Hãy xác nhận tiến trình đã dừng trước.`,reason:`Lý do thu hồi`,confirm:`Tiến trình đã dừng · thu hồi`}},relations:{title:`Quan hệ`,parent:`Phiếu cha · {{key}} · {{title}}`,openParent:`Mở phiếu cha`,children:`Phiếu con`,previousChildren:`Phiếu con trước`,nextChildren:`Phiếu con tiếp theo`,remove:`Gỡ quan hệ`,removeTitle:`Gỡ quan hệ?`,add:`Thêm quan hệ`,find:`Tìm phiếu`,type:`Quan hệ`,ticket:`Phiếu`,choose:`Chọn phiếu`},discussion:{title:`Thảo luận`,previous:`Bình luận trước`,next:`Bình luận tiếp theo`,field:`Bình luận (Markdown)`,submit:`Bình luận`,you:`Bạn`,edit:`Sửa bình luận`,editField:`Bình luận`,delete:`Xóa bình luận`,deleteTitle:`Xóa bình luận?`,deleteMessage:`Xóa vĩnh viễn bình luận này?`,save:`Lưu bình luận`},attachments:{title:`Tệp đính kèm`,item:`{{name}} · {{size}} kB`,remove:`Gỡ {{name}}`,removeTitle:`Gỡ tệp đính kèm?`,working:`Đang xử lý…`,add:`Thêm tệp đính kèm`,tooLarge:`Chọn tệp không lớn hơn 10 MB.`,sharingUnavailable:`Không thể chia sẻ tệp trên thiết bị này.`},evidence:{title:`Bằng chứng`,explanation:`Kết quả do tài khoản gửi chúng báo cáo.`,add:`Thêm bằng chứng`,name:`Tiêu đề`,url:`URL`,outcome:`Kết quả báo cáo`,commit:`Commit (mã băm đầy đủ)`,note:`Ghi chú`,save:`Lưu bằng chứng`},activity:{title:`Hoạt động`,previous:`Hoạt động trước`,next:`Hoạt động tiếp theo`},inbox:{markAllRead:`Đánh dấu tất cả đã đọc`,empty:`Không có thông báo`},notifications:{title:`Thông báo`,inApp:`Cập nhật phiếu đã theo dõi trong Hộp thư đến`,push:`Thông báo đẩy`,enableDevice:`Bật thông báo đẩy trên thiết bị này`,disableDevice:`Tắt thông báo đẩy trên thiết bị này`,unconfigured:`Bản dựng này cần ID dự án Expo và cấu hình ký để dùng thông báo đẩy.`,noProjectId:`Bản dựng này cần ID dự án Expo để dùng thông báo đẩy.`,permissionDenied:`Cho phép thông báo trong cài đặt thiết bị để bật thông báo đẩy.`,channel:`Cập nhật phiếu`},settings:{password:{title:`Mật khẩu cục bộ`,current:`Mật khẩu hiện tại`,new:`Mật khẩu mới`,change:`Đổi mật khẩu`,updated:`Đã cập nhật mật khẩu; các phiên khác đã bị thu hồi`},oidc:{linked:`Đã liên kết tài khoản`,explanation:`Liên kết tài khoản này trước khi đăng nhập bằng nhà cung cấp này.`,link:`Liên kết {{provider}}`},signOut:{action:`Đăng xuất`,title:`Đăng xuất?`,message:`Phiếu và bản nháp đã lưu của tài khoản này sẽ bị xóa khỏi thiết bị này.`},changeServer:{title:`Đổi máy chủ?`,message:`Đăng xuất và xóa bộ nhớ đệm cục bộ cùng bản nháp của tài khoản này?`}}}};export{e as default};
@@ -1 +0,0 @@
1
- import{i as e}from"./rolldown-runtime-COiEfhsA.js";import{$ as t,G as n,J as r,Jt as i,K as a,Mn as o,Zt as s,bt as c,c as l,in as u,pn as d,q as f,r as p,vt as m,yt as h}from"./default-D5TdIZQS.js";import{$ as g,B as ee,G as te,H as _,Hi as v,J as y,Ji as b,K as x,Oa as S,Pt as C,Q as w,V as T,X as E,Y as D,Zi as O,at as k,di as A,it as j,nt as M,q as N,qa as P,qi as F,ra as I,vt as L}from"./search-D94SZwrC.js";import{g as R}from"./item-Cq_ZbivE.js";import{a as ne,c as z}from"./project-lifecycle-Ba7iRF3u.js";import{n as B,r as V}from"./CompositeItem-BbuEp99X.js";import{t as H}from"./invitations-BmpelTJu.js";import{t as re}from"./upload-CGpna3R2.js";import{Vt as U,c as ie,i as W,n as G,o as ae,r as K,s as oe,t as se}from"./index-DoqlyejP.js";import{n as q,r as J,t as Y}from"./member-directory-CHKUw0u4.js";import{t as ce}from"./label-settings-B3LsJxhk.js";var X=e(o(),1),Z=p();function Q({workspaceId:e,canEdit:t,authority:n}){let r=P(v.query(`list_workspace_roles`,{workspaceId:e})),i=O(`create_workspace_role`),a=O(`update_workspace_role`),o=O(`delete_workspace_role`),[s,c]=(0,X.useState)(null),[l,u]=(0,X.useState)(null),f=r.data??[],p=i.isPending||a.isPending,g=e=>n.capabilities.includes(e),_=e=>(e.id!==`admin`||n.admin)&&e.permissions.every(g);function b(e){i.reset(),a.reset(),c({role:e,name:e?.name??``,permissions:e?[...e.permissions]:[]})}function A(t,n,r){return t?a.mutateAsync({workspaceId:e,roleId:t.id,expectedVersion:t.version,name:n,permissions:r}):i.mutateAsync({workspaceId:e,name:n,permissions:r})}async function M(t,n){await o.mutateAsync({workspaceId:e,roleId:t.id,expectedVersion:t.version,...n?{reassignTo:n}:{}}),u(null),S.success(d(`settings.roles.deleted`))}let F=l?f.filter(e=>e.id!==l.role.id&&_(e)):[];return(0,Z.jsxs)(`section`,{children:[(0,Z.jsx)(j,{title:d(`settings.roles.title`),action:t&&(0,Z.jsx)(y,{label:d(`settings.roles.new`),variant:`default`,onClick:()=>b(null),children:(0,Z.jsx)(R,{})})}),(0,Z.jsx)(x,{error:r.error}),r.isPending?(0,Z.jsx)(E,{}):f.length?f.map(e=>{let n=t&&!e.seeded&&_(e);return(0,Z.jsxs)(G,{compact:!0,title:(0,Z.jsxs)(`span`,{className:`flex min-w-0 items-baseline gap-2`,children:[(0,Z.jsx)(`span`,{dir:`auto`,className:`min-w-0`,children:q(e)}),e.seeded&&(0,Z.jsx)(`span`,{className:`shrink-0 text-xs font-normal text-muted-foreground`,children:d(`settings.roles.builtIn`)})]}),description:e.permissions.length?e.permissions.map(e=>m[e].label).join(` · `):d(`settings.roles.readOnly`),children:[(0,Z.jsx)(`span`,{className:`text-xs whitespace-nowrap text-muted-foreground tabular-nums`,children:d(`settings.roles.memberships`,{count:e.assigned})}),n&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(y,{label:d(`settings.roles.editNamed`,{name:q(e)}),onClick:()=>b(e),children:(0,Z.jsx)(V,{})}),e.assigned?(0,Z.jsx)(y,{label:d(`settings.roles.deleteNamed`,{name:q(e)}),onClick:()=>{o.reset(),u({role:e,reassignTo:`reader`})},children:(0,Z.jsx)(B,{})}):(0,Z.jsx)(T,{label:d(`settings.roles.deleteNamed`,{name:q(e)}),icon:(0,Z.jsx)(B,{}),danger:!0,description:d(`settings.roles.deleteUnused`,{name:q(e)}),onConfirm:()=>M(e)})]})]},e.id)}):!r.error&&(0,Z.jsx)(te,{title:d(`settings.roles.empty`)}),(0,Z.jsx)(w,{title:s?.role?d(`settings.roles.edit`):d(`settings.roles.new`),open:!!s,onOpenChange:e=>{e||c(null)},busy:p,children:s&&(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),A(s.role,s.name.trim(),s.permissions).then(()=>{c(null),S.success(d(`settings.roles.saved`))}).catch(()=>{})},children:[(0,Z.jsx)(D,{label:d(`settings.roles.name`),value:s.name,onChange:e=>c({...s,name:e.target.value}),maxLength:40,required:!0,autoFocus:!0}),(0,Z.jsxs)(`fieldset`,{className:`mb-4`,children:[(0,Z.jsx)(`legend`,{className:`mb-1 text-sm font-medium`,children:d(`settings.roles.actions`)}),(0,Z.jsx)(`p`,{className:`mt-0 mb-1 text-xs text-muted-foreground`,children:d(`settings.roles.everyoneReads`)}),h.map(e=>(0,Z.jsx)(ee,{label:m[e].label,description:m[e].description,checked:s.permissions.includes(e),disabled:p||!g(e),onCheckedChange:t=>c({...s,permissions:t?[...s.permissions,e]:s.permissions.filter(t=>t!==e)})},e))]}),s.role&&s.role.assigned>0&&(0,Z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:d(`settings.roles.changesApply`,{count:s.role.assigned})}),(0,Z.jsx)(N,{error:i.error??a.error,pending:p,submitLabel:d(`settings.roles.save`),submitDisabled:!s.name.trim(),onCancel:()=>c(null)})]})}),(0,Z.jsx)(w,{title:d(`settings.roles.delete`),open:!!l,onOpenChange:e=>{e||u(null)},busy:o.isPending,children:l&&(0,Z.jsxs)(`form`,{onSubmit:e=>{e.preventDefault(),M(l.role,l.reassignTo).catch(()=>{})},children:[(0,Z.jsx)(`p`,{className:`mt-0 text-sm text-muted-foreground`,children:d(`settings.roles.reassignDescription`,{count:l.role.assigned,name:q(l.role)})}),(0,Z.jsx)(k,{label:d(`settings.roles.moveTo`),value:l.reassignTo,onValueChange:e=>e&&u({...l,reassignTo:e}),children:F.map(e=>(0,Z.jsx)(C,{value:e.id,children:q(e)},e.id))}),(0,Z.jsx)(N,{error:o.error,pending:o.isPending,danger:!0,submitLabel:d(`settings.roles.delete`),pendingLabel:d(`settings.lifecycle.deleting`),onCancel:()=>u(null)})]})})]})}var le=[`tickets`,`workflow`,`fields`,`labels`,`relations`,`comments`,`evidence`,`links`],ue=()=>d(`admin.import.notExport`),de=e=>e?.status===`running`,fe=e=>e.issues.some(e=>e.severity===`error`);function pe(e){let{done:t,failed:n,total:i}=e.progress,a={status:r[e.status],done:t,failed:n,count:i};return d(n?`admin.import.progressFailed`:`admin.import.progress`,a)}function me({workspaceId:e}){let[t,n]=(0,X.useState)(!1),[r,i]=(0,X.useState)(null),a=P({...v.query(`list_imports`,{workspaceId:e}),refetchInterval:e=>e.state.data?.some(de)?2e3:!1}),o=e=>{i(e),n(!0)};return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(G,{title:d(`admin.import.title`),description:d(`admin.import.description`),children:(0,Z.jsxs)(A,{onClick:()=>o(null),children:[(0,Z.jsx)(re,{}),d(`admin.import.action`)]})}),a.data?.map(e=>(0,Z.jsx)(G,{compact:!0,title:(0,Z.jsxs)(Z.Fragment,{children:[e.name,` `,(0,Z.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.key})]}),description:(0,Z.jsxs)(Z.Fragment,{children:[pe(e),` · `,(0,Z.jsx)(M,{value:e.updatedAt})]}),children:(0,Z.jsx)(A,{size:`sm`,variant:`ghost`,"aria-label":d(`admin.import.detailsOf`,{name:e.name}),onClick:()=>o(e.id),children:d(`admin.import.details`)})},e.id)),(0,Z.jsx)(w,{title:d(`admin.import.action`),open:t,onOpenChange:n,children:r?(0,Z.jsx)(Se,{workspaceId:e,runId:r,onClose:()=>n(!1)}):(0,Z.jsx)(be,{workspaceId:e,onStarted:i,onCancel:()=>n(!1)})})]})}var he=[`file`,...a],ge=e=>e===`file`?d(`admin.import.exportFile`):n[e].label,_e={edition:`cloud`,signIn:`password`,baseUrl:``,workspace:``,email:``,username:``,password:``,apiKey:``,token:``},$=e=>({name:`baseUrl`,label:d(`admin.import.siteUrl`),type:`url`,placeholder:e}),ve={linear:()=>[{name:`token`,label:d(`admin.import.apiKey`),type:`password`}],jira:({edition:e})=>[{name:`edition`,label:d(`admin.import.jiraEdition`),choices:t},$(e===`cloud`?`https://example.atlassian.net`:`https://jira.example.com`),...e===`cloud`?[{name:`email`,label:d(`admin.import.accountEmail`),type:`email`},{name:`token`,label:d(`admin.import.apiToken`),type:`password`}]:[{name:`token`,label:d(`admin.import.personalToken`),type:`password`}]],trello:()=>[{name:`apiKey`,label:d(`admin.import.apiKey`),type:`password`},{name:`token`,label:d(`admin.import.token`),type:`password`}],plane:()=>[{...$(`https://api.plane.so`),label:d(`admin.import.apiUrl`)},{name:`workspace`,label:d(`admin.import.workspaceSlug`),placeholder:`my-team`},{name:`token`,label:d(`admin.import.apiToken`),type:`password`}],planka:({signIn:e})=>[$(`https://planka.example.com`),{name:`signIn`,label:d(`admin.import.signInWith`),choices:c},...e===`password`?[{name:`username`,label:d(`admin.import.username`)},{name:`password`,label:d(`admin.import.password`),type:`password`}]:[{name:`token`,label:d(`admin.import.apiKey`),type:`password`}]],kaneo:()=>[$(`https://kaneo.example.com`),{name:`token`,label:d(`admin.import.apiKey`),type:`password`}]},ye=(e,t)=>/^[A-Z][A-Z0-9]{1,9}$/.test(e)?e:ie(t);function be({workspaceId:e,onStarted:t,onCancel:r}){let[a,o]=(0,X.useState)(`file`),[c,l]=(0,X.useState)(_e),[u,p]=(0,X.useState)(),[m,h]=(0,X.useState)(``),[g,te]=(0,X.useState)(!0),[_,v]=(0,X.useState)(),[y,b]=(0,X.useState)(),[S,w]=(0,X.useState)(),[T,E]=(0,X.useState)(``),[A,j]=(0,X.useState)(``),[M,P]=(0,X.useState)(`workspace`),[F,I]=(0,X.useState)(),L=O(`list_import_source_projects`),R=O(`preview_import`),ne=O(`preview_source_import`),z=O(`start_import`),B=(0,X.useRef)(0),V=()=>{B.current+=1,I(void 0),R.reset(),ne.reset()},H=e=>t=>{e(t),V()},re=()=>{V(),p(void 0),h(``),L.reset()},U=e=>{e&&(h(e.ref),E(e.name),j(ye(e.key,e.name)),V())},ie=e=>t=>{l(n=>({...n,[e]:t})),w(void 0),re()},W=a===`file`?[]:ve[a](c),G=a===`file`?void 0:f.safeParse({provider:a,...Object.fromEntries(W.map(e=>[e.name,c[e.name]]))}),K=G?.success?G.data:void 0,se=a===`file`?!!_:!!m,q=!!F&&!fe(F),J=a!==`file`&&!u,Y=e=>B.current===e,ce=a===`file`?R:ne,Q=a===`file`?void 0:n[a];return(0,Z.jsxs)(`form`,{onSubmit:n=>{n.preventDefault();let r=B.current;q?z.mutateAsync({workspaceId:e,importId:F.id,expectedVersion:F.version}).then(e=>t(e.id)).catch(()=>{}):J&&!K?w(Error(G?.error?.issues[0]?.message??d(`admin.import.checkConnection`))):K&&J?L.mutateAsync({workspaceId:e,source:K}).then(e=>{Y(r)&&(p(e),U(e[0]))}).catch(()=>{}):K?ne.mutateAsync({workspaceId:e,key:A,name:T,visibility:M,source:K,sourceProject:m,includeComments:g}).then(e=>{Y(r)&&I(e)}).catch(()=>{}):_&&R.mutateAsync({workspaceId:e,key:A,name:T,visibility:M,bundle:_}).then(e=>{Y(r)&&I(e)}).catch(()=>{})},children:[(0,Z.jsx)(k,{label:d(`admin.import.source`),value:a,onValueChange:e=>{let t=he.find(t=>t===e);t&&(o(t),v(void 0),b(void 0),l(_e),w(void 0),re())},children:he.map(e=>(0,Z.jsx)(C,{value:e,children:ge(e)},e))}),a===`file`?(0,Z.jsx)(D,{label:d(`admin.import.file`),type:`file`,accept:`application/json,.json`,required:!0,onChange:e=>{let t=e.currentTarget.files?.[0];if(v(void 0),V(),b(void 0),!t)return;let n=B.current;t.text().then(e=>{let t=JSON.parse(e);if(!i.pick({format:!0}).safeParse(t).success)throw Error(ue());let r=s.parse(t);B.current===n&&(v(r),E(r.project.name),j(ye(r.project.key,r.project.name)))}).catch(e=>{B.current===n&&b(e instanceof SyntaxError?Error(ue()):e)})}}):(0,Z.jsxs)(Z.Fragment,{children:[W.map(e=>e.choices?(0,Z.jsx)(k,{label:e.label,value:c[e.name],onValueChange:t=>{t!==null&&ie(e.name)(t)},children:Object.entries(e.choices).map(([e,t])=>(0,Z.jsx)(C,{value:e,children:t},e))},e.name):(0,Z.jsx)(D,{label:e.label,type:e.type??`text`,required:!0,autoComplete:`off`,placeholder:e.placeholder,value:c[e.name],onChange:t=>ie(e.name)(t.target.value)},e.name)),(0,Z.jsx)(`p`,{className:`-mt-2 mb-4 text-xs text-muted-foreground`,children:Q?.setup}),(0,Z.jsx)(x,{error:S??L.error}),u&&Q&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(k,{label:Q.project,value:m,onValueChange:e=>U(u.find(t=>t.ref===e)),children:u.map(e=>(0,Z.jsxs)(C,{value:e.ref,children:[e.group&&(0,Z.jsxs)(`span`,{className:`text-muted-foreground`,children:[e.group,` /`]}),` `,e.name,` `,(0,Z.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:e.key})]},e.ref))}),u.length===0&&(0,Z.jsx)(`p`,{className:`-mt-2 mb-4 text-sm text-muted-foreground`,children:d(`admin.import.noProjects`,{label:Q.project})}),(0,Z.jsx)(ee,{label:d(`admin.import.includeComments`),checked:g,onCheckedChange:H(te)})]})]}),(0,Z.jsx)(x,{error:y}),se&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(D,{label:d(`admin.import.projectName`),value:T,onChange:e=>H(E)(e.target.value),required:!0,maxLength:120}),(0,Z.jsx)(ae,{value:A,onChange:H(j)}),(0,Z.jsx)(oe,{value:M,onChange:H(P)})]}),F&&(0,Z.jsx)(xe,{run:F}),(0,Z.jsx)(N,{error:ce.error??z.error,pending:L.isPending||ce.isPending||z.isPending,submitLabel:d(q?`admin.import.start`:J?`admin.import.connect`:`admin.import.preview`),pendingLabel:d(q?`admin.import.starting`:J?`admin.import.connecting`:`admin.import.checking`),submitDisabled:J?!1:!se||!!F&&!q,onCancel:r})]})}function xe({run:e}){let t=e.members.filter(e=>e.userId),n=e.members.filter(e=>!e.userId),r=[...le.map(t=>[d(`admin.import.count.${t}`),e.counts[t]?String(e.counts[t]):``]),[d(`admin.import.matched`),u(t.map(e=>e.name))],[d(`admin.import.unmatched`),u(n.map(e=>e.name))]];return(0,Z.jsxs)(`section`,{"aria-label":d(`admin.import.previewLabel`),className:`mt-2 border-t pt-3`,children:[(0,Z.jsx)(z,{rows:r}),e.issues.length>0&&(0,Z.jsx)(`ul`,{className:`m-0 list-none space-y-1.5 p-0 text-sm`,children:e.issues.map(e=>(0,Z.jsxs)(`li`,{className:e.severity===`error`?`text-destructive`:`text-muted-foreground`,children:[(0,Z.jsx)(`span`,{className:`sr-only`,children:e.severity===`error`?d(`admin.import.errorPrefix`):d(`admin.import.notePrefix`)}),e.message]},e.message))})]})}function Se({workspaceId:e,runId:t,onClose:n}){let r=P({...v.query(`get_import`,{workspaceId:e,importId:t}),refetchInterval:e=>de(e.state.data)?1e3:!1}),i=O(`cancel_import`);if(r.error)return(0,Z.jsx)(x,{error:r.error});let a=r.data;if(!a)return(0,Z.jsx)(E,{});let{done:o,failed:s,total:c}=a.progress,l=c?Math.round((o+s)/c*100):0;return(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsxs)(`p`,{className:`mt-0 mb-2 text-sm`,children:[a.name,` `,(0,Z.jsx)(`span`,{className:`font-mono text-xs text-muted-foreground`,children:a.key})]}),(0,Z.jsxs)(`div`,{className:`my-3`,children:[(0,Z.jsx)(`div`,{role:`progressbar`,"aria-label":d(`admin.import.progressLabel`),"aria-valuemin":0,"aria-valuemax":100,"aria-valuenow":l,className:`h-1.5 overflow-hidden rounded-full bg-border`,children:(0,Z.jsx)(`div`,{className:`h-full bg-primary transition-[width] duration-300`,style:{width:`${l}%`}})}),(0,Z.jsx)(`p`,{role:`status`,className:`mt-2 mb-0 text-sm text-muted-foreground tabular-nums`,children:pe(a)})]}),a.errors.length>0&&(0,Z.jsx)(`ul`,{"aria-label":d(`admin.import.notImported`),className:`m-0 list-none space-y-1 p-0 text-sm`,children:a.errors.map((e,t)=>(0,Z.jsxs)(`li`,{className:`text-destructive`,children:[e.label,`: `,e.message]},t))}),(0,Z.jsx)(x,{error:i.error}),(0,Z.jsxs)(g,{children:[a.status===`running`&&(0,Z.jsx)(A,{disabled:i.isPending,onClick:()=>void i.mutateAsync({workspaceId:e,importId:a.id,expectedVersion:a.version}).catch(()=>{}),children:d(`admin.import.stop`)}),a.projectId&&a.status!==`running`&&(0,Z.jsx)(A,{variant:`default`,render:(0,Z.jsx)(U,{to:`/projects/$projectId`,params:{projectId:a.projectId}}),onClick:n,children:d(`admin.import.openProject`)})]})]})}function Ce({workspace:e,people:t,canTransfer:n}){let[r,i]=(0,X.useState)(!1),[a,o]=(0,X.useState)(``),s=O(`transfer_workspace`),c=t.find(t=>t.userId===e.ownerId),l=t.filter(t=>t.role===`admin`&&!t.disabled&&t.userId!==e.ownerId),u=l.find(e=>e.email===a);return(0,Z.jsx)(G,{title:d(`settings.workspace.owner`),description:c?`${c.name} · ${c.email}`:e.ownerId?void 0:d(`settings.workspace.noOwner`),children:n&&(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(A,{onClick:()=>{o(``),i(!0)},children:d(`settings.workspace.transfer`)}),(0,Z.jsx)(w,{title:d(`settings.workspace.transfer`),open:r,onOpenChange:e=>{i(e),e||s.reset()},busy:s.isPending,children:(0,Z.jsxs)(`form`,{onSubmit:t=>{t.preventDefault(),u&&s.mutateAsync({workspaceId:e.id,expectedVersion:e.version,userId:u.userId}).then(()=>{i(!1),S.success(d(`settings.workspace.transferred`,{name:u.name,workspace:e.name}))}).catch(()=>{})},children:[l.length?(0,Z.jsx)(J,{people:l,value:a,onChange:o,disabled:s.isPending,label:d(`settings.workspace.newOwner`),anyAccount:!1}):(0,Z.jsx)(`p`,{className:`mt-0 text-sm text-muted-foreground`,children:d(`settings.workspace.noEligible`)}),(0,Z.jsxs)(`p`,{className:`mt-0 text-sm text-muted-foreground`,children:[u?d(`settings.workspace.chosenCan`,{name:u.name}):d(`settings.workspace.newOwnerCan`),` `,c?d(`settings.workspace.ownerStays`,{name:c.name}):``]}),(0,Z.jsx)(N,{error:s.error,pending:s.isPending,submitLabel:d(`settings.workspace.transfer`),pendingLabel:d(`settings.workspace.transferring`),submitDisabled:!u,onCancel:()=>i(!1)})]})})]})})}function we({workspaceId:e,section:t}){let n=b(),r=I(),i=F(),a=r.data?.find(t=>t.id===e),o=P({...v.query(`list_workspace_members`,{workspaceId:e}),enabled:!!a?.role}),s=P({...v.query(`list_workspace_roles`,{workspaceId:e}),enabled:!!a?.role}),c=O(`update_workspace`),u=O(`set_workspace_member`);if(r.isPending)return(0,Z.jsx)(E,{});if(!a?.role)return(0,Z.jsxs)(te,{title:d(`settings.workspace.unavailable`),children:[(0,Z.jsx)(x,{error:r.error}),(0,Z.jsx)(A,{render:(0,Z.jsx)(U,{to:`/`}),children:d(`settings.workspace.backToProjects`)})]});let f=l(a),p={admin:a.role===`admin`,capabilities:f},m=f.includes(`workspace.manage`),h=a.ownerId===n.id||n.admin,g=i.data?.filter(e=>e.workspaceId===a.id).length??0;return(0,Z.jsx)(Z.Fragment,{children:(0,Z.jsxs)(K,{title:d(`settings.workspace.title`),section:t,children:[(0,Z.jsxs)(W,{value:`general`,children:[(0,Z.jsx)(`section`,{children:(0,Z.jsx)(se,{name:a.name,description:a.description,nameLabel:d(`settings.workspace.name`),canEdit:m,version:a.version,pending:c.isPending,error:c.error,editLabel:d(`settings.workspace.edit`),badges:(0,Z.jsxs)(Z.Fragment,{children:[(0,Z.jsx)(L,{variant:`secondary`,className:`ml-0.5 font-mono text-[10px] font-normal`,children:a.slug}),(0,Z.jsx)(_,{label:d(`settings.workspace.copyKey`),value:a.slug,size:`icon-xs`})]}),onSave:t=>c.mutateAsync({workspaceId:e,expectedVersion:a.version,name:t.name,description:t.description}).then(()=>S.success(d(`settings.workspace.saved`)))})}),(0,Z.jsxs)(`section`,{children:[(0,Z.jsx)(G,{title:d(`settings.workspace.projects`),description:d(`settings.workspace.projectCount`,{count:g}),children:(0,Z.jsx)(A,{render:(0,Z.jsx)(U,{to:`/`}),children:d(`settings.workspace.viewProjects`)})}),(0,Z.jsx)(Ce,{workspace:a,people:o.data??[],canTransfer:h}),(0,Z.jsx)(G,{title:d(`settings.workspace.members`),description:d(`settings.workspace.membersDescription`),children:(0,Z.jsx)(A,{render:(0,Z.jsx)(U,{to:`/workspaces/$workspaceId/settings`,params:{workspaceId:e},search:{section:`members`}}),children:d(`settings.workspace.manageMembers`)})}),f.includes(`ticket.write`)&&(0,Z.jsx)(me,{workspaceId:e}),h&&(0,Z.jsx)(ne,{workspace:a})]})]}),(0,Z.jsxs)(W,{value:`members`,children:[(0,Z.jsx)(Y,{people:o.data??[],pending:u.isPending,loading:o.isPending,error:o.error,canAdmin:f.includes(`member.manage`),ownerId:a.ownerId,scope:`workspace`,roles:s.data,authority:p,onChange:(t,n)=>u.mutateAsync({workspaceId:e,email:t,role:n})}),f.includes(`invitation.manage`)&&(0,Z.jsx)(H,{workspaceId:e})]}),(0,Z.jsx)(W,{value:`roles`,children:(0,Z.jsx)(Q,{workspaceId:e,canEdit:m,authority:p})}),(0,Z.jsx)(W,{value:`labels`,children:(0,Z.jsx)(ce,{owner:{workspaceId:e},canAdmin:m})})]})})}export{we as WorkspaceSettings};
@@ -1 +0,0 @@
1
- var e={common:{status:{backlog:`待规划`,todo:`待处理`,in_progress:`进行中`,in_review:`审核中`,done:`已完成`,cancelled:`已取消`},priority:{urgent:`紧急`,high:`高`,medium:`中`,low:`低`,none:`无优先级`},kind:{feature:`功能`,bug:`缺陷`,chore:`杂项`,research:`调研`,documentation:`文档`},difficulty:{low:`低`,med:`中`,high:`高`,none:`无难度`},role:{reader:`只读`,writer:`可编辑`,admin:`管理员`},permission:{ticket:{write:{label:`编辑工单`,description:`创建、编辑、移动、认领和评论工单;创建项目`},delete:{label:`删除工单`,description:`永久删除工单`}},project:{manage:{label:`管理项目`,description:`项目详情、工作流、标签、字段、集成和生命周期`}},member:{manage:{label:`管理成员`,description:`添加、更改和移除成员`}},invitation:{manage:{label:`管理邀请`,description:`通过邮箱邀请成员`}},sharing:{manage:{label:`管理共享`,description:`公开只读链接和日历订阅源`}},workspace:{manage:{label:`管理工作区`,description:`工作区详情、共享标签和角色`}}},customFieldType:{text:`文本`,number:`数字`,date:`日期`,checkbox:`复选框`,select:`单选`,multiselect:`多选`},customField:{removedOption:`已移除的选项`,checked:`是`},filterField:{status:`状态`,priority:`优先级`,kind:`类型`,difficulty:`难度`,label:`标签`,assigneeId:`负责人`,customField:`字段`},sort:{priority:`优先级`,updated:`最近更新`,created:`最近创建`,title:`标题`,labels:`标签`,due:`截止日期`,start:`开始日期`,number:`工单编号`,status:`状态`,difficulty:`难度`,kind:`类型`,assignee:`负责人`,manual:`手动`},due:{overdue:`已逾期`,today:`今天截止`,week:`本周截止`,scheduled:`有截止日期`,none:`无截止日期`},relation:{blocks:{outgoing:`阻塞`,incoming:`被阻塞于`},related:{outgoing:`相关`,incoming:`相关`},duplicate:{outgoing:`重复于`,incoming:`被重复于`},causes:{outgoing:`导致`,incoming:`由其导致`},clones:{outgoing:`克隆自`,incoming:`被克隆为`},implements:{outgoing:`实现`,incoming:`由其实现`},reviews:{outgoing:`审核`,incoming:`由其审核`}},remoteKind:{branch:`分支`,pull_request:`拉取请求`,issue:`议题`},notificationCategory:{assignment:`分配`,status:`状态变更`,comment:`评论`,mention:`提及`,update:`其他更新`,due_soon:`即将截止`,overdue:`已逾期`},destinationEvent:{created:`新工单`},deliveryKind:{email:`电子邮件`,webhook:`Webhook`},change:{pull_request:{name:`拉取请求`,opened:`拉取请求已打开`,draft:`草稿拉取请求`,merged:`拉取请求已合并`,closed:`拉取请求未合并即关闭`},merge_request:{name:`合并请求`,opened:`合并请求已打开`,draft:`草稿合并请求`,merged:`合并请求已合并`,closed:`合并请求未合并即关闭`},branchCreated:`分支已创建`},issueLinkState:{active:`同步中`,paused:`已暂停`,review:`需要审核`,creating:`正在创建议题`,unknown:`创建未确认`},importStatus:{previewed:`可以导入`,running:`导入中`,completed:`已导入`,failed:`失败`,cancelled:`已取消`},importProvider:{linear:{project:`团队`,setup:`在 Linear 的 Settings › Security & access 中创建个人 API 密钥,只读权限即可。`},jira:{project:`项目`,setup:`Jira Cloud 使用账户邮箱和在 id.atlassian.com 创建的 API 令牌登录;Data Center 和 Server 使用个人访问令牌。拥有项目的浏览权限即可。`},trello:{project:`看板`,setup:`使用你在 trello.com/power-ups/admin 管理的 Power-Up 的 API 密钥及为其生成的令牌,只读权限即可。`},plane:{project:`项目`,setup:`在 Plane 的 Profile settings › Personal access tokens 中创建个人访问令牌。Plane Cloud 的 API 地址为 https://api.plane.so;工作区 URL 标识是其网址的第一部分。`},planka:{project:`看板`,setup:`使用可以打开该看板的 PLANKA 账户登录;Kanvil 打开的会话在读取结束后即关闭。PLANKA 2 管理员也可以改为签发 API 密钥。`},kaneo:{project:`项目`,setup:`在 Kaneo 的 Settings › Account › Developer 中创建 API 密钥。`}},plankaSignIn:{password:`用户名和密码`,api_key:`API 密钥`},jiraEdition:{cloud:`Cloud`,data_center:`Data Center 或 Server`},event:{label:{created:`标签已创建`,updated:`标签已更新`,deleted:`标签已删除`},workflow:{created:`工作流状态已添加`,updated:`工作流状态已更改`,deleted:`工作流状态已移除`},custom_field:{created:`字段已创建`,updated:`字段已更新`,deleted:`字段已删除`},ticket:{created:`工单已创建`,updated:`工单已更新`,deleted:`工单已删除`,moved:`从其他项目移入`,moved_away:`已移至其他项目`,due_soon:`即将截止`,overdue:`已逾期`,claimed:`工作已认领`},claim:{renewed:`认领已续期`,released:`认领已释放`,recovered:`认领已收回`},comment:{created:`已添加评论`,updated:`评论已编辑`,deleted:`评论已删除`},relation:{added:`已添加关联`,removed:`已移除关联`},attachment:{created:`已附加文件`,deleted:`已移除文件`},evidence:{added:`已附加证据`},resource:{added:`已添加链接`,updated:`链接已编辑`,removed:`已移除链接`},calendar_feed:{created:`日历订阅源已创建`,revoked:`日历订阅源已撤销`},project:{created:`项目已创建`,updated:`项目已更新`,archived:`项目已归档`,restored:`项目已恢复`,transferred:`项目已移至其他工作区`,deleted:`项目已删除`},membership:{updated:`项目访问权限已更改`},workspace:{owner_changed:`工作区所有者已更改`},role:{created:`角色已创建`,updated:`角色已更改`,deleted:`角色已删除`},invitation:{updated:`邀请已更改`},destination:{created:`已添加目标`,updated:`目标已更改`,deleted:`已移除目标`},repository:{connected:`仓库已连接`,updated:`仓库连接已更改`,disconnected:`仓库已断开连接`,received:`已收到仓库 Webhook`},issue_link:{updated:`议题同步已更改`}},error:{network:`无法连接到 Kanvil。请检查网络连接后重试。`,fallback:`无法完成请求`,input:`输入`,code:{unauthorized:`请登录以继续。`,session_required:`此操作需要使用已登录的账户。`,account_disabled:`此账户已停用。`,forbidden:`你没有执行此操作的权限。`,insufficient_scope:`此凭据不允许执行此操作。`,workspace_scope_required:`此操作需要使用拥有工作区访问权限的账户。`,invalid_origin:`不允许此来源。`,not_found:`未找到此项,或你无权查看。`,version_conflict:`加载后此内容已被更改。请重新加载后重试。`,claim_conflict:`另一个执行者已认领此工单。`,idempotency_conflict:`此请求已用于另一项更改。`,project_archived:`请先恢复已归档的项目再进行更改。`,rate_limited:`短时间内更改过多。请稍后重试。`,snapshot_required:`实时数据流已落后。请重新加载以继续。`,request_failed:`无法完成请求`}},action:{add:`添加`,apply:`应用`,back:`返回`,cancel:`取消`,clear:`清除`,close:`关闭`,confirm:`确认`,continue:`继续`,copy:`复制`,create:`创建`,delete:`删除`,done:`完成`,edit:`编辑`,open:`打开`,remove:`移除`,rename:`重命名`,reset:`重置`,retry:`重试`,save:`保存`,search:`搜索`},state:{copied:`已复制`,loading:`加载中…`,saved:`已保存`,saving:`保存中…`,none:`无`,unassigned:`未分配`},evidenceKind:{pull_request:`拉取请求`,test:`测试`,review:`审核`,deployment:`部署`,device:`设备`,other:`其他`},evidenceOutcome:{reported:`已报告`,pending:`待定`,passed:`通过`,failed:`失败`},readinessReason:{project_archived:`项目已归档`,not_open:`工单必须处于待处理状态且未归档`,not_enabled:`尚未启用智能体工作`,missing_description:`添加描述`,missing_acceptance_criteria:`添加验收标准`,missing_difficulty:`选择难度`,duplicate:`此工单已标记为重复`,claim_recovery_required:`收回所有权前,请确认之前的执行者已停止`,claimed:`已被 {{worker}} 认领`,dependency:`{{key}} 尚未完成`},person:{deleted:`已删除的账户`,former:`前成员`},signIn:{codeTitle:`使用验证码登录`,resetTitle:`重置密码`,codeSent:`如果 {{email}} 有账户,验证码已在发送途中。验证码 10 分钟后过期。`,code:`验证码`,newPassword:`新密码`,sendCode:`通过邮件发送验证码`,back:`返回登录`,resend:`重新发送验证码`,resent:`已重新发送验证码`,emailCode:`通过邮件发送登录验证码`,forgot:`忘记密码?`,resetDone:`密码已重置。请使用新密码登录。`,resetDoneTitle:`密码已重置`,resetDoneBody:`请使用新密码登录。`,invalidCode:`该验证码错误、已使用或已过期。请重新发送以获取有效的验证码。`,localPassword:`本地密码`},language:{label:`语言`,system:`系统默认`}},shell:{ui:{showValue:`显示{{label}}`,hideValue:`隐藏{{label}}`,previousPage:`上一页{{noun}}`,nextPage:`下一页{{noun}}`,pageRange:`第 {{from}}–{{to}} 项,共 {{total}} 项`,priority:`{{label}}优先级`,working:`处理中…`,searchPlaceholder:`搜索…`,clearValue:`清除{{label}}`,copyValue:`复制{{label}}`,copied:`已复制{{value}}`},documentTitle:`{{name}} · Kanvil`,openKanvil:`打开 Kanvil`,page:{home:`首页`,myWork:`我的工作`,inbox:`收件箱`,search:`搜索`,settings:`设置`,planning:`规划`,ticket:`工单`,tickets:`工单`,projects:`项目`},connection:{restored:`连接已恢复`,lost:`连接已断开`,reconnecting:`正在重新连接…`,reload:`重新加载`,signIn:`登录以重新连接`},app:{skipToContent:`跳到内容`,assigned:`分配给你的`,openCount_other:`{{count, number}} 个未完成`,noAssigned:`没有分配给你的未完成工单`,allInMyWork_other:`在“我的工作”中查看全部 {{count, number}} 个`,openMyWork:`打开“我的工作”`,recentActivity:`最近动态`,noActivity:`暂无动态`,searchProjects:`搜索项目`,projectCount_other:`{{count, number}} 个项目`,noMatchingProjects:`没有匹配的项目`,clearSearch:`清除搜索`,noWorkspaces:`暂无工作区`,noActiveProjects:`没有活跃的项目`,noProjects:`暂无项目`,archivedProjects:`已归档的项目`,archived:`已归档`,noOpenTickets:`没有未完成的工单`,overdueCount_other:`{{count, number}} 个已逾期`,percentDone:`已完成 {{percent}}`,nextDue:`下次截止 <time/>`,projectSettingsFor:`{{name}} 的项目设置`,pageNotFound:`页面不存在`,openHome:`打开首页`,tryAgain:`重试`,adminRequired:`需要实例管理员权限`,projectNotFound:`项目不存在`,noWorkspaceSelected:`未选择工作区`},auth:{signIn:`登录`,createOwner:`创建所有者账户`,ownerHint:`第一个账户负责管理此实例。`,invitedHint:`请使用受邀的邮箱地址登录以接受邀请。`,signInWith:`使用 {{provider}} 登录`,useEmail:`使用邮箱和密码`,or:`或`,name:`名称`,setupToken:`设置令牌`,setupTokenHint:`使用实例配置中的 KANVIL_SETUP_TOKEN。`,email:`邮箱`,password:`密码`,signingIn:`正在登录…`,createAccount:`创建账户`,consent:{expired:`授权请求已过期。请重新连接客户端。`,title:`授权 {{client}}`,titleUnnamed:`授权客户端`,subtitle:`此客户端请求以你的账户身份访问。项目权限依然适用。`,deny:`拒绝`,allow:`允许访问`},invitation:{unavailable:`邀请不可用`,join:`加入 {{workspace}}`,invited:`受邀账户`,from:`邀请人`,access:`访问权限`,removedProjects:`已移除的项目`,wholeWorkspace:`整个工作区`,expires:`过期时间`,expired:`此邀请已过期。请向工作区管理员索取新的邀请。`,revoked:`此邀请已被撤销。请向工作区管理员索取新的邀请。`,accepted:`此邀请已被接受。请向工作区管理员索取新的邀请。`,wrongAccount:`你当前以 <account>{{current}}</account> 的身份登录。请以 {{invited}} 的身份登录以接受邀请。`,signOut:`退出登录`,joined:`已加入 {{workspace}}`,accept:`接受邀请`},callback:{cancelled:`登录已取消。准备好后请重试。`,linkedElsewhere:`此身份已关联到另一个 Kanvil 账户。请使用其他身份或联系管理员。`,notLinked:`此身份未关联到 Kanvil 账户。请使用本地账户登录,并在设置中关联。`,expired:`登录请求已过期或无法验证。请在此页面重试。`,emailMismatch:`无法关联身份提供方的邮箱。请联系管理员。`,failed:`无法完成登录。请重试或联系管理员。`}},you:`你`,inbox:{markAllRead:`全部标记为已读`,clearRead:`清除已读`,cleared_other:`已清除 {{count, number}} 条已读通知`,unread:`未读`,mentions:`提及`,all:`全部通知`,noUnread:`没有未读通知`,noMentions:`没有提及`,noNotifications:`没有通知`,markUnread:`标记为未读`,markRead:`标记为已读`,dismiss:`移除`},search:{field:`搜索工作区`,placeholder:`搜索工单、项目、评论、动态…`,tab:{all:`全部`,project:`项目`,ticket:`工单`,comment:`评论`,activity:`动态`},indexing:`外部搜索正在同步,工单结果暂时来自 PostgreSQL。`,empty:`搜索工单、项目、评论和动态`,noResults:`没有“{{query}}”的结果`,results:`搜索结果`,pages:`搜索结果分页`,previous:`上一页`,next:`下一页`,type:{project:`项目`,ticket:`工单`,comment:`评论`,activity:`动态`}},column:{key:`工单`,labels:`标签`,scopes:`范围`,status:`状态`,priority:`优先级`,difficulty:`难度`,kind:`类型`,assigneeId:`负责人`,startAt:`开始`,dueAt:`截止`,createdAt:`创建时间`,updatedAt:`更新时间`},public:{notShared:`此项目未共享`,notSharedHint:`该链接已关闭或从未存在。成员可登录后查看。`,noTickets:`没有工单`,ticketUnavailable:`工单不可用`,backToTickets:`返回工单`,description:`描述`,noDescription:`_暂无描述_`,acceptanceCriteria:`验收标准`,noAcceptanceCriteria:`_暂无验收标准_`,ticketProperties:`工单属性`,properties:`属性`,status:`状态`,priority:`优先级`,kind:`类型`,difficulty:`难度`,startDate:`开始日期`,dueDate:`截止日期`,labels:`标签`,scopes:`范围`,created:`创建时间`,updated:`更新时间`,relationships:`关联`,parent:`父工单`,child:`子工单`},sidebar:{workspace:`工作区`,unread_other:`{{count, number}} 条未读`,userSettings:`用户设置`,administration:`管理`,signOut:`退出登录`,projectSettings:`项目设置`},workspace:{new:`新建工作区`,name:`工作区名称`,key:`工作区标识`,create:`创建工作区`,workspaces:`工作区`,switch:`切换工作区`,settings:`工作区设置`},palette:{open:`前往…`,title:`前往`,description:`查找项目、工单、页面或操作`,placeholder:`搜索工单、项目、页面、操作…`,searching:`搜索中…`,noResults:`没有结果`,jumpTo:`跳转到`,openKey:`在 {{project}} 中打开 {{key}}`,resultsIn:`{{workspace}} 中的结果`,results:`结果`,seeAll_other:`查看全部 {{count, number}} 个结果`,actions:`操作`,pages:`页面`,newTicketIn:`在 {{project}} 中新建工单`,myTicketsIn:`我在 {{project}} 中的工单`,lightMode:`切换到浅色模式`,darkMode:`切换到深色模式`,keywords:{jump:`{{query}} 跳转 打开`,allResults:`全部结果 {{query}}`,newTicket:`新建工单 创建`,myTickets:`我的工单 分配给我`,lightMode:`切换 浅色模式 主题 外观`,darkMode:`切换 深色模式 主题 外观`,help:`键盘快捷键 帮助`,home:`首页 概览 全部项目`,myWork:`我的工作 分配的工单`,search:`搜索 评论 动态 项目 工单`,inbox:`收件箱 通知`,settings:`设置 {{scope}} {{label}}`}},actionCategory:{general:`通用`,ticketList:`工单列表`,inbox:`收件箱`,ticket:`工单`,search:`搜索`,markdown:`Markdown`},action:{palette:`前往任意位置`,help:`键盘快捷键`,sidebar:`切换侧边栏`,newTicket:`新建工单`,search:`搜索工单`,highlight:`高亮下一个或上一个工单`,open:`打开高亮的工单`,preview:`在列表旁预览高亮的工单`,select:`选择高亮的工单`,properties:`设置高亮工单的状态、优先级或负责人`,inboxHighlight:`高亮下一条或上一条通知`,inboxOpen:`在收件箱旁查看高亮通知的工单`,inboxRead:`将高亮的通知标记为已读或未读`,inboxDismiss:`移除高亮的通知`,step:`打开下一个或上一个工单`,edit:`编辑工单`,save:`保存工单或评论`,results:`在搜索结果间移动`,insertBlock:`在可视化编辑器中插入表格、图表、文件或其他块`},move:{top:{label:`将高亮的工单移到顶部`,menu:`移到顶部`},up:{label:`将高亮的工单上移`,menu:`上移`},down:{label:`将高亮的工单下移`,menu:`下移`},bottom:{label:`将高亮的工单移到底部`,menu:`移到底部`},previous:{label:`将高亮的工单移到上一个状态`,menu:`移到上一个状态`},next:{label:`将高亮的工单移到下一个状态`,menu:`移到下一个状态`}},copy:{link:{label:`复制链接`,copied:`工单链接`},keyAndTitle:{label:`复制编号和标题`,copied:`工单`},title:{label:`复制标题`,copied:`标题`},markdown:{label:`复制为 Markdown`,copied:`Markdown`},branch:{label:`复制分支名称`,copied:`分支名称`}},settingsNav:{account:`账户`,settings:`设置`,workspace:`工作区`,workspaceSettings:`工作区设置`,projects:`项目`,projectSettings:`项目设置`,administration:`管理`,section:{profile:`个人资料与安全`,appearance:`外观`,preferences:`偏好设置`,credentials:`API 密钥`,notifications:`通知`,general:`常规`,members:`成员`,roles:`角色`,labels:`标签`,workflow:`工作流`,fields:`字段`,integrations:`集成`,calendar:`日历订阅源`,storage:`文件存储`,search:`搜索`,events:`事件投递`,users:`用户`,workspaces:`工作区`,authentication:`身份验证`}},browser:{copyFailed:`复制失败。请选中文本后手动复制。`,readFailed:`无法读取文件`,encodeFailed:`无法编码文件`,imageTooBig:`请选择小于 10 MB 的图片。`,cannotResize:`此浏览器无法调整图片尺寸。`,prepareFailed:`无法处理图片。`,stillTooLarge:`调整尺寸后图片仍然过大。请选择更简单的图片。`},primitive:{close:`关闭`,more:`更多`,breadcrumb:`面包屑导航`,sidebar:`侧边栏`,sidebarDescription:`显示移动端侧边栏。`,toggleSidebar:`切换侧边栏`,resizeSidebar:`调整侧边栏宽度`,expandSidebar:`展开侧边栏`,commandTitle:`命令面板`,commandDescription:`搜索要运行的命令…`}},ticket:{list:{selectSection:`选择{{section}}工单`,expandSection:`展开{{section}}工单`,collapseSection:`收起{{section}}工单`,sectionTickets:`{{section}}工单`,later:`以后`,selectAll:`选择所有显示的工单`,selectTicket:`选择 {{key}}`,title:`标题`,all:`全部`,planned:`已规划`,archived:`已归档`,allTickets:`全部工单`,customView:`自定义视图`,sectionCount:`{{n, number}} 个{{section}}`,planning:`{{project}} 规划`,collection:`{{source}}({{sections}})`,moved:`{{key}} 已移动`,movedTo:`{{key}} 已移到{{status}}`,movedAbove:`{{key}} 已移到 {{neighbor}} 上方`,movedBelow:`{{key}} 已移到 {{neighbor}} 下方`,movedToAbove:`{{key}} 已移到{{status}},位于 {{neighbor}} 上方`,movedToBelow:`{{key}} 已移到{{status}},位于 {{neighbor}} 下方`,emptyFiltered:`没有匹配的工单`,emptyPlanning:`没有已规划或已归档的工单`,emptyProject:`暂无工单`,emptyWork:`没有分配给你的未完成工单`,createFirst:`创建第一个工单`,activeWork:`进行中的工作`,views:`工单视图`,saveCurrentView:`保存当前视图`,deleteView:`删除视图 {{name}}`,deleteViewConfirm:`要从已保存的视图中移除 {{name}} 吗?工单不受影响。`,planningLink:`规划`,newTicketShortcut:`新建工单({{shortcut}})`,saveView:`保存视图`,viewSaved:`视图已保存`,viewName:`视图名称`,retry:`重新加载工单`,board:`工单看板`,tickets:`工单`,resizeColumn:`调整“{{column}}”列宽`,count_other:`{{count, number}} 个工单`,scheduledCount_other:`{{count, number}} 个已排期工单`},move:{destination:`目标`,projectPlaceholder:`移到项目…`,blockers:`移动前请先解决`,submit:`移动工单`,pending:`移动中…`},picker:{placeholder:`选择工单`,loading:`正在加载工单…`,searchLabel:`搜索{{label}}`,searchPlaceholder:`按标题或编号搜索…`,noParent:`无父工单`,searching:`搜索中…`,empty:`未找到工单`},property:{status:`状态`,priority:`优先级`,kind:`类型`,difficulty:`难度`,assignee:`负责人`,you:`{{name}}(你)`,assignTo:`分配给…`,set:`设置{{label}}…`,search:`搜索{{label}}`,noMatches:`没有匹配项`},field:{mixed:`混合`,unchecked:`否`,noValue:`无值`},project:{label:`项目`,placeholder:`在项目中创建…`,search:`搜索项目`},tags:{labels:`标签`,scopes:`范围`,summary:`{{label}}:{{tags}}`,edit:`编辑{{label}}`,editValues:`编辑{{label}}:{{tags}}`,editMixed:`编辑{{label}}:混合`,mixed:`混合{{label}}`,none:`无{{label}}`,mixedNote:`所选工单的{{label}}各不相同。`,clear:`清除{{label}}`,replace:`替换{{label}}`},tagInput:{remove:`移除{{label}} {{tag}}`,addAnother:`再添加一个…`,add:`添加{{label}}…`,choose:`选择{{label}}`,chooseLabels:`选择标签`,searchPlaceholder:`搜索标签…`,searchLabel:`搜索项目标签`,empty:`没有匹配的标签`},link:{previewUnavailable:`无法预览`},userPicker:{label:`账户`,placeholder:`选择账户`,searchPlaceholder:`搜索名称或邮箱…`,searchLabel:`搜索账户`,useEmail:`使用 {{email}}`,emptyAnyAccount:`搜索成员,或输入现有账户的邮箱。`,empty:`没有匹配的成员`},date:{placeholder:`选择日期`,clear:`清除{{label}}`,start:`开始日期`,startShort:`开始`,noStart:`无开始日期`,due:`截止日期`,dueShort:`截止`,noDue:`无截止日期`},filter:{me:`我`,searchTickets:`搜索工单`,searchTicketsPlaceholder:`搜索工单…`,filters:`筛选`,filtersActive:`筛选({{active, number}})`,due:`截止`,anyDue:`任意截止日期`,archived:`已归档`,hideArchived:`隐藏已归档`,includeArchived:`包含已归档`,archivedOnly:`仅已归档`,includingArchived:`包含已归档`,reset:`重置筛选`,clear:`清除筛选`,active:`当前工单筛选`,searchChip:`搜索:{{query}}`,chipAny:`{{field}}:`,chipNone:`{{field}}不是:`,notValues:`不是 {{values}}`,match:`{{label}}匹配方式`,is:`是`,isNot:`不是`,searchPlaceholder:`{{search}}…`,anyValue:{status:`所有状态`,priority:`所有优先级`,kind:`所有类型`,difficulty:`所有难度`,label:`所有标签`,assigneeId:`任何人`,customField:`任意字段值`},searchValues:{status:`搜索状态`,priority:`搜索优先级`,kind:`搜索类型`,difficulty:`搜索难度`,label:`搜索标签`,assigneeId:`搜索人员`,customField:`搜索字段`}},display:{title:`显示`,orderBy:`排序方式`,direction:`方向`,ascending:`升序`,descending:`降序`,reset:`重置显示`,groupBy:`分组方式`,dueDate:`截止日期`,layout:`布局`,list:`列表`,board:`看板`,backgrounds:`项目背景`,show:`显示`,hide:`隐藏`,rowSpacing:`行间距`,compact:`紧凑`,comfortable:`宽松`,labelDisplay:`标签显示`,compactPreview:`紧凑预览`,allLabels:`全部标签`,properties:`属性`},selection:{region:`已选工单`,clear:`清除选择`,selected_other:`已选 {{count, number}} 个`,selectedOf_other:`{{count, number}} / {{total}}<wide> 已选</wide>`,applied_other:`已将{{label}}应用到 {{count, number}} 个工单`,partlyApplied_other:`已应用到 {{done, number}} / {{count, number}} 个工单`,mixedDue:`截止日期各不相同`,fields:`字段`,more:`更多操作`,moveTo:`移到{{status}}`,restoreChange:`恢复`,restore:`恢复所选`,archive:`归档所选`,delete:`删除所选`,deleteLimit:`一次最多删除 {{limit, number}} 个`,archiveConfirm_other:`要归档 {{collection}} 中的 {{count, number}} 个工单吗?`,deleteConfirm_other:`要永久删除 {{collection}} 中的 {{count, number}} 个工单及其评论、关联和附件吗?未选中的子工单将失去父工单。`,deleted_other:`已删除 {{count, number}} 个工单`},menu:{copied:`已复制{{label}}`,open:`打开工单`,preview:`预览`,newTab:`在新标签页中打开`,edit:`编辑工单`,editTitle:`编辑 {{key}}`,duplicate:`复制工单`,created:`已创建 {{key}}`,move:`移动`,moveToProject:`移到项目…`,moveTitle:`移动 {{key}}`,moved:`已移为 {{key}}`,follow:`关注工单`,unfollow:`取消关注工单`,archive:`归档工单`,unarchive:`取消归档工单`,delete:`删除工单`,deleteConfirm:`要永久删除 {{key}} 及其评论、关联和附件吗?`,openProject:`打开项目`,projectLink:`项目链接`,copyLink:`复制链接`,newTicket:`新建工单`,projectSettings:`项目设置`,manageAccount:`管理账户`,email:`邮箱`,copyEmail:`复制邮箱`},schedule:{range:`{{from}} – {{to}}`,calendar:`日历`,timeline:`时间线`,today:`今天`,previousMonth:`上个月`,nextMonth:`下个月`,previousWeeks:`前两周`,nextWeeks:`后两周`,emptyWeeks:`这几周没有排期`,monthTickets:`{{title}}的工单`,showDay_other:`显示 {{day}} 的全部 {{count, number}} 个工单`,more_other:`还有 {{count, number}} 个`,ticketColumn:`工单`,scheduledTickets:`已排期工单`},copy:{description:`描述`,acceptanceCriteria:`验收标准`}},detail:{field:{title:`标题`,description:`描述`,acceptanceCriteria:`验收标准`,parent:`父工单`,parentTicket:`父工单`,labels:`标签`,scopes:`范围`,holdReason:`搁置原因`,url:`URL`},page:{preview:`工单预览`,unavailable:`工单不可用`,noProject:`此链接未指明工单所属的项目。`,gone:`此工单已被删除,或你已无访问权限。`,closePreview:`关闭预览`,openFullPage:`在完整页面中打开`,backToTickets:`返回工单`,tickets:`工单`,previousTicket:`上一个工单`,previousTicketShortcut:`上一个工单(K)`,nextTicket:`下一个工单`,nextTicketShortcut:`下一个工单(J)`,position:`{{position, number}} / {{total, number}}`,subscribe:`订阅`,unsubscribe:`取消订阅`,subscribed:`已订阅更新`,unsubscribed:`已取消订阅`,archive:`归档工单`,unarchive:`取消归档工单`,archivedToast:`工单已归档`,unarchivedToast:`工单已取消归档`,archived:`已归档`,edit:`编辑工单`,editShortcut:`编辑工单(E)`,editTitle:`编辑 {{key}}`,actions:`工单操作`,copyKey:`复制工单编号`,keyCopied:`已复制 {{key}}`,noDescription:`_暂无描述_`,noAcceptanceCriteria:`_暂无验收标准_`,coordination:`工单协作`,properties:`属性`,created:`创建时间`,updated:`更新时间`},section:{discussion:`讨论`,evidence:`证据`,activity:`动态`},readiness:{heading:`智能体就绪状态`,ready:`可以认领`,notReady:`尚不可认领`,hold:`搁置:{{reason}}`,claimedUntil:`已被 <strong>{{worker}}</strong> 认领,直到 {{date}}。`},claim:{release:`释放我的认领`,releaseDescription:`确认执行者已停止写入后释放所有权?`,recover:`收回已过期的认领`,recoverHelp:`收回认领需要项目管理员权限,且认领已过期。请先停止执行者。`,reason:`收回原因`,confirmed:`我已确认执行者已停止`,submit:`收回所有权`},editor:{storageUnavailable:`此浏览器无法保存草稿。保存前请保持编辑器打开。`,saved:`{{key}} 已保存`,created:`{{key}} 已创建`,properties:`工单属性`,readyForAgents:`可供智能体处理`,readyForAgentsHelp:`在需求、阻塞项和所有权允许时,智能体可以认领此工单`,agents:`智能体`,notReady:`未就绪`,moreProperties:`更多属性`,holdPlaceholder:`为什么要暂缓工作?`,claimsNote:`认领仍取决于需求、阻塞项和当前所有权。`,restoreSize:`恢复编辑器大小`,expand:`展开编辑器`,staleTitle:`此工单已被更改。`,staleDescription:`你的草稿仍基于版本 {{version}};保存时需要使用当前版本。`,discardAndReload:`放弃草稿并重新加载`,titlePlaceholder:`工单标题`,descriptionPlaceholder:`添加背景、需求或复现步骤…`,criteriaPlaceholder:`- [ ] 如何确认已完成?`,removeCriteria:`移除验收标准`,addCriteria:`添加验收标准`,savedLocally:`草稿已保存在此设备上`,notSavedLocally:`无法保存草稿`,discardDraft:`放弃草稿`,createMore:`继续创建`,save:`保存工单`,create:`创建工单`},resource:{removeConfirm:`要移除 {{name}} 吗?`,uploading:`上传中…`},attachment:{heading:`附件`,tooLarge:`每个文件不能超过 10 MB。`,attached_other:`已附加 {{count, number}} 个文件`,attach:`附加文件`,emptyWritable:`暂无附件。将文件拖放到此处。`,empty:`暂无附件`,remove:`移除附件`,fileInput:`文件(最大 10 MB)`},evidence:{description:`处理此工单的人员和集成所报告的链接和结果。`,add:`添加证据`,empty:`暂无证据`,added:`证据已添加`,kindLabel:`类型`,outcomeLabel:`报告的结果`,commit:`提交(完整哈希)`,note:`备注`},link:{heading:`链接`,add:`添加链接`,edit:`编辑链接`,save:`保存链接`,remove:`移除链接`,empty:`暂无链接`,stateUnknown:`状态未知`,remote:`{{kind}} · {{state}}`,remoteState:{open:`打开`,closed:`已关闭`,merged:`已合并`,draft:`草稿`,active:`活跃`,deleted:`已删除`}},activity:{previous:`较早的动态`,next:`较新的动态`},relations:{heading:`关联`,add:`添加关联`,linkExisting:`关联现有工单`,newChild:`新建子工单`,newChildTitle:`{{key}} 的新子工单`,children:`子工单 <count>{{done, number}}/{{total, number}}</count>`,previousChildren:`上一组子工单`,nextChildren:`下一组子工单`,empty:`暂无关联`,type:`关联类型`,ticket:`工单`,statusOf:`{{key}} 的状态`,assigneeOf:`{{key}} 的负责人`,remove:{blocks:`移除阻塞关联`,related:`移除相关关联`,duplicate:`移除重复关联`,causes:`移除导致关联`,clones:`移除克隆关联`,implements:`移除实现关联`,reviews:`移除审核关联`}},discussion:{empty:`暂无评论`,previous:`较早的评论`,next:`较新的评论`,comment:`评论`,placeholder:`撰写评论…`,posting:`发布中…`,edited:`已编辑`,edit:`编辑评论`,delete:`删除评论`,deleteConfirm:`要永久删除此评论吗?`},markdown:{format:{heading:`标题`,bold:`粗体`,italic:`斜体`,link:`链接`,linkHelp:`为所选文本添加链接`,bullets:`无序列表`,numbers:`有序列表`,tasks:`任务列表`,code:`代码块`},formatting:`{{label}}格式`,editor:`{{label}}编辑器`,insertFile:`插入文件`,insertFileInto:`将文件插入{{label}}`,write:`编写`,visual:`可视化`,preview:`预览`,unsupported:`此文本使用了可视化编辑器无法保留的 Markdown,例如 HTML 或脚注。`,nothingToPreview:`没有可预览的内容`,mention:`提及成员`,insertBlock:`插入块`,block:{quote:`引用`,table:`表格`,diagram:`图表`,divider:`分隔线`,file:`文件`},table:{addRow:`添加行`,addColumn:`添加列`,deleteRow:`删除行`,deleteColumn:`删除列`,deleteTable:`删除表格`},linkAddress:`链接地址`,diagram:`图表`,diagramFailed:`无法绘制此图表:{{error}}`,diagramSource:`图表源代码`}},settings:{account:{title:`设置`,security:`登录与安全`,localPassword:`本地密码`,localPasswordDescription:`更改密码会让你的其他会话退出登录。`,changePassword:`更改密码`,oidcLinked:`可使用此身份提供方登录同一账户。`,oidcUnlinked:`通过此提供方登录前,请先关联你的账户。`,linked:`已关联`,link:`关联 {{name}}`,currentPassword:`当前密码`,newPassword:`新密码`,confirmPassword:`确认新密码`,passwordMismatch:`两次输入的新密码不一致。`,passwordUpdated:`密码已更新,其他会话已退出登录。`},preferences:{behavior:`行为`,languageDescription:`适用于此浏览器,包括登录页面。`,weekStart:`每周起始日`,weekStartDescription:`适用于所有日期选择器。`,weekStartLanguage:`跟随语言`,sidebar:`启动时的侧边栏`,sidebarDescription:`下次打开 Kanvil 时生效。`,sidebarLast:`保持上次状态`,sidebarExpanded:`展开`,sidebarCollapsed:`收起`,ticketLists:`工单列表`,reset:`重置偏好设置`,resetDescription:`将此浏览器中的这些选项恢复为默认值。`,resetDone:`偏好设置已重置`},notifications:{title:`通知`,inbox:`收件箱`,inboxDescription:`你关注的工单的更新会显示在 Kanvil 中。`,inboxSwitch:`在收件箱中接收已订阅工单的更新`,push:`推送通知`,pushDescription:`将更新发送到你已注册的设备。`,pushUnavailable:`此实例未启用推送。`,pushSwitch:`在已注册设备上接收推送通知`,categories:`类别`,categorySwitch:`{{label}}通知`,reminder:`即将截止提醒`,reminderDescription:`在关注的工单截止前多久提醒。`,reminderUnit:`提醒单位`,reminderAmount:`提醒数值`,unit:{minutes:`分钟`,hours:`小时`,days:`天`,weeks:`周`}},layout:{nav:`设置`,section:`设置分区`,nested:`{{parent}} · {{child}}`,name:`名称`,description:`描述`,descriptionPlaceholder:`添加描述`,noDescription:`暂无描述`,stale:`此内容已在其他地方被更改。请取消后重新开始。`},profile:{title:`个人资料`,displayName:`显示名称`,edit:`编辑个人资料`,changePhoto:`更换照片`,removePhoto:`移除照片`,photoFile:`头像文件`,photoUpdated:`照片已更新`,photoRemoved:`照片已移除`,saved:`个人资料已保存`},credentials:{title:`API 密钥`,description:`为脚本、集成和智能体提供可随时撤销的访问权限。`,create:`创建 API 密钥`,creating:`创建中…`,created:`API 密钥已创建`,name:`名称`,access:`访问权限`,projects:`项目`,expires:`过期时间`,actions:`操作`,unavailableProject:`不可用的项目`,untitled:`未命名密钥`,expired:`已过期`,disabled:`已停用`,custom:`自定义`,noProjects:`无项目访问权限`,never:`永不`,revoke:`撤销 API 密钥`,revokeNamed:`要撤销 {{name}} 吗?使用它的连接将立即失去访问权限。`,revokeUnnamed:`要撤销此 API 密钥吗?使用它的连接将立即失去访问权限。`,empty:`暂无 API 密钥`,emptyDescription:`当脚本、集成或智能体需要访问你的项目时,可创建密钥。`,copyNow:`请立即复制此密钥。之后将无法再次查看。`,newKey:`新 API 密钥`,copy:`复制 API 密钥`,noProjectTitle:`请先选择项目`,noProjectDescription:`API 密钥至少需要访问一个项目。`,goToProjects:`前往项目`,keyName:`密钥名称`,keyNamePlaceholder:`例如:发布自动化`,projectAccess:`项目访问权限`,findProject:`查找项目`,projectDescription:`{{key}} · {{workspace}}`,workspace:`工作区`,noMatches:`没有匹配的项目`,roleLimit:`此密钥的权限仍受你现有项目角色的限制。`,accessLevel:`访问级别`,preset:{read:`只读`,write:`读写`,automation:`读写及认领工作`,custom:`自定义权限`},permission:{read:{name:`读取工单`,description:`查看项目、工单、评论和附件。`},write:{name:`编辑工单`,description:`创建和更新工单、评论和附件。`},claim:{name:`认领工作`,description:`认领、续期和释放工单所有权。`},admin:{name:`管理项目`,description:`在角色允许的范围内更改项目设置和成员。`}},expiry:{7:`7 天`,30:`30 天`,90:`90 天`,365:`1 年`,custom:`自定义日期`,never:`永不过期`},expiresOn:`过期日期`,neverDescription:`密钥在你删除之前一直有效。`},calendarFeeds:{title:`日历订阅源`,new:`新建日历订阅源`,created:`日历订阅源已创建`,create:`创建订阅源`,adminOnly:`由项目管理员共享和撤销日历订阅源。`,labels:`标签`,everyLabel:`所有标签`,stopped:`· 已停止:创建者已失去访问权限`,revoke:`撤销 {{name}}`,revokeDescription:`订阅了 {{name}} 的日历将立即停止更新。工单不受影响。`,revoked:`日历订阅源已撤销`,empty:`暂无日历订阅源`,copyNow:`请立即将此链接复制到日历应用中。它只显示一次,任何拥有该链接的人都能查看共享的工单。`,link:`订阅源链接`,name:`订阅源名称`,onlyLabels:`仅包含带这些标签的工单`,explanation:`订阅源会将设有开始或截止日期的未完成、未归档工单列为 {{zone}} 时区的全天事件。任何拥有链接的人都能看到其编号、标题、状态、优先级和日期。`},project:{title:`项目设置`,edit:`编辑项目`,copyPrefix:`复制工单前缀`,saved:`项目已保存`,noOpenTickets:`没有未完成的工单`,openTickets_other:`{{count, number}} 个未完成工单`,overdueTickets_other:`· {{count, number}} 个已逾期`,created:`· 创建于 <time/>`,access:`项目访问权限`,accessWorkspace:`工作区成员根据其工作区角色获得访问权限。`,accessPrivate:`只有你添加的成员和工作区管理员可以查看此项目。`,accessUpdated:`项目访问权限已更新`,visibility:{workspace:`工作区内所有人`,private:`仅项目成员`},workspace:`工作区`,workspaceSettings:`工作区设置`,prefix:`工单前缀`,prefixDescription:`更改后,以前的前缀和工单编号仍然有效。`,changePrefix:`更改前缀`,changePrefixTitle:`更改工单前缀`,changePrefixDescription:`{{name}} 中的所有工单都将使用新前缀,并保留原编号。`,changing:`更改中…`,prefixChanged:`工单现在使用 {{key}}`,publicLink:`公开链接`,publicDisclosure:`任何拥有链接的人都能查看此项目中所有未归档工单的标题、描述、验收标准、状态、优先级、类型、难度、标签、范围、日期以及指向其他工单的链接。人员、评论、动态、附件、证据和认领保持私密。`,publicOn:`公开链接已开启`,publicOff:`公开链接已关闭`,off:`关闭`,copyPublicLink:`复制公开链接`,openPublic:`打开公开视图`,stopSharing:`停止共享`,share:`公开共享`,background:`背景`,backgroundDescription:`显示在此项目的工单列表和看板后面。`,backgroundUpdated:`背景已更新`,backgroundRemoved:`背景已移除`,currentBackground:`当前背景`,uploading:`上传中…`,replace:`替换`,upload:`上传图片`,backgroundFile:`项目背景文件`},tickets_other:`{{count, number}} 个工单`,moveUp:`上移 {{name}}`,moveDown:`下移 {{name}}`,workflow:{title:`工作流`,new:`新建状态`,edit:`编辑状态`,editNamed:`编辑状态 {{name}}`,deleteNamed:`删除状态 {{name}}`,onlyState:`{{name}} 是唯一的{{category}}状态`,saved:`状态已保存`,name:`状态名称`,category:`类别`,color:`状态颜色`,categoryChange:`其工单的状态将变为{{status}}。`,save:`保存状态`,delete:`删除状态`,deleteTitle:`删除 {{name}}`,deleted:`状态已删除`,reassign_other:`将 {{count, number}} 个工单移到`},labels:{title:`标签`,search:`搜索标签`,new:`新建标签`,edit:`编辑标签`,workspace:`工作区`,editNamed:`编辑标签 {{name}}`,deleteNamed:`删除标签 {{name}}`,deleteUsed_other:`要从 {{count, number}} 个工单(包括已归档工单)中移除 {{name}} 吗?使用此标签的已保存视图将移除其标签筛选。`,deleteUsedShared_other:`要从所有项目的 {{count, number}} 个工单(包括已归档工单)中移除 {{name}} 吗?使用此标签的已保存视图将移除其标签筛选。`,deleteUnused:`要删除未使用的标签 {{name}} 吗?使用它的已保存视图将移除其标签筛选。`,deleted:`标签已删除`,noMatches:`没有匹配的标签`,empty:`暂无标签`,saved:`标签已保存`,name:`标签名称`,color:`标签颜色`,rename:`重命名会同步更新工单和已保存视图中的此标签。`,renameShared:`重命名会同步更新所有项目中工单和已保存视图里的此标签。`,adopt:`采用项目标签`,adoptDescription:`已在 {{projects}} 中定义。其工单将保留此标签并采用此颜色。`,save:`保存标签`},fields:{title:`字段`,new:`新建字段`,edit:`编辑字段`,editNamed:`编辑字段 {{name}}`,deleteNamed:`删除字段 {{name}}`,deleteUsed_other:`要删除 {{name}} 并从 {{count, number}} 个工单(包括已归档工单)中移除其值吗?已保存视图将失去基于它的筛选。`,deleteUnused:`要删除未使用的字段 {{name}} 吗?已保存视图将失去基于它的筛选。`,deleted:`字段已删除`,empty:`暂无字段`,saved:`字段已保存`,required:`必填`,requiredDescription:`新工单必须填写此值。`,defaultValue:`默认值 {{value}}`,default:`默认值`,name:`字段名称`,type:`类型`,options:`选项`,option:`选项 {{number}}`,optionInline:`选项 {{number}}`,optionColor:`{{name}} 的颜色`,removeOption:`移除 {{name}}`,addOption:`添加选项`,reassign:`包含 {{name}} 的工单`,clearValue:`清除值`,moveTo:`移到 {{name}}`,save:`保存字段`},lifecycle:{archivedToast:`项目已归档`,restoredToast:`项目已恢复`,archivedNotice:`归档于 <time/> · 只读`,restore:`恢复`,archive:`归档`,archivedDescription:`归档于 <time/>。其工单为只读,且不会出现在列表、搜索、我的工作、日历订阅源和智能体队列中。`,archiveDescription:`将项目从列表、搜索、我的工作、日历订阅源和智能体队列中隐藏,并将其工单设为只读。历史记录会保留。`,archiveProject:`归档项目`,archiveConfirm:`在恢复之前,{{name}} 将从项目列表和智能体队列中移除。需先释放已认领的工单。`,blocker:`{{message}}:{{tickets}}`,row:{tickets:`工单`,losesAccess:`失去访问权限`,gainsAccess:`获得访问权限`,labelsCopied:`已复制的标签`,labelsMerged:`已合并的标签`,followsRemoved:`已移除的关注`,invitations:`邀请`,comments:`评论`,files:`文件`,kept:`保留`,projects:`项目`,members:`成员`,sharedLabels:`共享标签`,signIn:`登录`,sessions:`会话`,credentials:`凭据`,devices:`设备`,access:`访问权限`,claims:`认领`,imports:`导入`,profile:`个人资料`},transferTickets_other:`{{count, number}} 个,保留其编号和链接`,noOne:`无人`,transferInvitations_other:`{{count, number}} 个待处理邀请将不再包含此项目`,files_other:`{{count, number}} 个 · {{size}}`,keptProject_other:`{{count, number}} 条动态记录和 {{key}} 前缀`,keptWorkspace_other:`{{count, number}} 条动态记录和 {{slug}} URL 标识`,archivedProject:`已归档`,membersLoseAccess_other:`{{count, number}} 人失去访问权限;其账户保留`,pendingInvitations_other:`{{count, number}} 个待处理`,move:`移动`,moveTitle:`移动 {{name}}`,moved:`已移到 {{name}}`,movedUnnamed:`已移到该工作区`,destination:`目标工作区`,moveProject:`移动项目`,moving:`移动中…`,export:`导出`,exportDescription:`将工单及其工作流、字段、标签、关联、评论、证据和链接导出为带版本的 JSON。附件和动态历史保留在此处。`,exporting:`导出中…`,exportJson:`导出 JSON`,delete:`删除`,deleteTitle:`删除 {{name}}`,deleted:`{{name}} 已删除`,typeToConfirm:`输入 {{value}} 以确认`,deleting:`删除中…`,deleteProject:`删除项目`,deleteProjectDescription:`永久移除工单、评论和文件。动态历史会保留,且 {{key}} 不会再被使用。`,signInAgain:`重新登录`,deleteWorkspace:`删除工作区`,deleteWorkspaceDescription:`永久删除工作区中的所有项目及其工单、评论和文件,并移除其成员。账户和动态历史会保留。`,noSignInMethods:`没有已关联的登录方式`,sessions_other:`{{count, number}} 个会话已退出登录`,credentials_other:`{{count, number}} 个 API 密钥或应用连接已撤销`,devices_other:`{{count, number}} 个设备或通知渠道已移除`,workspaceCount_other:`{{count, number}} 个工作区`,directProjectCount_other:`{{count, number}} 个直接项目`,accessWorkspaces:`已移除 {{workspaces}}`,accessBoth:`已移除 {{workspaces}}和 {{projects}}`,claims_other:`{{count, number}} 个认领已释放`,imports_other:`{{count, number}} 个导入已取消`,profileErased:`名称、邮箱和照片已清除`,commentCount_other:`{{count, number}} 条评论`,activityCount_other:`{{count, number}} 条动态记录`,keptAccount:`{{tickets}}、{{comments}}和 {{events}}将显示为“{{name}}”`,deleteAccount:`删除账户`,deleteOwnAccount:`永久移除你的登录方式、会话、密钥、设备、成员资格和个人信息。工单、评论和动态会保留,并显示为“{{name}}”。`,deleteOtherAccount:`永久移除此账户的登录方式、会话、密钥、设备、成员资格和个人信息。工单、评论和动态会保留,并显示为“{{name}}”。`},icon:{change:`更换图标`,title:`项目图标`,library:`图标库`,upload:`上传图片`,search:`搜索图标`,searchPlaceholder:`搜索图标…`,color:`图标颜色`,choose:`选择 {{name}}`,noMatches:`没有匹配的图标`,showMore:`显示更多图标`,uploading:`上传中…`,chooseImage:`选择图片`,formats:`PNG、JPEG 或 WebP · 最大 10 MB`,file:`项目图标文件`,reset:`重置图标`},createProject:{title:`新建项目`,inWorkspace:`位于 {{name}}`,everyoneLabel:`此工作区中的所有人`,name:`项目名称`,namePlaceholder:`移动应用`,create:`创建项目`},workspace:{title:`工作区设置`,owner:`所有者`,noOwner:`没有所有者。实例管理员可以指定一位。`,transfer:`转让所有权`,transferring:`转让中…`,transferred:`{{name}} 现在拥有 {{workspace}}`,newOwner:`新所有者`,noEligible:`所有权只能转让给活跃的工作区管理员。请先将另一位成员设为管理员。`,chosenCan:`之后 {{name}} 可以转让或删除此工作区。`,newOwnerCan:`新所有者可以转让或删除此工作区。`,ownerStays:`{{name}} 仍为管理员。`,unavailable:`工作区不可用`,backToProjects:`返回项目`,name:`工作区名称`,edit:`编辑工作区`,copyKey:`复制工作区标识`,saved:`工作区已保存`,projects:`项目`,projectCount_other:`你在此工作区中可以访问 {{count, number}} 个项目。`,viewProjects:`查看项目`,members:`成员`,membersDescription:`工作区角色适用于使用工作区访问权限的项目。`,manageMembers:`管理成员`},members:{title:`成员`,customRole:`自定义角色`,search:`搜索成员`,searchPlaceholder:`名称或邮箱…`,add:`添加成员`,added:`成员已添加`,workspaceAccess:`工作区访问权限`,owner:`所有者`,roleFor:`{{name}} 的角色`,useWorkspaceAccess:`使用工作区访问权限`,remove:`移除成员`,removeFromWorkspace:`要将 {{name}} 从此工作区及其所有项目中移除吗?`,restoreAccess:`要为 {{name}} 恢复{{role}}工作区访问权限吗?`,removeFromProject:`要移除 {{name}} 的项目访问权限吗?`,noMatches:`没有匹配的成员`,empty:`暂无成员`,projectRole:`项目角色`,workspaceRole:`工作区角色`},invitations:{title:`邀请`,invite:`通过邮箱邀请`,removedProjects:`已移除的项目`,wholeWorkspace:`整个工作区`,selectedProjects:`所选项目`,expired:`已过期`,expires:`<time/>过期`,resend:`重新向 {{email}} 发送邀请`,revoke:`撤销邀请`,revokeDescription:`发送到 {{email}} 的链接将失效。`,revoked:`邀请已撤销`,empty:`没有待处理的邀请`,email:`邮箱`,role:`角色`,access:`访问权限`,projects:`项目`,noProjects:`此工作区没有项目。`,linkExpires:`链接有效期`,inDays_other:`{{count, number}} 天`,submit:`邀请`,link:`邀请链接`,copyLink:`复制邀请链接`,emailed:`已发送邮件至 {{email}}。该链接仅可用于该地址,且只能使用一次。`,notEmailed:`此实例未配置邮件。请将此链接发送给 {{email}};它仅可用于该地址,且只能使用一次。`,notEmailedUnknown:`此实例未配置邮件。请将此链接发送给收件人;它仅可用于该地址,且只能使用一次。`},workspaces:{title:`工作区`,search:`搜索工作区`,searchPlaceholder:`名称或 URL 标识…`,noMatches:`没有匹配的工作区`,empty:`暂无工作区`,workspace:`工作区`,administrators:`管理员`,members:`成员`,projects:`项目`,created:`创建时间`,actions:`操作`,noAdministrator:`没有管理员`,manage:`管理 {{name}}`,pagerNoun:`工作区`,private:`私有`,noProjects:`没有项目`},roles:{title:`角色`,new:`新建角色`,edit:`编辑角色`,builtIn:`内置`,readOnly:`仅可读取`,memberships_other:`{{count, number}} 个成员资格`,editNamed:`编辑角色 {{name}}`,deleteNamed:`删除角色 {{name}}`,deleteUnused:`要删除未使用的角色 {{name}} 吗?`,deleted:`角色已删除`,empty:`暂无角色`,saved:`角色已保存`,name:`角色名称`,actions:`操作`,everyoneReads:`所有成员都可以读取其可访问的项目。`,changesApply_other:`更改将立即应用到持有此角色的 {{count, number}} 个成员资格。`,save:`保存角色`,delete:`删除角色`,reassignDescription_other:`有 {{count, number}} 个成员资格持有 {{name}}。请选择要将其改为的角色。`,moveTo:`将成员改为`},theme:{mode:{light:`浅色`,dark:`深色`,system:`跟随系统`},aligned:`已对齐`,hexColor:`请使用六位十六进制颜色值`,contrast:{light:`请将浅色主题的文本对比度提高到至少 4.5:1。`,dark:`请将深色主题的文本对比度提高到至少 4.5:1。`},fileTooLarge:`主题文件必须小于 100 KB。`,tooMany:`最多保留 50 个自定义主题。`},appearance:{colorScheme:`配色方案`,theme:`主题`,themes:`主题`,colorTheme:`颜色主题`,search:`搜索主题`,searchPlaceholder:`搜索主题…`,create:`创建主题`,add:`添加主题`,importFile:`导入主题文件`,useMode:{light:`在浅色模式下使用 {{name}}`,dark:`在深色模式下使用 {{name}}`},modeOnly:{light:`仅用于浅色模式`,dark:`仅用于深色模式`},copyName:`{{name}} 副本`,duplicate:`复制 {{name}}`,edit:`编辑 {{name}}`,export:`导出 {{name}}`,delete:`删除 {{name}}`,deleteDescription:`要从此浏览器中移除 {{name}} 吗?使用它的浅色或深色外观将回退到你的基础主题。`,noMatches:`没有匹配的主题`,customTheme:`自定义主题`,name:`主题名称`,paletteColor:`{{mode}}{{color}}`,color:{background:`背景`,foreground:`文本`,sidebar:`侧边栏`,primary:`强调色`,primaryForeground:`强调色文本`},save:`保存主题`},color:{swatch:`{{color}}{{label}}`,removeCustom:`从自定义颜色中移除 {{hex}}`,custom:`自定义颜色`,default:`默认`,red:`红色`,orange:`橙色`,amber:`琥珀色`,yellow:`黄色`,lime:`青柠色`,green:`绿色`,emerald:`翠绿色`,teal:`蓝绿色`,cyan:`青色`,sky:`天蓝色`,blue:`蓝色`,indigo:`靛蓝色`,violet:`紫罗兰色`,purple:`紫色`,fuchsia:`紫红色`,pink:`粉色`,rose:`玫瑰色`,gray:`灰色`}},admin:{instance:{title:`管理`,heading:`实例`,edit:`编辑实例`,name:`名称`,description:`描述`,noDescription:`暂无描述`,version:`应用版本`,publicUrl:`公开 URL`,provider:{local:`本地 PostgreSQL 存储`,s3:`S3 兼容对象存储`,postgres:`内置 PostgreSQL`,elasticsearch:`Elasticsearch 兼容搜索`},section:{storage:`文件存储`,search:`工单搜索`,events:`事件投递`},viewConfiguration:`查看配置`,configure:{storage:`配置存储`,search:`配置搜索`,events:`配置事件投递`},providerTitle:`提供方`,deploymentManaged:`由部署管理`,instanceManaged:`由实例管理`,transfers:`传输`,indexStatus:`索引状态`,connection:`连接`,transfersS3:`文件在本地保存后会转移到对象存储。`,transfersLocal:`新文件存储在 PostgreSQL 中。`,searchBuiltIn:`搜索直接在 PostgreSQL 中运行。`,searchIndexed:`工单更改会在后台建立索引。`,eventsConnection:`通知用于唤醒消费者;PostgreSQL 保存重放历史。`,builtIn:`内置`,connected:`已连接`,upToDate:`已是最新`,status:{ready:`就绪`,transferring:`传输中`,indexing:`索引中`,connecting:`连接中`,unavailable:`不可用`},pendingTransfers:`待传输`,pendingRemain:`传输完成前,这些文件仍可从 PostgreSQL 读取。`,noPending:`没有等待传输的文件。`,bucket:`存储桶`,storageEndpoint:`存储端点`,backup:`备份`,backupBuckets:`请备份 PostgreSQL 以及所有被引用的对象存储桶。`,backupDatabase:`文件内容包含在 PostgreSQL 备份中。`,fallback:`回退`,fallbackDescription:`外部索引落后或离线时,可使用 PostgreSQL 搜索。`,searchEndpoint:`搜索端点`,index:`索引`,delivery:`投递`,deliveryDescription:`持久事件和重放保存在 PostgreSQL 中。可选的消息代理负责分发唤醒信号。`,brokerEndpoint:`消息代理端点`,exchange:`交换机`},configure:{storageTitle:`配置文件存储`,searchTitle:`配置工单搜索`,eventsTitle:`配置事件投递`,saved:`实例设置已保存`,instanceName:`实例名称`,instanceDescription:`实例描述`,publicUrlSource:`公开 URL 由部署中的 KANVIL_URL 设置。`,storageIntro:`附件和头像使用此提供方。现有文件保留在原存储位置。`,storageProvider:`存储提供方`,localDescription:`文件内容存储在本地数据库中,并包含在 PostgreSQL 备份内。`,s3Endpoint:`S3 端点`,s3EndpointHint:`使用 Amazon S3 时请将端点留空。`,region:`区域`,prefix:`对象键前缀`,accessKeyId:`访问密钥 ID`,secretAccessKey:`秘密访问密钥`,savedSecret:`已保存。留空则保持不变。`,deploymentCredentials:`省略时使用部署凭据`,pathStyle:`使用路径样式的存储桶 URL`,storageVerified:`存储连接已验证`,testStorage:`测试存储连接`,filesWaiting_other:`{{count, number}} 个文件等待传输。待传输文件仍可从 PostgreSQL 读取。`,transfersComplete:`所有文件传输已完成。`,storageDeployment:`存储由 KANVIL_STORAGE_PROVIDER 和 S3_* 部署变量配置。`,locations:`现有存储位置`,locationFiles_other:`{{count, number}} 个文件`,cleanUp:`清理未使用的文件`,cleanUpConfirm:`要移除未被引用的文件和超过一天的失败上传吗?附加到工单或个人资料的文件会保留。`,cleanUpNote:`清理也会自动运行。S3 对象需要在备份数据库的同时备份存储桶。`,searchProvider:`搜索提供方`,searchBuiltIn:`内置 PostgreSQL 搜索`,indexName:`Kanvil 索引名称`,searchAuthentication:`搜索身份验证`,noAuthentication:`无身份验证`,apiKey:`API 密钥`,basic:`用户名和密码`,searchApiKey:`搜索 API 密钥`,optional:`可选`,searchUsername:`搜索用户名`,searchPassword:`搜索密码`,searchVerified:`搜索连接已验证`,testSearch:`测试搜索连接`,rebuildQueued:`搜索重建已加入队列`,rebuild:`重建索引`,searchNote:`权限和筛选始终以 PostgreSQL 为准。外部索引同步中或不可用时,搜索会回退到 PostgreSQL。`,brokerProvider:`事件投递提供方`,brokerBuiltIn:`内置 PostgreSQL 通知`,rabbitUrl:`RabbitMQ 连接 URL`,savedBrokerEndpoint:`已保存的消息代理端点`,rabbitExchange:`RabbitMQ 交换机`,brokerVerified:`RabbitMQ 投递已验证`,testBroker:`测试消息代理连接`,brokerNote:`RabbitMQ 将已提交事件的唤醒信号分发给各 Kanvil 实例,并唤醒后台任务。PostgreSQL 保存持久事件和待处理任务,并在消息代理不可用时投递唤醒信号。`,brokerDeployment:`事件投递由 KANVIL_BROKER_PROVIDER 和 RABBITMQ_* 部署变量配置。`,save:`保存实例设置`},authentication:{title:`身份验证`,saved:`身份验证设置已保存`,emailPassword:`邮箱和密码登录`,emailPasswordDescription:`包括邮件登录验证码和密码重置。`,ssoProvision:`通过 SSO 自动创建用户`,ssoProvisionDescription:`新的 SSO 用户在受邀前没有任何工作区或项目访问权限。`,registration:`公开邮箱注册`,registrationClosed:`已关闭`,identityProvider:`身份提供方`,notConfigured:`未配置`,linkedProviders:`关联账户提供方`,linkedProvidersDescription:`仅允许已关联它们的账户登录;从不创建账户。`,save:`保存身份验证设置`,discoveryUrl:`OIDC 发现 URL`,clientId:`OIDC 客户端 ID`,oidcSetup:`在部署中配置 OIDC_DISCOVERY_URL、OIDC_CLIENT_ID、OIDC_CLIENT_SECRET 和 OIDC_NAME,或 GITHUB_、GOOGLE_ 或 DISCORD_ 的 CLIENT_ID 与 CLIENT_SECRET 组合,然后重启 Kanvil。提供方密钥永远不会返回给浏览器。`,consumers:`消费者接口`,mcpEndpoint:`MCP 端点`,eventFeed:`实时事件流`,openApi:`OpenAPI 规范`},users:{title:`用户`,search:`搜索用户`,searchPlaceholder:`名称或邮箱…`,new:`新建用户`,roleFilter:`实例角色筛选`,allRoles:`所有角色`,administrators:`管理员`,users:`用户`,statusFilter:`账户状态筛选`,allAccounts:`所有账户`,active:`活跃`,disabled:`已停用`,noMatches:`没有匹配的用户`,empty:`暂无用户`,user:`用户`,role:`角色`,status:`状态`,joined:`加入时间`,actions:`操作`,administrator:`管理员`,manage:`管理 {{name}}`,pagerNoun:`用户`,create:`创建账户`,creating:`创建中…`,created:`已创建 {{email}}`,name:`名称`,email:`邮箱`,initialPassword:`初始密码`,instanceRole:`实例角色`},account:{details:`账户详情`,joined:`加入于 {{date}}`,edit:`编辑账户`,instanceRole:`实例角色`,adminDescription:`可以管理所有工作区、账户和部署设置。`,userDescription:`访问权限由工作区和项目角色决定。`,changeRole:`更改角色`,changeRoleTitle:`更改实例角色`,signInMethods:`登录方式`,setPassword:`设置本地密码`,activeSessions:`活跃会话`,sessions_other:`{{count, number}} 个会话`,revokeSessions:`撤销会话`,revokeConfirm:`要让 {{name}} 在所有设备上退出登录吗?API 密钥仍然有效。`,sessionsRevoked:`会话已撤销`,access:`账户访问`,accessDisabled:`登录和 API 访问已停用。`,accessPreserved:`停用账户会保留工单和动态历史。`,enable:`启用账户`,disable:`停用账户`,enableConfirm:`要恢复 {{name}} 的登录吗?`,disableConfirm:`要停用 {{name}} 的登录和 API 访问,并撤销其会话吗?`,enabled:`账户已启用`,disabledToast:`账户已停用`,updateFailed:`无法更新账户`,workspaces:`工作区`,addToWorkspace:`添加到工作区`,noWorkspaces:`没有工作区成员资格`,projectAccess:`直接项目访问权限`,updated:`账户已更新`,roleUpdated:`实例角色已更新`,workspaceAdded:`已添加工作区访问权限`,passwordMismatch:`两次输入的新密码不一致。`,passwordSet:`已设置本地密码并撤销会话`,name:`名称`,email:`邮箱`,user:`用户`,administrator:`管理员`,adminsNote:`管理员可以管理所有工作区、用户和实例设置。`,workspace:`工作区`,workspaceRole:`工作区角色`,newPassword:`新密码`,confirmPassword:`确认新密码`,passwordNote:`这会设置本地密码,并让该用户在所有设备上退出登录。`,save:`保存更改`},delivery:{field:{address:`邮箱地址`,server:`服务器`,topic:`主题`,accessToken:`访问令牌`,applicationToken:`应用令牌`,endpointUrl:`端点 URL`,signingSecret:`签名密钥`,incomingWebhookUrl:`传入 Webhook URL`,webhookUrl:`Webhook URL`,channel:`频道`,botToken:`机器人令牌`,chatId:`聊天 ID`,chatIdPlaceholder:`-1001234567890 或 @channel`,topicId:`话题 ID`,optional:`{{label}}(可选)`,removeSaved:`移除已保存的{{label}}`,savedSecret:`已保存 · 留空则保持不变`},failure:{blockedAddress:`不允许使用此地址`,redirectBlocked:`端点进行了重定向`,dnsError:`找不到主机`,networkError:`无法连接`,timeout:`超时`,invalidEndpoint:`无效的端点`,emailUnavailable:`此服务器未配置邮件`,smtpError:`邮件服务器不可用`,accessRevoked:`连接它的管理员已失去访问权限;请重新连接`,repositoryMismatch:`收到了来自其他仓库的投递`,http:`被拒绝,HTTP {{status}}`,smtp:`邮件服务器返回 {{code}}`},health:{delivery:{done:`<time/>已投递`,pending:`发送中…`,none:`尚未发送`,failed:`{{reason}}`},access:{done:`<time/>已检查访问权限`,pending:`正在检查访问权限…`,none:`尚未检查访问权限`,failed:`访问检查:{{reason}}`},retrying:`重试中`},paused:`已暂停`,failing:`失败中`,sendTest:`向 {{name}} 发送测试`,testQueued:`测试已加入队列`,resume:`恢复 {{name}}`,pause:`暂停 {{name}}`,edit:`编辑 {{name}}`,disconnect:`断开 {{name}}`,disconnected:`{{name}} 已断开连接`,name:`名称`,type:`类型`,channels:`渠道`,addChannel:`添加渠道`,noChannels:`暂无渠道`,editChannel:`编辑渠道`,channelSaved:`渠道已保存`,channelRemoval:`要断开 {{name}} 吗?其设置和排队中的通知将被丢弃。`,sendFrom:`发送通知的来源`,routeOff:`无`,routeAll:`所有项目`,routeSelected:`所选项目`,saveChannel:`保存渠道`,adminsOnly:`由项目管理员管理集成`,destinations:`目标`,addDestination:`添加目标`,noDestinations:`暂无目标`,editDestination:`编辑目标`,destinationSaved:`目标已保存`,destinationRemoval:`要断开 {{name}} 吗?其设置和排队中的消息将被丢弃。`,send:`发送`,saveDestination:`保存目标`},repository:{setup:{github:`令牌需要仓库读取权限;如需评论或同步议题,还需要议题和拉取请求的写入权限。添加一个 GitHub Webhook:URL 从此仓库所在行复制,内容类型为 application/json,使用此密钥,并勾选 Branch or tag creation、Branch or tag deletion、Issues、Issue comments 和 Pull requests 事件。`,gitea:`令牌需要 read:repository 范围;如需评论或同步议题,还需要 write:issue。添加一个 Gitea Webhook:URL 从此仓库所在行复制,内容类型为 application/json,使用此密钥,并勾选 Create、Delete、Issues、Issue Label、Issue Comment 和 Pull Request 事件。`,gitlab:`令牌需要 read_api 范围;如需评论或同步议题,还需要 api。添加一个 GitLab Webhook:URL 从此仓库所在行复制,使用此密钥令牌,并勾选 Push、Issues、Comments 和 Merge request 事件。`},noWebhook:`尚未收到 Webhook`,webhookReceived:`<time/>收到 Webhook`,saved:`仓库已保存`,title:`仓库`,connect:`连接仓库`,empty:`暂无仓库`,checkAccess:`检查对 {{repository}} 的访问权限`,accessQueued:`访问检查已加入队列`,copyWebhook:`复制 {{repository}} 的 Webhook URL`,issueSync:`{{repository}} 的议题同步`,removal:`要断开 {{repository}} 吗?其 Webhook 将立即失效。它添加的链接会保留在工单上。`,edit:`编辑仓库`,host:`托管平台`,serverUrl:`服务器 URL`,serverUrlOptional:`服务器 URL(可选)`,repository:`{{host}} 仓库`,nestedPlaceholder:`group/project`,placeholder:`owner/repository`,accessToken:`访问令牌`,webhookSecret:`Webhook 密钥`,savedSecret:`已保存 · 留空则保持不变`,commentOnLink:{pull_request:`在新关联的议题和拉取请求上发表评论`,merge_request:`在新关联的议题和合并请求上发表评论`},moveTickets:`移动关联的工单`,noMove:`不移动`,save:`保存仓库`},issueSync:{reason:{labels:`其同步标签已更改`,conflict:`两边都有更改`,changedWhilePaused:`仓库暂停期间议题发生了更改`,unverified:`托管平台的响应未确认此更改`,claimConflict:`工单已被认领`,invalidContent:`议题超出了工单允许的长度`},issuesSyncing_other:`{{count, number}} 个议题同步中`,linksStopped_other:`{{count, number}} 个链接已停止`,match:`匹配`,matchAny:`包含任一标签`,matchAll:`包含所有标签`,preview:{matching:`继续同步`,export:`待创建的新议题`,pause:`待暂停的链接`,review:`待审核的链接`},applied:`议题同步已应用`,title:`议题同步 · {{repository}}`,outbound:`Kanvil 到 {{host}}`,exportTickets:`将工单导出为议题`,exportDescription:`未完成的工单会生成新议题;标题、描述、状态和新评论保持同步。`,ticketLabels:`仅包含带这些标签的工单`,everyTicket:`所有未完成的工单`,inbound:`{{host}} 到 Kanvil`,importIssues:`将议题导入为工单`,importDescription:`未关闭的议题会在 {{host}} 下次报告时导入。`,issueLabels:`仅包含带这些标签的议题`,everyIssue:`所有未关闭的议题`,previewLabel:`预览`,previewAction:`预览`,stopped:`已停止的链接 · {{repository}}`,review:`审核`,linkRemoved:`链接已移除`,resumed:`同步已恢复`,open:`打开`,closed:`已关闭`,reviewTitle:`审核 {{key}}`,mayExist:`{{host}} 上可能已存在此议题;再次创建前请先确认。`,comparison:`对比`,field:{title:`标题`,description:`描述`,state:`状态`},notReported:`未报告`,unlink:`取消关联`,keepHost:`保留 {{host}} 的版本`,keepKanvil:`保留 Kanvil 的版本`,createAgain:`重新创建议题`,unlinkTicket:`取消关联 {{key}}`,unlinkConfirm:`要停止同步 {{key}} 吗?工单和议题都会保留。`},import:{count:{tickets:`工单`,workflow:`工作流状态`,fields:`自定义字段`,labels:`标签`,relations:`关联`,comments:`评论`,evidence:`证据`,links:`链接`},notExport:`此文件不是 Kanvil 工单导出文件。`,progress_other:`{{status}} · {{done, number}} / {{count, number}} 条记录`,progressFailed_other:`{{status}} · {{done, number}} / {{count, number}} 条记录 · {{failed, number}} 条失败`,title:`导入`,description:`从 Kanvil 工单导出文件或其他跟踪工具(Linear、Jira、Trello、Plane、PLANKA 或 Kaneo)创建项目。`,action:`导入项目`,detailsOf:`{{name}} 的详情`,details:`详情`,exportFile:`Kanvil 导出文件`,source:`来源`,file:`导出文件`,jiraEdition:`Jira 版本`,siteUrl:`站点 URL`,accountEmail:`账户邮箱`,apiKey:`API 密钥`,apiToken:`API 令牌`,personalToken:`个人访问令牌`,token:`令牌`,apiUrl:`API URL`,workspaceSlug:`工作区 URL 标识`,signInWith:`登录方式`,username:`用户名或邮箱`,password:`密码`,checkConnection:`请检查连接信息`,noProjects:`这些凭据无法读取任何{{label}}。`,includeComments:`包含评论`,projectName:`项目名称`,start:`导入`,connect:`连接`,preview:`预览`,starting:`启动中…`,connecting:`连接中…`,checking:`检查中…`,matched:`已匹配的人员`,unmatched:`未匹配的人员`,previewLabel:`导入预览`,errorPrefix:`错误:`,notePrefix:`注意:`,progressLabel:`导入进度`,notImported:`未导入的记录`,stop:`停止导入`,openProject:`打开项目`}},native:{labelValue:`{{label}}:{{value}}`,ui:{dismiss:`关闭`,loading:`加载中`},server:{url:`服务器 URL`,connect:`连接`,change:`更换服务器`,invalidOrigin:`请使用 Kanvil 服务器的 HTTP 或 HTTPS 源地址,不要包含路径或凭据。`,httpsRequired:`请使用 HTTPS 连接到 Kanvil 服务器。`},login:{setupTitle:`创建所有者账户`,signIn:`登录`,signingIn:`正在登录…`,createAccount:`创建账户`,signInWith:`使用 {{provider}} 登录`,name:`名称`,setupToken:`设置令牌`,email:`邮箱`,password:`密码`},connection:{connecting:`连接中`,connected:`● 实时`,offline:`离线 · 缓存数据`,closed:`已关闭`,signedOut:`登录以重新连接`},screen:{projects:`项目`,inbox:`收件箱`,settings:`设置`,tickets:`工单`,ticket:`工单`,newTicket:`新建工单`,editTicket:`编辑工单`},projects:{empty:`暂无项目`,new:`新建项目`,name:`项目名称`,prefix:`工单前缀`,description:`描述`,create:`创建项目`},tickets:{search:`搜索工单`,searchPlaceholder:`标题、描述或编号`,allStatuses:`所有状态`,empty:`没有匹配的工单`,count:`{{shown}} / {{total}}`},ticket:{priority:`{{priority}}优先级`,noDifficulty:`未指定难度`,version:`v{{version}}`,starts:`{{date}} 开始`,due:`{{date}} 截止`},editor:{stale:`此工单已被更改。你保存的草稿仍基于版本 {{version}}。`,discardDraft:`放弃草稿并重新加载`,title:`标题`,noDifficulty:`未指定`,labels:`标签(以逗号分隔)`,scopes:`范围(以逗号分隔)`,editMarkdown:`编辑 Markdown`,previewMarkdown:`预览 Markdown`,description:`描述(Markdown)`,acceptanceCriteria:`验收标准(Markdown)`,parent:`父工单 ID`,automationReady:`在需求和依赖允许时可供智能体处理`,holdReason:`搁置原因`,draftSaved:`草稿已保存在此设备上`,save:`保存工单`},detail:{archived:`已归档`,subscribe:`订阅`,unsubscribe:`取消订阅`,share:`分享`,description:`描述`,noDescription:`_暂无描述_`,acceptanceCriteria:`验收标准`,noAcceptanceCriteria:`_暂无验收标准_`,fields:`字段`,archive:{action:`归档工单`,title:`要归档工单吗?`,message:`要将此工单从活跃列表中移除,并取消智能体处理资格吗?`},unarchive:{action:`取消归档工单`,title:`要取消归档工单吗?`,message:`要将此工单恢复到活跃列表吗?`}},readiness:{title:`智能体就绪状态`,ready:`可以认领`,notReady:`尚不可认领`,hold:`搁置:{{reason}}`,claimed:`已被 {{worker}} 认领,直到 {{time}}。`,release:{action:`释放我的认领`,title:`要释放认领吗?`,message:`释放所有权前,请先停止你的执行者。`,confirm:`释放`},recover:{action:`收回已过期的认领`,explanation:`只有项目管理员可以收回已过期的认领。请先确认执行者已停止。`,reason:`收回原因`,confirm:`执行者已停止 · 收回`}},relations:{title:`关联`,parent:`父工单 · {{key}} · {{title}}`,openParent:`打开父工单`,children:`子工单`,previousChildren:`上一组子工单`,nextChildren:`下一组子工单`,remove:`移除关联`,removeTitle:`要移除关联吗?`,add:`添加关联`,find:`查找工单`,type:`关联类型`,ticket:`工单`,choose:`选择工单`},discussion:{title:`讨论`,previous:`较早的评论`,next:`较新的评论`,field:`评论(Markdown)`,submit:`评论`,you:`你`,edit:`编辑评论`,editField:`评论`,delete:`删除评论`,deleteTitle:`要删除评论吗?`,deleteMessage:`要永久移除此评论吗?`,save:`保存评论`},attachments:{title:`附件`,item:`{{name}} · {{size}} kB`,remove:`移除 {{name}}`,removeTitle:`要移除附件吗?`,working:`处理中…`,add:`添加附件`,tooLarge:`请选择不超过 10 MB 的文件。`,sharingUnavailable:`此设备无法分享文件。`},evidence:{title:`证据`,explanation:`结果由提交它们的账户报告。`,add:`添加证据`,name:`标题`,url:`URL`,outcome:`报告的结果`,commit:`提交(完整哈希)`,note:`备注`,save:`保存证据`},activity:{title:`动态`,previous:`较早的动态`,next:`较新的动态`},inbox:{markAllRead:`全部标记为已读`,empty:`没有通知`},notifications:{title:`通知`,inApp:`在收件箱中接收已订阅工单的更新`,push:`推送通知`,enableDevice:`在此设备上启用推送`,disableDevice:`在此设备上停用推送`,unconfigured:`此版本需要 Expo 项目 ID 和签名配置才能推送。`,noProjectId:`此版本需要 Expo 项目 ID 才能接收推送通知。`,permissionDenied:`请在设备设置中允许通知以启用推送。`,channel:`工单更新`},settings:{password:{title:`本地密码`,current:`当前密码`,new:`新密码`,change:`更改密码`,updated:`密码已更新;其他会话已撤销`},oidc:{linked:`账户已关联`,explanation:`使用此提供方登录前,请先关联此账户。`,link:`关联 {{provider}}`},signOut:{action:`退出登录`,title:`要退出登录吗?`,message:`此账户的缓存工单和草稿将从此设备中移除。`},changeServer:{title:`要更换服务器吗?`,message:`要退出登录并清除此账户的本地缓存和草稿吗?`}}}};export{e as default};
@@ -1 +0,0 @@
1
- var e={common:{status:{backlog:`待規劃`,todo:`待處理`,in_progress:`進行中`,in_review:`審查中`,done:`已完成`,cancelled:`已取消`},priority:{urgent:`緊急`,high:`高`,medium:`中`,low:`低`,none:`無優先順序`},kind:{feature:`功能`,bug:`錯誤`,chore:`雜務`,research:`研究`,documentation:`文件`},difficulty:{low:`低`,med:`中`,high:`高`,none:`無難度`},role:{reader:`唯讀`,writer:`可編輯`,admin:`管理員`},permission:{ticket:{write:{label:`編輯工單`,description:`建立、編輯、移動、認領及留言工單;建立專案`},delete:{label:`刪除工單`,description:`永久刪除工單`}},project:{manage:{label:`管理專案`,description:`專案詳細資料、工作流程、標籤、欄位、整合及生命週期`}},member:{manage:{label:`管理成員`,description:`新增、變更及移除成員`}},invitation:{manage:{label:`管理邀請`,description:`透過電子郵件邀請成員`}},sharing:{manage:{label:`管理共用`,description:`公開唯讀連結及行事曆訂閱`}},workspace:{manage:{label:`管理工作區`,description:`工作區詳細資料、共用標籤及角色`}}},customFieldType:{text:`文字`,number:`數字`,date:`日期`,checkbox:`核取方塊`,select:`單選`,multiselect:`複選`},customField:{removedOption:`已移除的選項`,checked:`是`},filterField:{status:`狀態`,priority:`優先順序`,kind:`類型`,difficulty:`難度`,label:`標籤`,assigneeId:`負責人`,customField:`欄位`},sort:{priority:`優先順序`,updated:`最近更新`,created:`最近建立`,title:`標題`,labels:`標籤`,due:`到期日`,start:`開始日期`,number:`工單編號`,status:`狀態`,difficulty:`難度`,kind:`類型`,assignee:`負責人`,manual:`手動`},due:{overdue:`已逾期`,today:`今天到期`,week:`本週到期`,scheduled:`有到期日`,none:`無到期日`},relation:{blocks:{outgoing:`阻擋`,incoming:`被阻擋於`},related:{outgoing:`相關`,incoming:`相關`},duplicate:{outgoing:`重複於`,incoming:`被重複於`},causes:{outgoing:`導致`,incoming:`由其導致`},clones:{outgoing:`複製自`,incoming:`被複製為`},implements:{outgoing:`實作`,incoming:`由其實作`},reviews:{outgoing:`審查`,incoming:`由其審查`}},remoteKind:{branch:`分支`,pull_request:`提取要求`,issue:`議題`},notificationCategory:{assignment:`指派`,status:`狀態變更`,comment:`留言`,mention:`提及`,update:`其他更新`,due_soon:`即將到期`,overdue:`已逾期`},destinationEvent:{created:`新工單`},deliveryKind:{email:`電子郵件`,webhook:`Webhook`},change:{pull_request:{name:`提取要求`,opened:`提取要求已開啟`,draft:`草稿提取要求`,merged:`提取要求已合併`,closed:`提取要求未合併即關閉`},merge_request:{name:`合併要求`,opened:`合併要求已開啟`,draft:`草稿合併要求`,merged:`合併要求已合併`,closed:`合併要求未合併即關閉`},branchCreated:`分支已建立`},issueLinkState:{active:`同步中`,paused:`已暫停`,review:`需要審查`,creating:`正在建立議題`,unknown:`建立未確認`},importStatus:{previewed:`可以匯入`,running:`匯入中`,completed:`已匯入`,failed:`失敗`,cancelled:`已取消`},importProvider:{linear:{project:`團隊`,setup:`請在 Linear 的 Settings › Security & access 建立個人 API 金鑰,具備讀取權限即可。`},jira:{project:`專案`,setup:`Jira Cloud 使用帳號電子郵件及在 id.atlassian.com 建立的 API 權杖登入;Data Center 和 Server 使用個人存取權杖。具備專案的瀏覽權限即可。`},trello:{project:`看板`,setup:`請使用你在 trello.com/power-ups/admin 管理的 Power-Up 的 API 金鑰及為其產生的權杖,具備讀取權限即可。`},plane:{project:`專案`,setup:`請在 Plane 的 Profile settings › Personal access tokens 建立個人存取權杖。Plane Cloud 的 API 位址為 https://api.plane.so;工作區 URL 代碼是其網址的第一段。`},planka:{project:`看板`,setup:`請使用可開啟該看板的 PLANKA 帳號登入;Kanvil 開啟的工作階段會在讀取結束時關閉。PLANKA 2 管理員也可以改為核發 API 金鑰。`},kaneo:{project:`專案`,setup:`請在 Kaneo 的 Settings › Account › Developer 建立 API 金鑰。`}},plankaSignIn:{password:`使用者名稱和密碼`,api_key:`API 金鑰`},jiraEdition:{cloud:`Cloud`,data_center:`Data Center 或 Server`},event:{label:{created:`標籤已建立`,updated:`標籤已更新`,deleted:`標籤已刪除`},workflow:{created:`工作流程狀態已新增`,updated:`工作流程狀態已變更`,deleted:`工作流程狀態已移除`},custom_field:{created:`欄位已建立`,updated:`欄位已更新`,deleted:`欄位已刪除`},ticket:{created:`工單已建立`,updated:`工單已更新`,deleted:`工單已刪除`,moved:`從其他專案移入`,moved_away:`已移至其他專案`,due_soon:`即將到期`,overdue:`已逾期`,claimed:`工作已認領`},claim:{renewed:`認領已續期`,released:`認領已釋出`,recovered:`認領已收回`},comment:{created:`已新增留言`,updated:`留言已編輯`,deleted:`留言已刪除`},relation:{added:`已新增關聯`,removed:`已移除關聯`},attachment:{created:`已附加檔案`,deleted:`已移除檔案`},evidence:{added:`已附加佐證`},resource:{added:`已新增連結`,updated:`連結已編輯`,removed:`已移除連結`},calendar_feed:{created:`行事曆訂閱已建立`,revoked:`行事曆訂閱已撤銷`},project:{created:`專案已建立`,updated:`專案已更新`,archived:`專案已封存`,restored:`專案已還原`,transferred:`專案已移至其他工作區`,deleted:`專案已刪除`},membership:{updated:`專案存取權已變更`},workspace:{owner_changed:`工作區擁有者已變更`},role:{created:`角色已建立`,updated:`角色已變更`,deleted:`角色已刪除`},invitation:{updated:`邀請已變更`},destination:{created:`已新增目的地`,updated:`目的地已變更`,deleted:`已移除目的地`},repository:{connected:`儲存庫已連線`,updated:`儲存庫連線已變更`,disconnected:`儲存庫已中斷連線`,received:`已收到儲存庫 Webhook`},issue_link:{updated:`議題同步已變更`}},error:{network:`無法連線至 Kanvil。請檢查網路連線後再試一次。`,fallback:`無法完成要求`,input:`輸入`,code:{unauthorized:`請登入以繼續。`,session_required:`此動作需要使用已登入的帳號。`,account_disabled:`此帳號已停用。`,forbidden:`您沒有執行此動作的權限。`,insufficient_scope:`此憑證不允許執行此動作。`,workspace_scope_required:`此動作需要使用具備工作區存取權的帳號。`,invalid_origin:`不允許此來源。`,not_found:`找不到此項目,或您無權檢視。`,version_conflict:`載入後此內容已變更。請重新載入後再試一次。`,claim_conflict:`另一個執行者已認領此工單。`,idempotency_conflict:`此要求已用於另一項變更。`,project_archived:`請先還原已封存的專案再進行變更。`,rate_limited:`短時間內變更過多。請稍候再試。`,snapshot_required:`即時動態已落後。請重新載入以繼續。`,request_failed:`無法完成要求`}},action:{add:`新增`,apply:`套用`,back:`返回`,cancel:`取消`,clear:`清除`,close:`關閉`,confirm:`確認`,continue:`繼續`,copy:`複製`,create:`建立`,delete:`刪除`,done:`完成`,edit:`編輯`,open:`開啟`,remove:`移除`,rename:`重新命名`,reset:`重設`,retry:`重試`,save:`儲存`,search:`搜尋`},state:{copied:`已複製`,loading:`載入中…`,saved:`已儲存`,saving:`儲存中…`,none:`無`,unassigned:`未指派`},evidenceKind:{pull_request:`提取要求`,test:`測試`,review:`審查`,deployment:`部署`,device:`裝置`,other:`其他`},evidenceOutcome:{reported:`已回報`,pending:`待定`,passed:`通過`,failed:`失敗`},readinessReason:{project_archived:`專案已封存`,not_open:`工單必須處於待處理狀態且未封存`,not_enabled:`尚未啟用代理程式工作`,missing_description:`新增說明`,missing_acceptance_criteria:`新增驗收條件`,missing_difficulty:`選擇難度`,duplicate:`此工單已標示為重複`,claim_recovery_required:`收回擁有權前,請確認先前的執行者已停止`,claimed:`已由 {{worker}} 認領`,dependency:`{{key}} 尚未完成`},person:{deleted:`已刪除的帳號`,former:`前成員`},signIn:{codeTitle:`使用驗證碼登入`,resetTitle:`重設密碼`,codeSent:`如果 {{email}} 有帳號,驗證碼已在寄送途中。驗證碼將於 10 分鐘後過期。`,code:`驗證碼`,newPassword:`新密碼`,sendCode:`以電子郵件寄送驗證碼`,back:`返回登入`,resend:`重新寄送驗證碼`,resent:`已重新寄送驗證碼`,emailCode:`以電子郵件寄送登入驗證碼`,forgot:`忘記密碼?`,resetDone:`密碼已重設。請使用新密碼登入。`,resetDoneTitle:`密碼已重設`,resetDoneBody:`請使用新密碼登入。`,invalidCode:`此驗證碼錯誤、已使用或已過期。請重新寄送以取得有效的驗證碼。`,localPassword:`本機密碼`},language:{label:`語言`,system:`系統預設`}},shell:{ui:{showValue:`顯示{{label}}`,hideValue:`隱藏{{label}}`,previousPage:`上一頁{{noun}}`,nextPage:`下一頁{{noun}}`,pageRange:`第 {{from}}–{{to}} 項,共 {{total}} 項`,priority:`{{label}}優先順序`,working:`處理中…`,searchPlaceholder:`搜尋…`,clearValue:`清除{{label}}`,copyValue:`複製{{label}}`,copied:`已複製{{value}}`},documentTitle:`{{name}} · Kanvil`,openKanvil:`開啟 Kanvil`,page:{home:`首頁`,myWork:`我的工作`,inbox:`收件匣`,search:`搜尋`,settings:`設定`,planning:`規劃`,ticket:`工單`,tickets:`工單`,projects:`專案`},connection:{restored:`連線已恢復`,lost:`連線已中斷`,reconnecting:`正在重新連線…`,reload:`重新載入`,signIn:`登入以重新連線`},app:{skipToContent:`跳至內容`,assigned:`指派給您的`,openCount_other:`{{count, number}} 個未完成`,noAssigned:`沒有指派給您的未完成工單`,allInMyWork_other:`在「我的工作」中檢視全部 {{count, number}} 個`,openMyWork:`開啟「我的工作」`,recentActivity:`最近活動`,noActivity:`尚無活動`,searchProjects:`搜尋專案`,projectCount_other:`{{count, number}} 個專案`,noMatchingProjects:`沒有相符的專案`,clearSearch:`清除搜尋`,noWorkspaces:`尚無工作區`,noActiveProjects:`沒有使用中的專案`,noProjects:`尚無專案`,archivedProjects:`已封存的專案`,archived:`已封存`,noOpenTickets:`沒有未完成的工單`,overdueCount_other:`{{count, number}} 個已逾期`,percentDone:`已完成 {{percent}}`,nextDue:`下次到期 <time/>`,projectSettingsFor:`{{name}} 的專案設定`,pageNotFound:`找不到頁面`,openHome:`開啟首頁`,tryAgain:`再試一次`,adminRequired:`需要執行個體管理員權限`,projectNotFound:`找不到專案`,noWorkspaceSelected:`未選取工作區`},auth:{signIn:`登入`,createOwner:`建立擁有者帳號`,ownerHint:`第一個帳號負責管理此執行個體。`,invitedHint:`請使用受邀的電子郵件地址登入以接受邀請。`,signInWith:`使用 {{provider}} 登入`,useEmail:`使用電子郵件和密碼`,or:`或`,name:`名稱`,setupToken:`設定權杖`,setupTokenHint:`請使用執行個體設定中的 KANVIL_SETUP_TOKEN。`,email:`電子郵件`,password:`密碼`,signingIn:`正在登入…`,createAccount:`建立帳號`,consent:{expired:`授權要求已過期。請重新連線用戶端。`,title:`授權 {{client}}`,titleUnnamed:`授權用戶端`,subtitle:`此用戶端要求以您的帳號身分存取。專案權限仍然適用。`,deny:`拒絕`,allow:`允許存取`},invitation:{unavailable:`邀請無法使用`,join:`加入 {{workspace}}`,invited:`受邀帳號`,from:`邀請者`,access:`存取權`,removedProjects:`已移除的專案`,wholeWorkspace:`整個工作區`,expires:`到期時間`,expired:`此邀請已過期。請向工作區管理員索取新的邀請。`,revoked:`此邀請已撤銷。請向工作區管理員索取新的邀請。`,accepted:`此邀請已被接受。請向工作區管理員索取新的邀請。`,wrongAccount:`您目前以 <account>{{current}}</account> 的身分登入。請以 {{invited}} 的身分登入以接受邀請。`,signOut:`登出`,joined:`已加入 {{workspace}}`,accept:`接受邀請`},callback:{cancelled:`登入已取消。準備好後請再試一次。`,linkedElsewhere:`此身分已連結至另一個 Kanvil 帳號。請使用其他身分或聯絡管理員。`,notLinked:`此身分未連結至 Kanvil 帳號。請使用本機帳號登入,並在設定中連結。`,expired:`登入要求已過期或無法驗證。請在此畫面再試一次。`,emailMismatch:`無法連結身分識別提供者的電子郵件。請聯絡管理員。`,failed:`無法完成登入。請再試一次或聯絡管理員。`}},you:`您`,inbox:{markAllRead:`全部標示為已讀`,clearRead:`清除已讀`,cleared_other:`已清除 {{count, number}} 則已讀通知`,unread:`未讀`,mentions:`提及`,all:`所有通知`,noUnread:`沒有未讀通知`,noMentions:`沒有提及`,noNotifications:`沒有通知`,markUnread:`標示為未讀`,markRead:`標示為已讀`,dismiss:`移除`},search:{field:`搜尋工作區`,placeholder:`搜尋工單、專案、留言、活動…`,tab:{all:`全部`,project:`專案`,ticket:`工單`,comment:`留言`,activity:`活動`},indexing:`外部搜尋正在同步,工單結果暫時來自 PostgreSQL。`,empty:`搜尋工單、專案、留言及活動`,noResults:`找不到「{{query}}」的結果`,results:`搜尋結果`,pages:`搜尋結果分頁`,previous:`上一頁`,next:`下一頁`,type:{project:`專案`,ticket:`工單`,comment:`留言`,activity:`活動`}},column:{key:`工單`,labels:`標籤`,scopes:`範圍`,status:`狀態`,priority:`優先順序`,difficulty:`難度`,kind:`類型`,assigneeId:`負責人`,startAt:`開始`,dueAt:`到期`,createdAt:`建立時間`,updatedAt:`更新時間`},public:{notShared:`此專案未共用`,notSharedHint:`此連結已關閉或從未存在。成員可登入後檢視。`,noTickets:`沒有工單`,ticketUnavailable:`工單無法使用`,backToTickets:`返回工單`,description:`說明`,noDescription:`_尚無說明_`,acceptanceCriteria:`驗收條件`,noAcceptanceCriteria:`_尚無驗收條件_`,ticketProperties:`工單屬性`,properties:`屬性`,status:`狀態`,priority:`優先順序`,kind:`類型`,difficulty:`難度`,startDate:`開始日期`,dueDate:`到期日`,labels:`標籤`,scopes:`範圍`,created:`建立時間`,updated:`更新時間`,relationships:`關聯`,parent:`父工單`,child:`子工單`},sidebar:{workspace:`工作區`,unread_other:`{{count, number}} 則未讀`,userSettings:`使用者設定`,administration:`管理`,signOut:`登出`,projectSettings:`專案設定`},workspace:{new:`新增工作區`,name:`工作區名稱`,key:`工作區代碼`,create:`建立工作區`,workspaces:`工作區`,switch:`切換工作區`,settings:`工作區設定`},palette:{open:`前往…`,title:`前往`,description:`尋找專案、工單、頁面或動作`,placeholder:`搜尋工單、專案、頁面、動作…`,searching:`搜尋中…`,noResults:`沒有結果`,jumpTo:`跳至`,openKey:`在 {{project}} 中開啟 {{key}}`,resultsIn:`{{workspace}} 中的結果`,results:`結果`,seeAll_other:`檢視全部 {{count, number}} 個結果`,actions:`動作`,pages:`頁面`,newTicketIn:`在 {{project}} 中新增工單`,myTicketsIn:`我在 {{project}} 中的工單`,lightMode:`切換為淺色模式`,darkMode:`切換為深色模式`,keywords:{jump:`{{query}} 跳至 開啟`,allResults:`所有結果 {{query}}`,newTicket:`新增工單 建立`,myTickets:`我的工單 指派給我`,lightMode:`切換 淺色模式 主題 外觀`,darkMode:`切換 深色模式 主題 外觀`,help:`鍵盤快速鍵 說明`,home:`首頁 總覽 所有專案`,myWork:`我的工作 指派的工單`,search:`搜尋 留言 活動 專案 工單`,inbox:`收件匣 通知`,settings:`設定 {{scope}} {{label}}`}},actionCategory:{general:`一般`,ticketList:`工單清單`,inbox:`收件匣`,ticket:`工單`,search:`搜尋`,markdown:`Markdown`},action:{palette:`前往任何地方`,help:`鍵盤快速鍵`,sidebar:`切換側邊欄`,newTicket:`新增工單`,search:`搜尋工單`,highlight:`醒目提示下一個或上一個工單`,open:`開啟醒目提示的工單`,preview:`在清單旁預覽醒目提示的工單`,select:`選取醒目提示的工單`,properties:`設定醒目提示工單的狀態、優先順序或負責人`,inboxHighlight:`醒目提示下一則或上一則通知`,inboxOpen:`在收件匣旁檢視醒目提示通知的工單`,inboxRead:`將醒目提示的通知標示為已讀或未讀`,inboxDismiss:`移除醒目提示的通知`,step:`開啟下一個或上一個工單`,edit:`編輯工單`,save:`儲存工單或留言`,results:`在搜尋結果間移動`,insertBlock:`在視覺化編輯器中插入表格、圖表、檔案或其他區塊`},move:{top:{label:`將醒目提示的工單移至頂端`,menu:`移至頂端`},up:{label:`將醒目提示的工單上移`,menu:`上移`},down:{label:`將醒目提示的工單下移`,menu:`下移`},bottom:{label:`將醒目提示的工單移至底端`,menu:`移至底端`},previous:{label:`將醒目提示的工單移至上一個狀態`,menu:`移至上一個狀態`},next:{label:`將醒目提示的工單移至下一個狀態`,menu:`移至下一個狀態`}},copy:{link:{label:`複製連結`,copied:`工單連結`},keyAndTitle:{label:`複製編號和標題`,copied:`工單`},title:{label:`複製標題`,copied:`標題`},markdown:{label:`複製為 Markdown`,copied:`Markdown`},branch:{label:`複製分支名稱`,copied:`分支名稱`}},settingsNav:{account:`帳號`,settings:`設定`,workspace:`工作區`,workspaceSettings:`工作區設定`,projects:`專案`,projectSettings:`專案設定`,administration:`管理`,section:{profile:`個人資料與安全性`,appearance:`外觀`,preferences:`偏好設定`,credentials:`API 金鑰`,notifications:`通知`,general:`一般`,members:`成員`,roles:`角色`,labels:`標籤`,workflow:`工作流程`,fields:`欄位`,integrations:`整合`,calendar:`行事曆訂閱`,storage:`檔案儲存空間`,search:`搜尋`,events:`事件傳遞`,users:`使用者`,workspaces:`工作區`,authentication:`驗證`}},browser:{copyFailed:`複製失敗。請選取文字後手動複製。`,readFailed:`無法讀取檔案`,encodeFailed:`無法編碼檔案`,imageTooBig:`請選擇小於 10 MB 的圖片。`,cannotResize:`此瀏覽器無法調整圖片大小。`,prepareFailed:`無法處理圖片。`,stillTooLarge:`調整大小後圖片仍然過大。請選擇較簡單的圖片。`},primitive:{close:`關閉`,more:`更多`,breadcrumb:`階層連結`,sidebar:`側邊欄`,sidebarDescription:`顯示行動版側邊欄。`,toggleSidebar:`切換側邊欄`,resizeSidebar:`調整側邊欄寬度`,expandSidebar:`展開側邊欄`,commandTitle:`命令面板`,commandDescription:`搜尋要執行的命令…`}},ticket:{list:{selectSection:`選取{{section}}工單`,expandSection:`展開{{section}}工單`,collapseSection:`收合{{section}}工單`,sectionTickets:`{{section}}工單`,later:`之後`,selectAll:`選取所有顯示的工單`,selectTicket:`選取 {{key}}`,title:`標題`,all:`全部`,planned:`已規劃`,archived:`已封存`,allTickets:`所有工單`,customView:`自訂檢視`,sectionCount:`{{n, number}} 個{{section}}`,planning:`{{project}} 規劃`,collection:`{{source}}({{sections}})`,moved:`{{key}} 已移動`,movedTo:`{{key}} 已移至{{status}}`,movedAbove:`{{key}} 已移至 {{neighbor}} 上方`,movedBelow:`{{key}} 已移至 {{neighbor}} 下方`,movedToAbove:`{{key}} 已移至{{status}},位於 {{neighbor}} 上方`,movedToBelow:`{{key}} 已移至{{status}},位於 {{neighbor}} 下方`,emptyFiltered:`沒有相符的工單`,emptyPlanning:`沒有已規劃或已封存的工單`,emptyProject:`尚無工單`,emptyWork:`沒有指派給您的未完成工單`,createFirst:`建立第一個工單`,activeWork:`進行中的工作`,views:`工單檢視`,saveCurrentView:`儲存目前的檢視`,deleteView:`刪除檢視 {{name}}`,deleteViewConfirm:`要從已儲存的檢視中移除 {{name}} 嗎?工單不受影響。`,planningLink:`規劃`,newTicketShortcut:`新增工單({{shortcut}})`,saveView:`儲存檢視`,viewSaved:`檢視已儲存`,viewName:`檢視名稱`,retry:`重新載入工單`,board:`工單看板`,tickets:`工單`,resizeColumn:`調整「{{column}}」欄寬`,count_other:`{{count, number}} 個工單`,scheduledCount_other:`{{count, number}} 個已排程工單`},move:{destination:`目的地`,projectPlaceholder:`移至專案…`,blockers:`移動前請先解決`,submit:`移動工單`,pending:`移動中…`},picker:{placeholder:`選擇工單`,loading:`正在載入工單…`,searchLabel:`搜尋{{label}}`,searchPlaceholder:`依標題或編號搜尋…`,noParent:`無父工單`,searching:`搜尋中…`,empty:`找不到工單`},property:{status:`狀態`,priority:`優先順序`,kind:`類型`,difficulty:`難度`,assignee:`負責人`,you:`{{name}}(您)`,assignTo:`指派給…`,set:`設定{{label}}…`,search:`搜尋{{label}}`,noMatches:`沒有相符項目`},field:{mixed:`混合`,unchecked:`否`,noValue:`無值`},project:{label:`專案`,placeholder:`在專案中建立…`,search:`搜尋專案`},tags:{labels:`標籤`,scopes:`範圍`,summary:`{{label}}:{{tags}}`,edit:`編輯{{label}}`,editValues:`編輯{{label}}:{{tags}}`,editMixed:`編輯{{label}}:混合`,mixed:`混合{{label}}`,none:`無{{label}}`,mixedNote:`所選工單的{{label}}各不相同。`,clear:`清除{{label}}`,replace:`取代{{label}}`},tagInput:{remove:`移除{{label}} {{tag}}`,addAnother:`再新增一個…`,add:`新增{{label}}…`,choose:`選擇{{label}}`,chooseLabels:`選擇標籤`,searchPlaceholder:`搜尋標籤…`,searchLabel:`搜尋專案標籤`,empty:`沒有相符的標籤`},link:{previewUnavailable:`無法預覽`},userPicker:{label:`帳號`,placeholder:`選擇帳號`,searchPlaceholder:`搜尋名稱或電子郵件…`,searchLabel:`搜尋帳號`,useEmail:`使用 {{email}}`,emptyAnyAccount:`搜尋成員,或輸入現有帳號的電子郵件。`,empty:`沒有相符的成員`},date:{placeholder:`選擇日期`,clear:`清除{{label}}`,start:`開始日期`,startShort:`開始`,noStart:`無開始日期`,due:`到期日`,dueShort:`到期`,noDue:`無到期日`},filter:{me:`我`,searchTickets:`搜尋工單`,searchTicketsPlaceholder:`搜尋工單…`,filters:`篩選`,filtersActive:`篩選({{active, number}})`,due:`到期`,anyDue:`任何到期日`,archived:`已封存`,hideArchived:`隱藏已封存`,includeArchived:`包含已封存`,archivedOnly:`僅已封存`,includingArchived:`包含已封存`,reset:`重設篩選`,clear:`清除篩選`,active:`目前的工單篩選`,searchChip:`搜尋:{{query}}`,chipAny:`{{field}}:`,chipNone:`{{field}}不是:`,notValues:`不是 {{values}}`,match:`{{label}}比對方式`,is:`是`,isNot:`不是`,searchPlaceholder:`{{search}}…`,anyValue:{status:`所有狀態`,priority:`所有優先順序`,kind:`所有類型`,difficulty:`所有難度`,label:`所有標籤`,assigneeId:`任何人`,customField:`任何欄位值`},searchValues:{status:`搜尋狀態`,priority:`搜尋優先順序`,kind:`搜尋類型`,difficulty:`搜尋難度`,label:`搜尋標籤`,assigneeId:`搜尋人員`,customField:`搜尋欄位`}},display:{title:`顯示`,orderBy:`排序依據`,direction:`方向`,ascending:`遞增`,descending:`遞減`,reset:`重設顯示`,groupBy:`分組依據`,dueDate:`到期日`,layout:`版面配置`,list:`清單`,board:`看板`,backgrounds:`專案背景`,show:`顯示`,hide:`隱藏`,rowSpacing:`列間距`,compact:`緊湊`,comfortable:`寬鬆`,labelDisplay:`標籤顯示`,compactPreview:`緊湊預覽`,allLabels:`所有標籤`,properties:`屬性`},selection:{region:`已選取的工單`,clear:`清除選取`,selected_other:`已選取 {{count, number}} 個`,selectedOf_other:`{{count, number}} / {{total}}<wide> 已選取</wide>`,applied_other:`已將{{label}}套用至 {{count, number}} 個工單`,partlyApplied_other:`已套用至 {{done, number}} / {{count, number}} 個工單`,mixedDue:`到期日各不相同`,fields:`欄位`,more:`更多動作`,moveTo:`移至{{status}}`,restoreChange:`還原`,restore:`還原所選項目`,archive:`封存所選項目`,delete:`刪除所選項目`,deleteLimit:`一次最多刪除 {{limit, number}} 個`,archiveConfirm_other:`要封存 {{collection}} 中的 {{count, number}} 個工單嗎?`,deleteConfirm_other:`要永久刪除 {{collection}} 中的 {{count, number}} 個工單及其留言、關聯和附件嗎?未選取的子工單將失去父工單。`,deleted_other:`已刪除 {{count, number}} 個工單`},menu:{copied:`已複製{{label}}`,open:`開啟工單`,preview:`預覽`,newTab:`在新分頁中開啟`,edit:`編輯工單`,editTitle:`編輯 {{key}}`,duplicate:`建立工單副本`,created:`已建立 {{key}}`,move:`移動`,moveToProject:`移至專案…`,moveTitle:`移動 {{key}}`,moved:`已移動為 {{key}}`,follow:`追蹤工單`,unfollow:`取消追蹤工單`,archive:`封存工單`,unarchive:`取消封存工單`,delete:`刪除工單`,deleteConfirm:`要永久刪除 {{key}} 及其留言、關聯和附件嗎?`,openProject:`開啟專案`,projectLink:`專案連結`,copyLink:`複製連結`,newTicket:`新增工單`,projectSettings:`專案設定`,manageAccount:`管理帳號`,email:`電子郵件`,copyEmail:`複製電子郵件`},schedule:{range:`{{from}} – {{to}}`,calendar:`行事曆`,timeline:`時間軸`,today:`今天`,previousMonth:`上個月`,nextMonth:`下個月`,previousWeeks:`前兩週`,nextWeeks:`後兩週`,emptyWeeks:`這幾週沒有排程`,monthTickets:`{{title}}的工單`,showDay_other:`顯示 {{day}} 的全部 {{count, number}} 個工單`,more_other:`還有 {{count, number}} 個`,ticketColumn:`工單`,scheduledTickets:`已排程工單`},copy:{description:`說明`,acceptanceCriteria:`驗收條件`}},detail:{field:{title:`標題`,description:`說明`,acceptanceCriteria:`驗收條件`,parent:`父工單`,parentTicket:`父工單`,labels:`標籤`,scopes:`範圍`,holdReason:`暫緩原因`,url:`URL`},page:{preview:`工單預覽`,unavailable:`工單無法使用`,noProject:`此連結未指明工單所屬的專案。`,gone:`此工單已刪除,或您已沒有存取權。`,closePreview:`關閉預覽`,openFullPage:`以完整頁面開啟`,backToTickets:`返回工單`,tickets:`工單`,previousTicket:`上一個工單`,previousTicketShortcut:`上一個工單(K)`,nextTicket:`下一個工單`,nextTicketShortcut:`下一個工單(J)`,position:`{{position, number}} / {{total, number}}`,subscribe:`訂閱`,unsubscribe:`取消訂閱`,subscribed:`已訂閱更新`,unsubscribed:`已取消訂閱`,archive:`封存工單`,unarchive:`取消封存工單`,archivedToast:`工單已封存`,unarchivedToast:`工單已取消封存`,archived:`已封存`,edit:`編輯工單`,editShortcut:`編輯工單(E)`,editTitle:`編輯 {{key}}`,actions:`工單動作`,copyKey:`複製工單編號`,keyCopied:`已複製 {{key}}`,noDescription:`_尚無說明_`,noAcceptanceCriteria:`_尚無驗收條件_`,coordination:`工單協作`,properties:`屬性`,created:`建立時間`,updated:`更新時間`},section:{discussion:`討論`,evidence:`佐證`,activity:`活動`},readiness:{heading:`代理程式就緒狀態`,ready:`可以認領`,notReady:`尚不可認領`,hold:`暫緩:{{reason}}`,claimedUntil:`已由 <strong>{{worker}}</strong> 認領,直到 {{date}}。`},claim:{release:`釋出我的認領`,releaseDescription:`確認執行者已停止寫入後釋出擁有權?`,recover:`收回已過期的認領`,recoverHelp:`收回認領需要專案管理員權限,且認領必須已過期。請先停止執行者。`,reason:`收回原因`,confirmed:`我已確認執行者已停止`,submit:`收回擁有權`},editor:{storageUnavailable:`此瀏覽器無法儲存草稿。儲存前請保持編輯器開啟。`,saved:`{{key}} 已儲存`,created:`{{key}} 已建立`,properties:`工單屬性`,readyForAgents:`可供代理程式處理`,readyForAgentsHelp:`在需求、阻擋項目和擁有權允許時,代理程式可以認領此工單`,agents:`代理程式`,notReady:`未就緒`,moreProperties:`更多屬性`,holdPlaceholder:`為什麼要暫緩工作?`,claimsNote:`認領仍取決於需求、阻擋項目和目前的擁有權。`,restoreSize:`還原編輯器大小`,expand:`展開編輯器`,staleTitle:`此工單已變更。`,staleDescription:`您的草稿仍以版本 {{version}} 為基礎;儲存時需要使用目前的版本。`,discardAndReload:`捨棄草稿並重新載入`,titlePlaceholder:`工單標題`,descriptionPlaceholder:`新增背景、需求或重現步驟…`,criteriaPlaceholder:`- [ ] 如何確認已完成?`,removeCriteria:`移除驗收條件`,addCriteria:`新增驗收條件`,savedLocally:`草稿已儲存在此裝置上`,notSavedLocally:`無法儲存草稿`,discardDraft:`捨棄草稿`,createMore:`繼續建立`,save:`儲存工單`,create:`建立工單`},resource:{removeConfirm:`要移除 {{name}} 嗎?`,uploading:`上傳中…`},attachment:{heading:`附件`,tooLarge:`每個檔案不得超過 10 MB。`,attached_other:`已附加 {{count, number}} 個檔案`,attach:`附加檔案`,emptyWritable:`尚無附件。將檔案拖放到這裡。`,empty:`尚無附件`,remove:`移除附件`,fileInput:`檔案(最大 10 MB)`},evidence:{description:`處理此工單的人員和整合所回報的連結及結果。`,add:`新增佐證`,empty:`尚無佐證`,added:`佐證已新增`,kindLabel:`類型`,outcomeLabel:`回報的結果`,commit:`提交(完整雜湊)`,note:`備註`},link:{heading:`連結`,add:`新增連結`,edit:`編輯連結`,save:`儲存連結`,remove:`移除連結`,empty:`尚無連結`,stateUnknown:`狀態不明`,remote:`{{kind}} · {{state}}`,remoteState:{open:`開啟`,closed:`已關閉`,merged:`已合併`,draft:`草稿`,active:`使用中`,deleted:`已刪除`}},activity:{previous:`較早的活動`,next:`較新的活動`},relations:{heading:`關聯`,add:`新增關聯`,linkExisting:`連結現有工單`,newChild:`新增子工單`,newChildTitle:`{{key}} 的新子工單`,children:`子工單 <count>{{done, number}}/{{total, number}}</count>`,previousChildren:`上一組子工單`,nextChildren:`下一組子工單`,empty:`尚無關聯`,type:`關聯類型`,ticket:`工單`,statusOf:`{{key}} 的狀態`,assigneeOf:`{{key}} 的負責人`,remove:{blocks:`移除阻擋關聯`,related:`移除相關關聯`,duplicate:`移除重複關聯`,causes:`移除導致關聯`,clones:`移除複製關聯`,implements:`移除實作關聯`,reviews:`移除審查關聯`}},discussion:{empty:`尚無留言`,previous:`較早的留言`,next:`較新的留言`,comment:`留言`,placeholder:`撰寫留言…`,posting:`張貼中…`,edited:`已編輯`,edit:`編輯留言`,delete:`刪除留言`,deleteConfirm:`要永久刪除此留言嗎?`},markdown:{format:{heading:`標題`,bold:`粗體`,italic:`斜體`,link:`連結`,linkHelp:`為所選文字加上連結`,bullets:`項目符號清單`,numbers:`編號清單`,tasks:`檢查清單`,code:`程式碼區塊`},formatting:`{{label}}格式`,editor:`{{label}}編輯器`,insertFile:`插入檔案`,insertFileInto:`將檔案插入{{label}}`,write:`撰寫`,visual:`視覺化`,preview:`預覽`,unsupported:`此文字使用了視覺化編輯器無法保留的 Markdown,例如 HTML 或註腳。`,nothingToPreview:`沒有可預覽的內容`,mention:`提及成員`,insertBlock:`插入區塊`,block:{quote:`引言`,table:`表格`,diagram:`圖表`,divider:`分隔線`,file:`檔案`},table:{addRow:`新增列`,addColumn:`新增欄`,deleteRow:`刪除列`,deleteColumn:`刪除欄`,deleteTable:`刪除表格`},linkAddress:`連結網址`,diagram:`圖表`,diagramFailed:`無法繪製此圖表:{{error}}`,diagramSource:`圖表原始碼`}},settings:{account:{title:`設定`,security:`登入與安全性`,localPassword:`本機密碼`,localPasswordDescription:`變更密碼會將您的其他工作階段登出。`,changePassword:`變更密碼`,oidcLinked:`可使用此身分識別提供者登入同一個帳號。`,oidcUnlinked:`透過此提供者登入前,請先連結您的帳號。`,linked:`已連結`,link:`連結 {{name}}`,currentPassword:`目前的密碼`,newPassword:`新密碼`,confirmPassword:`確認新密碼`,passwordMismatch:`兩次輸入的新密碼不一致。`,passwordUpdated:`密碼已更新,其他工作階段已登出。`},preferences:{behavior:`行為`,languageDescription:`套用於此瀏覽器,包括登入頁面。`,weekStart:`每週起始日`,weekStartDescription:`套用於所有日期選擇器。`,weekStartLanguage:`依語言預設`,sidebar:`啟動時的側邊欄`,sidebarDescription:`下次開啟 Kanvil 時生效。`,sidebarLast:`維持上次狀態`,sidebarExpanded:`展開`,sidebarCollapsed:`收合`,ticketLists:`工單清單`,reset:`重設偏好設定`,resetDescription:`將此瀏覽器中的這些選項還原為預設值。`,resetDone:`偏好設定已重設`},notifications:{title:`通知`,inbox:`收件匣`,inboxDescription:`您追蹤的工單更新會顯示在 Kanvil 中。`,inboxSwitch:`在收件匣接收已訂閱工單的更新`,push:`推播通知`,pushDescription:`將更新傳送到您已註冊的裝置。`,pushUnavailable:`此執行個體未啟用推播。`,pushSwitch:`在已註冊的裝置上接收推播通知`,categories:`類別`,categorySwitch:`{{label}}通知`,reminder:`即將到期提醒`,reminderDescription:`在追蹤的工單到期前多久提醒。`,reminderUnit:`提醒單位`,reminderAmount:`提醒數值`,unit:{minutes:`分鐘`,hours:`小時`,days:`天`,weeks:`週`}},layout:{nav:`設定`,section:`設定區段`,nested:`{{parent}} · {{child}}`,name:`名稱`,description:`說明`,descriptionPlaceholder:`新增說明`,noDescription:`尚無說明`,stale:`此內容已在其他地方變更。請取消後重新開始。`},profile:{title:`個人資料`,displayName:`顯示名稱`,edit:`編輯個人資料`,changePhoto:`變更相片`,removePhoto:`移除相片`,photoFile:`個人資料相片檔案`,photoUpdated:`相片已更新`,photoRemoved:`相片已移除`,saved:`個人資料已儲存`},credentials:{title:`API 金鑰`,description:`為指令碼、整合和代理程式提供可隨時撤銷的存取權。`,create:`建立 API 金鑰`,creating:`建立中…`,created:`API 金鑰已建立`,name:`名稱`,access:`存取權`,projects:`專案`,expires:`到期時間`,actions:`動作`,unavailableProject:`無法使用的專案`,untitled:`未命名的金鑰`,expired:`已過期`,disabled:`已停用`,custom:`自訂`,noProjects:`沒有專案存取權`,never:`永不`,revoke:`撤銷 API 金鑰`,revokeNamed:`要撤銷 {{name}} 嗎?使用此金鑰的連線將立即失去存取權。`,revokeUnnamed:`要撤銷此 API 金鑰嗎?使用此金鑰的連線將立即失去存取權。`,empty:`尚無 API 金鑰`,emptyDescription:`當指令碼、整合或代理程式需要存取您的專案時,可建立金鑰。`,copyNow:`請立即複製此金鑰。之後將無法再次檢視。`,newKey:`新的 API 金鑰`,copy:`複製 API 金鑰`,noProjectTitle:`請先選擇專案`,noProjectDescription:`API 金鑰至少需要存取一個專案。`,goToProjects:`前往專案`,keyName:`金鑰名稱`,keyNamePlaceholder:`例如:發行自動化`,projectAccess:`專案存取權`,findProject:`尋找專案`,projectDescription:`{{key}} · {{workspace}}`,workspace:`工作區`,noMatches:`沒有相符的專案`,roleLimit:`此金鑰的權限仍受您現有專案角色的限制。`,accessLevel:`存取層級`,preset:{read:`唯讀`,write:`讀取和寫入`,automation:`讀取、寫入及認領工作`,custom:`自訂權限`},permission:{read:{name:`讀取工單`,description:`檢視專案、工單、留言和附件。`},write:{name:`編輯工單`,description:`建立和更新工單、留言和附件。`},claim:{name:`認領工作`,description:`認領、續期和釋出工單擁有權。`},admin:{name:`管理專案`,description:`在您的角色允許範圍內變更專案設定和成員。`}},expiry:{7:`7 天`,30:`30 天`,90:`90 天`,365:`1 年`,custom:`自訂日期`,never:`永不過期`},expiresOn:`到期日`,neverDescription:`金鑰在您刪除前會持續有效。`},calendarFeeds:{title:`行事曆訂閱`,new:`新增行事曆訂閱`,created:`行事曆訂閱已建立`,create:`建立訂閱`,adminOnly:`由專案管理員共用和撤銷行事曆訂閱。`,labels:`標籤`,everyLabel:`所有標籤`,stopped:`· 已停止:建立者已失去存取權`,revoke:`撤銷 {{name}}`,revokeDescription:`訂閱 {{name}} 的行事曆將立即停止更新。工單不受影響。`,revoked:`行事曆訂閱已撤銷`,empty:`尚無行事曆訂閱`,copyNow:`請立即將此連結複製到行事曆應用程式中。此連結只會顯示一次,任何持有連結的人都能讀取共用的工單。`,link:`訂閱連結`,name:`訂閱名稱`,onlyLabels:`僅限具有這些標籤的工單`,explanation:`訂閱會將設有開始日期或到期日的未完成、未封存工單列為 {{zone}} 時區的全天活動。任何持有連結的人都能看到其編號、標題、狀態、優先順序和日期。`},project:{title:`專案設定`,edit:`編輯專案`,copyPrefix:`複製工單前綴`,saved:`專案已儲存`,noOpenTickets:`沒有未完成的工單`,openTickets_other:`{{count, number}} 個未完成工單`,overdueTickets_other:`· {{count, number}} 個已逾期`,created:`· 建立於 <time/>`,access:`專案存取權`,accessWorkspace:`工作區成員依其工作區角色取得存取權。`,accessPrivate:`只有您新增的成員和工作區管理員可以檢視此專案。`,accessUpdated:`專案存取權已更新`,visibility:{workspace:`工作區中的所有人`,private:`僅限專案成員`},workspace:`工作區`,workspaceSettings:`工作區設定`,prefix:`工單前綴`,prefixDescription:`變更後,先前的前綴和工單編號仍可使用。`,changePrefix:`變更前綴`,changePrefixTitle:`變更工單前綴`,changePrefixDescription:`{{name}} 中的所有工單都會使用新前綴,並保留原本的編號。`,changing:`變更中…`,prefixChanged:`工單現在使用 {{key}}`,publicLink:`公開連結`,publicDisclosure:`任何持有連結的人都能讀取此專案中所有未封存工單的標題、說明、驗收條件、狀態、優先順序、類型、難度、標籤、範圍、日期,以及指向其他工單的連結。人員、留言、活動、附件、佐證和認領仍維持私密。`,publicOn:`公開連結已開啟`,publicOff:`公開連結已關閉`,off:`關閉`,copyPublicLink:`複製公開連結`,openPublic:`開啟公開檢視`,stopSharing:`停止共用`,share:`公開共用`,background:`背景`,backgroundDescription:`顯示在此專案的工單清單和看板後方。`,backgroundUpdated:`背景已更新`,backgroundRemoved:`背景已移除`,currentBackground:`目前的背景`,uploading:`上傳中…`,replace:`取代`,upload:`上傳圖片`,backgroundFile:`專案背景檔案`},tickets_other:`{{count, number}} 個工單`,moveUp:`上移 {{name}}`,moveDown:`下移 {{name}}`,workflow:{title:`工作流程`,new:`新增狀態`,edit:`編輯狀態`,editNamed:`編輯狀態 {{name}}`,deleteNamed:`刪除狀態 {{name}}`,onlyState:`{{name}} 是唯一的{{category}}狀態`,saved:`狀態已儲存`,name:`狀態名稱`,category:`類別`,color:`狀態色彩`,categoryChange:`其工單的狀態會變更為{{status}}。`,save:`儲存狀態`,delete:`刪除狀態`,deleteTitle:`刪除 {{name}}`,deleted:`狀態已刪除`,reassign_other:`將 {{count, number}} 個工單移至`},labels:{title:`標籤`,search:`搜尋標籤`,new:`新增標籤`,edit:`編輯標籤`,workspace:`工作區`,editNamed:`編輯標籤 {{name}}`,deleteNamed:`刪除標籤 {{name}}`,deleteUsed_other:`要從 {{count, number}} 個工單(包括已封存的工單)中移除 {{name}} 嗎?使用此標籤的已儲存檢視將移除其標籤篩選。`,deleteUsedShared_other:`要從所有專案的 {{count, number}} 個工單(包括已封存的工單)中移除 {{name}} 嗎?使用此標籤的已儲存檢視將移除其標籤篩選。`,deleteUnused:`要刪除未使用的標籤 {{name}} 嗎?使用此標籤的已儲存檢視將移除其標籤篩選。`,deleted:`標籤已刪除`,noMatches:`沒有相符的標籤`,empty:`尚無標籤`,saved:`標籤已儲存`,name:`標籤名稱`,color:`標籤色彩`,rename:`重新命名會一併更新工單和已儲存檢視中的此標籤。`,renameShared:`重新命名會一併更新所有專案中工單和已儲存檢視裡的此標籤。`,adopt:`採用專案標籤`,adoptDescription:`已在 {{projects}} 中定義。其工單會保留此標籤並採用此色彩。`,save:`儲存標籤`},fields:{title:`欄位`,new:`新增欄位`,edit:`編輯欄位`,editNamed:`編輯欄位 {{name}}`,deleteNamed:`刪除欄位 {{name}}`,deleteUsed_other:`要刪除 {{name}} 並從 {{count, number}} 個工單(包括已封存的工單)中移除其值嗎?已儲存的檢視將失去以此欄位設定的篩選。`,deleteUnused:`要刪除未使用的欄位 {{name}} 嗎?已儲存的檢視將失去以此欄位設定的篩選。`,deleted:`欄位已刪除`,empty:`尚無欄位`,saved:`欄位已儲存`,required:`必填`,requiredDescription:`新工單必須填寫此值。`,defaultValue:`預設值 {{value}}`,default:`預設值`,name:`欄位名稱`,type:`類型`,options:`選項`,option:`選項 {{number}}`,optionInline:`選項 {{number}}`,optionColor:`{{name}} 的色彩`,removeOption:`移除 {{name}}`,addOption:`新增選項`,reassign:`具有 {{name}} 的工單`,clearValue:`清除值`,moveTo:`移至 {{name}}`,save:`儲存欄位`},lifecycle:{archivedToast:`專案已封存`,restoredToast:`專案已還原`,archivedNotice:`封存於 <time/> · 唯讀`,restore:`還原`,archive:`封存`,archivedDescription:`封存於 <time/>。其工單為唯讀,且不會出現在清單、搜尋、我的工作、行事曆訂閱和代理程式佇列中。`,archiveDescription:`將專案從清單、搜尋、我的工作、行事曆訂閱和代理程式佇列中隱藏,並將其工單設為唯讀。歷程記錄會保留。`,archiveProject:`封存專案`,archiveConfirm:`在還原之前,{{name}} 會從專案清單和代理程式佇列中移除。必須先釋出已認領的工單。`,blocker:`{{message}}:{{tickets}}`,row:{tickets:`工單`,losesAccess:`失去存取權`,gainsAccess:`取得存取權`,labelsCopied:`已複製的標籤`,labelsMerged:`已合併的標籤`,followsRemoved:`已移除的追蹤`,invitations:`邀請`,comments:`留言`,files:`檔案`,kept:`保留`,projects:`專案`,members:`成員`,sharedLabels:`共用標籤`,signIn:`登入`,sessions:`工作階段`,credentials:`憑證`,devices:`裝置`,access:`存取權`,claims:`認領`,imports:`匯入`,profile:`個人資料`},transferTickets_other:`{{count, number}} 個,保留其編號和連結`,noOne:`無人`,transferInvitations_other:`{{count, number}} 個待處理的邀請將不再包含此專案`,files_other:`{{count, number}} 個 · {{size}}`,keptProject_other:`{{count, number}} 筆活動記錄和 {{key}} 前綴`,keptWorkspace_other:`{{count, number}} 筆活動記錄和 {{slug}} URL 代碼`,archivedProject:`已封存`,membersLoseAccess_other:`{{count, number}} 人失去存取權;其帳號會保留`,pendingInvitations_other:`{{count, number}} 個待處理`,move:`移動`,moveTitle:`移動 {{name}}`,moved:`已移至 {{name}}`,movedUnnamed:`已移至該工作區`,destination:`目的地工作區`,moveProject:`移動專案`,moving:`移動中…`,export:`匯出`,exportDescription:`將工單及其工作流程、欄位、標籤、關聯、留言、佐證和連結匯出為具版本的 JSON。附件和活動歷程會保留在此。`,exporting:`匯出中…`,exportJson:`匯出 JSON`,delete:`刪除`,deleteTitle:`刪除 {{name}}`,deleted:`{{name}} 已刪除`,typeToConfirm:`輸入 {{value}} 以確認`,deleting:`刪除中…`,deleteProject:`刪除專案`,deleteProjectDescription:`永久移除工單、留言和檔案。活動歷程會保留,且 {{key}} 不會再被使用。`,signInAgain:`重新登入`,deleteWorkspace:`刪除工作區`,deleteWorkspaceDescription:`永久刪除工作區中的所有專案及其工單、留言和檔案,並移除其成員。帳號和活動歷程會保留。`,noSignInMethods:`沒有已連結的登入方式`,sessions_other:`{{count, number}} 個工作階段已登出`,credentials_other:`{{count, number}} 個 API 金鑰或應用程式連線已撤銷`,devices_other:`{{count, number}} 個裝置或通知管道已移除`,workspaceCount_other:`{{count, number}} 個工作區`,directProjectCount_other:`{{count, number}} 個直接專案`,accessWorkspaces:`已移除 {{workspaces}}`,accessBoth:`已移除 {{workspaces}}和 {{projects}}`,claims_other:`{{count, number}} 個認領已釋出`,imports_other:`{{count, number}} 個匯入已取消`,profileErased:`名稱、電子郵件和相片已清除`,commentCount_other:`{{count, number}} 則留言`,activityCount_other:`{{count, number}} 筆活動記錄`,keptAccount:`{{tickets}}、{{comments}}和 {{events}}將顯示為「{{name}}」`,deleteAccount:`刪除帳號`,deleteOwnAccount:`永久移除您的登入方式、工作階段、金鑰、裝置、成員資格和個人資料。工單、留言和活動會保留,並顯示為「{{name}}」。`,deleteOtherAccount:`永久移除此帳號的登入方式、工作階段、金鑰、裝置、成員資格和個人資料。工單、留言和活動會保留,並顯示為「{{name}}」。`},icon:{change:`變更圖示`,title:`專案圖示`,library:`圖示庫`,upload:`上傳圖片`,search:`搜尋圖示`,searchPlaceholder:`搜尋圖示…`,color:`圖示色彩`,choose:`選擇 {{name}}`,noMatches:`沒有相符的圖示`,showMore:`顯示更多圖示`,uploading:`上傳中…`,chooseImage:`選擇圖片`,formats:`PNG、JPEG 或 WebP · 最大 10 MB`,file:`專案圖示檔案`,reset:`重設圖示`},createProject:{title:`新增專案`,inWorkspace:`位於 {{name}}`,everyoneLabel:`此工作區中的所有人`,name:`專案名稱`,namePlaceholder:`行動應用程式`,create:`建立專案`},workspace:{title:`工作區設定`,owner:`擁有者`,noOwner:`沒有擁有者。執行個體管理員可以指定一位。`,transfer:`轉移擁有權`,transferring:`轉移中…`,transferred:`{{name}} 現在擁有 {{workspace}}`,newOwner:`新擁有者`,noEligible:`擁有權只能轉移給使用中的工作區管理員。請先將另一位成員設為管理員。`,chosenCan:`之後 {{name}} 可以轉移或刪除此工作區。`,newOwnerCan:`新擁有者可以轉移或刪除此工作區。`,ownerStays:`{{name}} 仍為管理員。`,unavailable:`工作區無法使用`,backToProjects:`返回專案`,name:`工作區名稱`,edit:`編輯工作區`,copyKey:`複製工作區代碼`,saved:`工作區已儲存`,projects:`專案`,projectCount_other:`您在此工作區中可以存取 {{count, number}} 個專案。`,viewProjects:`檢視專案`,members:`成員`,membersDescription:`工作區角色適用於使用工作區存取權的專案。`,manageMembers:`管理成員`},members:{title:`成員`,customRole:`自訂角色`,search:`搜尋成員`,searchPlaceholder:`名稱或電子郵件…`,add:`新增成員`,added:`成員已新增`,workspaceAccess:`工作區存取權`,owner:`擁有者`,roleFor:`{{name}} 的角色`,useWorkspaceAccess:`使用工作區存取權`,remove:`移除成員`,removeFromWorkspace:`要將 {{name}} 從此工作區及其所有專案中移除嗎?`,restoreAccess:`要為 {{name}} 恢復{{role}}工作區存取權嗎?`,removeFromProject:`要移除 {{name}} 的專案存取權嗎?`,noMatches:`沒有相符的成員`,empty:`尚無成員`,projectRole:`專案角色`,workspaceRole:`工作區角色`},invitations:{title:`邀請`,invite:`透過電子郵件邀請`,removedProjects:`已移除的專案`,wholeWorkspace:`整個工作區`,selectedProjects:`選取的專案`,expired:`已過期`,expires:`<time/>到期`,resend:`重新傳送邀請給 {{email}}`,revoke:`撤銷邀請`,revokeDescription:`傳送給 {{email}} 的連結將失效。`,revoked:`邀請已撤銷`,empty:`沒有待處理的邀請`,email:`電子郵件`,role:`角色`,access:`存取權`,projects:`專案`,noProjects:`此工作區沒有專案。`,linkExpires:`連結有效期限`,inDays_other:`{{count, number}} 天`,submit:`邀請`,link:`邀請連結`,copyLink:`複製邀請連結`,emailed:`已寄送電子郵件給 {{email}}。此連結僅限該地址使用,且只能使用一次。`,notEmailed:`此執行個體未設定電子郵件。請將此連結傳送給 {{email}};此連結僅限該地址使用,且只能使用一次。`,notEmailedUnknown:`此執行個體未設定電子郵件。請將此連結傳送給收件者;此連結僅限該地址使用,且只能使用一次。`},workspaces:{title:`工作區`,search:`搜尋工作區`,searchPlaceholder:`名稱或 URL 代碼…`,noMatches:`沒有相符的工作區`,empty:`尚無工作區`,workspace:`工作區`,administrators:`管理員`,members:`成員`,projects:`專案`,created:`建立時間`,actions:`動作`,noAdministrator:`沒有管理員`,manage:`管理 {{name}}`,pagerNoun:`工作區`,private:`私人`,noProjects:`沒有專案`},roles:{title:`角色`,new:`新增角色`,edit:`編輯角色`,builtIn:`內建`,readOnly:`僅可讀取`,memberships_other:`{{count, number}} 個成員資格`,editNamed:`編輯角色 {{name}}`,deleteNamed:`刪除角色 {{name}}`,deleteUnused:`要刪除未使用的角色 {{name}} 嗎?`,deleted:`角色已刪除`,empty:`尚無角色`,saved:`角色已儲存`,name:`角色名稱`,actions:`動作`,everyoneReads:`所有成員都可以讀取其可存取的專案。`,changesApply_other:`變更會立即套用至持有此角色的 {{count, number}} 個成員資格。`,save:`儲存角色`,delete:`刪除角色`,reassignDescription_other:`有 {{count, number}} 個成員資格持有 {{name}}。請選擇要改用的角色。`,moveTo:`將成員改為`},theme:{mode:{light:`淺色`,dark:`深色`,system:`跟隨系統`},aligned:`已對齊`,hexColor:`請使用六位數的十六進位色碼`,contrast:{light:`請將淺色主題的文字對比提高到至少 4.5:1。`,dark:`請將深色主題的文字對比提高到至少 4.5:1。`},fileTooLarge:`主題檔案必須小於 100 KB。`,tooMany:`最多保留 50 個自訂主題。`},appearance:{colorScheme:`配色`,theme:`主題`,themes:`主題`,colorTheme:`色彩主題`,search:`搜尋主題`,searchPlaceholder:`搜尋主題…`,create:`建立主題`,add:`新增主題`,importFile:`匯入主題檔案`,useMode:{light:`在淺色模式使用 {{name}}`,dark:`在深色模式使用 {{name}}`},modeOnly:{light:`僅用於淺色模式`,dark:`僅用於深色模式`},copyName:`{{name}} 副本`,duplicate:`建立 {{name}} 的副本`,edit:`編輯 {{name}}`,export:`匯出 {{name}}`,delete:`刪除 {{name}}`,deleteDescription:`要從此瀏覽器移除 {{name}} 嗎?使用此主題的淺色或深色外觀將改回您的基礎主題。`,noMatches:`沒有相符的主題`,customTheme:`自訂主題`,name:`主題名稱`,paletteColor:`{{mode}}{{color}}`,color:{background:`背景`,foreground:`文字`,sidebar:`側邊欄`,primary:`強調色`,primaryForeground:`強調色文字`},save:`儲存主題`},color:{swatch:`{{color}}{{label}}`,removeCustom:`從自訂色彩中移除 {{hex}}`,custom:`自訂色彩`,default:`預設`,red:`紅色`,orange:`橘色`,amber:`琥珀色`,yellow:`黃色`,lime:`萊姆綠`,green:`綠色`,emerald:`翡翠綠`,teal:`藍綠色`,cyan:`青色`,sky:`天藍色`,blue:`藍色`,indigo:`靛藍色`,violet:`紫羅蘭色`,purple:`紫色`,fuchsia:`桃紅色`,pink:`粉紅色`,rose:`玫瑰色`,gray:`灰色`}},admin:{instance:{title:`管理`,heading:`執行個體`,edit:`編輯執行個體`,name:`名稱`,description:`說明`,noDescription:`尚無說明`,version:`應用程式版本`,publicUrl:`公開 URL`,provider:{local:`本機 PostgreSQL 儲存空間`,s3:`S3 相容物件儲存空間`,postgres:`內建 PostgreSQL`,elasticsearch:`Elasticsearch 相容搜尋`},section:{storage:`檔案儲存空間`,search:`工單搜尋`,events:`事件傳遞`},viewConfiguration:`檢視設定`,configure:{storage:`設定儲存空間`,search:`設定搜尋`,events:`設定事件傳遞`},providerTitle:`提供者`,deploymentManaged:`由部署管理`,instanceManaged:`由執行個體管理`,transfers:`傳輸`,indexStatus:`索引狀態`,connection:`連線`,transfersS3:`檔案在本機儲存後會移至物件儲存空間。`,transfersLocal:`新檔案會儲存在 PostgreSQL 中。`,searchBuiltIn:`搜尋直接在 PostgreSQL 中執行。`,searchIndexed:`工單變更會在背景建立索引。`,eventsConnection:`通知用於喚醒取用者;PostgreSQL 保存重播歷程。`,builtIn:`內建`,connected:`已連線`,upToDate:`已是最新`,status:{ready:`就緒`,transferring:`傳輸中`,indexing:`建立索引中`,connecting:`連線中`,unavailable:`無法使用`},pendingTransfers:`待傳輸`,pendingRemain:`傳輸完成前,這些檔案仍可從 PostgreSQL 讀取。`,noPending:`沒有等待傳輸的檔案。`,bucket:`儲存貯體`,storageEndpoint:`儲存空間端點`,backup:`備份`,backupBuckets:`請備份 PostgreSQL 及所有參照的物件儲存貯體。`,backupDatabase:`檔案內容包含在 PostgreSQL 備份中。`,fallback:`備援`,fallbackDescription:`外部索引落後或離線時,可使用 PostgreSQL 搜尋。`,searchEndpoint:`搜尋端點`,index:`索引`,delivery:`傳遞`,deliveryDescription:`持久事件和重播保存在 PostgreSQL 中。選用的訊息代理程式負責分送喚醒訊號。`,brokerEndpoint:`訊息代理程式端點`,exchange:`交換器`},configure:{storageTitle:`設定檔案儲存空間`,searchTitle:`設定工單搜尋`,eventsTitle:`設定事件傳遞`,saved:`執行個體設定已儲存`,instanceName:`執行個體名稱`,instanceDescription:`執行個體說明`,publicUrlSource:`公開 URL 由部署中的 KANVIL_URL 設定。`,storageIntro:`附件和個人資料相片使用此提供者。現有檔案會保留在原本的儲存位置。`,storageProvider:`儲存空間提供者`,localDescription:`檔案內容儲存在本機資料庫中,並包含在 PostgreSQL 備份內。`,s3Endpoint:`S3 端點`,s3EndpointHint:`使用 Amazon S3 時請將端點留空。`,region:`區域`,prefix:`物件索引鍵前綴`,accessKeyId:`存取金鑰 ID`,secretAccessKey:`秘密存取金鑰`,savedSecret:`已儲存。留空即可保留。`,deploymentCredentials:`省略時使用部署憑證`,pathStyle:`使用路徑樣式的儲存貯體 URL`,storageVerified:`儲存空間連線已驗證`,testStorage:`測試儲存空間連線`,filesWaiting_other:`{{count, number}} 個檔案等待傳輸。待傳輸的檔案仍可從 PostgreSQL 讀取。`,transfersComplete:`所有檔案傳輸已完成。`,storageDeployment:`儲存空間由 KANVIL_STORAGE_PROVIDER 和 S3_* 部署變數設定。`,locations:`現有儲存位置`,locationFiles_other:`{{count, number}} 個檔案`,cleanUp:`清除未使用的檔案`,cleanUpConfirm:`要移除未被參照的檔案和超過一天的失敗上傳嗎?附加至工單或個人資料的檔案會保留。`,cleanUpNote:`清除作業也會自動執行。S3 物件需要在備份資料庫的同時備份儲存貯體。`,searchProvider:`搜尋提供者`,searchBuiltIn:`內建 PostgreSQL 搜尋`,indexName:`Kanvil 索引名稱`,searchAuthentication:`搜尋驗證`,noAuthentication:`不驗證`,apiKey:`API 金鑰`,basic:`使用者名稱和密碼`,searchApiKey:`搜尋 API 金鑰`,optional:`選用`,searchUsername:`搜尋使用者名稱`,searchPassword:`搜尋密碼`,searchVerified:`搜尋連線已驗證`,testSearch:`測試搜尋連線`,rebuildQueued:`搜尋重建已加入佇列`,rebuild:`重建索引`,searchNote:`權限和篩選一律以 PostgreSQL 為準。外部索引同步中或無法使用時,搜尋會改用 PostgreSQL。`,brokerProvider:`事件傳遞提供者`,brokerBuiltIn:`內建 PostgreSQL 通知`,rabbitUrl:`RabbitMQ 連線 URL`,savedBrokerEndpoint:`已儲存的訊息代理程式端點`,rabbitExchange:`RabbitMQ 交換器`,brokerVerified:`RabbitMQ 傳遞已驗證`,testBroker:`測試訊息代理程式連線`,brokerNote:`RabbitMQ 會將已認可事件的喚醒訊號分送給各 Kanvil 執行個體,並喚醒背景工作。PostgreSQL 保存持久事件和待處理工作,並在訊息代理程式無法使用時傳遞喚醒訊號。`,brokerDeployment:`事件傳遞由 KANVIL_BROKER_PROVIDER 和 RABBITMQ_* 部署變數設定。`,save:`儲存執行個體設定`},authentication:{title:`驗證`,saved:`驗證設定已儲存`,emailPassword:`電子郵件和密碼登入`,emailPasswordDescription:`包含電子郵件登入驗證碼和密碼重設。`,ssoProvision:`透過 SSO 自動建立使用者`,ssoProvisionDescription:`新的 SSO 使用者在受邀前沒有任何工作區或專案存取權。`,registration:`公開電子郵件註冊`,registrationClosed:`已關閉`,identityProvider:`身分識別提供者`,notConfigured:`未設定`,linkedProviders:`已連結帳號的提供者`,linkedProvidersDescription:`僅允許已連結的帳號登入;絕不建立帳號。`,save:`儲存驗證設定`,discoveryUrl:`OIDC 探索 URL`,clientId:`OIDC 用戶端 ID`,oidcSetup:`請在部署中設定 OIDC_DISCOVERY_URL、OIDC_CLIENT_ID、OIDC_CLIENT_SECRET 和 OIDC_NAME,或 GITHUB_、GOOGLE_ 或 DISCORD_ 的 CLIENT_ID 與 CLIENT_SECRET 組合,然後重新啟動 Kanvil。提供者密鑰絕不會傳回瀏覽器。`,consumers:`取用者介面`,mcpEndpoint:`MCP 端點`,eventFeed:`即時事件串流`,openApi:`OpenAPI 規格`},users:{title:`使用者`,search:`搜尋使用者`,searchPlaceholder:`名稱或電子郵件…`,new:`新增使用者`,roleFilter:`執行個體角色篩選`,allRoles:`所有角色`,administrators:`管理員`,users:`使用者`,statusFilter:`帳號狀態篩選`,allAccounts:`所有帳號`,active:`使用中`,disabled:`已停用`,noMatches:`沒有相符的使用者`,empty:`尚無使用者`,user:`使用者`,role:`角色`,status:`狀態`,joined:`加入時間`,actions:`動作`,administrator:`管理員`,manage:`管理 {{name}}`,pagerNoun:`使用者`,create:`建立帳號`,creating:`建立中…`,created:`已建立 {{email}}`,name:`名稱`,email:`電子郵件`,initialPassword:`初始密碼`,instanceRole:`執行個體角色`},account:{details:`帳號詳細資料`,joined:`加入於 {{date}}`,edit:`編輯帳號`,instanceRole:`執行個體角色`,adminDescription:`可以管理所有工作區、帳號和部署設定。`,userDescription:`存取權由工作區和專案角色決定。`,changeRole:`變更角色`,changeRoleTitle:`變更執行個體角色`,signInMethods:`登入方式`,setPassword:`設定本機密碼`,activeSessions:`使用中的工作階段`,sessions_other:`{{count, number}} 個工作階段`,revokeSessions:`撤銷工作階段`,revokeConfirm:`要將 {{name}} 從所有裝置登出嗎?API 金鑰仍會有效。`,sessionsRevoked:`工作階段已撤銷`,access:`帳號存取權`,accessDisabled:`登入和 API 存取已停用。`,accessPreserved:`停用帳號會保留工單和活動歷程。`,enable:`啟用帳號`,disable:`停用帳號`,enableConfirm:`要恢復 {{name}} 的登入嗎?`,disableConfirm:`要停用 {{name}} 的登入和 API 存取,並撤銷其工作階段嗎?`,enabled:`帳號已啟用`,disabledToast:`帳號已停用`,updateFailed:`無法更新帳號`,workspaces:`工作區`,addToWorkspace:`新增至工作區`,noWorkspaces:`沒有工作區成員資格`,projectAccess:`直接專案存取權`,updated:`帳號已更新`,roleUpdated:`執行個體角色已更新`,workspaceAdded:`已新增工作區存取權`,passwordMismatch:`兩次輸入的新密碼不一致。`,passwordSet:`已設定本機密碼並撤銷工作階段`,name:`名稱`,email:`電子郵件`,user:`使用者`,administrator:`管理員`,adminsNote:`管理員可以管理所有工作區、使用者和執行個體設定。`,workspace:`工作區`,workspaceRole:`工作區角色`,newPassword:`新密碼`,confirmPassword:`確認新密碼`,passwordNote:`這會設定本機密碼,並將該使用者從所有裝置登出。`,save:`儲存變更`},delivery:{field:{address:`電子郵件地址`,server:`伺服器`,topic:`主題`,accessToken:`存取權杖`,applicationToken:`應用程式權杖`,endpointUrl:`端點 URL`,signingSecret:`簽署密鑰`,incomingWebhookUrl:`傳入 Webhook URL`,webhookUrl:`Webhook URL`,channel:`頻道`,botToken:`機器人權杖`,chatId:`聊天 ID`,chatIdPlaceholder:`-1001234567890 或 @channel`,topicId:`話題 ID`,optional:`{{label}}(選用)`,removeSaved:`移除已儲存的{{label}}`,savedSecret:`已儲存 · 留空即可保留`},failure:{blockedAddress:`不允許使用此地址`,redirectBlocked:`端點進行了重新導向`,dnsError:`找不到主機`,networkError:`無法連線`,timeout:`逾時`,invalidEndpoint:`端點無效`,emailUnavailable:`此伺服器未設定電子郵件`,smtpError:`郵件伺服器無法使用`,accessRevoked:`連線它的管理員已失去存取權;請重新連線`,repositoryMismatch:`收到來自其他儲存庫的傳遞`,http:`遭拒絕,HTTP {{status}}`,smtp:`郵件伺服器回應 {{code}}`},health:{delivery:{done:`<time/>已傳遞`,pending:`傳送中…`,none:`尚未傳送`,failed:`{{reason}}`},access:{done:`<time/>已檢查存取權`,pending:`正在檢查存取權…`,none:`尚未檢查存取權`,failed:`存取權檢查:{{reason}}`},retrying:`重試中`},paused:`已暫停`,failing:`失敗中`,sendTest:`傳送測試至 {{name}}`,testQueued:`測試已加入佇列`,resume:`繼續 {{name}}`,pause:`暫停 {{name}}`,edit:`編輯 {{name}}`,disconnect:`中斷 {{name}} 的連線`,disconnected:`{{name}} 已中斷連線`,name:`名稱`,type:`類型`,channels:`管道`,addChannel:`新增管道`,noChannels:`尚無管道`,editChannel:`編輯管道`,channelSaved:`管道已儲存`,channelRemoval:`要中斷 {{name}} 的連線嗎?其設定和佇列中的通知將被捨棄。`,sendFrom:`通知來源`,routeOff:`無`,routeAll:`所有專案`,routeSelected:`選取的專案`,saveChannel:`儲存管道`,adminsOnly:`由專案管理員管理整合`,destinations:`目的地`,addDestination:`新增目的地`,noDestinations:`尚無目的地`,editDestination:`編輯目的地`,destinationSaved:`目的地已儲存`,destinationRemoval:`要中斷 {{name}} 的連線嗎?其設定和佇列中的訊息將被捨棄。`,send:`傳送`,saveDestination:`儲存目的地`},repository:{setup:{github:`權杖需要儲存庫讀取權限;若要留言或同步議題,還需要議題和提取要求的寫入權限。請新增一個 GitHub Webhook:URL 從此儲存庫所在的列複製,內容類型為 application/json,使用此密鑰,並勾選 Branch or tag creation、Branch or tag deletion、Issues、Issue comments 和 Pull requests 事件。`,gitea:`權杖需要 read:repository 範圍;若要留言或同步議題,還需要 write:issue。請新增一個 Gitea Webhook:URL 從此儲存庫所在的列複製,內容類型為 application/json,使用此密鑰,並勾選 Create、Delete、Issues、Issue Label、Issue Comment 和 Pull Request 事件。`,gitlab:`權杖需要 read_api 範圍;若要留言或同步議題,還需要 api。請新增一個 GitLab Webhook:URL 從此儲存庫所在的列複製,使用此密鑰權杖,並勾選 Push、Issues、Comments 和 Merge request 事件。`},noWebhook:`尚未收到 Webhook`,webhookReceived:`<time/>收到 Webhook`,saved:`儲存庫已儲存`,title:`儲存庫`,connect:`連線儲存庫`,empty:`尚無儲存庫`,checkAccess:`檢查對 {{repository}} 的存取權`,accessQueued:`存取權檢查已加入佇列`,copyWebhook:`複製 {{repository}} 的 Webhook URL`,issueSync:`{{repository}} 的議題同步`,removal:`要中斷 {{repository}} 的連線嗎?其 Webhook 將立即失效。它新增的連結會保留在工單上。`,edit:`編輯儲存庫`,host:`代管平台`,serverUrl:`伺服器 URL`,serverUrlOptional:`伺服器 URL(選用)`,repository:`{{host}} 儲存庫`,nestedPlaceholder:`group/project`,placeholder:`owner/repository`,accessToken:`存取權杖`,webhookSecret:`Webhook 密鑰`,savedSecret:`已儲存 · 留空即可保留`,commentOnLink:{pull_request:`在新連結的議題和提取要求上留言`,merge_request:`在新連結的議題和合併要求上留言`},moveTickets:`移動連結的工單`,noMove:`不移動`,save:`儲存儲存庫`},issueSync:{reason:{labels:`其同步標籤已變更`,conflict:`雙方都有變更`,changedWhilePaused:`儲存庫暫停期間議題有所變更`,unverified:`代管平台的回應未確認此變更`,claimConflict:`工單已被認領`,invalidContent:`議題超過工單允許的長度`},issuesSyncing_other:`{{count, number}} 個議題同步中`,linksStopped_other:`{{count, number}} 個連結已停止`,match:`比對`,matchAny:`具有任一標籤`,matchAll:`具有所有標籤`,preview:{matching:`繼續同步`,export:`要建立的新議題`,pause:`要暫停的連結`,review:`要審查的連結`},applied:`議題同步已套用`,title:`議題同步 · {{repository}}`,outbound:`Kanvil 至 {{host}}`,exportTickets:`將工單匯出為議題`,exportDescription:`未完成的工單會產生新議題;標題、說明、狀態和新留言會保持同步。`,ticketLabels:`僅限具有這些標籤的工單`,everyTicket:`所有未完成的工單`,inbound:`{{host}} 至 Kanvil`,importIssues:`將議題匯入為工單`,importDescription:`未關閉的議題會在 {{host}} 下次回報時匯入。`,issueLabels:`僅限具有這些標籤的議題`,everyIssue:`所有未關閉的議題`,previewLabel:`預覽`,previewAction:`預覽`,stopped:`已停止的連結 · {{repository}}`,review:`審查`,linkRemoved:`連結已移除`,resumed:`同步已繼續`,open:`開啟`,closed:`已關閉`,reviewTitle:`審查 {{key}}`,mayExist:`{{host}} 上可能已有此議題;再次建立前請先確認。`,comparison:`比較`,field:{title:`標題`,description:`說明`,state:`狀態`},notReported:`未回報`,unlink:`取消連結`,keepHost:`保留 {{host}} 的版本`,keepKanvil:`保留 Kanvil 的版本`,createAgain:`重新建立議題`,unlinkTicket:`取消連結 {{key}}`,unlinkConfirm:`要停止同步 {{key}} 嗎?工單和議題都會保留。`},import:{count:{tickets:`工單`,workflow:`工作流程狀態`,fields:`自訂欄位`,labels:`標籤`,relations:`關聯`,comments:`留言`,evidence:`佐證`,links:`連結`},notExport:`此檔案不是 Kanvil 工單匯出檔。`,progress_other:`{{status}} · {{done, number}} / {{count, number}} 筆記錄`,progressFailed_other:`{{status}} · {{done, number}} / {{count, number}} 筆記錄 · {{failed, number}} 筆失敗`,title:`匯入`,description:`從 Kanvil 工單匯出檔或其他追蹤工具(Linear、Jira、Trello、Plane、PLANKA 或 Kaneo)建立專案。`,action:`匯入專案`,detailsOf:`{{name}} 的詳細資料`,details:`詳細資料`,exportFile:`Kanvil 匯出檔`,source:`來源`,file:`匯出檔`,jiraEdition:`Jira 版本`,siteUrl:`網站 URL`,accountEmail:`帳號電子郵件`,apiKey:`API 金鑰`,apiToken:`API 權杖`,personalToken:`個人存取權杖`,token:`權杖`,apiUrl:`API URL`,workspaceSlug:`工作區 URL 代碼`,signInWith:`登入方式`,username:`使用者名稱或電子郵件`,password:`密碼`,checkConnection:`請檢查連線資訊`,noProjects:`這些憑證無法讀取任何{{label}}。`,includeComments:`包含留言`,projectName:`專案名稱`,start:`匯入`,connect:`連線`,preview:`預覽`,starting:`啟動中…`,connecting:`連線中…`,checking:`檢查中…`,matched:`已配對的人員`,unmatched:`未配對的人員`,previewLabel:`匯入預覽`,errorPrefix:`錯誤:`,notePrefix:`注意:`,progressLabel:`匯入進度`,notImported:`未匯入的記錄`,stop:`停止匯入`,openProject:`開啟專案`}},native:{labelValue:`{{label}}:{{value}}`,ui:{dismiss:`關閉`,loading:`載入中`},server:{url:`伺服器 URL`,connect:`連線`,change:`變更伺服器`,invalidOrigin:`請使用 Kanvil 伺服器的 HTTP 或 HTTPS 來源,不要包含路徑或憑證。`,httpsRequired:`請使用 HTTPS 連線至 Kanvil 伺服器。`},login:{setupTitle:`建立擁有者帳號`,signIn:`登入`,signingIn:`正在登入…`,createAccount:`建立帳號`,signInWith:`使用 {{provider}} 登入`,name:`名稱`,setupToken:`設定權杖`,email:`電子郵件`,password:`密碼`},connection:{connecting:`連線中`,connected:`● 即時`,offline:`離線 · 快取資料`,closed:`已關閉`,signedOut:`登入以重新連線`},screen:{projects:`專案`,inbox:`收件匣`,settings:`設定`,tickets:`工單`,ticket:`工單`,newTicket:`新增工單`,editTicket:`編輯工單`},projects:{empty:`尚無專案`,new:`新增專案`,name:`專案名稱`,prefix:`工單前綴`,description:`說明`,create:`建立專案`},tickets:{search:`搜尋工單`,searchPlaceholder:`標題、說明或編號`,allStatuses:`所有狀態`,empty:`沒有相符的工單`,count:`{{shown}} / {{total}}`},ticket:{priority:`{{priority}}優先順序`,noDifficulty:`未指定難度`,version:`v{{version}}`,starts:`{{date}} 開始`,due:`{{date}} 到期`},editor:{stale:`此工單已變更。您儲存的草稿仍以版本 {{version}} 為基礎。`,discardDraft:`捨棄草稿並重新載入`,title:`標題`,noDifficulty:`未指定`,labels:`標籤(以逗號分隔)`,scopes:`範圍(以逗號分隔)`,editMarkdown:`編輯 Markdown`,previewMarkdown:`預覽 Markdown`,description:`說明(Markdown)`,acceptanceCriteria:`驗收條件(Markdown)`,parent:`父工單 ID`,automationReady:`在需求和相依性允許時可供代理程式處理`,holdReason:`暫緩原因`,draftSaved:`草稿已儲存在此裝置上`,save:`儲存工單`},detail:{archived:`已封存`,subscribe:`訂閱`,unsubscribe:`取消訂閱`,share:`分享`,description:`說明`,noDescription:`_尚無說明_`,acceptanceCriteria:`驗收條件`,noAcceptanceCriteria:`_尚無驗收條件_`,fields:`欄位`,archive:{action:`封存工單`,title:`要封存工單嗎?`,message:`要將此工單從使用中的清單移除,並取消代理程式處理資格嗎?`},unarchive:{action:`取消封存工單`,title:`要取消封存工單嗎?`,message:`要將此工單還原至使用中的清單嗎?`}},readiness:{title:`代理程式就緒狀態`,ready:`可以認領`,notReady:`尚不可認領`,hold:`暫緩:{{reason}}`,claimed:`已由 {{worker}} 認領,直到 {{time}}。`,release:{action:`釋出我的認領`,title:`要釋出認領嗎?`,message:`釋出擁有權前,請先停止您的執行者。`,confirm:`釋出`},recover:{action:`收回已過期的認領`,explanation:`只有專案管理員可以收回已過期的認領。請先確認執行者已停止。`,reason:`收回原因`,confirm:`執行者已停止 · 收回`}},relations:{title:`關聯`,parent:`父工單 · {{key}} · {{title}}`,openParent:`開啟父工單`,children:`子工單`,previousChildren:`上一組子工單`,nextChildren:`下一組子工單`,remove:`移除關聯`,removeTitle:`要移除關聯嗎?`,add:`新增關聯`,find:`尋找工單`,type:`關聯類型`,ticket:`工單`,choose:`選擇工單`},discussion:{title:`討論`,previous:`較早的留言`,next:`較新的留言`,field:`留言(Markdown)`,submit:`留言`,you:`您`,edit:`編輯留言`,editField:`留言`,delete:`刪除留言`,deleteTitle:`要刪除留言嗎?`,deleteMessage:`要永久移除此留言嗎?`,save:`儲存留言`},attachments:{title:`附件`,item:`{{name}} · {{size}} kB`,remove:`移除 {{name}}`,removeTitle:`要移除附件嗎?`,working:`處理中…`,add:`新增附件`,tooLarge:`請選擇不超過 10 MB 的檔案。`,sharingUnavailable:`此裝置無法分享檔案。`},evidence:{title:`佐證`,explanation:`結果由提交的帳號回報。`,add:`新增佐證`,name:`標題`,url:`URL`,outcome:`回報的結果`,commit:`提交(完整雜湊)`,note:`備註`,save:`儲存佐證`},activity:{title:`活動`,previous:`較早的活動`,next:`較新的活動`},inbox:{markAllRead:`全部標示為已讀`,empty:`沒有通知`},notifications:{title:`通知`,inApp:`在收件匣接收已訂閱工單的更新`,push:`推播通知`,enableDevice:`在此裝置上啟用推播`,disableDevice:`在此裝置上停用推播`,unconfigured:`此版本需要 Expo 專案 ID 和簽署設定才能推播。`,noProjectId:`此版本需要 Expo 專案 ID 才能接收推播通知。`,permissionDenied:`請在裝置設定中允許通知以啟用推播。`,channel:`工單更新`},settings:{password:{title:`本機密碼`,current:`目前的密碼`,new:`新密碼`,change:`變更密碼`,updated:`密碼已更新;其他工作階段已撤銷`},oidc:{linked:`帳號已連結`,explanation:`使用此提供者登入前,請先連結此帳號。`,link:`連結 {{provider}}`},signOut:{action:`登出`,title:`要登出嗎?`,message:`此帳號的快取工單和草稿將從此裝置中移除。`},changeServer:{title:`要變更伺服器嗎?`,message:`要登出並清除此帳號的本機快取和草稿嗎?`}}}};export{e as default};