memi-board 0.56.2 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +55 -9
- package/dist/{ar-CQhBdHu3.js → ar-GNguZBN4.js} +45 -4
- package/dist/ar-GNguZBN4.js.map +1 -0
- package/dist/{commentImages-DsW2yCqu.js → commentImages-CRK_2uVi.js} +195 -70
- package/dist/commentImages-CRK_2uVi.js.map +1 -0
- package/dist/composables/useMemiBoardModeration.d.ts +2 -0
- package/dist/composables/useMemiBoardPosts.d.ts +1 -1
- package/dist/composables/useMemiBoardReports.d.ts +102 -3
- package/dist/composables/useMemiBoardUserDirectory.d.ts +20 -0
- package/dist/composables/useMemiBoardUserProfile.d.ts +1 -1
- package/dist/composables/useMemiBoardUsers.d.ts +1 -1
- package/dist/{de-B4GZqxQj.js → de-CS0iRLqe.js} +45 -4
- package/dist/de-CS0iRLqe.js.map +1 -0
- package/dist/{en-BDkfivhc.js → en-DeExi-DR.js} +129 -4
- package/dist/en-DeExi-DR.js.map +1 -0
- package/dist/{es-DzFDaLwo.js → es-dlEFrox-.js} +45 -4
- package/dist/es-dlEFrox-.js.map +1 -0
- package/dist/{fr-Zf5mcs8m.js → fr-B9sjKJF4.js} +45 -4
- package/dist/fr-B9sjKJF4.js.map +1 -0
- package/dist/{id-CaWN8212.js → id-Ca7skouh.js} +45 -4
- package/dist/id-Ca7skouh.js.map +1 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1089 -829
- package/dist/index.js.map +1 -1
- package/dist/{ja-xDttH9CE.js → ja-ByVLGIDd.js} +45 -4
- package/dist/ja-ByVLGIDd.js.map +1 -0
- package/dist/module.mjs +4 -0
- package/dist/module.mjs.map +1 -1
- package/dist/{pt-WIfxYYWQ.js → pt-COQL_Q7A.js} +45 -4
- package/dist/pt-COQL_Q7A.js.map +1 -0
- package/dist/runtime/components/AccountDeletion.vue +64 -0
- package/dist/runtime/components/AuthorMenu.vue +4 -4
- package/dist/runtime/components/CommentFeed.vue +17 -13
- package/dist/runtime/components/CommentForm.vue +58 -56
- package/dist/runtime/components/CommentImageField.vue +18 -13
- package/dist/runtime/components/CommentItem.vue +95 -60
- package/dist/runtime/components/CommentList.vue +10 -1
- package/dist/runtime/components/CommentThread.vue +16 -2
- package/dist/runtime/components/CustomFieldEditor.vue +10 -8
- package/dist/runtime/components/Detail.vue +18 -10
- package/dist/runtime/components/Editor.vue +1 -5
- package/dist/runtime/components/ImageLightbox.vue +126 -58
- package/dist/runtime/components/LikeButton.vue +14 -11
- package/dist/runtime/components/ListViewSwitch.vue +10 -10
- package/dist/runtime/components/Profile.vue +14 -2
- package/dist/runtime/components/ProfileEditModal.vue +20 -3
- package/dist/runtime/components/ReportButton.vue +22 -13
- package/dist/runtime/components/ReportList.vue +77 -93
- package/dist/runtime/components/UserListControls.vue +29 -0
- package/dist/runtime/components/UserListPagination.vue +17 -0
- package/dist/runtime/components/UserManagementEmail.vue +21 -0
- package/dist/runtime/components/UserRoleGuide.vue +38 -0
- package/dist/runtime/components/Users.vue +21 -59
- package/dist/runtime/components/UsersSettings.vue +119 -0
- package/dist/storage.js +1 -1
- package/dist/types.d.ts +5 -0
- package/dist/utils/postSlug.d.ts +12 -0
- package/dist/utils/profileNameModeration.d.ts +8 -0
- package/dist/utils/userDirectoryPage.d.ts +19 -0
- package/dist/{zh-CI6Sd8PD.js → zh-DBjX9qAS.js} +45 -4
- package/dist/zh-DBjX9qAS.js.map +1 -0
- package/docs/account-deletion.md +60 -0
- package/docs/firebase-setup.md +77 -0
- package/docs/firestore.rules.example +78 -4
- package/docs/host-integration.md +85 -11
- package/docs/storage.rules.example +7 -2
- package/package.json +3 -2
- package/scripts/backfill-post-slugs.mjs +38 -0
- package/dist/ar-CQhBdHu3.js.map +0 -1
- package/dist/commentImages-DsW2yCqu.js.map +0 -1
- package/dist/de-B4GZqxQj.js.map +0 -1
- package/dist/en-BDkfivhc.js.map +0 -1
- package/dist/es-DzFDaLwo.js.map +0 -1
- package/dist/fr-Zf5mcs8m.js.map +0 -1
- package/dist/id-CaWN8212.js.map +0 -1
- package/dist/ja-xDttH9CE.js.map +0 -1
- package/dist/pt-WIfxYYWQ.js.map +0 -1
- package/dist/zh-CI6Sd8PD.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"es-dlEFrox-.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 dropOrClick: 'Suelta archivos o haz clic para añadir',\n uploading: 'Subiendo archivos…',\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 translationSkipped: 'El comentario se publicó sin traducción. Puedes traducirlo más tarde desde el formulario de edición.',\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 attachHint: 'Suelta una imagen aquí o haz clic para elegir una.',\n attachNote: 'jpg, png, gif, webp. Las imágenes grandes se reducen a 5MB o menos.',\n removeImage: 'Quitar imagen adjunta',\n imageOnly: 'Solo se pueden adjuntar imágenes jpg, png, gif y webp.',\n uploadFailed: 'No se pudo subir la imagen.',\n uploading: 'Subiendo imagen…',\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 attachedImage: 'Imagen adjunta al 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 zoomIn: \"Ampliar\",\n zoomOut: \"Reducir\",\n fitImage: \"Ajustar a la pantalla\",\n originalImage: \"Tamaño original (100 %)\",\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 imageControls: \"Controles de zoom de imagen\",\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 notice: 'Aviso',\n pin: 'Fijar como aviso',\n unpin: 'Quitar aviso',\n backToList: 'Volver a la lista',\n postNav: 'Navegación de publicaciones',\n list: 'Lista',\n comments: 'Comentarios',\n },\n editor: {\n titleOptionalPlaceholder: 'Título (déjalo vacío y la IA escribirá uno)',\n titleAiNotice: 'La IA ha escrito un título a partir de tu texto. Guárdalo si te gusta o edítalo antes.',\n translateView: {\n title: 'Vista previa de la traducción: {language}',\n notSaved: 'No se ha guardado. Es solo una vista previa.',\n },\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 pinNotice: 'Fijar como aviso',\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 translateView: 'Ver traducción',\n translateAll: 'Traducir y guardar en {count} idiomas',\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 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 titling: 'Creando el título…',\n reviewing: 'Revisando el contenido…',\n saving: 'Guardando…',\n },\n },\n footer: {\n introduction: \"memi-board está creado con Nuxt 4, Vue 3 y TypeScript. Nuxt UI y Firebase conectan publicaciones, comentarios y conversaciones.\",\n eyebrow: \"Un espacio para conversar\",\n tagline: \"Pequeñas comunidades. Historias compartidas.\",\n detail: \"Introducción detallada\",\n links: \"Enlaces y contacto\",\n email: \"Correo\",\n credit: \"Creado por memi\",\n feedback: \"Enviar comentarios\",\n feedbackSubject: \"Comentarios sobre memi-board\",\n feedbackBody: \"Comentarios:\\n\",\n siteEyebrow: \"Creado con memi-board\",\n changelog: \"Registro de cambios\",\n info: {\n title: \"memi-board\",\n about: \"Acerca de memi-board\",\n sites: \"Casos de uso\",\n history: 'Historial de versiones',\n },\n sites: {\n description: \"Servicios que utilizan memi-board para compartir publicaciones y conversaciones.\",\n memi: \"Un espacio para el desarrollo y las historias cotidianas\",\n waiting: \"Un sencillo servicio de lista de espera con código QR\",\n track: \"Seguimiento GPS para registrar tus rutas\",\n loop: \"Registro de conducción y soluciones de sensores\",\n safe: \"Conexión y configuración de un dispositivo contra errores de pedal\",\n inviteTitle: \"¿Tú también lo usas?\",\n invite: \"Cuéntanos la dirección de tu sitio.\",\n inviteSite: \"Déjalo en memi.dev\",\n inviteOr: \"o\",\n inviteSubject: \"Usamos memi-board\",\n inviteBody: \"Dirección del sitio:\\n\",\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 boardInfo: {\n creator: 'Creado por',\n managers: 'Gestores',\n staff: 'Personal',\n },\n commentCount: '{count} comentarios',\n settings: 'Configuración',\n loadFailed: 'No se pudo cargar la lista: {error}',\n empty: 'Aún no hay publicaciones.',\n notice: 'Aviso',\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 card: 'Tarjeta',\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 stats: {\n posts: '{count} publicaciones',\n comments: '{count} comentarios',\n aiUsage: 'IA usada {used} / {limit}',\n aiUsageResets: 'IA usada {used} / {limit} · se restablece en {hours} h',\n warnings: '{count} advertencias',\n },\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 \"status\": {\n \"open\": \"Recibido\",\n \"dismissed\": \"Descartado\",\n \"actioned\": \"Revisión completada\"\n },\n \"resultTitle\": \"Estado del reporte\",\n \"result\": {\n \"open\": \"Tu reporte se recibió y está pendiente de revisión.\",\n \"dismissed\": \"La revisión no encontró una infracción.\",\n \"actioned\": \"La revisión ha terminado. Consulta el motivo abajo.\"\n },\n \"reviewedAt\": \"Revisado\",\n \"reviewNote\": \"Motivo de resolución\",\n \"noNote\": \"No se registró un motivo en esta entrada anterior.\",\n \"detailRequired\": \"Detalles (obligatorios para Otro)\",\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\n \"tabs\": {\n \"open\": \"Pendientes\",\n \"processed\": \"Historial\"\n },\n \"filterLabel\": \"Filtrar reportes\",\n \"orderHint\": \"Más recientes por fecha de recepción.\",\n \"historyEmpty\": \"Sin historial de revisión.\",\n \"confirm\": \"Marcar como revisado\",\n \"dismissTitle\": \"Descartar reporte\",\n \"resolveTitle\": \"Completar revisión\",\n \"actionHint\": \"Solo cambia el estado del reporte. No oculta ni elimina la publicación.\",\n \"publicNote\": \"Este motivo también será visible para quien reportó.\",\n \"reviewer\": \"Responsable\",\n \"reviewNote\": \"Motivo de resolución\",\n \"unknownReviewer\": \"Responsable desconocido\",\n \"actionFailed\": \"No se pudo procesar. Inténtalo de nuevo.\",\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 \"otherDetailRequired\": \"Indica los detalles al seleccionar Otro.\",\n \"reviewNoteRequired\": \"Escribe un motivo de resolución.\",\n \"alreadyReviewed\": \"Este reporte ya fue revisado. Consulta la lista.\",\n \"manageRequired\": \"No tienes permiso para revisar este reporte.\",\n \"alreadyReported\": \"Ya reportaste esta publicación.\",\n \"statusLoadFailed\": \"No se pudo cargar el estado. Actualiza la página.\",\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 aiTitle: {\n label: 'Escribir títulos con IA',\n help: 'Si dejas vacío el título de una publicación nueva, la IA escribe uno a partir del texto (o de la primera foto si no hay texto). Las fotos solo se envían a Google AI para eso. Desactívalo para exigir un título escrito y dejar de enviar fotos.',\n },\n site: {\n apply: 'Aplicar',\n applied: 'Aplicado.',\n title: 'Ajustes generales',\n help: 'Se aplican a todo el sitio. Prevalecen sobre los ajustes de la aplicación anfitriona y surten efecto al cambiarlos.',\n ai: { label: 'Usar funciones de IA', help: 'Desactívalo si no puedes usar IA, por ejemplo por el coste. Desactiva la traducción, el asistente de escritura, los títulos con IA y la moderación con IA, y las fotos dejan de enviarse a la IA. La comprobación de palabras prohibidas sigue funcionando.' },\n i18n: { label: 'Usar internacionalización', help: 'Si está desactivada, todas las pantallas quedan fijadas en el idioma elegido abajo y la traducción se desactiva. Las traducciones guardadas no se eliminan.' },\n locales: { label: 'Idiomas disponibles', help: 'Solo los {count} idiomas seleccionados se traducen y aparecen en el menú de idiomas. Los demás no reciben traducciones nuevas y las traducciones guardadas no se eliminan.' },\n locale: { label: 'Idioma predeterminado', help: 'El idioma que se usa cuando la aplicación anfitriona no define uno.', fixedLabel: 'Idioma fijo', fixedHelp: 'Todas las pantallas se muestran en este idioma.' },\n },\n i18nBoard: {\n label: 'Internacionalización',\n help: 'Si está activada, el nombre y la descripción del tablero y las publicaciones y comentarios nuevos se traducen automáticamente a {count} idiomas y se guardan. Si está desactivada, solo se muestra el texto original.',\n existing: 'Traducir también las publicaciones existentes',\n },\n about: {\n label: 'Mostrar About memi-board',\n help: 'Muestra el enlace y la ventana de About memi-board al pie de cada pantalla del tablero. Desactívalo para ocultarlo en todo el sitio.',\n },\n postTranslations: {\n label: 'Traducir publicaciones existentes',\n help: 'Busca publicaciones cuya traducción falta o ya no coincide con el original, y las traduce y guarda de una vez. Úsalo en tableros con la traducción automática desactivada o para completar publicaciones que se quedaron sin traducir. No consume la cuota diaria de IA.',\n scan: 'Buscar publicaciones por traducir',\n run: 'Traducir {count} publicaciones',\n confirm: 'Se traducirán y guardarán {count} publicaciones, con una llamada de IA por cada una. ¿Continuar?',\n progress: 'Traduciendo… {done} listas, {failed} con error',\n allDone: 'Las {total} publicaciones publicadas tienen la traducción al día.',\n found: '{count} de {total} publicaciones publicadas necesitan traducción.',\n failed: 'No se pudieron traducir {count} publicaciones. Busca de nuevo y vuelve a intentarlo.',\n },\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 card: 'Tarjeta',\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 bulk: {\n title: 'Aplicar a todos los tableros',\n apply: 'Aplicar a {count} tableros',\n applyShort: 'Aplicar',\n confirmTitle: 'Aplicar a todos los tableros',\n translateUntranslated: 'Traducir tableros sin traducir ({count})',\n },\n translationLocales: {\n label: 'Idiomas de traducción',\n },\n locale: {\n label: 'Idioma del tablero',\n auto: 'Automático (según el idioma del sitio)',\n },\n autoTranslate: {\n action: \"Traducir a {count} idiomas\",\n manualHelp: \"Traduce el nombre y la descripción juntos y guarda para aplicar los cambios.\",\n pending: \"Las traducciones a {count} idiomas están listas. Guarda para aplicarlas.\",\n manualFailed: \"La traducción falló. Tu texto se conserva. Inténtalo de nuevo.\",\n label: 'Traducir a {count} idiomas al guardar',\n help: 'Si está activado, el nombre y la descripción se traducen a {count} idiomas. Si está desactivado, no se traducen. El texto sin cambios no se vuelve a traducir.',\n failed: 'Los ajustes se guardaron, pero falló la traducción a {count} idiomas. Guarda de nuevo.',\n ready: 'El nombre y la descripción están guardados en {count} 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 dailyLimit: 'El asistente de escritura con IA se puede usar hasta {limit} veces al día. Vuelve a intentarlo en unas {hours} hora(s).',\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 {count} 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 {count} idiomas',\n translateSaved: 'Guardado en {count} idiomas. Quien lee ve la traducción de su idioma.',\n translatePending: 'Las traducciones a {count} 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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AAU;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,WACX;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,wBACT;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,iBACV;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"}
|
|
@@ -101,6 +101,10 @@ var e = {
|
|
|
101
101
|
},
|
|
102
102
|
common: {
|
|
103
103
|
action: {
|
|
104
|
+
zoomIn: "Agrandir",
|
|
105
|
+
zoomOut: "Réduire",
|
|
106
|
+
fitImage: "Ajuster à l’écran",
|
|
107
|
+
originalImage: "Taille originale (100 %)",
|
|
104
108
|
cancel: "Annuler",
|
|
105
109
|
save: "Enregistrer",
|
|
106
110
|
saved: "Enregistré",
|
|
@@ -124,6 +128,7 @@ var e = {
|
|
|
124
128
|
toTop: "Haut"
|
|
125
129
|
},
|
|
126
130
|
label: {
|
|
131
|
+
imageControls: "Commandes de zoom de l’image",
|
|
127
132
|
anonymous: "Anonyme",
|
|
128
133
|
user: "Utilisateur",
|
|
129
134
|
image: "Image",
|
|
@@ -458,7 +463,22 @@ var e = {
|
|
|
458
463
|
done: "Signalement reçu. L’équipe va l’examiner.",
|
|
459
464
|
reason: "Motif",
|
|
460
465
|
detailPlaceholder: "Détails (facultatif)",
|
|
461
|
-
submit: "Signaler"
|
|
466
|
+
submit: "Signaler",
|
|
467
|
+
status: {
|
|
468
|
+
open: "Reçu",
|
|
469
|
+
dismissed: "Rejeté",
|
|
470
|
+
actioned: "Examen terminé"
|
|
471
|
+
},
|
|
472
|
+
resultTitle: "État du signalement",
|
|
473
|
+
result: {
|
|
474
|
+
open: "Votre signalement a été reçu et attend un examen.",
|
|
475
|
+
dismissed: "L’examen n’a pas constaté de violation.",
|
|
476
|
+
actioned: "L’examen est terminé. Consultez le motif ci-dessous."
|
|
477
|
+
},
|
|
478
|
+
reviewedAt: "Examiné le",
|
|
479
|
+
reviewNote: "Motif de traitement",
|
|
480
|
+
noNote: "Aucun motif enregistré pour cette ancienne entrée.",
|
|
481
|
+
detailRequired: "Détails (obligatoires pour Autre)"
|
|
462
482
|
},
|
|
463
483
|
reportList: {
|
|
464
484
|
staffOnly: "Seule l’équipe peut consulter les signalements.",
|
|
@@ -467,7 +487,22 @@ var e = {
|
|
|
467
487
|
untitled: "Publication sans titre",
|
|
468
488
|
author: "par {name}",
|
|
469
489
|
dismiss: "Rejeter",
|
|
470
|
-
|
|
490
|
+
tabs: {
|
|
491
|
+
open: "En attente",
|
|
492
|
+
processed: "Historique"
|
|
493
|
+
},
|
|
494
|
+
filterLabel: "Filtrer les signalements",
|
|
495
|
+
orderHint: "Les plus récemment reçus d’abord.",
|
|
496
|
+
historyEmpty: "Aucun historique.",
|
|
497
|
+
confirm: "Marquer comme examiné",
|
|
498
|
+
dismissTitle: "Rejeter le signalement",
|
|
499
|
+
resolveTitle: "Terminer l’examen",
|
|
500
|
+
actionHint: "Seul l’état du signalement change. La publication n’est ni masquée ni supprimée.",
|
|
501
|
+
publicNote: "Ce motif est aussi visible par la personne qui a signalé.",
|
|
502
|
+
reviewer: "Responsable",
|
|
503
|
+
reviewNote: "Motif de traitement",
|
|
504
|
+
unknownReviewer: "Responsable inconnu",
|
|
505
|
+
actionFailed: "Échec du traitement. Réessayez."
|
|
471
506
|
},
|
|
472
507
|
reports: {
|
|
473
508
|
reason: {
|
|
@@ -481,7 +516,13 @@ var e = {
|
|
|
481
516
|
signInRequired: "Veuillez vous connecter.",
|
|
482
517
|
cannotReportOwn: "Vous ne pouvez pas signaler votre propre publication.",
|
|
483
518
|
reasonRequired: "Veuillez choisir un motif.",
|
|
484
|
-
detailTooLong: "Les détails sont limités à {max} caractères."
|
|
519
|
+
detailTooLong: "Les détails sont limités à {max} caractères.",
|
|
520
|
+
otherDetailRequired: "Précisez les détails pour le motif Autre.",
|
|
521
|
+
reviewNoteRequired: "Saisissez un motif de traitement.",
|
|
522
|
+
alreadyReviewed: "Ce signalement a déjà été traité. Consultez la liste.",
|
|
523
|
+
manageRequired: "Vous ne pouvez pas traiter ce signalement.",
|
|
524
|
+
alreadyReported: "Vous avez déjà signalé cette publication.",
|
|
525
|
+
statusLoadFailed: "Impossible de charger l’état. Actualisez la page."
|
|
485
526
|
},
|
|
486
527
|
sectionUtil: {
|
|
487
528
|
kind: {
|
|
@@ -759,4 +800,4 @@ var e = {
|
|
|
759
800
|
//#endregion
|
|
760
801
|
export { e as default };
|
|
761
802
|
|
|
762
|
-
//# sourceMappingURL=fr-
|
|
803
|
+
//# sourceMappingURL=fr-B9sjKJF4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fr-B9sjKJF4.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 dropOrClick: 'Déposez des fichiers ou cliquez pour ajouter',\n uploading: 'Envoi des fichiers…',\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 translationSkipped: 'Le commentaire a été publié sans traduction. Vous pourrez le traduire plus tard depuis le formulaire de modification.',\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 attachHint: 'Déposez une image ici ou cliquez pour en choisir une.',\n attachNote: 'jpg, png, gif, webp. Les grandes images sont réduites à 5 Mo ou moins.',\n removeImage: 'Retirer l’image jointe',\n imageOnly: 'Seules les images jpg, png, gif et webp peuvent être jointes.',\n uploadFailed: 'Impossible d’envoyer l’image.',\n uploading: 'Envoi de l’image…',\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 attachedImage: 'Image jointe au commentaire',\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 zoomIn: \"Agrandir\",\n zoomOut: \"Réduire\",\n fitImage: \"Ajuster à l’écran\",\n originalImage: \"Taille originale (100 %)\",\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 imageControls: \"Commandes de zoom de l’image\",\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 notice: 'Annonce',\n pin: 'Épingler en annonce',\n unpin: 'Retirer l’annonce',\n backToList: 'Retour à la liste',\n postNav: 'Navigation entre publications',\n list: 'Liste',\n comments: 'Commentaires',\n },\n editor: {\n titleOptionalPlaceholder: 'Titre (laissez vide et l\\'IA en écrira un)',\n titleAiNotice: 'L\\'IA a écrit un titre à partir de votre texte. Enregistrez-le s\\'il vous plaît, ou modifiez-le d\\'abord.',\n translateView: {\n title: 'Aperçu de la traduction : {language}',\n notSaved: 'Non enregistré. Ceci n\\'est qu\\'un aperçu.',\n },\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 pinNotice: 'Épingler en annonce',\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 translateView: 'Voir la traduction',\n translateAll: 'Traduire et enregistrer en {count} langues',\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 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 titling: 'Création du titre…',\n reviewing: 'Vérification du contenu…',\n saving: 'Enregistrement…',\n },\n },\n footer: {\n introduction: \"memi-board repose sur Nuxt 4, Vue 3 et TypeScript. Nuxt UI et Firebase relient naturellement publications, commentaires et conversations.\",\n eyebrow: \"Un espace de conversation\",\n tagline: \"Petites communautés. Histoires partagées.\",\n detail: \"Présentation détaillée\",\n links: \"Liens et contact\",\n email: \"E-mail\",\n credit: \"Créé par memi\",\n feedback: \"Envoyer un retour\",\n feedbackSubject: \"Retour sur memi-board\",\n feedbackBody: \"Retour :\\n\",\n siteEyebrow: \"Créé avec memi-board\",\n changelog: \"Journal des modifications\",\n info: {\n title: \"memi-board\",\n about: \"À propos de memi-board\",\n sites: \"Réalisations\",\n history: 'Historique des versions',\n },\n sites: {\n description: \"Ces services utilisent memi-board pour partager des publications et échanger.\",\n memi: \"Un espace consacré au développement et au quotidien\",\n waiting: \"Un service de file d’attente simple par QR code\",\n track: \"Le suivi GPS pour enregistrer vos parcours\",\n loop: \"Enregistrement des trajets et solutions de capteurs\",\n safe: \"Connexion et réglage d’un dispositif contre les erreurs de pédale\",\n inviteTitle: \"Vous aussi, vous l’utilisez ?\",\n invite: \"Indiquez-nous l’adresse de votre site.\",\n inviteSite: \"Laisser sur memi.dev\",\n inviteOr: \"ou\",\n inviteSubject: \"Nous utilisons memi-board\",\n inviteBody: \"Adresse du site :\\n\",\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 boardInfo: {\n creator: 'Créé par',\n managers: 'Gestionnaires',\n staff: 'Équipe',\n },\n commentCount: '{count} commentaires',\n settings: 'Paramètres',\n loadFailed: 'Impossible de charger la liste : {error}',\n empty: 'Aucune publication pour l’instant.',\n notice: 'Annonce',\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 card: 'Carte',\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 stats: {\n posts: '{count} publications',\n comments: '{count} commentaires',\n aiUsage: 'IA utilisée {used} / {limit}',\n aiUsageResets: 'IA utilisée {used} / {limit} · réinitialisation dans {hours} h',\n warnings: '{count} avertissements',\n },\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 \"status\": {\n \"open\": \"Reçu\",\n \"dismissed\": \"Rejeté\",\n \"actioned\": \"Examen terminé\"\n },\n \"resultTitle\": \"État du signalement\",\n \"result\": {\n \"open\": \"Votre signalement a été reçu et attend un examen.\",\n \"dismissed\": \"L’examen n’a pas constaté de violation.\",\n \"actioned\": \"L’examen est terminé. Consultez le motif ci-dessous.\"\n },\n \"reviewedAt\": \"Examiné le\",\n \"reviewNote\": \"Motif de traitement\",\n \"noNote\": \"Aucun motif enregistré pour cette ancienne entrée.\",\n \"detailRequired\": \"Détails (obligatoires pour Autre)\",\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\n \"tabs\": {\n \"open\": \"En attente\",\n \"processed\": \"Historique\"\n },\n \"filterLabel\": \"Filtrer les signalements\",\n \"orderHint\": \"Les plus récemment reçus d’abord.\",\n \"historyEmpty\": \"Aucun historique.\",\n \"confirm\": \"Marquer comme examiné\",\n \"dismissTitle\": \"Rejeter le signalement\",\n \"resolveTitle\": \"Terminer l’examen\",\n \"actionHint\": \"Seul l’état du signalement change. La publication n’est ni masquée ni supprimée.\",\n \"publicNote\": \"Ce motif est aussi visible par la personne qui a signalé.\",\n \"reviewer\": \"Responsable\",\n \"reviewNote\": \"Motif de traitement\",\n \"unknownReviewer\": \"Responsable inconnu\",\n \"actionFailed\": \"Échec du traitement. Réessayez.\",\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 \"otherDetailRequired\": \"Précisez les détails pour le motif Autre.\",\n \"reviewNoteRequired\": \"Saisissez un motif de traitement.\",\n \"alreadyReviewed\": \"Ce signalement a déjà été traité. Consultez la liste.\",\n \"manageRequired\": \"Vous ne pouvez pas traiter ce signalement.\",\n \"alreadyReported\": \"Vous avez déjà signalé cette publication.\",\n \"statusLoadFailed\": \"Impossible de charger l’état. Actualisez la page.\",\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 aiTitle: {\n label: 'Écrire les titres avec l\\'IA',\n help: 'Si le titre d\\'une nouvelle publication est vide, l\\'IA en écrit un à partir du texte (ou de la première photo s\\'il n\\'y a pas de texte). Les photos ne sont envoyées à Google AI que pour cela. Désactivez pour exiger un titre saisi et ne plus envoyer de photos.',\n },\n site: {\n apply: 'Appliquer',\n applied: 'Appliqué.',\n title: 'Paramètres généraux',\n help: 'S\\'appliquent à tout le site. Ils prennent le pas sur les réglages de l\\'application hôte et sont appliqués immédiatement.',\n ai: { label: 'Utiliser les fonctions d\\'IA', help: 'Désactivez si vous ne pouvez pas utiliser l\\'IA, par exemple pour des raisons de coût. Cela désactive la traduction, l\\'assistant d\\'écriture, les titres par IA et la modération par IA, et les photos ne sont plus envoyées à l\\'IA. La vérification des mots interdits continue de fonctionner.' },\n i18n: { label: 'Utiliser l\\'internationalisation', help: 'Désactivée, tous les écrans sont figés sur la langue choisie ci-dessous et la traduction est désactivée. Les traductions déjà enregistrées ne sont pas supprimées.' },\n locales: { label: 'Langues proposées', help: 'Seules les {count} langues sélectionnées sont traduites et affichées dans le menu des langues. Les autres n\\'obtiennent pas de nouvelles traductions, et les traductions enregistrées ne sont pas supprimées.' },\n locale: { label: 'Langue par défaut', help: 'La langue utilisée quand l\\'application hôte n\\'en définit pas.', fixedLabel: 'Langue fixe', fixedHelp: 'Tous les écrans s\\'affichent dans cette langue.' },\n },\n i18nBoard: {\n label: 'Internationalisation',\n help: 'Activée, le nom et la description du forum ainsi que les nouvelles publications et commentaires sont traduits automatiquement en {count} langues et enregistrés. Désactivée, seul le texte original s\\'affiche.',\n existing: 'Traduire aussi les publications existantes',\n },\n about: {\n label: 'Afficher About memi-board',\n help: 'Affiche le lien et la fenêtre About memi-board en bas de chaque écran du forum. Désactivez-le pour le masquer sur tout le site.',\n },\n postTranslations: {\n label: 'Traduire les publications existantes',\n help: 'Repère les publications dont la traduction manque ou ne correspond plus à l\\'original, puis les traduit et les enregistre en une fois. Utile pour les forums sans traduction automatique ou pour rattraper des publications oubliées. N\\'utilise pas le quota quotidien d\\'IA.',\n scan: 'Rechercher les publications à traduire',\n run: 'Traduire {count} publications',\n confirm: '{count} publications vont être traduites et enregistrées, avec un appel IA pour chacune. Continuer ?',\n progress: 'Traduction en cours… {done} terminées, {failed} échouées',\n allDone: 'Les {total} publications publiées ont une traduction à jour.',\n found: '{count} publications publiées sur {total} doivent être traduites.',\n failed: '{count} publications n\\'ont pas pu être traduites. Relancez la recherche et réessayez.',\n },\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 card: 'Carte',\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 bulk: {\n title: 'Appliquer à tous les forums',\n apply: 'Appliquer à {count} forums',\n applyShort: 'Appliquer',\n confirmTitle: 'Appliquer à tous les forums',\n translateUntranslated: 'Traduire les forums non traduits ({count})',\n },\n translationLocales: {\n label: 'Langues de traduction',\n },\n locale: {\n label: 'Langue du forum',\n auto: 'Automatique (langue du site)',\n },\n autoTranslate: {\n action: \"Traduire en {count} langues\",\n manualHelp: \"Traduisez le libellé et la description ensemble, puis enregistrez pour appliquer.\",\n pending: \"Les traductions en {count} langues sont prêtes. Enregistrez pour appliquer.\",\n manualFailed: \"La traduction a échoué. Votre texte est conservé. Veuillez réessayer.\",\n label: 'Traduire en {count} langues à l’enregistrement',\n help: 'Si activé, le nom et la description sont traduits en {count} langues. Sinon, ils ne sont pas traduits. Un texte inchangé n’est pas retraduit.',\n failed: 'Les réglages sont enregistrés, mais la traduction en {count} langues a échoué. Enregistrez à nouveau.',\n ready: 'Le nom et la description sont enregistrés en {count} 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 dailyLimit: 'L’assistant d’écriture IA peut être utilisé jusqu’à {limit} fois par jour. Réessayez dans environ {hours} heure(s).',\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 {count} 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 {count} langues',\n translateSaved: 'Enregistré en {count} langues. Les lecteurs voient la traduction de leur langue.',\n translatePending: 'Les traductions en {count} 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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AAU;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,WACX;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,wBACT;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,aACV;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"}
|
|
@@ -101,6 +101,10 @@ var e = {
|
|
|
101
101
|
},
|
|
102
102
|
common: {
|
|
103
103
|
action: {
|
|
104
|
+
zoomIn: "Perbesar",
|
|
105
|
+
zoomOut: "Perkecil",
|
|
106
|
+
fitImage: "Sesuaikan ke layar",
|
|
107
|
+
originalImage: "Ukuran asli (100%)",
|
|
104
108
|
cancel: "Batal",
|
|
105
109
|
save: "Simpan",
|
|
106
110
|
saved: "Tersimpan",
|
|
@@ -124,6 +128,7 @@ var e = {
|
|
|
124
128
|
toTop: "Ke atas"
|
|
125
129
|
},
|
|
126
130
|
label: {
|
|
131
|
+
imageControls: "Kontrol zoom gambar",
|
|
127
132
|
anonymous: "Anonim",
|
|
128
133
|
user: "Pengguna",
|
|
129
134
|
image: "Gambar",
|
|
@@ -458,7 +463,22 @@ var e = {
|
|
|
458
463
|
done: "Laporan diterima. Staf akan meninjaunya.",
|
|
459
464
|
reason: "Alasan",
|
|
460
465
|
detailPlaceholder: "Detail (opsional)",
|
|
461
|
-
submit: "Laporkan"
|
|
466
|
+
submit: "Laporkan",
|
|
467
|
+
status: {
|
|
468
|
+
open: "Diterima",
|
|
469
|
+
dismissed: "Ditolak",
|
|
470
|
+
actioned: "Peninjauan selesai"
|
|
471
|
+
},
|
|
472
|
+
resultTitle: "Status laporan",
|
|
473
|
+
result: {
|
|
474
|
+
open: "Laporan diterima dan menunggu peninjauan.",
|
|
475
|
+
dismissed: "Peninjauan tidak menemukan pelanggaran.",
|
|
476
|
+
actioned: "Peninjauan selesai. Lihat alasan di bawah."
|
|
477
|
+
},
|
|
478
|
+
reviewedAt: "Ditinjau",
|
|
479
|
+
reviewNote: "Alasan keputusan",
|
|
480
|
+
noNote: "Entri lama ini tidak memiliki alasan tersimpan.",
|
|
481
|
+
detailRequired: "Detail (wajib untuk Lainnya)"
|
|
462
482
|
},
|
|
463
483
|
reportList: {
|
|
464
484
|
staffOnly: "Hanya staf yang dapat melihat laporan.",
|
|
@@ -467,7 +487,22 @@ var e = {
|
|
|
467
487
|
untitled: "Postingan tanpa judul",
|
|
468
488
|
author: "oleh {name}",
|
|
469
489
|
dismiss: "Tolak",
|
|
470
|
-
|
|
490
|
+
tabs: {
|
|
491
|
+
open: "Menunggu",
|
|
492
|
+
processed: "Riwayat peninjauan"
|
|
493
|
+
},
|
|
494
|
+
filterLabel: "Filter laporan",
|
|
495
|
+
orderHint: "Laporan terbaru diterima ditampilkan dahulu.",
|
|
496
|
+
historyEmpty: "Belum ada riwayat peninjauan.",
|
|
497
|
+
confirm: "Tandai telah ditinjau",
|
|
498
|
+
dismissTitle: "Tolak laporan",
|
|
499
|
+
resolveTitle: "Selesaikan peninjauan",
|
|
500
|
+
actionHint: "Hanya mengubah status laporan. Kiriman tidak disembunyikan atau dihapus.",
|
|
501
|
+
publicNote: "Alasan ini juga terlihat oleh pelapor.",
|
|
502
|
+
reviewer: "Peninjau",
|
|
503
|
+
reviewNote: "Alasan keputusan",
|
|
504
|
+
unknownReviewer: "Peninjau tidak diketahui",
|
|
505
|
+
actionFailed: "Pemrosesan gagal. Silakan coba lagi."
|
|
471
506
|
},
|
|
472
507
|
reports: {
|
|
473
508
|
reason: {
|
|
@@ -481,7 +516,13 @@ var e = {
|
|
|
481
516
|
signInRequired: "Silakan masuk.",
|
|
482
517
|
cannotReportOwn: "Anda tidak dapat melaporkan postingan sendiri.",
|
|
483
518
|
reasonRequired: "Pilih alasan.",
|
|
484
|
-
detailTooLong: "Detail maksimal {max} karakter."
|
|
519
|
+
detailTooLong: "Detail maksimal {max} karakter.",
|
|
520
|
+
otherDetailRequired: "Isi detail saat memilih Lainnya.",
|
|
521
|
+
reviewNoteRequired: "Isi alasan keputusan.",
|
|
522
|
+
alreadyReviewed: "Laporan ini sudah ditinjau. Periksa daftar.",
|
|
523
|
+
manageRequired: "Anda tidak berhak meninjau laporan ini.",
|
|
524
|
+
alreadyReported: "Anda sudah melaporkan kiriman ini.",
|
|
525
|
+
statusLoadFailed: "Status tidak dapat dimuat. Muat ulang halaman."
|
|
485
526
|
},
|
|
486
527
|
sectionUtil: {
|
|
487
528
|
kind: {
|
|
@@ -759,4 +800,4 @@ var e = {
|
|
|
759
800
|
//#endregion
|
|
760
801
|
export { e as default };
|
|
761
802
|
|
|
762
|
-
//# sourceMappingURL=id-
|
|
803
|
+
//# sourceMappingURL=id-Ca7skouh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-Ca7skouh.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 dropOrClick: 'Letakkan file atau klik untuk menambah',\n uploading: 'Mengunggah file…',\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 translationSkipped: 'Komentar diposting tanpa terjemahan. Anda bisa menerjemahkannya nanti dari formulir edit.',\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 attachHint: 'Letakkan gambar di sini atau klik untuk memilih.',\n attachNote: 'jpg, png, gif, webp. Gambar besar diperkecil hingga 5MB atau kurang.',\n removeImage: 'Hapus gambar terlampir',\n imageOnly: 'Hanya gambar jpg, png, gif, dan webp yang dapat dilampirkan.',\n uploadFailed: 'Gambar gagal diunggah.',\n uploading: 'Mengunggah gambar…',\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 attachedImage: 'Gambar yang dilampirkan pada komentar',\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 zoomIn: \"Perbesar\",\n zoomOut: \"Perkecil\",\n fitImage: \"Sesuaikan ke layar\",\n originalImage: \"Ukuran asli (100%)\",\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 imageControls: \"Kontrol zoom gambar\",\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 notice: 'Pengumuman',\n pin: 'Jadikan pengumuman',\n unpin: 'Hapus pengumuman',\n backToList: 'Kembali ke daftar',\n postNav: 'Navigasi postingan',\n list: 'Daftar',\n comments: 'Komentar',\n },\n editor: {\n titleOptionalPlaceholder: 'Judul (kosongkan agar AI membuatkannya)',\n titleAiNotice: 'AI membuat judul dari teks Anda. Simpan jika sudah cocok, atau ubah dulu.',\n translateView: {\n title: 'Pratinjau terjemahan: {language}',\n notSaved: 'Belum disimpan. Ini hanya pratinjau.',\n },\n titlePlaceholder: 'Judul',\n contentPlaceholder: 'Tulis sesuatu… Ketik / untuk membuka menu blok.',\n imageContentPlaceholder: 'Tulis sesuatu…',\n tagsPlaceholder: 'Ketik tag lalu tekan Enter',\n pinNotice: 'Jadikan pengumuman',\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 translateView: 'Lihat terjemahan',\n translateAll: 'Terjemahkan dan simpan dalam {count} bahasa',\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 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 titling: 'Membuat judul…',\n reviewing: 'Meninjau konten…',\n saving: 'Menyimpan…',\n },\n },\n footer: {\n introduction: \"memi-board dibangun dengan Nuxt 4, Vue 3, dan TypeScript. Nuxt UI dan Firebase menghubungkan postingan, komentar, dan percakapan.\",\n eyebrow: \"Ruang untuk percakapan\",\n tagline: \"Komunitas kecil. Cerita bersama.\",\n detail: \"Pengenalan lengkap\",\n links: \"Tautan & kontak\",\n email: \"Email\",\n credit: \"Dibuat oleh memi\",\n feedback: \"Kirim masukan\",\n feedbackSubject: \"Masukan memi-board\",\n feedbackBody: \"Masukan:\\n\",\n siteEyebrow: \"Dibangun dengan memi-board\",\n changelog: \"Catatan perubahan\",\n info: {\n title: \"memi-board\",\n about: \"Tentang memi-board\",\n sites: \"Contoh penerapan\",\n history: 'Riwayat versi',\n },\n sites: {\n description: \"Layanan yang menggunakan memi-board untuk berbagi postingan dan percakapan.\",\n memi: \"Ruang untuk pengembangan dan cerita sehari-hari\",\n waiting: \"Layanan antrean sederhana melalui kode QR\",\n track: \"Pelacakan GPS untuk merekam rute perjalanan\",\n loop: \"Perekaman perjalanan kendaraan dan solusi sensor\",\n safe: \"Koneksi dan pengaturan perangkat pencegah salah injak pedal\",\n inviteTitle: \"Anda juga memakainya?\",\n invite: \"Beritahu alamat situs Anda.\",\n inviteSite: \"Tinggalkan di memi.dev\",\n inviteOr: \"atau\",\n inviteSubject: \"Kami memakai memi-board\",\n inviteBody: \"Alamat situs:\\n\",\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 boardInfo: {\n creator: 'Dibuat oleh',\n managers: 'Manajer',\n staff: 'Staf',\n },\n commentCount: '{count} komentar',\n settings: 'Pengaturan',\n loadFailed: 'Gagal memuat daftar: {error}',\n empty: 'Belum ada postingan.',\n notice: 'Pengumuman',\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 card: 'Kartu',\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 stats: {\n posts: '{count} postingan',\n comments: '{count} komentar',\n aiUsage: 'AI terpakai {used} / {limit}',\n aiUsageResets: 'AI terpakai {used} / {limit} · direset dalam {hours} jam',\n warnings: '{count} peringatan',\n },\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 \"status\": {\n \"open\": \"Diterima\",\n \"dismissed\": \"Ditolak\",\n \"actioned\": \"Peninjauan selesai\"\n },\n \"resultTitle\": \"Status laporan\",\n \"result\": {\n \"open\": \"Laporan diterima dan menunggu peninjauan.\",\n \"dismissed\": \"Peninjauan tidak menemukan pelanggaran.\",\n \"actioned\": \"Peninjauan selesai. Lihat alasan di bawah.\"\n },\n \"reviewedAt\": \"Ditinjau\",\n \"reviewNote\": \"Alasan keputusan\",\n \"noNote\": \"Entri lama ini tidak memiliki alasan tersimpan.\",\n \"detailRequired\": \"Detail (wajib untuk Lainnya)\",\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\n \"tabs\": {\n \"open\": \"Menunggu\",\n \"processed\": \"Riwayat peninjauan\"\n },\n \"filterLabel\": \"Filter laporan\",\n \"orderHint\": \"Laporan terbaru diterima ditampilkan dahulu.\",\n \"historyEmpty\": \"Belum ada riwayat peninjauan.\",\n \"confirm\": \"Tandai telah ditinjau\",\n \"dismissTitle\": \"Tolak laporan\",\n \"resolveTitle\": \"Selesaikan peninjauan\",\n \"actionHint\": \"Hanya mengubah status laporan. Kiriman tidak disembunyikan atau dihapus.\",\n \"publicNote\": \"Alasan ini juga terlihat oleh pelapor.\",\n \"reviewer\": \"Peninjau\",\n \"reviewNote\": \"Alasan keputusan\",\n \"unknownReviewer\": \"Peninjau tidak diketahui\",\n \"actionFailed\": \"Pemrosesan gagal. Silakan coba lagi.\",\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 \"otherDetailRequired\": \"Isi detail saat memilih Lainnya.\",\n \"reviewNoteRequired\": \"Isi alasan keputusan.\",\n \"alreadyReviewed\": \"Laporan ini sudah ditinjau. Periksa daftar.\",\n \"manageRequired\": \"Anda tidak berhak meninjau laporan ini.\",\n \"alreadyReported\": \"Anda sudah melaporkan kiriman ini.\",\n \"statusLoadFailed\": \"Status tidak dapat dimuat. Muat ulang halaman.\",\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 aiTitle: {\n label: 'Tulis judul dengan AI',\n help: 'Jika judul postingan baru dikosongkan, AI menulis judul dari teks (atau dari foto pertama jika tidak ada teks). Foto hanya dikirim ke Google AI untuk itu. Matikan agar judul wajib diketik dan foto tidak dikirim.',\n },\n site: {\n apply: 'Terapkan',\n applied: 'Diterapkan.',\n title: 'Pengaturan umum',\n help: 'Berlaku untuk seluruh situs. Mengalahkan pengaturan aplikasi inang dan langsung berlaku setelah diubah.',\n ai: { label: 'Gunakan fitur AI', help: 'Matikan jika AI tidak bisa dipakai, misalnya karena biaya. Ini mematikan terjemahan, asisten menulis, judul AI, dan moderasi AI, dan foto tidak lagi dikirim ke AI. Pemeriksaan kata terlarang tetap berjalan.' },\n i18n: { label: 'Gunakan internasionalisasi', help: 'Jika dimatikan, semua layar dikunci pada satu bahasa yang dipilih di bawah dan terjemahan dimatikan. Terjemahan yang sudah tersimpan tidak dihapus.' },\n locales: { label: 'Bahasa yang ditawarkan', help: 'Hanya {count} bahasa yang dipilih yang diterjemahkan dan ditampilkan di menu bahasa. Bahasa yang tidak dipilih tidak mendapat terjemahan baru, dan terjemahan yang sudah tersimpan tidak dihapus.' },\n locale: { label: 'Bahasa default', help: 'Bahasa yang dipakai saat aplikasi inang tidak menetapkan bahasa.', fixedLabel: 'Bahasa tetap', fixedHelp: 'Semua layar ditampilkan dalam bahasa ini.' },\n },\n i18nBoard: {\n label: 'Internasionalisasi',\n help: 'Jika aktif, nama dan deskripsi papan serta postingan dan komentar baru diterjemahkan otomatis ke {count} bahasa dan disimpan. Jika nonaktif, hanya teks asli yang ditampilkan.',\n existing: 'Terjemahkan juga postingan yang ada',\n },\n about: {\n label: 'Tampilkan About memi-board',\n help: 'Menampilkan tautan dan popup About memi-board di bagian bawah setiap layar papan. Matikan untuk menyembunyikannya di seluruh situs.',\n },\n postTranslations: {\n label: 'Terjemahkan postingan yang ada',\n help: 'Mencari postingan yang terjemahannya belum ada atau tidak lagi sesuai dengan aslinya, lalu menerjemahkan dan menyimpannya sekaligus. Gunakan untuk papan dengan terjemahan otomatis mati atau untuk melengkapi postingan yang terlewat. Tidak memakai kuota AI harian.',\n scan: 'Cari postingan yang perlu diterjemahkan',\n run: 'Terjemahkan {count} postingan',\n confirm: '{count} postingan akan diterjemahkan dan disimpan, dengan satu panggilan AI untuk tiap postingan. Lanjutkan?',\n progress: 'Menerjemahkan… {done} selesai, {failed} gagal',\n allDone: 'Semua {total} postingan yang dipublikasikan sudah memiliki terjemahan terbaru.',\n found: '{count} dari {total} postingan yang dipublikasikan perlu diterjemahkan.',\n failed: '{count} postingan tidak dapat diterjemahkan. Cari lagi lalu coba ulang.',\n },\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 card: 'Kartu',\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 bulk: {\n title: 'Terapkan ke semua papan',\n apply: 'Terapkan ke {count} papan',\n applyShort: 'Terapkan',\n confirmTitle: 'Terapkan ke semua papan',\n translateUntranslated: 'Terjemahkan papan yang belum diterjemahkan ({count})',\n },\n translationLocales: {\n label: 'Bahasa terjemahan',\n },\n locale: {\n label: 'Bahasa papan',\n auto: 'Otomatis (ikuti bahasa situs)',\n },\n autoTranslate: {\n action: \"Terjemahkan ke {count} bahasa\",\n manualHelp: \"Terjemahkan nama tampilan dan deskripsi sekaligus, lalu simpan untuk menerapkan.\",\n pending: \"Terjemahan {count} bahasa siap. Simpan untuk menerapkan.\",\n manualFailed: \"Terjemahan gagal. Teks Anda tetap tersimpan di formulir. Silakan coba lagi.\",\n label: 'Terjemahkan ke {count} bahasa saat menyimpan',\n help: 'Jika aktif, nama dan deskripsi diterjemahkan ke {count} bahasa. Jika nonaktif, tidak diterjemahkan. Teks yang tidak berubah tidak diterjemahkan lagi.',\n failed: 'Pengaturan tersimpan, tetapi terjemahan ke {count} bahasa gagal. Simpan lagi.',\n ready: 'Nama dan deskripsi tersimpan dalam {count} 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 dailyLimit: 'Asisten menulis AI dapat digunakan hingga {limit} kali sehari. Coba lagi dalam sekitar {hours} jam.',\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 {count} 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 {count} bahasa',\n translateSaved: 'Disimpan dalam {count} bahasa. Pembaca melihat terjemahan bahasanya.',\n translatePending: 'Terjemahan {count} 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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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,UACX;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,oBACT;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,iBACV;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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -21,12 +21,14 @@ export { COMMENT_BODY_MAX_LENGTH, useMemiBoardComments, useMemiBoardReplies } fr
|
|
|
21
21
|
export type { AddCommentInput, AddReplyInput } from './composables/useMemiBoardComments';
|
|
22
22
|
export { useMemiBoardLikes, useMemiBoardCommentLikes, memiBoardCommentLikesKey, } from './composables/useMemiBoardLikes';
|
|
23
23
|
export type { MemiBoardCommentLikesApi } from './composables/useMemiBoardLikes';
|
|
24
|
-
export { REPORT_DETAIL_MAX_LENGTH, REPORT_REASONS, reportReasonLabel, useMemiBoardReports, useMemiBoardReportQueue, } from './composables/useMemiBoardReports';
|
|
24
|
+
export { REPORT_DETAIL_MAX_LENGTH, REPORT_REVIEW_NOTE_MAX_LENGTH, REPORT_REASONS, reportReasonLabel, useMemiBoardReports, useMemiBoardReportQueue, } from './composables/useMemiBoardReports';
|
|
25
25
|
export { useMemiBoardViews } from './composables/useMemiBoardViews';
|
|
26
26
|
export { useMemiBoardModeration } from './composables/useMemiBoardModeration';
|
|
27
27
|
export { useMemiBoardSettings, DEFAULT_CATEGORIES, DEFAULT_BOARDS } from './composables/useMemiBoardSettings';
|
|
28
28
|
export { canManageBoardByRole, canWriteCommentByRole, isAssignedStaff } from './utils/boardAccess';
|
|
29
29
|
export { useMemiBoardUsers, BOARD_USER_ROLES } from './composables/useMemiBoardUsers';
|
|
30
|
+
export { useMemiBoardUserDirectory } from './composables/useMemiBoardUserDirectory';
|
|
31
|
+
export type { UserDirectorySort, UserDirectoryDirection } from './utils/userDirectoryPage';
|
|
30
32
|
export { useMemiBoardUserProfile } from './composables/useMemiBoardUserProfile';
|
|
31
33
|
export { useMemiBoardSections, normalizeBoardSection } from './composables/useMemiBoardSections';
|
|
32
34
|
export { useMemiBoardMiniLatest, useMemiBoardMiniPicked } from './composables/useMemiBoardMiniPosts';
|