memi-board 0.55.2 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/{ar-ChyOgoxJ.js → ar-CQhBdHu3.js} +6 -1
  2. package/dist/ar-CQhBdHu3.js.map +1 -0
  3. package/dist/{commentImages-Dm5Jv2vB.js → commentImages-DsW2yCqu.js} +15 -10
  4. package/dist/commentImages-DsW2yCqu.js.map +1 -0
  5. package/dist/{de-XlC1wNZE.js → de-B4GZqxQj.js} +6 -1
  6. package/dist/de-B4GZqxQj.js.map +1 -0
  7. package/dist/{en-XIVIrnU-.js → en-BDkfivhc.js} +6 -1
  8. package/dist/en-BDkfivhc.js.map +1 -0
  9. package/dist/{es-DYbCTY9F.js → es-DzFDaLwo.js} +6 -1
  10. package/dist/es-DzFDaLwo.js.map +1 -0
  11. package/dist/{fr-C0cdV-Mk.js → fr-Zf5mcs8m.js} +6 -1
  12. package/dist/fr-Zf5mcs8m.js.map +1 -0
  13. package/dist/{id-DfP8Pyvn.js → id-CaWN8212.js} +6 -1
  14. package/dist/id-CaWN8212.js.map +1 -0
  15. package/dist/index.js +33 -19
  16. package/dist/index.js.map +1 -1
  17. package/dist/{ja-DOu3AaTV.js → ja-xDttH9CE.js} +6 -1
  18. package/dist/ja-xDttH9CE.js.map +1 -0
  19. package/dist/{pt-CTeIsQdM.js → pt-WIfxYYWQ.js} +6 -1
  20. package/dist/pt-WIfxYYWQ.js.map +1 -0
  21. package/dist/runtime/components/BoardInfo.vue +104 -0
  22. package/dist/runtime/components/BoardInfoPerson.vue +19 -0
  23. package/dist/runtime/components/List.vue +7 -16
  24. package/dist/storage.js +1 -1
  25. package/dist/types.d.ts +4 -0
  26. package/dist/utils/saveBoardVisibility.d.ts +2 -1
  27. package/dist/{zh-rDhjLmNl.js → zh-CI6Sd8PD.js} +6 -1
  28. package/dist/zh-CI6Sd8PD.js.map +1 -0
  29. package/package.json +1 -1
  30. package/dist/ar-ChyOgoxJ.js.map +0 -1
  31. package/dist/commentImages-Dm5Jv2vB.js.map +0 -1
  32. package/dist/de-XlC1wNZE.js.map +0 -1
  33. package/dist/en-XIVIrnU-.js.map +0 -1
  34. package/dist/es-DYbCTY9F.js.map +0 -1
  35. package/dist/fr-C0cdV-Mk.js.map +0 -1
  36. package/dist/id-DfP8Pyvn.js.map +0 -1
  37. package/dist/ja-DOu3AaTV.js.map +0 -1
  38. package/dist/pt-CTeIsQdM.js.map +0 -1
  39. package/dist/zh-rDhjLmNl.js.map +0 -1
@@ -348,6 +348,11 @@ var e = {
348
348
  commentNotFound: "コメントが見つかりません。"
349
349
  },
