memi-board 0.45.1 → 0.46.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 (63) hide show
  1. package/README.md +21 -6
  2. package/dist/{ar-BCQdRw_S.js → ar-2vagHrlh.js} +17 -1
  3. package/dist/ar-2vagHrlh.js.map +1 -0
  4. package/dist/composables/boardLookup.d.ts +2 -0
  5. package/dist/composables/fetchPublicSeo.d.ts +1 -1
  6. package/dist/composables/useMemiBoardAuth.d.ts +5 -1
  7. package/dist/composables/useMemiBoardAutoTranslate.d.ts +6 -6
  8. package/dist/composables/useMemiBoardPosts.d.ts +6 -1
  9. package/dist/composables/useMemiBoardSettings.d.ts +5 -4
  10. package/dist/composables/useMemiBoardWritingAssistant.d.ts +8 -0
  11. package/dist/config.d.ts +2 -0
  12. package/dist/{de-ddWQNaqs.js → de-B6gqgrqZ.js} +17 -1
  13. package/dist/de-B6gqgrqZ.js.map +1 -0
  14. package/dist/{en-DxkqyZq2.js → en-BaP_ikG-.js} +20 -2
  15. package/dist/en-BaP_ikG-.js.map +1 -0
  16. package/dist/{es-7JHjGVlM.js → es-CGxYBYNH.js} +17 -1
  17. package/dist/es-CGxYBYNH.js.map +1 -0
  18. package/dist/{fr-C3NCMNoy.js → fr-DeP9Swrv.js} +17 -1
  19. package/dist/fr-DeP9Swrv.js.map +1 -0
  20. package/dist/{id-C8hCAMPJ.js → id-BIUlVuq8.js} +17 -1
  21. package/dist/id-BIUlVuq8.js.map +1 -0
  22. package/dist/index.d.ts +3 -2
  23. package/dist/index.js +1123 -757
  24. package/dist/index.js.map +1 -1
  25. package/dist/{ja-oTWri4hY.js → ja-0FOftjGv.js} +17 -1
  26. package/dist/{ja-oTWri4hY.js.map → ja-0FOftjGv.js.map} +1 -1
  27. package/dist/{pt-B9EH4scA.js → pt-D8IArHb-.js} +17 -1
  28. package/dist/pt-D8IArHb-.js.map +1 -0
  29. package/dist/runtime/components/CategorySettings.vue +39 -15
  30. package/dist/runtime/components/Detail.vue +9 -7
  31. package/dist/runtime/components/Editor.vue +79 -8
  32. package/dist/runtime/components/List.vue +2 -2
  33. package/dist/runtime/components/ListDefault.vue +16 -6
  34. package/dist/runtime/components/ListDense.vue +8 -4
  35. package/dist/runtime/components/ListImage.vue +13 -6
  36. package/dist/runtime/components/ListVideo.vue +14 -5
  37. package/dist/runtime/components/Section.vue +10 -3
  38. package/dist/runtime/components/Settings.vue +35 -11
  39. package/dist/runtime/components/Users.vue +4 -3
  40. package/dist/runtime/composables/useMemiBoardSeo.ts +3 -3
  41. package/dist/{slugify-BuOMFLxN.js → slugify-BR-FLuDb.js} +34 -13
  42. package/dist/slugify-BR-FLuDb.js.map +1 -0
  43. package/dist/storage.js +1 -1
  44. package/dist/types.d.ts +46 -1
  45. package/dist/utils/boardAccess.d.ts +3 -0
  46. package/dist/utils/localizedFields.d.ts +33 -0
  47. package/dist/utils/section.d.ts +1 -1
  48. package/dist/{zh-D5rDYV6E.js → zh-DlXIP7ju.js} +17 -1
  49. package/dist/zh-DlXIP7ju.js.map +1 -0
  50. package/docs/firebase-setup.md +30 -2
  51. package/docs/firestore.rules.example +24 -8
  52. package/docs/roles-migration.md +32 -0
  53. package/docs/storage.rules.example +4 -4
  54. package/package.json +1 -1
  55. package/dist/ar-BCQdRw_S.js.map +0 -1
  56. package/dist/de-ddWQNaqs.js.map +0 -1
  57. package/dist/en-DxkqyZq2.js.map +0 -1
  58. package/dist/es-7JHjGVlM.js.map +0 -1
  59. package/dist/fr-C3NCMNoy.js.map +0 -1
  60. package/dist/id-C8hCAMPJ.js.map +0 -1
  61. package/dist/pt-B9EH4scA.js.map +0 -1
  62. package/dist/slugify-BuOMFLxN.js.map +0 -1
  63. package/dist/zh-D5rDYV6E.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"en-BaP_ikG-.js","names":[],"sources":["../src/i18n/messages/en/attachments.ts","../src/i18n/messages/en/auth.ts","../src/i18n/messages/en/authorMemo.ts","../src/i18n/messages/en/authorMenu.ts","../src/i18n/messages/en/avatarCropModal.ts","../src/i18n/messages/en/boardSettings.ts","../src/i18n/messages/en/boardUsers.ts","../src/i18n/messages/en/commentFeed.ts","../src/i18n/messages/en/commentForm.ts","../src/i18n/messages/en/commentItem.ts","../src/i18n/messages/en/commentList.ts","../src/i18n/messages/en/commentThread.ts","../src/i18n/messages/en/comments.ts","../src/i18n/messages/en/common.ts","../src/i18n/messages/en/detail.ts","../src/i18n/messages/en/editor.ts","../src/i18n/messages/en/footer.ts","../src/i18n/messages/en/likes.ts","../src/i18n/messages/en/list.ts","../src/i18n/messages/en/listViewSwitch.ts","../src/i18n/messages/en/miniComments.ts","../src/i18n/messages/en/miniList.ts","../src/i18n/messages/en/miniPicker.ts","../src/i18n/messages/en/miniPost.ts","../src/i18n/messages/en/moderation.ts","../src/i18n/messages/en/moderationPrompt.ts","../src/i18n/messages/en/moderationStrike.ts","../src/i18n/messages/en/posts.ts","../src/i18n/messages/en/profile.ts","../src/i18n/messages/en/profileEditModal.ts","../src/i18n/messages/en/reportButton.ts","../src/i18n/messages/en/reportList.ts","../src/i18n/messages/en/reports.ts","../src/i18n/messages/en/sectionUtil.ts","../src/i18n/messages/en/sections.ts","../src/i18n/messages/en/seo.ts","../src/i18n/messages/en/settings.ts","../src/i18n/messages/en/shareButton.ts","../src/i18n/messages/en/signIn.ts","../src/i18n/messages/en/storage.ts","../src/i18n/messages/en/swipeHint.ts","../src/i18n/messages/en/userCommentList.ts","../src/i18n/messages/en/userPostList.ts","../src/i18n/messages/en/users.ts","../src/i18n/messages/en/writingAssistant.ts","../src/i18n/messages/en/index.ts"],"sourcesContent":["export default {\n attach: 'Attach files ({count} / {max})',\n maxFiles: 'You can attach up to {max} files.',\n}\n","export default {\n writeRestricted: 'Posting and commenting are temporarily restricted due to repeated content warnings.',\n writeRestrictedUntil: 'Posting and commenting are temporarily restricted due to repeated content warnings. ({until})',\n strikeSuffix: ' (Warning {count}/{threshold})',\n strikeRestrictedUntil: ' You have reached {count} warnings, so posting and commenting are restricted ({until}).',\n strikeRestricted: ' You have reached {count} warnings, so posting and commenting are restricted.',\n notInitialized: '[memi-board] Firebase Auth is not initialized.',\n}\n","export default {\n tooLong: 'Memos can be up to {max} characters.',\n}\n","export default {\n viewProfile: 'View profile',\n viewPosts: 'View posts',\n viewComments: 'View comments',\n memoAriaLabel: 'Note about this author',\n memoTitle: 'Private note',\n memoPlaceholder: 'Jot something down about this author…',\n bad: 'Bad',\n good: 'Good',\n}\n","export default {\n title: 'Crop profile photo',\n description: 'Shown as a square (1:1). Adjust the area to fit.',\n hint: 'Drag to move and zoom · Saved as a {size}×{size} square JPEG',\n confirm: 'Crop and upload',\n}\n","export default {\n signInRequired: 'Please sign in.',\n idAndNameRequired: 'Please enter a board ID and name.',\n deleteIdRequired: 'A board ID is required to delete.',\n nameRequired: 'Please enter a board name.',\n}\n","export default {\n unsupportedRole: 'Unsupported role.',\n roleDescription: {\n owner: 'Manages administrators and the entire service.',\n manager: 'Manages settings and staff assignments for assigned boards.',\n admin: 'Manages user roles, board settings, and all content.',\n staff: 'Manages posts and comments in assigned boards, but cannot change settings or assignments.',\n user: 'Can write posts and comments, and edit or delete only their own content.',\n },\n}\n","export default {\n empty: 'No comments yet.',\n emptyLiked: 'No liked comments yet.',\n loadFailed: 'Couldn’t load the list: {error}',\n blinded: 'This comment was hidden by an admin.',\n}\n","export default {\n hiddenBoardDenied: 'Only assigned staff can comment on hidden boards.',\n denied: 'You don’t have permission to comment on this board.',\n signInRequired: 'Please sign in.',\n writeRestricted: 'Posting is temporarily restricted due to repeated content warnings.',\n moderationBlocked: 'This contains content that can’t be posted.',\n replyTo: 'Reply to {name}',\n placeholder: 'Write a comment',\n submitReply: 'Reply',\n submit: 'Comment',\n signInToComment: 'Sign in to leave a comment.',\n}\n","export default {\n editRestricted: 'Editing comments is temporarily restricted.',\n moderationBlocked: 'This contains content that can’t be posted.',\n editFailed: 'Couldn’t update the comment.',\n blindConfirm: 'Hiding this comment shows a notice to everyone instead of its text. The original isn’t deleted and you can unhide it later.\\n\\nHide this comment?',\n unblindConfirm: 'Unhiding shows the original comment to everyone again.\\n\\nUnhide this comment?',\n blindFailed: 'Couldn’t change the hidden state.',\n likeFailed: 'Couldn’t process the like.',\n blinded: 'This comment was hidden by an admin.',\n edit: 'Edit comment',\n blind: 'Hide comment',\n unblind: 'Unhide comment',\n delete: 'Delete comment',\n}\n","export default {\n loading: 'Loading comments',\n empty: 'No comments yet.',\n loadMore: 'More comments',\n loadingMore: 'Loading more comments',\n}\n","export default {\n deleteConfirm: 'Delete this comment?',\n deleteFailed: 'Couldn’t delete the comment.',\n hideReplies: 'Hide replies',\n showReplies: '{count} replies',\n loadMoreReplies: 'More replies',\n}\n","export default {\n bodyRequired: 'Please enter a comment.',\n bodyTooLong: 'Comments can be up to {max} characters.',\n replyTargetNotFound: 'The comment you are replying to could not be found.',\n threadNotFound: 'The comment thread could not be found.',\n hasRepliesCannotDelete: 'Comments with replies cannot be deleted right now.',\n}\n","export default {\n action: {\n cancel: 'Cancel',\n save: 'Save',\n saved: 'Saved',\n edit: 'Edit',\n delete: 'Delete',\n confirm: 'OK',\n close: 'Close',\n add: 'Add',\n more: 'More',\n prev: 'Previous',\n next: 'Next',\n retry: 'Retry',\n reply: 'Reply',\n like: 'Like',\n unlike: 'Unlike',\n share: 'Share',\n report: 'Report',\n signIn: 'Sign in',\n signOut: 'Sign out',\n write: 'Write',\n toTop: 'Top',\n },\n label: {\n anonymous: 'Anonymous',\n user: 'User',\n image: 'Image',\n draft: 'Draft',\n loading: 'Loading…',\n },\n role: {\n owner: 'Owner',\n manager: 'Manager',\n admin: 'Admin',\n staff: 'Staff',\n user: 'User',\n },\n date: {\n justNow: 'Just now',\n fewSecondsAgo: 'A few seconds ago',\n checking: 'Checking time',\n createdAt: 'Created: {time}',\n updatedAt: 'Updated: {time}',\n },\n}\n","export default {\n deleteConfirm: 'Delete this post? This can’t be undone.',\n notFound: 'Post not found.',\n draftPreview: 'Unpublished preview',\n draftNotice: 'This post isn’t published yet. Only you can see it until you publish.',\n publish: 'Publish',\n backToList: 'Back to list',\n postNav: 'Post navigation',\n list: 'List',\n comments: 'Comments',\n}\n","export default {\n titlePlaceholder: 'Title',\n contentPlaceholder: 'Write something… Type / to open the block menu.',\n imageContentPlaceholder: 'Write something…',\n tagsPlaceholder: 'Type a tag and press Enter',\n skipModeration: 'Skip profanity filter (admin)',\n submitEdit: 'Save changes',\n submitNext: 'Next: Preview',\n apply: 'Apply',\n imageOptimizing: 'Optimizing and uploading image…',\n cover: {\n hint: 'Photos {count}/{max} · Pick a cover · Drag to reorder · Drop or paste files to add',\n imageLink: 'Image link',\n addPhoto: 'Add photos',\n alt: 'Photo {n}',\n representative: 'Cover',\n setRepresentative: 'Set cover',\n setRepresentativeAria: 'Set photo {n} as cover',\n remove: 'Remove photo',\n add: 'Add',\n uploading: 'Uploading…',\n dropOrClick: 'Drop photos or click to add',\n emptyHint: 'Select multiple · Pick a cover after upload · Drag to reorder',\n uploadTitle: 'Upload',\n },\n uploadFailed: 'Upload failed',\n aiAssistant: 'AI writing assistant',\n insertBlock: 'Insert block',\n blockMenu: 'Block menu',\n imageDialog: {\n title: 'Add image',\n chooseFile: 'Choose image from device',\n orLink: 'or image link',\n urlLabel: 'Image URL',\n urlHelp: 'Only HTTPS URLs are allowed. If the image is removed from the source site, it won’t display here either.',\n previewAlt: 'External image preview',\n addLink: 'Add link',\n },\n customDialog: {\n title: 'Rewrite in a custom style',\n label: 'How should it be rewritten?',\n help: 'e.g. in a casual tone / in formal written style / as concise bullet points',\n placeholder: 'In a casual tone',\n },\n aiPreview: {\n title: 'Review AI result',\n currentTitle: 'Current title',\n newTitle: 'New title',\n currentContent: 'Current content',\n appendedContent: 'Content to add',\n before: 'Before',\n after: 'After',\n },\n menu: {\n ai: 'AI',\n aiContinue: 'Continue with AI',\n style: 'Style',\n insert: 'Insert',\n paragraph: 'Paragraph',\n heading1: 'Heading 1',\n heading2: 'Heading 2',\n heading3: 'Heading 3',\n bulletList: 'Bulleted list',\n orderedList: 'Numbered list',\n blockquote: 'Quote',\n codeBlock: 'Code block',\n horizontalRule: 'Divider',\n image: 'Image',\n turnInto: 'Turn into',\n resetFormatting: 'Reset formatting',\n duplicate: 'Duplicate',\n moveUp: 'Move up',\n moveDown: 'Move down',\n delete: 'Delete',\n },\n toolbar: {\n link: 'Link',\n image: 'Image',\n format: 'Format',\n bold: 'Bold',\n italic: 'Italic',\n underline: 'Underline',\n strike: 'Strikethrough',\n title: 'Title',\n heading: 'Heading',\n subheading: 'Subheading',\n body: 'Body',\n mono: 'Monospace',\n bulletList: 'Bulleted list',\n orderedList: 'Numbered list',\n blockquote: 'Block quote',\n codeBlock: 'Code block',\n horizontalRule: 'Divider',\n clearFormatting: 'Clear formatting',\n undo: 'Undo',\n redo: 'Redo',\n },\n ai: {\n proofread: 'Check spelling',\n polish: 'Polish writing',\n continue: 'Continue writing',\n summarize: 'Summarize briefly',\n translateEn: 'Translate to English',\n translateKo: 'Translate to Korean',\n translateAll: 'Translate and save in 10 languages',\n translateSaved: 'Saved in 10 languages. Readers see the translation for their language.',\n translatePending: 'Translations for 10 languages are ready. They are stored when you save the post.',\n translateEmpty: 'Enter a title or body to translate first.',\n title: 'Generate title from body',\n custom: 'Rewrite in a custom style…',\n failed: 'The AI task failed. Please try again.',\n },\n youtubePrompt: 'Enter a YouTube link.',\n errors: {\n coverMax: 'You can upload up to {max} photos.',\n imageUrlRequired: 'Enter an image URL.',\n imageUrlInvalid: 'Enter a valid image URL.',\n imageUrlHttps: 'Only HTTPS image URLs are allowed.',\n imageUrlCredentials: 'URLs containing login credentials aren’t allowed.',\n imageTimeout: 'The image is taking too long to load.',\n imageNotDisplayable: 'This image can’t be displayed.',\n imageLoadFailed: 'Couldn’t load the image. Check the URL or whether the site allows external linking.',\n editorNotReady: 'The editor isn’t ready. Please try again.',\n imageLinkFailed: 'Couldn’t add the image link.',\n imageOnly: 'Only image files can be uploaded.',\n imageTooLarge: 'Original images must be {mb}MB or smaller.',\n imageUploadFailed: 'Image upload failed.',\n pasteAsFile: 'Paste or drag photos as files into the area above.',\n postNotFound: 'Post not found.',\n loadPermission: 'You don’t have permission to load this post. Check that you’re signed in.',\n loadFailed: 'Couldn’t load the post: {message}',\n editPermission: 'You don’t have permission to edit. Make sure it’s your post and you’re still signed in.',\n titleRequired: 'Enter a title.',\n photoRequired: 'Upload at least one photo.',\n bodyRequired: 'Write some text or attach an image.',\n signInRequired: 'Sign-in required.',\n boardMissing: 'No board was specified.',\n writeRestricted: 'Posting and commenting are temporarily restricted due to repeated content warnings.',\n moderationBlocked: 'This contains content that can’t be posted.',\n },\n hint: {\n reviewing: 'Reviewing content…',\n saving: 'Saving…',\n },\n}\n","export default {\n introduction: 'A board built on Nuxt 4, Vue 3 and TypeScript, using Nuxt UI and Firebase to keep posts and comments flowing smoothly.',\n info: {\n title: 'Board info',\n about: 'About this board',\n history: 'Version history',\n },\n stack: {\n ui: 'Interface & experience',\n data: 'Data & sign-in',\n writing: 'Writing & convenience',\n },\n}\n","export default {\n signInRequired: 'Please sign in.',\n commentNotFound: 'Comment not found.',\n}\n","export default {\n introduction: 'This board is built on Nuxt 4, Vue 3 and TypeScript. Nuxt UI and Tailwind CSS shape a comfortable interface, while Firebase Firestore, Auth, Storage and nuxt-vuefire keep posts and comments flowing smoothly.',\n settings: 'Settings',\n loadFailed: 'Couldn’t load the list: {error}',\n empty: 'No posts yet.',\n photo: 'Photo',\n likeCount: 'Likes {count}',\n info: {\n title: 'Board info',\n about: 'About this board',\n history: 'Version history',\n },\n stack: {\n framework: 'Framework & language',\n ui: 'UI & styling',\n backend: 'Backend & data',\n },\n tech: {\n nuxt: 'Vue-based SSR framework',\n vue: 'Composition API · script setup',\n typescript: 'Type-safe data and components',\n nuxtUi: 'Board, form and modal UI',\n tailwind: 'Responsive · light/dark styles',\n lucide: 'Lightweight, consistent icons',\n dayjs: 'Readable dates and relative times',\n firestore: 'Real-time DB for posts and comments',\n auth: 'Secure sign-in and permissions',\n storage: 'Image and attachment storage',\n vuefire: 'Real-time Nuxt–Firebase binding',\n },\n}\n","export default {\n default: 'Default',\n dense: 'Compact',\n video: 'Video',\n}\n","export default {\n empty: 'No comments yet.',\n blinded: 'This comment was hidden by an admin.',\n}\n","export default {\n empty: 'No posts yet.',\n}\n","export default {\n selectedCount: 'Selected {count} / {max}',\n layoutHint: '2+ show as a carousel, 4 as a grid',\n searchPlaceholder: 'Search titles',\n loading: 'Loading posts…',\n noMore: 'No more posts to pick.',\n}\n","export default {\n empty: 'No posts selected.',\n}\n","export default {\n reviewFailed: 'We could not review your content, so it cannot be posted. Please try again shortly.',\n writeRestricted: 'Posting and commenting are temporarily restricted due to repeated content warnings.',\n}\n","export default {\n localHit: 'Expressions like “{hit}” aren’t allowed. Please rephrase.',\n localGeneric: 'This contains profanity, so it can’t be posted. Please rephrase.',\n categoryBlocked: 'This contains {category}, so it can’t be posted. Please edit it.',\n genericBlocked: 'This contains content that can’t be posted. Please edit it.',\n categories: {\n abuse: 'profanity or insults',\n spam: 'spam or advertising',\n adult: 'sexual or adult content',\n violence: 'violence or threats',\n other: 'inappropriate content',\n },\n}\n","export default {\n liftSoon: 'lifts soon',\n liftInHours: 'lifts in about {hours}h',\n liftInDays: 'lifts in about {days}d',\n liftInDaysHours: 'lifts in about {days}d {hours}h',\n}\n","export default {\n boardIdRequired: '[memi-board] boardId is required.',\n photoRequired: 'Please add a photo.',\n bodyRequired: 'Please enter some text or attach an image.',\n titleRequired: 'Please enter a title.',\n}\n","export default {\n notFound: 'User not found.',\n noName: 'No name',\n joined: 'Joined {time}',\n lastVisit: 'Last seen {time}',\n}\n","export default {\n imageOnly: 'Only image files can be selected.',\n nameRequired: 'Please enter a name.',\n saveFailed: 'Couldn’t save the profile.',\n title: 'Edit profile',\n changePhoto: 'Change photo',\n name: 'Name',\n bio: 'Bio',\n bioPlaceholder: 'Tell people about yourself',\n}\n","export default {\n failed: 'Couldn’t submit the report.',\n reported: 'Reported',\n title: 'Report post',\n done: 'Report received. Staff will review it.',\n reason: 'Reason',\n detailPlaceholder: 'Details (optional)',\n submit: 'Report',\n}\n","export default {\n staffOnly: 'Only staff can view reports.',\n loadFailed: 'Couldn’t load the list: {error}',\n empty: 'No pending reports.',\n untitled: 'Untitled post',\n author: 'by {name}',\n dismiss: 'Dismiss',\n confirm: 'Resolve',\n}\n","export default {\n reason: {\n spam: 'Spam / advertising',\n abuse: 'Abuse / hate / harassment',\n adult: 'Sexual content',\n illegal: 'Illegal content',\n other: 'Other',\n },\n fallbackLabel: 'Report',\n signInRequired: 'Please sign in.',\n cannotReportOwn: 'You cannot report your own post.',\n reasonRequired: 'Please select a reason.',\n detailTooLong: 'Details can be up to {max} characters.',\n}\n","export default {\n kind: {\n list: 'Post list',\n post: 'Posts',\n comments: 'Comments',\n },\n sort: {\n latest: 'Latest',\n likes: 'Most liked',\n },\n untitledPost: 'Post',\n view: {\n media: 'Media',\n list: 'List',\n },\n}\n","export default {\n defaultTitle: 'Section {n}',\n}\n","export default {\n allCategory: 'All',\n boardDescription: '{name} board',\n allDescription: 'Board — announcements and community news.',\n postFallbackTitle: 'Post | {site}',\n postFallbackDescription: 'Board',\n photo: 'Photo',\n postDescriptionFallback: 'Board post',\n listTitle: '{name} | {site}',\n listTitleAll: 'Board | {site}',\n listDescription: '{name} — catch up on the latest posts.',\n listDescriptionAll: 'Board — announcements and stories.',\n}\n","export default {\n managers: 'Assigned managers',\n loading: 'Loading settings…',\n noAccess: 'You don’t have access',\n notFound: {\n title: 'Board not found',\n checkAddress: 'Please check the address.',\n checkBoardAddress: 'Please check the board address.',\n },\n newBoard: {\n title: 'This board doesn’t exist yet',\n description: 'Fill in the details below and save to create it with this ID.',\n },\n noLabel: 'No label',\n option: {\n default: 'Standard',\n },\n id: {\n label: 'Category ID',\n help: 'Used in the URL and data',\n },\n writeRole: {\n label: 'Who can post',\n help: 'Minimum role required to post in this category',\n helpShort: 'Minimum role required to post',\n options: {\n user: 'Users and up',\n staff: 'Staff and up',\n admin: 'Admins only',\n },\n },\n commentWriteRole: {\n label: 'Who can comment',\n help: 'Minimum role required to comment in this category',\n helpShort: 'Minimum role required to comment',\n hiddenHelp: 'Comments on hidden boards don’t appear in the public feed, and only assigned staff can write them',\n hiddenFixed: 'Assigned staff only (fixed for hidden boards)',\n },\n staff: {\n label: 'Assigned staff',\n help: 'Only the selected staff can configure and manage this board. Leave empty for admins only',\n placeholder: 'Admins only (no staff assigned)',\n },\n label: {\n label: 'Display name',\n help: 'The name users see',\n },\n description: {\n label: 'Description',\n help: 'Shown at the top of the board and elsewhere',\n placeholder: 'A short description of this board (optional)',\n },\n visibility: {\n pending: 'Visibility change is incomplete. Save the same setting again to resume.',\n label: 'Visibility',\n help: 'Hidden boards don’t appear in the all-boards filter, and posts can only be read by admins, assigned staff, and their authors. Only assigned staff can comment',\n options: {\n public: { label: 'Visible', description: 'Shown in the full list and filters' },\n hidden: { label: 'Hidden', description: 'Journal or private. Only assigned staff can comment' },\n },\n },\n listView: {\n label: 'List view',\n help: 'How the post list is displayed',\n options: {\n dense: 'Compact',\n video: 'Video',\n },\n },\n editorType: {\n label: 'Post form',\n help: 'How posts are written',\n options: {\n default: 'Write a title and body',\n image: 'Add multiple photos and a cover photo',\n },\n },\n locale: {\n label: 'Board language',\n help: 'Leave empty to follow the site language. If set, this board always appears in that language.',\n auto: 'Auto (follow site language)',\n },\n autoTranslate: {\n help: 'Saving translates the name and description into 10 languages. Unchanged text is not translated again.',\n failed: 'Settings were saved, but translating into 10 languages failed. Save again to retry.',\n ready: 'The name and description are saved in 10 languages.',\n },\n action: {\n moveDown: 'Down',\n goToBoard: 'Go to board',\n deleteBoard: 'Delete board',\n create: 'Create',\n },\n newCategoryPlaceholder: 'New category name',\n deleteConfirm: 'Delete the “{label}” board?\\n\\nAll posts, comments, replies, inline images, and attachments on this board will be permanently deleted. This can’t be undone.',\n savedCategory: 'Saved the “{label}” category.',\n savedSettings: 'Board settings saved.',\n created: 'Board created.',\n error: {\n orderFailed: 'Couldn’t save the category order.',\n deleteFailed: 'Couldn’t delete the board and its data.',\n saveFailed: 'Couldn’t save the board settings.',\n deleteAllFailed: 'Couldn’t delete the board data.',\n },\n danger: {\n title: 'Danger zone',\n description: 'Permanently deletes all posts, comments, attachments, and category settings. Board users and admin roles are kept.',\n confirmLabel: 'Type “{phrase}” to confirm',\n phrase: 'delete board data',\n button: 'Delete all data',\n done: 'All board data has been deleted.',\n },\n}\n","export default {\n copied: 'Link copied',\n}\n","export default {\n withGoogle: 'Sign in with Google',\n withApple: 'Sign in with Apple',\n or: 'or',\n name: 'Name',\n email: 'Email',\n password: 'Password',\n signUp: 'Sign up',\n toSignUp: 'Don’t have an account? Sign up',\n toSignIn: 'Already have an account? Sign in',\n}\n","export default {\n tooLargeAfterCompress: 'The image is still larger than 5MB after compression. Please choose a smaller image.',\n sourceTooLarge: 'The original image must be {max}MB or smaller.',\n heicUnsupported: 'HEIC photos cannot be uploaded directly. Pick it from the Photos app or convert it to JPG, PNG, or WebP.',\n cannotOptimize: 'This image format cannot be optimized in the browser. Please convert it to JPG, PNG, or WebP.',\n imageOnly: 'Only image files can be uploaded.',\n canvasUnavailable: 'Canvas is not available',\n compressFailed: 'Compression failed',\n loadFailed: 'Failed to load image',\n}\n","export default {\n title: 'Try swiping left or right',\n description: 'Swipe left for the next post, right for the previous one.',\n}\n","export default {\n loadFailed: 'Couldn’t load the list: {error}',\n empty: 'No comments yet.',\n blinded: 'This comment was hidden by an admin.',\n likes: '{count} likes',\n}\n","export default {\n loadFailed: 'Couldn’t load the list: {error}',\n empty: 'No posts yet.',\n}\n","export default {\n changeRoleFailed: 'Couldn’t change the role.',\n loading: 'Loading users…',\n noPermission: {\n title: 'No permission',\n description: 'Only board admins can manage user roles.',\n },\n empty: 'No users have signed in to the board yet.',\n noName: 'No name',\n moderationWarnings: '{count} content warnings',\n}\n","export default {\n loginRequired: 'Sign in to use the AI writing assistant.',\n userMissing: 'Couldn’t verify your user info. Please try again.',\n dailyLimit: 'The AI writing assistant can be used up to {limit} times a day. Please try again in about {hours} hour(s).',\n contentRequired: 'Enter some content for the AI to work on first.',\n customRequired: 'Enter an instruction for how to rewrite it.',\n emptyResult: 'The AI couldn’t produce a result. Please try again.',\n translateEmpty: 'Enter a title or body to translate first.',\n translateTooLong: 'Posts longer than {limit} characters can’t be saved in 10 languages. Shorten it and try again.',\n translateIncomplete: 'Some languages came back empty. Please try again.',\n failed: 'The AI task failed. Please try again.',\n actions: {\n proofread: 'Check spelling',\n polish: 'Polish sentences',\n continue: 'Continue writing',\n summarize: 'Summarize',\n translateEn: 'Translate to English',\n translateKo: 'Translate to Korean',\n translateAll: 'Translate and save in 10 languages',\n title: 'Generate title from body',\n custom: 'Rewrite in a custom style…',\n },\n}\n","// 자동 생성 — scripts/gen-i18n-index.mjs\nimport attachments from './attachments'\nimport auth from './auth'\nimport authorMemo from './authorMemo'\nimport authorMenu from './authorMenu'\nimport avatarCropModal from './avatarCropModal'\nimport boardSettings from './boardSettings'\nimport boardUsers from './boardUsers'\nimport commentFeed from './commentFeed'\nimport commentForm from './commentForm'\nimport commentItem from './commentItem'\nimport commentList from './commentList'\nimport commentThread from './commentThread'\nimport comments from './comments'\nimport common from './common'\nimport detail from './detail'\nimport editor from './editor'\nimport footer from './footer'\nimport likes from './likes'\nimport list from './list'\nimport listViewSwitch from './listViewSwitch'\nimport miniComments from './miniComments'\nimport miniList from './miniList'\nimport miniPicker from './miniPicker'\nimport miniPost from './miniPost'\nimport moderation from './moderation'\nimport moderationPrompt from './moderationPrompt'\nimport moderationStrike from './moderationStrike'\nimport posts from './posts'\nimport profile from './profile'\nimport profileEditModal from './profileEditModal'\nimport reportButton from './reportButton'\nimport reportList from './reportList'\nimport reports from './reports'\nimport sectionUtil from './sectionUtil'\nimport sections from './sections'\nimport seo from './seo'\nimport settings from './settings'\nimport shareButton from './shareButton'\nimport signIn from './signIn'\nimport storage from './storage'\nimport swipeHint from './swipeHint'\nimport userCommentList from './userCommentList'\nimport userPostList from './userPostList'\nimport users from './users'\nimport writingAssistant from './writingAssistant'\n\nexport default {\n attachments,\n auth,\n authorMemo,\n authorMenu,\n avatarCropModal,\n boardSettings,\n boardUsers,\n commentFeed,\n commentForm,\n commentItem,\n commentList,\n commentThread,\n comments,\n common,\n detail,\n editor,\n footer,\n likes,\n list,\n listViewSwitch,\n miniComments,\n miniList,\n miniPicker,\n miniPost,\n moderation,\n moderationPrompt,\n moderationStrike,\n posts,\n profile,\n profileEditModal,\n reportButton,\n reportList,\n reports,\n sectionUtil,\n sections,\n seo,\n settings,\n shareButton,\n signIn,\n storage,\n swipeHint,\n userCommentList,\n userPostList,\n users,\n writingAssistant,\n}\n"],"mappings":"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"}
