memi-board 0.56.2 → 0.58.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/README.md +55 -9
  2. package/dist/{ar-CQhBdHu3.js → ar-GNguZBN4.js} +45 -4
  3. package/dist/ar-GNguZBN4.js.map +1 -0
  4. package/dist/{commentImages-DsW2yCqu.js → commentImages-CRK_2uVi.js} +195 -70
  5. package/dist/commentImages-CRK_2uVi.js.map +1 -0
  6. package/dist/composables/useMemiBoardModeration.d.ts +2 -0
  7. package/dist/composables/useMemiBoardPosts.d.ts +1 -1
  8. package/dist/composables/useMemiBoardReports.d.ts +102 -3
  9. package/dist/composables/useMemiBoardUserDirectory.d.ts +20 -0
  10. package/dist/composables/useMemiBoardUserProfile.d.ts +1 -1
  11. package/dist/composables/useMemiBoardUsers.d.ts +1 -1
  12. package/dist/{de-B4GZqxQj.js → de-CS0iRLqe.js} +45 -4
  13. package/dist/de-CS0iRLqe.js.map +1 -0
  14. package/dist/{en-BDkfivhc.js → en-DeExi-DR.js} +129 -4
  15. package/dist/en-DeExi-DR.js.map +1 -0
  16. package/dist/{es-DzFDaLwo.js → es-dlEFrox-.js} +45 -4
  17. package/dist/es-dlEFrox-.js.map +1 -0
  18. package/dist/{fr-Zf5mcs8m.js → fr-B9sjKJF4.js} +45 -4
  19. package/dist/fr-B9sjKJF4.js.map +1 -0
  20. package/dist/{id-CaWN8212.js → id-Ca7skouh.js} +45 -4
  21. package/dist/id-Ca7skouh.js.map +1 -0
  22. package/dist/index.d.ts +3 -1
  23. package/dist/index.js +1089 -829
  24. package/dist/index.js.map +1 -1
  25. package/dist/{ja-xDttH9CE.js → ja-ByVLGIDd.js} +45 -4
  26. package/dist/ja-ByVLGIDd.js.map +1 -0
  27. package/dist/module.mjs +4 -0
  28. package/dist/module.mjs.map +1 -1
  29. package/dist/{pt-WIfxYYWQ.js → pt-COQL_Q7A.js} +45 -4
  30. package/dist/pt-COQL_Q7A.js.map +1 -0
  31. package/dist/runtime/components/AccountDeletion.vue +64 -0
  32. package/dist/runtime/components/AuthorMenu.vue +4 -4
  33. package/dist/runtime/components/CommentFeed.vue +17 -13
  34. package/dist/runtime/components/CommentForm.vue +58 -56
  35. package/dist/runtime/components/CommentImageField.vue +18 -13
  36. package/dist/runtime/components/CommentItem.vue +95 -60
  37. package/dist/runtime/components/CommentList.vue +10 -1
  38. package/dist/runtime/components/CommentThread.vue +16 -2
  39. package/dist/runtime/components/CustomFieldEditor.vue +10 -8
  40. package/dist/runtime/components/Detail.vue +18 -10
  41. package/dist/runtime/components/Editor.vue +1 -5
  42. package/dist/runtime/components/ImageLightbox.vue +126 -58
  43. package/dist/runtime/components/LikeButton.vue +14 -11
  44. package/dist/runtime/components/ListViewSwitch.vue +10 -10
  45. package/dist/runtime/components/Profile.vue +14 -2
  46. package/dist/runtime/components/ProfileEditModal.vue +20 -3
  47. package/dist/runtime/components/ReportButton.vue +22 -13
  48. package/dist/runtime/components/ReportList.vue +77 -93
  49. package/dist/runtime/components/UserListControls.vue +29 -0
  50. package/dist/runtime/components/UserListPagination.vue +17 -0
  51. package/dist/runtime/components/UserManagementEmail.vue +21 -0
  52. package/dist/runtime/components/UserRoleGuide.vue +38 -0
  53. package/dist/runtime/components/Users.vue +21 -59
  54. package/dist/runtime/components/UsersSettings.vue +119 -0
  55. package/dist/storage.js +1 -1
  56. package/dist/types.d.ts +5 -0
  57. package/dist/utils/postSlug.d.ts +12 -0
  58. package/dist/utils/profileNameModeration.d.ts +8 -0
  59. package/dist/utils/userDirectoryPage.d.ts +19 -0
  60. package/dist/{zh-CI6Sd8PD.js → zh-DBjX9qAS.js} +45 -4
  61. package/dist/zh-DBjX9qAS.js.map +1 -0
  62. package/docs/account-deletion.md +60 -0
  63. package/docs/firebase-setup.md +77 -0
  64. package/docs/firestore.rules.example +78 -4
  65. package/docs/host-integration.md +85 -11
  66. package/docs/storage.rules.example +7 -2
  67. package/package.json +3 -2
  68. package/scripts/backfill-post-slugs.mjs +38 -0
  69. package/dist/ar-CQhBdHu3.js.map +0 -1
  70. package/dist/commentImages-DsW2yCqu.js.map +0 -1
  71. package/dist/de-B4GZqxQj.js.map +0 -1
  72. package/dist/en-BDkfivhc.js.map +0 -1
  73. package/dist/es-DzFDaLwo.js.map +0 -1
  74. package/dist/fr-Zf5mcs8m.js.map +0 -1
  75. package/dist/id-CaWN8212.js.map +0 -1
  76. package/dist/ja-xDttH9CE.js.map +0 -1
  77. package/dist/pt-WIfxYYWQ.js.map +0 -1
  78. package/dist/zh-CI6Sd8PD.js.map +0 -1