350
350
  list: {
351
+ boardInfo: {
352
+ creator: "作成者",
353
+ managers: "担当マネージャー",
354
+ staff: "担当スタッフ"
355
+ },
351
356
  commentCount: "コメント{count}件",
352
357
  settings: "設定",
353
358
  loadFailed: "一覧を読み込めませんでした: {error}",
@@ -754,4 +759,4 @@ var e = {
754
759
  //#endregion
755
760
  export { e as default };
756
761
 
757
- //# sourceMappingURL=ja-DOu3AaTV.js.map
762
+ //# sourceMappingURL=ja-xDttH9CE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ja-xDttH9CE.js","names":[],"sources":["../src/i18n/messages/ja.ts"],"sourcesContent":["import type { MemiBoardMessages } from '../translate'\n\n/** 짧은 화면 문구만 번역한다. 빠진 키는 en → ko 순으로 폴백된다. */\nconst messages: MemiBoardMessages = {\n attachments: {\n attach: 'ファイルを添付({count} / {max})',\n dropOrClick: 'ファイルをドロップするかクリックして追加',\n uploading: 'ファイルをアップロード中…',\n maxFiles: '最大{max}件まで添付できます。',\n },\n auth: {\n writeRestricted: 'コンテンツ警告が累積したため、投稿・コメントが一時的に制限されています。',\n strikeSuffix: '(警告 {count}/{threshold})',\n strikeRestricted: '警告が{count}回に達したため、投稿・コメントが制限されます。',\n notInitialized: '[memi-board] Firebase Authが初期化されていません。',\n },\n authorMemo: {\n tooLong: 'メモは{max}文字まで入力できます。',\n },\n authorMenu: {\n viewProfile: 'プロフィールを見る',\n viewPosts: '投稿を見る',\n viewComments: 'コメントを見る',\n memoAriaLabel: 'この投稿者についてのメモ',\n memoTitle: '自分だけのメモ',\n memoPlaceholder: 'この投稿者についてメモする…',\n bad: '悪い',\n good: '良い',\n },\n avatarCropModal: {\n title: 'プロフィール写真を切り抜き',\n description: '正方形(1:1)で表示されます。範囲を調整してください。',\n confirm: '切り抜いてアップロード',\n },\n boardSettings: {\n signInRequired: 'ログインが必要です。',\n idAndNameRequired: 'ボードIDと名前を入力してください。',\n deleteIdRequired: '削除する掲示板のIDが必要です。',\n nameRequired: 'ボード名を入力してください。',\n },\n boardUsers: {\n unsupportedRole: 'サポートされていないロールです。',\n roleDescription: {\n admin: 'ユーザーのロール、掲示板の設定、すべてのコンテンツを管理します。',\n user: '投稿とコメントができ、自分のコンテンツのみ編集・削除できます。',\n },\n },\n commentFeed: {\n empty: 'まだコメントはありません。',\n emptyLiked: 'いいねされたコメントはまだありません。',\n loadFailed: '一覧を読み込めませんでした: {error}',\n blinded: '管理者により非表示にされたコメントです。',\n },\n commentForm: {\n translationSkipped: '翻訳せずにコメントを投稿しました。あとで編集フォームから翻訳できます。',\n hiddenBoardDenied: '非表示の掲示板には担当スタッフのみコメントできます。',\n denied: 'この掲示板にコメントする権限がありません。',\n signInRequired: 'ログインが必要です。',\n writeRestricted: 'コンテンツ警告が累積したため、投稿・コメントが一時的に制限されています。',\n moderationBlocked: '投稿できない内容が含まれています。',\n replyTo: '{name}さんに返信',\n placeholder: 'コメントを入力',\n submitReply: '返信する',\n submit: 'コメントする',\n signInToComment: 'コメントするにはログインが必要です。',\n attachHint: 'ここに画像をドロップするか、クリックして選択してください。',\n attachNote: 'jpg, png, gif, webp。大きな画像は5MB以下に調整されます。',\n removeImage: '添付画像を削除',\n imageOnly: '添付できるのは jpg、png、gif、webp 画像だけです。',\n uploadFailed: '画像をアップロードできませんでした。',\n uploading: '画像をアップロードしています…',\n },\n commentItem: {\n editRestricted: 'コメントの編集が一時的に制限されています。',\n moderationBlocked: '投稿できない内容が含まれています。',\n editFailed: 'コメントを編集できませんでした。',\n blindFailed: '非表示の状態を変更できませんでした。',\n likeFailed: 'いいねを処理できませんでした。',\n blinded: '管理者により非表示にされたコメントです。',\n attachedImage: 'コメントに添付された画像',\n edit: 'コメントを編集',\n blind: 'コメントを非表示',\n unblind: 'コメントの非表示を解除',\n delete: 'コメントを削除',\n },\n commentList: {\n loading: 'コメントを読み込んでいます',\n empty: 'まだコメントはありません。',\n loadMore: 'コメントをもっと見る',\n loadingMore: 'コメントをさらに読み込んでいます',\n },\n commentThread: {\n deleteConfirm: 'このコメントを削除しますか?',\n deleteFailed: 'コメントを削除できませんでした。',\n hideReplies: '返信を非表示',\n showReplies: '返信{count}件',\n loadMoreReplies: '返信をもっと見る',\n },\n comments: {\n bodyRequired: 'コメントを入力してください。',\n bodyTooLong: 'コメントは{max}文字まで入力できます。',\n replyTargetNotFound: '返信先のコメントが見つかりません。',\n threadNotFound: 'コメントスレッドが見つかりません。',\n hasRepliesCannotDelete: '返信があるコメントは現在削除できません。',\n },\n common: {\n action: {\n cancel: 'キャンセル',\n save: '保存',\n saved: '保存済み',\n edit: '編集',\n delete: '削除',\n confirm: 'OK',\n close: '閉じる',\n add: '追加',\n more: 'もっと見る',\n prev: '前へ',\n next: '次へ',\n retry: '再試行',\n reply: '返信',\n like: 'いいね',\n unlike: 'いいねを取り消す',\n share: '共有',\n report: '通報',\n signIn: 'ログイン',\n signOut: 'ログアウト',\n write: '投稿する',\n toTop: 'トップへ',\n },\n label: {\n anonymous: '匿名',\n user: 'ユーザー',\n image: '画像',\n draft: '下書き',\n loading: '読み込み中…',\n },\n role: {\n admin: '管理者',\n staff: 'スタッフ',\n user: 'ユーザー',\n },\n date: {\n justNow: 'たった今',\n fewSecondsAgo: '数秒前',\n checking: '時刻を確認中',\n createdAt: '作成日時: {time}',\n updatedAt: '更新日時: {time}',\n },\n },\n detail: {\n deleteConfirm: 'この投稿を削除しますか?元に戻すことはできません。',\n notFound: '投稿が見つかりません。',\n draftPreview: '非公開プレビュー',\n draftNotice: 'まだ公開されていません。公開するまでは投稿者だけが閲覧できます。',\n publish: '公開する',\n notice: 'お知らせ',\n pin: 'お知らせに指定',\n unpin: 'お知らせを解除',\n backToList: '一覧に戻る',\n postNav: '投稿の移動',\n list: '一覧',\n comments: 'コメント',\n },\n editor: {\n titleOptionalPlaceholder: 'タイトル(空欄ならAIが作ります)',\n titleAiNotice: '本文からAIがタイトルを作りました。よければ保存し、気になる点は修正してください。',\n translateView: {\n title: '翻訳プレビュー: {language}',\n notSaved: '保存されていません。プレビューのみです。',\n },\n titlePlaceholder: 'タイトル',\n contentPlaceholder: '本文を入力…「/」でブロックメニューが開きます。',\n imageContentPlaceholder: '内容を入力…',\n tagsPlaceholder: 'タグを入力してEnter',\n pinNotice: 'お知らせとして固定',\n submitEdit: '編集を完了',\n submitNext: '次へ: プレビュー',\n apply: '適用',\n imageOptimizing: '画像を最適化してアップロード中…',\n cover: {\n imageLink: '画像リンク',\n addPhoto: '写真を追加',\n alt: '写真{n}',\n representative: 'カバー',\n setRepresentative: 'カバーに設定',\n setRepresentativeAria: '写真{n}をカバー写真に設定',\n remove: '写真を削除',\n add: '追加',\n uploading: 'アップロード中…',\n dropOrClick: '写真をドロップまたはクリックして追加',\n emptyHint: '複数選択可 · アップロード後にカバー写真を選択 · ドラッグで並べ替え',\n uploadTitle: 'アップロード',\n },\n uploadFailed: 'アップロード失敗',\n aiAssistant: 'AI文章アシスタント',\n insertBlock: 'ブロックを挿入',\n blockMenu: 'ブロックメニュー',\n imageDialog: {\n title: '画像を追加',\n chooseFile: 'デバイスから画像を選択',\n orLink: 'または画像リンク',\n urlLabel: '画像URL',\n previewAlt: '外部画像のプレビュー',\n addLink: 'リンクを追加',\n },\n customDialog: {\n title: 'カスタムスタイルに書き換え',\n label: 'どのように書き換えますか?',\n help: '例: 関西弁で / 丁寧な書き言葉で / 簡潔な箇条書きで',\n placeholder: '関西弁で',\n },\n aiPreview: {\n title: 'AIの結果を確認',\n currentTitle: '現在のタイトル',\n newTitle: '新しいタイトル',\n currentContent: '現在の内容',\n appendedContent: '追加される内容',\n before: '変更前',\n after: '変更後',\n },\n menu: {\n ai: 'AI',\n aiContinue: 'AIで続きを書く',\n style: 'スタイル',\n insert: '挿入',\n paragraph: '本文',\n heading1: '見出し1',\n heading2: '見出し2',\n heading3: '見出し3',\n bulletList: '箇条書きリスト',\n orderedList: '番号付きリスト',\n blockquote: '引用',\n codeBlock: 'コードブロック',\n horizontalRule: '区切り線',\n image: '画像',\n turnInto: 'ブロックの種類を変更',\n resetFormatting: '書式をリセット',\n duplicate: '複製',\n moveUp: '上に移動',\n moveDown: '下に移動',\n delete: '削除',\n },\n toolbar: {\n link: 'リンク',\n image: '画像',\n format: '書式',\n bold: '太字',\n italic: '斜体',\n underline: '下線',\n strike: '取り消し線',\n title: 'タイトル',\n heading: '見出し',\n subheading: '小見出し',\n body: '本文',\n mono: '等幅',\n bulletList: '箇条書きリスト',\n orderedList: '番号付きリスト',\n blockquote: 'ブロック引用',\n codeBlock: 'コードブロック',\n horizontalRule: '区切り線',\n clearFormatting: '書式をクリア',\n undo: '元に戻す',\n redo: 'やり直す',\n },\n ai: {\n translateView: '翻訳して見る',\n translateAll: '{count}言語に翻訳して保存',\n proofread: 'スペルチェック',\n polish: '文章を整える',\n continue: '自然に続きを書く',\n summarize: '短く要約',\n translateEn: '英語に翻訳',\n translateKo: '韓国語に翻訳',\n translateEmpty: '翻訳するタイトルか本文を先に入力してください。',\n title: '本文からタイトルを生成',\n custom: 'カスタムスタイルに書き換え…',\n failed: 'AI処理に失敗しました。もう一度お試しください。',\n },\n youtubePrompt: 'YouTubeのリンクを入力してください。',\n errors: {\n coverMax: '写真は最大{max}枚までアップロードできます。',\n imageUrlRequired: '画像のURLを入力してください。',\n imageUrlInvalid: '正しい画像URLを入力してください。',\n imageUrlHttps: 'HTTPSの画像URLのみ使用できます。',\n imageUrlCredentials: 'ログイン情報を含むURLは使用できません。',\n imageTimeout: '画像の読み込みに時間がかかりすぎています。',\n imageNotDisplayable: '表示できない画像です。',\n editorNotReady: 'エディターを準備できませんでした。もう一度お試しください。',\n imageLinkFailed: '画像リンクを追加できませんでした。',\n imageOnly: '画像ファイルのみアップロードできます。',\n imageTooLarge: '元の画像は{mb}MB以下にしてください。',\n imageUploadFailed: '画像のアップロードに失敗しました。',\n pasteAsFile: '写真はファイルとして上のエリアに貼り付けるか、ドラッグしてください。',\n postNotFound: '投稿が見つかりません。',\n loadPermission: '投稿を読み込む権限がありません。ログイン状態を確認してください。',\n loadFailed: '投稿を読み込めませんでした: {message}',\n titleRequired: 'タイトルを入力してください。',\n photoRequired: '写真を1枚以上アップロードしてください。',\n bodyRequired: '本文にテキストを入力するか、画像を添付してください。',\n signInRequired: 'ログインが必要です。',\n boardMissing: '掲示板(ボード)が指定されていません。',\n writeRestricted: 'コンテンツ警告が累積したため、投稿・コメントが一時的に制限されています。',\n moderationBlocked: '投稿できない内容が含まれています。',\n },\n hint: {\n titling: 'タイトルを作成中…',\n reviewing: '内容を確認中…',\n saving: '保存中…',\n },\n },\n footer: {\n introduction: \"memi-boardはNuxt 4、Vue 3、TypeScriptで作られています。Nuxt UIとFirebaseで投稿、コメント、人と会話を自然につなぎます。\",\n eyebrow: \"会話が生まれる場所\",\n tagline: \"小さなコミュニティ。広がるストーリー。\",\n detail: \"詳しい紹介\",\n links: \"リンク・お問い合わせ\",\n email: \"メール\",\n credit: \"制作: memi\",\n feedback: \"フィードバックを送る\",\n feedbackSubject: \"memi-board フィードバック\",\n feedbackBody: \"ご意見:\\n\",\n siteEyebrow: \"memi-boardを使ったサービス\",\n changelog: \"変更履歴\",\n info: {\n title: \"memi-board\",\n about: \"memi-boardについて\",\n sites: \"導入事例\",\n history: 'バージョン履歴',\n },\n sites: {\n description: \"memi-boardで投稿や会話をつなぐサービスをご紹介します。\",\n memi: \"開発と日々の出来事を共有する場所\",\n waiting: \"QRコードで簡単に使える順番待ちサービス\",\n track: \"移動ルートを記録するGPSトラッキング\",\n loop: \"車両の走行記録とセンサーソリューション\",\n safe: \"ペダル踏み間違い防止装置の接続・設定\",\n inviteTitle: \"あなたも使っていますか?\",\n invite: \"サイトのアドレスを教えてください。\",\n inviteSite: \"memi.devに残す\",\n inviteOr: \"または\",\n inviteSubject: \"memi-boardを使っています\",\n inviteBody: \"サイトのアドレス:\\n\",\n },\n stack: {\n ui: '画面と操作性',\n data: 'データとログイン',\n writing: '執筆と便利機能',\n },\n },\n likes: {\n signInRequired: 'ログインが必要です。',\n commentNotFound: 'コメントが見つかりません。',\n },\n list: {\n boardInfo: {\n creator: '作成者',\n managers: '担当マネージャー',\n staff: '担当スタッフ',\n },\n commentCount: 'コメント{count}件',\n settings: '設定',\n loadFailed: '一覧を読み込めませんでした: {error}',\n empty: 'まだ投稿はありません。',\n notice: 'お知らせ',\n photo: '写真',\n likeCount: 'いいね {count}',\n info: {\n title: '掲示板の情報',\n about: 'この掲示板について',\n history: 'バージョン履歴',\n },\n stack: {\n framework: 'フレームワーク & 言語',\n ui: 'UI & スタイル',\n backend: 'バックエンド & データ',\n },\n tech: {\n nuxt: 'VueベースのSSRフレームワーク',\n vue: 'Composition API · script setup',\n typescript: '安全なデータとコンポーネントの型',\n nuxtUi: '掲示板・フォーム・モーダルのUI',\n tailwind: 'レスポンシブ · ライト/ダークスタイル',\n lucide: '軽量で統一感のあるアイコン',\n dayjs: '読みやすい日付と相対時刻',\n firestore: '投稿とコメントのためのリアルタイムDB',\n auth: '安全なログインと権限管理',\n storage: '画像と添付ファイルの保存',\n vuefire: 'NuxtとFirebaseのリアルタイム連携',\n },\n },\n listViewSwitch: {\n card: 'カード',\n default: '標準',\n dense: 'コンパクト',\n video: '動画',\n },\n miniComments: {\n empty: 'まだコメントはありません。',\n blinded: '管理者により非表示にされたコメントです。',\n },\n miniList: {\n empty: 'まだ投稿はありません。',\n },\n miniPicker: {\n selectedCount: '選択した投稿 {count} / {max}',\n layoutHint: '2件以上でカルーセル、4件でグリッド',\n searchPlaceholder: 'タイトルを検索',\n loading: '投稿を読み込み中…',\n noMore: '選択できる投稿はもうありません。',\n },\n miniPost: {\n empty: '選択された投稿はありません。',\n },\n moderation: {\n writeRestricted: 'コンテンツ警告が累積したため、投稿・コメントが一時的に制限されています。',\n },\n moderationPrompt: {\n localHit: '「{hit}」のような表現は使用できません。別の言葉に言い換えてください。',\n localGeneric: '暴言・卑語が含まれているため投稿できません。表現を変えてください。',\n genericBlocked: '投稿できない内容が含まれています。内容を修正してください。',\n categories: {\n abuse: '暴言・卑語・侮辱',\n spam: 'スパム・広告',\n adult: '性的・成人向けの内容',\n violence: '暴力・脅迫',\n other: '不適切な内容',\n },\n },\n moderationStrike: {\n liftSoon: 'まもなく解除',\n liftInHours: '約{hours}時間後に解除',\n liftInDays: '約{days}日後に解除',\n liftInDaysHours: '約{days}日{hours}時間後に解除',\n },\n posts: {\n boardIdRequired: '[memi-board] boardIdが必要です。',\n photoRequired: '写真をアップロードしてください。',\n bodyRequired: '本文にテキストを入力するか、画像を添付してください。',\n titleRequired: 'タイトルを入力してください。',\n },\n profile: {\n stats: {\n posts: '投稿{count}件',\n comments: 'コメント{count}件',\n aiUsage: 'AI利用 {used} / {limit}',\n aiUsageResets: 'AI利用 {used} / {limit} · {hours}時間後にリセット',\n warnings: '警告{count}回',\n },\n notFound: 'ユーザーが見つかりません。',\n noName: '名前なし',\n joined: '登録 {time}',\n lastVisit: '最終訪問 {time}',\n },\n profileEditModal: {\n imageOnly: '画像ファイルのみ選択できます。',\n nameRequired: '名前を入力してください。',\n saveFailed: 'プロフィールを保存できませんでした。',\n title: 'プロフィールを編集',\n changePhoto: '写真を変更',\n name: '名前',\n bio: '自己紹介',\n bioPlaceholder: '自己紹介を書いてみましょう',\n },\n reportButton: {\n failed: '通報できませんでした。',\n reported: '通報済み',\n title: '投稿を通報',\n done: '通報を受け付けました。スタッフが内容を確認します。',\n reason: '理由',\n detailPlaceholder: '詳細(任意)',\n submit: '通報する',\n },\n reportList: {\n staffOnly: '通報一覧はスタッフのみ閲覧できます。',\n loadFailed: '一覧を読み込めませんでした: {error}',\n empty: '対応待ちの通報はありません。',\n untitled: '無題の投稿',\n author: '投稿者 {name}',\n dismiss: '却下',\n confirm: '対応済み',\n },\n reports: {\n reason: {\n spam: 'スパム・広告',\n abuse: '暴言・ヘイト・嫌がらせ',\n adult: 'わいせつな内容',\n illegal: '違法な情報',\n other: 'その他',\n },\n fallbackLabel: '通報',\n signInRequired: 'ログインが必要です。',\n cannotReportOwn: '自分の投稿は通報できません。',\n reasonRequired: '通報理由を選択してください。',\n detailTooLong: '詳細は{max}文字までです。',\n },\n sectionUtil: {\n kind: {\n list: '投稿一覧',\n post: '投稿',\n comments: 'コメントまとめ',\n },\n sort: {\n latest: '新着順',\n likes: 'いいね順',\n },\n untitledPost: '投稿',\n view: {\n media: 'メディア',\n list: 'リスト',\n },\n },\n sections: {\n defaultTitle: 'セクション{n}',\n },\n seo: {\n allCategory: 'すべて',\n boardDescription: '{name}掲示板',\n allDescription: '掲示板 — お知らせやコミュニティの最新情報をチェックしましょう。',\n postFallbackTitle: '投稿 | {site}',\n postFallbackDescription: '掲示板',\n photo: '写真',\n postDescriptionFallback: '掲示板の投稿',\n listTitle: '{name}掲示板 | {site}',\n listTitleAll: '掲示板 | {site}',\n listDescription: '{name}掲示板 — 最新の投稿をチェックしましょう。',\n listDescriptionAll: '掲示板 — お知らせや話題をチェックしましょう。',\n },\n settings: {\n aiTitle: {\n label: 'AIでタイトルを自動作成',\n help: '新しい投稿のタイトルを空欄にすると、AIが本文(本文がなければ最初の写真)からタイトルを作ります。写真はタイトル作成時のみGoogle AIに送信されます。オフにするとタイトルの入力が必須になり、写真も送信されません。',\n },\n site: {\n apply: '適用',\n applied: '適用しました。',\n title: '全体設定',\n help: 'サイト全体に適用されます。ホストアプリの設定より優先され、変更するとすぐに反映されます。',\n ai: { label: 'AI機能を使う', help: 'コストなどでAIを使えない場合はオフにします。オフにすると、翻訳、執筆アシスタント、AIタイトル、AI審査がすべて無効になり、写真もAIに送信されません。禁止語チェックは引き続き動作します。' },\n i18n: { label: '国際化を使う', help: 'オフにすると、すべての画面が下で選んだ1つの言語に固定され、翻訳機能もオフになります。保存済みの翻訳は削除されません。' },\n locales: { label: '使用する言語', help: '選択した{count}言語のみ翻訳し、言語メニューに表示します。選択しない言語は新しく翻訳されず、保存済みの翻訳は削除されません。' },\n locale: { label: '既定の言語', help: 'ホストアプリが言語を指定しないときに使う言語です。', fixedLabel: '固定する言語', fixedHelp: 'すべての画面がこの言語で表示されます。' },\n },\n i18nBoard: {\n label: '国際化',\n help: 'オンにすると、掲示板の名前・説明と新しい投稿・コメントを{count}言語に自動翻訳して一緒に保存します。オフにすると原文のみ表示されます。',\n existing: '既存の投稿も翻訳する',\n },\n about: {\n label: 'About memi-boardを表示',\n help: '全ての掲示板画面の下部にAbout memi-boardのリンクとポップアップを表示します。オフにするとサイト全体で非表示になります。',\n },\n postTranslations: {\n label: '既存の投稿を翻訳',\n help: '翻訳がない、または原文と異なる投稿を探して、まとめて翻訳・保存します。自動翻訳をオフにした掲示板や、翻訳が漏れた投稿を補うときに使います。1日のAI利用回数は消費しません。',\n scan: '翻訳する投稿を探す',\n run: '{count}件の投稿を翻訳',\n confirm: '{count}件の投稿を翻訳して保存します。投稿ごとにAIが呼び出されます。続行しますか?',\n progress: '翻訳中… 完了 {done}、失敗 {failed}',\n allDone: '公開中の投稿{total}件すべての翻訳が最新です。',\n found: '公開中の投稿{total}件のうち{count}件の翻訳が必要です。',\n failed: '{count}件の投稿を翻訳できませんでした。もう一度探して再試行してください。',\n },\n loading: '設定を読み込んでいます。',\n noAccess: 'アクセス権限がありません',\n notFound: {\n title: '存在しない掲示板です',\n checkAddress: 'アドレスをもう一度確認してください。',\n checkBoardAddress: '掲示板のアドレスをもう一度確認してください。',\n },\n newBoard: {\n title: 'まだ存在しない掲示板です',\n description: '下の情報を入力して保存すると、このIDで新しく作成されます。',\n },\n noLabel: 'ラベルなし',\n option: {\n default: '標準',\n },\n id: {\n label: 'カテゴリーID',\n help: 'URLとデータで使われる識別値',\n },\n writeRole: {\n label: '投稿権限',\n help: 'このカテゴリーに投稿できる最低ロール',\n helpShort: '投稿できる最低ロール',\n options: {\n user: '一般ユーザー以上',\n staff: 'スタッフ以上',\n admin: '管理者のみ',\n },\n },\n commentWriteRole: {\n label: 'コメント権限',\n help: 'このカテゴリーにコメントできる最低ロール',\n helpShort: 'コメントできる最低ロール',\n hiddenFixed: '担当スタッフのみ(非表示ボードでは固定)',\n },\n staff: {\n label: '担当スタッフ',\n help: '指定したスタッフだけがこのボードを設定・管理します。空欄の場合は管理者のみ',\n placeholder: '管理者のみ(スタッフ未指定)',\n },\n label: {\n label: '表示名',\n help: 'ユーザーに表示される名前',\n },\n description: {\n label: '説明',\n help: '掲示板の上部などに表示される案内文',\n placeholder: 'この掲示板の短い説明(任意)',\n },\n visibility: {\n label: '公開範囲',\n options: {\n public: {\n label: '表示',\n description: '全体の一覧・フィルターに表示',\n },\n hidden: {\n label: '非表示',\n description: '日記・非公開用。コメントは担当スタッフのみ',\n },\n },\n },\n listView: {\n label: '一覧表示',\n help: '投稿一覧の表示方法',\n options: {\n card: 'カード',\n dense: 'コンパクト',\n video: '動画',\n },\n },\n editorType: {\n label: '入力フォーム',\n help: '投稿画面の作成方法',\n options: {\n default: 'タイトルと本文を入力',\n image: '複数の写真とカバー写真を登録',\n },\n },\n bulk: {\n title: 'すべての掲示板に適用',\n apply: '{count}件の掲示板に適用',\n applyShort: '適用',\n confirmTitle: 'すべての掲示板に適用',\n translateUntranslated: '未翻訳の掲示板を翻訳 ({count})',\n },\n translationLocales: {\n label: '翻訳する言語',\n },\n locale: {\n label: '掲示板の言語',\n auto: '自動(サイトの言語に従う)',\n },\n autoTranslate: {\n action: \"{count}言語に翻訳\",\n manualHelp: \"表示名と説明をまとめて翻訳します。翻訳後に保存して適用してください。\",\n pending: \"{count}言語の翻訳ができました。保存して適用してください。\",\n manualFailed: \"翻訳に失敗しました。入力内容は保持されています。もう一度お試しください。\",\n label: '保存時に{count}言語へ翻訳',\n help: 'オンにすると名前と説明を{count}言語に翻訳します。オフでは翻訳しません。文言が同じなら再翻訳しません。',\n failed: '設定は保存しましたが、{count}言語への翻訳に失敗しました。もう一度保存してください。',\n ready: '名前と説明が{count}言語で保存されています。',\n },\n action: {\n moveDown: '下へ',\n goToBoard: '掲示板へ移動',\n deleteBoard: '掲示板を削除',\n create: '作成',\n },\n newCategoryPlaceholder: '新しいカテゴリー名',\n savedCategory: '「{label}」カテゴリーを保存しました。',\n savedSettings: '掲示板の設定を保存しました。',\n created: '掲示板を作成しました。',\n error: {\n orderFailed: 'カテゴリーの順序を保存できませんでした。',\n deleteFailed: '掲示板と関連データを削除できませんでした。',\n saveFailed: '掲示板の設定を保存できませんでした。',\n deleteAllFailed: '掲示板のデータを削除できませんでした。',\n },\n danger: {\n title: '危険な操作',\n confirmLabel: '確認のため「{phrase}」と入力してください',\n phrase: '掲示板のデータを削除',\n button: 'すべてのデータを削除',\n done: '掲示板のデータをすべて削除しました。',\n },\n },\n shareButton: {\n copied: 'リンクをコピーしました',\n },\n signIn: {\n withGoogle: 'Googleでログイン',\n withApple: 'Appleでログイン',\n or: 'または',\n name: '名前',\n email: 'メールアドレス',\n password: 'パスワード',\n signUp: '新規登録',\n toSignUp: 'アカウントをお持ちでないですか?新規登録',\n toSignIn: 'すでにアカウントをお持ちですか?ログイン',\n },\n storage: {\n sourceTooLarge: '元の画像は{max}MB以下にしてください。',\n imageOnly: '画像ファイルのみアップロードできます。',\n canvasUnavailable: 'Canvasを使用できません',\n compressFailed: '圧縮に失敗しました',\n loadFailed: '画像の読み込みに失敗しました',\n },\n swipeHint: {\n title: '左右にスワイプしてみましょう',\n description: '左にスワイプすると次の投稿、右にスワイプすると前の投稿に移動します。',\n },\n userCommentList: {\n loadFailed: '一覧を読み込めませんでした: {error}',\n empty: 'コメントはまだありません。',\n blinded: '管理者により非表示にされたコメントです。',\n likes: 'いいね {count}',\n },\n userPostList: {\n loadFailed: '一覧を読み込めませんでした: {error}',\n empty: '投稿はまだありません。',\n },\n users: {\n changeRoleFailed: 'ロールを変更できませんでした。',\n loading: 'ユーザー一覧を読み込んでいます。',\n noPermission: {\n title: '権限がありません',\n description: '掲示板の管理者のみユーザーのロールを管理できます。',\n },\n empty: '掲示板にログインしたユーザーはいません。',\n noName: '名前なし',\n moderationWarnings: 'コンテンツ警告 {count}回',\n },\n writingAssistant: {\n dailyLimit: 'AI文章アシスタントは1日{limit}回まで利用できます。約{hours}時間後にもう一度お試しください。',\n loginRequired: 'AI文章アシスタントはログイン後に利用できます。',\n userMissing: 'ユーザー情報を確認してから、もう一度お試しください。',\n contentRequired: 'AIで整える内容を先に入力してください。',\n customRequired: 'どのように書き換えるか指示を入力してください。',\n emptyResult: 'AIが結果を生成できませんでした。もう一度お試しください。',\n translateEmpty: '翻訳するタイトルか本文を先に入力してください。',\n translateTooLong: '本文が{limit}字を超えると{count}言語では保存できません。短くしてからもう一度お試しください。',\n translateIncomplete: '一部の言語の翻訳が空でした。もう一度お試しください。',\n failed: 'AI処理に失敗しました。もう一度お試しください。',\n actions: {\n proofread: 'スペルチェック',\n polish: '文章を整える',\n continue: '自然に続きを書く',\n summarize: '短く要約',\n translateEn: '英語に翻訳',\n translateKo: '韓国語に翻訳',\n translateAll: '{count}言語に翻訳して保存',\n translateSaved: '{count}言語で保存しました。ほかの言語では翻訳が表示されます。',\n translatePending: '{count}言語の翻訳を用意しました。投稿を保存すると一緒に記録されます。',\n translateEmpty: '翻訳するタイトルか本文を先に入力してください。',\n title: '本文からタイトルを生成',\n custom: 'カスタムスタイルに書き換え…',\n },\n },\n}\n\nexport default messages\n"],"mappings":"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"}
@@ -348,6 +348,11 @@ var e = {
348
348
  commentNotFound: "Comentário não encontrado."
349
349
  },
350
350
  list: {
351
+ boardInfo: {
352
+ creator: "Criado por",
353
+ managers: "Gerentes",
354
+ staff: "Equipe"
355
+ },
351
356
  commentCount: "{count} comentários",
352
357
  settings: "Configurações",
353
358
  loadFailed: "Não foi possível carregar a lista: {error}",
@@ -754,4 +759,4 @@ var e = {
754
759
  //#endregion
755
760
  export { e as default };
756
761
 
757
- //# sourceMappingURL=pt-CTeIsQdM.js.map
762
+ //# sourceMappingURL=pt-WIfxYYWQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pt-WIfxYYWQ.js","names":[],"sources":["../src/i18n/messages/pt.ts"],"sourcesContent":["import type { MemiBoardMessages } from '../translate'\n\n/** 짧은 화면 문구만 번역한다. 빠진 키는 en → ko 순으로 폴백된다. */\nconst messages: MemiBoardMessages = {\n attachments: {\n attach: 'Anexar arquivos ({count} / {max})',\n dropOrClick: 'Solte arquivos ou clique para adicionar',\n uploading: 'Enviando arquivos…',\n maxFiles: 'Você pode anexar até {max} arquivos.',\n },\n auth: {\n writeRestricted: 'Publicar e comentar está temporariamente restrito por causa de avisos de conteúdo acumulados.',\n strikeSuffix: ' (Aviso {count}/{threshold})',\n strikeRestricted: ' Você atingiu {count} avisos, então publicar e comentar está restrito.',\n notInitialized: '[memi-board] O Firebase Auth não foi inicializado.',\n },\n authorMemo: {\n tooLong: 'As notas podem ter até {max} caracteres.',\n },\n authorMenu: {\n viewProfile: 'Ver perfil',\n viewPosts: 'Ver publicações',\n viewComments: 'Ver comentários',\n memoAriaLabel: 'Nota sobre este autor',\n memoTitle: 'Nota privada',\n memoPlaceholder: 'Anote algo sobre este autor…',\n bad: 'Ruim',\n good: 'Bom',\n },\n avatarCropModal: {\n title: 'Recortar foto do perfil',\n description: 'Exibida em formato quadrado (1:1). Ajuste a área.',\n confirm: 'Recortar e enviar',\n },\n boardSettings: {\n signInRequired: 'Faça login.',\n idAndNameRequired: 'Informe um ID e um nome para o fórum.',\n deleteIdRequired: 'É necessário o ID do fórum para excluí-lo.',\n nameRequired: 'Informe um nome para o fórum.',\n },\n boardUsers: {\n unsupportedRole: 'Função não suportada.',\n roleDescription: {\n admin: 'Gerencia as funções dos usuários, as configurações do fórum e todo o conteúdo.',\n user: 'Pode escrever publicações e comentários, e editar ou excluir apenas o próprio conteúdo.',\n },\n },\n commentFeed: {\n empty: 'Ainda não há comentários.',\n emptyLiked: 'Ainda não há comentários curtidos.',\n loadFailed: 'Não foi possível carregar a lista: {error}',\n blinded: 'Este comentário foi ocultado por um administrador.',\n },\n commentForm: {\n translationSkipped: 'O comentário foi publicado sem tradução. Você pode traduzi-lo depois no formulário de edição.',\n hiddenBoardDenied: 'Somente a equipe responsável pode comentar em fóruns ocultos.',\n denied: 'Você não tem permissão para comentar neste fórum.',\n signInRequired: 'Faça login.',\n writeRestricted: 'Publicar está temporariamente restrito por causa de avisos de conteúdo acumulados.',\n moderationBlocked: 'Há conteúdo que não pode ser publicado.',\n replyTo: 'Responder a {name}',\n placeholder: 'Escreva um comentário',\n submitReply: 'Responder',\n submit: 'Comentar',\n signInToComment: 'Faça login para deixar um comentário.',\n attachHint: 'Solte uma imagem aqui ou clique para escolher uma.',\n attachNote: 'jpg, png, gif, webp. Imagens grandes são reduzidas para 5MB ou menos.',\n removeImage: 'Remover imagem anexada',\n imageOnly: 'Só é possível anexar imagens jpg, png, gif e webp.',\n uploadFailed: 'Não foi possível enviar a imagem.',\n uploading: 'Enviando imagem…',\n },\n commentItem: {\n editRestricted: 'A edição de comentários está temporariamente restrita.',\n moderationBlocked: 'Há conteúdo que não pode ser publicado.',\n editFailed: 'Não foi possível atualizar o comentário.',\n blindFailed: 'Não foi possível alterar o estado de ocultação.',\n likeFailed: 'Não foi possível processar a curtida.',\n blinded: 'Este comentário foi ocultado por um administrador.',\n attachedImage: 'Imagem anexada ao comentário',\n edit: 'Editar comentário',\n blind: 'Ocultar comentário',\n unblind: 'Reexibir comentário',\n delete: 'Excluir comentário',\n },\n commentList: {\n loading: 'Carregando comentários',\n empty: 'Ainda não há comentários.',\n loadMore: 'Mais comentários',\n loadingMore: 'Carregando mais comentários',\n },\n commentThread: {\n deleteConfirm: 'Excluir este comentário?',\n deleteFailed: 'Não foi possível excluir o comentário.',\n hideReplies: 'Ocultar respostas',\n showReplies: '{count} respostas',\n loadMoreReplies: 'Mais respostas',\n },\n comments: {\n bodyRequired: 'Escreva um comentário.',\n bodyTooLong: 'Os comentários podem ter até {max} caracteres.',\n replyTargetNotFound: 'O comentário que você está respondendo não foi encontrado.',\n threadNotFound: 'A conversa de comentários não foi encontrada.',\n hasRepliesCannotDelete: 'No momento, não é possível excluir comentários com respostas.',\n },\n common: {\n action: {\n cancel: 'Cancelar',\n save: 'Salvar',\n saved: 'Salvo',\n edit: 'Editar',\n delete: 'Excluir',\n confirm: 'OK',\n close: 'Fechar',\n add: 'Adicionar',\n more: 'Ver mais',\n prev: 'Anterior',\n next: 'Próximo',\n retry: 'Tentar novamente',\n reply: 'Responder',\n like: 'Curtir',\n unlike: 'Descurtir',\n share: 'Compartilhar',\n report: 'Denunciar',\n signIn: 'Entrar',\n signOut: 'Sair',\n write: 'Escrever',\n toTop: 'Topo',\n },\n label: {\n anonymous: 'Anônimo',\n user: 'Usuário',\n image: 'Imagem',\n draft: 'Rascunho',\n loading: 'Carregando…',\n },\n role: {\n admin: 'Administrador',\n staff: 'Equipe',\n user: 'Usuário',\n },\n date: {\n justNow: 'Agora mesmo',\n fewSecondsAgo: 'Há alguns segundos',\n checking: 'Verificando horário',\n createdAt: 'Criado: {time}',\n updatedAt: 'Atualizado: {time}',\n },\n },\n detail: {\n deleteConfirm: 'Excluir esta publicação? Isso não pode ser desfeito.',\n notFound: 'Publicação não encontrada.',\n draftPreview: 'Prévia não publicada',\n draftNotice: 'Esta publicação ainda não foi publicada. Só você pode vê-la até publicá-la.',\n publish: 'Publicar',\n notice: 'Aviso',\n pin: 'Fixar como aviso',\n unpin: 'Remover aviso',\n backToList: 'Voltar à lista',\n postNav: 'Navegação entre publicações',\n list: 'Lista',\n comments: 'Comentários',\n },\n editor: {\n titleOptionalPlaceholder: 'Título (deixe em branco e a IA escreve um)',\n titleAiNotice: 'A IA escreveu um título a partir do seu texto. Salve se gostar ou edite antes.',\n translateView: {\n title: 'Prévia da tradução: {language}',\n notSaved: 'Não salvo. É apenas uma prévia.',\n },\n titlePlaceholder: 'Título',\n contentPlaceholder: 'Escreva algo… Digite / para abrir o menu de blocos.',\n imageContentPlaceholder: 'Escreva algo…',\n tagsPlaceholder: 'Digite uma tag e pressione Enter',\n pinNotice: 'Fixar como aviso',\n submitEdit: 'Salvar alterações',\n submitNext: 'Próximo: prévia',\n apply: 'Aplicar',\n imageOptimizing: 'Otimizando e enviando a imagem…',\n cover: {\n imageLink: 'Link da imagem',\n addPhoto: 'Adicionar fotos',\n alt: 'Foto {n}',\n representative: 'Capa',\n setRepresentative: 'Usar como capa',\n setRepresentativeAria: 'Usar a foto {n} como capa',\n remove: 'Remover foto',\n add: 'Adicionar',\n uploading: 'Enviando…',\n dropOrClick: 'Solte fotos ou clique para adicionar',\n emptyHint: 'Selecione várias · Escolha a capa após o envio · Arraste para reordenar',\n uploadTitle: 'Enviar',\n },\n uploadFailed: 'Falha no envio',\n aiAssistant: 'Assistente de escrita com AI',\n insertBlock: 'Inserir bloco',\n blockMenu: 'Menu de blocos',\n imageDialog: {\n title: 'Adicionar imagem',\n chooseFile: 'Escolher imagem do dispositivo',\n orLink: 'ou link da imagem',\n urlLabel: 'URL da imagem',\n previewAlt: 'Prévia da imagem externa',\n addLink: 'Adicionar link',\n },\n customDialog: {\n title: 'Reescrever com um estilo personalizado',\n label: 'Como você quer reescrever?',\n help: 'ex.: em tom descontraído / em estilo formal / em tópicos concisos',\n placeholder: 'Em tom descontraído',\n },\n aiPreview: {\n title: 'Revisar resultado da AI',\n currentTitle: 'Título atual',\n newTitle: 'Novo título',\n currentContent: 'Conteúdo atual',\n appendedContent: 'Conteúdo a adicionar',\n before: 'Antes',\n after: 'Depois',\n },\n menu: {\n ai: 'AI',\n aiContinue: 'Continuar com AI',\n style: 'Estilo',\n insert: 'Inserir',\n paragraph: 'Parágrafo',\n heading1: 'Título 1',\n heading2: 'Título 2',\n heading3: 'Título 3',\n bulletList: 'Lista com marcadores',\n orderedList: 'Lista numerada',\n blockquote: 'Citação',\n codeBlock: 'Bloco de código',\n horizontalRule: 'Divisor',\n image: 'Imagem',\n turnInto: 'Transformar em',\n resetFormatting: 'Redefinir formatação',\n duplicate: 'Duplicar',\n moveUp: 'Mover para cima',\n moveDown: 'Mover para baixo',\n delete: 'Excluir',\n },\n toolbar: {\n link: 'Link',\n image: 'Imagem',\n format: 'Formatar',\n bold: 'Negrito',\n italic: 'Itálico',\n underline: 'Sublinhado',\n strike: 'Tachado',\n title: 'Título',\n heading: 'Cabeçalho',\n subheading: 'Subtítulo',\n body: 'Corpo',\n mono: 'Monoespaçado',\n bulletList: 'Lista com marcadores',\n orderedList: 'Lista numerada',\n blockquote: 'Citação em bloco',\n codeBlock: 'Bloco de código',\n horizontalRule: 'Divisor',\n clearFormatting: 'Limpar formatação',\n undo: 'Desfazer',\n redo: 'Refazer',\n },\n ai: {\n translateView: 'Ver tradução',\n translateAll: 'Traduzir e salvar em {count} idiomas',\n proofread: 'Verificar ortografia',\n polish: 'Aprimorar texto',\n continue: 'Continuar escrevendo',\n summarize: 'Resumir brevemente',\n translateEn: 'Traduzir para inglês',\n translateKo: 'Traduzir para coreano',\n translateEmpty: 'Digite primeiro um título ou um texto para traduzir.',\n title: 'Gerar título a partir do texto',\n custom: 'Reescrever com um estilo personalizado…',\n failed: 'A tarefa de AI falhou. Tente novamente.',\n },\n youtubePrompt: 'Insira um link do YouTube.',\n errors: {\n coverMax: 'Você pode enviar até {max} fotos.',\n imageUrlRequired: 'Insira uma URL de imagem.',\n imageUrlInvalid: 'Insira uma URL de imagem válida.',\n imageUrlHttps: 'Somente URLs de imagem HTTPS são permitidas.',\n imageUrlCredentials: 'URLs com dados de login não são permitidas.',\n imageTimeout: 'A imagem está demorando demais para carregar.',\n imageNotDisplayable: 'Não é possível exibir esta imagem.',\n editorNotReady: 'O editor não está pronto. Tente novamente.',\n imageLinkFailed: 'Não foi possível adicionar o link da imagem.',\n imageOnly: 'Somente arquivos de imagem podem ser enviados.',\n imageTooLarge: 'As imagens originais devem ter {mb}MB ou menos.',\n imageUploadFailed: 'Falha ao enviar a imagem.',\n pasteAsFile: 'Cole ou arraste as fotos como arquivos na área acima.',\n postNotFound: 'Publicação não encontrada.',\n loadPermission: 'Você não tem permissão para carregar esta publicação. Verifique se você fez login.',\n loadFailed: 'Não foi possível carregar a publicação: {message}',\n titleRequired: 'Insira um título.',\n photoRequired: 'Envie pelo menos uma foto.',\n bodyRequired: 'Escreva algum texto ou anexe uma imagem.',\n signInRequired: 'É necessário fazer login.',\n boardMissing: 'Nenhum fórum foi especificado.',\n writeRestricted: 'Publicar e comentar está temporariamente restrito por causa de avisos de conteúdo acumulados.',\n moderationBlocked: 'Há conteúdo que não pode ser publicado.',\n },\n hint: {\n titling: 'Criando o título…',\n reviewing: 'Revisando o conteúdo…',\n saving: 'Salvando…',\n },\n },\n footer: {\n introduction: \"O memi-board é desenvolvido com Nuxt 4, Vue 3 e TypeScript. Nuxt UI e Firebase conectam publicações, comentários e conversas.\",\n eyebrow: \"Um espaço para conversar\",\n tagline: \"Pequenas comunidades. Histórias compartilhadas.\",\n detail: \"Introdução detalhada\",\n links: \"Links e contato\",\n email: \"E-mail\",\n credit: \"Criado por memi\",\n feedback: \"Enviar feedback\",\n feedbackSubject: \"Feedback do memi-board\",\n feedbackBody: \"Feedback:\\n\",\n siteEyebrow: \"Criado com memi-board\",\n changelog: \"Registro de alterações\",\n info: {\n title: \"memi-board\",\n about: \"Sobre o memi-board\",\n sites: \"Casos de uso\",\n history: 'Histórico de versões',\n },\n sites: {\n description: \"Serviços que usam o memi-board para compartilhar publicações e conversas.\",\n memi: \"Um espaço para desenvolvimento e histórias do dia a dia\",\n waiting: \"Um serviço simples de fila de espera por QR code\",\n track: \"Rastreamento GPS para registrar seus trajetos\",\n loop: \"Registro de condução e soluções de sensores\",\n safe: \"Conexão e configuração de um dispositivo contra erros de pedal\",\n inviteTitle: \"Você também usa?\",\n invite: \"Conte o endereço do seu site.\",\n inviteSite: \"Deixe no memi.dev\",\n inviteOr: \"ou\",\n inviteSubject: \"Usamos o memi-board\",\n inviteBody: \"Endereço do site:\\n\",\n },\n stack: {\n ui: 'Interface e experiência',\n data: 'Dados e login',\n writing: 'Escrita e praticidade',\n },\n },\n likes: {\n signInRequired: 'Faça login.',\n commentNotFound: 'Comentário não encontrado.',\n },\n list: {\n boardInfo: {\n creator: 'Criado por',\n managers: 'Gerentes',\n staff: 'Equipe',\n },\n commentCount: '{count} comentários',\n settings: 'Configurações',\n loadFailed: 'Não foi possível carregar a lista: {error}',\n empty: 'Ainda não há publicações.',\n notice: 'Aviso',\n photo: 'Foto',\n likeCount: 'Curtidas {count}',\n info: {\n title: 'Informações do fórum',\n about: 'Sobre este fórum',\n history: 'Histórico de versões',\n },\n stack: {\n framework: 'Framework e linguagem',\n ui: 'UI e estilos',\n backend: 'Backend e dados',\n },\n tech: {\n nuxt: 'Framework SSR baseado em Vue',\n vue: 'Composition API · script setup',\n typescript: 'Dados e componentes com tipagem segura',\n nuxtUi: 'UI de fórum, formulários e modais',\n tailwind: 'Estilos responsivos · claro/escuro',\n lucide: 'Ícones leves e consistentes',\n dayjs: 'Datas legíveis e tempos relativos',\n firestore: 'Banco de dados em tempo real para publicações e comentários',\n auth: 'Login e permissões seguros',\n storage: 'Armazenamento de imagens e anexos',\n vuefire: 'Conexão em tempo real entre Nuxt e Firebase',\n },\n },\n listViewSwitch: {\n card: 'Cartão',\n default: 'Padrão',\n dense: 'Compacta',\n video: 'Vídeo',\n },\n miniComments: {\n empty: 'Ainda não há comentários.',\n blinded: 'Este comentário foi ocultado por um administrador.',\n },\n miniList: {\n empty: 'Ainda não há publicações.',\n },\n miniPicker: {\n selectedCount: 'Selecionadas {count} / {max}',\n layoutHint: '2 ou mais aparecem em carrossel; 4, em grade',\n searchPlaceholder: 'Buscar títulos',\n loading: 'Carregando publicações…',\n noMore: 'Não há mais publicações para escolher.',\n },\n miniPost: {\n empty: 'Nenhuma publicação selecionada.',\n },\n moderation: {\n writeRestricted: 'Publicar e comentar está temporariamente restrito por causa de avisos de conteúdo acumulados.',\n },\n moderationPrompt: {\n localHit: 'Expressões como “{hit}” não são permitidas. Reescreva o texto.',\n localGeneric: 'Há palavrões no texto, então não é possível publicar. Reescreva o texto.',\n genericBlocked: 'Há conteúdo que não pode ser publicado. Edite o texto.',\n categories: {\n abuse: 'palavrões ou insultos',\n spam: 'spam ou publicidade',\n adult: 'conteúdo sexual ou adulto',\n violence: 'violência ou ameaças',\n other: 'conteúdo impróprio',\n },\n },\n moderationStrike: {\n liftSoon: 'liberado em breve',\n liftInHours: 'liberado em cerca de {hours} h',\n liftInDays: 'liberado em cerca de {days} d',\n liftInDaysHours: 'liberado em cerca de {days} d {hours} h',\n },\n posts: {\n boardIdRequired: '[memi-board] boardId é obrigatório.',\n photoRequired: 'Adicione uma foto.',\n bodyRequired: 'Escreva algum texto ou anexe uma imagem.',\n titleRequired: 'Insira um título.',\n },\n profile: {\n stats: {\n posts: '{count} publicações',\n comments: '{count} comentários',\n aiUsage: 'IA usada {used} / {limit}',\n aiUsageResets: 'IA usada {used} / {limit} · reinicia em {hours} h',\n warnings: '{count} avisos',\n },\n notFound: 'Usuário não encontrado.',\n noName: 'Sem nome',\n joined: 'Entrou {time}',\n lastVisit: 'Visto por último {time}',\n },\n profileEditModal: {\n imageOnly: 'Somente arquivos de imagem podem ser selecionados.',\n nameRequired: 'Insira um nome.',\n saveFailed: 'Não foi possível salvar o perfil.',\n title: 'Editar perfil',\n changePhoto: 'Alterar foto',\n name: 'Nome',\n bio: 'Bio',\n bioPlaceholder: 'Conte um pouco sobre você',\n },\n reportButton: {\n failed: 'Não foi possível enviar a denúncia.',\n reported: 'Denunciado',\n title: 'Denunciar publicação',\n done: 'Denúncia recebida. A equipe vai analisá-la.',\n reason: 'Motivo',\n detailPlaceholder: 'Detalhes (opcional)',\n submit: 'Denunciar',\n },\n reportList: {\n staffOnly: 'Somente a equipe pode ver as denúncias.',\n loadFailed: 'Não foi possível carregar a lista: {error}',\n empty: 'Nenhuma denúncia pendente.',\n untitled: 'Publicação sem título',\n author: 'por {name}',\n dismiss: 'Descartar',\n confirm: 'Resolver',\n },\n reports: {\n reason: {\n spam: 'Spam / publicidade',\n abuse: 'Ofensa / ódio / assédio',\n adult: 'Conteúdo sexual',\n illegal: 'Conteúdo ilegal',\n other: 'Outro',\n },\n fallbackLabel: 'Denúncia',\n signInRequired: 'Faça login.',\n cannotReportOwn: 'Você não pode denunciar sua própria publicação.',\n reasonRequired: 'Selecione um motivo.',\n detailTooLong: 'Os detalhes podem ter até {max} caracteres.',\n },\n sectionUtil: {\n kind: {\n list: 'Lista de publicações',\n post: 'Publicações',\n comments: 'Comentários',\n },\n sort: {\n latest: 'Mais recentes',\n likes: 'Mais curtidas',\n },\n untitledPost: 'Publicação',\n view: {\n media: 'Mídia',\n list: 'Lista',\n },\n },\n sections: {\n defaultTitle: 'Seção {n}',\n },\n seo: {\n allCategory: 'Tudo',\n boardDescription: 'Fórum {name}',\n allDescription: 'Fórum: avisos e novidades da comunidade.',\n postFallbackTitle: 'Publicação | {site}',\n postFallbackDescription: 'Fórum',\n photo: 'Foto',\n postDescriptionFallback: 'Publicação do fórum',\n listTitle: '{name} | {site}',\n listTitleAll: 'Fórum | {site}',\n listDescription: '{name}: confira as publicações mais recentes.',\n listDescriptionAll: 'Fórum: avisos e histórias.',\n },\n settings: {\n aiTitle: {\n label: 'Escrever títulos com IA',\n help: 'Se o título de uma nova publicação ficar vazio, a IA escreve um a partir do texto (ou da primeira foto, se não houver texto). As fotos só são enviadas ao Google AI para isso. Desative para exigir um título digitado e parar de enviar fotos.',\n },\n site: {\n apply: 'Aplicar',\n applied: 'Aplicado.',\n title: 'Configurações gerais',\n help: 'Aplicam-se a todo o site. Têm prioridade sobre as configurações do app hospedeiro e entram em vigor assim que você as altera.',\n ai: { label: 'Usar recursos de IA', help: 'Desative se não puder usar IA, por exemplo por causa do custo. Isso desliga a tradução, o assistente de escrita, os títulos com IA e a moderação com IA, e as fotos deixam de ser enviadas à IA. A verificação de palavras bloqueadas continua funcionando.' },\n i18n: { label: 'Usar internacionalização', help: 'Desativada, todas as telas ficam fixas no idioma escolhido abaixo e a tradução é desligada. As traduções já salvas não são apagadas.' },\n locales: { label: 'Idiomas oferecidos', help: 'Somente os {count} idiomas selecionados são traduzidos e exibidos no menu de idiomas. Os demais não recebem novas traduções, e as traduções salvas não são apagadas.' },\n locale: { label: 'Idioma padrão', help: 'O idioma usado quando o app hospedeiro não define um.', fixedLabel: 'Idioma fixo', fixedHelp: 'Todas as telas são exibidas neste idioma.' },\n },\n i18nBoard: {\n label: 'Internacionalização',\n help: 'Quando ativada, o nome e a descrição do quadro e as novas publicações e comentários são traduzidos automaticamente para {count} idiomas e salvos. Desativada, só o texto original é exibido.',\n existing: 'Traduzir também as publicações existentes',\n },\n about: {\n label: 'Mostrar About memi-board',\n help: 'Mostra o link e a janela About memi-board no rodapé de todas as telas do quadro. Desative para ocultar em todo o site.',\n },\n postTranslations: {\n label: 'Traduzir publicações existentes',\n help: 'Encontra publicações cuja tradução está ausente ou não corresponde mais ao original e as traduz e salva de uma só vez. Use em quadros com tradução automática desativada ou para completar publicações que ficaram sem tradução. Não consome a cota diária de IA.',\n scan: 'Encontrar publicações para traduzir',\n run: 'Traduzir {count} publicações',\n confirm: '{count} publicações serão traduzidas e salvas, com uma chamada de IA para cada uma. Continuar?',\n progress: 'Traduzindo… {done} concluídas, {failed} com falha',\n allDone: 'Todas as {total} publicações publicadas têm tradução atualizada.',\n found: '{count} de {total} publicações publicadas precisam de tradução.',\n failed: 'Não foi possível traduzir {count} publicações. Procure novamente e tente de novo.',\n },\n loading: 'Carregando configurações…',\n noAccess: 'Você não tem acesso',\n notFound: {\n title: 'Fórum não encontrado',\n checkAddress: 'Verifique o endereço.',\n checkBoardAddress: 'Verifique o endereço do fórum.',\n },\n newBoard: {\n title: 'Este fórum ainda não existe',\n description: 'Preencha os dados abaixo e salve para criá-lo com este ID.',\n },\n noLabel: 'Sem rótulo',\n option: {\n default: 'Padrão',\n },\n id: {\n label: 'ID da categoria',\n help: 'Usado na URL e nos dados',\n },\n writeRole: {\n label: 'Quem pode publicar',\n help: 'Função mínima necessária para publicar nesta categoria',\n helpShort: 'Função mínima necessária para publicar',\n options: {\n user: 'Usuários ou acima',\n staff: 'Equipe ou acima',\n admin: 'Somente administradores',\n },\n },\n commentWriteRole: {\n label: 'Quem pode comentar',\n help: 'Função mínima necessária para comentar nesta categoria',\n helpShort: 'Função mínima necessária para comentar',\n hiddenFixed: 'Somente a equipe responsável (fixo em fóruns ocultos)',\n },\n staff: {\n label: 'Equipe responsável',\n help: 'Somente a equipe selecionada pode configurar e gerenciar este fórum. Deixe vazio para apenas administradores',\n placeholder: 'Somente administradores (sem equipe definida)',\n },\n label: {\n label: 'Nome de exibição',\n help: 'O nome que os usuários veem',\n },\n description: {\n label: 'Descrição',\n help: 'Exibida no topo do fórum e em outros lugares',\n placeholder: 'Uma breve descrição deste fórum (opcional)',\n },\n visibility: {\n label: 'Visibilidade',\n options: {\n public: {\n label: 'Visível',\n description: 'Exibido na lista completa e nos filtros',\n },\n hidden: {\n label: 'Oculto',\n description: 'Diário ou privado. Somente a equipe responsável pode comentar',\n },\n },\n },\n listView: {\n label: 'Visualização da lista',\n help: 'Como a lista de publicações é exibida',\n options: {\n card: 'Cartão',\n dense: 'Compacta',\n video: 'Vídeo',\n },\n },\n editorType: {\n label: 'Formulário de publicação',\n help: 'Como as publicações são escritas',\n options: {\n default: 'Escrever um título e um texto',\n image: 'Adicionar várias fotos e uma foto de capa',\n },\n },\n bulk: {\n title: 'Aplicar a todos os fóruns',\n apply: 'Aplicar a {count} fóruns',\n applyShort: 'Aplicar',\n confirmTitle: 'Aplicar a todos os fóruns',\n translateUntranslated: 'Traduzir fóruns sem tradução ({count})',\n },\n translationLocales: {\n label: 'Idiomas de tradução',\n },\n locale: {\n label: 'Idioma do fórum',\n auto: 'Automático (seguir o idioma do site)',\n },\n autoTranslate: {\n action: \"Traduzir para {count} idiomas\",\n manualHelp: \"Traduza o nome e a descrição juntos e salve para aplicar.\",\n pending: \"As traduções para {count} idiomas estão prontas. Salve para aplicar.\",\n manualFailed: \"A tradução falhou. Seu texto foi mantido. Tente novamente.\",\n label: 'Traduzir para {count} idiomas ao salvar',\n help: 'Quando ligado, o nome e a descrição são traduzidos para {count} idiomas. Quando desligado, não são traduzidos. Texto inalterado não é traduzido de novo.',\n failed: 'As configurações foram salvas, mas a tradução para {count} idiomas falhou. Salve novamente.',\n ready: 'O nome e a descrição estão salvos em {count} idiomas.',\n },\n action: {\n moveDown: 'Para baixo',\n goToBoard: 'Ir para o fórum',\n deleteBoard: 'Excluir fórum',\n create: 'Criar',\n },\n newCategoryPlaceholder: 'Nome da nova categoria',\n savedCategory: 'Categoria “{label}” salva.',\n savedSettings: 'Configurações do fórum salvas.',\n created: 'Fórum criado.',\n error: {\n orderFailed: 'Não foi possível salvar a ordem das categorias.',\n deleteFailed: 'Não foi possível excluir o fórum e seus dados.',\n saveFailed: 'Não foi possível salvar as configurações do fórum.',\n deleteAllFailed: 'Não foi possível excluir os dados do fórum.',\n },\n danger: {\n title: 'Zona de perigo',\n confirmLabel: 'Digite “{phrase}” para confirmar',\n phrase: 'excluir dados do fórum',\n button: 'Excluir todos os dados',\n done: 'Todos os dados do fórum foram excluídos.',\n },\n },\n shareButton: {\n copied: 'Link copiado',\n },\n signIn: {\n withGoogle: 'Entrar com o Google',\n withApple: 'Entrar com a Apple',\n or: 'ou',\n name: 'Nome',\n email: 'E-mail',\n password: 'Senha',\n signUp: 'Cadastrar-se',\n toSignUp: 'Não tem uma conta? Cadastre-se',\n toSignIn: 'Já tem uma conta? Entrar',\n },\n storage: {\n sourceTooLarge: 'A imagem original deve ter {max}MB ou menos.',\n imageOnly: 'Somente arquivos de imagem podem ser enviados.',\n canvasUnavailable: 'Canvas não está disponível',\n compressFailed: 'Falha na compressão',\n loadFailed: 'Falha ao carregar a imagem',\n },\n swipeHint: {\n title: 'Experimente deslizar para os lados',\n description: 'Deslize para a esquerda para ver a próxima publicação e para a direita para ver a anterior.',\n },\n userCommentList: {\n loadFailed: 'Não foi possível carregar a lista: {error}',\n empty: 'Ainda não há comentários.',\n blinded: 'Este comentário foi ocultado por um administrador.',\n likes: '{count} curtidas',\n },\n userPostList: {\n loadFailed: 'Não foi possível carregar a lista: {error}',\n empty: 'Ainda não há publicações.',\n },\n users: {\n changeRoleFailed: 'Não foi possível alterar a função.',\n loading: 'Carregando usuários…',\n noPermission: {\n title: 'Sem permissão',\n description: 'Somente administradores do fórum podem gerenciar as funções dos usuários.',\n },\n empty: 'Nenhum usuário fez login no fórum ainda.',\n noName: 'Sem nome',\n moderationWarnings: '{count} avisos de conteúdo',\n },\n writingAssistant: {\n dailyLimit: 'O assistente de escrita com IA pode ser usado até {limit} vezes por dia. Tente novamente em cerca de {hours} hora(s).',\n loginRequired: 'Faça login para usar o assistente de escrita com AI.',\n userMissing: 'Não foi possível verificar suas informações de usuário. Tente novamente.',\n contentRequired: 'Primeiro, escreva algum conteúdo para a AI trabalhar.',\n customRequired: 'Escreva uma instrução de como reescrever.',\n emptyResult: 'A AI não conseguiu gerar um resultado. Tente novamente.',\n translateEmpty: 'Digite primeiro um título ou um texto para traduzir.',\n translateTooLong: 'Textos com mais de {limit} caracteres não podem ser salvos em {count} idiomas. Encurte e tente de novo.',\n translateIncomplete: 'Alguns idiomas voltaram vazios. Tente novamente.',\n failed: 'A tarefa de AI falhou. Tente novamente.',\n actions: {\n proofread: 'Verificar ortografia',\n polish: 'Aprimorar frases',\n continue: 'Continuar escrevendo',\n summarize: 'Resumir',\n translateEn: 'Traduzir para inglês',\n translateKo: 'Traduzir para coreano',\n translateAll: 'Traduzir e salvar em {count} idiomas',\n translateSaved: 'Salvo em {count} idiomas. Quem lê vê a tradução do seu idioma.',\n translatePending: 'As traduções para {count} idiomas estão prontas. Elas são salvas com a publicação.',\n translateEmpty: 'Digite primeiro um título ou um texto para traduzir.',\n title: 'Gerar título a partir do texto',\n custom: 'Reescrever com um estilo personalizado…',\n },\n },\n}\n\nexport default messages\n"],"mappings":";AAGA,IAAM,IAA8B;CAClC,aAAa;EACX,QAAQ;EACR,aAAa;EACb,WAAW;EACX,UAAU;CACZ;CACA,MAAM;EACJ,iBAAiB;EACjB,cAAc;EACd,kBAAkB;EAClB,gBAAgB;CAClB;CACA,YAAY,EACV,SAAS,2CACX;CACA,YAAY;EACV,aAAa;EACb,WAAW;EACX,cAAc;EACd,eAAe;EACf,WAAW;EACX,iBAAiB;EACjB,KAAK;EACL,MAAM;CACR;CACA,iBAAiB;EACf,OAAO;EACP,aAAa;EACb,SAAS;CACX;CACA,eAAe;EACb,gBAAgB;EAChB,mBAAmB;EACnB,kBAAkB;EAClB,cAAc;CAChB;CACA,YAAY;EACV,iBAAiB;EACjB,iBAAiB;GACf,OAAO;GACP,MAAM;EACR;CACF;CACA,aAAa;EACX,OAAO;EACP,YAAY;EACZ,YAAY;EACZ,SAAS;CACX;CACA,aAAa;EACX,oBAAoB;EACpB,mBAAmB;EACnB,QAAQ;EACR,gBAAgB;EAChB,iBAAiB;EACjB,mBAAmB;EACnB,SAAS;EACT,aAAa;EACb,aAAa;EACb,QAAQ;EACR,iBAAiB;EACjB,YAAY;EACZ,YAAY;EACZ,aAAa;EACb,WAAW;EACX,cAAc;EACd,WAAW;CACb;CACA,aAAa;EACX,gBAAgB;EAChB,mBAAmB;EACnB,YAAY;EACZ,aAAa;EACb,YAAY;EACZ,SAAS;EACT,eAAe;EACf,MAAM;EACN,OAAO;EACP,SAAS;EACT,QAAQ;CACV;CACA,aAAa;EACX,SAAS;EACT,OAAO;EACP,UAAU;EACV,aAAa;CACf;CACA,eAAe;EACb,eAAe;EACf,cAAc;EACd,aAAa;EACb,aAAa;EACb,iBAAiB;CACnB;CACA,UAAU;EACR,cAAc;EACd,aAAa;EACb,qBAAqB;EACrB,gBAAgB;EAChB,wBAAwB;CAC1B;CACA,QAAQ;EACN,QAAQ;GACN,QAAQ;GACR,MAAM;GACN,OAAO;GACP,MAAM;GACN,QAAQ;GACR,SAAS;GACT,OAAO;GACP,KAAK;GACL,MAAM;GACN,MAAM;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP,MAAM;GACN,QAAQ;GACR,OAAO;GACP,QAAQ;GACR,QAAQ;GACR,SAAS;GACT,OAAO;GACP,OAAO;EACT;EACA,OAAO;GACL,WAAW;GACX,MAAM;GACN,OAAO;GACP,OAAO;GACP,SAAS;EACX;EACA,MAAM;GACJ,OAAO;GACP,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,SAAS;GACT,eAAe;GACf,UAAU;GACV,WAAW;GACX,WAAW;EACb;CACF;CACA,QAAQ;EACN,eAAe;EACf,UAAU;EACV,cAAc;EACd,aAAa;EACb,SAAS;EACT,QAAQ;EACR,KAAK;EACL,OAAO;EACP,YAAY;EACZ,SAAS;EACT,MAAM;EACN,UAAU;CACZ;CACA,QAAQ;EACN,0BAA0B;EAC1B,eAAe;EACf,eAAe;GACb,OAAO;GACP,UAAU;EACZ;EACA,kBAAkB;EAClB,oBAAoB;EACpB,yBAAyB;EACzB,iBAAiB;EACjB,WAAW;EACX,YAAY;EACZ,YAAY;EACZ,OAAO;EACP,iBAAiB;EACjB,OAAO;GACL,WAAW;GACX,UAAU;GACV,KAAK;GACL,gBAAgB;GAChB,mBAAmB;GACnB,uBAAuB;GACvB,QAAQ;GACR,KAAK;GACL,WAAW;GACX,aAAa;GACb,WAAW;GACX,aAAa;EACf;EACA,cAAc;EACd,aAAa;EACb,aAAa;EACb,WAAW;EACX,aAAa;GACX,OAAO;GACP,YAAY;GACZ,QAAQ;GACR,UAAU;GACV,YAAY;GACZ,SAAS;EACX;EACA,cAAc;GACZ,OAAO;GACP,OAAO;GACP,MAAM;GACN,aAAa;EACf;EACA,WAAW;GACT,OAAO;GACP,cAAc;GACd,UAAU;GACV,gBAAgB;GAChB,iBAAiB;GACjB,QAAQ;GACR,OAAO;EACT;EACA,MAAM;GACJ,IAAI;GACJ,YAAY;GACZ,OAAO;GACP,QAAQ;GACR,WAAW;GACX,UAAU;GACV,UAAU;GACV,UAAU;GACV,YAAY;GACZ,aAAa;GACb,YAAY;GACZ,WAAW;GACX,gBAAgB;GAChB,OAAO;GACP,UAAU;GACV,iBAAiB;GACjB,WAAW;GACX,QAAQ;GACR,UAAU;GACV,QAAQ;EACV;EACA,SAAS;GACP,MAAM;GACN,OAAO;GACP,QAAQ;GACR,MAAM;GACN,QAAQ;GACR,WAAW;GACX,QAAQ;GACR,OAAO;GACP,SAAS;GACT,YAAY;GACZ,MAAM;GACN,MAAM;GACN,YAAY;GACZ,aAAa;GACb,YAAY;GACZ,WAAW;GACX,gBAAgB;GAChB,iBAAiB;GACjB,MAAM;GACN,MAAM;EACR;EACA,IAAI;GACF,eAAe;GACf,cAAc;GACd,WAAW;GACX,QAAQ;GACR,UAAU;GACV,WAAW;GACX,aAAa;GACb,aAAa;GACb,gBAAgB;GAChB,OAAO;GACP,QAAQ;GACR,QAAQ;EACV;EACA,eAAe;EACf,QAAQ;GACN,UAAU;GACV,kBAAkB;GAClB,iBAAiB;GACjB,eAAe;GACf,qBAAqB;GACrB,cAAc;GACd,qBAAqB;GACrB,gBAAgB;GAChB,iBAAiB;GACjB,WAAW;GACX,eAAe;GACf,mBAAmB;GACnB,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,YAAY;GACZ,eAAe;GACf,eAAe;GACf,cAAc;GACd,gBAAgB;GAChB,cAAc;GACd,iBAAiB;GACjB,mBAAmB;EACrB;EACA,MAAM;GACJ,SAAS;GACT,WAAW;GACX,QAAQ;EACV;CACF;CACA,QAAQ;EACN,cAAc;EACd,SAAS;EACT,SAAS;EACT,QAAQ;EACR,OAAO;EACP,OAAO;EACP,QAAQ;EACR,UAAU;EACV,iBAAiB;EACjB,cAAc;EACd,aAAa;EACb,WAAW;EACX,MAAM;GACJ,OAAO;GACP,OAAO;GACP,OAAO;GACP,SAAS;EACX;EACA,OAAO;GACL,aAAa;GACb,MAAM;GACN,SAAS;GACT,OAAO;GACP,MAAM;GACN,MAAM;GACN,aAAa;GACb,QAAQ;GACR,YAAY;GACZ,UAAU;GACV,eAAe;GACf,YAAY;EACd;EACA,OAAO;GACL,IAAI;GACJ,MAAM;GACN,SAAS;EACX;CACF;CACA,OAAO;EACL,gBAAgB;EAChB,iBAAiB;CACnB;CACA,MAAM;EACJ,WAAW;GACT,SAAS;GACT,UAAU;GACV,OAAO;EACT;EACA,cAAc;EACd,UAAU;EACV,YAAY;EACZ,OAAO;EACP,QAAQ;EACR,OAAO;EACP,WAAW;EACX,MAAM;GACJ,OAAO;GACP,OAAO;GACP,SAAS;EACX;EACA,OAAO;GACL,WAAW;GACX,IAAI;GACJ,SAAS;EACX;EACA,MAAM;GACJ,MAAM;GACN,KAAK;GACL,YAAY;GACZ,QAAQ;GACR,UAAU;GACV,QAAQ;GACR,OAAO;GACP,WAAW;GACX,MAAM;GACN,SAAS;GACT,SAAS;EACX;CACF;CACA,gBAAgB;EACd,MAAM;EACN,SAAS;EACT,OAAO;EACP,OAAO;CACT;CACA,cAAc;EACZ,OAAO;EACP,SAAS;CACX;CACA,UAAU,EACR,OAAO,4BACT;CACA,YAAY;EACV,eAAe;EACf,YAAY;EACZ,mBAAmB;EACnB,SAAS;EACT,QAAQ;CACV;CACA,UAAU,EACR,OAAO,kCACT;CACA,YAAY,EACV,iBAAiB,gGACnB;CACA,kBAAkB;EAChB,UAAU;EACV,cAAc;EACd,gBAAgB;EAChB,YAAY;GACV,OAAO;GACP,MAAM;GACN,OAAO;GACP,UAAU;GACV,OAAO;EACT;CACF;CACA,kBAAkB;EAChB,UAAU;EACV,aAAa;EACb,YAAY;EACZ,iBAAiB;CACnB;CACA,OAAO;EACL,iBAAiB;EACjB,eAAe;EACf,cAAc;EACd,eAAe;CACjB;CACA,SAAS;EACP,OAAO;GACL,OAAO;GACP,UAAU;GACV,SAAS;GACT,eAAe;GACf,UAAU;EACZ;EACA,UAAU;EACV,QAAQ;EACR,QAAQ;EACR,WAAW;CACb;CACA,kBAAkB;EAChB,WAAW;EACX,cAAc;EACd,YAAY;EACZ,OAAO;EACP,aAAa;EACb,MAAM;EACN,KAAK;EACL,gBAAgB;CAClB;CACA,cAAc;EACZ,QAAQ;EACR,UAAU;EACV,OAAO;EACP,MAAM;EACN,QAAQ;EACR,mBAAmB;EACnB,QAAQ;CACV;CACA,YAAY;EACV,WAAW;EACX,YAAY;EACZ,OAAO;EACP,UAAU;EACV,QAAQ;EACR,SAAS;EACT,SAAS;CACX;CACA,SAAS;EACP,QAAQ;GACN,MAAM;GACN,OAAO;GACP,OAAO;GACP,SAAS;GACT,OAAO;EACT;EACA,eAAe;EACf,gBAAgB;EAChB,iBAAiB;EACjB,gBAAgB;EAChB,eAAe;CACjB;CACA,aAAa;EACX,MAAM;GACJ,MAAM;GACN,MAAM;GACN,UAAU;EACZ;EACA,MAAM;GACJ,QAAQ;GACR,OAAO;EACT;EACA,cAAc;EACd,MAAM;GACJ,OAAO;GACP,MAAM;EACR;CACF;CACA,UAAU,EACR,cAAc,YAChB;CACA,KAAK;EACH,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;EACnB,yBAAyB;EACzB,OAAO;EACP,yBAAyB;EACzB,WAAW;EACX,cAAc;EACd,iBAAiB;EACjB,oBAAoB;CACtB;CACA,UAAU;EACR,SAAS;GACP,OAAO;GACP,MAAM;EACR;EACA,MAAM;GACJ,OAAO;GACP,SAAS;GACT,OAAO;GACP,MAAM;GACN,IAAI;IAAE,OAAO;IAAuB,MAAM;GAA8P;GACxS,MAAM;IAAE,OAAO;IAA4B,MAAM;GAAuI;GACxL,SAAS;IAAE,OAAO;IAAsB,MAAM;GAAuK;GACrN,QAAQ;IAAE,OAAO;IAAiB,MAAM;IAAyD,YAAY;IAAe,WAAW;GAA4C;EACrL;EACA,WAAW;GACT,OAAO;GACP,MAAM;GACN,UAAU;EACZ;EACA,OAAO;GACL,OAAO;GACP,MAAM;EACR;EACA,kBAAkB;GAChB,OAAO;GACP,MAAM;GACN,MAAM;GACN,KAAK;GACL,SAAS;GACT,UAAU;GACV,SAAS;GACT,OAAO;GACP,QAAQ;EACV;EACA,SAAS;EACT,UAAU;EACV,UAAU;GACR,OAAO;GACP,cAAc;GACd,mBAAmB;EACrB;EACA,UAAU;GACR,OAAO;GACP,aAAa;EACf;EACA,SAAS;EACT,QAAQ,EACN,SAAS,SACX;EACA,IAAI;GACF,OAAO;GACP,MAAM;EACR;EACA,WAAW;GACT,OAAO;GACP,MAAM;GACN,WAAW;GACX,SAAS;IACP,MAAM;IACN,OAAO;IACP,OAAO;GACT;EACF;EACA,kBAAkB;GAChB,OAAO;GACP,MAAM;GACN,WAAW;GACX,aAAa;EACf;EACA,OAAO;GACL,OAAO;GACP,MAAM;GACN,aAAa;EACf;EACA,OAAO;GACL,OAAO;GACP,MAAM;EACR;EACA,aAAa;GACX,OAAO;GACP,MAAM;GACN,aAAa;EACf;EACA,YAAY;GACV,OAAO;GACP,SAAS;IACP,QAAQ;KACN,OAAO;KACP,aAAa;IACf;IACA,QAAQ;KACN,OAAO;KACP,aAAa;IACf;GACF;EACF;EACA,UAAU;GACR,OAAO;GACP,MAAM;GACN,SAAS;IACP,MAAM;IACN,OAAO;IACP,OAAO;GACT;EACF;EACA,YAAY;GACV,OAAO;GACP,MAAM;GACN,SAAS;IACP,SAAS;IACT,OAAO;GACT;EACF;EACA,MAAM;GACJ,OAAO;GACP,OAAO;GACP,YAAY;GACZ,cAAc;GACd,uBAAuB;EACzB;EACA,oBAAoB,EAClB,OAAO,sBACT;EACA,QAAQ;GACN,OAAO;GACP,MAAM;EACR;EACA,eAAe;GACb,QAAQ;GACR,YAAY;GACZ,SAAS;GACT,cAAc;GACd,OAAO;GACP,MAAM;GACN,QAAQ;GACR,OAAO;EACT;EACA,QAAQ;GACN,UAAU;GACV,WAAW;GACX,aAAa;GACb,QAAQ;EACV;EACA,wBAAwB;EACxB,eAAe;EACf,eAAe;EACf,SAAS;EACT,OAAO;GACL,aAAa;GACb,cAAc;GACd,YAAY;GACZ,iBAAiB;EACnB;EACA,QAAQ;GACN,OAAO;GACP,cAAc;GACd,QAAQ;GACR,QAAQ;GACR,MAAM;EACR;CACF;CACA,aAAa,EACX,QAAQ,eACV;CACA,QAAQ;EACN,YAAY;EACZ,WAAW;EACX,IAAI;EACJ,MAAM;EACN,OAAO;EACP,UAAU;EACV,QAAQ;EACR,UAAU;EACV,UAAU;CACZ;CACA,SAAS;EACP,gBAAgB;EAChB,WAAW;EACX,mBAAmB;EACnB,gBAAgB;EAChB,YAAY;CACd;CACA,WAAW;EACT,OAAO;EACP,aAAa;CACf;CACA,iBAAiB;EACf,YAAY;EACZ,OAAO;EACP,SAAS;EACT,OAAO;CACT;CACA,cAAc;EACZ,YAAY;EACZ,OAAO;CACT;CACA,OAAO;EACL,kBAAkB;EAClB,SAAS;EACT,cAAc;GACZ,OAAO;GACP,aAAa;EACf;EACA,OAAO;EACP,QAAQ;EACR,oBAAoB;CACtB;CACA,kBAAkB;EAChB,YAAY;EACZ,eAAe;EACf,aAAa;EACb,iBAAiB;EACjB,gBAAgB;EAChB,aAAa;EACb,gBAAgB;EAChB,kBAAkB;EAClB,qBAAqB;EACrB,QAAQ;EACR,SAAS;GACP,WAAW;GACX,QAAQ;GACR,UAAU;GACV,WAAW;GACX,aAAa;GACb,aAAa;GACb,cAAc;GACd,gBAAgB;GAChB,kBAAkB;GAClB,gBAAgB;GAChB,OAAO;GACP,QAAQ;EACV;CACF;AACF"}
@@ -0,0 +1,104 @@
1
+ <script setup lang="ts">
2
+ import { computed } from 'vue'
3
+ import { formatDate, useMemiBoardI18n, useMemiBoardSettings } from 'memi-board/runtime'
4
+ import MemiBoardInfoPerson from './BoardInfoPerson.vue'
5
+
6
+ const props = defineProps<{
7
+ boardId?: string
8
+ title: string
9
+ description?: string
10
+ }>()
11
+
12
+ const { getBoard } = useMemiBoardSettings()
13
+ const { t, locale } = useMemiBoardI18n({ boardLocale: () => getBoard(props.boardId ?? '')?.locale })
14
+
15
+ const board = computed(() => props.boardId ? getBoard(props.boardId) : undefined)
16
+ const managers = computed(() => board.value?.allowedManagerUids ?? [])
17
+ // 매니저는 스태프 권한도 가지므로 두 목록에 모두 있으면 매니저에만 보인다.
18
+ const staff = computed(() => (board.value?.allowedStaffUids ?? []).filter(uid => !managers.value.includes(uid)))
19
+ const creatorUid = computed(() => board.value?.createdByUid)
20
+ const createdAt = computed(() => formatDate(board.value?.createdAt, locale.value))
21
+ const hasInfo = computed(() => !!(props.description || managers.value.length || staff.value.length || creatorUid.value))
22
+ </script>
23
+
24
+ <template>
25
+ <h1 class="min-w-0 text-2xl font-bold tracking-tight text-highlighted">
26
+ <UPopover
27
+ v-if="hasInfo"
28
+ :content="{ side: 'bottom', align: 'start' }"
29
+ :ui="{ content: 'h-auto w-80 max-w-[calc(100vw-2rem)] p-4' }"
30
+ >
31
+ <button
32
+ type="button"
33
+ class="block max-w-full cursor-help truncate text-start"
34
+ >
35
+ {{ title }}
36
+ </button>
37
+ <template #content>
38
+ <div class="flex flex-col gap-3">
39
+ <p
40
+ v-if="description"
41
+ class="whitespace-pre-line text-sm text-default"
42
+ >
43
+ {{ description }}
44
+ </p>
45
+ <dl class="flex flex-col gap-2 text-sm">
46
+ <div
47
+ v-if="creatorUid"
48
+ class="flex flex-col gap-1"
49
+ >
50
+ <dt class="text-xs text-muted">
51
+ {{ t('list.boardInfo.creator') }}
52
+ </dt>
53
+ <dd class="flex flex-wrap items-center gap-x-2 gap-y-1">
54
+ <MemiBoardInfoPerson :uid="creatorUid" />
55
+ <span
56
+ v-if="createdAt"
57
+ class="text-xs text-muted"
58
+ >
59
+ {{ createdAt }}
60
+ </span>
61
+ </dd>
62
+ </div>
63
+ <div
64
+ v-if="managers.length"
65
+ class="flex flex-col gap-1"
66
+ >
67
+ <dt class="text-xs text-muted">
68
+ {{ t('list.boardInfo.managers') }}
69
+ </dt>
70
+ <dd class="flex flex-col gap-1">
71
+ <MemiBoardInfoPerson
72
+ v-for="uid in managers"
73
+ :key="uid"
74
+ :uid="uid"
75
+ />
76
+ </dd>
77
+ </div>
78
+ <div
79
+ v-if="staff.length"
80
+ class="flex flex-col gap-1"
81
+ >
82
+ <dt class="text-xs text-muted">
83
+ {{ t('list.boardInfo.staff') }}
84
+ </dt>
85
+ <dd class="flex flex-col gap-1">
86
+ <MemiBoardInfoPerson
87
+ v-for="uid in staff"
88
+ :key="uid"
89
+ :uid="uid"
90
+ />
91
+ </dd>
92
+ </div>
93
+ </dl>
94
+ </div>
95
+ </template>
96
+ </UPopover>
97
+ <span
98
+ v-else
99
+ class="block truncate"
100
+ >
101
+ {{ title }}
102
+ </span>
103
+ </h1>
104
+ </template>
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ import { toRef } from 'vue'
3
+ import { useMemiBoardI18n, useMemiBoardUserProfile } from 'memi-board/runtime'
4
+
5
+ const props = defineProps<{ uid: string }>()
6
+ const { t } = useMemiBoardI18n()
7
+ const { profile } = useMemiBoardUserProfile(toRef(props, 'uid'))
8
+ </script>
9
+
10
+ <template>
11
+ <div class="flex min-w-0 items-center gap-2">
12
+ <UAvatar
13
+ :src="profile?.photoURL ?? undefined"
14
+ :alt="profile?.displayName ?? t('common.label.anonymous')"
15
+ size="2xs"
16
+ />
17
+ <span class="truncate text-sm">{{ profile?.displayName ?? t('common.label.anonymous') }}</span>
18
+ </div>
19
+ </template>
@@ -10,6 +10,7 @@ import MemiBoardListImage from './ListImage.vue'
10
10
  import MemiBoardListVideo from './ListVideo.vue'
11
11
  import MemiBoardListCard from './ListCard.vue'
12
12
  import MemiBoardListViewSwitch from './ListViewSwitch.vue'
13
+ import MemiBoardInfo from './BoardInfo.vue'
13
14
 
14
15
  const props = withDefaults(defineProps<{
15
16
  pageSize?: number
@@ -220,22 +221,12 @@ function postTo(post: PostModel): string | undefined {
220
221
  <MemiBoardSurface :introduction="introduction">
221
222
  <div class="flex flex-col gap-2" :dir="dir">
222
223
  <div v-if="hasHeader" class="flex items-center justify-between gap-4">
223
- <UTooltip
224
- v-if="title && listDescription"
225
- :delay-duration="0"
226
- :text="listDescription"
227
- :ui="{ content: 'h-auto max-w-xs py-2', text: 'whitespace-pre-line overflow-visible' }"
228
- >
229
- <h1 class="min-w-0 cursor-help truncate text-2xl font-bold tracking-tight text-highlighted">
230
- {{ title }}
231
- </h1>
232
- </UTooltip>
233
- <h1
234
- v-else-if="title"
235
- class="min-w-0 truncate text-2xl font-bold tracking-tight text-highlighted"
236
- >
237
- {{ title }}
238
- </h1>
224
+ <MemiBoardInfo
225
+ v-if="title"
226
+ :board-id="resolvedBoardId"
227
+ :title="title"
228
+ :description="listDescription"
229
+ />
239
230
  <div class="flex shrink-0 items-center gap-2">
240
231
  <UButton
241
232
  v-if="settingsTo && canManageSettings"
package/dist/storage.js CHANGED
@@ -1,4 +1,4 @@
1
- import { G as e, T as t, a as n, c as r, h as i, n as a } from "./commentImages-Dm5Jv2vB.js";
1
+ import { G as e, T as t, a as n, c as r, h as i, n as a } from "./commentImages-DsW2yCqu.js";
2
2
  import { useFirebaseApp as o } from "vuefire";
3
3
  import { getAuth as s } from "firebase/auth";
4
4
  import { deleteObject as c, getDownloadURL as l, getStorage as u, ref as d, uploadBytes as f, uploadBytesResumable as p } from "firebase/storage";
package/dist/types.d.ts CHANGED
@@ -250,6 +250,10 @@ export interface BoardModel {
250
250
  allowedStaffUids?: string[];
251
251
  /** 이 게시판의 설정 및 스태프 배정을 관리하는 매니저 */
252
252
  allowedManagerUids?: string[];
253
+ /** 게시판을 만든 사용자 uid. 이 기능 이전에 만든 게시판은 비어 있다. */
254
+ createdByUid?: string;
255
+ /** 게시판을 만든 시각. 이 기능 이전에 만든 게시판은 비어 있다. */
256
+ createdAt?: Timestamp;
253
257
  /**
254
258
  * 게시판 화면 언어(MEMI_BOARD_LOCALES 코드). 비어 있으면 호스트 언어를 따른다.
255
259
  */
@@ -1,3 +1,4 @@
1
1
  import { Firestore, DocumentData } from 'firebase/firestore';
2
2
  import { BoardPathConfig } from './boardPaths';
3
- export declare function saveBoardWithVisibility(db: Firestore, cfg: BoardPathConfig, id: string, payload: DocumentData): Promise<void>;
3
+ /** `createdByUid` 는 문서가 아직 없을 때(새 게시판)만 기록한다. 이후 저장은 만든 사람을 바꾸지 않는다. */
4
+ export declare function saveBoardWithVisibility(db: Firestore, cfg: BoardPathConfig, id: string, payload: DocumentData, createdByUid?: string): Promise<void>;
@@ -348,6 +348,11 @@ var e = {
348
348
  commentNotFound: "找不到该评论。"
349
349
  },
350
350
  list: {
351
+ boardInfo: {
352
+ creator: "创建者",
353
+ managers: "负责经理",
354
+ staff: "负责员工"
355
+ },
351
356
  commentCount: "{count} 条评论",
352
357
  settings: "设置",
353
358
  loadFailed: "无法加载列表:{error}",
@@ -754,4 +759,4 @@ var e = {
754
759
  //#endregion
755
760
  export { e as default };
756
761
 
757
- //# sourceMappingURL=zh-rDhjLmNl.js.map
762
+ //# sourceMappingURL=zh-CI6Sd8PD.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"zh-CI6Sd8PD.js","names":[],"sources":["../src/i18n/messages/zh.ts"],"sourcesContent":["import type { MemiBoardMessages } from '../translate'\n\n/** 짧은 화면 문구만 번역한다. 빠진 키는 en → ko 순으로 폴백된다. */\nconst messages: MemiBoardMessages = {\n attachments: {\n attach: '添加附件({count} / {max})',\n dropOrClick: '拖放文件或点击添加',\n uploading: '正在上传文件…',\n maxFiles: '最多可添加 {max} 个附件。',\n },\n auth: {\n writeRestricted: '由于内容警告累计,发帖和评论功能已被暂时限制。',\n strikeSuffix: '(警告 {count}/{threshold})',\n strikeRestricted: '警告已达 {count} 次,发帖和评论功能将被限制。',\n notInitialized: '[memi-board] Firebase Auth 尚未初始化。',\n },\n authorMemo: {\n tooLong: '备注最多 {max} 个字。',\n },\n authorMenu: {\n viewProfile: '查看资料',\n viewPosts: '查看帖子',\n viewComments: '查看评论',\n memoAriaLabel: '关于该作者的备注',\n memoTitle: '仅自己可见的备注',\n memoPlaceholder: '记下关于该作者的内容…',\n bad: '差',\n good: '好',\n },\n avatarCropModal: {\n title: '裁剪头像',\n description: '将以正方形(1:1)显示,请调整区域。',\n confirm: '裁剪并上传',\n },\n boardSettings: {\n signInRequired: '请先登录。',\n idAndNameRequired: '请输入版块 ID 和名称。',\n deleteIdRequired: '需要提供要删除的版块 ID。',\n nameRequired: '请输入版块名称。',\n },\n boardUsers: {\n unsupportedRole: '不支持该角色。',\n roleDescription: {\n admin: '管理用户角色、版块设置及所有内容。',\n user: '可发帖和评论,仅能编辑或删除自己的内容。',\n },\n },\n commentFeed: {\n empty: '暂无评论。',\n emptyLiked: '暂无被点赞的评论。',\n loadFailed: '无法加载列表:{error}',\n blinded: '该评论已被管理员屏蔽。',\n },\n commentForm: {\n translationSkipped: '评论已发布,但未翻译。你可以稍后在编辑表单中翻译。',\n hiddenBoardDenied: '隐藏版块仅限负责的工作人员评论。',\n denied: '你没有在此版块评论的权限。',\n signInRequired: '请先登录。',\n writeRestricted: '由于内容警告累计,发帖和评论功能已被暂时限制。',\n moderationBlocked: '包含无法发布的内容。',\n replyTo: '回复 {name}',\n placeholder: '输入评论',\n submitReply: '回复',\n submit: '发表评论',\n signInToComment: '登录后才能发表评论。',\n attachHint: '将图片拖到这里,或点击选择。',\n attachNote: 'jpg、png、gif、webp。过大的图片会缩小到 5MB 以下。',\n removeImage: '移除附件图片',\n imageOnly: '只能附加 jpg、png、gif、webp 图片。',\n uploadFailed: '图片上传失败。',\n uploading: '正在上传图片…',\n },\n commentItem: {\n editRestricted: '评论编辑功能已被暂时限制。',\n moderationBlocked: '包含无法发布的内容。',\n editFailed: '无法修改评论。',\n blindFailed: '无法更改屏蔽状态。',\n likeFailed: '点赞失败。',\n blinded: '该评论已被管理员屏蔽。',\n attachedImage: '评论中的图片',\n edit: '编辑评论',\n blind: '屏蔽评论',\n unblind: '取消屏蔽评论',\n delete: '删除评论',\n },\n commentList: {\n loading: '正在加载评论',\n empty: '暂无评论。',\n loadMore: '更多评论',\n loadingMore: '正在加载更多评论',\n },\n commentThread: {\n deleteConfirm: '确定要删除这条评论吗?',\n deleteFailed: '无法删除评论。',\n hideReplies: '收起回复',\n showReplies: '{count} 条回复',\n loadMoreReplies: '更多回复',\n },\n comments: {\n bodyRequired: '请输入评论内容。',\n bodyTooLong: '评论最多 {max} 个字。',\n replyTargetNotFound: '找不到要回复的评论。',\n threadNotFound: '找不到该评论串。',\n hasRepliesCannotDelete: '有回复的评论目前无法删除。',\n },\n common: {\n action: {\n cancel: '取消',\n save: '保存',\n saved: '已保存',\n edit: '编辑',\n delete: '删除',\n confirm: '确定',\n close: '关闭',\n add: '添加',\n more: '更多',\n prev: '上一篇',\n next: '下一篇',\n retry: '重试',\n reply: '回复',\n like: '点赞',\n unlike: '取消点赞',\n share: '分享',\n report: '举报',\n signIn: '登录',\n signOut: '退出登录',\n write: '发帖',\n toTop: '顶部',\n },\n label: {\n anonymous: '匿名',\n user: '用户',\n image: '图片',\n draft: '草稿',\n loading: '加载中…',\n },\n role: {\n admin: '管理员',\n staff: '工作人员',\n user: '用户',\n },\n date: {\n justNow: '刚刚',\n fewSecondsAgo: '几秒前',\n checking: '正在确认时间',\n createdAt: '创建时间:{time}',\n updatedAt: '修改时间:{time}',\n },\n },\n detail: {\n deleteConfirm: '确定要删除这篇帖子吗?此操作无法撤销。',\n notFound: '找不到该帖子。',\n draftPreview: '未发布预览',\n draftNotice: '尚未发布。发布前仅作者本人可见。',\n publish: '发布',\n notice: '公告',\n pin: '设为公告',\n unpin: '取消公告',\n backToList: '返回列表',\n postNav: '帖子导航',\n list: '列表',\n comments: '评论',\n },\n editor: {\n titleOptionalPlaceholder: '标题(留空则由 AI 生成)',\n titleAiNotice: 'AI 已根据正文生成标题。满意请保存,也可以先修改。',\n translateView: {\n title: '翻译预览:{language}',\n notSaved: '尚未保存,仅为预览。',\n },\n titlePlaceholder: '标题',\n contentPlaceholder: '输入正文… 输入 / 可打开块菜单。',\n imageContentPlaceholder: '输入内容…',\n tagsPlaceholder: '输入标签后按 Enter',\n pinNotice: '设为公告',\n submitEdit: '完成修改',\n submitNext: '下一步:预览',\n apply: '应用',\n imageOptimizing: '正在优化并上传图片…',\n cover: {\n imageLink: '图片链接',\n addPhoto: '添加照片',\n alt: '照片 {n}',\n representative: '封面',\n setRepresentative: '设为封面',\n setRepresentativeAria: '将照片 {n} 设为封面',\n remove: '移除照片',\n add: '添加',\n uploading: '上传中…',\n dropOrClick: '拖放照片或点击添加',\n emptyHint: '可多选 · 上传后选择封面 · 拖动调整顺序',\n uploadTitle: '上传',\n },\n uploadFailed: '上传失败',\n aiAssistant: 'AI 写作助手',\n insertBlock: '插入块',\n blockMenu: '块菜单',\n imageDialog: {\n title: '添加图片',\n chooseFile: '从设备中选择图片',\n orLink: '或使用图片链接',\n urlLabel: '图片 URL',\n previewAlt: '外部图片预览',\n addLink: '添加链接',\n },\n customDialog: {\n title: '改写为自定义风格',\n label: '想怎么改写?',\n help: '例如:用东北话风格 / 用正式书面语 / 改成简洁的要点',\n placeholder: '用东北话风格',\n },\n aiPreview: {\n title: '确认 AI 结果',\n currentTitle: '当前标题',\n newTitle: '新标题',\n currentContent: '当前内容',\n appendedContent: '将添加的内容',\n before: '修改前',\n after: '修改后',\n },\n menu: {\n ai: 'AI',\n aiContinue: '用 AI 续写',\n style: '样式',\n insert: '插入',\n paragraph: '正文',\n heading1: '标题 1',\n heading2: '标题 2',\n heading3: '标题 3',\n bulletList: '无序列表',\n orderedList: '有序列表',\n blockquote: '引用',\n codeBlock: '代码块',\n horizontalRule: '分隔线',\n image: '图片',\n turnInto: '转换为',\n resetFormatting: '重置格式',\n duplicate: '复制',\n moveUp: '上移',\n moveDown: '下移',\n delete: '删除',\n },\n toolbar: {\n link: '链接',\n image: '图片',\n format: '格式',\n bold: '粗体',\n italic: '斜体',\n underline: '下划线',\n strike: '删除线',\n title: '标题',\n heading: '大标题',\n subheading: '小标题',\n body: '正文',\n mono: '等宽',\n bulletList: '无序列表',\n orderedList: '有序列表',\n blockquote: '块引用',\n codeBlock: '代码块',\n horizontalRule: '分隔线',\n clearFormatting: '清除格式',\n undo: '撤销',\n redo: '重做',\n },\n ai: {\n translateView: '翻译预览',\n translateAll: '翻译并保存为{count}种语言',\n proofread: '拼写检查',\n polish: '润色文字',\n continue: '自然续写',\n summarize: '简短总结',\n translateEn: '翻译成英语',\n translateKo: '翻译成韩语',\n translateEmpty: '请先输入要翻译的标题或正文。',\n title: '根据正文生成标题',\n custom: '改写为自定义风格…',\n failed: 'AI 处理失败,请重试。',\n },\n youtubePrompt: '请输入 YouTube 链接。',\n errors: {\n coverMax: '最多可上传 {max} 张照片。',\n imageUrlRequired: '请输入图片地址。',\n imageUrlInvalid: '请输入有效的图片地址。',\n imageUrlHttps: '仅支持 HTTPS 图片地址。',\n imageUrlCredentials: '不能使用包含登录信息的地址。',\n imageTimeout: '图片加载时间过长。',\n imageNotDisplayable: '无法显示该图片。',\n editorNotReady: '编辑器未准备就绪,请重试。',\n imageLinkFailed: '无法添加图片链接。',\n imageOnly: '只能上传图片文件。',\n imageTooLarge: '原始图片不能超过 {mb}MB。',\n imageUploadFailed: '图片上传失败。',\n pasteAsFile: '请将照片以文件形式粘贴或拖到上方区域。',\n postNotFound: '找不到该帖子。',\n loadPermission: '没有加载该帖子的权限,请检查登录状态。',\n loadFailed: '无法加载帖子:{message}',\n titleRequired: '请输入标题。',\n photoRequired: '请至少上传一张照片。',\n bodyRequired: '请在正文中输入文字或添加图片。',\n signInRequired: '请先登录。',\n boardMissing: '未指定版块。',\n writeRestricted: '由于内容警告累计,发帖和评论功能已被暂时限制。',\n moderationBlocked: '包含无法发布的内容。',\n },\n hint: {\n titling: '正在生成标题…',\n reviewing: '正在审核内容…',\n saving: '正在保存…',\n },\n },\n footer: {\n introduction: \"memi-board 基于 Nuxt 4、Vue 3 和 TypeScript 构建,借助 Nuxt UI 和 Firebase,让帖子、评论与交流自然相连。\",\n eyebrow: \"让交流发生的空间\",\n tagline: \"小小的社区,共同的故事。\",\n detail: \"详细介绍\",\n links: \"链接与联系\",\n email: \"电子邮件\",\n credit: \"由 memi 制作\",\n feedback: \"发送反馈\",\n feedbackSubject: \"memi-board 反馈\",\n feedbackBody: \"意见:\\n\",\n siteEyebrow: \"使用 memi-board 构建\",\n changelog: \"更新日志\",\n info: {\n title: \"memi-board\",\n about: \"关于 memi-board\",\n sites: \"应用案例\",\n history: '版本历史',\n },\n sites: {\n description: \"这些服务使用 memi-board 连接帖子与交流。\",\n memi: \"分享开发经验与日常故事的空间\",\n waiting: \"扫码即可使用的便捷排队服务\",\n track: \"记录出行路线的 GPS 轨迹追踪\",\n loop: \"车辆行驶记录与传感器解决方案\",\n safe: \"踏板误操作防护设备的连接与设置\",\n inviteTitle: \"你也在用吗?\",\n invite: \"把网站地址告诉我们吧。\",\n inviteSite: \"留在 memi.dev\",\n inviteOr: \"或\",\n inviteSubject: \"我们在使用 memi-board\",\n inviteBody: \"网站地址:\\n\",\n },\n stack: {\n ui: '界面与体验',\n data: '数据与登录',\n writing: '写作与便捷功能',\n },\n },\n likes: {\n signInRequired: '请先登录。',\n commentNotFound: '找不到该评论。',\n },\n list: {\n boardInfo: {\n creator: '创建者',\n managers: '负责经理',\n staff: '负责员工',\n },\n commentCount: '{count} 条评论',\n settings: '设置',\n loadFailed: '无法加载列表:{error}',\n empty: '暂无帖子。',\n notice: '公告',\n photo: '照片',\n likeCount: '点赞 {count}',\n info: {\n title: '版块信息',\n about: '关于本版块',\n history: '版本历史',\n },\n stack: {\n framework: '框架与语言',\n ui: 'UI 与样式',\n backend: '后端与数据',\n },\n tech: {\n nuxt: '基于 Vue 的 SSR 框架',\n vue: 'Composition API · script setup',\n typescript: '类型安全的数据与组件',\n nuxtUi: '版块、表单与弹窗 UI',\n tailwind: '响应式 · 浅色/深色样式',\n lucide: '轻量且风格统一的图标',\n dayjs: '易读的日期与相对时间',\n firestore: '用于帖子和评论的实时数据库',\n auth: '安全的用户登录与权限',\n storage: '图片与附件存储',\n vuefire: 'Nuxt 与 Firebase 实时连接',\n },\n },\n listViewSwitch: {\n card: '卡片',\n default: '默认',\n dense: '紧凑',\n video: '视频',\n },\n miniComments: {\n empty: '暂无评论。',\n blinded: '该评论已被管理员屏蔽。',\n },\n miniList: {\n empty: '暂无帖子。',\n },\n miniPicker: {\n selectedCount: '已选 {count} / {max}',\n layoutHint: '2 篇起为轮播,4 篇为网格',\n searchPlaceholder: '搜索标题',\n loading: '正在加载帖子…',\n noMore: '没有更多可选的帖子了。',\n },\n miniPost: {\n empty: '未选择帖子。',\n },\n moderation: {\n writeRestricted: '由于内容警告累计,发帖和评论功能已被暂时限制。',\n },\n moderationPrompt: {\n localHit: '不能使用“{hit}”之类的表达,请换种说法。',\n localGeneric: '内容包含脏话或粗俗用语,无法发布,请修改措辞。',\n genericBlocked: '包含无法发布的内容,请修改后再试。',\n categories: {\n abuse: '脏话、粗俗用语或侮辱',\n spam: '垃圾信息或广告',\n adult: '色情或成人内容',\n violence: '暴力或威胁',\n other: '不当内容',\n },\n },\n moderationStrike: {\n liftSoon: '即将解除',\n liftInHours: '约 {hours} 小时后解除',\n liftInDays: '约 {days} 天后解除',\n liftInDaysHours: '约 {days} 天 {hours} 小时后解除',\n },\n posts: {\n boardIdRequired: '[memi-board] 需要提供 boardId。',\n photoRequired: '请上传照片。',\n bodyRequired: '请在正文中输入文字或添加图片。',\n titleRequired: '请输入标题。',\n },\n profile: {\n stats: {\n posts: '{count} 篇帖子',\n comments: '{count} 条评论',\n aiUsage: 'AI 已用 {used} / {limit}',\n aiUsageResets: 'AI 已用 {used} / {limit} · {hours} 小时后重置',\n warnings: '{count} 次警告',\n },\n notFound: '找不到该用户。',\n noName: '未命名',\n joined: '{time} 加入',\n lastVisit: '最近访问 {time}',\n },\n profileEditModal: {\n imageOnly: '只能选择图片文件。',\n nameRequired: '请输入名称。',\n saveFailed: '无法保存个人资料。',\n title: '编辑个人资料',\n changePhoto: '更换照片',\n name: '名称',\n bio: '个人简介',\n bioPlaceholder: '介绍一下自己吧',\n },\n reportButton: {\n failed: '举报失败。',\n reported: '已举报',\n title: '举报帖子',\n done: '举报已提交,工作人员将进行审核。',\n reason: '原因',\n detailPlaceholder: '详细说明(选填)',\n submit: '举报',\n },\n reportList: {\n staffOnly: '仅工作人员可查看举报列表。',\n loadFailed: '无法加载列表:{error}',\n empty: '暂无待处理的举报。',\n untitled: '无标题帖子',\n author: '作者 {name}',\n dismiss: '驳回',\n confirm: '已处理',\n },\n reports: {\n reason: {\n spam: '垃圾信息/广告',\n abuse: '辱骂/仇恨/骚扰',\n adult: '色情内容',\n illegal: '违法信息',\n other: '其他',\n },\n fallbackLabel: '举报',\n signInRequired: '请先登录。',\n cannotReportOwn: '不能举报自己的帖子。',\n reasonRequired: '请选择举报原因。',\n detailTooLong: '详细说明最多 {max} 个字。',\n },\n sectionUtil: {\n kind: {\n list: '帖子列表',\n post: '帖子',\n comments: '评论合集',\n },\n sort: {\n latest: '最新',\n likes: '最多点赞',\n },\n untitledPost: '帖子',\n view: {\n media: '媒体',\n list: '列表',\n },\n },\n sections: {\n defaultTitle: '区块 {n}',\n },\n seo: {\n allCategory: '全部',\n boardDescription: '{name} 版块',\n allDescription: '版块 — 查看公告和社区动态。',\n postFallbackTitle: '帖子 | {site}',\n postFallbackDescription: '版块',\n photo: '照片',\n postDescriptionFallback: '版块帖子',\n listTitle: '{name} 版块 | {site}',\n listTitleAll: '版块 | {site}',\n listDescription: '{name} 版块 — 查看最新动态。',\n listDescriptionAll: '版块 — 查看公告和话题。',\n },\n settings: {\n aiTitle: {\n label: '用 AI 自动生成标题',\n help: '新帖子的标题留空时,AI 会根据正文(没有正文则根据第一张照片)生成标题。照片仅在生成标题时发送给 Google AI。关闭后必须自己填写标题,也不会发送照片。',\n },\n site: {\n apply: '应用',\n applied: '已应用。',\n title: '全站设置',\n help: '适用于整个网站。优先于宿主应用的设置,修改后立即生效。',\n ai: { label: '使用 AI 功能', help: '因费用等原因无法使用 AI 时请关闭。关闭后,翻译、写作助手、AI 标题和 AI 审核都会停用,照片也不会再发送给 AI。违禁词检查仍然有效。' },\n i18n: { label: '启用国际化', help: '关闭后,所有页面固定为下方选择的一种语言,翻译功能也会关闭。已保存的翻译不会被删除。' },\n locales: { label: '可用语言', help: '仅翻译所选的 {count} 种语言,并显示在语言菜单中。未选择的语言不会生成新的翻译,已保存的翻译不会被删除。' },\n locale: { label: '默认语言', help: '宿主应用未指定语言时使用的语言。', fixedLabel: '固定语言', fixedHelp: '所有页面都以此语言显示。' },\n },\n i18nBoard: {\n label: '国际化',\n help: '开启后,版块名称、说明以及新帖子和评论会自动翻译成 {count} 种语言并一并保存。关闭后只显示原文。',\n existing: '同时翻译已有帖子',\n },\n about: {\n label: '显示 About memi-board',\n help: '在每个版块页面底部显示 About memi-board 链接和弹窗。关闭后将在整个网站隐藏。',\n },\n postTranslations: {\n label: '翻译已有帖子',\n help: '查找缺少翻译或与原文不一致的帖子,并一次性翻译保存。适用于关闭了自动翻译的版块,或补齐漏翻的帖子。不消耗每日 AI 次数。',\n scan: '查找需要翻译的帖子',\n run: '翻译 {count} 篇帖子',\n confirm: '将翻译并保存 {count} 篇帖子,每篇都会调用一次 AI。是否继续?',\n progress: '翻译中… 已完成 {done},失败 {failed}',\n allDone: '全部 {total} 篇已发布帖子的翻译都是最新的。',\n found: '{total} 篇已发布帖子中有 {count} 篇需要翻译。',\n failed: '有 {count} 篇帖子翻译失败。请重新查找后再试。',\n },\n loading: '正在加载设置。',\n noAccess: '没有访问权限',\n notFound: {\n title: '版块不存在',\n checkAddress: '请检查地址是否正确。',\n checkBoardAddress: '请检查版块地址是否正确。',\n },\n newBoard: {\n title: '该版块尚未创建',\n description: '填写以下信息并保存后,将以此 ID 新建版块。',\n },\n noLabel: '无标签',\n option: {\n default: '默认',\n },\n id: {\n label: '分类 ID',\n help: '用于网址和数据的标识',\n },\n writeRole: {\n label: '发帖权限',\n help: '可在此分类发帖的最低角色',\n helpShort: '可发帖的最低角色',\n options: {\n user: '普通用户及以上',\n staff: '工作人员及以上',\n admin: '仅管理员',\n },\n },\n commentWriteRole: {\n label: '评论权限',\n help: '可在此分类评论的最低角色',\n helpShort: '可评论的最低角色',\n hiddenFixed: '仅负责的工作人员(隐藏版块固定)',\n },\n staff: {\n label: '负责的工作人员',\n help: '仅指定的工作人员可设置和管理此版块。留空则仅限管理员',\n placeholder: '仅管理员(未指定工作人员)',\n },\n label: {\n label: '显示名称',\n help: '用户看到的名称',\n },\n description: {\n label: '说明',\n help: '显示在版块顶部等位置的提示文字',\n placeholder: '关于此版块的简短说明(选填)',\n },\n visibility: {\n label: '可见范围',\n options: {\n public: {\n label: '可见',\n description: '显示在全部列表和筛选中',\n },\n hidden: {\n label: '隐藏',\n description: '日记、私密用途。仅负责的工作人员可评论',\n },\n },\n },\n listView: {\n label: '列表视图',\n help: '帖子列表的显示方式',\n options: {\n card: '卡片',\n dense: '紧凑',\n video: '视频',\n },\n },\n editorType: {\n label: '输入表单',\n help: '发帖页面的编写方式',\n options: {\n default: '填写标题和正文',\n image: '上传多张照片并设置封面',\n },\n },\n bulk: {\n title: '应用到所有版块',\n apply: '应用到 {count} 个版块',\n applyShort: '应用',\n confirmTitle: '应用到所有版块',\n translateUntranslated: '翻译未翻译的版块 ({count})',\n },\n translationLocales: {\n label: '翻译语言',\n },\n locale: {\n label: '版块语言',\n auto: '自动(跟随网站语言)',\n },\n autoTranslate: {\n action: \"翻译为{count}种语言\",\n manualHelp: \"一起翻译显示名称和说明,翻译后请点击保存以应用。\",\n pending: \"{count}种语言的翻译已就绪,请点击保存以应用。\",\n manualFailed: \"翻译失败,输入内容已保留,请重试。\",\n label: '保存时翻译成{count}种语言',\n help: '打开后,保存时会把名称和说明翻译成{count}种语言。关闭时不翻译。文字没变就不会再次翻译。',\n failed: '设置已保存,但翻译成{count}种语言失败了。请再次保存。',\n ready: '名称和说明已保存为{count}种语言。',\n },\n action: {\n moveDown: '下移',\n goToBoard: '前往版块',\n deleteBoard: '删除版块',\n create: '创建',\n },\n newCategoryPlaceholder: '新分类名称',\n savedCategory: '已保存“{label}”分类。',\n savedSettings: '版块设置已保存。',\n created: '版块已创建。',\n error: {\n orderFailed: '无法保存分类顺序。',\n deleteFailed: '无法删除版块及其关联数据。',\n saveFailed: '无法保存版块设置。',\n deleteAllFailed: '无法删除版块数据。',\n },\n danger: {\n title: '危险区域',\n confirmLabel: '请输入“{phrase}”以确认',\n phrase: '删除版块数据',\n button: '删除所有数据',\n done: '已删除所有版块数据。',\n },\n },\n shareButton: {\n copied: '链接已复制',\n },\n signIn: {\n withGoogle: '使用 Google 登录',\n withApple: '使用 Apple 登录',\n or: '或',\n name: '名称',\n email: '邮箱',\n password: '密码',\n signUp: '注册',\n toSignUp: '还没有账号?注册',\n toSignIn: '已有账号?登录',\n },\n storage: {\n sourceTooLarge: '原始图片不能超过 {max}MB。',\n imageOnly: '只能上传图片文件。',\n canvasUnavailable: '无法使用 Canvas',\n compressFailed: '压缩失败',\n loadFailed: '图片加载失败',\n },\n swipeHint: {\n title: '试试左右滑动',\n description: '向左滑动查看下一篇,向右滑动查看上一篇。',\n },\n userCommentList: {\n loadFailed: '无法加载列表:{error}',\n empty: '暂无评论。',\n blinded: '该评论已被管理员屏蔽。',\n likes: '点赞 {count}',\n },\n userPostList: {\n loadFailed: '无法加载列表:{error}',\n empty: '暂无帖子。',\n },\n users: {\n changeRoleFailed: '无法更改角色。',\n loading: '正在加载用户列表。',\n noPermission: {\n title: '没有权限',\n description: '仅版块管理员可管理用户角色。',\n },\n empty: '暂无登录过此版块的用户。',\n noName: '未命名',\n moderationWarnings: '内容警告 {count} 次',\n },\n writingAssistant: {\n dailyLimit: 'AI 写作助手每天最多可使用 {limit} 次。请在约 {hours} 小时后再试。',\n loginRequired: '登录后才能使用 AI 写作助手。',\n userMissing: '请确认用户信息后重试。',\n contentRequired: '请先输入要让 AI 润色的内容。',\n customRequired: '请输入改写要求。',\n emptyResult: 'AI 未能生成结果,请重试。',\n translateEmpty: '请先输入要翻译的标题或正文。',\n translateTooLong: '正文超过{limit}字时无法保存为{count}种语言。请缩短后再试。',\n translateIncomplete: '部分语言的翻译是空的。请重试。',\n failed: 'AI 处理失败,请重试。',\n actions: {\n proofread: '拼写检查',\n polish: '润色文字',\n continue: '自然续写',\n summarize: '简短总结',\n translateEn: '翻译成英语',\n translateKo: '翻译成韩语',\n translateAll: '翻译并保存为{count}种语言',\n translateSaved: '已保存为{count}种语言。用其他语言查看时会看到译文。',\n translatePending: '已准备好{count}种语言的翻译。保存文章时会一并记录。',\n translateEmpty: '请先输入要翻译的标题或正文。',\n title: '根据正文生成标题',\n custom: '改写为自定义风格…',\n },\n },\n}\n\nexport default messages\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "memi-board",
3
- "version": "0.55.2",
3
+ "version": "0.56.0",
4
4
  "type": "module",
5
5
  "description": "Board (forum) module for Nuxt 4 + Nuxt UI + VueFire/Firebase",
6
6
  "license": "MIT",