@@ -246,6 +246,10 @@ var e = {
246
246
  summarize: "Resumir brevemente",
247
247
  translateEn: "Traducir al inglés",
248
248
  translateKo: "Traducir al coreano",
249
+ translateAll: "Traducir y guardar en 10 idiomas",
250
+ translateSaved: "Guardado en 10 idiomas. Quien lee ve la traducción de su idioma.",
251
+ translatePending: "Las traducciones a 10 idiomas están listas. Se guardan con la publicación.",
252
+ translateEmpty: "Escribe primero un título o un texto para traducir.",
249
253
  title: "Generar título a partir del texto",
250
254
  custom: "Reescribir con un estilo personalizado…",
251
255
  failed: "La tarea de AI falló. Inténtalo de nuevo."
@@ -529,6 +533,11 @@ var e = {
529
533
  label: "Idioma del tablero",
530
534
  auto: "Automático (según el idioma del sitio)"
531
535
  },
536
+ autoTranslate: {
537
+ help: "Al guardar, el nombre y la descripción se traducen a 10 idiomas. Si el texto no cambia, no se vuelve a traducir.",
538
+ failed: "Los ajustes se guardaron, pero falló la traducción a 10 idiomas. Guarda de nuevo.",
539
+ ready: "El nombre y la descripción están guardados en 10 idiomas."
540
+ },
532
541
  action: {
533
542
  moveDown: "Bajar",
534
543
  goToBoard: "Ir al tablero",
@@ -603,6 +612,9 @@ var e = {
603
612
  contentRequired: "Primero escribe algo de contenido para que la AI trabaje.",
604
613
  customRequired: "Escribe una instrucción sobre cómo reescribirlo.",
605
614
  emptyResult: "La AI no pudo generar un resultado. Inténtalo de nuevo.",
615
+ translateEmpty: "Escribe primero un título o un texto para traducir.",
616
+ translateTooLong: "Los textos de más de {limit} caracteres no se pueden guardar en 10 idiomas. Acórtalo e inténtalo de nuevo.",
617
+ translateIncomplete: "Algunos idiomas volvieron vacíos. Inténtalo de nuevo.",
606
618
  failed: "La tarea de AI falló. Inténtalo de nuevo.",
607
619
  actions: {
608
620
  proofread: "Revisar ortografía",
@@ -611,6 +623,10 @@ var e = {
611
623
  summarize: "Resumir",
612
624
  translateEn: "Traducir al inglés",
613
625
  translateKo: "Traducir al coreano",
626
+ translateAll: "Traducir y guardar en 10 idiomas",
627
+ translateSaved: "Guardado en 10 idiomas. Quien lee ve la traducción de su idioma.",
628
+ translatePending: "Las traducciones a 10 idiomas están listas. Se guardan con la publicación.",
629
+ translateEmpty: "Escribe primero un título o un texto para traducir.",
614
630
  title: "Generar título a partir del texto",
615
631
  custom: "Reescribir con un estilo personalizado…"
616
632
  }
@@ -619,4 +635,4 @@ var e = {
619
635
  //#endregion
620
636
  export { e as default };
621
637
 
622
- //# sourceMappingURL=es-7JHjGVlM.js.map
638
+ //# sourceMappingURL=es-CGxYBYNH.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"es-CGxYBYNH.js","names":[],"sources":["../src/i18n/messages/es.ts"],"sourcesContent":["import type { MemiBoardMessages } from '../translate'\n\n/** 짧은 화면 문구만 번역한다. 빠진 키는 en → ko 순으로 폴백된다. */\nconst messages: MemiBoardMessages = {\n attachments: {\n attach: 'Adjuntar archivos ({count} / {max})',\n maxFiles: 'Puedes adjuntar hasta {max} archivos.',\n },\n auth: {\n writeRestricted: 'Publicar y comentar está restringido temporalmente por advertencias de contenido acumuladas.',\n strikeSuffix: ' (Advertencia {count}/{threshold})',\n strikeRestricted: ' Llegaste a {count} advertencias, así que publicar y comentar está restringido.',\n notInitialized: '[memi-board] Firebase Auth no está inicializado.',\n },\n authorMemo: {\n tooLong: 'Las notas pueden tener hasta {max} caracteres.',\n },\n authorMenu: {\n viewProfile: 'Ver perfil',\n viewPosts: 'Ver publicaciones',\n viewComments: 'Ver comentarios',\n memoAriaLabel: 'Nota sobre este autor',\n memoTitle: 'Nota privada',\n memoPlaceholder: 'Anota algo sobre este autor…',\n bad: 'Mal',\n good: 'Bien',\n },\n avatarCropModal: {\n title: 'Recortar foto de perfil',\n description: 'Se muestra en formato cuadrado (1:1). Ajusta el área.',\n confirm: 'Recortar y subir',\n },\n boardSettings: {\n signInRequired: 'Inicia sesión.',\n idAndNameRequired: 'Ingresa un ID y un nombre para el tablero.',\n deleteIdRequired: 'Se necesita el ID del tablero para eliminarlo.',\n nameRequired: 'Ingresa un nombre para el tablero.',\n },\n boardUsers: {\n unsupportedRole: 'Rol no compatible.',\n roleDescription: {\n admin: 'Administra los roles de usuario, la configuración del tablero y todo el contenido.',\n user: 'Puede escribir publicaciones y comentarios, y editar o eliminar solo su propio contenido.',\n },\n },\n commentFeed: {\n empty: 'Aún no hay comentarios.',\n emptyLiked: 'Aún no hay comentarios con Me gusta.',\n loadFailed: 'No se pudo cargar la lista: {error}',\n blinded: 'Un administrador ocultó este comentario.',\n },\n commentForm: {\n hiddenBoardDenied: 'Solo el personal asignado puede comentar en tableros ocultos.',\n denied: 'No tienes permiso para comentar en este tablero.',\n signInRequired: 'Inicia sesión.',\n writeRestricted: 'Publicar está restringido temporalmente por advertencias de contenido acumuladas.',\n moderationBlocked: 'Contiene contenido que no se puede publicar.',\n replyTo: 'Responder a {name}',\n placeholder: 'Escribe un comentario',\n submitReply: 'Responder',\n submit: 'Comentar',\n signInToComment: 'Inicia sesión para dejar un comentario.',\n },\n commentItem: {\n editRestricted: 'La edición de comentarios está restringida temporalmente.',\n moderationBlocked: 'Contiene contenido que no se puede publicar.',\n editFailed: 'No se pudo actualizar el comentario.',\n blindFailed: 'No se pudo cambiar el estado de ocultación.',\n likeFailed: 'No se pudo procesar el Me gusta.',\n blinded: 'Un administrador ocultó este comentario.',\n edit: 'Editar comentario',\n blind: 'Ocultar comentario',\n unblind: 'Mostrar comentario',\n delete: 'Eliminar comentario',\n },\n commentList: {\n loading: 'Cargando comentarios',\n empty: 'Aún no hay comentarios.',\n loadMore: 'Más comentarios',\n loadingMore: 'Cargando más comentarios',\n },\n commentThread: {\n deleteConfirm: '¿Eliminar este comentario?',\n deleteFailed: 'No se pudo eliminar el comentario.',\n hideReplies: 'Ocultar respuestas',\n showReplies: '{count} respuestas',\n loadMoreReplies: 'Más respuestas',\n },\n comments: {\n bodyRequired: 'Escribe un comentario.',\n bodyTooLong: 'Los comentarios pueden tener hasta {max} caracteres.',\n replyTargetNotFound: 'No se encontró el comentario al que respondes.',\n threadNotFound: 'No se encontró el hilo de comentarios.',\n hasRepliesCannotDelete: 'Por ahora no se pueden eliminar comentarios que tienen respuestas.',\n },\n common: {\n action: {\n cancel: 'Cancelar',\n save: 'Guardar',\n saved: 'Guardado',\n edit: 'Editar',\n delete: 'Eliminar',\n confirm: 'Aceptar',\n close: 'Cerrar',\n add: 'Agregar',\n more: 'Ver más',\n prev: 'Anterior',\n next: 'Siguiente',\n retry: 'Reintentar',\n reply: 'Responder',\n like: 'Me gusta',\n unlike: 'Ya no me gusta',\n share: 'Compartir',\n report: 'Reportar',\n signIn: 'Iniciar sesión',\n signOut: 'Cerrar sesión',\n write: 'Escribir',\n toTop: 'Arriba',\n },\n label: {\n anonymous: 'Anónimo',\n user: 'Usuario',\n image: 'Imagen',\n draft: 'Borrador',\n loading: 'Cargando…',\n },\n role: {\n admin: 'Administrador',\n staff: 'Personal',\n user: 'Usuario',\n },\n date: {\n justNow: 'Justo ahora',\n fewSecondsAgo: 'Hace unos segundos',\n checking: 'Verificando la hora',\n createdAt: 'Creado: {time}',\n updatedAt: 'Actualizado: {time}',\n },\n },\n detail: {\n deleteConfirm: '¿Eliminar esta publicación? No se puede deshacer.',\n notFound: 'No se encontró la publicación.',\n draftPreview: 'Vista previa sin publicar',\n draftNotice: 'Esta publicación aún no está publicada. Solo tú puedes verla hasta que la publiques.',\n publish: 'Publicar',\n backToList: 'Volver a la lista',\n postNav: 'Navegación de publicaciones',\n list: 'Lista',\n comments: 'Comentarios',\n },\n editor: {\n titlePlaceholder: 'Título',\n contentPlaceholder: 'Escribe algo… Escribe / para abrir el menú de bloques.',\n imageContentPlaceholder: 'Escribe algo…',\n tagsPlaceholder: 'Escribe una etiqueta y presiona Enter',\n skipModeration: 'Omitir filtro de groserías (admin)',\n submitEdit: 'Guardar cambios',\n submitNext: 'Siguiente: vista previa',\n apply: 'Aplicar',\n imageOptimizing: 'Optimizando y subiendo la imagen…',\n cover: {\n imageLink: 'Enlace de imagen',\n addPhoto: 'Agregar fotos',\n alt: 'Foto {n}',\n representative: 'Portada',\n setRepresentative: 'Usar de portada',\n setRepresentativeAria: 'Usar la foto {n} como portada',\n remove: 'Quitar foto',\n add: 'Agregar',\n uploading: 'Subiendo…',\n dropOrClick: 'Suelta fotos o haz clic para agregar',\n emptyHint: 'Selecciona varias · Elige la portada tras subir · Arrastra para reordenar',\n uploadTitle: 'Subir',\n },\n uploadFailed: 'Error al subir',\n aiAssistant: 'Asistente de escritura con AI',\n insertBlock: 'Insertar bloque',\n blockMenu: 'Menú de bloques',\n imageDialog: {\n title: 'Agregar imagen',\n chooseFile: 'Elegir imagen del dispositivo',\n orLink: 'o enlace de imagen',\n urlLabel: 'URL de la imagen',\n previewAlt: 'Vista previa de imagen externa',\n addLink: 'Agregar enlace',\n },\n customDialog: {\n title: 'Reescribir con un estilo personalizado',\n label: '¿Cómo quieres reescribirlo?',\n help: 'p. ej., en tono casual / en estilo formal / en viñetas concisas',\n placeholder: 'En tono casual',\n },\n aiPreview: {\n title: 'Revisar resultado de AI',\n currentTitle: 'Título actual',\n newTitle: 'Título nuevo',\n currentContent: 'Contenido actual',\n appendedContent: 'Contenido a agregar',\n before: 'Antes',\n after: 'Después',\n },\n menu: {\n ai: 'AI',\n aiContinue: 'Continuar con AI',\n style: 'Estilo',\n insert: 'Insertar',\n paragraph: 'Párrafo',\n heading1: 'Título 1',\n heading2: 'Título 2',\n heading3: 'Título 3',\n bulletList: 'Lista con viñetas',\n orderedList: 'Lista numerada',\n blockquote: 'Cita',\n codeBlock: 'Bloque de código',\n horizontalRule: 'Separador',\n image: 'Imagen',\n turnInto: 'Convertir en',\n resetFormatting: 'Restablecer formato',\n duplicate: 'Duplicar',\n moveUp: 'Subir',\n moveDown: 'Bajar',\n delete: 'Eliminar',\n },\n toolbar: {\n link: 'Enlace',\n image: 'Imagen',\n format: 'Formato',\n bold: 'Negrita',\n italic: 'Cursiva',\n underline: 'Subrayado',\n strike: 'Tachado',\n title: 'Título',\n heading: 'Encabezado',\n subheading: 'Subencabezado',\n body: 'Cuerpo',\n mono: 'Monoespaciado',\n bulletList: 'Lista con viñetas',\n orderedList: 'Lista numerada',\n blockquote: 'Cita en bloque',\n codeBlock: 'Bloque de código',\n horizontalRule: 'Separador',\n clearFormatting: 'Borrar formato',\n undo: 'Deshacer',\n redo: 'Rehacer',\n },\n ai: {\n proofread: 'Revisar ortografía',\n polish: 'Pulir redacción',\n continue: 'Seguir escribiendo',\n summarize: 'Resumir brevemente',\n translateEn: 'Traducir al inglés',\n translateKo: 'Traducir al coreano',\n translateAll: 'Traducir y guardar en 10 idiomas',\n translateSaved: 'Guardado en 10 idiomas. Quien lee ve la traducción de su idioma.',\n translatePending: 'Las traducciones a 10 idiomas están listas. Se guardan con la publicación.',\n translateEmpty: 'Escribe primero un título o un texto para traducir.',\n title: 'Generar título a partir del texto',\n custom: 'Reescribir con un estilo personalizado…',\n failed: 'La tarea de AI falló. Inténtalo de nuevo.',\n },\n youtubePrompt: 'Ingresa un enlace de YouTube.',\n errors: {\n coverMax: 'Puedes subir hasta {max} fotos.',\n imageUrlRequired: 'Ingresa una URL de imagen.',\n imageUrlInvalid: 'Ingresa una URL de imagen válida.',\n imageUrlHttps: 'Solo se permiten URL de imagen HTTPS.',\n imageUrlCredentials: 'No se permiten URL con datos de inicio de sesión.',\n imageTimeout: 'La imagen está tardando demasiado en cargar.',\n imageNotDisplayable: 'No se puede mostrar esta imagen.',\n editorNotReady: 'El editor no está listo. Inténtalo de nuevo.',\n imageLinkFailed: 'No se pudo agregar el enlace de imagen.',\n imageOnly: 'Solo se pueden subir archivos de imagen.',\n imageTooLarge: 'Las imágenes originales deben pesar {mb}MB o menos.',\n imageUploadFailed: 'No se pudo subir la imagen.',\n pasteAsFile: 'Pega o arrastra las fotos como archivos en el área de arriba.',\n postNotFound: 'No se encontró la publicación.',\n loadPermission: 'No tienes permiso para cargar esta publicación. Verifica que hayas iniciado sesión.',\n loadFailed: 'No se pudo cargar la publicación: {message}',\n titleRequired: 'Ingresa un título.',\n photoRequired: 'Sube al menos una foto.',\n bodyRequired: 'Escribe algo de texto o adjunta una imagen.',\n signInRequired: 'Debes iniciar sesión.',\n boardMissing: 'No se especificó ningún tablero.',\n writeRestricted: 'Publicar y comentar está restringido temporalmente por advertencias de contenido acumuladas.',\n moderationBlocked: 'Contiene contenido que no se puede publicar.',\n },\n hint: {\n reviewing: 'Revisando el contenido…',\n saving: 'Guardando…',\n },\n },\n footer: {\n info: {\n title: 'Información del tablero',\n about: 'Acerca de este tablero',\n history: 'Historial de versiones',\n },\n stack: {\n ui: 'Interfaz y experiencia',\n data: 'Datos e inicio de sesión',\n writing: 'Escritura y comodidad',\n },\n },\n likes: {\n signInRequired: 'Inicia sesión.',\n commentNotFound: 'No se encontró el comentario.',\n },\n list: {\n settings: 'Configuración',\n loadFailed: 'No se pudo cargar la lista: {error}',\n empty: 'Aún no hay publicaciones.',\n photo: 'Foto',\n likeCount: 'Me gusta {count}',\n info: {\n title: 'Información del tablero',\n about: 'Acerca de este tablero',\n history: 'Historial de versiones',\n },\n stack: {\n framework: 'Framework y lenguaje',\n ui: 'UI y estilos',\n backend: 'Backend y datos',\n },\n tech: {\n nuxt: 'Framework SSR basado en Vue',\n vue: 'Composition API · script setup',\n typescript: 'Datos y componentes con tipos seguros',\n nuxtUi: 'UI de tablero, formularios y modales',\n tailwind: 'Estilos adaptables · claro/oscuro',\n lucide: 'Íconos ligeros y coherentes',\n dayjs: 'Fechas legibles y tiempos relativos',\n firestore: 'Base de datos en tiempo real para publicaciones y comentarios',\n auth: 'Inicio de sesión y permisos seguros',\n storage: 'Almacenamiento de imágenes y adjuntos',\n vuefire: 'Conexión en tiempo real entre Nuxt y Firebase',\n },\n },\n listViewSwitch: {\n default: 'Normal',\n dense: 'Compacta',\n video: 'Video',\n },\n miniComments: {\n empty: 'Aún no hay comentarios.',\n blinded: 'Un administrador ocultó este comentario.',\n },\n miniList: {\n empty: 'Aún no hay publicaciones.',\n },\n miniPicker: {\n selectedCount: 'Seleccionadas {count} / {max}',\n layoutHint: 'Con 2 o más se muestra como carrusel; con 4, como cuadrícula',\n searchPlaceholder: 'Buscar títulos',\n loading: 'Cargando publicaciones…',\n noMore: 'No hay más publicaciones para elegir.',\n },\n miniPost: {\n empty: 'No hay publicaciones seleccionadas.',\n },\n moderation: {\n writeRestricted: 'Publicar y comentar está restringido temporalmente por advertencias de contenido acumuladas.',\n },\n moderationPrompt: {\n localHit: 'No se permiten expresiones como “{hit}”. Reformula el texto.',\n localGeneric: 'Contiene groserías, así que no se puede publicar. Reformula el texto.',\n genericBlocked: 'Contiene contenido que no se puede publicar. Edítalo.',\n categories: {\n abuse: 'groserías o insultos',\n spam: 'spam o publicidad',\n adult: 'contenido sexual o para adultos',\n violence: 'violencia o amenazas',\n other: 'contenido inapropiado',\n },\n },\n moderationStrike: {\n liftSoon: 'se levanta pronto',\n liftInHours: 'se levanta en unas {hours} h',\n liftInDays: 'se levanta en unos {days} d',\n liftInDaysHours: 'se levanta en unos {days} d {hours} h',\n },\n posts: {\n boardIdRequired: '[memi-board] Se requiere boardId.',\n photoRequired: 'Agrega una foto.',\n bodyRequired: 'Escribe algo de texto o adjunta una imagen.',\n titleRequired: 'Ingresa un título.',\n },\n profile: {\n notFound: 'No se encontró el usuario.',\n noName: 'Sin nombre',\n joined: 'Se unió {time}',\n lastVisit: 'Última visita {time}',\n },\n profileEditModal: {\n imageOnly: 'Solo puedes seleccionar archivos de imagen.',\n nameRequired: 'Ingresa un nombre.',\n saveFailed: 'No se pudo guardar el perfil.',\n title: 'Editar perfil',\n changePhoto: 'Cambiar foto',\n name: 'Nombre',\n bio: 'Biografía',\n bioPlaceholder: 'Cuéntales a los demás sobre ti',\n },\n reportButton: {\n failed: 'No se pudo enviar el reporte.',\n reported: 'Reportado',\n title: 'Reportar publicación',\n done: 'Recibimos tu reporte. El personal lo revisará.',\n reason: 'Motivo',\n detailPlaceholder: 'Detalles (opcional)',\n submit: 'Reportar',\n },\n reportList: {\n staffOnly: 'Solo el personal puede ver los reportes.',\n loadFailed: 'No se pudo cargar la lista: {error}',\n empty: 'No hay reportes pendientes.',\n untitled: 'Publicación sin título',\n author: 'por {name}',\n dismiss: 'Descartar',\n confirm: 'Resolver',\n },\n reports: {\n reason: {\n spam: 'Spam / publicidad',\n abuse: 'Insultos / odio / acoso',\n adult: 'Contenido sexual',\n illegal: 'Contenido ilegal',\n other: 'Otro',\n },\n fallbackLabel: 'Reporte',\n signInRequired: 'Inicia sesión.',\n cannotReportOwn: 'No puedes reportar tu propia publicación.',\n reasonRequired: 'Selecciona un motivo.',\n detailTooLong: 'Los detalles pueden tener hasta {max} caracteres.',\n },\n sectionUtil: {\n kind: {\n list: 'Lista de publicaciones',\n post: 'Publicaciones',\n comments: 'Comentarios',\n },\n sort: {\n latest: 'Más recientes',\n likes: 'Más gustados',\n },\n untitledPost: 'Publicación',\n view: {\n media: 'Multimedia',\n list: 'Lista',\n },\n },\n sections: {\n defaultTitle: 'Sección {n}',\n },\n seo: {\n allCategory: 'Todo',\n boardDescription: 'Tablero {name}',\n allDescription: 'Tablero: anuncios y novedades de la comunidad.',\n postFallbackTitle: 'Publicación | {site}',\n postFallbackDescription: 'Tablero',\n photo: 'Foto',\n postDescriptionFallback: 'Publicación del tablero',\n listTitle: '{name} | {site}',\n listTitleAll: 'Tablero | {site}',\n listDescription: '{name}: ponte al día con las últimas publicaciones.',\n listDescriptionAll: 'Tablero: anuncios e historias.',\n },\n settings: {\n loading: 'Cargando configuración…',\n noAccess: 'No tienes acceso',\n notFound: {\n title: 'No se encontró el tablero',\n checkAddress: 'Verifica la dirección.',\n checkBoardAddress: 'Verifica la dirección del tablero.',\n },\n newBoard: {\n title: 'Este tablero aún no existe',\n description: 'Completa los datos de abajo y guarda para crearlo con este ID.',\n },\n noLabel: 'Sin etiqueta',\n option: {\n default: 'Estándar',\n },\n id: {\n label: 'ID de categoría',\n help: 'Se usa en la URL y en los datos',\n },\n writeRole: {\n label: 'Quién puede publicar',\n help: 'Rol mínimo necesario para publicar en esta categoría',\n helpShort: 'Rol mínimo necesario para publicar',\n options: {\n user: 'Usuarios o superior',\n staff: 'Personal o superior',\n admin: 'Solo administradores',\n },\n },\n commentWriteRole: {\n label: 'Quién puede comentar',\n help: 'Rol mínimo necesario para comentar en esta categoría',\n helpShort: 'Rol mínimo necesario para comentar',\n hiddenFixed: 'Solo personal asignado (fijo en tableros ocultos)',\n },\n staff: {\n label: 'Personal asignado',\n help: 'Solo el personal seleccionado puede configurar y administrar este tablero. Déjalo vacío para que sea solo de administradores',\n placeholder: 'Solo administradores (sin personal asignado)',\n },\n label: {\n label: 'Nombre visible',\n help: 'El nombre que ven los usuarios',\n },\n description: {\n label: 'Descripción',\n help: 'Se muestra en la parte superior del tablero y en otros lugares',\n placeholder: 'Una breve descripción de este tablero (opcional)',\n },\n visibility: {\n label: 'Visibilidad',\n options: {\n public: {\n label: 'Visible',\n description: 'Se muestra en la lista completa y en los filtros',\n },\n hidden: {\n label: 'Oculto',\n description: 'Diario o privado. Solo el personal asignado puede comentar',\n },\n },\n },\n listView: {\n label: 'Vista de lista',\n help: 'Cómo se muestra la lista de publicaciones',\n options: {\n dense: 'Compacta',\n video: 'Video',\n },\n },\n editorType: {\n label: 'Formulario de publicación',\n help: 'Cómo se escriben las publicaciones',\n options: {\n default: 'Escribir un título y un texto',\n image: 'Agregar varias fotos y una foto de portada',\n },\n },\n locale: {\n label: 'Idioma del tablero',\n auto: 'Automático (según el idioma del sitio)',\n },\n autoTranslate: {\n help: 'Al guardar, el nombre y la descripción se traducen a 10 idiomas. Si el texto no cambia, no se vuelve a traducir.',\n failed: 'Los ajustes se guardaron, pero falló la traducción a 10 idiomas. Guarda de nuevo.',\n ready: 'El nombre y la descripción están guardados en 10 idiomas.',\n },\n action: {\n moveDown: 'Bajar',\n goToBoard: 'Ir al tablero',\n deleteBoard: 'Eliminar tablero',\n create: 'Crear',\n },\n newCategoryPlaceholder: 'Nombre de la nueva categoría',\n savedCategory: 'Se guardó la categoría “{label}”.',\n savedSettings: 'Se guardó la configuración del tablero.',\n created: 'Tablero creado.',\n error: {\n orderFailed: 'No se pudo guardar el orden de las categorías.',\n deleteFailed: 'No se pudo eliminar el tablero ni sus datos.',\n saveFailed: 'No se pudo guardar la configuración del tablero.',\n deleteAllFailed: 'No se pudieron eliminar los datos del tablero.',\n },\n danger: {\n title: 'Zona de peligro',\n confirmLabel: 'Escribe “{phrase}” para confirmar',\n phrase: 'eliminar datos del tablero',\n button: 'Eliminar todos los datos',\n done: 'Se eliminaron todos los datos del tablero.',\n },\n },\n shareButton: {\n copied: 'Enlace copiado',\n },\n signIn: {\n withGoogle: 'Iniciar sesión con Google',\n withApple: 'Iniciar sesión con Apple',\n or: 'o',\n name: 'Nombre',\n email: 'Correo electrónico',\n password: 'Contraseña',\n signUp: 'Registrarse',\n toSignUp: '¿No tienes cuenta? Regístrate',\n toSignIn: '¿Ya tienes cuenta? Inicia sesión',\n },\n storage: {\n sourceTooLarge: 'La imagen original debe pesar {max}MB o menos.',\n imageOnly: 'Solo se pueden subir archivos de imagen.',\n canvasUnavailable: 'Canvas no está disponible',\n compressFailed: 'Error de compresión',\n loadFailed: 'No se pudo cargar la imagen',\n },\n swipeHint: {\n title: 'Prueba deslizar a la izquierda o a la derecha',\n description: 'Desliza a la izquierda para ver la siguiente publicación y a la derecha para la anterior.',\n },\n userCommentList: {\n loadFailed: 'No se pudo cargar la lista: {error}',\n empty: 'Aún no hay comentarios.',\n blinded: 'Un administrador ocultó este comentario.',\n likes: '{count} Me gusta',\n },\n userPostList: {\n loadFailed: 'No se pudo cargar la lista: {error}',\n empty: 'Aún no hay publicaciones.',\n },\n users: {\n changeRoleFailed: 'No se pudo cambiar el rol.',\n loading: 'Cargando usuarios…',\n noPermission: {\n title: 'Sin permiso',\n description: 'Solo los administradores del tablero pueden gestionar los roles de usuario.',\n },\n empty: 'Ningún usuario ha iniciado sesión en el tablero todavía.',\n noName: 'Sin nombre',\n moderationWarnings: '{count} advertencias de contenido',\n },\n writingAssistant: {\n loginRequired: 'Inicia sesión para usar el asistente de escritura con AI.',\n userMissing: 'No se pudo verificar tu información de usuario. Inténtalo de nuevo.',\n contentRequired: 'Primero escribe algo de contenido para que la AI trabaje.',\n customRequired: 'Escribe una instrucción sobre cómo reescribirlo.',\n emptyResult: 'La AI no pudo generar un resultado. Inténtalo de nuevo.',\n translateEmpty: 'Escribe primero un título o un texto para traducir.',\n translateTooLong: 'Los textos de más de {limit} caracteres no se pueden guardar en 10 idiomas. Acórtalo e inténtalo de nuevo.',\n translateIncomplete: 'Algunos idiomas volvieron vacíos. Inténtalo de nuevo.',\n failed: 'La tarea de AI falló. Inténtalo de nuevo.',\n actions: {\n proofread: 'Revisar ortografía',\n polish: 'Pulir frases',\n continue: 'Seguir escribiendo',\n summarize: 'Resumir',\n translateEn: 'Traducir al inglés',\n translateKo: 'Traducir al coreano',\n translateAll: 'Traducir y guardar en 10 idiomas',\n translateSaved: 'Guardado en 10 idiomas. Quien lee ve la traducción de su idioma.',\n translatePending: 'Las traducciones a 10 idiomas están listas. Se guardan con la publicación.',\n translateEmpty: 'Escribe primero un título o un texto para traducir.',\n title: 'Generar título a partir del texto',\n custom: 'Reescribir con un estilo personalizado…',\n },\n },\n}\n\nexport default messages\n"],"mappings":"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"}
@@ -246,6 +246,10 @@ var e = {
246
246
  summarize: "Résumer brièvement",
247
247
  translateEn: "Traduire en anglais",
248
248
  translateKo: "Traduire en coréen",
249
+ translateAll: "Traduire et enregistrer en 10 langues",
250
+ translateSaved: "Enregistré en 10 langues. Les lecteurs voient la traduction de leur langue.",
251
+ translatePending: "Les traductions en 10 langues sont prêtes. Elles sont enregistrées avec le message.",
252
+ translateEmpty: "Saisissez d’abord un titre ou un texte à traduire.",
249
253
  title: "Générer un titre à partir du texte",
250
254
  custom: "Réécrire dans un style personnalisé…",
251
255
  failed: "La tâche AI a échoué. Veuillez réessayer."
@@ -529,6 +533,11 @@ var e = {
529
533
  label: "Langue du forum",
530
534
  auto: "Automatique (langue du site)"
531
535
  },
536
+ autoTranslate: {
537
+ help: "L’enregistrement traduit le nom et la description en 10 langues. Un texte inchangé n’est pas retraduit.",
538
+ failed: "Les réglages sont enregistrés, mais la traduction en 10 langues a échoué. Enregistrez à nouveau.",
539
+ ready: "Le nom et la description sont enregistrés en 10 langues."
540
+ },
532
541
  action: {
533
542
  moveDown: "Descendre",
534
543
  goToBoard: "Aller au forum",
@@ -603,6 +612,9 @@ var e = {
603
612
  contentRequired: "Saisissez d’abord un texte à traiter par l’AI.",
604
613
  customRequired: "Saisissez une consigne de réécriture.",
605
614
  emptyResult: "L’AI n’a pas pu produire de résultat. Veuillez réessayer.",
615
+ translateEmpty: "Saisissez d’abord un titre ou un texte à traduire.",
616
+ translateTooLong: "Un texte de plus de {limit} caractères ne peut pas être enregistré en 10 langues. Raccourcissez-le et réessayez.",
617
+ translateIncomplete: "Certaines langues sont revenues vides. Veuillez réessayer.",
606
618
  failed: "La tâche AI a échoué. Veuillez réessayer.",
607
619
  actions: {
608
620
  proofread: "Vérifier l’orthographe",
@@ -611,6 +623,10 @@ var e = {
611
623
  summarize: "Résumer brièvement",
612
624
  translateEn: "Traduire en anglais",
613
625
  translateKo: "Traduire en coréen",
626
+ translateAll: "Traduire et enregistrer en 10 langues",
627
+ translateSaved: "Enregistré en 10 langues. Les lecteurs voient la traduction de leur langue.",
628
+ translatePending: "Les traductions en 10 langues sont prêtes. Elles sont enregistrées avec le message.",
629
+ translateEmpty: "Saisissez d’abord un titre ou un texte à traduire.",
614
630
  title: "Générer un titre à partir du texte",
615
631
  custom: "Réécrire dans un style personnalisé…"
616
632
  }
@@ -619,4 +635,4 @@ var e = {
619
635
  //#endregion
620
636
  export { e as default };
621
637
 
622
- //# sourceMappingURL=fr-C3NCMNoy.js.map
638
+ //# sourceMappingURL=fr-DeP9Swrv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fr-DeP9Swrv.js","names":[],"sources":["../src/i18n/messages/fr.ts"],"sourcesContent":["import type { MemiBoardMessages } from '../translate'\n\n/** 짧은 화면 문구만 번역한다. 빠진 키는 en → ko 순으로 폴백된다. */\nconst messages: MemiBoardMessages = {\n attachments: {\n attach: 'Joindre des fichiers ({count} / {max})',\n maxFiles: 'Vous pouvez joindre jusqu’à {max} fichiers.',\n },\n auth: {\n writeRestricted: 'En raison d’avertissements répétés, la publication et les commentaires sont temporairement restreints.',\n strikeSuffix: ' (avertissement {count}/{threshold})',\n strikeRestricted: ' Vous avez atteint {count} avertissements : la publication et les commentaires sont restreints.',\n notInitialized: '[memi-board] Firebase Auth n’est pas initialisé.',\n },\n authorMemo: {\n tooLong: 'Les notes sont limitées à {max} caractères.',\n },\n authorMenu: {\n viewProfile: 'Voir le profil',\n viewPosts: 'Voir les publications',\n viewComments: 'Voir les commentaires',\n memoAriaLabel: 'Note sur cet auteur',\n memoTitle: 'Note privée',\n memoPlaceholder: 'Notez quelque chose sur cet auteur…',\n bad: 'Mauvais',\n good: 'Bon',\n },\n avatarCropModal: {\n title: 'Recadrer la photo de profil',\n description: 'Affichée au format carré (1:1). Ajustez la zone.',\n confirm: 'Recadrer et importer',\n },\n boardSettings: {\n signInRequired: 'Veuillez vous connecter.',\n idAndNameRequired: 'Veuillez saisir un ID et un nom de forum.',\n deleteIdRequired: 'Un ID de forum est requis pour la suppression.',\n nameRequired: 'Veuillez saisir un nom de forum.',\n },\n boardUsers: {\n unsupportedRole: 'Rôle non pris en charge.',\n roleDescription: {\n admin: 'Gère les rôles, les paramètres du forum et tout le contenu.',\n user: 'Peut publier et commenter, et modifier ou supprimer uniquement son propre contenu.',\n },\n },\n commentFeed: {\n empty: 'Aucun commentaire pour l’instant.',\n emptyLiked: 'Aucun commentaire aimé pour l’instant.',\n loadFailed: 'Impossible de charger la liste : {error}',\n blinded: 'Ce commentaire a été masqué par un administrateur.',\n },\n commentForm: {\n hiddenBoardDenied: 'Seule l’équipe attitrée peut commenter dans les forums masqués.',\n denied: 'Vous n’avez pas l’autorisation de commenter dans ce forum.',\n signInRequired: 'Veuillez vous connecter.',\n writeRestricted: 'En raison d’avertissements répétés, la publication et les commentaires sont temporairement restreints.',\n moderationBlocked: 'Ce contenu ne peut pas être publié.',\n replyTo: 'Répondre à {name}',\n placeholder: 'Écrire un commentaire',\n submitReply: 'Répondre',\n submit: 'Commenter',\n signInToComment: 'Connectez-vous pour laisser un commentaire.',\n },\n commentItem: {\n editRestricted: 'La modification des commentaires est temporairement restreinte.',\n moderationBlocked: 'Ce contenu ne peut pas être publié.',\n editFailed: 'Impossible de modifier le commentaire.',\n blindFailed: 'Impossible de modifier l’état masqué.',\n likeFailed: 'Impossible de traiter le j’aime.',\n blinded: 'Ce commentaire a été masqué par un administrateur.',\n edit: 'Modifier le commentaire',\n blind: 'Masquer le commentaire',\n unblind: 'Afficher le commentaire',\n delete: 'Supprimer le commentaire',\n },\n commentList: {\n loading: 'Chargement des commentaires',\n empty: 'Aucun commentaire pour l’instant.',\n loadMore: 'Plus de commentaires',\n loadingMore: 'Chargement d’autres commentaires',\n },\n commentThread: {\n deleteConfirm: 'Supprimer ce commentaire ?',\n deleteFailed: 'Impossible de supprimer le commentaire.',\n hideReplies: 'Masquer les réponses',\n showReplies: '{count} réponses',\n loadMoreReplies: 'Plus de réponses',\n },\n comments: {\n bodyRequired: 'Veuillez saisir un commentaire.',\n bodyTooLong: 'Les commentaires sont limités à {max} caractères.',\n replyTargetNotFound: 'Le commentaire auquel vous répondez est introuvable.',\n threadNotFound: 'Fil de commentaires introuvable.',\n hasRepliesCannotDelete: 'Les commentaires ayant des réponses ne peuvent pas être supprimés pour le moment.',\n },\n common: {\n action: {\n cancel: 'Annuler',\n save: 'Enregistrer',\n saved: 'Enregistré',\n edit: 'Modifier',\n delete: 'Supprimer',\n confirm: 'OK',\n close: 'Fermer',\n add: 'Ajouter',\n more: 'Plus',\n prev: 'Précédent',\n next: 'Suivant',\n retry: 'Réessayer',\n reply: 'Répondre',\n like: 'J’aime',\n unlike: 'Je n’aime plus',\n share: 'Partager',\n report: 'Signaler',\n signIn: 'Se connecter',\n signOut: 'Se déconnecter',\n write: 'Écrire',\n toTop: 'Haut',\n },\n label: {\n anonymous: 'Anonyme',\n user: 'Utilisateur',\n image: 'Image',\n draft: 'Brouillon',\n loading: 'Chargement…',\n },\n role: {\n admin: 'Admin',\n staff: 'Équipe',\n user: 'Utilisateur',\n },\n date: {\n justNow: 'À l’instant',\n fewSecondsAgo: 'Il y a quelques secondes',\n checking: 'Vérification de l’heure',\n createdAt: 'Créé : {time}',\n updatedAt: 'Modifié : {time}',\n },\n },\n detail: {\n deleteConfirm: 'Supprimer cette publication ? Cette action est irréversible.',\n notFound: 'Publication introuvable.',\n draftPreview: 'Aperçu non publié',\n draftNotice: 'Pas encore publiée. Vous seul pouvez la voir jusqu’à sa publication.',\n publish: 'Publier',\n backToList: 'Retour à la liste',\n postNav: 'Navigation entre publications',\n list: 'Liste',\n comments: 'Commentaires',\n },\n editor: {\n titlePlaceholder: 'Titre',\n contentPlaceholder: 'Écrivez quelque chose… Tapez / pour ouvrir le menu des blocs.',\n imageContentPlaceholder: 'Écrivez quelque chose…',\n tagsPlaceholder: 'Saisissez un tag puis Entrée',\n skipModeration: 'Ignorer le filtre de grossièretés (admin)',\n submitEdit: 'Enregistrer les modifications',\n submitNext: 'Suivant : aperçu',\n apply: 'Appliquer',\n imageOptimizing: 'Optimisation et importation de l’image…',\n cover: {\n imageLink: 'Lien d’image',\n addPhoto: 'Ajouter des photos',\n alt: 'Photo {n}',\n representative: 'Couverture',\n setRepresentative: 'Couverture',\n setRepresentativeAria: 'Définir la photo {n} comme couverture',\n remove: 'Retirer la photo',\n add: 'Ajouter',\n uploading: 'Importation…',\n dropOrClick: 'Déposez des photos ou cliquez pour ajouter',\n emptyHint: 'Sélection multiple · Couverture au choix après import · Glissez pour réordonner',\n uploadTitle: 'Importer',\n },\n uploadFailed: 'Échec de l’importation',\n aiAssistant: 'Assistant d’écriture AI',\n insertBlock: 'Insérer un bloc',\n blockMenu: 'Menu des blocs',\n imageDialog: {\n title: 'Ajouter une image',\n chooseFile: 'Choisir une image sur l’appareil',\n orLink: 'ou lien d’image',\n urlLabel: 'URL de l’image',\n previewAlt: 'Aperçu de l’image externe',\n addLink: 'Ajouter le lien',\n },\n customDialog: {\n title: 'Réécrire dans un style personnalisé',\n label: 'Comment réécrire le texte ?',\n help: 'ex. : sur un ton décontracté / dans un style soutenu / en points concis',\n placeholder: 'Sur un ton décontracté',\n },\n aiPreview: {\n title: 'Vérifier le résultat de l’AI',\n currentTitle: 'Titre actuel',\n newTitle: 'Nouveau titre',\n currentContent: 'Contenu actuel',\n appendedContent: 'Contenu à ajouter',\n before: 'Avant',\n after: 'Après',\n },\n menu: {\n ai: 'AI',\n aiContinue: 'Continuer avec l’AI',\n style: 'Style',\n insert: 'Insérer',\n paragraph: 'Paragraphe',\n heading1: 'Titre 1',\n heading2: 'Titre 2',\n heading3: 'Titre 3',\n bulletList: 'Liste à puces',\n orderedList: 'Liste numérotée',\n blockquote: 'Citation',\n codeBlock: 'Bloc de code',\n horizontalRule: 'Séparateur',\n image: 'Image',\n turnInto: 'Transformer en',\n resetFormatting: 'Réinitialiser la mise en forme',\n duplicate: 'Dupliquer',\n moveUp: 'Monter',\n moveDown: 'Descendre',\n delete: 'Supprimer',\n },\n toolbar: {\n link: 'Lien',\n image: 'Image',\n format: 'Format',\n bold: 'Gras',\n italic: 'Italique',\n underline: 'Souligné',\n strike: 'Barré',\n title: 'Titre',\n heading: 'En-tête',\n subheading: 'Sous-titre',\n body: 'Corps du texte',\n mono: 'Monospace',\n bulletList: 'Liste à puces',\n orderedList: 'Liste numérotée',\n blockquote: 'Citation en bloc',\n codeBlock: 'Bloc de code',\n horizontalRule: 'Séparateur',\n clearFormatting: 'Effacer la mise en forme',\n undo: 'Annuler',\n redo: 'Rétablir',\n },\n ai: {\n proofread: 'Vérifier l’orthographe',\n polish: 'Améliorer le texte',\n continue: 'Continuer l’écriture',\n summarize: 'Résumer brièvement',\n translateEn: 'Traduire en anglais',\n translateKo: 'Traduire en coréen',\n translateAll: 'Traduire et enregistrer en 10 langues',\n translateSaved: 'Enregistré en 10 langues. Les lecteurs voient la traduction de leur langue.',\n translatePending: 'Les traductions en 10 langues sont prêtes. Elles sont enregistrées avec le message.',\n translateEmpty: 'Saisissez d’abord un titre ou un texte à traduire.',\n title: 'Générer un titre à partir du texte',\n custom: 'Réécrire dans un style personnalisé…',\n failed: 'La tâche AI a échoué. Veuillez réessayer.',\n },\n youtubePrompt: 'Saisissez un lien YouTube.',\n errors: {\n coverMax: 'Vous pouvez importer jusqu’à {max} photos.',\n imageUrlRequired: 'Saisissez l’URL d’une image.',\n imageUrlInvalid: 'Saisissez une URL d’image valide.',\n imageUrlHttps: 'Seules les URL d’images en HTTPS sont autorisées.',\n imageUrlCredentials: 'Les URL contenant des identifiants ne sont pas autorisées.',\n imageTimeout: 'Le chargement de l’image prend trop de temps.',\n imageNotDisplayable: 'Cette image ne peut pas être affichée.',\n editorNotReady: 'L’éditeur n’est pas prêt. Veuillez réessayer.',\n imageLinkFailed: 'Impossible d’ajouter le lien d’image.',\n imageOnly: 'Seuls les fichiers image peuvent être importés.',\n imageTooLarge: 'Les images originales ne doivent pas dépasser {mb} Mo.',\n imageUploadFailed: 'Échec de l’importation de l’image.',\n pasteAsFile: 'Collez ou glissez les photos sous forme de fichiers dans la zone ci-dessus.',\n postNotFound: 'Publication introuvable.',\n loadPermission: 'Vous n’avez pas l’autorisation de charger cette publication. Vérifiez que vous êtes connecté.',\n loadFailed: 'Impossible de charger la publication : {message}',\n titleRequired: 'Saisissez un titre.',\n photoRequired: 'Importez au moins une photo.',\n bodyRequired: 'Saisissez du texte ou joignez une image.',\n signInRequired: 'Connexion requise.',\n boardMissing: 'Aucun forum indiqué.',\n writeRestricted: 'En raison d’avertissements répétés, la publication et les commentaires sont temporairement restreints.',\n moderationBlocked: 'Ce contenu ne peut pas être publié.',\n },\n hint: {\n reviewing: 'Vérification du contenu…',\n saving: 'Enregistrement…',\n },\n },\n footer: {\n info: {\n title: 'Infos du forum',\n about: 'À propos de ce forum',\n history: 'Historique des versions',\n },\n stack: {\n ui: 'Interface et expérience',\n data: 'Données et connexion',\n writing: 'Écriture et confort',\n },\n },\n likes: {\n signInRequired: 'Veuillez vous connecter.',\n commentNotFound: 'Commentaire introuvable.',\n },\n list: {\n settings: 'Paramètres',\n loadFailed: 'Impossible de charger la liste : {error}',\n empty: 'Aucune publication pour l’instant.',\n photo: 'Photo',\n likeCount: 'J’aime {count}',\n info: {\n title: 'Infos du forum',\n about: 'À propos de ce forum',\n history: 'Historique des versions',\n },\n stack: {\n framework: 'Framework et langage',\n ui: 'UI et style',\n backend: 'Backend et données',\n },\n tech: {\n nuxt: 'Framework SSR basé sur Vue',\n vue: 'Composition API · script setup',\n typescript: 'Données et composants typés',\n nuxtUi: 'UI de forum, formulaires et modales',\n tailwind: 'Responsive · styles clair/sombre',\n lucide: 'Icônes légères et cohérentes',\n dayjs: 'Dates lisibles et temps relatifs',\n firestore: 'Base de données temps réel pour publications et commentaires',\n auth: 'Connexion et autorisations sécurisées',\n storage: 'Stockage des images et pièces jointes',\n vuefire: 'Liaison temps réel Nuxt–Firebase',\n },\n },\n listViewSwitch: {\n default: 'Standard',\n dense: 'Compact',\n video: 'Vidéo',\n },\n miniComments: {\n empty: 'Aucun commentaire pour l’instant.',\n blinded: 'Ce commentaire a été masqué par un administrateur.',\n },\n miniList: {\n empty: 'Aucune publication pour l’instant.',\n },\n miniPicker: {\n selectedCount: 'Sélectionnées {count} / {max}',\n layoutHint: 'Carrousel à partir de 2, grille pour 4',\n searchPlaceholder: 'Rechercher un titre',\n loading: 'Chargement des publications…',\n noMore: 'Plus aucune publication à sélectionner.',\n },\n miniPost: {\n empty: 'Aucune publication sélectionnée.',\n },\n moderation: {\n writeRestricted: 'En raison d’avertissements répétés, la publication et les commentaires sont temporairement restreints.',\n },\n moderationPrompt: {\n localHit: 'Les expressions comme « {hit} » ne sont pas autorisées. Veuillez reformuler.',\n localGeneric: 'Ce contenu contient des grossièretés et ne peut pas être publié. Veuillez reformuler.',\n genericBlocked: 'Ce contenu ne peut pas être publié. Veuillez le modifier.',\n categories: {\n abuse: 'grossièretés ou insultes',\n spam: 'spam ou publicité',\n adult: 'contenu sexuel ou pour adultes',\n violence: 'violence ou menaces',\n other: 'contenu inapproprié',\n },\n },\n moderationStrike: {\n liftSoon: 'levée bientôt',\n liftInHours: 'levée dans environ {hours} h',\n liftInDays: 'levée dans environ {days} j',\n liftInDaysHours: 'levée dans environ {days} j {hours} h',\n },\n posts: {\n boardIdRequired: '[memi-board] boardId est requis.',\n photoRequired: 'Veuillez ajouter une photo.',\n bodyRequired: 'Veuillez saisir du texte ou joindre une image.',\n titleRequired: 'Veuillez saisir un titre.',\n },\n profile: {\n notFound: 'Utilisateur introuvable.',\n noName: 'Sans nom',\n joined: 'Inscrit {time}',\n lastVisit: 'Vu {time}',\n },\n profileEditModal: {\n imageOnly: 'Seuls les fichiers image peuvent être sélectionnés.',\n nameRequired: 'Veuillez saisir un nom.',\n saveFailed: 'Impossible d’enregistrer le profil.',\n title: 'Modifier le profil',\n changePhoto: 'Changer la photo',\n name: 'Nom',\n bio: 'Bio',\n bioPlaceholder: 'Présentez-vous',\n },\n reportButton: {\n failed: 'Impossible d’envoyer le signalement.',\n reported: 'Signalé',\n title: 'Signaler la publication',\n done: 'Signalement reçu. L’équipe va l’examiner.',\n reason: 'Motif',\n detailPlaceholder: 'Détails (facultatif)',\n submit: 'Signaler',\n },\n reportList: {\n staffOnly: 'Seule l’équipe peut consulter les signalements.',\n loadFailed: 'Impossible de charger la liste : {error}',\n empty: 'Aucun signalement en attente.',\n untitled: 'Publication sans titre',\n author: 'par {name}',\n dismiss: 'Rejeter',\n confirm: 'Traiter',\n },\n reports: {\n reason: {\n spam: 'Spam / publicité',\n abuse: 'Insultes / haine / harcèlement',\n adult: 'Contenu sexuel',\n illegal: 'Contenu illégal',\n other: 'Autre',\n },\n fallbackLabel: 'Signalement',\n signInRequired: 'Veuillez vous connecter.',\n cannotReportOwn: 'Vous ne pouvez pas signaler votre propre publication.',\n reasonRequired: 'Veuillez choisir un motif.',\n detailTooLong: 'Les détails sont limités à {max} caractères.',\n },\n sectionUtil: {\n kind: {\n list: 'Liste de publications',\n post: 'Publications',\n comments: 'Commentaires',\n },\n sort: {\n latest: 'Plus récentes',\n likes: 'Plus aimées',\n },\n untitledPost: 'Publication',\n view: {\n media: 'Médias',\n list: 'Liste',\n },\n },\n sections: {\n defaultTitle: 'Section {n}',\n },\n seo: {\n allCategory: 'Tout',\n boardDescription: 'Forum {name}',\n allDescription: 'Forum – annonces et actualités de la communauté.',\n postFallbackTitle: 'Publication | {site}',\n postFallbackDescription: 'Forum',\n photo: 'Photo',\n postDescriptionFallback: 'Publication du forum',\n listTitle: '{name} | {site}',\n listTitleAll: 'Forum | {site}',\n listDescription: '{name} – les dernières publications.',\n listDescriptionAll: 'Forum – annonces et discussions.',\n },\n settings: {\n loading: 'Chargement des paramètres…',\n noAccess: 'Accès refusé',\n notFound: {\n title: 'Forum introuvable',\n checkAddress: 'Veuillez vérifier l’adresse.',\n checkBoardAddress: 'Veuillez vérifier l’adresse du forum.',\n },\n newBoard: {\n title: 'Ce forum n’existe pas encore',\n description: 'Remplissez les informations ci-dessous et enregistrez pour le créer avec cet ID.',\n },\n noLabel: 'Sans libellé',\n option: {\n default: 'Standard',\n },\n id: {\n label: 'ID de catégorie',\n help: 'Utilisé dans l’URL et les données',\n },\n writeRole: {\n label: 'Qui peut publier',\n help: 'Rôle minimum pour publier dans cette catégorie',\n helpShort: 'Rôle minimum pour publier',\n options: {\n user: 'Utilisateurs et plus',\n staff: 'Équipe et plus',\n admin: 'Admins uniquement',\n },\n },\n commentWriteRole: {\n label: 'Qui peut commenter',\n help: 'Rôle minimum pour commenter dans cette catégorie',\n helpShort: 'Rôle minimum pour commenter',\n hiddenFixed: 'Équipe attitrée uniquement (fixe pour les forums masqués)',\n },\n staff: {\n label: 'Équipe attitrée',\n help: 'Seuls les membres sélectionnés peuvent configurer et gérer ce forum. Laissez vide pour les admins uniquement',\n placeholder: 'Admins uniquement (aucune équipe attitrée)',\n },\n label: {\n label: 'Nom affiché',\n help: 'Le nom visible par les utilisateurs',\n },\n description: {\n label: 'Description',\n help: 'Affichée en haut du forum, entre autres',\n placeholder: 'Brève description de ce forum (facultatif)',\n },\n visibility: {\n label: 'Visibilité',\n options: {\n public: {\n label: 'Visible',\n description: 'Affiché dans la liste complète et les filtres',\n },\n hidden: {\n label: 'Masqué',\n description: 'Journal ou privé. Seule l’équipe attitrée peut commenter',\n },\n },\n },\n listView: {\n label: 'Vue de liste',\n help: 'Affichage de la liste des publications',\n options: {\n dense: 'Compact',\n video: 'Vidéo',\n },\n },\n editorType: {\n label: 'Formulaire de publication',\n help: 'Mode de rédaction des publications',\n options: {\n default: 'Rédiger un titre et un texte',\n image: 'Ajouter plusieurs photos et une couverture',\n },\n },\n locale: {\n label: 'Langue du forum',\n auto: 'Automatique (langue du site)',\n },\n autoTranslate: {\n help: 'L’enregistrement traduit le nom et la description en 10 langues. Un texte inchangé n’est pas retraduit.',\n failed: 'Les réglages sont enregistrés, mais la traduction en 10 langues a échoué. Enregistrez à nouveau.',\n ready: 'Le nom et la description sont enregistrés en 10 langues.',\n },\n action: {\n moveDown: 'Descendre',\n goToBoard: 'Aller au forum',\n deleteBoard: 'Supprimer le forum',\n create: 'Créer',\n },\n newCategoryPlaceholder: 'Nom de la nouvelle catégorie',\n savedCategory: 'Catégorie « {label} » enregistrée.',\n savedSettings: 'Paramètres du forum enregistrés.',\n created: 'Forum créé.',\n error: {\n orderFailed: 'Impossible d’enregistrer l’ordre des catégories.',\n deleteFailed: 'Impossible de supprimer le forum et ses données.',\n saveFailed: 'Impossible d’enregistrer les paramètres du forum.',\n deleteAllFailed: 'Impossible de supprimer les données du forum.',\n },\n danger: {\n title: 'Zone de danger',\n confirmLabel: 'Saisissez « {phrase} » pour confirmer',\n phrase: 'supprimer les données du forum',\n button: 'Supprimer toutes les données',\n done: 'Toutes les données du forum ont été supprimées.',\n },\n },\n shareButton: {\n copied: 'Lien copié',\n },\n signIn: {\n withGoogle: 'Se connecter avec Google',\n withApple: 'Se connecter avec Apple',\n or: 'ou',\n name: 'Nom',\n email: 'E-mail',\n password: 'Mot de passe',\n signUp: 'S’inscrire',\n toSignUp: 'Pas encore de compte ? S’inscrire',\n toSignIn: 'Déjà un compte ? Se connecter',\n },\n storage: {\n sourceTooLarge: 'L’image originale ne doit pas dépasser {max} Mo.',\n imageOnly: 'Seuls les fichiers image peuvent être importés.',\n canvasUnavailable: 'Canvas n’est pas disponible',\n compressFailed: 'Échec de la compression',\n loadFailed: 'Échec du chargement de l’image',\n },\n swipeHint: {\n title: 'Balayez vers la gauche ou la droite',\n description: 'Balayez vers la gauche pour la publication suivante, vers la droite pour la précédente.',\n },\n userCommentList: {\n loadFailed: 'Impossible de charger la liste : {error}',\n empty: 'Aucun commentaire pour l’instant.',\n blinded: 'Ce commentaire a été masqué par un administrateur.',\n likes: '{count} j’aime',\n },\n userPostList: {\n loadFailed: 'Impossible de charger la liste : {error}',\n empty: 'Aucune publication pour l’instant.',\n },\n users: {\n changeRoleFailed: 'Impossible de modifier le rôle.',\n loading: 'Chargement des utilisateurs…',\n noPermission: {\n title: 'Aucune autorisation',\n description: 'Seuls les admins du forum peuvent gérer les rôles des utilisateurs.',\n },\n empty: 'Aucun utilisateur ne s’est encore connecté au forum.',\n noName: 'Sans nom',\n moderationWarnings: '{count} avertissements de contenu',\n },\n writingAssistant: {\n loginRequired: 'Connectez-vous pour utiliser l’assistant d’écriture AI.',\n userMissing: 'Impossible de vérifier vos informations. Veuillez réessayer.',\n contentRequired: 'Saisissez d’abord un texte à traiter par l’AI.',\n customRequired: 'Saisissez une consigne de réécriture.',\n emptyResult: 'L’AI n’a pas pu produire de résultat. Veuillez réessayer.',\n translateEmpty: 'Saisissez d’abord un titre ou un texte à traduire.',\n translateTooLong: 'Un texte de plus de {limit} caractères ne peut pas être enregistré en 10 langues. Raccourcissez-le et réessayez.',\n translateIncomplete: 'Certaines langues sont revenues vides. Veuillez réessayer.',\n failed: 'La tâche AI a échoué. Veuillez réessayer.',\n actions: {\n proofread: 'Vérifier l’orthographe',\n polish: 'Améliorer le texte',\n continue: 'Continuer l’écriture',\n summarize: 'Résumer brièvement',\n translateEn: 'Traduire en anglais',\n translateKo: 'Traduire en coréen',\n translateAll: 'Traduire et enregistrer en 10 langues',\n translateSaved: 'Enregistré en 10 langues. Les lecteurs voient la traduction de leur langue.',\n translatePending: 'Les traductions en 10 langues sont prêtes. Elles sont enregistrées avec le message.',\n translateEmpty: 'Saisissez d’abord un titre ou un texte à traduire.',\n title: 'Générer un titre à partir du texte',\n custom: 'Réécrire dans un style personnalisé…',\n },\n },\n}\n\nexport default messages\n"],"mappings":"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"}
@@ -246,6 +246,10 @@ var e = {
246
246
  summarize: "Ringkas singkat",
247
247
  translateEn: "Terjemahkan ke bahasa Inggris",
248
248
  translateKo: "Terjemahkan ke bahasa Korea",
249
+ translateAll: "Terjemahkan dan simpan dalam 10 bahasa",
250
+ translateSaved: "Disimpan dalam 10 bahasa. Pembaca melihat terjemahan bahasanya.",
251
+ translatePending: "Terjemahan 10 bahasa sudah siap. Terjemahan ikut tersimpan saat Anda menyimpan tulisan.",
252
+ translateEmpty: "Masukkan judul atau isi yang akan diterjemahkan terlebih dahulu.",
249
253
  title: "Buat judul dari isi",
250
254
  custom: "Tulis ulang dengan gaya kustom…",
251
255
  failed: "Tugas AI gagal. Silakan coba lagi."
@@ -529,6 +533,11 @@ var e = {
529
533
  label: "Bahasa papan",
530
534
  auto: "Otomatis (ikuti bahasa situs)"
531
535
  },
536
+ autoTranslate: {
537
+ help: "Saat disimpan, nama dan deskripsi diterjemahkan ke 10 bahasa. Teks yang tidak berubah tidak diterjemahkan lagi.",
538
+ failed: "Pengaturan tersimpan, tetapi terjemahan ke 10 bahasa gagal. Simpan lagi.",
539
+ ready: "Nama dan deskripsi tersimpan dalam 10 bahasa."
540
+ },
532
541
  action: {
533
542
  moveDown: "Turun",
534
543
  goToBoard: "Buka papan",
@@ -603,6 +612,9 @@ var e = {
603
612
  contentRequired: "Masukkan konten terlebih dahulu untuk diolah AI.",
604
613
  customRequired: "Masukkan instruksi cara menulis ulang.",
605
614
  emptyResult: "AI tidak dapat menghasilkan hasil. Silakan coba lagi.",
615
+ translateEmpty: "Masukkan judul atau isi yang akan diterjemahkan terlebih dahulu.",
616
+ translateTooLong: "Teks lebih dari {limit} karakter tidak dapat disimpan dalam 10 bahasa. Persingkat lalu coba lagi.",
617
+ translateIncomplete: "Beberapa bahasa kembali kosong. Silakan coba lagi.",
606
618
  failed: "Tugas AI gagal. Silakan coba lagi.",
607
619
  actions: {
608
620
  proofread: "Periksa ejaan",
@@ -611,6 +623,10 @@ var e = {
611
623
  summarize: "Ringkas",
612
624
  translateEn: "Terjemahkan ke bahasa Inggris",
613
625
  translateKo: "Terjemahkan ke bahasa Korea",
626
+ translateAll: "Terjemahkan dan simpan dalam 10 bahasa",
627
+ translateSaved: "Disimpan dalam 10 bahasa. Pembaca melihat terjemahan bahasanya.",
628
+ translatePending: "Terjemahan 10 bahasa sudah siap. Terjemahan ikut tersimpan saat Anda menyimpan tulisan.",
629
+ translateEmpty: "Masukkan judul atau isi yang akan diterjemahkan terlebih dahulu.",
614
630
  title: "Buat judul dari isi",
615
631
  custom: "Tulis ulang dengan gaya kustom…"
616
632
  }
@@ -619,4 +635,4 @@ var e = {
619
635
  //#endregion
620
636
  export { e as default };
621
637
 
622
- //# sourceMappingURL=id-C8hCAMPJ.js.map
638
+ //# sourceMappingURL=id-BIUlVuq8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id-BIUlVuq8.js","names":[],"sources":["../src/i18n/messages/id.ts"],"sourcesContent":["import type { MemiBoardMessages } from '../translate'\n\n/** 짧은 화면 문구만 번역한다. 빠진 키는 en → ko 순으로 폴백된다. */\nconst messages: MemiBoardMessages = {\n attachments: {\n attach: 'Lampirkan file ({count} / {max})',\n maxFiles: 'Anda dapat melampirkan hingga {max} file.',\n },\n auth: {\n writeRestricted: 'Membuat postingan dan komentar dibatasi sementara karena peringatan konten berulang.',\n strikeSuffix: ' (Peringatan {count}/{threshold})',\n strikeRestricted: ' Setelah {count} peringatan, membuat postingan dan komentar akan dibatasi.',\n notInitialized: '[memi-board] Firebase Auth belum diinisialisasi.',\n },\n authorMemo: {\n tooLong: 'Catatan maksimal {max} karakter.',\n },\n authorMenu: {\n viewProfile: 'Lihat profil',\n viewPosts: 'Lihat postingan',\n viewComments: 'Lihat komentar',\n memoAriaLabel: 'Catatan tentang penulis ini',\n memoTitle: 'Catatan pribadi',\n memoPlaceholder: 'Tulis sesuatu tentang penulis ini…',\n bad: 'Buruk',\n good: 'Baik',\n },\n avatarCropModal: {\n title: 'Pangkas foto profil',\n description: 'Ditampilkan sebagai persegi (1:1). Sesuaikan areanya.',\n confirm: 'Pangkas dan unggah',\n },\n boardSettings: {\n signInRequired: 'Silakan masuk.',\n idAndNameRequired: 'Masukkan ID dan nama papan.',\n deleteIdRequired: 'ID papan diperlukan untuk menghapus.',\n nameRequired: 'Masukkan nama papan.',\n },\n boardUsers: {\n unsupportedRole: 'Peran tidak didukung.',\n roleDescription: {\n admin: 'Mengelola peran pengguna, pengaturan papan, dan semua konten.',\n user: 'Dapat menulis postingan dan komentar, serta mengedit atau menghapus konten miliknya sendiri.',\n },\n },\n commentFeed: {\n empty: 'Belum ada komentar.',\n emptyLiked: 'Belum ada komentar yang disukai.',\n loadFailed: 'Gagal memuat daftar: {error}',\n blinded: 'Komentar ini disembunyikan oleh admin.',\n },\n commentForm: {\n hiddenBoardDenied: 'Hanya staf yang ditugaskan yang dapat berkomentar di papan tersembunyi.',\n denied: 'Anda tidak memiliki izin untuk berkomentar di papan ini.',\n signInRequired: 'Silakan masuk.',\n writeRestricted: 'Membuat postingan dibatasi sementara karena peringatan konten berulang.',\n moderationBlocked: 'Berisi konten yang tidak dapat diposting.',\n replyTo: 'Balas {name}',\n placeholder: 'Tulis komentar',\n submitReply: 'Balas',\n submit: 'Kirim',\n signInToComment: 'Masuk untuk menulis komentar.',\n },\n commentItem: {\n editRestricted: 'Mengedit komentar dibatasi sementara.',\n moderationBlocked: 'Berisi konten yang tidak dapat diposting.',\n editFailed: 'Gagal memperbarui komentar.',\n blindFailed: 'Gagal mengubah status sembunyi.',\n likeFailed: 'Gagal memproses suka.',\n blinded: 'Komentar ini disembunyikan oleh admin.',\n edit: 'Edit komentar',\n blind: 'Sembunyikan komentar',\n unblind: 'Tampilkan komentar',\n delete: 'Hapus komentar',\n },\n commentList: {\n loading: 'Memuat komentar',\n empty: 'Belum ada komentar.',\n loadMore: 'Komentar lainnya',\n loadingMore: 'Memuat komentar lainnya',\n },\n commentThread: {\n deleteConfirm: 'Hapus komentar ini?',\n deleteFailed: 'Gagal menghapus komentar.',\n hideReplies: 'Sembunyikan balasan',\n showReplies: '{count} balasan',\n loadMoreReplies: 'Balasan lainnya',\n },\n comments: {\n bodyRequired: 'Masukkan komentar.',\n bodyTooLong: 'Komentar maksimal {max} karakter.',\n replyTargetNotFound: 'Komentar yang Anda balas tidak ditemukan.',\n threadNotFound: 'Utas komentar tidak ditemukan.',\n hasRepliesCannotDelete: 'Komentar yang memiliki balasan tidak dapat dihapus saat ini.',\n },\n common: {\n action: {\n cancel: 'Batal',\n save: 'Simpan',\n saved: 'Tersimpan',\n edit: 'Edit',\n delete: 'Hapus',\n confirm: 'OK',\n close: 'Tutup',\n add: 'Tambah',\n more: 'Lainnya',\n prev: 'Sebelumnya',\n next: 'Berikutnya',\n retry: 'Coba lagi',\n reply: 'Balas',\n like: 'Suka',\n unlike: 'Batal suka',\n share: 'Bagikan',\n report: 'Laporkan',\n signIn: 'Masuk',\n signOut: 'Keluar',\n write: 'Tulis',\n toTop: 'Ke atas',\n },\n label: {\n anonymous: 'Anonim',\n user: 'Pengguna',\n image: 'Gambar',\n draft: 'Draf',\n loading: 'Memuat…',\n },\n role: {\n admin: 'Admin',\n staff: 'Staf',\n user: 'Pengguna',\n },\n date: {\n justNow: 'Baru saja',\n fewSecondsAgo: 'Beberapa detik lalu',\n checking: 'Memeriksa waktu',\n createdAt: 'Dibuat: {time}',\n updatedAt: 'Diperbarui: {time}',\n },\n },\n detail: {\n deleteConfirm: 'Hapus postingan ini? Tindakan ini tidak dapat dibatalkan.',\n notFound: 'Postingan tidak ditemukan.',\n draftPreview: 'Pratinjau belum terbit',\n draftNotice: 'Postingan ini belum diterbitkan. Hanya Anda yang dapat melihatnya hingga diterbitkan.',\n publish: 'Terbitkan',\n backToList: 'Kembali ke daftar',\n postNav: 'Navigasi postingan',\n list: 'Daftar',\n comments: 'Komentar',\n },\n editor: {\n titlePlaceholder: 'Judul',\n contentPlaceholder: 'Tulis sesuatu… Ketik / untuk membuka menu blok.',\n imageContentPlaceholder: 'Tulis sesuatu…',\n tagsPlaceholder: 'Ketik tag lalu tekan Enter',\n skipModeration: 'Lewati filter kata kasar (admin)',\n submitEdit: 'Simpan perubahan',\n submitNext: 'Berikutnya: Pratinjau',\n apply: 'Terapkan',\n imageOptimizing: 'Mengoptimalkan dan mengunggah gambar…',\n cover: {\n imageLink: 'Tautan gambar',\n addPhoto: 'Tambah foto',\n alt: 'Foto {n}',\n representative: 'Sampul',\n setRepresentative: 'Jadikan sampul',\n setRepresentativeAria: 'Jadikan foto {n} sebagai sampul',\n remove: 'Hapus foto',\n add: 'Tambah',\n uploading: 'Mengunggah…',\n dropOrClick: 'Letakkan foto atau klik untuk menambah',\n emptyHint: 'Bisa pilih beberapa · Pilih sampul setelah diunggah · Seret untuk mengurutkan',\n uploadTitle: 'Unggah',\n },\n uploadFailed: 'Gagal mengunggah',\n aiAssistant: 'Asisten menulis AI',\n insertBlock: 'Sisipkan blok',\n blockMenu: 'Menu blok',\n imageDialog: {\n title: 'Tambah gambar',\n chooseFile: 'Pilih gambar dari perangkat',\n orLink: 'atau tautan gambar',\n urlLabel: 'URL gambar',\n previewAlt: 'Pratinjau gambar eksternal',\n addLink: 'Tambah tautan',\n },\n customDialog: {\n title: 'Tulis ulang dengan gaya kustom',\n label: 'Ingin ditulis ulang seperti apa?',\n help: 'mis. dengan nada santai / dengan gaya formal / sebagai poin-poin ringkas',\n placeholder: 'Dengan nada santai',\n },\n aiPreview: {\n title: 'Tinjau hasil AI',\n currentTitle: 'Judul saat ini',\n newTitle: 'Judul baru',\n currentContent: 'Konten saat ini',\n appendedContent: 'Konten yang ditambahkan',\n before: 'Sebelum',\n after: 'Sesudah',\n },\n menu: {\n ai: 'AI',\n aiContinue: 'Lanjutkan dengan AI',\n style: 'Gaya',\n insert: 'Sisipkan',\n paragraph: 'Paragraf',\n heading1: 'Judul 1',\n heading2: 'Judul 2',\n heading3: 'Judul 3',\n bulletList: 'Daftar berpoin',\n orderedList: 'Daftar bernomor',\n blockquote: 'Kutipan',\n codeBlock: 'Blok kode',\n horizontalRule: 'Pembatas',\n image: 'Gambar',\n turnInto: 'Ubah menjadi',\n resetFormatting: 'Atur ulang format',\n duplicate: 'Duplikat',\n moveUp: 'Pindah ke atas',\n moveDown: 'Pindah ke bawah',\n delete: 'Hapus',\n },\n toolbar: {\n link: 'Tautan',\n image: 'Gambar',\n format: 'Format',\n bold: 'Tebal',\n italic: 'Miring',\n underline: 'Garis bawah',\n strike: 'Coret',\n title: 'Judul',\n heading: 'Judul bagian',\n subheading: 'Subjudul',\n body: 'Isi',\n mono: 'Monospace',\n bulletList: 'Daftar berpoin',\n orderedList: 'Daftar bernomor',\n blockquote: 'Kutipan blok',\n codeBlock: 'Blok kode',\n horizontalRule: 'Pembatas',\n clearFormatting: 'Hapus format',\n undo: 'Urungkan',\n redo: 'Ulangi',\n },\n ai: {\n proofread: 'Periksa ejaan',\n polish: 'Perbaiki tulisan',\n continue: 'Lanjutkan tulisan',\n summarize: 'Ringkas singkat',\n translateEn: 'Terjemahkan ke bahasa Inggris',\n translateKo: 'Terjemahkan ke bahasa Korea',\n translateAll: 'Terjemahkan dan simpan dalam 10 bahasa',\n translateSaved: 'Disimpan dalam 10 bahasa. Pembaca melihat terjemahan bahasanya.',\n translatePending: 'Terjemahan 10 bahasa sudah siap. Terjemahan ikut tersimpan saat Anda menyimpan tulisan.',\n translateEmpty: 'Masukkan judul atau isi yang akan diterjemahkan terlebih dahulu.',\n title: 'Buat judul dari isi',\n custom: 'Tulis ulang dengan gaya kustom…',\n failed: 'Tugas AI gagal. Silakan coba lagi.',\n },\n youtubePrompt: 'Masukkan tautan YouTube.',\n errors: {\n coverMax: 'Anda dapat mengunggah hingga {max} foto.',\n imageUrlRequired: 'Masukkan URL gambar.',\n imageUrlInvalid: 'Masukkan URL gambar yang valid.',\n imageUrlHttps: 'Hanya URL gambar HTTPS yang diizinkan.',\n imageUrlCredentials: 'URL yang berisi kredensial login tidak diizinkan.',\n imageTimeout: 'Gambar terlalu lama dimuat.',\n imageNotDisplayable: 'Gambar ini tidak dapat ditampilkan.',\n editorNotReady: 'Editor belum siap. Silakan coba lagi.',\n imageLinkFailed: 'Gagal menambahkan tautan gambar.',\n imageOnly: 'Hanya file gambar yang dapat diunggah.',\n imageTooLarge: 'Gambar asli maksimal {mb}MB.',\n imageUploadFailed: 'Gagal mengunggah gambar.',\n pasteAsFile: 'Tempel atau seret foto sebagai file ke area di atas.',\n postNotFound: 'Postingan tidak ditemukan.',\n loadPermission: 'Anda tidak memiliki izin untuk memuat postingan ini. Pastikan Anda sudah masuk.',\n loadFailed: 'Gagal memuat postingan: {message}',\n titleRequired: 'Masukkan judul.',\n photoRequired: 'Unggah minimal satu foto.',\n bodyRequired: 'Tulis teks atau lampirkan gambar.',\n signInRequired: 'Harus masuk terlebih dahulu.',\n boardMissing: 'Papan belum ditentukan.',\n writeRestricted: 'Membuat postingan dan komentar dibatasi sementara karena peringatan konten berulang.',\n moderationBlocked: 'Berisi konten yang tidak dapat diposting.',\n },\n hint: {\n reviewing: 'Meninjau konten…',\n saving: 'Menyimpan…',\n },\n },\n footer: {\n info: {\n title: 'Info papan',\n about: 'Tentang papan ini',\n history: 'Riwayat versi',\n },\n stack: {\n ui: 'Antarmuka & pengalaman',\n data: 'Data & login',\n writing: 'Menulis & kemudahan',\n },\n },\n likes: {\n signInRequired: 'Silakan masuk.',\n commentNotFound: 'Komentar tidak ditemukan.',\n },\n list: {\n settings: 'Pengaturan',\n loadFailed: 'Gagal memuat daftar: {error}',\n empty: 'Belum ada postingan.',\n photo: 'Foto',\n likeCount: 'Suka {count}',\n info: {\n title: 'Info papan',\n about: 'Tentang papan ini',\n history: 'Riwayat versi',\n },\n stack: {\n framework: 'Framework & bahasa',\n ui: 'UI & gaya',\n backend: 'Backend & data',\n },\n tech: {\n nuxt: 'Framework SSR berbasis Vue',\n vue: 'Composition API · script setup',\n typescript: 'Tipe data dan komponen yang aman',\n nuxtUi: 'UI papan, formulir, dan modal',\n tailwind: 'Responsif · gaya terang/gelap',\n lucide: 'Ikon ringan dan konsisten',\n dayjs: 'Tanggal dan waktu relatif yang mudah dibaca',\n firestore: 'DB real-time untuk postingan dan komentar',\n auth: 'Login dan izin yang aman',\n storage: 'Penyimpanan gambar dan lampiran',\n vuefire: 'Koneksi real-time Nuxt–Firebase',\n },\n },\n listViewSwitch: {\n default: 'Default',\n dense: 'Ringkas',\n video: 'Video',\n },\n miniComments: {\n empty: 'Belum ada komentar.',\n blinded: 'Komentar ini disembunyikan oleh admin.',\n },\n miniList: {\n empty: 'Belum ada postingan.',\n },\n miniPicker: {\n selectedCount: 'Dipilih {count} / {max}',\n layoutHint: '2+ tampil sebagai carousel, 4 sebagai grid',\n searchPlaceholder: 'Cari judul',\n loading: 'Memuat postingan…',\n noMore: 'Tidak ada postingan lain untuk dipilih.',\n },\n miniPost: {\n empty: 'Belum ada postingan yang dipilih.',\n },\n moderation: {\n writeRestricted: 'Membuat postingan dan komentar dibatasi sementara karena peringatan konten berulang.',\n },\n moderationPrompt: {\n localHit: 'Ungkapan seperti “{hit}” tidak diizinkan. Silakan ubah kata-katanya.',\n localGeneric: 'Berisi kata kasar sehingga tidak dapat diposting. Silakan ubah kata-katanya.',\n genericBlocked: 'Berisi konten yang tidak dapat diposting. Silakan edit.',\n categories: {\n abuse: 'kata kasar atau hinaan',\n spam: 'spam atau iklan',\n adult: 'konten seksual atau dewasa',\n violence: 'kekerasan atau ancaman',\n other: 'konten tidak pantas',\n },\n },\n moderationStrike: {\n liftSoon: 'segera dicabut',\n liftInHours: 'dicabut dalam sekitar {hours} jam',\n liftInDays: 'dicabut dalam sekitar {days} hari',\n liftInDaysHours: 'dicabut dalam sekitar {days} hari {hours} jam',\n },\n posts: {\n boardIdRequired: '[memi-board] boardId wajib diisi.',\n photoRequired: 'Tambahkan foto.',\n bodyRequired: 'Masukkan teks atau lampirkan gambar.',\n titleRequired: 'Masukkan judul.',\n },\n profile: {\n notFound: 'Pengguna tidak ditemukan.',\n noName: 'Tanpa nama',\n joined: 'Bergabung {time}',\n lastVisit: 'Terakhir dilihat {time}',\n },\n profileEditModal: {\n imageOnly: 'Hanya file gambar yang dapat dipilih.',\n nameRequired: 'Masukkan nama.',\n saveFailed: 'Gagal menyimpan profil.',\n title: 'Edit profil',\n changePhoto: 'Ganti foto',\n name: 'Nama',\n bio: 'Bio',\n bioPlaceholder: 'Ceritakan tentang diri Anda',\n },\n reportButton: {\n failed: 'Gagal mengirim laporan.',\n reported: 'Dilaporkan',\n title: 'Laporkan postingan',\n done: 'Laporan diterima. Staf akan meninjaunya.',\n reason: 'Alasan',\n detailPlaceholder: 'Detail (opsional)',\n submit: 'Laporkan',\n },\n reportList: {\n staffOnly: 'Hanya staf yang dapat melihat laporan.',\n loadFailed: 'Gagal memuat daftar: {error}',\n empty: 'Tidak ada laporan yang tertunda.',\n untitled: 'Postingan tanpa judul',\n author: 'oleh {name}',\n dismiss: 'Tolak',\n confirm: 'Selesaikan',\n },\n reports: {\n reason: {\n spam: 'Spam / iklan',\n abuse: 'Kata kasar / kebencian / pelecehan',\n adult: 'Konten seksual',\n illegal: 'Konten ilegal',\n other: 'Lainnya',\n },\n fallbackLabel: 'Laporan',\n signInRequired: 'Silakan masuk.',\n cannotReportOwn: 'Anda tidak dapat melaporkan postingan sendiri.',\n reasonRequired: 'Pilih alasan.',\n detailTooLong: 'Detail maksimal {max} karakter.',\n },\n sectionUtil: {\n kind: {\n list: 'Daftar postingan',\n post: 'Postingan',\n comments: 'Komentar',\n },\n sort: {\n latest: 'Terbaru',\n likes: 'Paling disukai',\n },\n untitledPost: 'Postingan',\n view: {\n media: 'Media',\n list: 'Daftar',\n },\n },\n sections: {\n defaultTitle: 'Bagian {n}',\n },\n seo: {\n allCategory: 'Semua',\n boardDescription: 'Papan {name}',\n allDescription: 'Papan — pengumuman dan kabar komunitas.',\n postFallbackTitle: 'Postingan | {site}',\n postFallbackDescription: 'Papan',\n photo: 'Foto',\n postDescriptionFallback: 'Postingan papan',\n listTitle: '{name} | {site}',\n listTitleAll: 'Papan | {site}',\n listDescription: '{name} — ikuti postingan terbaru.',\n listDescriptionAll: 'Papan — pengumuman dan cerita.',\n },\n settings: {\n loading: 'Memuat pengaturan…',\n noAccess: 'Anda tidak memiliki akses',\n notFound: {\n title: 'Papan tidak ditemukan',\n checkAddress: 'Periksa kembali alamatnya.',\n checkBoardAddress: 'Periksa kembali alamat papan.',\n },\n newBoard: {\n title: 'Papan ini belum ada',\n description: 'Isi detail di bawah lalu simpan untuk membuatnya dengan ID ini.',\n },\n noLabel: 'Tanpa label',\n option: {\n default: 'Standar',\n },\n id: {\n label: 'ID kategori',\n help: 'Digunakan di URL dan data',\n },\n writeRole: {\n label: 'Siapa yang bisa memposting',\n help: 'Peran minimum untuk memposting di kategori ini',\n helpShort: 'Peran minimum untuk memposting',\n options: {\n user: 'Pengguna ke atas',\n staff: 'Staf ke atas',\n admin: 'Hanya admin',\n },\n },\n commentWriteRole: {\n label: 'Siapa yang bisa berkomentar',\n help: 'Peran minimum untuk berkomentar di kategori ini',\n helpShort: 'Peran minimum untuk berkomentar',\n hiddenFixed: 'Hanya staf yang ditugaskan (tetap untuk papan tersembunyi)',\n },\n staff: {\n label: 'Staf yang ditugaskan',\n help: 'Hanya staf terpilih yang dapat mengatur dan mengelola papan ini. Kosongkan agar hanya admin',\n placeholder: 'Hanya admin (tanpa staf)',\n },\n label: {\n label: 'Nama tampilan',\n help: 'Nama yang dilihat pengguna',\n },\n description: {\n label: 'Deskripsi',\n help: 'Ditampilkan di bagian atas papan dan tempat lain',\n placeholder: 'Deskripsi singkat papan ini (opsional)',\n },\n visibility: {\n label: 'Visibilitas',\n options: {\n public: {\n label: 'Terlihat',\n description: 'Ditampilkan di daftar lengkap dan filter',\n },\n hidden: {\n label: 'Tersembunyi',\n description: 'Jurnal atau privat. Hanya staf yang ditugaskan yang dapat berkomentar',\n },\n },\n },\n listView: {\n label: 'Tampilan daftar',\n help: 'Cara daftar postingan ditampilkan',\n options: {\n dense: 'Ringkas',\n video: 'Video',\n },\n },\n editorType: {\n label: 'Formulir postingan',\n help: 'Cara postingan ditulis',\n options: {\n default: 'Tulis judul dan isi',\n image: 'Tambahkan beberapa foto dan foto sampul',\n },\n },\n locale: {\n label: 'Bahasa papan',\n auto: 'Otomatis (ikuti bahasa situs)',\n },\n autoTranslate: {\n help: 'Saat disimpan, nama dan deskripsi diterjemahkan ke 10 bahasa. Teks yang tidak berubah tidak diterjemahkan lagi.',\n failed: 'Pengaturan tersimpan, tetapi terjemahan ke 10 bahasa gagal. Simpan lagi.',\n ready: 'Nama dan deskripsi tersimpan dalam 10 bahasa.',\n },\n action: {\n moveDown: 'Turun',\n goToBoard: 'Buka papan',\n deleteBoard: 'Hapus papan',\n create: 'Buat',\n },\n newCategoryPlaceholder: 'Nama kategori baru',\n savedCategory: 'Kategori “{label}” disimpan.',\n savedSettings: 'Pengaturan papan disimpan.',\n created: 'Papan dibuat.',\n error: {\n orderFailed: 'Gagal menyimpan urutan kategori.',\n deleteFailed: 'Gagal menghapus papan dan datanya.',\n saveFailed: 'Gagal menyimpan pengaturan papan.',\n deleteAllFailed: 'Gagal menghapus data papan.',\n },\n danger: {\n title: 'Zona berbahaya',\n confirmLabel: 'Ketik “{phrase}” untuk konfirmasi',\n phrase: 'hapus data papan',\n button: 'Hapus semua data',\n done: 'Semua data papan telah dihapus.',\n },\n },\n shareButton: {\n copied: 'Tautan disalin',\n },\n signIn: {\n withGoogle: 'Masuk dengan Google',\n withApple: 'Masuk dengan Apple',\n or: 'atau',\n name: 'Nama',\n email: 'Email',\n password: 'Kata sandi',\n signUp: 'Daftar',\n toSignUp: 'Belum punya akun? Daftar',\n toSignIn: 'Sudah punya akun? Masuk',\n },\n storage: {\n sourceTooLarge: 'Gambar asli maksimal {max}MB.',\n imageOnly: 'Hanya file gambar yang dapat diunggah.',\n canvasUnavailable: 'Canvas tidak tersedia',\n compressFailed: 'Kompresi gagal',\n loadFailed: 'Gagal memuat gambar',\n },\n swipeHint: {\n title: 'Coba geser ke kiri atau kanan',\n description: 'Geser ke kiri untuk postingan berikutnya, ke kanan untuk sebelumnya.',\n },\n userCommentList: {\n loadFailed: 'Gagal memuat daftar: {error}',\n empty: 'Belum ada komentar.',\n blinded: 'Komentar ini disembunyikan oleh admin.',\n likes: '{count} suka',\n },\n userPostList: {\n loadFailed: 'Gagal memuat daftar: {error}',\n empty: 'Belum ada postingan.',\n },\n users: {\n changeRoleFailed: 'Gagal mengubah peran.',\n loading: 'Memuat pengguna…',\n noPermission: {\n title: 'Tidak ada izin',\n description: 'Hanya admin papan yang dapat mengelola peran pengguna.',\n },\n empty: 'Belum ada pengguna yang masuk ke papan ini.',\n noName: 'Tanpa nama',\n moderationWarnings: '{count} peringatan konten',\n },\n writingAssistant: {\n loginRequired: 'Masuk untuk menggunakan asisten menulis AI.',\n userMissing: 'Gagal memverifikasi info pengguna. Silakan coba lagi.',\n contentRequired: 'Masukkan konten terlebih dahulu untuk diolah AI.',\n customRequired: 'Masukkan instruksi cara menulis ulang.',\n emptyResult: 'AI tidak dapat menghasilkan hasil. Silakan coba lagi.',\n translateEmpty: 'Masukkan judul atau isi yang akan diterjemahkan terlebih dahulu.',\n translateTooLong: 'Teks lebih dari {limit} karakter tidak dapat disimpan dalam 10 bahasa. Persingkat lalu coba lagi.',\n translateIncomplete: 'Beberapa bahasa kembali kosong. Silakan coba lagi.',\n failed: 'Tugas AI gagal. Silakan coba lagi.',\n actions: {\n proofread: 'Periksa ejaan',\n polish: 'Perbaiki kalimat',\n continue: 'Lanjutkan tulisan',\n summarize: 'Ringkas',\n translateEn: 'Terjemahkan ke bahasa Inggris',\n translateKo: 'Terjemahkan ke bahasa Korea',\n translateAll: 'Terjemahkan dan simpan dalam 10 bahasa',\n translateSaved: 'Disimpan dalam 10 bahasa. Pembaca melihat terjemahan bahasanya.',\n translatePending: 'Terjemahan 10 bahasa sudah siap. Terjemahan ikut tersimpan saat Anda menyimpan tulisan.',\n translateEmpty: 'Masukkan judul atau isi yang akan diterjemahkan terlebih dahulu.',\n title: 'Buat judul dari isi',\n custom: 'Tulis ulang dengan gaya kustom…',\n },\n },\n}\n\nexport default messages\n"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -41,13 +41,14 @@ export type { MemiBoardI18n, UseMemiBoardI18nOptions } from './i18n/useMemiBoard
41
41
  export { formatDate, formatFullDate, formatRelativeDate, formatTimestampDetails } from './utils/formatDate';
42
42
  export { slugify } from './utils/slugify';
43
43
  export { DEFAULT_BLOCK_BAN_THRESHOLD, DEFAULT_BLOCK_BAN_DECAY_MS, effectiveModerationBlockCount, isModerationWriteRestricted, moderationWriteRestrictedUntilMs, formatRestrictedUntilLabel, } from './utils/moderation-strike';
44
- export type { Attachment, EditorImageEntry, ModerationStatus, PostModel, PostDetail, UserPostModel, CommentModel, BoardUserRole, BoardUserModel, BoardUserPrivateModel, AuthorMemoModel, AuthorMemoSentiment, BoardCategory, BoardModel, BoardListView, BoardEditorType, BoardWriteRole, BoardVisibility, BoardSettingsModel, BoardLikeModel, BoardLikeTarget, BoardReportModel, BoardReportReason, BoardReportStatus, BoardReportTarget, BoardSection, BoardSectionCols, BoardSectionHeight, BoardSectionKind, BoardSectionSort, BoardSectionLayout, ModerationResult, } from './types';
44
+ export type { Attachment, EditorImageEntry, ModerationStatus, PostModel, PostDetail, UserPostModel, CommentModel, BoardUserRole, BoardUserModel, BoardUserPrivateModel, AuthorMemoModel, AuthorMemoSentiment, BoardCategory, BoardModel, BoardListView, BoardEditorType, BoardWriteRole, BoardVisibility, BoardSettingsModel, BoardLikeModel, BoardLikeTarget, BoardReportModel, BoardReportReason, BoardReportStatus, BoardReportTarget, BoardSection, BoardSectionCols, BoardSectionHeight, BoardSectionKind, BoardSectionSort, BoardSectionLayout, ModerationResult, MemiBoardI18nMap, MemiBoardI18nSource, PostContentI18nSource, PostTranslationSet, } from './types';
45
45
  export { plainTextFromHtml, hasBodyText, hasBodyImage, isContentEmpty, titleFromBody, } from './utils/postBody';
46
46
  export { extractEditorImageUrls } from './utils/extractEditorImageUrls';
47
47
  export { useMemiBoardWritingAssistant, WRITING_ASSISTANT_DAILY_LIMIT, } from './composables/useMemiBoardWritingAssistant';
48
48
  export type { WritingAssistantAction } from './composables/useMemiBoardWritingAssistant';
49
- export { useMemiBoardAutoTranslate, localizedText } from './composables/useMemiBoardAutoTranslate';
49
+ export { useMemiBoardAutoTranslate, localizedText, HTML_MAX_CHARS } from './composables/useMemiBoardAutoTranslate';
50
50
  export type { MemiBoardTranslateEntry, MemiBoardTranslateOptions, MemiBoardLocalizedFields, } from './composables/useMemiBoardAutoTranslate';
51
+ export { hashText, readLocalizedFields, readI18nSource, mergeSourceFields, coversLocales, displayStoredField, displayPostTitle, displayPostSummary, displayPostContent, boardCopyIsTranslated, } from './utils/localizedFields';
51
52
  export { renderMarkdownToHtml } from './utils/renderMarkdown';
52
53
  export { buildPostPreview, youtubeId, videoListCoverUrl } from './utils/postPreview';
53
54
  export { BOARD_SECTION_COLS, BOARD_SECTION_KINDS, BOARD_SECTION_SORTS, boardSectionKinds, boardSectionSorts, defaultSectionCount, clampSectionCount, pairSectionCols, sectionColClass, sectionMinHeight, miniPostLink, miniCommentLink, miniMoreLink, miniPostImage, miniPostTitle, miniViewGroup, miniViewLabel, miniBoardView, miniPostsView, } from './utils/section';