@@ -225,6 +225,33 @@ function ge() {
225
225
  //#endregion
226
226
  //#region src/i18n/messages/ko/index.ts
227
227
  var _e = {
228
+ accountDeletion: {
229
+ title: "회원 탈퇴",
230
+ intro: "계정과 개인정보를 삭제하려면 탈퇴를 진행해 주세요.",
231
+ open: "회원 탈퇴",
232
+ description: "삭제할 내용을 확인하고 로그인 계정을 다시 인증해 주세요.",
233
+ ownerBlocked: "소유자는 먼저 다른 계정으로 소유자 권한을 이전해야 탈퇴할 수 있습니다.",
234
+ authWarning: "Firebase 로그인 계정이 삭제됩니다. 같은 계정을 공유하는 호스트 서비스에서도 로그인할 수 없게 됩니다. 처리 완료 후에는 복구할 수 없습니다.",
235
+ deleteContent: "내 글·댓글과 첨부파일도 삭제",
236
+ contentWarning: "내 글에 달린 다른 사람의 댓글과 첨부파일도 함께 삭제됩니다. 다른 사람 글의 답글 연결에 필요한 댓글은 내용 없는 삭제 표시로 남습니다.",
237
+ retention: "체크하지 않으면 글·댓글과 첨부파일은 남기고 작성자 이름·사진·계정 연결을 익명화합니다. 본문에 직접 작성한 개인정보는 남을 수 있습니다. 프로필·이메일·사진·개인 메모·좋아요·보드 담당 배정은 선택과 관계없이 삭제됩니다.",
238
+ acknowledge: "탈퇴를 시작하면 되돌릴 수 없음을 이해했습니다.",
239
+ typeConfirmation: "확인을 위해 DELETE를 입력해 주세요.",
240
+ confirm: "재인증 후 영구 탈퇴",
241
+ resume: "이어서 탈퇴 처리",
242
+ resumePolicy: "이미 시작한 탈퇴는 이전에 선택한 삭제 범위로 이어서 처리합니다.",
243
+ authenticating: "로그인 계정을 다시 확인하고 있습니다…",
244
+ working: "탈퇴 처리 중입니다…",
245
+ progress: "{count}건 처리했습니다. 데이터가 많으면 시간이 걸립니다. 이 화면을 유지해 주세요.",
246
+ retry: "처리를 마치지 못했습니다. 다시 눌러 이어서 처리해 주세요.",
247
+ unavailable: "회원 탈퇴 기능이 아직 준비되지 않았습니다. 운영자에게 문의해 주세요.",
248
+ signInAgain: "로그인 계정을 다시 인증해 주세요.",
249
+ unsupportedProvider: "이 로그인 방식은 자동 재인증을 지원하지 않습니다. 운영자에게 문의해 주세요.",
250
+ cancelled: "재인증이 취소되었습니다. 계정은 삭제되지 않았습니다.",
251
+ sessionExpired: "처리 세션이 만료되었습니다. 로그인 계정을 다시 인증해 이어서 처리해 주세요.",
252
+ leaveWarning: "탈퇴 처리가 진행 중입니다. 이동하면 일시 중단됩니다. 나중에 이 화면에서 이어서 처리할 수 있습니다. 이동할까요?",
253
+ success: "회원 탈퇴가 완료되었습니다."
254
+ },
228
255
  attachments: {
229
256
  attach: "파일 첨부 ({count} / {max})",
230
257
  dropOrClick: "파일을 놓거나 클릭해서 추가",
@@ -259,16 +286,45 @@ var _e = {
259
286
  boardSettings: {
260
287
  signInRequired: "로그인이 필요합니다.",
261
288
  idAndNameRequired: "보드 ID와 이름을 입력해 주세요.",
262
- deleteIdRequired: "삭제할 게시판 ID가 필요합니다.",
289
+ deleteIdRequired: "삭제할 보드 ID가 필요합니다.",
263
290
  nameRequired: "보드 이름을 입력해 주세요."
264
291
  },
265
292
  boardUsers: {
266
293
  unsupportedRole: "지원하지 않는 역할입니다.",
294
+ guide: {
295
+ title: "사용자 역할 안내",
296
+ assignmentNote: "매니저·스태프의 실제 담당 보드는 각 보드 설정에서 지정합니다. 역할만 변경해도 담당 보드가 자동으로 배정되지는 않습니다.",
297
+ owner: {
298
+ permissions: "사용자 역할, 보드 설정과 모든 콘텐츠를 관리합니다.",
299
+ roles: "관리자를 지정·해제하고 매니저·스태프·일반 사용자의 역할을 변경합니다.",
300
+ restriction: "소유자 권한의 지정·이전은 이 화면에서 할 수 없습니다. 서버·콘솔에서 설정합니다."
301
+ },
302
+ admin: {
303
+ permissions: "보드 설정과 모든 보드의 글·댓글을 관리합니다.",
304
+ roles: "매니저·스태프·일반 사용자의 역할을 변경합니다.",
305
+ restriction: "다른 관리자와 소유자의 역할은 변경할 수 없습니다."
306
+ },
307
+ manager: {
308
+ permissions: "담당 보드의 설정을 변경하고 스태프를 지정합니다.",
309
+ roles: "담당 보드의 글·댓글을 관리합니다.",
310
+ restriction: "서비스 전체 설정과 사용자 역할은 변경할 수 없습니다."
311
+ },
312
+ staff: {
313
+ permissions: "담당 보드의 글·댓글을 관리합니다.",
314
+ roles: "보드 설정과 담당자 배정은 변경할 수 없습니다.",
315
+ restriction: "서비스 전체 설정과 사용자 역할은 변경할 수 없습니다."
316
+ },
317
+ user: {
318
+ permissions: "보드 권한에 따라 글·댓글을 작성합니다.",
319
+ roles: "본인이 작성한 글·댓글을 수정·삭제합니다.",
320
+ restriction: "사용자 관리와 보드 설정에는 접근할 수 없습니다."
321
+ }
322
+ },
267
323
  roleDescription: {
268
324
  owner: "관리자 지정과 서비스 전체를 관리합니다.",
269
- manager: "담당 게시판의 설정과 스태프 배정을 관리합니다.",
270
- admin: "사용자 역할, 게시판 설정과 모든 콘텐츠를 관리합니다.",
271
- staff: "담당 게시판의 게시글과 댓글을 관리합니다. 설정과 담당자 배정은 바꿀 수 없습니다.",
325
+ manager: "담당 보드의 설정과 스태프 배정을 관리합니다.",
326
+ admin: "사용자 역할, 보드 설정과 모든 콘텐츠를 관리합니다.",
327
+ staff: "담당 보드의 게시글과 댓글을 관리합니다. 설정과 담당자 배정은 바꿀 수 없습니다.",
272
328
  user: "글과 댓글을 작성하고 본인이 작성한 콘텐츠만 수정·삭제할 수 있습니다."
273
329
  }
274
330
  },
@@ -282,8 +338,8 @@ var _e = {
282
338
  confirmLeave: "작성 중인 댓글이 있습니다. 저장하지 않고 나가시겠습니까?",
283
339
  translationPending: "{count}개 언어 번역을 준비했습니다. 댓글을 저장하면 함께 기록됩니다.",
284
340
  translationSkipped: "번역하지 못해 원문만 등록했습니다. 나중에 수정 화면에서 번역할 수 있습니다.",
285
- hiddenBoardDenied: "숨김 게시판에는 담당 스태프만 댓글을 남길 수 있습니다.",
286
- denied: "이 게시판에는 댓글쓰기 권한이 없습니다.",
341
+ hiddenBoardDenied: "숨김 보드에는 담당 스태프만 댓글을 남길 수 있습니다.",
342
+ denied: "이 보드에는 댓글쓰기 권한이 없습니다.",
287
343
  signInRequired: "로그인이 필요합니다.",
288
344
  writeRestricted: "콘텐츠 경고가 누적되어 글·댓글 작성이 잠시 제한됐어요.",
289
345
  moderationBlocked: "작성할 수 없는 내용이 포함되어 있습니다.",
@@ -336,6 +392,10 @@ var _e = {
336
392
  },
337
393
  common: {
338
394
  action: {
395
+ zoomIn: "확대",
396
+ zoomOut: "축소",
397
+ fitImage: "화면에 맞추기",
398
+ originalImage: "원래 크기 (100%)",
339
399
  cancel: "취소",
340
400
  save: "저장",
341
401
  saved: "저장됨",
@@ -359,6 +419,7 @@ var _e = {
359
419
  toTop: "위로"
360
420
  },
361
421
  label: {
422
+ imageControls: "이미지 확대 도구",
362
423
  anonymous: "익명",
363
424
  user: "사용자",
364
425
  image: "이미지",
@@ -534,7 +595,7 @@ var _e = {
534
595
  photoRequired: "사진을 한 장 이상 올려 주세요.",
535
596
  bodyRequired: "본문에 글자를 입력하거나 이미지를 첨부해 주세요.",
536
597
  signInRequired: "로그인이 필요합니다.",
537
- boardMissing: "게시판(보드)이 지정되지 않았습니다.",
598
+ boardMissing: "보드(보드)이 지정되지 않았습니다.",
538
599
  writeRestricted: "콘텐츠 경고가 누적되어 글·댓글 작성이 잠시 제한됐어요.",
539
600
  moderationBlocked: "게시할 수 없는 내용이 포함되어 있습니다."
540
601
  },
@@ -591,7 +652,7 @@ var _e = {
591
652
  commentNotFound: "댓글을 찾을 수 없습니다."
592
653
  },
593
654
  list: {
594
- introduction: "이 게시판은 Nuxt 4와 Vue 3, TypeScript를 바탕으로 만들었어요. Nuxt UI와 Tailwind CSS로 편안한 화면을 구성하고, Firebase Firestore·Auth·Storage와 nuxt-vuefire로 글과 댓글을 자연스럽게 이어갑니다.",
655
+ introduction: "이 보드는 Nuxt 4와 Vue 3, TypeScript를 바탕으로 만들었어요. Nuxt UI와 Tailwind CSS로 편안한 화면을 구성하고, Firebase Firestore·Auth·Storage와 nuxt-vuefire로 글과 댓글을 자연스럽게 이어갑니다.",
595
656
  settings: "설정",
596
657
  loadFailed: "목록을 불러오지 못했습니다: {error}",
597
658
  empty: "아직 게시글이 없습니다.",
@@ -605,8 +666,8 @@ var _e = {
605
666
  staff: "담당 스태프"
606
667
  },
607
668
  info: {
608
- title: "게시판 정보",
609
- about: "이 게시판은",
669
+ title: "보드 정보",
670
+ about: "이 보드는",
610
671
  history: "버전 히스토리"
611
672
  },
612
673
  stack: {
@@ -618,7 +679,7 @@ var _e = {
618
679
  nuxt: "Vue 기반 SSR 프레임워크",
619
680
  vue: "Composition API · script setup",
620
681
  typescript: "안전한 데이터와 컴포넌트 타입",
621
- nuxtUi: "게시판·폼·모달 UI",
682
+ nuxtUi: "보드·폼·모달 UI",
622
683
  tailwind: "반응형 · 라이트/다크 스타일",
623
684
  lucide: "가볍고 일관된 아이콘",
624
685
  dayjs: "읽기 편한 날짜와 상대 시각",
@@ -677,6 +738,7 @@ var _e = {
677
738
  titleRequired: "제목을 입력해 주세요."
678
739
  },
679
740
  profile: {
741
+ myAccount: "내 계정",
680
742
  notFound: "사용자를 찾을 수 없습니다.",
681
743
  noName: "이름 없음",
682
744
  joined: "가입 {time}",
@@ -692,6 +754,10 @@ var _e = {
692
754
  profileEditModal: {
693
755
  imageOnly: "이미지 파일만 선택할 수 있습니다.",
694
756
  nameRequired: "이름을 입력해 주세요.",
757
+ nameReviewHelp: "새 이름은 저장 전에 욕설·혐오·스팸·운영진 사칭 여부를 검사합니다.",
758
+ checkingName: "이름 검사 중…",
759
+ nameRejected: "사용할 수 없는 이름입니다. 다른 이름을 입력해 주세요.",
760
+ nameReviewFailed: "AI가 이름을 확인하지 못했습니다. 잠시 후 다시 시도해 주세요.",
695
761
  saveFailed: "프로필을 저장하지 못했습니다.",
696
762
  title: "프로필 수정",
697
763
  changePhoto: "사진 변경",
@@ -706,7 +772,22 @@ var _e = {
706
772
  done: "신고를 접수했습니다. 스태프가 내용을 확인합니다.",
707
773
  reason: "사유",
708
774
  detailPlaceholder: "자세한 내용 (선택)",
709
- submit: "신고하기"
775
+ submit: "신고하기",
776
+ status: {
777
+ open: "접수됨",
778
+ dismissed: "기각됨",
779
+ actioned: "검토 완료"
780
+ },
781
+ resultTitle: "신고 처리 상태",
782
+ result: {
783
+ open: "신고를 접수했으며 검토를 기다리고 있습니다.",
784
+ dismissed: "검토 결과 위반으로 판단하지 않았습니다.",
785
+ actioned: "검토가 완료되었습니다. 아래 처리 사유를 확인해 주세요."
786
+ },
787
+ reviewedAt: "처리 시각",
788
+ reviewNote: "처리 사유",
789
+ noNote: "기존 이력에 처리 사유가 없습니다.",
790
+ detailRequired: "자세한 내용 (기타 사유는 필수)"
710
791
  },
711
792
  reportList: {
712
793
  staffOnly: "스태프만 신고 목록을 볼 수 있습니다.",
@@ -715,7 +796,22 @@ var _e = {
715
796
  untitled: "제목 없는 글",
716
797
  author: "작성 {name}",
717
798
  dismiss: "기각",
718
- confirm: "확인"
799
+ tabs: {
800
+ open: "대기 중",
801
+ processed: "처리 이력"
802
+ },
803
+ filterLabel: "신고 상태 선택",
804
+ orderHint: "접수 시각 최신순입니다.",
805
+ historyEmpty: "처리 이력이 없습니다.",
806
+ confirm: "검토 완료",
807
+ dismissTitle: "신고 기각",
808
+ resolveTitle: "검토 완료 처리",
809
+ actionHint: "이 처리는 신고 상태만 변경합니다. 게시글을 숨기거나 삭제하지 않습니다.",
810
+ publicNote: "이 사유는 신고자에게도 공개됩니다.",
811
+ reviewer: "처리자",
812
+ reviewNote: "처리 사유",
813
+ unknownReviewer: "처리자 정보 없음",
814
+ actionFailed: "처리하지 못했습니다. 다시 시도해 주세요."
719
815
  },
720
816
  reports: {
721
817
  reason: {
@@ -729,7 +825,13 @@ var _e = {
729
825
  signInRequired: "로그인이 필요합니다.",
730
826
  cannotReportOwn: "자신의 글은 신고할 수 없습니다.",
731
827
  reasonRequired: "신고 사유를 선택해 주세요.",
732
- detailTooLong: "자세한 내용은 {max}자까지입니다."
828
+ detailTooLong: "자세한 내용은 {max}자까지입니다.",
829
+ otherDetailRequired: "기타 사유는 자세한 내용을 입력해 주세요.",
830
+ reviewNoteRequired: "처리 사유를 입력해 주세요.",
831
+ alreadyReviewed: "이미 처리된 신고입니다. 목록을 확인해 주세요.",
832
+ manageRequired: "신고를 처리할 권한이 없습니다.",
833
+ alreadyReported: "이미 신고한 글입니다.",
834
+ statusLoadFailed: "신고 상태를 불러오지 못했습니다. 새로고침해 주세요."
733
835
  },
734
836
  sectionUtil: {
735
837
  kind: {
@@ -750,28 +852,28 @@ var _e = {
750
852
  sections: { defaultTitle: "섹션 {n}" },
751
853
  seo: {
752
854
  allCategory: "전체",
753
- boardDescription: "{name} 게시판",
754
- allDescription: "게시판 — 공지와 커뮤니티 소식을 확인하세요.",
855
+ boardDescription: "{name} 보드",
856
+ allDescription: "보드 — 공지와 커뮤니티 소식을 확인하세요.",
755
857
  postFallbackTitle: "게시글 | {site}",
756
- postFallbackDescription: "게시판",
858
+ postFallbackDescription: "보드",
757
859
  photo: "사진",
758
- postDescriptionFallback: "게시판 글",
759
- listTitle: "{name} 게시판 | {site}",
760
- listTitleAll: "게시판 | {site}",
761
- listDescription: "{name} 게시판 — 소식을 확인하세요.",
762
- listDescriptionAll: "게시판 — 공지와 이야기를 확인하세요."
860
+ postDescriptionFallback: "보드 글",
861
+ listTitle: "{name} 보드 | {site}",
862
+ listTitleAll: "보드 | {site}",
863
+ listDescription: "{name} 보드 — 소식을 확인하세요.",
864
+ listDescriptionAll: "보드 — 공지와 이야기를 확인하세요."
763
865
  },
764
866
  settings: {
765
867
  managers: "담당 매니저",
766
868
  loading: "설정을 불러오고 있습니다.",
767
869
  noAccess: "접근 권한이 없습니다",
768
870
  notFound: {
769
- title: "없는 게시판입니다",
871
+ title: "없는 보드입니다",
770
872
  checkAddress: "주소를 다시 확인해 주세요.",
771
- checkBoardAddress: "게시판 주소를 다시 확인해 주세요."
873
+ checkBoardAddress: "보드 주소를 다시 확인해 주세요."
772
874
  },
773
875
  newBoard: {
774
- title: "아직 없는 게시판입니다",
876
+ title: "아직 없는 보드입니다",
775
877
  description: "아래 정보를 입력하고 저장하면 이 ID로 새로 만들어집니다."
776
878
  },
777
879
  noLabel: "라벨 없음",
@@ -794,7 +896,7 @@ var _e = {
794
896
  label: "댓글쓰기 권한",
795
897
  help: "이 카테고리에 댓글을 쓸 수 있는 최소 역할",
796
898
  helpShort: "댓글을 쓸 수 있는 최소 역할",
797
- hiddenHelp: "숨김 게시판은 댓글이 공개 피드에 안 나오고, 담당 스태프만 작성할 수 있습니다",
899
+ hiddenHelp: "숨김 보드는 댓글이 공개 피드에 안 나오고, 담당 스태프만 작성할 수 있습니다",
798
900
  hiddenFixed: "담당 스태프만 (숨김 보드 고정)"
799
901
  },
800
902
  staff: {
@@ -808,8 +910,8 @@ var _e = {
808
910
  },
809
911
  description: {
810
912
  label: "설명",
811
- help: "게시판 상단 등에 보이는 안내 문구",
812
- placeholder: "이 게시판에 대한 짧은 설명 (선택)"
913
+ help: "보드 상단 등에 보이는 안내 문구",
914
+ placeholder: "이 보드에 대한 짧은 설명 (선택)"
813
915
  },
814
916
  list: {
815
917
  filterAll: "전체",
@@ -818,7 +920,7 @@ var _e = {
818
920
  sortName: "이름",
819
921
  sortDescription: "설명",
820
922
  sortId: "주소",
821
- empty: "해당하는 게시판이 없습니다.",
923
+ empty: "해당하는 보드가 없습니다.",
822
924
  none: "없음",
823
925
  fieldCount: "{count}개",
824
926
  localeAuto: "자동"
@@ -871,21 +973,21 @@ var _e = {
871
973
  labelRequired: "키 {key}의 이름을 입력해 주세요."
872
974
  },
873
975
  locale: {
874
- label: "게시판 언어",
875
- help: "비우면 사이트 언어를 따릅니다. 고르면 이 게시판은 항상 그 언어로 보입니다.",
976
+ label: "보드 언어",
977
+ help: "비우면 사이트 언어를 따릅니다. 고르면 이 보드는 항상 그 언어로 보입니다.",
876
978
  auto: "자동 (사이트 언어 따름)"
877
979
  },
878
980
  bulk: {
879
- title: "모든 게시판에 적용",
880
- help: "체크한 항목만 모든 게시판에 덮어씁니다. 게시판별로 편집 중인 다른 값은 저장하지 않습니다.",
881
- apply: "게시판 {count}개에 적용",
981
+ title: "모든 보드에 적용",
982
+ help: "체크한 항목만 모든 보드에 덮어씁니다. 보드별로 편집 중인 다른 값은 저장하지 않습니다.",
983
+ apply: "보드 {count}개에 적용",
882
984
  applyShort: "적용",
883
- confirmTitle: "모든 게시판에 적용",
884
- confirm: "체크한 항목을 게시판 {count}개에 적용할까요?",
885
- applied: "게시판 {count}개에 적용했습니다.",
886
- translateUntranslated: "번역 안 된 게시판 번역 ({count})",
887
- translated: "게시판 {count}개의 이름·설명을 번역해 저장했습니다.",
888
- translateFailed: "게시판 {count}개는 번역하지 못했습니다. 다시 시도해 주세요."
985
+ confirmTitle: "모든 보드에 적용",
986
+ confirm: "체크한 항목을 보드 {count}개에 적용할까요?",
987
+ applied: "보드 {count}개에 적용했습니다.",
988
+ translateUntranslated: "번역 안 된 보드 번역 ({count})",
989
+ translated: "보드 {count}개의 이름·설명을 번역해 저장했습니다.",
990
+ translateFailed: "보드 {count}개는 번역하지 못했습니다. 다시 시도해 주세요."
889
991
  },
890
992
  translationLocales: {
891
993
  label: "번역 언어",
@@ -907,22 +1009,22 @@ var _e = {
907
1009
  },
908
1010
  action: {
909
1011
  moveDown: "아래로",
910
- goToBoard: "게시판으로 이동",
911
- deleteBoard: "게시판 삭제",
1012
+ goToBoard: "보드로 이동",
1013
+ deleteBoard: "보드 삭제",
912
1014
  create: "만들기"
913
1015
  },
914
- newCategoryPlaceholder: "새 게시판 이름",
915
- newCategoryHelp: "입력한 이름이 게시판 주소가 됩니다. 40자까지이고, 공백은 - 가 되며, 영문·숫자·한글만 남습니다.",
1016
+ newCategoryPlaceholder: "새 보드 이름",
1017
+ newCategoryHelp: "입력한 이름이 보드 주소가 됩니다. 40자까지이고, 공백은 - 가 되며, 영문·숫자·한글만 남습니다.",
916
1018
  newCategoryUrl: "주소: {path}",
917
- deleteConfirm: "‘{label}’ 게시판을 삭제하시겠습니까?\n\n이 게시판의 모든 게시물, 댓글, 대댓글, 본문 이미지, 댓글 이미지와 첨부파일이 영구 삭제됩니다. 이 작업은 되돌릴 수 없습니다.",
1019
+ deleteConfirm: "‘{label}’ 보드를 삭제하시겠습니까?\n\n이 보드의 모든 게시물, 댓글, 대댓글, 본문 이미지, 댓글 이미지와 첨부파일이 영구 삭제됩니다. 이 작업은 되돌릴 수 없습니다.",
918
1020
  savedCategory: "‘{label}’ 카테고리를 저장했습니다.",
919
- savedSettings: "게시판 설정을 저장했습니다.",
920
- created: "게시판을 만들었습니다.",
1021
+ savedSettings: "보드 설정을 저장했습니다.",
1022
+ created: "보드를 만들었습니다.",
921
1023
  error: {
922
1024
  orderFailed: "카테고리 순서를 저장하지 못했습니다.",
923
- deleteFailed: "게시판과 연결 데이터를 삭제하지 못했습니다.",
924
- saveFailed: "게시판 설정을 저장하지 못했습니다.",
925
- deleteAllFailed: "게시판 데이터를 삭제하지 못했습니다."
1025
+ deleteFailed: "보드와 연결 데이터를 삭제하지 못했습니다.",
1026
+ saveFailed: "보드 설정을 저장하지 못했습니다.",
1027
+ deleteAllFailed: "보드 데이터를 삭제하지 못했습니다."
926
1028
  },
927
1029
  aiTitle: {
928
1030
  label: "AI 제목 자동 만들기",
@@ -954,16 +1056,16 @@ var _e = {
954
1056
  },
955
1057
  i18nBoard: {
956
1058
  label: "국제화",
957
- help: "켜면 게시판 이름·설명과 새 글·댓글을 {count}개 언어로 자동 번역해 함께 저장합니다. 끄면 원문만 보입니다.",
1059
+ help: "켜면 보드 이름·설명과 새 글·댓글을 {count}개 언어로 자동 번역해 함께 저장합니다. 끄면 원문만 보입니다.",
958
1060
  existing: "기존 글도 번역하기"
959
1061
  },
960
1062
  about: {
961
1063
  label: "About memi-board 표시",
962
- help: "화면 아래의 About memi-board 링크와 소개 팝업을 모든 게시판 화면에 보여 줍니다. 끄면 사이트 전체에서 숨겨집니다."
1064
+ help: "화면 아래의 About memi-board 링크와 소개 팝업을 모든 보드 화면에 보여 줍니다. 끄면 사이트 전체에서 숨겨집니다."
963
1065
  },
964
1066
  postTranslations: {
965
1067
  label: "기존 글 번역",
966
- help: "번역이 없거나 원문과 달라진 글을 찾아 한꺼번에 번역하고 저장합니다. 자동 번역을 끈 게시판이나, 번역이 빠진 글을 채울 때 쓰세요. AI 사용 횟수는 차감하지 않습니다.",
1068
+ help: "번역이 없거나 원문과 달라진 글을 찾아 한꺼번에 번역하고 저장합니다. 자동 번역을 끈 보드나, 번역이 빠진 글을 채울 때 쓰세요. AI 사용 횟수는 차감하지 않습니다.",
967
1069
  scan: "번역할 글 찾기",
968
1070
  run: "{count}개 글 번역하기",
969
1071
  confirm: "{count}개 글을 번역해 저장합니다. 글 수만큼 AI 호출이 일어납니다. 계속할까요?",
@@ -973,9 +1075,9 @@ var _e = {
973
1075
  failed: "{count}개 글은 번역하지 못했습니다. 다시 찾아서 시도해 주세요."
974
1076
  },
975
1077
  cleanup: {
976
- contextChanged: "조회 이후 계정이나 게시판 설정이 변경되었습니다. 다시 조회해 주세요.",
1078
+ contextChanged: "조회 이후 계정이나 보드 설정이 변경되었습니다. 다시 조회해 주세요.",
977
1079
  title: "고아 파일·문서 정리",
978
- description: "전체 게시판에서 부모 글이 없는 파일·댓글, 삭제된 댓글의 이미지, 대상이 없는 좋아요를 조회합니다. 최근 24시간 내 파일과 사용 중인 파일, 신고 기록은 보존합니다.",
1080
+ description: "전체 보드에서 부모 글이 없는 파일·댓글, 삭제된 댓글의 이미지, 대상이 없는 좋아요를 조회합니다. 최근 24시간 내 파일과 사용 중인 파일, 신고 기록은 보존합니다.",
979
1081
  scan: "고아 항목 조회",
980
1082
  empty: "조회된 고아 항목이 없습니다.",
981
1083
  selectAll: "전체 선택 ({count}개)",
@@ -991,11 +1093,11 @@ var _e = {
991
1093
  },
992
1094
  danger: {
993
1095
  title: "위험 영역",
994
- description: "모든 게시글, 댓글, 댓글 이미지, 첨부파일과 카테고리 설정을 영구 삭제합니다. 게시판 사용자와 관리자 권한은 유지합니다.",
1096
+ description: "모든 게시글, 댓글, 댓글 이미지, 첨부파일과 카테고리 설정을 영구 삭제합니다. 보드 사용자와 관리자 권한은 유지합니다.",
995
1097
  confirmLabel: "확인을 위해 ‘{phrase}’를 입력하세요",
996
- phrase: "게시판 데이터 삭제",
1098
+ phrase: "보드 데이터 삭제",
997
1099
  button: "모든 데이터 삭제",
998
- done: "게시판 데이터를 모두 삭제했습니다."
1100
+ done: "보드 데이터를 모두 삭제했습니다."
999
1101
  }
1000
1102
  },
1001
1103
  shareButton: { copied: "링크 복사됨" },
@@ -1035,14 +1137,37 @@ var _e = {
1035
1137
  empty: "작성한 글이 없습니다."
1036
1138
  },
1037
1139
  users: {
1140
+ title: "보드 사용자",
1141
+ sort: {
1142
+ label: "사용자 정렬 기준",
1143
+ name: "이름순",
1144
+ role: "역할순",
1145
+ direction: "정렬 방향",
1146
+ asc: "오름차순",
1147
+ desc: "내림차순"
1148
+ },
1149
+ pagination: {
1150
+ label: "사용자 목록 페이지 이동",
1151
+ pageSize: "페이지당 사용자 수",
1152
+ perPage: "{count}명씩",
1153
+ status: "{page}페이지 · {count}명"
1154
+ },
1155
+ loadFailed: "사용자 목록을 불러오지 못했습니다.",
1038
1156
  changeRoleFailed: "역할을 변경하지 못했습니다.",
1157
+ confirmRole: {
1158
+ title: "사용자 권한 변경",
1159
+ description: "{name}님의 역할을 {from}에서 {to}(으)로 변경하시겠습니까?",
1160
+ confirm: "변경하기"
1161
+ },
1039
1162
  loading: "사용자 목록을 불러오고 있습니다.",
1040
1163
  noPermission: {
1041
1164
  title: "권한이 없습니다",
1042
- description: "게시판 관리자만 사용자 역할을 관리할 수 있습니다."
1165
+ description: "보드 관리자만 사용자 역할을 관리할 수 있습니다."
1043
1166
  },
1044
- empty: "게시판에 로그인한 사용자가 없습니다.",
1167
+ empty: "보드에 로그인한 사용자가 없습니다.",
1045
1168
  noName: "이름 없음",
1169
+ noEmail: "이메일 없음",
1170
+ emailLoadFailed: "이메일을 불러오지 못했습니다.",
1046
1171
  moderationWarnings: "콘텐츠 경고 {count}회"
1047
1172
  },
1048
1173
  writingAssistant: {
@@ -1069,15 +1194,15 @@ var _e = {
1069
1194
  }
1070
1195
  }
1071
1196
  }, ve = {
1072
- en: () => import("./en-BDkfivhc.js"),
1073
- ja: () => import("./ja-xDttH9CE.js"),
1074
- de: () => import("./de-B4GZqxQj.js"),
1075
- fr: () => import("./fr-Zf5mcs8m.js"),
1076
- es: () => import("./es-DzFDaLwo.js"),
1077
- pt: () => import("./pt-WIfxYYWQ.js"),
1078
- zh: () => import("./zh-CI6Sd8PD.js"),
1079
- ar: () => import("./ar-CQhBdHu3.js"),
1080
- id: () => import("./id-CaWN8212.js")
1197
+ en: () => import("./en-DeExi-DR.js"),
1198
+ ja: () => import("./ja-ByVLGIDd.js"),
1199
+ de: () => import("./de-CS0iRLqe.js"),
1200
+ fr: () => import("./fr-B9sjKJF4.js"),
1201
+ es: () => import("./es-dlEFrox-.js"),
1202
+ pt: () => import("./pt-COQL_Q7A.js"),
1203
+ zh: () => import("./zh-DBjX9qAS.js"),
1204
+ ar: () => import("./ar-GNguZBN4.js"),
1205
+ id: () => import("./id-Ca7skouh.js")
1081
1206
  }, B = "__MEMI_BOARD_I18N__";
1082
1207
  function V() {
1083
1208
  let e = globalThis;
@@ -1231,4 +1356,4 @@ function Ae(e, t) {
1231
1356
  //#endregion
1232
1357
  export { f as $, b as A, se as B, R as C, v as D, N as E, k as F, de as G, oe as H, A as I, D as J, ne as K, O as L, S as M, ue as N, y as O, fe as P, te as Q, ae as R, I as S, ge as T, re as U, E as V, T as W, C as X, ce as Y, w as Z, me as _, Ee as a, P as b, Ce as c, Y as d, p as et, Z as f, z as g, G as h, we as i, x as j, _ as k, q as l, U as m, Oe as n, g as nt, Te as o, ye as p, le as q, ke as r, h as rt, Q as s, Ae as t, d as tt, X as u, he as v, L as w, F as x, pe as y, ie as z };
1233
1358
 
1234
- //# sourceMappingURL=commentImages-DsW2yCqu.js.map
1359
+ //# sourceMappingURL=commentImages-CRK_2uVi.js.map